Initial commit
This commit is contained in:
343
skills/acceptance-criteria-generator/SKILL.md
Normal file
343
skills/acceptance-criteria-generator/SKILL.md
Normal file
@@ -0,0 +1,343 @@
|
||||
---
|
||||
name: acceptance-criteria-generator
|
||||
description: Creates testable acceptance criteria in Given/When/Then format for user stories
|
||||
allowed-tools: mcp__atlassian__*
|
||||
mcpServers:
|
||||
- atlassian
|
||||
---
|
||||
|
||||
# Acceptance Criteria Generator Skill
|
||||
|
||||
This skill generates comprehensive, testable acceptance criteria in Given/When/Then (Gherkin) format for user stories, ensuring clarity for both human reviewers and AI-assisted development.
|
||||
|
||||
## When This Skill is Invoked
|
||||
|
||||
Claude will automatically use this skill when you mention:
|
||||
- "generate acceptance criteria"
|
||||
- "create AC for story"
|
||||
- "write acceptance criteria"
|
||||
- "add Given/When/Then"
|
||||
- "make criteria testable"
|
||||
|
||||
## Capabilities
|
||||
|
||||
### 1. AC Structure Generation
|
||||
Generate acceptance criteria in standard Gherkin format:
|
||||
|
||||
```gherkin
|
||||
Scenario: [Descriptive scenario name]
|
||||
Given [precondition/initial state]
|
||||
When [action/trigger]
|
||||
Then [expected outcome]
|
||||
And [additional outcome]
|
||||
```
|
||||
|
||||
### 2. Coverage Categories
|
||||
Ensure comprehensive test coverage:
|
||||
|
||||
| Category | Description | Example |
|
||||
|----------|-------------|---------|
|
||||
| Happy Path | Normal successful flow | User completes checkout successfully |
|
||||
| Edge Cases | Boundary conditions | Empty cart, max items |
|
||||
| Error Handling | Failure scenarios | Invalid input, timeout |
|
||||
| Security | Auth/authorization | Unauthorized access attempt |
|
||||
| Performance | Non-functional | Response under 2 seconds |
|
||||
|
||||
## How to Use This Skill
|
||||
|
||||
### Step 1: Analyze Story Content
|
||||
|
||||
**Extract testable requirements from story:**
|
||||
```
|
||||
Story: As a user, I want to export my dashboard to PDF
|
||||
|
||||
Key Requirements:
|
||||
1. User can trigger export
|
||||
2. PDF contains dashboard data
|
||||
3. Download happens within reasonable time
|
||||
4. Error handling for failures
|
||||
```
|
||||
|
||||
### Step 2: Generate Happy Path Scenarios
|
||||
|
||||
**Start with the primary success scenario:**
|
||||
|
||||
```gherkin
|
||||
Scenario: Successful dashboard export to PDF
|
||||
Given I am logged in as a dashboard user
|
||||
And I am viewing my dashboard with data
|
||||
When I click the "Export to PDF" button
|
||||
Then a PDF file should download to my device
|
||||
And the PDF should contain the dashboard title
|
||||
And the PDF should contain all visible widgets
|
||||
And the PDF should include the current date range
|
||||
```
|
||||
|
||||
### Step 3: Generate Edge Case Scenarios
|
||||
|
||||
**Cover boundary conditions:**
|
||||
|
||||
```gherkin
|
||||
Scenario: Export empty dashboard
|
||||
Given I am logged in as a dashboard user
|
||||
And my dashboard has no data for the selected period
|
||||
When I click the "Export to PDF" button
|
||||
Then a PDF file should download
|
||||
And the PDF should display "No data available for selected period"
|
||||
|
||||
Scenario: Export dashboard at maximum data size
|
||||
Given I am logged in as a dashboard user
|
||||
And my dashboard contains the maximum allowed data points
|
||||
When I click the "Export to PDF" button
|
||||
Then a PDF file should download within 30 seconds
|
||||
And the PDF should contain all data points
|
||||
|
||||
Scenario: Export with special characters in title
|
||||
Given I am logged in as a dashboard user
|
||||
And my dashboard title contains special characters "&<>/"
|
||||
When I click the "Export to PDF" button
|
||||
Then the PDF filename should sanitize special characters
|
||||
And the PDF title should display correctly
|
||||
```
|
||||
|
||||
### Step 4: Generate Error Handling Scenarios
|
||||
|
||||
**Cover failure cases:**
|
||||
|
||||
```gherkin
|
||||
Scenario: Export fails due to network error
|
||||
Given I am logged in as a dashboard user
|
||||
And the network connection is unstable
|
||||
When I click the "Export to PDF" button
|
||||
And the export request fails
|
||||
Then I should see an error message "Export failed. Please try again."
|
||||
And I should be able to retry the export
|
||||
|
||||
Scenario: Export times out
|
||||
Given I am logged in as a dashboard user
|
||||
And the server is responding slowly
|
||||
When I click the "Export to PDF" button
|
||||
And the export takes longer than 60 seconds
|
||||
Then I should see a message "Export is taking longer than expected"
|
||||
And I should have the option to cancel or continue waiting
|
||||
|
||||
Scenario: Export fails due to insufficient permissions
|
||||
Given I am logged in as a guest user
|
||||
And guest users do not have export permissions
|
||||
When I click the "Export to PDF" button
|
||||
Then I should see a message "You don't have permission to export"
|
||||
And the export should not proceed
|
||||
```
|
||||
|
||||
### Step 5: Generate Security Scenarios (if applicable)
|
||||
|
||||
**Cover security requirements:**
|
||||
|
||||
```gherkin
|
||||
Scenario: Export requires authentication
|
||||
Given I am not logged in
|
||||
When I attempt to access the export endpoint directly
|
||||
Then I should be redirected to the login page
|
||||
And the export should not proceed
|
||||
|
||||
Scenario: User cannot export another user's dashboard
|
||||
Given I am logged in as user A
|
||||
And I attempt to export user B's dashboard
|
||||
When I trigger the export
|
||||
Then I should see a "Permission denied" error
|
||||
And no PDF should be generated
|
||||
```
|
||||
|
||||
### Step 6: Generate Performance Scenarios (if applicable)
|
||||
|
||||
**Cover non-functional requirements:**
|
||||
|
||||
```gherkin
|
||||
Scenario: Export completes within acceptable time
|
||||
Given I am logged in as a dashboard user
|
||||
And my dashboard has typical data volume (500 data points)
|
||||
When I click the "Export to PDF" button
|
||||
Then the export should complete within 5 seconds
|
||||
And the progress indicator should be accurate
|
||||
|
||||
Scenario: Large export shows progress
|
||||
Given I am logged in as a dashboard user
|
||||
And my dashboard has large data volume (5000+ data points)
|
||||
When I click the "Export to PDF" button
|
||||
Then I should see a progress indicator
|
||||
And the progress should update at least every 5 seconds
|
||||
```
|
||||
|
||||
### Step 7: Validate AC Quality
|
||||
|
||||
**Checklist for good acceptance criteria:**
|
||||
|
||||
- [ ] **Specific:** No ambiguous terms ("should work well")
|
||||
- [ ] **Measurable:** Can verify pass/fail objectively
|
||||
- [ ] **Testable:** Can be automated or manually verified
|
||||
- [ ] **Complete:** Covers happy path, edge cases, errors
|
||||
- [ ] **Independent:** Each scenario is self-contained
|
||||
- [ ] **Atomic:** One behavior per Then statement
|
||||
|
||||
**Quality Score:**
|
||||
- 6/6: Excellent - Ready for development
|
||||
- 4-5/6: Good - Minor improvements needed
|
||||
- 2-3/6: Fair - Needs refinement
|
||||
- 0-1/6: Poor - Requires rewrite
|
||||
|
||||
## Output Format
|
||||
|
||||
Always structure skill output as:
|
||||
|
||||
```markdown
|
||||
# Acceptance Criteria for: [Story Title]
|
||||
|
||||
## Happy Path Scenarios
|
||||
|
||||
### Scenario 1: [Primary success case]
|
||||
```gherkin
|
||||
Given [precondition]
|
||||
When [action]
|
||||
Then [outcome]
|
||||
```
|
||||
|
||||
### Scenario 2: [Secondary success case]
|
||||
...
|
||||
|
||||
## Edge Case Scenarios
|
||||
|
||||
### Scenario 3: [Edge case 1]
|
||||
...
|
||||
|
||||
## Error Handling Scenarios
|
||||
|
||||
### Scenario 4: [Error case 1]
|
||||
...
|
||||
|
||||
## Security Scenarios (if applicable)
|
||||
|
||||
### Scenario 5: [Security case 1]
|
||||
...
|
||||
|
||||
## Performance Scenarios (if applicable)
|
||||
|
||||
### Scenario 6: [Performance case 1]
|
||||
...
|
||||
|
||||
---
|
||||
|
||||
## Quality Assessment
|
||||
- **Total Scenarios:** X
|
||||
- **Coverage Score:** X/6 categories covered
|
||||
- **Testability Score:** X/6 quality criteria met
|
||||
|
||||
## Recommendations
|
||||
- [Any suggestions for additional scenarios]
|
||||
```
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### CRUD Operations
|
||||
```gherkin
|
||||
# Create
|
||||
Scenario: Successfully create [entity]
|
||||
Given I am an authorized user
|
||||
When I submit valid [entity] data
|
||||
Then the [entity] should be created
|
||||
And I should see a success confirmation
|
||||
|
||||
# Read
|
||||
Scenario: View [entity] details
|
||||
Given an [entity] exists with ID "123"
|
||||
When I navigate to the [entity] detail page
|
||||
Then I should see all [entity] information
|
||||
|
||||
# Update
|
||||
Scenario: Update [entity] successfully
|
||||
Given an [entity] exists
|
||||
And I have edit permissions
|
||||
When I modify the [entity] data
|
||||
And I save changes
|
||||
Then the changes should be persisted
|
||||
And I should see an update confirmation
|
||||
|
||||
# Delete
|
||||
Scenario: Delete [entity] with confirmation
|
||||
Given an [entity] exists
|
||||
And I have delete permissions
|
||||
When I click delete
|
||||
Then I should see a confirmation dialog
|
||||
When I confirm deletion
|
||||
Then the [entity] should be removed
|
||||
```
|
||||
|
||||
### Form Validation
|
||||
```gherkin
|
||||
Scenario: Submit form with missing required field
|
||||
Given I am on the [form] page
|
||||
And I have not filled in the required [field] field
|
||||
When I click submit
|
||||
Then I should see a validation error for [field]
|
||||
And the form should not be submitted
|
||||
|
||||
Scenario: Submit form with invalid format
|
||||
Given I am on the [form] page
|
||||
And I enter "[invalid value]" in the [field] field
|
||||
When I click submit
|
||||
Then I should see "[field] format is invalid"
|
||||
And the form should not be submitted
|
||||
```
|
||||
|
||||
### API Endpoints
|
||||
```gherkin
|
||||
Scenario: API returns success response
|
||||
Given I have a valid API token
|
||||
When I send a GET request to /api/[endpoint]
|
||||
Then the response status should be 200
|
||||
And the response body should contain [expected data]
|
||||
|
||||
Scenario: API returns 401 for invalid token
|
||||
Given I have an invalid API token
|
||||
When I send a GET request to /api/[endpoint]
|
||||
Then the response status should be 401
|
||||
And the response body should contain "Unauthorized"
|
||||
```
|
||||
|
||||
## Error Handling
|
||||
|
||||
### Incomplete Story
|
||||
```markdown
|
||||
**Warning:** Story lacks sufficient detail for comprehensive AC.
|
||||
|
||||
**Missing Information:**
|
||||
- [What's missing]
|
||||
|
||||
**Generated AC:** Partial (happy path only)
|
||||
|
||||
**Recommendation:** Add more context to story for edge case and error scenarios.
|
||||
```
|
||||
|
||||
### Ambiguous Requirements
|
||||
```markdown
|
||||
**Warning:** Requirements are ambiguous.
|
||||
|
||||
**Ambiguous Terms:**
|
||||
- "[term]" - could mean [interpretation 1] or [interpretation 2]
|
||||
|
||||
**Assumptions Made:**
|
||||
- Interpreted "[term]" as [chosen interpretation]
|
||||
|
||||
**Recommendation:** Clarify with stakeholders.
|
||||
```
|
||||
|
||||
## Integration with Other Skills
|
||||
|
||||
This skill works with:
|
||||
- **story-creator**: Receives story to generate AC for
|
||||
- **dor-validator**: Validates AC meets DoR requirements
|
||||
- **ac-verifier**: Verifies code meets AC during review
|
||||
- **test-generator**: Uses AC to generate test cases
|
||||
|
||||
---
|
||||
|
||||
When invoked, this skill will analyze the story content and generate comprehensive, testable acceptance criteria suitable for TDD development and automated testing.
|
||||
Reference in New Issue
Block a user