User Stories
User Stories capture requirements from the user's perspective. Each story describes a feature or capability in terms of who needs it, what they need, and why they need it. Stories organize into epics, link to implementing tasks, and track acceptance criteria for completion.
The Problem This Solves
Tasks alone lack context. "Build login form" does not explain who uses it or what success looks like. Without user-centered requirements, developers make assumptions, stakeholders get surprises, and products miss the mark.
User Stories bridge the gap between product vision and implementation. They ensure everyone understands not just what to build, but who it serves and what outcome it enables. Tasks become implementations of clearly understood user needs.
What You Are Looking At
The User Story view displays when you navigate to a specific story from your project. The interface uses a tabbed layout with four primary views: Board, Team, Analytics, and Details.
Each story shows its code identifier, title, and key metadata. The tabs provide different perspectives: the board shows implementing tasks, team shows assigned members, analytics tracks progress, and details show full story information.
User Story Tabs
Board Tab
The Board tab shows a filtered Kanban board displaying only tasks linked to this user story. All standard Kanban features work here: drag and drop, task cards, column management.
This view answers: "What tasks implement this story and what is their status?"
Use the Board tab to understand implementation progress and manage work related to this specific feature.
Team Tab
The Team tab displays all team members who have tasks assigned within this user story. Each member appears as a card with their avatar, name, and role.
This view answers: "Who is working on this feature?"
The team roster builds automatically from task assignments within the story. When someone has tasks linked to this story, they appear here.
Use the Team tab to identify subject matter experts for the feature or coordinate with assigned developers.
Analytics Tab
The Analytics tab provides visual charts analyzing progress on this user story. Visualizations show task completion, effort distribution, and timeline patterns.
This view answers: "How is implementation progressing?" and "Are we on track to complete this story?"
Use Analytics during sprint reviews or when assessing whether a story is ready for release.
Note: Analytics is a Pro feature.
Details Tab
The Details tab shows comprehensive story metadata and allows editing story properties:
Story Title: Editable inline. Click the title text to modify. User story titles typically follow the format "As a [user type], I want [action] so that [benefit]."
Code: The unique identifier for this story (like US-123). Automatically assigned at creation.
Creation Info: When the story was created and by whom.
Priority: The importance level of this story relative to others. Helps with backlog ordering.
Epic: The larger initiative this story belongs to. Epics group related stories for easier management.
Progress: Visual progress bar showing completed tasks versus total tasks linked to the story.
Story Points: Effort estimate for the story as a whole, often used for velocity calculations.
Statistics Row:
- Tasks: Completed versus total task count
- Story Points: Total points assigned
- Worked Hours: Time logged against story tasks
- Comments: Discussion activity
Acceptance Criteria: The conditions that must be true for the story to be considered complete. See Acceptance Criteria for details.
Additional Information: Extended description or notes about the story.
Creating User Stories
To create a new user story:
- Navigate to your project's user stories list
- Click the "Create User Story" button
- Enter the story title (following the "As a... I want... So that..." format)
- Set priority and epic if applicable
- Add acceptance criteria
- Save the story
See Create User Story for detailed creation instructions.
User Story Format
The classic user story format captures three essential elements:
"As a [user type], I want [action/goal] so that [benefit/reason]."
Examples:
- "As a new user, I want to reset my password so that I can regain access to my account"
- "As a team lead, I want to see team velocity so that I can plan sprint capacity"
- "As a client, I want to receive invoice notifications so that I never miss payment deadlines"
This format ensures stories remain user-centered and outcome-focused rather than implementation-focused.
Acceptance Criteria
Acceptance criteria define when a user story is complete. They establish testable conditions that must be satisfied:
Good acceptance criteria:
- Specific and testable
- Written from user perspective
- Cover main scenarios and edge cases
- Independent of implementation details
Example:
Given a user on the login page
When they click "Forgot Password"
Then they should see the password reset form
Given a valid email is submitted
When the reset link is sent
Then the user receives it within 30 seconds
Given an invalid email is submitted
When the form is processed
Then an appropriate error message appearsSee Acceptance Criteria for detailed documentation.
Epics and Organization
Epics are large initiatives that group multiple user stories. Use epics to organize related functionality:
- Feature areas: "User Authentication" epic containing login, registration, password reset stories
- Releases: "v2.0 Release" epic grouping all stories planned for that version
- Themes: "Mobile Experience" epic for mobile-related improvements
Assign stories to epics through the epic selector in story details. This enables:
- Filtering by epic in story lists
- Tracking epic-level progress
- Reporting on feature area completion
Linking Tasks to User Stories
Tasks implement user stories. Each task can link to a user story, establishing traceability between work and requirements.
Methods to link tasks:
- During task creation: Select the user story in the task creation modal
- From task detail: Add user story association in the task sidebar
- From story board: Create tasks directly from the story's board view
Linked tasks appear on the story's Board tab and contribute to progress calculations.
Priority Management
User story priorities help order the backlog:
Priority levels may include:
- Critical: Must have for release
- High: Important for core functionality
- Medium: Valuable but not blocking
- Low: Nice to have, can defer
Set priority through the priority selector in story details. Use priority to:
- Order backlog for grooming sessions
- Identify what to implement first
- Communicate importance to stakeholders
Story Points
Story points estimate relative effort:
- Fibonacci sequence: 1, 2, 3, 5, 8, 13 (common pattern)
- Relative sizing: Compare stories to each other, not to absolute time
- Team consensus: Points reflect team agreement, not individual estimates
Story points enable:
- Velocity tracking (points completed per sprint)
- Capacity planning (how many points fit in a sprint)
- Progress forecasting (when will the backlog complete)
Assign points in story details or during team estimation sessions.
Voting and Estimation
Some teams use voting features to collaboratively estimate stories:
- Facilitator presents the story
- Team members vote on point estimates
- Discussion resolves discrepancies
- Final estimate is recorded
This process surfaces different perspectives and builds shared understanding of story complexity.
User Story Workflow
A typical user story lifecycle:
- Draft: Story identified but not fully defined
- Ready: Story has clear acceptance criteria and is estimable
- In Progress: Tasks are being worked
- Review: Implementation complete, awaiting verification
- Done: Acceptance criteria verified, story closed
Track status through story fields or through linked task progress.
Pro Tips
- Story splitting: Large stories should be split into smaller, independently deliverable pieces. If a story cannot be completed in one sprint, it is too big.
- Acceptance criteria first: Write acceptance criteria before implementation begins. They guide development and define done.
- Regular grooming: Review and refine the story backlog regularly. Keep the top of the backlog detailed and ready; allow more ambiguity further down.
- User validation: Whenever possible, validate stories with actual users. A story is not done when code is complete; it is done when users successfully accomplish their goal.
Permissions
User story permissions vary by role:
- Agency Owners and Managers: Full access to create, edit, delete, and manage stories
- Developers: Can view stories, link tasks, update progress
- Clients: View access when enabled, may participate in voting
How to Report a Problem or Request a Feature
Your feedback matters. Here is how to share it:
If user story management could work better for your workflow, we want to hear about it.
In the Sidebar, click on Support Tickets and open a ticket for the problem. Everything is interactive and fast through the GitScrum Studio platform.
Acceptance Criteria
Acceptance criteria define the conditions that must be met for a user story to be considered complete. They transform vague requirements into testable specifications, eliminating ambiguity and preventing scope creep.
Purpose
Acceptance criteria serve multiple roles:
For developers: Clear requirements before coding starts For testers: Exact conditions to verify For stakeholders: Transparent definition of deliverables For product owners: Scope boundary enforcement
Without acceptance criteria, "done" becomes subjective. With them, completion is binary—all criteria pass or work continues.
Accessing the Editor
Open acceptance criteria from the user story details:
- Navigate to any user story
- Click the Details tab
- Find Acceptance Criteria section
- Click the Edit button (pencil icon)
The editor opens in a modal with rich text formatting options.
Editor Features
Formatting Toolbar
The acceptance criteria editor supports:
| Tool | Purpose | Example Use |
|---|---|---|
| Bold | Emphasize key terms | Required: User must be authenticated |
| Italic | Technical terms, notes | Data saved asynchronously |
| Underline | Critical warnings | Must not delete without confirmation |
| Header 1 | Major sections | # Functional Requirements |
| Header 2 | Subsections | ## Input Validation |
| Ordered list | Sequential steps | 1. Click Submit 2. See confirmation |
| Bullet list | Non-sequential items | • Chrome • Firefox • Safari |
| Code block | Technical specs | status: 200 |
| Horizontal rule | Section dividers | --- |
Rich Text Support
The editor preserves formatting when pasting from:
- Google Docs
- Confluence
- Notion
- Microsoft Word
Paste formatted content directly—structure transfers automatically.
Writing Effective Criteria
The Given-When-Then Format
This structure creates unambiguous, testable conditions:
Given [precondition]
When [action]
Then [expected result]Example:
Given I am logged in as an administrator
When I click "Delete User" and confirm the dialog
Then the user is removed from the system
And I see a success notification
And the user no longer appears in the user listChecklist Format
For simpler validations, use checkboxes:
- [ ] Form validates email format
- [ ] Password requires 8+ characters
- [ ] Submit button disabled until form valid
- [ ] Error messages display below invalid fields
- [ ] Success redirects to dashboardSpecification by Example
Show exact expected behavior:
Input: "john@example.com"
Expected: Valid, proceed to next step
Input: "john@"
Expected: Error "Invalid email format"
Input: ""
Expected: Error "Email is required"Criteria Categories
Functional Criteria
What the feature must do:
Given a user with items in cart
When they click "Checkout"
Then they see the payment form
And cart total displays correctly
And shipping options are calculatedNon-Functional Criteria
How the feature must perform:
Performance:
- Page loads within 2 seconds
- Search returns results within 500ms
- Supports 100 concurrent users
Accessibility:
- All form fields have labels
- Tab navigation works correctly
- Screen reader compatibleEdge Cases
Boundary conditions and error states:
Edge cases handled:
- Empty search returns helpful message
- Network timeout shows retry option
- Session expiry redirects to login
- Invalid data shows specific errorsSecurity Criteria
Protection requirements:
Security requirements:
- Passwords hashed before storage
- Session expires after 30 min inactivity
- Failed logins limited to 5 attempts
- Sensitive data not loggedAnti-Patterns to Avoid
Too Vague
❌ Bad:
- Should work correctly
- Must be fast
- Needs to handle errors✅ Good:
- Returns 200 status on valid input
- Responds within 500ms under normal load
- Shows "Network error, please retry" on timeoutToo Technical
❌ Bad (unless team is all developers):
- Uses Redis pub/sub for real-time updates
- Implements optimistic locking with ETag
- Deploys via Kubernetes rolling update✅ Good:
- Changes appear for all users within 3 seconds
- Simultaneous edits show conflict warning
- Deployment causes zero downtimeTesting the Implementation
❌ Bad:
- Uses React hooks correctly
- Database queries are optimized
- Code follows style guide✅ Good:
- Component re-renders only when data changes
- List loads within 1 second for 10,000 items
- Consistent with existing UI patternsScope Creep
❌ Bad (adds work not in story):
- Also add dark mode support
- Include export to PDF option
- Add keyboard shortcuts✅ Good (stick to story scope):
- Dashboard displays all widgets
- Widgets load user's saved configuration
- Layout persists across sessionsIntegration with Workflow
During Planning
- Story creation: Draft initial criteria
- Refinement: Team discusses, adds edge cases
- Estimation: Criteria inform story point assignment
- Sprint planning: Criteria verify story is ready
During Development
- Reference: Developer checks criteria while coding
- Self-test: Developer verifies each criterion before PR
- Code review: Reviewer checks criteria coverage
During Testing
- Test case creation: Each criterion becomes test case
- Verification: Tester validates all criteria
- Bug reports: Reference specific failed criteria
During Demo
- Walkthrough: Show each criterion being met
- Sign-off: Stakeholder confirms acceptance
Keyboard Shortcuts
In the acceptance criteria editor:
| Action | Shortcut |
|---|---|
| Bold | Cmd/Ctrl + B |
| Italic | Cmd/Ctrl + I |
| Underline | Cmd/Ctrl + U |
| Save | Cmd/Ctrl + Enter |
| Cancel | Escape |
Best Practices
1. Write Criteria Before Development
Criteria written after coding tend to match implementation rather than requirements. Write first, code second.
2. Involve the Team
Developers spot technical gaps. Testers find edge cases. Include both perspectives when writing criteria.
3. Keep Criteria Atomic
Each criterion tests one thing:
❌ Combined:
User can log in with correct credentials and sees dashboard with their data✅ Atomic:
- Valid credentials grant access
- Invalid credentials show error
- Dashboard displays after login
- Dashboard shows user's data only4. Use Consistent Language
Establish team conventions:
- "User" vs "Customer" vs "Member"
- "Click" vs "Select" vs "Choose"
- "Display" vs "Show" vs "Render"
5. Include Negative Cases
What should NOT happen matters too:
- Password is never displayed in logs
- Deleted data cannot be recovered
- Expired session cannot access protected routes6. Version Control Criteria
When requirements change, update criteria and note why:
Updated 2024-01-15: Added 2FA requirement per security audit
Previous: Login requires email + password
Current: Login requires email + password + 2FA codeCommon Templates
CRUD Operations
Create:
- Valid input creates record
- Invalid input shows specific errors
- Duplicate prevention works
Read:
- Authorized users see data
- Unauthorized users see error
- Empty state shows helpful message
Update:
- Changes save correctly
- Validation applies to updates
- Concurrent edit handling works
Delete:
- Confirmation required
- Soft delete preserves data
- Hard delete removes completelyForm Validation
Field: Email
- Required (shows error when empty)
- Format validation (user@domain.com)
- Max length: 254 characters
- Unique check (shows error if exists)
Field: Password
- Required
- Minimum 8 characters
- At least one number
- At least one special character
- Strength indicator displaysAPI Endpoint
Endpoint: GET /api/users/{id}
Success (200):
- Returns user object
- Excludes sensitive fields (password, tokens)
- Response time < 200ms
Not Found (404):
- Returns standard error format
- Message: "User not found"
Unauthorized (401):
- Missing token returns error
- Expired token returns error
- Invalid token returns errorTroubleshooting
Formatting not saving:
- Check browser console for errors
- Try clearing browser cache
- Ensure stable network connection
Editor won't open:
- Verify
edituserstoriespermission - Check story isn't archived
- Refresh page and retry
Pasted content loses format:
- Try Paste and Match Style (
Cmd/Ctrl + Shift + V) - Use Markdown format for complex content
- Break into smaller paste operations
Changes not visible to team:
- Verify save completed (modal closed)
- Check for sync errors in activity feed
- Team members may need to refresh
Create User Story
User stories capture requirements from the end-user perspective. Each story follows the format: "As a [who], I want [what], so that [why]." This structure ensures every feature has clear purpose and measurable value.
Opening the Modal
Access the creation modal through multiple paths:
- Project header: Click "New" button in user stories section
- Keyboard shortcut:
Cmd/Ctrl + Shift + Ufrom anywhere in project - Empty state: Click "Create your first user story" link
- Quick create: Use global quick create menu and select "User Story"
The modal opens with your current project pre-selected. If you opened from the global menu, select workspace and project first.
Creation Modes
Traditional Mode
Write user stories in the standard format:
Template structure:
As a [type of user],
I want [some goal],
So that [some reason].Example:
As a project manager,
I want to see sprint burndown charts,
So that I can track team velocity.The traditional format ensures:
- Clear identification of the user persona
- Specific, actionable goal statement
- Business value justification
Writing effective stories:
- Be specific about the user. "As a user" is too vague. Use "As a billing administrator" or "As a first-time visitor"
- Focus on one goal. If you write "and" in the want clause, consider splitting into multiple stories
- State measurable value. "So that I can save time" is weak. "So that I can process 50% more invoices" is actionable
AI Mode
Describe what you need in natural language. The AI generates a properly formatted user story:
Input:
Need a way for managers to approve time entries before they go to billingGenerated story:
As a team manager,
I want to review and approve time entries before export,
So that billing accuracy improves and disputes decrease.AI mode excels when:
- Converting stakeholder requests into user story format
- Transforming bug reports into improvement stories
- Breaking down vague requirements into specific needs
Modal Fields
Title (Required)
In Traditional mode, this is your full user story text. In AI mode, this is your natural language description.
Character limit: 500 characters Best practice: Keep titles scannable. The first line should summarize the story.
Acceptance Criteria
Define what "done" means for this story. Use testable conditions:
Weak criteria:
- Should work properly
- Must be fast
- Needs to look goodStrong criteria:
- Time entries display in chronological order
- Manager can approve/reject individual entries
- Rejected entries return to submitter with required comment
- Approved entries marked with timestamp and approver name
- Page loads within 2 seconds for up to 500 entriesFormat options:
Given/When/Then:
Given I am a logged-in manager
When I view pending time entries
Then I see entries grouped by team memberChecklist style:
- [ ] Filter by date range works
- [ ] Bulk approve selected entries works
- [ ] Export approved entries to CSV worksAdditional Information
Context that helps during implementation:
- Links to design mockups
- Technical constraints
- Related documentation
- Stakeholder contacts
- Edge cases to consider
This field supports full Markdown formatting including links, code blocks, and images.
Priority
Set urgency level from your project's priority list:
| Priority | When to Use |
|---|---|
| Critical | Blocking other work, production issue |
| High | Sprint commitment, key stakeholder request |
| Medium | Important but not urgent |
| Low | Nice to have, future consideration |
Priority affects:
- Default sorting in backlog views
- Sprint planning suggestions
- Team workload calculations
Epic
Link the story to a parent epic for organization:
No Epic selected: Story appears in backlog without grouping Epic selected: Story groups under epic in roadmap and planning views
Create Epic inline: Click "Create new epic" to add an epic without leaving the modal. Enter title and save—the new epic is immediately selectable.
This is valuable when:
- A story reveals need for a new initiative
- Stakeholder requests a feature outside existing epics
- You're breaking down a large requirement into epic + stories
Form Validation
The create button enables when:
- Project selected: Required for all stories
- Title provided: Minimum 3 characters
- Mode-appropriate content: Either traditional format or AI description
Validation errors appear inline:
- Empty title: "Title is required"
- Title too short: "Minimum 3 characters"
- No project: "Select a project first"
After Creation
Success State
The modal confirms creation with options:
Go to User Stories: Navigate to the project's user story board Create Another: Clear form, stay in modal for batch creation
What Happens
- Story created with "Open" status
- Appears in backlog ready for sprint planning
- Linked to epic if selected
- Team notified via project activity feed
- Real-time sync across all team members' views
Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| Submit form | Cmd/Ctrl + Enter |
| Close modal | Escape |
| Switch to Traditional | Cmd/Ctrl + 1 |
| Switch to AI | Cmd/Ctrl + 2 |
Best Practices
Write Independently
Each story should be completable without dependencies:
Dependent (avoid):
As a user, I want to see the dashboard that was created in US-123Independent (preferred):
As a user, I want to see key metrics on my dashboardSize Appropriately
Stories should complete within one sprint. If larger:
- Break into multiple stories
- Use epic to group related stories
- Consider "As a user, I want [part 1]" pattern
Include Acceptance Criteria
Every story needs testable conditions. This is not optional—it's how your team knows when work is complete.
Time investment: 5 minutes writing criteria saves 2 hours of clarification questions later.
Connect to Epics
Orphan stories create planning chaos. Even "miscellaneous improvements" deserve an epic for grouping.
Common Patterns
Feature Story
As a [user type],
I want [capability],
So that [business value].Bug-to-Story Conversion
As a [affected user],
I want [broken thing] fixed,
So that [impact when fixed].Technical Story
As a developer,
I want [technical improvement],
So that [maintenance/performance benefit].Research Story
As a product manager,
I want to understand [unknown],
So that [future decisions].Troubleshooting
Modal won't open:
- Check project permissions (need
createuserstories) - Ensure project is selected in navigation
- Try page refresh
AI mode not generating:
- Provide more detail in description
- Include context about user type and goal
- Check network connection
Can't select epic:
- Epics load after project selection
- Create new epic if none exist
- Check epic isn't archived
Priority dropdown empty:
- Priorities come from project settings
- Admin can add priorities in Project Settings → Priorities