This skill MUST be invoked when the user says "write user stories", "define acceptance criteria", "prioritize features", "user story", "acceptance scenario", or "Given When Then". SHOULD also invoke when user mentions "priority", "P1", "P2", "P3", or "backlog". Produces prioritized user stories with independently testable acceptance scenarios.
Violating the letter of the rules is violating the spirit of the rules.
Transform feature descriptions into testable user stories with clear business value, prioritized by impact. Each story MUST be independently testable with measurable acceptance criteria.
This is a discipline-enforcing skill. The structured format exists to ensure stories are unambiguous, testable, and properly prioritized. Shortcuts create ambiguous requirements that cause implementation failures.
humaninloop:patterns-technical-decisions insteadhumaninloop:patterns-api-contracts insteadGenerate 2-5 user stories per feature using this exact structure:
### User Story N - [Brief Title] (Priority: P#)
[Describe this user journey in plain language]
**Why this priority**: [Explain the value and priority level]
**Independent Test**: [How this can be tested standalone]
**Acceptance Scenarios**:
1. **Given** [state], **When** [action], **Then** [outcome]
2. **Given** [state], **When** [action], **Then** [outcome]
| Priority | Meaning | Criteria | |----------|---------|----------| | P1 | Core functionality | MVP requirement, blocks other features, must ship | | P2 | Important | Complete experience but can ship without initially | | P3 | Nice to have | Enhances experience, future consideration |
See PRIORITY-DEFINITIONS.md for detailed guidance on priority assignment.
Each scenario follows the Given/When/Then pattern:
Rules:
Good example:
**Given** a user has an active subscription,
**When** they click "Cancel Subscription",
**Then** they see a confirmation dialog with the cancellation date
Bad example:
**Given** the database has the user record,
**When** the API receives a DELETE request,
**Then** the subscription_status column is set to "cancelled"
Each user story must include an Independent Test description that explains:
This enables parallel testing and clear verification.
Before finalizing, verify each user story:
Validate user story format with the included script:
python scripts/validate-user-stories.py path/to/spec.md
The script checks:
See EXAMPLES.md for complete user story examples.
| Excuse | Reality | |--------|---------| | "Priority is obvious, don't need justification" | Obvious to you ≠ obvious to others. Stakeholders disagree on "obvious." Justify anyway. | | "This story is too simple for Given/When/Then" | Simple stories still need testable criteria. Ambiguity causes implementation bugs. Format anyway. | | "We can add acceptance scenarios later" | "Later" means never. Incomplete stories get misimplemented. Write them now. | | "The user just wants quick stories" | Quick incomplete stories waste more time than complete ones. Do it right. | | "Independent test is overkill for small features" | Small features still need verification. QA can't test what isn't specified. Include it. | | "Everyone knows what P1 means" | P1 without justification is opinion, not prioritization. Explain the value. |
If you notice yourself thinking any of these, STOP immediately:
All of these mean: You are rationalizing. Write complete stories with all required sections.
No exceptions:
❌ "As a developer, I want to refactor the auth module" ✅ "As a user, I want to log in securely so my account is protected"
❌ Just saying "P1" without explaining why ✅ "Why this priority: Core login flow - users cannot access any features without this"
❌ "Then the React component re-renders with updated state" ✅ "Then the user sees the updated balance immediately"
❌ "Then the user is happy" or "Then it works correctly" ✅ "Then the user sees a confirmation message with order number"
❌ One story covering login, registration, AND password reset ✅ Separate stories for each distinct user journey
❌ "Then the system is performant" ✅ "Then the page loads within 2 seconds"
npx skills add deepeshBodh/authoring-user-stories下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks OpenClaw to add a note, list notes, search notes, or manage note folders.
Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
Use when you need to control Slack from OpenClaw via the slack tool, including reacting to messages or pinning/unpinning items in Slack channels or DMs.
Manage Apple Reminders via remindctl CLI (list, add, edit, complete, delete). Supports lists, date filters, and JSON/plain output.
Manage Trello boards, lists, and cards via the Trello REST API.
Category:productivity