Authors technology-agnostic functional requirements in FR-XXX format with RFC 2119 keywords, edge cases, and measurable success criteria. For feature specs, API contracts, and stakeholder reviews.
From humaninloopnpx claudepluginhub deepeshbodh/human-in-loop --plugin humaninloopThis skill uses the workspace's default tool permissions.
references/EDGE-CASES.mdreferences/RFC-2119-KEYWORDS.mdscripts/validate-requirements.pySearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Executes pre-written implementation plans: critically reviews, follows bite-sized steps exactly, runs verifications, tracks progress with checkpoints, uses git worktrees, stops on blockers.
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.
humaninloop:patterns-api-contracts insteadhumaninloop:patterns-entity-modeling insteadhumaninloop:authoring-user-stories instead (this skill focuses on the underlying requirements)Write requirements using the FR-XXX format with RFC 2119 keywords:
## 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]
| Keyword | Meaning |
|---|---|
| MUST | Absolute requirement; no exceptions |
| SHOULD | Recommended; valid exceptions may exist |
| MAY | Optional; implementation choice |
See RFC-2119-KEYWORDS.md for detailed usage guidance.
Good (what):
Bad (how):
Identify 3-5 boundary conditions that need explicit handling:
## 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?
| Category | Examples |
|---|---|
| System limits | Max items, file size limits, rate limits |
| Invalid input | Empty fields, wrong types, boundary values |
| External failures | Network timeouts, service unavailable |
| Concurrency | Simultaneous edits, duplicate submissions |
| Permissions | Unauthorized access, expired tokens |
See EDGE-CASES.md for detailed patterns.
Define 3-5 measurable outcomes using SC-XXX format:
## Success Criteria
- **SC-001**: Users complete the task creation flow in under 2 minutes
- **SC-002**: 95% of users successfully create their first recurring task
- **SC-003**: Support tickets related to task scheduling decrease by 50%
Good:
Bad:
When the feature involves data, describe entities conceptually:
## Key Entities
### RecurringPattern
Represents the schedule for a repeating task.
**Attributes:**
- Frequency (how often: daily, weekly, monthly)
- Interval (every N occurrences)
- End condition (never, after N times, on date)
**Relationships:**
- Belongs to one Task
- Generates many TaskInstances
Validate requirement format with the included script:
python scripts/validate-requirements.py path/to/spec.md
The script checks:
Before finalizing, verify:
❌ "System MUST use PostgreSQL for storage" ✅ "System MUST persist data durably"
❌ "MUST implement using the Observer pattern" ✅ "System MUST notify relevant components when state changes"
❌ "System MUST be fast" or "MUST be user-friendly" ✅ "Users MUST complete the flow in under 2 minutes"
❌ "System will notify users" ✅ "System MUST notify users" (use MUST/SHOULD/MAY)
❌ "API latency MUST be under 100ms" ✅ "Users MUST perceive responses as instantaneous"
❌ "As a user, I want to see my balance" ✅ "System MUST display current balance to authenticated users" (FR) + separate user story
❌ Listing 20+ edge cases covering every hypothetical ✅ Focus on 3-5 high-impact boundary conditions