Repository navigation
fix: correct installed preset paths and reviewer binding model - #30
Merged
Merged
Conversation
The workflow commands referenced their references, templates, and reviewers with bare relative paths. When Spec Kit installs a command as an integration command or a Claude skill, it copies the body verbatim without rewriting asset paths, so the paths resolved against the wrong directory and broke. The specify command also pointed at the stock spec template instead of the preset template. Prefix every reference, template, and reviewer path with the installed preset directory so the paths resolve from the project root regardless of where the command lands. This also points the specify command at the preset spec template, which wins through the replace strategy. Bump the preset to 0.3.1 and sync the architecture doc, which still referenced the superseded 0.2.1.
Spec Kit 1.0 moved feature-directory creation out of a wired script and into the specify command body. The preset replaced that command without the setup, so under the preset no feature directory, spec.md, or feature.json was created, and downstream commands could not locate the feature. Resolve and create the numbered feature directory, seed spec.md from the preset spec template by direct path, and persist feature.json. The direct path avoids the bash template resolver and its PyYAML dependency. Gate the writes behind the existing progress lock. Bump the preset to 0.3.2.
The plan, tasks, clarify, and implement replacements carried no setup script and no deterministic way to find the feature directory. With one feature under specs/ the agent resolved it by elimination; with more than one there was no anchor and it could guess. Define the resolution order in artifact-contracts.md (caller-supplied directory, then the feature_directory value in .specify/feature.json, then the single specs/ directory, else fail closed) and point each of the four downstream commands at .specify/feature.json before any artifact read. The specify command already writes that file. Bump the preset to 0.3.3.
The architecture overview described a superseded design: a standalone /speckit.analyze command, an analysis.md aggregate, an execution-plan.md artifact, and reviewers named artifact-fidelity, decomposition-design, and plan-clarity. None of these exist in the current preset. Reconcile the doc to what the commands and references actually implement: review folds into /speckit.plan and /speckit.tasks with the real reviewer packets (rfc-design, rfc-clarity, tasks-rfc-fidelity, tasks-executability, component-docs); execution detail lives in subplans/; approval lives in plan.md and tasks.md. Note that the preset runs no Spec Kit extension hooks. Repoint the broken reference links and drop the one with no target. Align the stated preset version to 0.3.3.
The reviewer packets required an exact set of skills for eligibility. Those skill names were invented capability tags that matched neither a real installed skill nor any reviewer agent, so binding could never succeed. Skills are also not portable across coding integrations, so a preset can neither own nor guarantee them. Reviewers now declare a role description and bind to the single fresh-context, read-only candidate whose description matches at the requested tier. A missing or ambiguous match asks the human once. Implementation workers keep their real declared skills, which the preset knows through the sub-plan. Bump the preset to 0.4.0 for the changed binding model.
MrPointer
force-pushed
the
fix/speckit-preset-installed-paths
branch
from
September 10, 2026 11:32
14314c7 to
a022403
Compare
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.
📝 Summary
The project-installed
timors-agentic-workflowSpec Kit preset shipped generated commands that pointed at the wrong asset paths, resolved the feature directory by guesswork, and gated reviewer binding on skills that no agent could satisfy. This branch fixes the installed paths, makes feature-directory resolution deterministic, reworks reviewer binding to use role descriptions, and reconciles the architecture doc with the shipped preset. The preset moves to0.4.0.Key Decisions
🧭 Deterministic feature-directory resolution
Commands resolve the canonical feature directory in a fixed order — a caller-supplied directory, then
.specify/feature.json, then a solespecs/candidate — and fail closed on ambiguity instead of guessing.specifycreates the directory; the other commands read it throughreferences/artifact-contracts.md.🔗 Installed-preset asset paths
Generated commands reference their project-relative installed copy under
.specify/presets/…, so a project stays independent of the dotfiles source after installation.🧑⚖️ Reviewer binding by role, not skills
Reviewer packets used to require an exact skill set, but those skill names were invented capability tags that matched neither a real installed skill nor any reviewer agent, so binding could never succeed. Skills are also not portable across coding integrations, so the preset cannot own or guarantee them. Reviewers now declare a role description and bind to the single fresh-context, read-only candidate whose description matches at the requested tier; a missing or ambiguous match asks the human once. Implementation workers keep their real declared skills, which the preset knows through the sub-plan.
📄 Architecture doc reconciled
docs/spec-kit-workflow/architecture.mdnow matches the implemented preset: noanalyzecommand, indexedsubplans/, the real reviewer roles, the approval locations, and the new binding model.🔄 Before & After