This skill should be used when the user asks to "write requirements", "define success criteria", "identify edge cases", or mentions "functional requirements", "FR-", "SC-", "RFC 2119", "MUST SHOULD MAY", or "edge cases". Produces technology-agnostic requirements in FR-XXX format with measurable success criteria.
View on GitHubdeepeshBodh/human-in-loop
humaninloop
January 25, 2026
Select agents to install to:
npx add-skill https://github.com/deepeshBodh/human-in-loop/blob/main/plugins/humaninloop/skills/authoring-requirements/SKILL.md -a claude-code --skill authoring-requirementsInstallation paths:
.claude/skills/authoring-requirements/# Authoring Requirements ## Purpose Write technology-agnostic functional requirements, identify edge cases, and define measurable success criteria. Focus on WHAT the system does and WHY, never HOW it's implemented. ## Functional Requirements Format Write requirements using the FR-XXX format with RFC 2119 keywords: ```markdown ## Functional Requirements - **FR-001**: System MUST [specific capability] - **FR-002**: Users MUST be able to [specific action] - **FR-003**: System SHOULD [recommended behavior] - **FR-004**: System MAY [optional capability] ``` ### RFC 2119 Keywords | Keyword | Meaning | |---------|---------| | **MUST** | Absolute requirement; no exceptions | | **SHOULD** | Recommended; valid exceptions may exist | | **MAY** | Optional; implementation choice | See [RFC-2119-KEYWORDS.md](RFC-2119-KEYWORDS.md) for detailed usage guidance. ### FR Numbering Rules 1. Sequential numbering: FR-001, FR-002, FR-003... 2. No gaps in sequence 3. Three-digit padding (001, not 1) 4. Group related requirements together ### Writing Technology-Agnostic Requirements **Good (what):** - "System MUST notify users when their subscription expires" - "Users MUST be able to export their data in a portable format" **Bad (how):** - "System MUST send email via SendGrid when subscription expires" - "Users MUST be able to download a JSON export from the /api/export endpoint" ## Edge Cases Identify 3-5 boundary conditions that need explicit handling: ```markdown ## Edge Cases 1. **System limits**: What happens at maximum capacity? 2. **Invalid input**: How are malformed requests handled? 3. **External failures**: What if dependencies are unavailable? 4. **Concurrent access**: How are race conditions prevented? 5. **Permission boundaries**: What happens with unauthorized access? ``` ### Edge Case Categories | Category | Examples | |----------|----------| | **System limits** | Max items, file size limits, rate limits | | **Invalid input** | Empty fields, wrong types, bo