add-functional-spec
Installation
SKILL.md
Add Functional Spec
Always use the skill load-plain-reference to retrieve the ***plain syntax rules — but only if you haven't done so yet.
Workflow
- Identify the target
.plainfile. If ambiguous, ask the user. - Read the entire file to understand existing definitions, implementation reqs, and all current functional specs (including those in
requiresmodules). - Draft the functional spec following the rules below.
- Analyze complexity — use the
analyze-if-func-spec-too-complexskill to verify the drafted spec implies ≤ 200 LOC. If too complex, use thebreak-down-func-specskill to split it, then repeat from step 3 for each resulting spec. - Check for conflicts with every existing functional spec — this is critical. Run
analyze-func-specsonce with the new spec plus all existing specs (in the file and in anyrequireschain) as a single batch. The batched analyzer returns every conflicting pair in one call — do not invoke a pair-by-pair analyzer. For each conflicting pair it reports, runresolve-spec-conflicton that pair; re-runanalyze-func-specsover the touched set after each resolution until the verdict isCOMPATIBLE. - Append the spec to the end of the
***functional specs***section (specs are chronological; new ones go last). - Read the file again to confirm correct placement and syntax.
Rules
Complexity Limit
Each functional spec must imply a maximum of 200 changed lines of code. If the requirement is too large, use the break-down-func-spec skill to split it into multiple smaller, independent specs. Do not include LOC estimates in the spec text.