srs-generator
Generates complete Software Requirements Specification (SRS) documents, following the standard template based on ISO/IEC/IEEE 29148:2018. Use this skill whenever the user asks to create, write, genera
Files3
View on GitHubSKILL.mdskills/srs-generator/SKILL.md
GitHubSRS Generator
Generates SRS documents in Markdown per ISO/IEC/IEEE 29148:2018. Template lives in references/srs-template.md — fill it, never freehand a different structure.
Workflow
| # | Step | Action | Gate |
|---|---|---|---|
| 1 | Collect info | Ask elicitation questions below if input is thin | enough to fill template, gaps marked |
| 2 | Generate | Fill references/srs-template.md with collected data |
placeholders only for undefined fields |
| 3 | Present | Show draft, ask for section refinements | user confirms or requests changes |
Information Elicitation
Minimum questions when only a system name/description is given:
- Main objective of the system
- Target users
- Main functionalities (3–5 core functions)
- Relevant technical constraints (language, database, platform)
Never block generation on incomplete answers — generate with what's available, mark gaps with > ⚠️ To be defined: [what is missing].
Related Skills
| Skill | When |
|---|---|
grilling |
Input is vague/high-stakes, user wants scope stress-tested. Structures elicitation as rounds with recommended answers. Skip for quick/well-defined requests. |
prd-get-implicit-requirements |
Input is an existing PRD/long spec, before drafting Section 3. Walks 14 gap categories (error handling, empty/loading states, i18n, a11y, security, observability, legal, deployment) to catch missing NFRs/constraints ahead of time, feeding sections 2.4, 3.4, 3.6, 3.8. |
Generation Rules
- Requirement IDs:
FR-XXX(functional),NFR-XXX(non-functional),UR-XXX(usability),PR-XXX(performance),DBR-XXX(database),INT-XX(interface). - Priority:
High/Medium/Low. - Verification Method: every FR/NFR gets one of
Inspection,Analysis,Demonstration,Test(ISO/IEC/IEEE 29148 §3.9 table in template). DefaultTest; useAnalysiswhen perf/security can't be end-to-end tested cheaply. - Gaps:
> ⚠️ To be defined: [what is missing]in italics — never invent critical technical info. - Language: formal English, active voice, "The system shall..." for functional requirements.
- Minimum completeness: ≥3 functional requirements, ≥1 usability, ≥1 performance, all system attributes filled.
- Standard references: always include
ISO/IEC/IEEE 29148:2018.
Quality Checklist (ISO/IEC/IEEE 29148 §5)
Each individual requirement must be: Necessary · Appropriate · Unambiguous · Complete · Singular (split "and" clauses) · Feasible · Verifiable · Correct · Conforming.
The requirement set must be: Complete · Consistent · Feasible · Comprehensible · Able to be validated.
Flag violations inline: > ⚠️ Quality issue: [attribute] — [why] — don't silently fix ambiguous input.
After Generating
- Run
python3 skills/srs-generator/scripts/validate_srs.py <path>— fix anyERRORbefore presenting the draft; reviewWARNlines against the Quality Checklist. - Flag items marked
⚠️ To be definedfor review. - Ask if user wants to review before saving.
- Save to
docs/srs/yyyy-mm-dd-<short-description>.md.
Reference files
references/srs-template.md— full Markdown template + example functional requirement.scripts/validate_srs.py— deterministic pass/fail gate for Generation Rules + Quality Checklist (--strictpromotes warnings to errors).