Repository navigation
feat(spec-kit): support Spec Kit 1.1.x (@adrkit/spec-kit 0.1.5) - #281
Merged
Merged
Conversation
Spec Kit 1.1.0 shipped on 2026-10-02 and 1.1.3 is now current, so the `<1.1.0` pin fired as intended: 0.1.4 refuses 1.1.0 and 1.1.3 from both its release archive and `--dev` with "Compatibility Error: Extension requires spec-kit >=0.13.0,<1.1.0, but 1.1.3 is installed." and exit 1. I re-verified before widening. Upstream's extension API reference is byte-identical through 1.1.2, and 1.1.3 adds only the bundled `bug` extension's hook events. The 1.1 loader changes remove nothing this extension uses. On 1.1.0 (git tag; it never reached PyPI) and 1.1.3, under the Copilot and Claude integrations, the 0.1.5 tree installs by `--dev`, by `--from` its packed archive, and through `specify init --extension`. The three `speckit-adrkit-*` skills register, `after_plan` is recorded `optional: true`, and `context.sh` and `check.sh` run from the installed location with @adrkit/cli 0.18.0. I sampled 1.1.1 and 1.1.2 under Copilot with the same results. Nothing in `commands/` or `scripts/` changed. - Widen `speckit_version` to `>=0.13.0,<1.2.0` and extend the manifest comment's evidence list. - Bump `@adrkit/spec-kit` to 0.1.5 in `package.json`, `extension.yml`, and the workspace entry in `bun.lock`. - Point the README and site install URL at `spec-kit-v0.1.5/adrkit.zip`. That asset exists only once the tag is pushed, so merge and tag together. - Update the tested-version lists, add a 2026-10-09 section to the verification doc and an addendum to ADR-0019, and record that the 0.1.4 catalog update was applied on 2026-09-15. - Add the spec-kit-0.1.5 CHANGELOG section. It notes that 0.1.5 ships the corrected README install line that the 0.1.4 archive and npm README lack. I saw the pin test fail on `<1.2.0`, and both version-agreement tests fail with only `extension.yml` at 0.1.5, before each passed. Signed-off-by: Mark Beacom <m@beacom.dev>
Signed-off-by: Mark Beacom <m@beacom.dev>
Decisions governing this change12 accepted decisions govern this change Show all 12 governing decisions and why each applies
Links point at |
There was a problem hiding this comment.
🟡 Changes recommended
Canonical agent and ADR documentation contain stale or contradictory compatibility-history claims.
3 open findings
What changed in this PR
Updates @adrkit/spec-kit to 0.1.5 after verifying Spec Kit 1.1.x compatibility.
Changes:
- Widens compatibility to
<1.2.0. - Aligns package, manifest, lockfile, and install URLs.
- Records verification evidence and release notes.
Decision-context MCP lookup was unavailable, so ADR applicability was not independently verified.
| File | Description |
|---|---|
AGENTS.md |
Updates Spec Kit support and version guidance. |
README.md |
Updates supported Spec Kit range. |
CHANGELOG.md |
Adds 0.1.5 release notes. |
bun.lock |
Aligns workspace version. |
plan.md |
Updates adapter status. |
docs/adr/0019-*.md |
Records 1.1.x verification. |
docs/reference-verification-spec-kit-extension.md |
Adds verification matrix. |
packages/adapters/spec-kit/README.md |
Updates requirements and archive URLs. |
packages/adapters/spec-kit/extension.yml |
Widens pin and bumps version. |
packages/adapters/spec-kit/package.json |
Bumps package to 0.1.5. |
packages/adapters/spec-kit/test/manifest.test.ts |
Updates compatibility assertion. |
packages/adapters/spec-kit/test/packaging.test.ts |
Updates verification commentary. |
site/src/content/docs/spec-kit.mdx |
Updates public documentation. |
🧠 Review effort: Balanced
Signed-off-by: Mark Beacom <m@beacom.dev>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

