Agentic software engineering across the entire SDLC.
A curated catalog of Spec Kit extensions that
take spec-driven development beyond code: structured BRD authoring, context-aware architecture
decision records, business-domain guardrail analysis, and correctly-targeted PR delivery. One
command installs the spectra tool; it handles the rest.
Runs on macOS, Windows & Linux · installed as a uv tool · public catalog, no token needed
Installs the Spec Kit CLI if it's missing, offers to initialize your project, registers the public catalog, and installs every extension in it.
Every command reads real context — your constitution, specs, existing artifacts, and source — before it writes anything. A command that ignores the project it runs in is a defect.
Commands are written in Spec Kit's generic format, so Spec Kit translates them into whatever your agent speaks — Claude, kiro-cli, and the rest.
.specify/. Don't have one? spectra offers to create it for you, and installs the specify CLI first if it's missing.github.com and raw.githubusercontent.com. The catalog is public, so there's no login, token, or gh setup.Get uv & Git — both are needed before you install Spectra. First check whether each is already installed, and install only what's missing. Pick your operating system:
uv --version
2Not installed? Install it
Official standalone installer — no admin rights needed.
curl -LsSf https://astral.sh/uv/install.sh | sh
Alternatives: brew install uv (Homebrew) · sudo port install uv (MacPorts) · pipx install uv (PyPI). Afterwards, open a new terminal and re-run uv --version to confirm. See the full uv install guide for more options.
git --version
2Not installed and didn’t get the Xcode prompt?
Install the Command Line Tools explicitly.
xcode-select --install
Alternatives: brew install git (Homebrew) · download the macOS installer from git-scm.com. Afterwards, open a new terminal and re-run git --version to confirm. See the official Git install guide for details.
uv --version
2Not installed? Install it
Official standalone installer, run in PowerShell.
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Alternatives: winget install --id=astral-sh.uv -e (WinGet) · scoop install main/uv (Scoop) · pipx install uv (PyPI). Afterwards, open a new terminal and re-run uv --version to confirm. See the full uv install guide for more options.
git --version
2Not installed? Install it
Use one of the following options:
winget install --id Git.Git -e
Alternatives: download the official installer from git-scm.com (starts automatically) · choco install git (Chocolatey). Afterwards, open a new terminal and re-run git --version to confirm. See the official Git install guide for details.
uv --version
2Not installed? Install it
Official standalone installer — installs to ~/.local/bin, no root needed.
curl -LsSf https://astral.sh/uv/install.sh | sh
No curl? Use wget -qO- https://astral.sh/uv/install.sh | sh. Alternative: pipx install uv (PyPI). Afterwards, open a new terminal and re-run uv --version to confirm. See the full uv install guide for more options.
git --version
2Not installed? Install it with your package manager
Pick the command for your distribution:
sudo apt install git-all
Fedora / RHEL / CentOS: sudo dnf install git-all · Arch: sudo pacman -S git · openSUSE: sudo zypper install git. Afterwards, open a new terminal and re-run git --version to confirm. See the official Git install guide for details.
spectra command itself.
uv tool install spectra-cli --from git+https://github.com/telus-digital/spectra
cd into the project you want Spectra in, then:
spectra install
It checks for the Spec Kit CLI (installing it if missing), confirms you’re in a Spec Kit project (offering specify init if not), registers the public Spectra catalog, and installs every extension the catalog advertises. Bare spectra just prints the banner and points at --help — install is the verb that changes anything.
spectra agent-list # every agent Spectra offers, from anywhere
spectra check # is Spectra installed here?
spectra version # are my agents current?
spectra update # bring them up to the published version
spectra uninstall # remove them from this project
spectra agent-list reads the published roster at run time, so a newly published agent shows up without you updating anything.
spectra command, and your agents — and one brings them current.
spectra version # is every part of my stack current?
spectra update # bring every out-of-date part current
spectra cli version # check just the command, from any folder
spectra cli update # update just the command, from any folder
spectra cli uninstall # remove the command from this machine
The command and the extensions still release separately and on their own schedule — you do not need a new spectra version to get new agents. Changed in 6.4.0: spectra cli version is back, and reports only the spectra command's version — from any folder — telling you to run spectra cli update when a newer one exists. Changed in 6.3.0: spectra cli update is back, and updates only the spectra command — from any folder, including one that is not a Spec Kit project yet, where spectra update cannot run. Changed in 6.2.0: spectra install now registers Spectra's commands for every integration installed in the project, not just the default one — each uncovered agent is briefly made the default, and your original default is restored as the run's last act, disclosed before it happens. spectra update keeps that coverage instead of silently dropping it, asking once (or authorized by --yes). Re-running spectra install in a project that already has Spectra now repairs a half-covered project instead of failing. Changed in 6.1.0: Core agents now covers every integration installed in the project, not just the default one, and spectra update upgrades all of them in one run — disclosing any locally modified files and asking once before overwriting them (--force authorizes that without being asked; --yes does not). Changed in 6.0.0: spectra cli version and spectra cli update were retired into the two commands above (both have since returned as tool-only commands: cli update in 6.3.0, cli version in 6.4.0). Changed in 5.0.0: --version, --update and --uninstall were removed; run any of them and it names its replacement.
Prefer copy-paste, or can’t install a tool? Register the public catalog once per project (this marks it install-allowed, so installs resolve by name with no “untrusted source” prompt), then install the extension and restart your agent.
uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
specify extension catalog add https://raw.githubusercontent.com/telus-digital/spectra/main/catalog.json --name spectra --priority 5 --install-allowed
--install-allowed is required — catalogs are discovery-only by default. Commit the resulting .specify/extension-catalogs.yml so everyone who clones the project inherits the catalog.
specify extension add spectra
New to spec-driven development?
No worries — we built a hands-on course that takes you from zero to shipping specs with confidence. Ten modules, five hands-on labs, self-paced.
Start the E-Learning course →Spectra ships as a single extension under the unified speckit.spectra.* namespace — install once and get every command. Examples use Claude's trigger form — a leading slash with dashes, like /speckit-spectra-adr. Other agents differ (kiro-cli uses /speckit.spectra.adr); your agent's own command list shows the exact trigger.
spectra —
—
.docx/.pdf/.md/.txt document — into a structured, specify-ready BRD written under docs/brd/, or wherever your constitution declares its Artifact root:. Reads project context, asks a few clarifying questions only when the requirement has gaps, and never invents requirements — then hands the result to the specify command. The 14-section structure is a template you can override per project at .specify/templates/overrides/brd-template.md.
Arguments: the requirement as text, or a path to a requirement document. With no input it asks for one.
Example (Claude)
/speckit-spectra-brd Support agents need to merge duplicate customer tickets while preserving history
docs/test-strategy/TEST_STRATEGY.md, or wherever your constitution declares its Artifact root:, covering unit, integration, API contract, and end-to-end testing plus a coverage floor. Every recommendation cites a path in your project, is explicitly marked as a convention, or is marked stated and names the question you answered — never neither, and no answer ever moves a measured figure — and it will not name a tool your stack cannot run, so the end-to-end lens resolves to browser, HTTP, CLI, or none rather than reaching for a browser driver a library will never use. In brownfield it reads your source rather than your README and never proposes a floor above your current baseline: coverage figures carry their provenance, and it runs nothing unless you confirm it. It never writes your constitution — it drafts the amendment, takes your approval, records it in the document, and hands off to the constitution command. Recommends CI and coverage configuration; never applies it. A singleton, rewritten in place, with Git carrying the history. Ten sections, overridable at .specify/templates/overrides/test-strategy-template.md.
Arguments: none required. Optionally a focus to weight the analysis — it never narrows the four mandatory lenses, or --non-interactive to skip the questions.
Example (Claude)
/speckit-spectra-test-strategy
docs/impact-analysis/, or wherever your constitution declares its Artifact root:. Every finding carries a path:line citation and a confidence level; the impact rating comes from a defined trigger set rather than a judgement; and the output states how much of the repository it read, so a reviewer can tell “checked and found nothing” from “did not check”. It never claims there is no impact, never reproduces a secret it finds, and routes security and compliance questions to the agents that own them instead of answering them. Multi-repository systems are declared as text, a document, or a local directory read in place — it accepts no URL and makes no network request. Ten sections, overridable at .specify/templates/overrides/impact-analysis-template.md.
Arguments: the feature intent as one paragraph (required), optional document paths (.md/.txt/.pdf/.docx), --non-interactive for CI, and five cap overrides for large repositories.
Example (Claude)
/speckit-spectra-impact We want to email customers who leave items in their cart for more than 24 hours
spec.md and it writes one test-plan.md beside it — scope with real exclusions, a risk table capped at five rows, traceable test conditions, environment and data, and an exit bar someone can make a go/no-go call from. Built for teams that work test-first: the plan is circulated and approved, then fed to the planning command so the tasks include the tests it names. Traceability runs both ways — every acceptance criterion reaches a condition or is reported as uncovered with a reason, and every condition names what it verifies using your spec’s own identifiers, so a reviewer can check coverage without reading code. It will not guess which spec you meant: no branch-name inference, no feature record, no picker — with no argument it asks and stops, because a plan built against the wrong spec is undetectably wrong to whoever signs it. Where a requirement is too vague to test it says so rather than inventing a condition. Level names come from your TEST_STRATEGY.md verbatim where you have one, a declared coverage floor is carried in and attributed, and no tool is named that your manifests cannot run. Existing coverage is read from your test source, never executed. No checkboxes anywhere, exit criteria included — it is approved, not tracked. Six sections, overridable at .specify/templates/overrides/test-plan-template.md.
Arguments: the path to a spec.md, or to the feature directory containing it (required — never inferred), plus --non-interactive for CI.
Example (Claude)
/speckit-spectra-test-plan specs/021-signed-webhooks/spec.md
docs/defect-rca/, or wherever your constitution declares its Artifact root:. Every claim about the code cites a file and line; every claim that something is absent states what was searched for and where. It checks whether you have analyzed this defect before, at intake rather than after the fact — matching on implicated code, symptom, or root cause, never on title similarity — and gives each earlier preventive action a verdict of completed, not completed, or undeterminable, with a citation required for the first two. It will not call the first plausible code path a root cause: every probe names its layer on the symptom-to-systemic ladder, and a conclusion still sitting at “immediate technical cause” is reported as exactly that. Invalidated hypotheses appear in the document alongside the surviving one, because a table of nothing but confirmations is a justification rather than an analysis. It fixes nothing, writes no test, never touches your ticket, and never asks you for a credential — a missing GitHub CLI costs you a copy-paste, not the analysis. Six sections, overridable at .specify/templates/overrides/defect-rca-template.md.
Arguments: the defect — a GitHub issue URL, a JIRA ticket reference, or a plain description (required — never inferred from your branch or your failing tests). Supplementary logs, configuration, and timelines can be pasted at any point.
Example (Claude)
/speckit-spectra-defect-rca https://github.com/acme/orders/issues/412
docs/, or wherever your constitution declares its Artifact root:, with an index maintained beside it. It never invents and never mines your codebase: every sentence traces to something you supplied, a template section with no source says so, a file it cannot read is named rather than guessed at, and “document the architecture” with nothing attached gets you a request for material. Originals stay outside the repository; you get Markdown. And it never commits — when the files are written it tells you they are uncommitted and hands the review back. Six sections, overridable at .specify/templates/overrides/kb-document-template.md, or per category at .specify/templates/overrides/<category>-template.md.
Arguments: optional — steering for the attached documents, or knowledge dictated directly when you have nothing to attach. Documents are supplied as session attachments or readable paths. With neither, it asks for material and stops.
Example (Claude)
/speckit-spectra-kb-vault these are our UX standards and the old architecture decisions
docs/adr/ (or your declared Artifact root:). Its section structure is a template you can override per project at .specify/templates/overrides/adr-template.md. Use it when making a significant architecture or technology choice.
Arguments: a short description of the decision. If omitted, you'll be asked for one before drafting.
Example (Claude)
/speckit-spectra-adr We should standardize on PostgreSQL for all primary data stores
/speckit-spectra-domain-analyzer this is a banking system
pr-template. Offers to commit and push uncommitted work, asks once with everything on the table before creating anything, and returns the PR URL. Also offered automatically after implement.
Arguments: none opens a ready-for-review PR (default); --issue <url-or-number> links an issue (you're asked once if omitted); --draft opens a draft; --base <branch> sets the base branch.
Example (Claude)
/speckit-spectra-create-pr --issue 42
suggestion where the fix is mechanical. Only blockers and majors are proposed — minors, nits and questions are listed by number but left out, so a one-word yes publishes just what should block the merge and takes the verdict that follows from it. all takes everything, any selection of your own still works, and an empty answer posts nothing. You see the exact review first, then one atomic review is published under your own credentials. The body's shape is a template you can override per project.
Arguments: none offers the current branch's PR then lists open PRs to pick from; <url> or <number> reviews that PR; --issue <url-or-number> supplies the linked issue; --since <revision> re-reviews only the delta since a revision you reviewed before.
Example (Claude)
/speckit-spectra-review-pr https://github.com/acme/api/pull/142
.specify/memory/flaky-test-analysis.md that you prune; on a second go-ahead it fixes what's left, ticking each item off on disk as it lands, so an interrupted session resumes exactly where it stopped. It never runs anything — not your suite, not a build, not even to check a fix worked — and a fix must remove the cause: deleting assertions, skipping tests, and adding retries are forbidden as remedies. Edits stay in test code, nothing is committed, and your constitution decides which fixes are allowed.
Arguments: none analyzes the whole working tree; a path or suite name narrows the run — and before a narrowed run replaces a broader plan, it names the pending items that would be dropped.
Example (Claude)
/speckit-spectra-flaky-test-detector
Want to see every agent SPECTRA offers?
Click here to see the full list of agents →