nicepkg/requirements-specification
Master requirements gathering, user story writing, acceptance criteria definition, and scope management. Transform insights into clear, actionable specifications.
npx skills add https://github.com/nicepkg/ai-workflow --skill requirements-specification
Transform customer insights into clear, detailed specifications that engineering can build from. Master user story writing, define acceptance criteria, and manage scope ruthlessly.
I - Independent (minimal dependencies)
N - Negotiable (details can be discussed)
V - Valuable (delivers customer value)
E - Estimable (team can estimate effort)
S - Small (can complete in 1-2 sprints)
T - Testable (clear success criteria)
As a [user role]
I want [action/capability]
So that [benefit/outcome]
Acceptance Criteria:
Given [context]
When [user action]
Then [expected result]
Bad Story:
As a user
I want a better dashboard
So that I can see my data
Problem: Too vague, not testable, too large
Good Story:
As a project manager
I want to see all tasks assigned to me in the last 24 hours
So that I can track what happened while I was offline
Acceptance Criteria:
Given I'm logged in
When I view the Home dashboard
Then I see a "Recent Tasks" section
And it shows tasks assigned to me from last 24 hours
And tasks are sorted by assignment time (newest first)
And clicking a task opens the task detail page
Scenario: [Specific user action]
Given [initial context/state]
When [user performs action]
Then [expected result]
And [additional verification]
Scenario: User resets password with valid email
Given I'm on the login page
And I'm not logged in
When I click "Forgot Password?"
And enter my email address
And click "Send Reset Email"
Then I see message "Check your email for reset link"
And a password reset email is sent to that address
And the email contains a valid reset link
Scenario: User uses expired reset link
Given I received a password reset email
And the reset link is more than 24 hours old
When I click the reset link
Then I see "Link has expired"
And I'm offered to request a new reset link
Scenario: Password doesn't meet requirements
Given I'm on password reset page
When I enter password "123"
Then I see error "Password must be 8+ characters"
And the form doesn't submit
Functional Requirements
Non-Functional Requirements
Business Requirements
Constraints
Structure:
Each Story Includes:
Use Case Template:
Use Case: [Use Case Name]
Primary Actor: [User role]
Precondition: [State before action]
Main Flow:
1. User does X
2. System responds with Y
3. User does Z
4. System returns result
Alternative Flows:
3a. If data invalid
- System shows error
- User corrects and resubmits
Entity Relationship Diagram
MoSCoW Method:
MUST Have (Non-negotiable)
SHOULD Have (Important but not critical)
COULD Have (Nice-to-have)
WON'T Have (Explicitly out of scope)
Red Flags:
Responses:
Change Request Process:
❌ "Improve performance"
✅ "Reduce page load time from 4s to under 2s"
❌ "Build dashboard"
✅ "Build dashboard showing active users in last 24h with 95% accuracy"
❌ "Fix the bug"
✅ "When searching with special characters, results show error. Fix to handle special chars."
❌ "Use Redux with saga middleware for state management"
✅ "State changes must be traceable and debuggable"
❌ "System should be fast"
✅ "API response time < 200ms for 95th percentile"
| Hata | Olası Sebep | Çözüm |
|------|-------------|-------|
| Story çok büyük | Epic olarak yazıldı | Story breakdown |
| AC belirsiz | Vague criteria | Given/When/Then format |
| Scope creep | Change mgmt yok | Change request process |
| Missing edge cases | Happy path focus | Edge case workshop |
[ ] Her story INVEST criteria geçiyor mu?
[ ] Acceptance criteria testable mı?
[ ] Non-functional requirements tanımlı mı?
[ ] Dependencies documented mı?
[ ] Engineering review yapıldı mı?
Write clear requirements and avoid 90% of project problems!
Take nicepkg/requirements-specification from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.