@arvorco/relentless 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/analyze/SKILL.md +149 -0
- package/.claude/skills/checklist/SKILL.md +173 -0
- package/.claude/skills/checklist/templates/checklist-template.md +40 -0
- package/.claude/skills/clarify/SKILL.md +174 -0
- package/.claude/skills/constitution/SKILL.md +150 -0
- package/.claude/skills/constitution/templates/constitution-template.md +228 -0
- package/.claude/skills/implement/SKILL.md +141 -0
- package/.claude/skills/plan/SKILL.md +179 -0
- package/.claude/skills/plan/templates/plan-template.md +104 -0
- package/.claude/skills/prd/SKILL.md +242 -0
- package/.claude/skills/relentless/SKILL.md +265 -0
- package/.claude/skills/specify/SKILL.md +220 -0
- package/.claude/skills/specify/templates/spec-template.md +115 -0
- package/.claude/skills/tasks/SKILL.md +202 -0
- package/.claude/skills/tasks/templates/tasks-template.md +251 -0
- package/.claude/skills/taskstoissues/SKILL.md +97 -0
- package/bin/relentless.ts +5 -1
- package/package.json +1 -1
- package/src/init/scaffolder.ts +44 -6
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specify
|
|
3
|
+
description: "Create feature specification from natural language description. Use when starting a new feature or creating a spec. Triggers on: create spec, specify feature, new feature spec."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Feature Specification Generator
|
|
7
|
+
|
|
8
|
+
Create structured feature specifications from natural language descriptions.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## The Job
|
|
13
|
+
|
|
14
|
+
1. Receive feature description from user
|
|
15
|
+
2. Generate short name and feature number
|
|
16
|
+
3. Create branch and feature directory in `relentless/features/NNN-feature-name/`
|
|
17
|
+
4. Generate specification using template
|
|
18
|
+
5. Validate specification quality
|
|
19
|
+
6. Save to `spec.md`
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Step 1: Create Feature Structure
|
|
24
|
+
|
|
25
|
+
Run the create-new-feature script to set up the branch and directory:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
.claude/skills/specify/scripts/bash/create-new-feature.sh --json "FEATURE_DESCRIPTION"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
This will output JSON with:
|
|
32
|
+
- `BRANCH_NAME`: e.g., "003-user-auth"
|
|
33
|
+
- `SPEC_FILE`: Full path to spec.md
|
|
34
|
+
- `FEATURE_DIR`: Full path to feature directory
|
|
35
|
+
- `FEATURE_NUM`: e.g., "003"
|
|
36
|
+
|
|
37
|
+
**Important:** Parse this JSON and use these paths for all subsequent operations.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Step 2: Load Constitution & Context
|
|
42
|
+
|
|
43
|
+
1. Read `relentless/constitution.md` for project governance
|
|
44
|
+
2. Note any MUST/SHOULD rules that apply to specifications
|
|
45
|
+
3. Keep these principles in mind while generating the spec
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Step 3: Generate Specification
|
|
50
|
+
|
|
51
|
+
Using the template at `templates/spec-template.md`, create a specification with:
|
|
52
|
+
|
|
53
|
+
### Required Sections:
|
|
54
|
+
|
|
55
|
+
**1. Feature Overview**
|
|
56
|
+
- One-paragraph summary
|
|
57
|
+
- User value proposition
|
|
58
|
+
- Problem being solved
|
|
59
|
+
|
|
60
|
+
**2. User Scenarios & Testing**
|
|
61
|
+
- Concrete user stories
|
|
62
|
+
- Step-by-step flows
|
|
63
|
+
- Expected outcomes
|
|
64
|
+
|
|
65
|
+
**3. Functional Requirements**
|
|
66
|
+
- What the system must do
|
|
67
|
+
- Testable requirements (no implementation details)
|
|
68
|
+
- Clear success criteria
|
|
69
|
+
|
|
70
|
+
**4. Success Criteria**
|
|
71
|
+
- Measurable, technology-agnostic outcomes
|
|
72
|
+
- Quantitative metrics (time, performance, volume)
|
|
73
|
+
- Qualitative measures (user satisfaction, task completion)
|
|
74
|
+
|
|
75
|
+
**5. Key Entities (if applicable)**
|
|
76
|
+
- Data models and relationships
|
|
77
|
+
- Fields and types (logical, not implementation)
|
|
78
|
+
|
|
79
|
+
**6. Dependencies & Assumptions**
|
|
80
|
+
- External systems required
|
|
81
|
+
- Prerequisites
|
|
82
|
+
- Assumptions made
|
|
83
|
+
|
|
84
|
+
**7. Out of Scope**
|
|
85
|
+
- What this feature explicitly does NOT include
|
|
86
|
+
- Future considerations
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Step 4: Handle Ambiguities
|
|
91
|
+
|
|
92
|
+
If aspects are unclear:
|
|
93
|
+
- Make informed guesses based on context
|
|
94
|
+
- Only mark `[NEEDS CLARIFICATION: specific question]` if:
|
|
95
|
+
- Choice significantly impacts scope or UX
|
|
96
|
+
- Multiple reasonable interpretations exist
|
|
97
|
+
- No reasonable default exists
|
|
98
|
+
- **LIMIT: Maximum 3 clarifications**
|
|
99
|
+
|
|
100
|
+
If clarifications needed, present to user:
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Clarification Needed
|
|
104
|
+
|
|
105
|
+
**Q1: [Topic]**
|
|
106
|
+
Context: [Quote spec section]
|
|
107
|
+
Question: [Specific question]
|
|
108
|
+
|
|
109
|
+
Options:
|
|
110
|
+
A. [Option 1] - [Implications]
|
|
111
|
+
B. [Option 2] - [Implications]
|
|
112
|
+
C. Custom - [Your answer]
|
|
113
|
+
|
|
114
|
+
Your choice: _
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Step 5: Validate Quality
|
|
120
|
+
|
|
121
|
+
Check the specification against:
|
|
122
|
+
|
|
123
|
+
- [ ] No implementation details (languages, frameworks, APIs)
|
|
124
|
+
- [ ] Focused on user value and business needs
|
|
125
|
+
- [ ] All requirements are testable
|
|
126
|
+
- [ ] Success criteria are measurable
|
|
127
|
+
- [ ] User scenarios cover primary flows
|
|
128
|
+
- [ ] Dependencies identified
|
|
129
|
+
- [ ] Scope clearly bounded
|
|
130
|
+
- [ ] No more than 3 `[NEEDS CLARIFICATION]` markers
|
|
131
|
+
|
|
132
|
+
If validation fails, revise and re-check (max 3 iterations).
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Step 6: Save & Report
|
|
137
|
+
|
|
138
|
+
1. Write complete specification to `SPEC_FILE` from JSON output
|
|
139
|
+
2. Create progress.txt if it doesn't exist:
|
|
140
|
+
```markdown
|
|
141
|
+
---
|
|
142
|
+
feature: FEATURE_NAME
|
|
143
|
+
started: DATE
|
|
144
|
+
last_updated: DATE
|
|
145
|
+
stories_completed: 0
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
# Progress Log: FEATURE_NAME
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
3. Report to user:
|
|
152
|
+
- Branch created: `BRANCH_NAME`
|
|
153
|
+
- Spec saved: `SPEC_FILE`
|
|
154
|
+
- Quality validation: PASSED/FAILED
|
|
155
|
+
- Next step: `/relentless.plan` or `/relentless.clarify`
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Example Output
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
# Feature: User Authentication
|
|
163
|
+
|
|
164
|
+
## Overview
|
|
165
|
+
Enable users to create accounts and log in securely using email/password.
|
|
166
|
+
|
|
167
|
+
## User Scenarios
|
|
168
|
+
|
|
169
|
+
### Scenario 1: New User Registration
|
|
170
|
+
1. User visits signup page
|
|
171
|
+
2. Enters email and password
|
|
172
|
+
3. Submits form
|
|
173
|
+
4. Receives confirmation email
|
|
174
|
+
5. Clicks confirmation link
|
|
175
|
+
6. Account is activated
|
|
176
|
+
|
|
177
|
+
**Expected Outcome:** User has active account and can log in.
|
|
178
|
+
|
|
179
|
+
## Functional Requirements
|
|
180
|
+
|
|
181
|
+
**REQ-1:** System must validate email format
|
|
182
|
+
**REQ-2:** System must require passwords ≥ 8 characters
|
|
183
|
+
**REQ-3:** System must send confirmation email within 1 minute
|
|
184
|
+
**REQ-4:** System must hash passwords before storage
|
|
185
|
+
|
|
186
|
+
## Success Criteria
|
|
187
|
+
|
|
188
|
+
1. 95% of signups complete within 60 seconds
|
|
189
|
+
2. Zero plaintext passwords in database
|
|
190
|
+
3. Email confirmation rate > 80%
|
|
191
|
+
|
|
192
|
+
## Key Entities
|
|
193
|
+
|
|
194
|
+
**User**
|
|
195
|
+
- email: string (unique)
|
|
196
|
+
- password_hash: string
|
|
197
|
+
- confirmed: boolean
|
|
198
|
+
- created_at: timestamp
|
|
199
|
+
|
|
200
|
+
## Dependencies
|
|
201
|
+
|
|
202
|
+
- Email service provider (e.g., SendGrid, Mailgun)
|
|
203
|
+
- Session management system
|
|
204
|
+
|
|
205
|
+
## Out of Scope
|
|
206
|
+
|
|
207
|
+
- Social login (OAuth)
|
|
208
|
+
- Two-factor authentication
|
|
209
|
+
- Password reset (separate feature)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
---
|
|
213
|
+
|
|
214
|
+
## Notes
|
|
215
|
+
|
|
216
|
+
- Always run the script first to get proper paths
|
|
217
|
+
- Use absolute paths from JSON output
|
|
218
|
+
- Validate before marking complete
|
|
219
|
+
- Keep specification technology-agnostic
|
|
220
|
+
- Focus on WHAT, not HOW
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Feature Specification: [FEATURE NAME]
|
|
2
|
+
|
|
3
|
+
**Feature Branch**: `[###-feature-name]`
|
|
4
|
+
**Created**: [DATE]
|
|
5
|
+
**Status**: Draft
|
|
6
|
+
**Input**: User description: "$ARGUMENTS"
|
|
7
|
+
|
|
8
|
+
## User Scenarios & Testing *(mandatory)*
|
|
9
|
+
|
|
10
|
+
<!--
|
|
11
|
+
IMPORTANT: User stories should be PRIORITIZED as user journeys ordered by importance.
|
|
12
|
+
Each user story/journey must be INDEPENDENTLY TESTABLE - meaning if you implement just ONE of them,
|
|
13
|
+
you should still have a viable MVP (Minimum Viable Product) that delivers value.
|
|
14
|
+
|
|
15
|
+
Assign priorities (P1, P2, P3, etc.) to each story, where P1 is the most critical.
|
|
16
|
+
Think of each story as a standalone slice of functionality that can be:
|
|
17
|
+
- Developed independently
|
|
18
|
+
- Tested independently
|
|
19
|
+
- Deployed independently
|
|
20
|
+
- Demonstrated to users independently
|
|
21
|
+
-->
|
|
22
|
+
|
|
23
|
+
### User Story 1 - [Brief Title] (Priority: P1)
|
|
24
|
+
|
|
25
|
+
[Describe this user journey in plain language]
|
|
26
|
+
|
|
27
|
+
**Why this priority**: [Explain the value and why it has this priority level]
|
|
28
|
+
|
|
29
|
+
**Independent Test**: [Describe how this can be tested independently - e.g., "Can be fully tested by [specific action] and delivers [specific value]"]
|
|
30
|
+
|
|
31
|
+
**Acceptance Scenarios**:
|
|
32
|
+
|
|
33
|
+
1. **Given** [initial state], **When** [action], **Then** [expected outcome]
|
|
34
|
+
2. **Given** [initial state], **When** [action], **Then** [expected outcome]
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
### User Story 2 - [Brief Title] (Priority: P2)
|
|
39
|
+
|
|
40
|
+
[Describe this user journey in plain language]
|
|
41
|
+
|
|
42
|
+
**Why this priority**: [Explain the value and why it has this priority level]
|
|
43
|
+
|
|
44
|
+
**Independent Test**: [Describe how this can be tested independently]
|
|
45
|
+
|
|
46
|
+
**Acceptance Scenarios**:
|
|
47
|
+
|
|
48
|
+
1. **Given** [initial state], **When** [action], **Then** [expected outcome]
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
### User Story 3 - [Brief Title] (Priority: P3)
|
|
53
|
+
|
|
54
|
+
[Describe this user journey in plain language]
|
|
55
|
+
|
|
56
|
+
**Why this priority**: [Explain the value and why it has this priority level]
|
|
57
|
+
|
|
58
|
+
**Independent Test**: [Describe how this can be tested independently]
|
|
59
|
+
|
|
60
|
+
**Acceptance Scenarios**:
|
|
61
|
+
|
|
62
|
+
1. **Given** [initial state], **When** [action], **Then** [expected outcome]
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
[Add more user stories as needed, each with an assigned priority]
|
|
67
|
+
|
|
68
|
+
### Edge Cases
|
|
69
|
+
|
|
70
|
+
<!--
|
|
71
|
+
ACTION REQUIRED: The content in this section represents placeholders.
|
|
72
|
+
Fill them out with the right edge cases.
|
|
73
|
+
-->
|
|
74
|
+
|
|
75
|
+
- What happens when [boundary condition]?
|
|
76
|
+
- How does system handle [error scenario]?
|
|
77
|
+
|
|
78
|
+
## Requirements *(mandatory)*
|
|
79
|
+
|
|
80
|
+
<!--
|
|
81
|
+
ACTION REQUIRED: The content in this section represents placeholders.
|
|
82
|
+
Fill them out with the right functional requirements.
|
|
83
|
+
-->
|
|
84
|
+
|
|
85
|
+
### Functional Requirements
|
|
86
|
+
|
|
87
|
+
- **FR-001**: System MUST [specific capability, e.g., "allow users to create accounts"]
|
|
88
|
+
- **FR-002**: System MUST [specific capability, e.g., "validate email addresses"]
|
|
89
|
+
- **FR-003**: Users MUST be able to [key interaction, e.g., "reset their password"]
|
|
90
|
+
- **FR-004**: System MUST [data requirement, e.g., "persist user preferences"]
|
|
91
|
+
- **FR-005**: System MUST [behavior, e.g., "log all security events"]
|
|
92
|
+
|
|
93
|
+
*Example of marking unclear requirements:*
|
|
94
|
+
|
|
95
|
+
- **FR-006**: System MUST authenticate users via [NEEDS CLARIFICATION: auth method not specified - email/password, SSO, OAuth?]
|
|
96
|
+
- **FR-007**: System MUST retain user data for [NEEDS CLARIFICATION: retention period not specified]
|
|
97
|
+
|
|
98
|
+
### Key Entities *(include if feature involves data)*
|
|
99
|
+
|
|
100
|
+
- **[Entity 1]**: [What it represents, key attributes without implementation]
|
|
101
|
+
- **[Entity 2]**: [What it represents, relationships to other entities]
|
|
102
|
+
|
|
103
|
+
## Success Criteria *(mandatory)*
|
|
104
|
+
|
|
105
|
+
<!--
|
|
106
|
+
ACTION REQUIRED: Define measurable success criteria.
|
|
107
|
+
These must be technology-agnostic and measurable.
|
|
108
|
+
-->
|
|
109
|
+
|
|
110
|
+
### Measurable Outcomes
|
|
111
|
+
|
|
112
|
+
- **SC-001**: [Measurable metric, e.g., "Users can complete account creation in under 2 minutes"]
|
|
113
|
+
- **SC-002**: [Measurable metric, e.g., "System handles 1000 concurrent users without degradation"]
|
|
114
|
+
- **SC-003**: [User satisfaction metric, e.g., "90% of users successfully complete primary task on first attempt"]
|
|
115
|
+
- **SC-004**: [Business metric, e.g., "Reduce support tickets related to [X] by 50%"]
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: tasks
|
|
3
|
+
description: "Generate dependency-ordered user stories and tasks from plan. Use after creating plan. Triggers on: create tasks, generate user stories, break down implementation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# User Story & Task Generator
|
|
7
|
+
|
|
8
|
+
Generate actionable, dependency-ordered user stories from technical plans.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## The Job
|
|
13
|
+
|
|
14
|
+
1. Read spec.md and plan.md
|
|
15
|
+
2. Extract user stories from spec
|
|
16
|
+
3. Break down into implementation tasks
|
|
17
|
+
4. Order by dependencies
|
|
18
|
+
5. Create tasks.md with structured user stories
|
|
19
|
+
|
|
20
|
+
**Important:** tasks.md contains the actual user stories that convert to prd.json!
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Step 1: Locate Feature Files
|
|
25
|
+
|
|
26
|
+
Find the current feature directory and verify:
|
|
27
|
+
- `spec.md` exists
|
|
28
|
+
- `plan.md` exists
|
|
29
|
+
- Feature directory: `relentless/features/NNN-feature/`
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Step 2: Load Context
|
|
34
|
+
|
|
35
|
+
Read:
|
|
36
|
+
1. `relentless/constitution.md` - Testing and quality requirements
|
|
37
|
+
2. `relentless/features/NNN-feature/spec.md` - User requirements
|
|
38
|
+
3. `relentless/features/NNN-feature/plan.md` - Technical design
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Step 3: Extract User Stories
|
|
43
|
+
|
|
44
|
+
From spec.md, identify distinct user stories:
|
|
45
|
+
- Each major functional requirement becomes a user story
|
|
46
|
+
- Group related functionality
|
|
47
|
+
- Typical: 3-8 user stories per feature
|
|
48
|
+
|
|
49
|
+
**User Story Format:**
|
|
50
|
+
```markdown
|
|
51
|
+
### US-001: [Title]
|
|
52
|
+
**Description:** As a [user], I want [goal] so that [benefit].
|
|
53
|
+
|
|
54
|
+
**Acceptance Criteria:**
|
|
55
|
+
- [ ] Criterion 1 (testable, specific)
|
|
56
|
+
- [ ] Criterion 2
|
|
57
|
+
- [ ] Criterion 3
|
|
58
|
+
- [ ] Typecheck passes
|
|
59
|
+
- [ ] Tests pass
|
|
60
|
+
|
|
61
|
+
**Dependencies:** (if any)
|
|
62
|
+
**Phase:** Foundation / Stories / Polish
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Step 4: Generate Tasks
|
|
68
|
+
|
|
69
|
+
For each user story, create implementation tasks using format:
|
|
70
|
+
|
|
71
|
+
```markdown
|
|
72
|
+
## User Stories
|
|
73
|
+
|
|
74
|
+
### US-001: Create User Registration Endpoint
|
|
75
|
+
|
|
76
|
+
**Description:** As a new user, I want to register with email/password so that I can create an account.
|
|
77
|
+
|
|
78
|
+
**Acceptance Criteria:**
|
|
79
|
+
- [ ] POST /api/auth/register endpoint exists
|
|
80
|
+
- [ ] Email validation works
|
|
81
|
+
- [ ] Password requirements enforced (min 8 chars)
|
|
82
|
+
- [ ] Password is hashed before storage
|
|
83
|
+
- [ ] Confirmation email sent
|
|
84
|
+
- [ ] Returns 201 with user ID
|
|
85
|
+
- [ ] Returns 400 for invalid input
|
|
86
|
+
- [ ] Typecheck passes
|
|
87
|
+
- [ ] Unit tests pass
|
|
88
|
+
- [ ] Integration test passes
|
|
89
|
+
|
|
90
|
+
**Dependencies:** None
|
|
91
|
+
**Phase:** Foundation
|
|
92
|
+
**Priority:** 1
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
### US-002: Create User Login Endpoint
|
|
97
|
+
|
|
98
|
+
**Description:** As a registered user, I want to log in with email/password so that I can access my account.
|
|
99
|
+
|
|
100
|
+
**Acceptance Criteria:**
|
|
101
|
+
- [ ] POST /api/auth/login endpoint exists
|
|
102
|
+
- [ ] Validates credentials against database
|
|
103
|
+
- [ ] Returns JWT token on success
|
|
104
|
+
- [ ] Returns 401 for invalid credentials
|
|
105
|
+
- [ ] Returns 403 for unconfirmed accounts
|
|
106
|
+
- [ ] Token expires after 24 hours
|
|
107
|
+
- [ ] Typecheck passes
|
|
108
|
+
- [ ] Unit tests pass
|
|
109
|
+
- [ ] Integration test passes
|
|
110
|
+
|
|
111
|
+
**Dependencies:** US-001
|
|
112
|
+
**Phase:** Stories
|
|
113
|
+
**Priority:** 2
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### US-003: Email Confirmation Flow
|
|
118
|
+
|
|
119
|
+
**Description:** As a new user, I want to confirm my email so that my account is activated.
|
|
120
|
+
|
|
121
|
+
**Acceptance Criteria:**
|
|
122
|
+
- [ ] Confirmation email sent on registration
|
|
123
|
+
- [ ] Email contains confirmation link
|
|
124
|
+
- [ ] GET /api/auth/confirm/:token endpoint exists
|
|
125
|
+
- [ ] Token validates and marks account as confirmed
|
|
126
|
+
- [ ] Expired tokens return appropriate error
|
|
127
|
+
- [ ] Confirmed users can log in
|
|
128
|
+
- [ ] Typecheck passes
|
|
129
|
+
- [ ] E2E test passes
|
|
130
|
+
|
|
131
|
+
**Dependencies:** US-001
|
|
132
|
+
**Phase:** Stories
|
|
133
|
+
**Priority:** 3
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Step 5: Order by Dependencies
|
|
139
|
+
|
|
140
|
+
Ensure user stories are ordered so dependencies come first:
|
|
141
|
+
1. **Phase 0: Setup** - Infrastructure, configuration
|
|
142
|
+
2. **Phase 1: Foundation** - Core models, base functionality
|
|
143
|
+
3. **Phase 2: Stories** - User-facing features (ordered by dependencies)
|
|
144
|
+
4. **Phase 3: Polish** - Optimization, edge cases
|
|
145
|
+
|
|
146
|
+
Mark parallel stories with:
|
|
147
|
+
```markdown
|
|
148
|
+
**Parallel:** Yes
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Step 6: Validate Completeness
|
|
154
|
+
|
|
155
|
+
Check that:
|
|
156
|
+
- [ ] Every functional requirement from spec has a user story
|
|
157
|
+
- [ ] Each user story has specific, testable acceptance criteria
|
|
158
|
+
- [ ] Dependencies are valid (no circular references)
|
|
159
|
+
- [ ] Each story is independently testable
|
|
160
|
+
- [ ] Typecheck/test criteria included
|
|
161
|
+
- [ ] Priority order makes sense
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Step 7: Save & Report
|
|
166
|
+
|
|
167
|
+
1. Save to `relentless/features/NNN-feature/tasks.md`
|
|
168
|
+
2. Update progress.txt
|
|
169
|
+
3. Report:
|
|
170
|
+
- Total user stories: N
|
|
171
|
+
- Dependency order: [list]
|
|
172
|
+
- Parallel opportunities: N
|
|
173
|
+
- Next step: `/relentless.checklist` or `relentless convert tasks.md`
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Key Guidelines
|
|
178
|
+
|
|
179
|
+
**User Story Size:**
|
|
180
|
+
- Each story completable in one session
|
|
181
|
+
- If too large, split into multiple stories
|
|
182
|
+
- Typical: 30-90 minutes of work per story
|
|
183
|
+
|
|
184
|
+
**Acceptance Criteria:**
|
|
185
|
+
- Specific and testable
|
|
186
|
+
- No vague terms ("works well", "good UX")
|
|
187
|
+
- Include quality checks (typecheck, lint, test)
|
|
188
|
+
- Verifiable in browser/tests
|
|
189
|
+
|
|
190
|
+
**Dependencies:**
|
|
191
|
+
- Only list direct dependencies
|
|
192
|
+
- Ensure no circular dependencies
|
|
193
|
+
- Consider data dependencies (user must exist before profile)
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Notes
|
|
198
|
+
|
|
199
|
+
- tasks.md is the source of truth for user stories
|
|
200
|
+
- This file will be converted to prd.json by `relentless convert`
|
|
201
|
+
- Make acceptance criteria detailed and specific
|
|
202
|
+
- Each story should be independently deployable and testable
|