Skip to content

[Extension]: Add ado #5311

Open
Open

Description

@praveenlavu

Extension ID

ado

Extension Name

Spec Kit for Azure DevOps — human-gated lifecycle

Version

0.3.0

Description

Azure DevOps story to Done through Spec Kit, with a human sign-off before every board change.

Author

praveenlavu

Repository URL

https://github.com/praveenlavu/spec-kit-ado

Download URL

https://github.com/praveenlavu/spec-kit-ado/archive/refs/tags/v0.3.0.zip

License

MIT

Homepage (optional)

https://github.com/praveenlavu/spec-kit-ado

Documentation URL (optional)

https://github.com/praveenlavu/spec-kit-ado/blob/v0.3.0/README.md

Changelog URL (optional)

https://github.com/praveenlavu/spec-kit-ado/blob/main/CHANGELOG.md

Required Spec Kit Version

=1.2.1

Required Tools (optional)

- ado (>=0.3.0) - required; the CLI from the same repository and tag: pipx install git+https://github.com/praveenlavu/spec-kit-ado@v0.3.0
- git - required
- gh - optional; only to open PRs on GitHub

Number of Commands

13

Number of Hooks (optional)

2

Tags

azure-devops, issue-tracking, hitl, workflow, governance

Key Features

  • Pulls an Azure DevOps story into a per-story Definition-of-Done ledger with the acceptance criteria copied verbatim, then hands specify, plan, tasks and implement to the installed stack kit or core Spec Kit
  • Mirrors tasks.md into child Tasks on the story; a dry run by default, applied only after an explicit yes
  • DoD gate: acceptance criterion to named-test traceability, assertion-free tests, AC drift, missing evidence, business-rule coverage; advisory unless a check is opted in to blocking
  • Optional strict mode for teams that want hard stops: red/green commit evidence re-run in CI, approved test command, stack profiles and kit pinning
  • Eight-plane review of the branch diff with a verification pass, logged in the ledger
  • Opens the PR with AB# (GitHub or Azure Repos) and closes the story with the ledger attached, each after an explicit yes
  • ado doctor explains what is wrong with a setup; CI templates for GitHub Actions and Azure Pipelines

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

Environment: macOS (Apple silicon), Python 3.9 and 3.12, Spec Kit 1.2.4.dev0 (specify); GitHub-hosted Ubuntu CI on Python 3.9 and 3.13; a weekly contract job against Spec Kit 1.2.1 (the minimum) and the latest release.

At the tagged commit (v0.3.0, fcc41df): 5515 tests passed, 15 skipped; hosted CI green; contract job green on both Spec Kit versions. A static security scan (bandit) over about 11,000 lines found no medium or high issue except one raw bidirectional character inside a regex (hygiene, no behaviour effect, fix queued) and two false positives; the project has no runtime dependencies. This is not an independent audit.

Clean-project install from the download URL: specify extension add ado --from https://github.com/praveenlavu/spec-kit-ado/archive/refs/tags/v0.3.0.zip gives v0.3.0 with 13 commands, 2 hooks and 13 skills. All 187 ado command-line invocations in the 13 command files were checked against the real CLI (verbs and flags).

Live end-to-end run on 2026-11-08 using only the published v0.3.0 artifacts (CLI from the tag, this extension zip, the ado-lifecycle workflow), against a real Azure DevOps organization and Azure Repos repository created for testing (not a customer project), advisory mode:

  • All 13 commands ran with exit 0 and no error text: pull, plan, tasks, implement, gate, review and pr inside the workflow run (plus its ado push steps); push (preview), done (3 turns), constitution and status headless; setup stopped as designed and asked the human to run ado setup in their own terminal (it reads no token); stack stopped because a profile was already approved and approved or installed nothing.
  • Story A: the workflow paused at 12 gates with no TTY, each was answered with specify workflow resume <run> --input verdict_<gate>=approve, the run completed, 8 Tasks were created and synced, a pull request was opened and linked to the story; after the PR was merged, done attached the ledger and closed the story.
  • Story B: a rejected gate aborted the run; the work item was unchanged (revision 1, no relations, no comments) and resume refused the aborted run.

Not covered by this run: strict mode and comment-approval mode (strict mode was exercised in earlier live runs on 0.3 development builds; comment approvals with a second human identity were never run live), the Azure Pipelines templates on a hosted agent, and Windows (the test suite and strict mode are POSIX-only; use WSL). The product owner's answers were simulated with comments, and the pull request was completed through the REST API. Known open issue: a decision cannot be superseded before it has been posted.

Example Usage

pipx install git+https://github.com/praveenlavu/spec-kit-ado@v0.3.0
specify extension add ado --from https://github.com/praveenlavu/spec-kit-ado/archive/refs/tags/v0.3.0.zip
ado setup --profile starter      # in your own terminal: it asks for the PAT
/speckit.ado.pull 1001

Proposed Catalog Entry

{
  "ado": {
    "name": "Spec Kit for Azure DevOps — human-gated lifecycle",
    "id": "ado",
    "description": "Azure DevOps story to Done through Spec Kit, with a human sign-off before every board change.",
    "author": "praveenlavu",
    "version": "0.3.0",
    "download_url": "https://github.com/praveenlavu/spec-kit-ado/archive/refs/tags/v0.3.0.zip",
    "sha256": "8506838e8b2c38ec73239276b30c996170d4182e618dc15811e23e09e86db54a",
    "repository": "https://github.com/praveenlavu/spec-kit-ado",
    "homepage": "https://github.com/praveenlavu/spec-kit-ado",
    "documentation": "https://github.com/praveenlavu/spec-kit-ado/blob/v0.3.0/README.md",
    "changelog": "https://github.com/praveenlavu/spec-kit-ado/blob/main/CHANGELOG.md",
    "license": "MIT",
    "requires": {
      "speckit_version": ">=1.2.1",
      "tools": [
        {
          "name": "ado",
          "version": ">=0.3.0",
          "required": true
        },
        {
          "name": "git",
          "required": true
        },
        {
          "name": "gh",
          "required": false
        }
      ]
    },
    "provides": {
      "commands": 13,
      "hooks": 2
    },
    "tags": [
      "azure-devops",
      "issue-tracking",
      "hitl",
      "workflow",
      "governance"
    ],
    "verified": false,
    "downloads": 0,
    "stars": 0,
    "created_at": "2026-11-08T00:00:00Z",
    "updated_at": "2026-11-08T00:00:00Z"
  }
}

Additional Context

The ado command-line program (Python standard library only) ships in the same repository at the same version. The ado-lifecycle workflow is submitted to the workflow catalog by pull request, and an "ado" bundle that installs both is submitted separately. Two other Azure DevOps extensions are listed (azure-devops, maqa-azure-devops) and focus on syncing work items; this one covers the story-to-Done lifecycle with a person approving every board or PR change. This is a community project, not affiliated with or endorsed by GitHub or Microsoft. I would be glad to learn whether a verified-flag process exists and what it asks for.

Activity

  1. added
    triage-must-haveVerdict: high-value, important work for Spec Kit — do first
    on Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage-must-haveVerdict: high-value, important work for Spec Kit — do first

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions