Skip to content

Spec Kit extension

Spec Kit takes you from specify to plan to tasks to implement. What it does not do is check the plan it just produced against the decisions your organization already made, or record the new decisions that plan contains. Every feature starts from an empty context and re-litigates settled questions.

@adrkit/spec-kit closes that loop, without leaving git.

Command What it does Writes
/speckit.adrkit.context Pulls the decisions governing the paths you’re about to touch — including superseded and rejected ones — into context before you plan no
/speckit.adrkit.check Checks a produced plan against the decisions that govern it, routing through the deterministic Pass 0 evaluator when a snapshot bundle is configured no
/speckit.adrkit.draft Scaffolds a draft ADR from the current plan artifact for you to fill in one new record

The optional after_plan hook offers to run /speckit.adrkit.check after /speckit.plan.

  • Spec Kit >=0.13.0,<1.2.0. Compatibility is tested against 0.13.0, 0.14.4, 0.15.1, 0.16.5, 1.0.0, 1.0.4–1.0.6, 1.0.13, and 1.1.0–1.1.3.
  • The adr CLI. Install @adrkit/cli globally or in the project, or set ADRKIT_CLI to its entry point.
  • An ADR corpus. Defaults to docs/adr.

Spec Kit discovers extensions under .specify/extensions/, and only specify extension add writes there — so installation goes through Spec Kit, not through your package manager.

Install from the release archive, which carries the version in its URL:

Terminal window
specify extension add adrkit \
--from https://github.com/mbeacom/adrkit/releases/download/spec-kit-v0.1.5/adrkit.zip

Spec Kit asks before installing from a URL (⚠ Untrusted Source … Continue with installation? [y/N]). There is no --yes, and --force does not skip the question; with no answer on stdin the install aborts with exit 1. In a script or CI job, pipe the answer in:

Terminal window
printf 'y\n' | specify extension add adrkit \
--from https://github.com/mbeacom/adrkit/releases/download/spec-kit-v0.1.5/adrkit.zip

adrkit is listed in the Spec Kit community catalog, but that catalog is discovery-only: specify extension add adrkit finds the entry and refuses to install from it, on every Spec Kit version measured from 0.13.0 to 1.1.3.

Then the commands are available in your agent, and Spec Kit’s plan command offers the after_plan hook.

The extension declares dotted command ids (speckit.adrkit.check). What you type depends on how Spec Kit registers commands for your agent:

Integration What Spec Kit writes You type
Claude Code, every Spec Kit version measured (0.13.0 to 1.1.3) .claude/skills/speckit-adrkit-*/ /speckit-adrkit-check, /speckit-plan
GitHub Copilot, Spec Kit 0.16.5 and later .github/skills/speckit-adrkit-*/ /speckit-adrkit-check, /speckit-plan
GitHub Copilot, Spec Kit 0.13.0 to 0.15.1 .github/prompts/speckit.adrkit.*.prompt.md /speckit.adrkit.check, /speckit.plan

This page uses the dotted ids. Where your agent uses skills, read each dot as a hyphen. The after_plan hook works under both: Spec Kit records it as speckit.adrkit.check, and its generated plan skill tells the agent to replace dots with hyphens when it offers the hook.

The package is also published on npm as @adrkit/spec-kit for programmatic or pinned installs.

  1. Run /speckit.adrkit.context before planning to load the decisions governing the affected paths.
  2. Run /speckit.plan. The optional after_plan hook offers to check the plan; you can also run /speckit.adrkit.check directly.
  3. Run /speckit.adrkit.draft when the plan introduces a decision worth recording.

The extension works without additional configuration. Override its defaults with environment variables when needed.

Variable Default Meaning
ADRKIT_DIR docs/adr ADR corpus directory
ADRKIT_CLI resolved Explicit path to the adr entry point
ADRKIT_FEATURE_DIR resolved Override Spec Kit’s own feature resolution
ADRKIT_SNAPSHOT unset Snapshot bundle enabling the deterministic evaluator
ADRKIT_AS_OF today, UTC Evaluation date

The CLI is resolved in a fixed order: ADRKIT_CLI, then ./node_modules/.bin/adr, then adr on PATH. No branch of that reaches the network — a missing CLI is reported, never fetched.

  • The hook is never mandatory. A mandatory hook fires without consent; this one renders as an optional prompt.
  • Failures name what is missing. “0 decisions govern this” and “I could not see the corpus” never render as the same string, so no command exits 0 having found nothing because it was looking in the wrong place.
  • check mutates nothing.
  • Nothing development-only reaches your repo. specify extension add --dev copies the directory verbatim, so .extensionignore keeps the test suite and build config out of your .specify/extensions/. The package declares no dependencies at all, so there is never a node_modules/ to copy.

@adrkit/spec-kit is listed in the Spec Kit community catalog, installs from its release archive, and is tested against Spec Kit 0.13.0, 0.14.4, 0.15.1, 0.16.5, 1.0.0, 1.0.4–1.0.6, 1.0.13, and 1.1.0–1.1.3. If you find a compatibility issue, open an issue.

For implementation details, see the @adrkit/spec-kit README.