Summary
The review companion extension pinned in our install docs cannot be installed on spec-kit 1.0.x. Users who follow the README end up without the speckit-review-run skill, so /speckit.opsmill.prep, /speckit.opsmill.auto, and /speckit.opsmill.implement lose their review tail. critique is unaffected and installs normally.
Reported against specify-cli 1.0.5, reproducible on v1.0.1 and main of the review extension.
$ specify extension add review \
--from https://github.com/ismaelJimenez/spec-kit-review/archive/refs/tags/v1.0.1.zip
Validation Error: Invalid script name 'detect-changed-files.sh': must be lowercase alphanumeric with hyphens only
Severity: high, publicly broken
This is not an internal inconvenience. Both of our public spec-kit extensions document a flow that cannot be completed today on a current spec-kit:
opsmill/opsmill-speckit README, Companion extensions, tells every user to run specify extension add review --from .../v1.0.1.zip. That command exits with a validation error on spec-kit 1.0.x.
opsmill/infrahub-speckit README presents opsmill-speckit/auto as a primary entry point for the Infrahub workflow, so the Infrahub story inherits the same break.
Anyone installing either extension from our published instructions on a current spec-kit lands in one of two states:
- They notice the error, and our documented install is visibly wrong on first contact.
- They miss it in the install output, and
prep / auto / implement then run without any review pass. The commands do not fail loudly, they just skip the review tail, so an autonomous auto run silently ships unreviewed code. That is the worse of the two.
There is no fallback: spec-kit aborts before registering any command or hook, so the speckit-review-run skill is simply absent rather than degraded.
The fix is not in our hands, it is upstream and already submitted (below). What we own is that our published docs currently point users at a broken install, and that auto degrades quietly instead of announcing the missing skill.
Cause
Upstream bug in ismaelJimenez/spec-kit-review, not in this repo. Its extension.yml puts the file name in provides.scripts[].name:
scripts:
- name: "detect-changed-files.sh"
file: "scripts/bash/detect-changed-files.sh"
spec-kit 1.0.0 started validating provides.scripts / provides.templates entries in ExtensionManifest._validate_provided_artifacts (src/specify_cli/extensions/__init__.py). name must match ^[a-z0-9-]+$, since it is a logical slug and the path belongs in file:. Earlier CLIs never checked that section, which is why the pinned v1.0.1 used to install cleanly. Validation fails before any command or hook is registered, so the extension is not partially installed, it is simply absent.
critique declares no provides.scripts section, so it is unaffected.
Upstream fix
The PR renames the two entries to detect-changed-files / detect-changed-files-powershell, releases as v1.0.2, and extends the upstream validate-manifest CI job to catch this class of manifest error. Script paths and command frontmatter are unchanged, so behaviour is identical.
Verified on specify-cli 1.0.5 and 0.8.5: install succeeds, all 7 speckit-review-* skills are generated, and the after_implement hook registers.
Impact here
README.md (Companion extensions section) pins:
specify extension add review \
--from https://github.com/ismaelJimenez/spec-kit-review/archive/refs/tags/v1.0.1.zip
That command fails for anyone on spec-kit 1.0.x. Commands affected: prep, auto, implement.
Workaround until upstream tags v1.0.2
git clone https://github.com/iddocohen/spec-kit-review -b fix/script-name-slugs
specify extension add ./spec-kit-review --dev
Action for this repo
Summary
The
reviewcompanion extension pinned in our install docs cannot be installed on spec-kit 1.0.x. Users who follow the README end up without thespeckit-review-runskill, so/speckit.opsmill.prep,/speckit.opsmill.auto, and/speckit.opsmill.implementlose their review tail.critiqueis unaffected and installs normally.Reported against specify-cli 1.0.5, reproducible on
v1.0.1andmainof the review extension.Severity: high, publicly broken
This is not an internal inconvenience. Both of our public spec-kit extensions document a flow that cannot be completed today on a current spec-kit:
opsmill/opsmill-speckitREADME, Companion extensions, tells every user to runspecify extension add review --from .../v1.0.1.zip. That command exits with a validation error on spec-kit 1.0.x.opsmill/infrahub-speckitREADME presentsopsmill-speckit/autoas a primary entry point for the Infrahub workflow, so the Infrahub story inherits the same break.Anyone installing either extension from our published instructions on a current spec-kit lands in one of two states:
prep/auto/implementthen run without any review pass. The commands do not fail loudly, they just skip the review tail, so an autonomousautorun silently ships unreviewed code. That is the worse of the two.There is no fallback: spec-kit aborts before registering any command or hook, so the
speckit-review-runskill is simply absent rather than degraded.The fix is not in our hands, it is upstream and already submitted (below). What we own is that our published docs currently point users at a broken install, and that
autodegrades quietly instead of announcing the missing skill.Cause
Upstream bug in
ismaelJimenez/spec-kit-review, not in this repo. Itsextension.ymlputs the file name inprovides.scripts[].name:spec-kit 1.0.0 started validating
provides.scripts/provides.templatesentries inExtensionManifest._validate_provided_artifacts(src/specify_cli/extensions/__init__.py).namemust match^[a-z0-9-]+$, since it is a logical slug and the path belongs infile:. Earlier CLIs never checked that section, which is why the pinnedv1.0.1used to install cleanly. Validation fails before any command or hook is registered, so the extension is not partially installed, it is simply absent.critiquedeclares noprovides.scriptssection, so it is unaffected.Upstream fix
The PR renames the two entries to
detect-changed-files/detect-changed-files-powershell, releases as v1.0.2, and extends the upstreamvalidate-manifestCI job to catch this class of manifest error. Script paths and command frontmatter are unchanged, so behaviour is identical.Verified on specify-cli 1.0.5 and 0.8.5: install succeeds, all 7
speckit-review-*skills are generated, and theafter_implementhook registers.Impact here
README.md(Companion extensions section) pins:That command fails for anyone on spec-kit 1.0.x. Commands affected:
prep,auto,implement.Workaround until upstream tags v1.0.2
Action for this repo
README.mdtov1.0.2reviewshould stay an external pin or be vendoredREADME.mdnow with the workaround, rather than leaving users on a pin that failsspeckit-review-runskill a loud failure inprep/auto/implementinstead of a silent skip, so a broken companion install can never pass for a completed review