@arvorco/relentless 0.1.0
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/commands/relentless.analyze.md +20 -0
- package/.claude/commands/relentless.checklist.md +15 -0
- package/.claude/commands/relentless.clarify.md +19 -0
- package/.claude/commands/relentless.constitution.md +78 -0
- package/.claude/commands/relentless.implement.md +15 -0
- package/.claude/commands/relentless.plan.md +22 -0
- package/.claude/commands/relentless.plan.old.md +89 -0
- package/.claude/commands/relentless.specify.md +254 -0
- package/.claude/commands/relentless.tasks.md +25 -0
- package/.claude/commands/relentless.taskstoissues.md +15 -0
- package/.claude/settings.local.json +23 -0
- 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/scripts/bash/check-prerequisites.sh +166 -0
- package/.claude/skills/specify/scripts/bash/common.sh +156 -0
- package/.claude/skills/specify/scripts/bash/create-new-feature.sh +305 -0
- package/.claude/skills/specify/scripts/bash/setup-plan.sh +61 -0
- package/.claude/skills/specify/scripts/bash/update-agent-context.sh +799 -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/.specify/memory/constitution.md +50 -0
- package/.specify/scripts/bash/check-prerequisites.sh +166 -0
- package/.specify/scripts/bash/common.sh +156 -0
- package/.specify/scripts/bash/create-new-feature.sh +297 -0
- package/.specify/scripts/bash/setup-plan.sh +61 -0
- package/.specify/scripts/bash/update-agent-context.sh +799 -0
- package/.specify/templates/agent-file-template.md +28 -0
- package/.specify/templates/checklist-template.md +40 -0
- package/.specify/templates/plan-template.md +104 -0
- package/.specify/templates/spec-template.md +115 -0
- package/.specify/templates/tasks-template.md +251 -0
- package/CHANGES_SUMMARY.md +255 -0
- package/CLAUDE.md +92 -0
- package/GEMINI_SETUP.md +256 -0
- package/LICENSE +21 -0
- package/README.md +1171 -0
- package/REFACTOR_SUMMARY.md +267 -0
- package/bin/relentless.ts +536 -0
- package/bun.lock +352 -0
- package/eslint.config.js +37 -0
- package/package.json +61 -0
- package/prd.json.example +64 -0
- package/prompt.md +108 -0
- package/ralph.sh +80 -0
- package/relentless/config.json +38 -0
- package/relentless/features/.gitkeep +0 -0
- package/relentless/features/ghsk-ideas/prd.json +229 -0
- package/relentless/features/ghsk-ideas/prd.md +191 -0
- package/relentless/features/ghsk-ideas/progress.txt +408 -0
- package/relentless/prompt.md +79 -0
- package/skills/checklist/SKILL.md +349 -0
- package/skills/clarify/SKILL.md +476 -0
- package/skills/prd/SKILL.md +242 -0
- package/skills/relentless/SKILL.md +268 -0
- package/skills/tasks/SKILL.md +577 -0
- package/src/agents/amp.ts +115 -0
- package/src/agents/claude.ts +185 -0
- package/src/agents/codex.ts +89 -0
- package/src/agents/droid.ts +90 -0
- package/src/agents/gemini.ts +109 -0
- package/src/agents/index.ts +16 -0
- package/src/agents/opencode.ts +88 -0
- package/src/agents/registry.ts +95 -0
- package/src/agents/types.ts +101 -0
- package/src/config/index.ts +8 -0
- package/src/config/loader.ts +237 -0
- package/src/config/schema.ts +115 -0
- package/src/execution/index.ts +8 -0
- package/src/execution/router.ts +49 -0
- package/src/execution/runner.ts +512 -0
- package/src/index.ts +11 -0
- package/src/init/index.ts +7 -0
- package/src/init/scaffolder.ts +377 -0
- package/src/prd/analyzer.ts +512 -0
- package/src/prd/index.ts +11 -0
- package/src/prd/issues.ts +249 -0
- package/src/prd/parser.ts +281 -0
- package/src/prd/progress.ts +198 -0
- package/src/prd/types.ts +170 -0
- package/src/tui/App.tsx +85 -0
- package/src/tui/TUIRunner.tsx +400 -0
- package/src/tui/components/AgentOutput.tsx +45 -0
- package/src/tui/components/AgentStatus.tsx +64 -0
- package/src/tui/components/CurrentStory.tsx +66 -0
- package/src/tui/components/Header.tsx +49 -0
- package/src/tui/components/ProgressBar.tsx +39 -0
- package/src/tui/components/StoryGrid.tsx +86 -0
- package/src/tui/hooks/useTUI.ts +147 -0
- package/src/tui/hooks/useTimer.ts +51 -0
- package/src/tui/index.tsx +17 -0
- package/src/tui/theme.ts +41 -0
- package/src/tui/types.ts +77 -0
- package/templates/constitution.md +228 -0
- package/templates/plan.md +273 -0
- package/tsconfig.json +27 -0
|
@@ -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
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
---
|
|
2
|
+
|
|
3
|
+
description: "Task list template for feature implementation"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Tasks: [FEATURE NAME]
|
|
7
|
+
|
|
8
|
+
**Input**: Design documents from `/specs/[###-feature-name]/`
|
|
9
|
+
**Prerequisites**: plan.md (required), spec.md (required for user stories), research.md, data-model.md, contracts/
|
|
10
|
+
|
|
11
|
+
**Tests**: The examples below include test tasks. Tests are OPTIONAL - only include them if explicitly requested in the feature specification.
|
|
12
|
+
|
|
13
|
+
**Organization**: Tasks are grouped by user story to enable independent implementation and testing of each story.
|
|
14
|
+
|
|
15
|
+
## Format: `[ID] [P?] [Story] Description`
|
|
16
|
+
|
|
17
|
+
- **[P]**: Can run in parallel (different files, no dependencies)
|
|
18
|
+
- **[Story]**: Which user story this task belongs to (e.g., US1, US2, US3)
|
|
19
|
+
- Include exact file paths in descriptions
|
|
20
|
+
|
|
21
|
+
## Path Conventions
|
|
22
|
+
|
|
23
|
+
- **Single project**: `src/`, `tests/` at repository root
|
|
24
|
+
- **Web app**: `backend/src/`, `frontend/src/`
|
|
25
|
+
- **Mobile**: `api/src/`, `ios/src/` or `android/src/`
|
|
26
|
+
- Paths shown below assume single project - adjust based on plan.md structure
|
|
27
|
+
|
|
28
|
+
<!--
|
|
29
|
+
============================================================================
|
|
30
|
+
IMPORTANT: The tasks below are SAMPLE TASKS for illustration purposes only.
|
|
31
|
+
|
|
32
|
+
The /relentless.tasks command MUST replace these with actual tasks based on:
|
|
33
|
+
- User stories from spec.md (with their priorities P1, P2, P3...)
|
|
34
|
+
- Feature requirements from plan.md
|
|
35
|
+
- Entities from data-model.md
|
|
36
|
+
- Endpoints from contracts/
|
|
37
|
+
|
|
38
|
+
Tasks MUST be organized by user story so each story can be:
|
|
39
|
+
- Implemented independently
|
|
40
|
+
- Tested independently
|
|
41
|
+
- Delivered as an MVP increment
|
|
42
|
+
|
|
43
|
+
DO NOT keep these sample tasks in the generated tasks.md file.
|
|
44
|
+
============================================================================
|
|
45
|
+
-->
|
|
46
|
+
|
|
47
|
+
## Phase 1: Setup (Shared Infrastructure)
|
|
48
|
+
|
|
49
|
+
**Purpose**: Project initialization and basic structure
|
|
50
|
+
|
|
51
|
+
- [ ] T001 Create project structure per implementation plan
|
|
52
|
+
- [ ] T002 Initialize [language] project with [framework] dependencies
|
|
53
|
+
- [ ] T003 [P] Configure linting and formatting tools
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Phase 2: Foundational (Blocking Prerequisites)
|
|
58
|
+
|
|
59
|
+
**Purpose**: Core infrastructure that MUST be complete before ANY user story can be implemented
|
|
60
|
+
|
|
61
|
+
**⚠️ CRITICAL**: No user story work can begin until this phase is complete
|
|
62
|
+
|
|
63
|
+
Examples of foundational tasks (adjust based on your project):
|
|
64
|
+
|
|
65
|
+
- [ ] T004 Setup database schema and migrations framework
|
|
66
|
+
- [ ] T005 [P] Implement authentication/authorization framework
|
|
67
|
+
- [ ] T006 [P] Setup API routing and middleware structure
|
|
68
|
+
- [ ] T007 Create base models/entities that all stories depend on
|
|
69
|
+
- [ ] T008 Configure error handling and logging infrastructure
|
|
70
|
+
- [ ] T009 Setup environment configuration management
|
|
71
|
+
|
|
72
|
+
**Checkpoint**: Foundation ready - user story implementation can now begin in parallel
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Phase 3: User Story 1 - [Title] (Priority: P1) 🎯 MVP
|
|
77
|
+
|
|
78
|
+
**Goal**: [Brief description of what this story delivers]
|
|
79
|
+
|
|
80
|
+
**Independent Test**: [How to verify this story works on its own]
|
|
81
|
+
|
|
82
|
+
### Tests for User Story 1 (OPTIONAL - only if tests requested) ⚠️
|
|
83
|
+
|
|
84
|
+
> **NOTE: Write these tests FIRST, ensure they FAIL before implementation**
|
|
85
|
+
|
|
86
|
+
- [ ] T010 [P] [US1] Contract test for [endpoint] in tests/contract/test_[name].py
|
|
87
|
+
- [ ] T011 [P] [US1] Integration test for [user journey] in tests/integration/test_[name].py
|
|
88
|
+
|
|
89
|
+
### Implementation for User Story 1
|
|
90
|
+
|
|
91
|
+
- [ ] T012 [P] [US1] Create [Entity1] model in src/models/[entity1].py
|
|
92
|
+
- [ ] T013 [P] [US1] Create [Entity2] model in src/models/[entity2].py
|
|
93
|
+
- [ ] T014 [US1] Implement [Service] in src/services/[service].py (depends on T012, T013)
|
|
94
|
+
- [ ] T015 [US1] Implement [endpoint/feature] in src/[location]/[file].py
|
|
95
|
+
- [ ] T016 [US1] Add validation and error handling
|
|
96
|
+
- [ ] T017 [US1] Add logging for user story 1 operations
|
|
97
|
+
|
|
98
|
+
**Checkpoint**: At this point, User Story 1 should be fully functional and testable independently
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Phase 4: User Story 2 - [Title] (Priority: P2)
|
|
103
|
+
|
|
104
|
+
**Goal**: [Brief description of what this story delivers]
|
|
105
|
+
|
|
106
|
+
**Independent Test**: [How to verify this story works on its own]
|
|
107
|
+
|
|
108
|
+
### Tests for User Story 2 (OPTIONAL - only if tests requested) ⚠️
|
|
109
|
+
|
|
110
|
+
- [ ] T018 [P] [US2] Contract test for [endpoint] in tests/contract/test_[name].py
|
|
111
|
+
- [ ] T019 [P] [US2] Integration test for [user journey] in tests/integration/test_[name].py
|
|
112
|
+
|
|
113
|
+
### Implementation for User Story 2
|
|
114
|
+
|
|
115
|
+
- [ ] T020 [P] [US2] Create [Entity] model in src/models/[entity].py
|
|
116
|
+
- [ ] T021 [US2] Implement [Service] in src/services/[service].py
|
|
117
|
+
- [ ] T022 [US2] Implement [endpoint/feature] in src/[location]/[file].py
|
|
118
|
+
- [ ] T023 [US2] Integrate with User Story 1 components (if needed)
|
|
119
|
+
|
|
120
|
+
**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Phase 5: User Story 3 - [Title] (Priority: P3)
|
|
125
|
+
|
|
126
|
+
**Goal**: [Brief description of what this story delivers]
|
|
127
|
+
|
|
128
|
+
**Independent Test**: [How to verify this story works on its own]
|
|
129
|
+
|
|
130
|
+
### Tests for User Story 3 (OPTIONAL - only if tests requested) ⚠️
|
|
131
|
+
|
|
132
|
+
- [ ] T024 [P] [US3] Contract test for [endpoint] in tests/contract/test_[name].py
|
|
133
|
+
- [ ] T025 [P] [US3] Integration test for [user journey] in tests/integration/test_[name].py
|
|
134
|
+
|
|
135
|
+
### Implementation for User Story 3
|
|
136
|
+
|
|
137
|
+
- [ ] T026 [P] [US3] Create [Entity] model in src/models/[entity].py
|
|
138
|
+
- [ ] T027 [US3] Implement [Service] in src/services/[service].py
|
|
139
|
+
- [ ] T028 [US3] Implement [endpoint/feature] in src/[location]/[file].py
|
|
140
|
+
|
|
141
|
+
**Checkpoint**: All user stories should now be independently functional
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
[Add more user story phases as needed, following the same pattern]
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Phase N: Polish & Cross-Cutting Concerns
|
|
150
|
+
|
|
151
|
+
**Purpose**: Improvements that affect multiple user stories
|
|
152
|
+
|
|
153
|
+
- [ ] TXXX [P] Documentation updates in docs/
|
|
154
|
+
- [ ] TXXX Code cleanup and refactoring
|
|
155
|
+
- [ ] TXXX Performance optimization across all stories
|
|
156
|
+
- [ ] TXXX [P] Additional unit tests (if requested) in tests/unit/
|
|
157
|
+
- [ ] TXXX Security hardening
|
|
158
|
+
- [ ] TXXX Run quickstart.md validation
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Dependencies & Execution Order
|
|
163
|
+
|
|
164
|
+
### Phase Dependencies
|
|
165
|
+
|
|
166
|
+
- **Setup (Phase 1)**: No dependencies - can start immediately
|
|
167
|
+
- **Foundational (Phase 2)**: Depends on Setup completion - BLOCKS all user stories
|
|
168
|
+
- **User Stories (Phase 3+)**: All depend on Foundational phase completion
|
|
169
|
+
- User stories can then proceed in parallel (if staffed)
|
|
170
|
+
- Or sequentially in priority order (P1 → P2 → P3)
|
|
171
|
+
- **Polish (Final Phase)**: Depends on all desired user stories being complete
|
|
172
|
+
|
|
173
|
+
### User Story Dependencies
|
|
174
|
+
|
|
175
|
+
- **User Story 1 (P1)**: Can start after Foundational (Phase 2) - No dependencies on other stories
|
|
176
|
+
- **User Story 2 (P2)**: Can start after Foundational (Phase 2) - May integrate with US1 but should be independently testable
|
|
177
|
+
- **User Story 3 (P3)**: Can start after Foundational (Phase 2) - May integrate with US1/US2 but should be independently testable
|
|
178
|
+
|
|
179
|
+
### Within Each User Story
|
|
180
|
+
|
|
181
|
+
- Tests (if included) MUST be written and FAIL before implementation
|
|
182
|
+
- Models before services
|
|
183
|
+
- Services before endpoints
|
|
184
|
+
- Core implementation before integration
|
|
185
|
+
- Story complete before moving to next priority
|
|
186
|
+
|
|
187
|
+
### Parallel Opportunities
|
|
188
|
+
|
|
189
|
+
- All Setup tasks marked [P] can run in parallel
|
|
190
|
+
- All Foundational tasks marked [P] can run in parallel (within Phase 2)
|
|
191
|
+
- Once Foundational phase completes, all user stories can start in parallel (if team capacity allows)
|
|
192
|
+
- All tests for a user story marked [P] can run in parallel
|
|
193
|
+
- Models within a story marked [P] can run in parallel
|
|
194
|
+
- Different user stories can be worked on in parallel by different team members
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## Parallel Example: User Story 1
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
# Launch all tests for User Story 1 together (if tests requested):
|
|
202
|
+
Task: "Contract test for [endpoint] in tests/contract/test_[name].py"
|
|
203
|
+
Task: "Integration test for [user journey] in tests/integration/test_[name].py"
|
|
204
|
+
|
|
205
|
+
# Launch all models for User Story 1 together:
|
|
206
|
+
Task: "Create [Entity1] model in src/models/[entity1].py"
|
|
207
|
+
Task: "Create [Entity2] model in src/models/[entity2].py"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Implementation Strategy
|
|
213
|
+
|
|
214
|
+
### MVP First (User Story 1 Only)
|
|
215
|
+
|
|
216
|
+
1. Complete Phase 1: Setup
|
|
217
|
+
2. Complete Phase 2: Foundational (CRITICAL - blocks all stories)
|
|
218
|
+
3. Complete Phase 3: User Story 1
|
|
219
|
+
4. **STOP and VALIDATE**: Test User Story 1 independently
|
|
220
|
+
5. Deploy/demo if ready
|
|
221
|
+
|
|
222
|
+
### Incremental Delivery
|
|
223
|
+
|
|
224
|
+
1. Complete Setup + Foundational → Foundation ready
|
|
225
|
+
2. Add User Story 1 → Test independently → Deploy/Demo (MVP!)
|
|
226
|
+
3. Add User Story 2 → Test independently → Deploy/Demo
|
|
227
|
+
4. Add User Story 3 → Test independently → Deploy/Demo
|
|
228
|
+
5. Each story adds value without breaking previous stories
|
|
229
|
+
|
|
230
|
+
### Parallel Team Strategy
|
|
231
|
+
|
|
232
|
+
With multiple developers:
|
|
233
|
+
|
|
234
|
+
1. Team completes Setup + Foundational together
|
|
235
|
+
2. Once Foundational is done:
|
|
236
|
+
- Developer A: User Story 1
|
|
237
|
+
- Developer B: User Story 2
|
|
238
|
+
- Developer C: User Story 3
|
|
239
|
+
3. Stories complete and integrate independently
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## Notes
|
|
244
|
+
|
|
245
|
+
- [P] tasks = different files, no dependencies
|
|
246
|
+
- [Story] label maps task to specific user story for traceability
|
|
247
|
+
- Each user story should be independently completable and testable
|
|
248
|
+
- Verify tests fail before implementing
|
|
249
|
+
- Commit after each task or logical group
|
|
250
|
+
- Stop at any checkpoint to validate story independently
|
|
251
|
+
- Avoid: vague tasks, same file conflicts, cross-story dependencies that break independence
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: taskstoissues
|
|
3
|
+
description: "Convert user stories to GitHub issues. Use when ready to create issues. Triggers on: create github issues, export to github, generate issues."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GitHub Issues Generator
|
|
7
|
+
|
|
8
|
+
Convert user stories from tasks.md into GitHub issues.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## The Job
|
|
13
|
+
|
|
14
|
+
1. Read tasks.md
|
|
15
|
+
2. Parse user stories
|
|
16
|
+
3. Generate GitHub issues with `gh` CLI
|
|
17
|
+
4. Link dependencies
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Prerequisites
|
|
22
|
+
|
|
23
|
+
- GitHub CLI (`gh`) installed and authenticated
|
|
24
|
+
- Git repository with GitHub remote
|
|
25
|
+
- tasks.md exists with user stories
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Issue Format
|
|
30
|
+
|
|
31
|
+
For each user story, create issue with:
|
|
32
|
+
|
|
33
|
+
**Title:** [US-XXX] Story Title
|
|
34
|
+
|
|
35
|
+
**Body:**
|
|
36
|
+
```markdown
|
|
37
|
+
## Description
|
|
38
|
+
[Story description]
|
|
39
|
+
|
|
40
|
+
## Acceptance Criteria
|
|
41
|
+
- [ ] Criterion 1
|
|
42
|
+
- [ ] Criterion 2
|
|
43
|
+
- [ ] Typecheck passes
|
|
44
|
+
- [ ] Tests pass
|
|
45
|
+
|
|
46
|
+
## Dependencies
|
|
47
|
+
#123 (if US-001 already exists as issue #123)
|
|
48
|
+
|
|
49
|
+
## Phase
|
|
50
|
+
Foundation / Stories / Polish
|
|
51
|
+
|
|
52
|
+
## Priority
|
|
53
|
+
High / Medium / Low
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
From: tasks.md
|
|
57
|
+
Story ID: US-XXX
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**Labels:**
|
|
61
|
+
- `user-story`
|
|
62
|
+
- `priority-high` / `priority-medium` / `priority-low`
|
|
63
|
+
- Domain-specific: `database`, `api`, `ui`, `security`, etc.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Execution
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Dry run first
|
|
71
|
+
relentless issues --feature NNN-feature --dry-run
|
|
72
|
+
|
|
73
|
+
# Create issues
|
|
74
|
+
relentless issues --feature NNN-feature
|
|
75
|
+
|
|
76
|
+
# Create all issues (including completed)
|
|
77
|
+
relentless issues --feature NNN-feature --all
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Mapping
|
|
83
|
+
|
|
84
|
+
- Extract story ID, title, description, acceptance criteria
|
|
85
|
+
- Detect domain from description (api, database, ui, etc.)
|
|
86
|
+
- Map priority from tasks.md
|
|
87
|
+
- Create dependencies based on US dependencies
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## Notes
|
|
92
|
+
|
|
93
|
+
- Dry run first to preview
|
|
94
|
+
- Issues created in dependency order
|
|
95
|
+
- Issue numbers used for dependency linking
|
|
96
|
+
- Only creates issues for incomplete stories (unless --all)
|
|
97
|
+
- See relentless CLI for actual implementation
|