osovv / grace-spec
Interview the user and create an approved GRACE 4 GraceChangeSpec plus optional design-context.xml inside .grace/changes/active/C-*/.
<skill>
<changebundlecontract>.grace/changes/active/C-CHANGE-ID/
spec.xml— normativeGraceChangeSpecdesign-context.xml— optional, explanatory onlyplan.xml— created later bygrace-plan
</changebundlecontract>
<status_rules>
Create spec.xml as status="draft". Set status="approved" only after explicit user approval. Rejected or cancelled specs move to archive with terminal status. Do not create or edit plan.xml in this skill.
</status_rules>
<strict_contract>
The direct C-* wrapper must contain exactly one meaningful Summary, Goals, Constraints, NonGoals, AcceptanceCriteria, AffectedAreas, and VerificationIntent section. Empty containers are not approval-ready. Semantic anchors are canonical attribute-free XML tags, never attributes or attribute values.
</strict_contract>
<workflow>
- Ask one focused question at a time until goal, scope, constraints, non-goals, acceptance criteria, affected areas, and verification expectations are clear.
- Propose a concise design summary and explicit assumptions. Ask for approval before writing an approved spec.
- Create a deterministic uppercase-kebab
C-*change id. - Write
spec.xmlfromreferences/change-spec-template.xmlwith exactly one directC-*wrapper and no empty required section. - If rationale, alternatives, scenarios, or external constraints would otherwise bloat the spec, write non-normative
design-context.xmlfrom its template. - If approval is not explicit, leave
spec.xmlasstatus="draft"and report the approval step needed.
</workflow>
<hard_rules>
spec.xmlis the source of truth forgrace-plan; design context never adds requirements.- Do not implement code, mutate current graph/verification state, or create retroactive change bundles.
- Recommend
grace lint --path <project-root> --assertions currentas a pre-implementation active-baseline check after writing the bundle; never present it as target or final evidence.
</hard_rules>
</skill>