By default, use a single requirements Markdown document to maintain current rules, key design points, and verification results.
First clarify requirements and acceptance, then implement and verify; leave history to Git.
-
Discover conventions
- Read the repository's , requirements index, and existing document structure, and follow existing numbering and paths.
- When no conventions exist, use and requirement(R-xx).
- Before registration, search the index by module, interface, configuration, or business rule, and read requirements and acceptance criteria whose scope intersects.
-
Register
- Register the requirement in the index; by default, use a single requirement MD.
- When refining or correcting the same requirement, prefer updating its original ID; create a new ID and record the relationship only for an independent requirement.
- Refer to spec-template.md and spec-example.md.
-
Finalize
- Clearly document the scope, non-goals, acceptance criteria, key decisions, and open questions.
- Once open questions affecting implementation are resolved, transition the status to , and then modify the code.
-
Verification first
- For each acceptance criterion, select the lowest-cost verification level sufficient to demonstrate the behavior.
- First establish a failing baseline or document the existing gap, then implement until it passes.
- One acceptance criterion may be proven by multiple test cases, and one test case may cover multiple related criteria.
-
Implementation and convergence
- Implement according to the verification mapping; when complete, update the corresponding verification items and replace stale conclusions.
- If it passes in the test environment but has not yet been released, keep the status as .
- After the actual release, transition the status to .
-
Wrap-up
- Update the index when the entry point, affected scope, related requirements, or status changes.
- When superseding existing rules, mark the old entry's replacement relationship and applicable scope to avoid having two sets of rules valid at the same time.
- Update when long-term repository rules or authoritative entry points change.
- Check the rules, references, and verification scope against the current diff to avoid leaving stale conclusions or duplicate records.
- Reference the spec path or ID in the commit message.
By default, use a single
; do not proactively create a requirements directory or split design, verification, and task files.
Retain the background and scope, acceptance criteria, key design, open questions, and verification as needed; if there are many tasks, list them in this document.
-
Status:
. The core spec maintains the status, while the index displays only a summary.
-
Scope and relationships
- Clearly define the current scope and non-goals; when scopes overlap, distinguish duplication, dependency, extension, supersession, and conflict.
- Explain the specific relationship in this document and link related requirements. A supersession must identify the acceptance criterion or rule and its effective scope.
- Sharing a module does not imply a conflict, and numbering order does not indicate supersession; unverified relationships must not be stated as definitive conclusions.
-
Acceptance criteria
- Describe testable behavior. Chinese conditional sentences should use 「当、应、若、则」.
- 「应」 denotes a requirement that must be met; state simple rules directly without forcing them into a complete conditional sentence.
- Write IDs as requirement(R-01) and acceptance criterion(AC-1), and write ranges as acceptance criterion(AC-1~AC-4).
- Use half-width characters for parentheses and range connectors, with no spaces on either side; preserve existing IDs and paths.
-
Input constraints: Specify the format, count/length limits, null values, and behavior when limits are exceeded.
-
Key design: Record conclusions and rationale that affect implementation or acceptance in this document as needed.
-
Open questions and assumptions
- Distinguish blockers, default values, and assumptions to verify, and explain the basis and verification method; list unresolved rule conflicts here as well.
- Do not implement dependent content until the blocker is resolved; authorized work that does not depend on it may continue.
- List integration verification gaps separately for visual effects or upstream semantics that unit tests cannot prove.
-
Verification mapping
- Map acceptance criteria, risks/behavior, verification levels, and test cases/evidence; do not require every criterion to map to a unit test.
- When standalone verification files already exist, keep only the coverage relationships and links in the spec, and do not duplicate execution results.
-
Verification results
- By default, centralize results in this document's verification section, recording the current conclusion, scope, version or change basis, and evidence.
- Update existing entries rather than appending a summary after each iteration; remove stale conclusions and leave history to Git.
- Partial verification proves only the corresponding scope. Mark other changes as unverified, and do not carry forward an old version's conclusion that all checks passed.
This skill manages the mapping between acceptance criteria and evidence; it does not prescribe specific test implementations.
The two skills trigger independently; ordinary spec tasks do not automatically load specialized testing knowledge.