Skip to content

fix: correct installed preset paths and reviewer binding model - #30

Merged
MrPointer merged 5 commits into
mainfrom
fix/speckit-preset-installed-paths
Sep 10, 2026
Merged

MrPointer merged 5 commits into
mainfrom
fix/speckit-preset-installed-paths

Conversation

@MrPointer

@MrPointer MrPointer commented Sep 9, 2026 •

Copy link
Copy Markdown
Owner

📝 Summary

The project-installed timors-agentic-workflow Spec 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 to 0.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 sole specs/ candidate — and fail closed on ambiguity instead of guessing. specify creates the directory; the other commands read it through references/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.md now matches the implemented preset: no analyze command, indexed subplans/, the real reviewer roles, the approval locations, and the new binding model.

🔄 Before & After

Area Before After
Installed asset paths Generated commands referenced the wrong paths Reference the project-relative installed copy
Feature directory Resolved by guess Deterministic order, fails closed on ambiguity
Reviewer binding Exact skills no agent carried Role description plus safety checks
Architecture doc Drifted from the preset Matches the shipped preset
Preset version 0.3.x 0.4.0

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
MrPointer force-pushed the fix/speckit-preset-installed-paths branch from 14314c7 to a022403 Compare September 10, 2026 11:32
@MrPointer MrPointer changed the title Harden the spec-kit workflow preset and rework reviewer binding fix: correct installed preset paths and reviewer binding model Sep 10, 2026
@MrPointer
MrPointer merged commit 04cc6fb into main Sep 10, 2026
5 checks passed
@MrPointer
MrPointer deleted the fix/speckit-preset-installed-paths branch September 10, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant