Sync /spec-kit commands against upstream specify-cli 0.15.2.dev0 drift #1

Closed
opened 2026-08-02 15:55:46 +03:00 by issuer-agent · 2 comments

Why: /spec-kit:init and /spec-kit:help document an invocation shape that no longer matches the currently-installed upstream specify-cli (installed via uv tool install specify-cli --from git+https://github.com/github/spec-kit.git, resolved today to 0.15.2.dev0). Anyone following the plugin's current instructions verbatim in a non-interactive Claude Code session hits two hard failures in a row before spec-kit is even installed.

Repro: ran /spec-kit:init in a fresh repo (oracle-adb-backend) on 2026-08-02.

Observed drift (this is upstream github/spec-kit CLI drift the plugin needs to re-sync against — not a one-off local misconfiguration):

  1. --ai claude is no longer a valid flag. specify init --ai claude --here (as documented) errors with No such option: --ai. The correct flag per specify init --help is --integration claude.
  2. Installed artifacts are no longer dot-separated commands under .claude/commands/ (/speckit.specify, /speckit.plan, etc. as the walkthrough describes) — they are now dash-separated skills under .claude/skills/: speckit-constitution, speckit-specify, speckit-clarify, speckit-plan, speckit-tasks, speckit-analyze, speckit-checklist, speckit-implement, speckit-converge, speckit-taskstoissues. Two of these (speckit-converge, speckit-checklist) aren't mentioned in the plugin docs at all — speckit-checklist generates checklists, speckit-converge assesses the codebase and appends remaining work as tasks.
  3. Non-empty-directory handling changed: specify init --here now prompts for confirmation ("Current directory is not empty... continue? [y/N]"). In a non-interactive session this errors out entirely requiring --force — the plugin's documented example commands don't mention --force.

Acceptance:

  • /spec-kit:init command script uses --integration claude instead of --ai claude
  • /spec-kit:init passes --force (or otherwise handles the non-empty-dir prompt) for non-interactive --here runs
  • /spec-kit:help (and any other doc referencing invocation) uses dash-separated /speckit-* skill names instead of dot-separated /speckit.* command names
  • Docs mention the two new skills, speckit-converge and speckit-checklist, if judged worth surfacing

Links: upstream CLI is github/spec-kit; drift observed against specify-cli 0.15.2.dev0.

**Why**: `/spec-kit:init` and `/spec-kit:help` document an invocation shape that no longer matches the currently-installed upstream `specify-cli` (installed via `uv tool install specify-cli --from git+https://github.com/github/spec-kit.git`, resolved today to `0.15.2.dev0`). Anyone following the plugin's current instructions verbatim in a non-interactive Claude Code session hits two hard failures in a row before spec-kit is even installed. **Repro**: ran `/spec-kit:init` in a fresh repo (`oracle-adb-backend`) on 2026-08-02. **Observed drift** (this is upstream `github/spec-kit` CLI drift the plugin needs to re-sync against — not a one-off local misconfiguration): 1. `--ai claude` is no longer a valid flag. `specify init --ai claude --here` (as documented) errors with `No such option: --ai`. The correct flag per `specify init --help` is `--integration claude`. 2. Installed artifacts are no longer dot-separated commands under `.claude/commands/` (`/speckit.specify`, `/speckit.plan`, etc. as the walkthrough describes) — they are now **dash-separated skills** under `.claude/skills/`: `speckit-constitution`, `speckit-specify`, `speckit-clarify`, `speckit-plan`, `speckit-tasks`, `speckit-analyze`, `speckit-checklist`, `speckit-implement`, `speckit-converge`, `speckit-taskstoissues`. Two of these (`speckit-converge`, `speckit-checklist`) aren't mentioned in the plugin docs at all — `speckit-checklist` generates checklists, `speckit-converge` assesses the codebase and appends remaining work as tasks. 3. Non-empty-directory handling changed: `specify init --here` now prompts for confirmation ("Current directory is not empty... continue? [y/N]"). In a non-interactive session this errors out entirely requiring `--force` — the plugin's documented example commands don't mention `--force`. **Acceptance**: - [ ] `/spec-kit:init` command script uses `--integration claude` instead of `--ai claude` - [ ] `/spec-kit:init` passes `--force` (or otherwise handles the non-empty-dir prompt) for non-interactive `--here` runs - [ ] `/spec-kit:help` (and any other doc referencing invocation) uses dash-separated `/speckit-*` skill names instead of dot-separated `/speckit.*` command names - [ ] Docs mention the two new skills, `speckit-converge` and `speckit-checklist`, if judged worth surfacing **Links**: upstream CLI is `github/spec-kit`; drift observed against `specify-cli 0.15.2.dev0`.
Owner

Fixed in 4dc139e..9bd6d16 (main): /spec-kit:init now runs specify init --integration claude --here --force; /spec-kit:help, the spec-kit-workflow SKILL, and references/phases.md now use dash-separated /speckit-* skill names and reference .claude/skills/speckit-*/SKILL.md instead of .claude/commands/speckit.*.md. speckit-converge and speckit-checklist were already documented in phases.md (just under the old dot-separated names), so no new content was needed there beyond the rename. Bumped plugin.json to 1.3.2.

Fixed in 4dc139e..9bd6d16 (main): `/spec-kit:init` now runs `specify init --integration claude --here --force`; `/spec-kit:help`, the `spec-kit-workflow` SKILL, and `references/phases.md` now use dash-separated `/speckit-*` skill names and reference `.claude/skills/speckit-*/SKILL.md` instead of `.claude/commands/speckit.*.md`. `speckit-converge` and `speckit-checklist` were already documented in `phases.md` (just under the old dot-separated names), so no new content was needed there beyond the rename. Bumped plugin.json to 1.3.2.
oleks closed this issue 2026-08-02 16:00:30 +03:00
Owner

Sharper root cause, confirmed live: typing /speckit-constitution gives "Unknown command" — not just a naming mismatch. specify init --integration claude (current upstream) writes .claude/skills/speckit-constitution/SKILL.md, etc. — Skills, not slash commands. In Claude Code, only files under .claude/commands/*.md register as /name invocable commands; .claude/skills/*/SKILL.md are auto-triggered by the model from their description, or invoked via the Skill tool — there is no /speckit-constitution to type at all with this install, by design.

So the fix isn't just correcting /speckit.specify/speckit-specify in the docs — it's explaining that these are now Skills invoked by describing intent in plain language (e.g. "establish the project constitution"), not slash commands. Might be worth the plugin also generating thin .claude/commands/speckit-*.md wrapper files (each just invoking the corresponding skill) if slash-command ergonomics are wanted, since users following any spec-kit walkthrough will instinctively try to type /speckit-specify and hit this same wall.

Sharper root cause, confirmed live: typing `/speckit-constitution` gives "Unknown command" — not just a naming mismatch. `specify init --integration claude` (current upstream) writes `.claude/skills/speckit-constitution/SKILL.md`, etc. — **Skills**, not slash commands. In Claude Code, only files under `.claude/commands/*.md` register as `/name` invocable commands; `.claude/skills/*/SKILL.md` are auto-triggered by the model from their description, or invoked via the `Skill` tool — there is no `/speckit-constitution` to type at all with this install, by design. So the fix isn't just correcting `/speckit.specify` → `/speckit-specify` in the docs — it's explaining that these are now Skills invoked by describing intent in plain language (e.g. "establish the project constitution"), not slash commands. Might be worth the plugin also generating thin `.claude/commands/speckit-*.md` wrapper files (each just invoking the corresponding skill) if slash-command ergonomics are wanted, since users following any spec-kit walkthrough will instinctively try to type `/speckit-specify` and hit this same wall.
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: oleks/claude-plugin-spec-kit#1