Initial commit
This commit is contained in:
216
skills/agileflow-acceptance-criteria/SKILL.md
Normal file
216
skills/agileflow-acceptance-criteria/SKILL.md
Normal file
@@ -0,0 +1,216 @@
|
||||
---
|
||||
name: agileflow-acceptance-criteria
|
||||
description: Generates detailed Given/When/Then acceptance criteria when user describes feature behavior or requirements. Enhances user stories with testable scenarios.
|
||||
allowed-tools: Read, Write, Edit
|
||||
---
|
||||
|
||||
# AgileFlow Acceptance Criteria
|
||||
|
||||
## Purpose
|
||||
|
||||
This skill automatically generates detailed, testable acceptance criteria in Given/When/Then (Gherkin) format from feature discussions and requirements.
|
||||
|
||||
## When This Skill Activates
|
||||
|
||||
Load this skill when:
|
||||
- User describes how a feature should behave
|
||||
- Discussing user workflows or interactions
|
||||
- User mentions "acceptance criteria", "test scenarios", "should work like"
|
||||
- Creating or reviewing user stories
|
||||
- User describes "when user does X, then Y should happen"
|
||||
|
||||
## Given/When/Then Format
|
||||
|
||||
```markdown
|
||||
### AC#: [Criterion Name]
|
||||
**Given** [initial context or precondition]
|
||||
**When** [user action or trigger event]
|
||||
**Then** [expected outcome or system behavior]
|
||||
```
|
||||
|
||||
## Components
|
||||
|
||||
### Given (Precondition)
|
||||
The initial state before the action:
|
||||
- User's current state
|
||||
- System state
|
||||
- Data that exists
|
||||
- Permissions/roles
|
||||
|
||||
Examples:
|
||||
- "Given I am logged in as an admin"
|
||||
- "Given the shopping cart contains 3 items"
|
||||
- "Given I am on the product details page"
|
||||
- "Given dark mode is enabled"
|
||||
|
||||
### When (Action)
|
||||
The trigger or user action:
|
||||
- What the user does
|
||||
- Event that occurs
|
||||
- API call made
|
||||
|
||||
Examples:
|
||||
- "When I click the 'Add to Cart' button"
|
||||
- "When I submit the form"
|
||||
- "When a new message arrives"
|
||||
- "When the payment fails"
|
||||
|
||||
### Then (Outcome)
|
||||
The expected result:
|
||||
- What the user sees
|
||||
- System state changes
|
||||
- Data modifications
|
||||
- Error messages
|
||||
- Notifications
|
||||
|
||||
Examples:
|
||||
- "Then the item is added to my cart"
|
||||
- "Then I see a success message"
|
||||
- "Then I am redirected to the dashboard"
|
||||
- "Then an error message is displayed"
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Listen for behavior descriptions**: User explains "when X happens, Y should occur"
|
||||
|
||||
2. **Extract scenarios**:
|
||||
- Identify different paths (happy path, error cases, edge cases)
|
||||
- Note preconditions for each scenario
|
||||
- Capture expected outcomes
|
||||
|
||||
3. **Generate criteria**:
|
||||
- Create one AC per distinct scenario
|
||||
- Use clear, unambiguous language
|
||||
- Make it testable (observable outcome)
|
||||
- Include edge cases
|
||||
|
||||
4. **Add to story**: If working on a user story, enhance its AC section
|
||||
|
||||
## Types of Acceptance Criteria
|
||||
|
||||
### Happy Path
|
||||
```markdown
|
||||
### AC1: Successful Login
|
||||
**Given** I am on the login page
|
||||
**When** I enter valid credentials and click "Login"
|
||||
**Then** I am redirected to my dashboard
|
||||
**And** I see a welcome message with my name
|
||||
```
|
||||
|
||||
### Error Handling
|
||||
```markdown
|
||||
### AC2: Invalid Password
|
||||
**Given** I am on the login page
|
||||
**When** I enter a valid email but incorrect password
|
||||
**Then** I see an error message "Invalid credentials"
|
||||
**And** I remain on the login page
|
||||
**And** the password field is cleared
|
||||
```
|
||||
|
||||
### Edge Cases
|
||||
```markdown
|
||||
### AC3: Account Locked After Failed Attempts
|
||||
**Given** I have failed to login 4 times
|
||||
**When** I attempt to login with incorrect password again
|
||||
**Then** my account is locked for 30 minutes
|
||||
**And** I see a message "Account locked. Try again in 30 minutes"
|
||||
**And** an email is sent to my registered address
|
||||
```
|
||||
|
||||
### Permission-Based
|
||||
```markdown
|
||||
### AC4: Admin-Only Feature Access
|
||||
**Given** I am logged in as a regular user
|
||||
**When** I try to access the admin dashboard
|
||||
**Then** I see a 403 Forbidden error
|
||||
**And** I am redirected to my user dashboard
|
||||
```
|
||||
|
||||
## Quality Checklist
|
||||
|
||||
Good acceptance criteria are:
|
||||
- [ ] **Specific**: Clearly describes one scenario
|
||||
- [ ] **Testable**: Can be verified with a test
|
||||
- [ ] **Independent**: Doesn't depend on order of execution
|
||||
- [ ] **Unambiguous**: Only one interpretation possible
|
||||
- [ ] **Complete**: Covers happy path, errors, and edge cases
|
||||
- [ ] **User-focused**: Written from user's perspective
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### Form Validation
|
||||
```markdown
|
||||
### AC1: Email Format Validation
|
||||
**Given** I am filling out the registration form
|
||||
**When** I enter an invalid email format (missing @)
|
||||
**Then** I see an error "Please enter a valid email address"
|
||||
**And** the submit button remains disabled
|
||||
```
|
||||
|
||||
### State Transitions
|
||||
```markdown
|
||||
### AC2: Order Status Change
|
||||
**Given** my order status is "Processing"
|
||||
**When** the warehouse marks it as shipped
|
||||
**Then** I see the status update to "Shipped"
|
||||
**And** I receive an email with tracking information
|
||||
```
|
||||
|
||||
### Permissions
|
||||
```markdown
|
||||
### AC3: File Edit Permission
|
||||
**Given** I have "view-only" access to a document
|
||||
**When** I try to edit the document
|
||||
**Then** the edit button is disabled
|
||||
**And** I see a tooltip "You need edit permissions"
|
||||
```
|
||||
|
||||
### Responsive Behavior
|
||||
```markdown
|
||||
### AC4: Mobile Menu Toggle
|
||||
**Given** I am viewing the site on a mobile device (width < 768px)
|
||||
**When** I tap the menu icon
|
||||
**Then** the navigation menu slides in from the left
|
||||
**And** I can navigate to any section
|
||||
```
|
||||
|
||||
## Integration with Other Skills
|
||||
|
||||
- **agileflow-story-writer**: Automatically enhances story AC sections
|
||||
- **agileflow-sprint-planner**: Helps estimate story complexity from AC count
|
||||
- **agileflow-tech-debt**: Identifies missing test coverage from AC
|
||||
|
||||
## Multiple Conditions (And/But)
|
||||
|
||||
Use **And** for additional conditions:
|
||||
```markdown
|
||||
**Given** I am logged in
|
||||
**And** I have items in my cart
|
||||
**When** I click "Checkout"
|
||||
**Then** I am redirected to payment page
|
||||
**And** I see my cart summary
|
||||
**And** I see available payment methods
|
||||
```
|
||||
|
||||
Use **But** for contrasting outcomes:
|
||||
```markdown
|
||||
**Given** I am on the search page
|
||||
**When** I search for "nonexistent product"
|
||||
**Then** I see "No results found" message
|
||||
**But** I see suggested categories
|
||||
**But** the search stays visible for retry
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
See `examples/` directory for comprehensive AC sets across different feature types.
|
||||
|
||||
## Notes
|
||||
|
||||
- Aim for 3-7 acceptance criteria per story
|
||||
- Too few = incomplete requirements
|
||||
- Too many = story should be split
|
||||
- Cover at least one error case per story
|
||||
- Include accessibility criteria when relevant
|
||||
- Consider mobile vs desktop differences
|
||||
- Think about internationalization if applicable
|
||||
Reference in New Issue
Block a user