What and why
Spec Kit 1.1.0 shipped on 2026-10-02, and 1.1.3 is now current on PyPI. The extension's pin is
>=0.13.0,<1.1.0, so@adrkit/spec-kit0.1.4 refuses every 1.1.x release. That gate is working as designed: per ADR-0007 and ADR-0019, widening past a minor is a re-verification, not an inference. I re-verified 1.1.x, widened the pin to>=0.13.0,<1.2.0, and moved the extension to 0.1.5. No 1.2 release or tag exists yet.Nothing in
commands/orscripts/had to change. 1.1.x needed only the pin.What I checked upstream,
v1.0.13→v1.1.3:extensions/EXTENSION-API-REFERENCE.mdis byte-identical throughv1.1.2(SHA-256cb037d69fe62c7d8…).v1.1.3adds one block listing the bundledbugextension's hook events. Additive.In the loader (
extensions/__init__.py,command_add.py,agents.py), three features landed:Install now also unregisters hooks if a later step fails.
SpecifierSetparsing and.extensionignorehandling are untouched. The one new refusal applies when an archive's id or version disagrees with the catalog entry it was picked from. That only affects catalog installs, and the community catalog does not allow them.Release notes for 1.1.0–1.1.3 mention nothing about
schema_version,after_plan, orspecify extension add --dev/--from. 1.1.2 addsextension info --json.Measurements
These ran in throwaway projects with
uvxon macOS, Python 3.13,NO_COLOR=1, andGIT_CONFIG_GLOBAL=/dev/null. No model calls. 1.1.0 never reached PyPI (PyPI goes from 1.0.13 to 1.1.1), so I ran it from its git tag, as 1.0.0 was on 2026-09-09. 1.1.1–1.1.3 came from PyPI. The 0.1.5 archive is theadrkit.zipthatrelease:pack -- --only @adrkit/spec-kit --tag spec-kit-v0.1.5andscripts/pack-extension-zip.tsproduce. I served it from127.0.0.1, because the release asset does not exist until the tag does. The scripts ran against a four-record fixture corpus with the published@adrkit/cli0.18.0.--fromrelease zip,--dev)--dev--fromarchiveinit --extensionafter_plancontext.sh/check.sh.github/skills/speckit-adrkit-{context,check,draft}optional: true.claude/skills/speckit-adrkit-{context,check,draft}optional: true.github/skills/…optional: true.github/skills/…optional: true.github/skills/…optional: true.claude/skills/…optional: trueCompatibility Error: Extension requires spec-kit >=0.13.0,<1.1.0, but 1.1.3 is installed., thenUpgrade spec-kit with: uv tool install specify-cli --force --from git+https://github.com/github/spec-kit.git. 1.1.0 prints the same with its own version./speckit-adrkit-checkunder both integrations..specify/extensions.ymlrecordscommand: speckit.adrkit.check,enabled: true,optional: true. The generatedspeckit-plan/SKILL.mdstill says "replace dots (.) with hyphens (-)". On 1.1.2 and 1.1.3,extension info adrkit --jsonreportsv0.1.5, the three commands, and theafter_planhook withoptional: true. 1.1.0 and 1.1.1 reject--json(exit 2).LICENSE,NOTICE,README.md,commands/,extension.yml,scripts/, plus the loader's own.specify-dev/on--dev. Notest/,tsconfig.json,package.json, ornode_modules/.context.shwith no paths emits a QueueReport v1.context.sh src/net/client.tsreturns0001,0002,0003.check.sh src/net/client.tsemits==> adrkit:check. On stderr it says the routing section was skipped becauseADRKIT_SNAPSHOTis unset.specify extension add adrkit, still exits 1 on 1.1.0 and 1.1.3 with the discovery-only error.extension search adrkitlists 0.1.4: the update I filed as [Extension]: Update adrkit to 0.1.4 — widen Spec Kit compatibility to >=0.13.0,<1.1.0 (current entry is unusable on 0.16+/1.0) github/spec-kit#4571 was applied on 2026-09-15. I recorded that in ADR-0019's action item 5.The full matrix is in a new 2026-10-09 section of
docs/reference-verification-spec-kit-extension.md, with a matching ADR-0019 addendum.What changed
extension.yml:speckit_version: ">=0.13.0,<1.2.0"version: "0.1.5"package.jsonand the workspace entry inbun.lockare now 0.1.5.test/manifest.test.tsnow expects<1.2.0.plan.md.spec-kit-v0.1.5/adrkit.zip.[spec-kit-0.1.5]CHANGELOG section. It notes that 0.1.5 ships the corrected README. The 0.1.4 archive and the npm README still sayspecify extension add adrkit, which no measured Spec Kit accepts.Merge and tag together. The guard from #280 ties the README and site URL to
extension.yml's version. Both now namereleases/download/spec-kit-v0.1.5/adrkit.zip, which returns 404 until thespec-kit-v0.1.5tag is pushed and the Release workflow attaches the asset.Checklist
Commits are DCO signed off (
git commit -s).No recorded decision changed. ADR-0019 gets an evidence addendum, following the 2026-09-09 and 2026-09-12 widenings, and no new ADR.
Schema unchanged.
packages/ci/srcand@adrkit/coreunchanged.I saw each test fail before it passed (ADR-0016). The pin test in
test/manifest.test.tsfailed on<1.2.0before its expectation moved. Both version-agreement tests (package.jsonvsextension.yml, and the README/site archive URL vsextension.yml) failed while onlyextension.ymlsaid 0.1.5.All of these pass:
bun run typecheck && bun run build && bun test && bun run lintcheck:changelog,check:doc-pins,check:stale-refs,check:deps,check:site-grammar,check:freeze-hashes,check:no-spike-heuristicssite:lint, andemit:manifestwith no diffcheck:renderedrelease:pack -- --only @adrkit/spec-kit --tag spec-kit-v0.1.5as a dry pack (it publishes nothing)The first full
bun testrun timed out two git-subprocess tests inscripts/update-action-tag.test.tsat 5 s while the machine was busy. They pass alone, and the full suite passed clean when I reran it (3969 pass, 0 fail).Notes for reviewers
/speckit-planagent session on 1.1.x. The hook offer rests on the recorded hook and the generated dots-to-hyphens instruction, as it did on 1.0.x.docs/RELEASING.mdkeepstag=spec-kit-v0.1.4in its catalogcurlexample. It is labelled as an illustration rather than a copied constant, so I left it.Release steps (for me, after merge)
From
docs/RELEASING.md, "Adapter releases", with the real tag:git switch main && git pull, then confirmpackages/adapters/spec-kit/package.jsonsays0.1.5.bun run release:pack -- --only @adrkit/spec-kit --tag spec-kit-v0.1.5git tag -a spec-kit-v0.1.5 -m "@adrkit/spec-kit 0.1.5" git push origin spec-kit-v0.1.5adrkit.zip.version→0.1.5,download_url→…/spec-kit-v0.1.5/adrkit.zip,requires.speckit_version→>=0.13.0,<1.2.0, andupdated_at. Compare againstextension.yml, not the previous entry. 1.1's exact-release selection (feat(extensions): select exact catalog releases github/spec-kit#4726) rejects an archive whose version disagrees with its entry, soversionmust be exactly0.1.5.