Initial commit
This commit is contained in:
180
skills/user-story-creation/references/story-template.md
Normal file
180
skills/user-story-creation/references/story-template.md
Normal file
@@ -0,0 +1,180 @@
|
||||
# User Story Template
|
||||
|
||||
Use this template when creating user story issues in GitHub Projects. Copy the structure below into the issue description.
|
||||
|
||||
---
|
||||
|
||||
## User Story: [Brief title from user perspective]
|
||||
|
||||
### Story
|
||||
|
||||
**As a** [specific user type/persona],
|
||||
**I want** [goal or capability],
|
||||
**So that** [benefit or value].
|
||||
|
||||
---
|
||||
|
||||
### Context
|
||||
|
||||
[Optional: Additional background or context that helps understand this story. Why is this needed? What problem does it solve?]
|
||||
|
||||
---
|
||||
|
||||
### Acceptance Criteria
|
||||
|
||||
[Define specific, testable conditions that must be met for this story to be considered complete]
|
||||
|
||||
> Format Option 1: Given-When-Then
|
||||
|
||||
- **Given** [context or starting state]
|
||||
**When** [action taken]
|
||||
**Then** [expected outcome]
|
||||
|
||||
- **Given** [another context]
|
||||
**When** [another action]
|
||||
**Then** [another outcome]
|
||||
|
||||
> Format Option 2: Simple Checklist
|
||||
|
||||
- [ ] Criterion 1: [Specific, observable outcome]
|
||||
- [ ] Criterion 2: [Specific, observable outcome]
|
||||
- [ ] Criterion 3: [Specific, observable outcome]
|
||||
|
||||
---
|
||||
|
||||
### Notes & Assumptions
|
||||
|
||||
[Optional: Any assumptions, constraints, or additional notes]
|
||||
|
||||
**Assumptions:**
|
||||
- [Assumption 1]
|
||||
- [Assumption 2]
|
||||
|
||||
**Constraints:**
|
||||
- [Constraint 1]
|
||||
- [Constraint 2]
|
||||
|
||||
**Out of Scope:**
|
||||
- [What's NOT included in this story]
|
||||
|
||||
---
|
||||
|
||||
### Definition of Done
|
||||
|
||||
At story level, done means:
|
||||
|
||||
- [ ] All acceptance criteria met
|
||||
- [ ] Code reviewed and merged
|
||||
- [ ] Unit tests written and passing
|
||||
- [ ] Integration tests passing (if applicable)
|
||||
- [ ] Documented (user-facing docs, API docs, etc.)
|
||||
- [ ] Tested in staging environment
|
||||
- [ ] Acceptance confirmed by product owner/stakeholder
|
||||
|
||||
---
|
||||
|
||||
### Tasks
|
||||
|
||||
[Tasks will be created as child issues of this story. Link them here when created]
|
||||
|
||||
- Link to Task 1
|
||||
- Link to Task 2
|
||||
- [Tasks will be linked as children when created]
|
||||
|
||||
---
|
||||
|
||||
**Parent:** [Link to Epic Issue]
|
||||
**Children:** [Task Issues will be linked here]
|
||||
|
||||
---
|
||||
|
||||
## Examples
|
||||
|
||||
### Example 1: Campaign Filtering
|
||||
|
||||
**As a** marketing manager,
|
||||
**I want** to filter campaigns by date range,
|
||||
**So that** I can analyze performance for specific time periods.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
|
||||
- [ ] Date picker UI allows selection of start date and end date
|
||||
- [ ] Only campaigns with activity within the selected date range are displayed
|
||||
- [ ] If end date is before start date, system shows validation error
|
||||
- [ ] "Clear filters" button returns to showing all campaigns
|
||||
- [ ] Selected date range is preserved when navigating away and returning
|
||||
|
||||
**Notes:**
|
||||
- Use native browser date pickers for best UX
|
||||
- Default to "last 30 days" on initial page load
|
||||
|
||||
---
|
||||
|
||||
### Example 2: Password Reset
|
||||
|
||||
**As a** user who forgot my password,
|
||||
**I want** to receive a password reset link via email,
|
||||
**So that** I can regain access to my account.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
|
||||
- **Given** I click "Forgot Password" on the login page
|
||||
**When** I enter my email address and submit
|
||||
**Then** I receive an email with a reset link within 2 minutes
|
||||
|
||||
- **Given** I click the reset link in the email
|
||||
**When** the link is less than 1 hour old
|
||||
**Then** I'm taken to a page to set a new password
|
||||
|
||||
- **Given** I enter a new password meeting requirements (8+ chars, etc.)
|
||||
**When** I submit the new password
|
||||
**Then** my password is updated and I'm redirected to login
|
||||
|
||||
- **Given** I click a reset link
|
||||
**When** the link is more than 1 hour old
|
||||
**Then** I see an error message saying the link expired
|
||||
|
||||
**Assumptions:**
|
||||
- User email must already exist in system
|
||||
- Reset links expire after 1 hour for security
|
||||
|
||||
**Out of Scope:**
|
||||
- Multi-factor authentication (separate story)
|
||||
- Account recovery without email access (separate story)
|
||||
|
||||
---
|
||||
|
||||
### Example 3: File Upload
|
||||
|
||||
**As a** content creator,
|
||||
**I want** to upload image files to my media library,
|
||||
**So that** I can use them in my posts and campaigns.
|
||||
|
||||
**Acceptance Criteria:**
|
||||
|
||||
- [ ] "Upload" button is clearly visible in media library
|
||||
- [ ] Clicking "Upload" opens file browser allowing image selection
|
||||
- [ ] Supported formats: JPG, PNG, GIF, WebP (max 10MB per file)
|
||||
- [ ] Upload progress indicator shows during upload
|
||||
- [ ] On success, uploaded image appears in media library immediately
|
||||
- [ ] On failure (wrong format, too large), clear error message is shown
|
||||
- [ ] Multiple files can be selected and uploaded at once
|
||||
|
||||
**Technical Notes:**
|
||||
- Images should be automatically resized/optimized on server
|
||||
- Store originals and generate thumbnails
|
||||
|
||||
---
|
||||
|
||||
## INVEST Check
|
||||
|
||||
Before finalizing a story, verify it meets INVEST criteria:
|
||||
|
||||
- [ ] **Independent**: Can be completed without depending on other stories
|
||||
- [ ] **Negotiable**: Details are discussable, not fixed implementation
|
||||
- [ ] **Valuable**: Delivers clear value to users or stakeholders
|
||||
- [ ] **Estimable**: Team can reasonably estimate size/effort
|
||||
- [ ] **Small**: Fits within a single iteration (1-5 days)
|
||||
- [ ] **Testable**: Has clear acceptance criteria that can be verified
|
||||
|
||||
If any criteria aren't met, refine the story before committing to it.
|
||||
Reference in New Issue
Block a user