Preset ID
inventory-alignment
Preset Name
Inventory Alignment
Version
0.1.0
Description
Classifies each requirement against a read-only inventory of live IDs before writing, so reworded requirements are updated instead of duplicated.
Author
Yash Chindam
Repository URL
https://github.com/Yash-Chindam/spec-kit-inventory-alignment
Download URL
https://github.com/Yash-Chindam/spec-kit-inventory-alignment/releases/download/v0.1.0/inventory-alignment.zip
Documentation URL
https://github.com/Yash-Chindam/spec-kit-inventory-alignment/blob/main/inventory-alignment/README.md
License
MIT
Required Spec Kit Version
=0.9.0
Required Extensions (optional)
speckit-inventory >=0.1.0 — submitted separately alongside this one.
Note that preset.yml's requires: can only declare speckit_version, so this dependency cannot currently be declared formally in the manifest. The wrappers degrade safely: without the extension installed, the core workflow runs unchanged and the inventory checks are skipped. @mnriem flagged this same gap in #4164 (comment) as a small, separable core enhancement worth tracking on its own issue.
Templates Provided
1 template — tasks-template (append strategy), documenting the optional covers: field that links a task to the requirement IDs it implements.
Commands Provided
2 commands, both using the wrap strategy with the {CORE_TEMPLATE} placeholder so they fall through to the original command body:
speckit.specify — prepends a pre-pass that loads the inventory and classifies each proposed requirement as already-true / edit-existing / conflict / genuinely-new before writing.
speckit.analyze — prepends a pre-pass that loads the complete live ID set as an input to cross-artifact coverage and conflict review.
Number of Scripts (optional)
0
Tags
inventory, alignment, requirements, traceability, workflow
Key Features
Filed at @mnriem's request in #4164 — this is the preset half of the extension + preset pair proposed in #4164 (comment). The companion extension speckit-inventory is submitted separately.
The problem. A user reworks a UI requirement mid-feature. The agent finds related work by grepping similar wording across spec.md, plan.md, and tasks.md. After the reword — "charge on Pay" becomes "show a confirm modal" — nothing matches, so the agent adds a second live requirement instead of updating the first. /speckit.analyze cannot catch it, because the contradicting line was never loaded into context.
What this preset changes.
- Classify before writing. The
speckit.specify pre-pass requires each proposed requirement to be resolved against the complete live set as already-true, edit-existing, conflict, or genuinely-new — matching on meaning rather than wording, and preserving existing IDs when updating.
- Analyze against a complete input. The
speckit.analyze pre-pass supplies the full ID set instead of grep results, and instructs the agent to report IDs present in one artifact but missing from others, uncovered requirements, and dangling references.
- Optional
covers: field. The append override of tasks-template documents linking a task to the requirements it implements, which is what lets the companion extension return a per-task context pack instead of a whole-file dump. It is explicitly optional — setup and tooling tasks omit it.
- No core changes, no second source of truth, no embeddings. Embeddings were Phase 2 of the original proposal and are deliberately out of scope.
Testing Checklist
Submission Requirements
Additional Context
Testing details. Tested on Windows 11 with Spec Kit 0.16.5.dev0 (built from main), Python 3.11.14, in a project scaffolded with specify init --integration copilot. To be precise about that checkbox: this is a purpose-built test project, not a long-running production one.
All checks ran against the published release archive rather than a local checkout:
- Installed via
specify preset add inventory-alignment --from <download-url> — installed at priority 10.
specify preset resolve tasks-template returns the expected composition chain: 1. [base] core, then 2. [append] inventory-alignment v0.1.0. This confirms the append strategy composes rather than replacing the core template.
- Verified both
wrap overrides composed correctly: the pre-pass precedes the full core body (355 lines for speckit.specify, 271 for speckit.analyze), with zero unresolved {CORE_TEMPLATE} placeholders, and the core frontmatter scripts: block preserved in speckit.analyze.
- Confirmed all four classification buckets — already-true, edit-existing, conflict, genuinely-new — are present in the composed
speckit.specify output.
- Confirmed the download URL returns HTTP 200 and the downloaded bytes match the archive I built and tested.
Not covered: template composition and command registration are verified above, but /speckit.specify and /speckit.analyze were not invoked end-to-end inside a live coding-agent session to observe the pre-pass in action. I have the test matrix written and am happy to run it and post results if you want that evidence before vetting.
Suggested docs row for docs/community/presets.md, alphabetically between Intake Sequencing Governance and iSAQB Architecture Governance:
| Inventory Alignment | Classifies each requirement against a read-only inventory of live IDs before writing, so reworded requirements are updated instead of duplicated. | 1 template, 2 commands | speckit-inventory extension | [spec-kit-inventory-alignment](https://github.com/Yash-Chindam/spec-kit-inventory-alignment) |
Proposed catalog entry for presets/catalog.community.json:
"inventory-alignment": {
"name": "Inventory Alignment",
"id": "inventory-alignment",
"version": "0.1.0",
"description": "Classifies each requirement against a read-only inventory of live IDs before writing, so reworded requirements are updated instead of duplicated.",
"author": "Yash Chindam",
"repository": "https://github.com/Yash-Chindam/spec-kit-inventory-alignment",
"download_url": "https://github.com/Yash-Chindam/spec-kit-inventory-alignment/releases/download/v0.1.0/inventory-alignment.zip",
"sha256": "8ea62813aeb88d85001f54d91d8eceb011f5fb872bc764d5ea83e8e7ab92a2c1",
"homepage": "https://github.com/Yash-Chindam/spec-kit-inventory-alignment",
"documentation": "https://github.com/Yash-Chindam/spec-kit-inventory-alignment/blob/main/inventory-alignment/README.md",
"license": "MIT",
"requires": {
"speckit_version": ">=0.9.0"
},
"provides": {
"templates": 1,
"commands": 2
},
"tags": [
"inventory",
"alignment",
"requirements",
"traceability",
"workflow"
],
"created_at": "2026-08-20T00:00:00Z",
"updated_at": "2026-08-20T00:00:00Z"
}
Supersedes a PR. I originally opened #4220 editing the catalogs directly, because the issue asked for a PR. @mnriem redirected me here. That PR is being closed in favor of this submission and the companion extension submission.
AI disclosure. Filed on behalf of @Yash-Chindam by Claude Code (model: Claude Opus 5). Per CONTRIBUTING, this contribution used substantial AI assistance for code generation, not just documentation. The preset was first drafted with ChatGPT (Codex, model: GPT-5). It was then reviewed and corrected with Claude Code (model: Claude Opus 5), acting autonomously on my behalf, which found that the append override of tasks-template and the companion extension's before_specify / before_analyze hooks — both explicitly requested in @mnriem's comment — were missing entirely from that draft, and which added them, strengthened the classification prompts, and wrote this submission. Every check in Testing details was executed by Claude Code on my machine at my direction and the results reviewed by me; I am not claiming I re-ran each command by hand. Repository commits carry Assisted-by: trailers accordingly.
Preset ID
inventory-alignment
Preset Name
Inventory Alignment
Version
0.1.0
Description
Classifies each requirement against a read-only inventory of live IDs before writing, so reworded requirements are updated instead of duplicated.
Author
Yash Chindam
Repository URL
https://github.com/Yash-Chindam/spec-kit-inventory-alignment
Download URL
https://github.com/Yash-Chindam/spec-kit-inventory-alignment/releases/download/v0.1.0/inventory-alignment.zip
Documentation URL
https://github.com/Yash-Chindam/spec-kit-inventory-alignment/blob/main/inventory-alignment/README.md
License
MIT
Required Spec Kit Version
Required Extensions (optional)
speckit-inventory>=0.1.0 — submitted separately alongside this one.Note that
preset.yml'srequires:can only declarespeckit_version, so this dependency cannot currently be declared formally in the manifest. The wrappers degrade safely: without the extension installed, the core workflow runs unchanged and the inventory checks are skipped. @mnriem flagged this same gap in #4164 (comment) as a small, separable core enhancement worth tracking on its own issue.Templates Provided
1 template —
tasks-template(appendstrategy), documenting the optionalcovers:field that links a task to the requirement IDs it implements.Commands Provided
2 commands, both using the
wrapstrategy with the{CORE_TEMPLATE}placeholder so they fall through to the original command body:speckit.specify— prepends a pre-pass that loads the inventory and classifies each proposed requirement as already-true / edit-existing / conflict / genuinely-new before writing.speckit.analyze— prepends a pre-pass that loads the complete live ID set as an input to cross-artifact coverage and conflict review.Number of Scripts (optional)
0
Tags
inventory, alignment, requirements, traceability, workflow
Key Features
Filed at @mnriem's request in #4164 — this is the preset half of the extension + preset pair proposed in #4164 (comment). The companion extension
speckit-inventoryis submitted separately.The problem. A user reworks a UI requirement mid-feature. The agent finds related work by grepping similar wording across
spec.md,plan.md, andtasks.md. After the reword — "charge on Pay" becomes "show a confirm modal" — nothing matches, so the agent adds a second live requirement instead of updating the first./speckit.analyzecannot catch it, because the contradicting line was never loaded into context.What this preset changes.
speckit.specifypre-pass requires each proposed requirement to be resolved against the complete live set as already-true, edit-existing, conflict, or genuinely-new — matching on meaning rather than wording, and preserving existing IDs when updating.speckit.analyzepre-pass supplies the full ID set instead of grep results, and instructs the agent to report IDs present in one artifact but missing from others, uncovered requirements, and dangling references.covers:field. Theappendoverride oftasks-templatedocuments linking a task to the requirements it implements, which is what lets the companion extension return a per-task context pack instead of a whole-file dump. It is explicitly optional — setup and tooling tasks omit it.Testing Checklist
specify preset addSubmission Requirements
preset.ymlmanifest includedspecify preset add ...command (preferablyspecify preset add --from <download-url>using the exact download URL)Additional Context
Testing details. Tested on Windows 11 with Spec Kit 0.16.5.dev0 (built from
main), Python 3.11.14, in a project scaffolded withspecify init --integration copilot. To be precise about that checkbox: this is a purpose-built test project, not a long-running production one.All checks ran against the published release archive rather than a local checkout:
specify preset add inventory-alignment --from <download-url>— installed at priority 10.specify preset resolve tasks-templatereturns the expected composition chain:1. [base] core, then2. [append] inventory-alignment v0.1.0. This confirms theappendstrategy composes rather than replacing the core template.wrapoverrides composed correctly: the pre-pass precedes the full core body (355 lines forspeckit.specify, 271 forspeckit.analyze), with zero unresolved{CORE_TEMPLATE}placeholders, and the core frontmatterscripts:block preserved inspeckit.analyze.speckit.specifyoutput.Not covered: template composition and command registration are verified above, but
/speckit.specifyand/speckit.analyzewere not invoked end-to-end inside a live coding-agent session to observe the pre-pass in action. I have the test matrix written and am happy to run it and post results if you want that evidence before vetting.Suggested docs row for
docs/community/presets.md, alphabetically between Intake Sequencing Governance and iSAQB Architecture Governance:Proposed catalog entry for
presets/catalog.community.json:Supersedes a PR. I originally opened #4220 editing the catalogs directly, because the issue asked for a PR. @mnriem redirected me here. That PR is being closed in favor of this submission and the companion extension submission.
AI disclosure. Filed on behalf of @Yash-Chindam by Claude Code (model: Claude Opus 5). Per CONTRIBUTING, this contribution used substantial AI assistance for code generation, not just documentation. The preset was first drafted with ChatGPT (Codex, model: GPT-5). It was then reviewed and corrected with Claude Code (model: Claude Opus 5), acting autonomously on my behalf, which found that the
appendoverride oftasks-templateand the companion extension'sbefore_specify/before_analyzehooks — both explicitly requested in @mnriem's comment — were missing entirely from that draft, and which added them, strengthened the classification prompts, and wrote this submission. Every check in Testing details was executed by Claude Code on my machine at my direction and the results reviewed by me; I am not claiming I re-ran each command by hand. Repository commits carryAssisted-by:trailers accordingly.