-
Notifications
You must be signed in to change notification settings - Fork 0
Troubleshooting
Common breakages, refusals that are working as intended, and their fixes.
Error: 'improve' is available in the 'community' catalog but installation is
not allowed from that catalog.
This is expected behavior, not a broken release. Spec Kit ships the community
catalog as discovery only. It carries install_allowed: false by design,
so the CLI can list community extensions but will not install one until you
opt in. You have two ways to opt in.
Option A: install directly (recommended). No catalog config, always works, and it is the only way to pin a specific version:
specify extension add improve --from https://github.com/d0whc3r/spec-kit-improve/releases/download/v1.0.0/improve-1.0.0.zipTo update later, rerun the same command with a newer version URL.
Option B: approve the community catalog. Do this once if you want to install and update by name:
specify extension catalog add https://raw.githubusercontent.com/github/spec-kit/main/extensions/catalog.community.json --name community --install-allowed
specify extension add improve
specify extension update improveCommunity extensions are author-maintained and not reviewed by Spec Kit. Review the source before approving a catalog.
- Confirm the extension is registered:
You should see an
cat .specify/extensions/.registry
improveentry. - Confirm extension files are present:
You should see
ls .specify/extensions/improve
extension.yml,commands/,templates/. - Restart the host agent. Some agents cache the slash command surface at startup. Open a new chat or reload the agent's window.
- If it still does not appear, reinstall with the direct URL above.
These are not bugs. Each one is a hard rule doing its job.
| Situation | Behavior |
|---|---|
| You ask it to implement a fix directly | Declines and points at the prompt; handing it to /speckit.specify is how it becomes code. |
| The audit finds credentials in the repo | Reports file:line and credential type only; never the value. Recommends rotation. |
| A re-run finds a prompt's code drifted | Re-verifies the finding, refreshes the excerpts, and bumps planned_at; never leaves it stale. |
| A re-run finds the premise is gone | Marks the prompt REJECTED with a one-line rationale. |
branch on the default branch |
Says so and offers a full audit instead. |
The advisor never modifies source code, so "just fix it for me" will always be
declined. If you want the change made, hand the prompt body to
/speckit.specify and carry the generated spec through the spec-kit lifecycle;
the prompt file is also a complete handoff for another agent or a human.
The audit phase uses subagents, and it degrades instead of stopping: it audits directly in category-priority order instead of fanning out one subagent per category. Findings and prompts are unaffected; the audit is just slower.
Handing a prompt to /speckit.specify needs no subagents, but it does need to
invoke another command. If the host agent cannot invoke /speckit.specify
directly, print the exact invocation (with the prompt body inlined) and run it
yourself.
The planning commands lean on git for the planned_at stamp and the
mechanical drift check inside every prompt, so without it the staleness
contract has nothing to anchor to. /speckit.specify also creates feature
branches, which requires git. Fix:
git init
git add -A && git commit -m "baseline"Then rerun the command.
Symptoms: a prompt's drift check reports changed affected files, or its
"Current context" excerpts no longer match the live code. This is normal;
codebases move under TODO prompts. The fix is to re-run /speckit.improve:
before writing anything new it drift-checks every TODO prompt, re-verifies and
refreshes the ones whose code moved (new excerpts, new planned_at SHA), and
marks REJECTED any finding that was fixed in passing. Re-run it before handing
a prompt to /speckit.specify so a stale prompt is never processed.
You handed a prompt to /speckit.specify but the lifecycle never finished: no
plan or tasks, or an abandoned branch. The prompt stays TODO; nothing in the
extension tracks the generated spec. Pick the spec back up where it stalled
(/speckit.clarify, /speckit.plan, /speckit.tasks, /speckit.implement),
or, if you are abandoning the change, leave the prompt as-is for a later
handoff. The specs/<feature>/ tree and git history are the record of what got
generated.
The repo has no working one-command way to know the codebase works (no tests,
broken build). The audit records this and usually proposes "establish a
verification baseline" as the first prompt, ordered (via depends) before any
risky one. Process that prompt first; every later prompt's acceptance criteria
depend on it.
The flag preflights gh auth status and a GitHub remote. If either fails, the
prompt files are still written and the command says why issues were skipped.
Run gh auth login, confirm git remote -v points at GitHub, and rerun with
--issues. Labels (improve plus the category) are applied only if they
exist or can be created without erroring; missing labels are skipped, never a
failure.
When a command misbehaves in a way this page does not explain, file a bug with:
- Extension version:
grep version .specify/extensions/improve/extension.yml. - Spec Kit core version:
specify --version. - Host agent name and version.
- The exact command invocation, including modifiers.
- What the command did versus what you expected.
Issues: https://github.com/d0whc3r/spec-kit-improve/issues. For security issues, use private vulnerability reporting instead; see SECURITY.md.