techygarg/requirement-forge-refiner
Facilitate a structured conversation to define requirement standards for a project — epic and feature definitions, scenario structure, AC format, priority notation, status workflow, and naming conventions. Produces a formal requirement-standards.md that the requirement-quality atom reads via config resolution, customising its embedded defaults for the team's product process. Use when setting up a new project, defining product standards, or when the user says 'set up requirement standards', 'define feature standards', 'configure requirement forge', 'define how features should be structured', or 'requirement forge refiner'.
npx skills add https://github.com/techygarg/lattice --skill requirement-forge-refiner
.lattice/standards/requirement-standards.md (or custom path from .lattice/config.yaml → paths.requirement_standards)mode: overlay): A slim document containing only sections that differ from the built-in defaults. The requirement-quality atom reads its embedded defaults.md first, then applies this document's sections on top. This is the expected common case.mode: override): A comprehensive standalone document that fully replaces the atom's embedded defaults. For teams whose product process differs fundamentally from the defaults.paths.requirement_standards in .lattice/config.yamlrequirement-quality atom (via config resolution) → requirement-forge molecule (composes the atom)./assets/template.md for the full document structure, default content, and interview guidance commentsThis refiner defines how requirements are *structured and expressed* for this project. It does not define:
The standards produced here answer: what is an epic, what is a feature, what is a scenario, how are ACs written, how are features named and prioritized. These are the rules the requirement-quality atom enforces — the molecule composes the atom and inherits those rules automatically.
.lattice/config.yaml — check paths.requirement_standards.Before the formal interview, ask:
These two questions are the only free-form listening before the structured interview begins. Synthesize what you hear and carry it forward — do not ask follow-up questions at this stage.
Present the three options:
"How would you like to define your requirement standards?
The built-in defaults cover standard product spec practices well. Option 1 is recommended unless your team's conventions are fundamentally different."
Map the choice:
mode: overlaymode: overrideThis should be fast. Many sections will be "keep as-is."
Every section gets attention and appears in the output.
Read ./assets/template.md and follow the <!-- INTERVIEW GUIDANCE: --> comments for each section. Those comments contain specific questions, probing questions, and what is customizable vs. fixed.
| Decision in | Affects | How |
|---|---|---|
| §2 — Feature size definition | §4 scenario count | Larger features tolerate more scenarios; tighter features need a lower cap |
| §4 — Scenario nomenclature | §8 naming conventions | If "scenario" is renamed, naming conventions must use the new term |
| §4 — Max scenarios per feature | §2 feature definition | These two must be consistent — the split signal in §2 should align with the cap in §4 |
| §5 — AC format | §4 scenario structure | AC format determines what each scenario's criteria look like |
| §6 — Priority notation | feature file frontmatter | Priority field format used in every generated feature file |
| §7 — Status workflow | feature file frontmatter | Status field used in every generated feature file |
| §8 — Naming conventions | all file generation | Feature file names and display names generated by the molecule |
When a dependency is triggered, inform the user: "Since you changed [X], we should also review [Y] — it's affected by that decision."
For each of the 9 default sections:
For each of the 9 default sections:
mode: overlaytemplate.md exactly (the molecule matches sections by heading)mode: overrideStrip all <!-- INTERVIEW GUIDANCE: --> comments from the output. The final document is a clean specification.
Determine output path:
.lattice/config.yaml exists and has paths.requirement_standards, use that path..lattice/standards/requirement-standards.md.Write the document:
.lattice/standards/ directory (and .lattice/ parent) if it does not exist.Update config:
.lattice/config.yaml does not exist, create it with: paths:
requirement_standards: .lattice/standards/requirement-standards.md
.lattice/config.yaml exists but has no paths.requirement_standards, add the key. Preserve all existing content.Confirm to user:
"Your requirement standards have been written to [PATH] in [overlay|override] mode. The requirement-forge molecule will now use these standards and will not re-ask structural questions covered here."
Before writing the final document, verify:
template.md exactly<!-- INTERVIEW GUIDANCE: --> comments remainmode: overlay<!-- INTERVIEW GUIDANCE: --> comments remainmode: override.lattice/config.yaml) is correctly updatedTake techygarg/requirement-forge-refiner from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.