@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,408 @@
|
|
|
1
|
+
# Progress Log: ghsk-ideas
|
|
2
|
+
Started: 2026-01-11T16:48:00.000Z
|
|
3
|
+
|
|
4
|
+
## Codebase Patterns
|
|
5
|
+
|
|
6
|
+
### Binary Installation Pattern
|
|
7
|
+
- Relentless uses package.json "bin" field to register global binary
|
|
8
|
+
- bin/relentless.ts has #!/usr/bin/env bun shebang for direct execution
|
|
9
|
+
- Global install: `bun install -g .` or from GitHub
|
|
10
|
+
- Binary location after global install: checked in user's PATH
|
|
11
|
+
- Alternative usage: bunx github:ArvorCo/Relentless for no-install execution
|
|
12
|
+
|
|
13
|
+
### Documentation Update Strategy
|
|
14
|
+
- Used systematic grep search to find all shell script references
|
|
15
|
+
- Replaced shell script patterns (.sh, relentless.sh) with binary commands
|
|
16
|
+
- Updated multiple locations: README, CLAUDE.md, scaffolder, skills
|
|
17
|
+
- Ensured consistent command format: `relentless <command> --params`
|
|
18
|
+
|
|
19
|
+
### Scaffolder Simplification
|
|
20
|
+
- Removed shell script copying logic from scaffolder
|
|
21
|
+
- Removed bin/ directory creation from init process
|
|
22
|
+
- Simplified project structure: only config.json, prompt.md, and features/
|
|
23
|
+
- Updated output messages to reflect binary-first approach
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 2026-01-11T19:00:00.000Z - US-000
|
|
28
|
+
|
|
29
|
+
### What was implemented
|
|
30
|
+
- Converted Relentless from shell script to globally-installable binary
|
|
31
|
+
- Removed bin/relentless.sh completely
|
|
32
|
+
- Made bin/relentless.ts executable (chmod +x)
|
|
33
|
+
- Updated all documentation to use binary commands instead of shell script
|
|
34
|
+
|
|
35
|
+
### Files changed
|
|
36
|
+
- bin/relentless.sh (deleted)
|
|
37
|
+
- bin/relentless.ts (made executable, already had correct shebang)
|
|
38
|
+
- README.md (replaced all shell script references with binary commands)
|
|
39
|
+
- CLAUDE.md (updated CLI usage patterns)
|
|
40
|
+
- src/init/scaffolder.ts (removed shell script copying logic)
|
|
41
|
+
- skills/relentless/SKILL.md (updated to use binary commands)
|
|
42
|
+
- relentless/bin/relentless.sh (deleted from project's relentless folder)
|
|
43
|
+
- relentless/features/ghsk-ideas/prd.json (set US-000 passes: true)
|
|
44
|
+
|
|
45
|
+
### Learnings for future iterations:
|
|
46
|
+
- **package.json bin field**: Already correctly configured, pointing to bin/relentless.ts
|
|
47
|
+
- **Bun global install**: Works with `bun install -g .` but PATH verification may vary by system
|
|
48
|
+
- **Binary execution**: Can run with ./bin/relentless.ts, bun run bin/relentless.ts, or globally after install
|
|
49
|
+
- **Grep for cleanup**: Used grep to find all .sh references across codebase for thorough cleanup
|
|
50
|
+
- **Scaffolder simplification**: Removed unnecessary bin/ directory creation, cleaner structure
|
|
51
|
+
- **Documentation consistency**: Important to update ALL docs (README, CLAUDE.md, skills) in one pass
|
|
52
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
53
|
+
- **Shell script removal**: Two files to remove - source bin/relentless.sh and relentless/bin/relentless.sh
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
## 2026-01-11T20:15:00.000Z - US-001
|
|
57
|
+
|
|
58
|
+
### What was implemented
|
|
59
|
+
- Extended UserStory schema with dependencies, parallel, and phase fields
|
|
60
|
+
- Implemented validateDependencies() with circular dependency detection using DFS algorithm
|
|
61
|
+
- Updated getNextStory() to respect dependencies and only return stories with completed prerequisites
|
|
62
|
+
- Updated parser to extract Dependencies, Parallel, and Phase fields from PRD markdown
|
|
63
|
+
- Added support for parsing "Dependencies: US-001, US-002" format with comma or semicolon separators
|
|
64
|
+
|
|
65
|
+
### Files changed
|
|
66
|
+
- src/prd/types.ts (extended schema, added validateDependencies and areDependenciesMet functions)
|
|
67
|
+
- src/prd/parser.ts (added dependency/parallel/phase parsing, updated createPRD mapping)
|
|
68
|
+
- relentless/features/ghsk-ideas/prd.json (set US-001 passes: true)
|
|
69
|
+
|
|
70
|
+
### Learnings for future iterations:
|
|
71
|
+
- **Zod schema extensions**: Optional fields using .optional() work seamlessly with existing PRDs
|
|
72
|
+
- **Dependency validation**: DFS algorithm is effective for circular dependency detection
|
|
73
|
+
- **Parser pattern matching**: Used regex `/^\*\*Dependencies:?\*\*/i` for flexible markdown parsing
|
|
74
|
+
- **Dependencies filtering**: getNextStory() now validates dependencies first, then filters stories
|
|
75
|
+
- **areDependenciesMet helper**: Checks if all dependencies have passes: true before allowing execution
|
|
76
|
+
- **Parser field extraction**: Dependencies split by comma/semicolon, parallel accepts true/yes values
|
|
77
|
+
- **Backward compatibility**: Existing PRDs without dependencies work correctly (undefined treated as no dependencies)
|
|
78
|
+
- **Type safety**: All changes passed typecheck with 0 errors - Zod schema validation ensures consistency
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
## 2026-01-11T21:30:00.000Z - US-002
|
|
82
|
+
|
|
83
|
+
### What was implemented
|
|
84
|
+
- Created comprehensive constitution.md template with clear structure for project governance
|
|
85
|
+
- Extended config loader to read, parse, and validate constitution.md
|
|
86
|
+
- Updated runner to include constitution in agent prompt context
|
|
87
|
+
- Updated scaffolder to copy constitution template during init
|
|
88
|
+
- Implemented MUST/SHOULD principle parsing and validation
|
|
89
|
+
|
|
90
|
+
### Files changed
|
|
91
|
+
- templates/constitution.md (created with comprehensive governance structure)
|
|
92
|
+
- src/config/loader.ts (added constitution loading, parsing, and validation)
|
|
93
|
+
- src/execution/runner.ts (updated buildPrompt to include constitution)
|
|
94
|
+
- src/init/scaffolder.ts (added constitution template copying, updated output)
|
|
95
|
+
- relentless/features/ghsk-ideas/prd.json (set US-002 passes: true)
|
|
96
|
+
|
|
97
|
+
### Learnings for future iterations:
|
|
98
|
+
- **Template structure**: Constitution uses MUST/SHOULD format for clear requirement levels
|
|
99
|
+
- **Regex parsing**: Used `/\*\*MUST\*\*\s+(.+)/` and `/\*\*SHOULD\*\*\s+(.+)/` to extract principles
|
|
100
|
+
- **Section tracking**: Parser tracks current section (## or ###) for principle attribution
|
|
101
|
+
- **Validation strategy**: Checks for at least some principles, both MUST and SHOULD present, and no empty text
|
|
102
|
+
- **Runner integration**: Constitution appended to prompt after base template, warns on validation issues
|
|
103
|
+
- **Scaffolder pattern**: Constitution copied from templates/ to relentless/ during init
|
|
104
|
+
- **relentlessRoot**: Defined as `import.meta.dir.replace("/src/init", "")` for template access
|
|
105
|
+
- **Optional loading**: Constitution is optional - if not present, agents continue without it
|
|
106
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
## 2026-01-11T22:00:00.000Z - US-003
|
|
112
|
+
|
|
113
|
+
### What was implemented
|
|
114
|
+
- Created progress.ts module with YAML frontmatter parsing and serialization
|
|
115
|
+
- Implemented parseProgress() to handle both legacy and YAML frontmatter formats
|
|
116
|
+
- Implemented serializeProgress() to write progress files with YAML frontmatter
|
|
117
|
+
- Added loadProgress(), updateProgressMetadata(), and appendProgress() helper functions
|
|
118
|
+
- Implemented extractPatterns() to parse learnings from progress content
|
|
119
|
+
- Implemented syncPatternsFromContent() to update frontmatter patterns from content
|
|
120
|
+
- Updated scaffolder to create progress.txt with YAML frontmatter structure
|
|
121
|
+
- Updated Runner.ts to load progress metadata and include patterns in prompt context
|
|
122
|
+
- Updated Runner.ts to update frontmatter after each iteration (last_updated, stories_completed)
|
|
123
|
+
- Added js-yaml dependency for YAML parsing
|
|
124
|
+
|
|
125
|
+
### Files changed
|
|
126
|
+
- package.json (added js-yaml and @types/js-yaml dependencies)
|
|
127
|
+
- src/prd/progress.ts (created new module with all progress metadata functions)
|
|
128
|
+
- src/prd/index.ts (exported progress functions)
|
|
129
|
+
- src/init/scaffolder.ts (updated createProgressTemplate to include YAML frontmatter)
|
|
130
|
+
- src/execution/runner.ts (added progress loading, pattern inclusion, metadata updates)
|
|
131
|
+
- relentless/features/ghsk-ideas/prd.json (set US-003 passes: true)
|
|
132
|
+
|
|
133
|
+
### Learnings for future iterations:
|
|
134
|
+
- **YAML frontmatter structure**: Uses --- delimiters at start and end of frontmatter block
|
|
135
|
+
- **js-yaml library**: Simple API with yaml.load() and yaml.dump() for parsing and serialization
|
|
136
|
+
- **Backward compatibility**: parseProgress() handles legacy format without frontmatter gracefully
|
|
137
|
+
- **Pattern extraction**: Used regex to find "Learnings for future iterations:" sections and extract patterns
|
|
138
|
+
- **Pattern format**: Patterns formatted as **Key**: Description for easy identification
|
|
139
|
+
- **Runner integration**: Progress loaded in buildPrompt() to include patterns in agent context
|
|
140
|
+
- **Metadata updates**: After each iteration, sync patterns from content, then update metadata
|
|
141
|
+
- **Path calculation**: progressPath = join(dirname(prdPath), "progress.txt") for consistency
|
|
142
|
+
- **Error handling**: Progress metadata updates wrapped in try-catch to avoid breaking orchestration
|
|
143
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
144
|
+
- **Frontmatter fields**: feature, started, last_updated, stories_completed, patterns array
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
## 2026-01-11T23:30:00.000Z - US-004
|
|
148
|
+
|
|
149
|
+
### What was implemented
|
|
150
|
+
- Created comprehensive plan.md template in templates/ directory with all technical planning sections
|
|
151
|
+
- Extended scaffolder to support optional withPlan parameter in createFeature()
|
|
152
|
+
- Updated runner to load and append plan.md to prompt context when present in feature directory
|
|
153
|
+
- Plan.md template includes: Feature Overview, Technical Approach, Implementation Details, Integration Points, Testing Strategy, Security, Rollout, Monitoring, Open Questions, Alternatives, Dependencies/Risks, Success Criteria
|
|
154
|
+
|
|
155
|
+
### Files changed
|
|
156
|
+
- templates/plan.md (created with comprehensive technical planning structure)
|
|
157
|
+
- src/init/scaffolder.ts (added CreateFeatureOptions interface, updated createFeature signature, added plan.md copying logic)
|
|
158
|
+
- src/execution/runner.ts (added plan.md loading and appending to prompt in buildPrompt function)
|
|
159
|
+
- relentless/features/ghsk-ideas/prd.json (set US-004 passes: true)
|
|
160
|
+
|
|
161
|
+
### Learnings for future iterations:
|
|
162
|
+
- **Template structure**: Plan.md follows comprehensive technical design document pattern with 15+ sections
|
|
163
|
+
- **Optional feature integration**: Used options parameter pattern for backward compatibility
|
|
164
|
+
- **Path calculation**: planPath = join(dirname(progressPath), "plan.md") mirrors existing pattern
|
|
165
|
+
- **Prompt appending**: Plan content appended after patterns, before agent starts work
|
|
166
|
+
- **Template sections**: Includes problem statement, architecture, tech stack, data models, API design, file structure, integration points, testing, security, rollout, monitoring, open questions, alternatives, risks, and success criteria
|
|
167
|
+
- **Conditional loading**: Plan only included in prompt if file exists in feature directory
|
|
168
|
+
- **Scaffolder pattern**: Copy from templates/ to feature directory when withPlan: true
|
|
169
|
+
- **relentlessRoot constant**: Already defined for template access, reused for plan.md
|
|
170
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
171
|
+
- **Interface export**: CreateFeatureOptions exported for external usage
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
## 2026-01-11T23:45:00.000Z - US-005
|
|
175
|
+
|
|
176
|
+
### What was implemented
|
|
177
|
+
- Created comprehensive quality checklist generator skill in skills/checklist/SKILL.md
|
|
178
|
+
- Skill analyzes PRD to infer appropriate domain (database, frontend, full-stack, etc.)
|
|
179
|
+
- Generates 20-40 checklist items across 5-7 domain-specific categories
|
|
180
|
+
- Ensures 80% of items reference PRD sections or mark gaps/ambiguities
|
|
181
|
+
- Provides detailed examples for database, frontend, and full-stack features
|
|
182
|
+
- Multi-agent support: works with Claude Code, Amp, Gemini, Codex, Droid
|
|
183
|
+
|
|
184
|
+
### Files changed
|
|
185
|
+
- skills/checklist/SKILL.md (created comprehensive skill documentation)
|
|
186
|
+
- relentless/features/ghsk-ideas/prd.json (set US-005 passes: true)
|
|
187
|
+
|
|
188
|
+
### Learnings for future iterations:
|
|
189
|
+
- **Skill structure pattern**: skills/[name]/SKILL.md with frontmatter (name, description, triggers)
|
|
190
|
+
- **Domain inference approach**: Analyze user stories to determine primary/secondary domains
|
|
191
|
+
- **Checklist categories**: 5-7 categories tailored to domain (Schema, Backend, Frontend, Integration, Testing, Security, Performance)
|
|
192
|
+
- **Item distribution**: 60% referenced items, 20% gaps/ambiguities, 20% best practices
|
|
193
|
+
- **Reference format**: [US-XXX], [FR-X], [Gap], [Ambiguity], [Edge Case], [Security]
|
|
194
|
+
- **Multi-agent compatibility**: Skills should work across agents by using standard capabilities (file read, text analysis, file write)
|
|
195
|
+
- **Example-driven documentation**: Comprehensive examples help agents understand expected output
|
|
196
|
+
- **Coverage tracking**: Include summary section with item counts and coverage percentage
|
|
197
|
+
- **Gap identification**: Common patterns - error handling, loading states, edge cases, security, performance, accessibility
|
|
198
|
+
- **Category selection guide**: Detailed guidance for database, frontend, and full-stack features
|
|
199
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
## 2026-01-11T17:20:00.000Z - US-006
|
|
203
|
+
|
|
204
|
+
### What was implemented
|
|
205
|
+
- Created comprehensive analyzer module in src/prd/analyzer.ts
|
|
206
|
+
- Implemented analyzeConsistency() function with 5 consistency categories
|
|
207
|
+
- Added analyze command to bin/relentless.ts CLI
|
|
208
|
+
- Exported analyzer functions from src/prd/index.ts
|
|
209
|
+
- Analyzer checks: Schema Validation, Dependency Consistency, File Existence, Story Completeness, Progress Log Sync
|
|
210
|
+
- Implemented formatReport() for beautiful console output with severity icons and coverage bars
|
|
211
|
+
|
|
212
|
+
### Files changed
|
|
213
|
+
- src/prd/analyzer.ts (created new module with consistency analysis logic)
|
|
214
|
+
- src/prd/index.ts (exported analyzer functions)
|
|
215
|
+
- bin/relentless.ts (added analyze command with --feature and --dir options)
|
|
216
|
+
- relentless/features/ghsk-ideas/prd.json (set US-006 passes: true)
|
|
217
|
+
|
|
218
|
+
### Learnings for future iterations:
|
|
219
|
+
- **Consistency categories**: 5 categories cover most common issues - schema, dependencies, files, completeness, sync
|
|
220
|
+
- **Severity levels**: critical, warning, info provide clear prioritization of issues
|
|
221
|
+
- **ConsistencyIssue interface**: category, severity, message, recommendation, storyId fields cover all use cases
|
|
222
|
+
- **AnalysisReport structure**: feature, timestamp, issues array, summary stats, coverage by phase
|
|
223
|
+
- **Schema validation**: Check for missing required fields (project, branchName, description) and story fields (id, title, acceptanceCriteria)
|
|
224
|
+
- **Dependency checking**: Detect invalid dependencies, circular dependencies using DFS, and completion inconsistencies
|
|
225
|
+
- **File existence checks**: prd.md, progress.txt, plan.md, constitution.md with appropriate severity levels
|
|
226
|
+
- **Story completeness**: Check for duplicate IDs, minimal acceptance criteria, notes on incomplete stories
|
|
227
|
+
- **Progress log sync**: Verify completed stories are mentioned in progress.txt
|
|
228
|
+
- **Coverage calculation**: Group by phase if available, otherwise show overall coverage with percentage
|
|
229
|
+
- **Report formatting**: Box-drawing characters, severity icons (🔴🟡🔵), progress bars with █ and ░
|
|
230
|
+
- **Exit codes**: Exit with error (1) if critical issues, warning message for warnings, success (0) if clean
|
|
231
|
+
- **Graceful handling**: Handle missing files without crashing, provide helpful recommendations
|
|
232
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
233
|
+
- **CLI pattern**: Consistent with other commands - requiredOption for --feature, optional --dir
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
## 2026-01-11T17:30:00.000Z - US-007
|
|
237
|
+
|
|
238
|
+
### What was implemented
|
|
239
|
+
- Created comprehensive Interactive Clarification Skill in skills/clarify/SKILL.md
|
|
240
|
+
- Skill supports scanning PRD across 9 ambiguity categories
|
|
241
|
+
- Generates max 5 highly targeted questions with multiple-choice options
|
|
242
|
+
- Includes [NEEDS CLARIFICATION] marker system (max 3 per spec)
|
|
243
|
+
- Provides clarification-log.md format for tracking questions and answers
|
|
244
|
+
- Supports PRD in-place updates after clarification
|
|
245
|
+
- Multi-agent support: Claude Code, Amp, Gemini, Codex, Droid
|
|
246
|
+
|
|
247
|
+
### Files changed
|
|
248
|
+
- skills/clarify/SKILL.md (created comprehensive skill documentation)
|
|
249
|
+
- relentless/features/ghsk-ideas/prd.json (set US-007 passes: true)
|
|
250
|
+
|
|
251
|
+
### Learnings for future iterations:
|
|
252
|
+
- **9 ambiguity categories**: Behavioral, Data, UI/UX, Integration, Permission/Security, Performance/Scale, Error Handling, State Management, Edge Case
|
|
253
|
+
- **Question format pattern**: Context → Question → Options (A/B/C/D) → Impact → Recommendation
|
|
254
|
+
- **Marker system**: [NEEDS CLARIFICATION: {category}] placed inline, max 3 per spec to avoid clutter
|
|
255
|
+
- **Interactive workflow**: Round 1 (analysis + questions) → Round 2+ (update PRD based on answers)
|
|
256
|
+
- **Clarification log structure**: Rounds with questions, answers, actions taken, summary with stats
|
|
257
|
+
- **PRD update strategy**: Update acceptance criteria, functional requirements, add new sections as needed
|
|
258
|
+
- **Question prioritization**: Focus on blocking, user-facing, architectural, security-critical items
|
|
259
|
+
- **Ambiguity detection heuristics**: Look for vague terms like "appropriately", "properly", "user-friendly"
|
|
260
|
+
- **Multi-round clarification**: Max 3 rounds - foundational → integration/edge cases → polish/performance
|
|
261
|
+
- **Multi-agent compatibility**: Skills should work across agents by using standard capabilities
|
|
262
|
+
- **Stopping conditions**: All critical ambiguities resolved, user satisfaction, or 3 rounds completed
|
|
263
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
## 2026-01-11T17:45:00.000Z - US-008
|
|
267
|
+
|
|
268
|
+
### What was implemented
|
|
269
|
+
- Created comprehensive Dependency-Ordered Task Breakdown Skill in skills/tasks/SKILL.md
|
|
270
|
+
- Skill generates phase structure: Setup → Foundation → Stories → Polish
|
|
271
|
+
- Tasks formatted with IDs (T001+), phase markers, story labels [US-X]
|
|
272
|
+
- Parallel tasks marked with [P] for tasks that can run concurrently
|
|
273
|
+
- Ensures each story is independently testable with explicit verification tasks
|
|
274
|
+
- Provides detailed examples for simple linear features and complex parallel features
|
|
275
|
+
- Multi-agent support: Claude Code, Amp, Gemini, Codex, Droid
|
|
276
|
+
|
|
277
|
+
### Files changed
|
|
278
|
+
- skills/tasks/SKILL.md (created comprehensive skill documentation)
|
|
279
|
+
- relentless/features/ghsk-ideas/prd.json (set US-008 passes: true)
|
|
280
|
+
|
|
281
|
+
### Learnings for future iterations:
|
|
282
|
+
- **4-phase structure**: Setup (dependencies) → Foundation (infrastructure) → Stories (features) → Polish (refinements)
|
|
283
|
+
- **Task ID format**: T001, T002, T003... (3-digit zero-padded for clear ordering)
|
|
284
|
+
- **Task format pattern**: `- [ ] **T[NNN]** [Phase X] [Story Label] Description [Parallel Marker]`
|
|
285
|
+
- **Phase 0 (Setup)**: Project structure, dependencies, config - required by all other phases
|
|
286
|
+
- **Phase 1 (Foundation)**: Core infrastructure, schemas, base utilities - referenced by multiple stories
|
|
287
|
+
- **Phase 2 (Stories)**: User-facing features from PRD - maps 1:1 or 1:N to user stories
|
|
288
|
+
- **Phase 3 (Polish)**: Refinements, optimizations, documentation - enhances existing functionality
|
|
289
|
+
- **Parallel markers [P]**: Used when tasks touch different files, have no shared dependencies, can be verified independently
|
|
290
|
+
- **Independent testability**: Each story includes explicit test/verification tasks (typecheck, lint)
|
|
291
|
+
- **Dependency ordering**: Within phases, tasks sequential by default unless marked [P]; across phases, strict order
|
|
292
|
+
- **Task granularity**: Right-sized tasks should take 15-60 minutes each
|
|
293
|
+
- **Circular dependency detection**: Skill includes guidance for detecting and resolving circular dependencies
|
|
294
|
+
- **Research task pattern**: Stories with research flag get two-phase breakdown (research → implementation)
|
|
295
|
+
- **Template structure**: Comprehensive template with overview, phase sections, summary statistics
|
|
296
|
+
- **Examples provided**: Simple linear feature and complex parallel feature examples for clarity
|
|
297
|
+
- **Quality checklist**: 13-point verification checklist before saving tasks.md
|
|
298
|
+
- **Multi-agent compatibility**: Works across agents using standard capabilities (file read, text analysis, file write)
|
|
299
|
+
- **Common pitfalls**: Documented avoid/do patterns for task size, dependencies, testing, grouping
|
|
300
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
301
|
+
|
|
302
|
+
---
|
|
303
|
+
## 2026-01-11T20:00:00.000Z - US-009
|
|
304
|
+
|
|
305
|
+
### What was implemented
|
|
306
|
+
- Extended UserStory schema with optional research field
|
|
307
|
+
- Implemented two-phase execution in Runner for stories with research: true flag
|
|
308
|
+
- Created research directory creation and management in runner
|
|
309
|
+
- Added research findings loading in buildPrompt() for second phase
|
|
310
|
+
- Updated prompt template with clear research phase instructions
|
|
311
|
+
- Added research field parsing support in PRD markdown parser
|
|
312
|
+
|
|
313
|
+
### Files changed
|
|
314
|
+
- src/prd/types.ts (added research: z.boolean().optional() to UserStorySchema)
|
|
315
|
+
- src/execution/runner.ts (added two-phase execution logic, research directory creation, research findings loading)
|
|
316
|
+
- src/prd/parser.ts (added research field parsing and mapping in createPRD)
|
|
317
|
+
- relentless/prompt.md (added Research Phase and Implementation Phase sections)
|
|
318
|
+
- relentless/features/ghsk-ideas/prd.json (set US-009 passes: true)
|
|
319
|
+
|
|
320
|
+
### Learnings for future iterations:
|
|
321
|
+
- **Two-phase execution pattern**: Check for research flag and research file existence to determine phase
|
|
322
|
+
- **Research directory structure**: research/<story-id>.md within feature directory
|
|
323
|
+
- **Phase detection**: needsResearch = story.research && !existsSync(researchPath)
|
|
324
|
+
- **Research phase workflow**: Phase 1 explores and documents, Phase 2 implements using findings
|
|
325
|
+
- **Prompt building signature**: Extended buildPrompt() with optional story parameter for context-aware loading
|
|
326
|
+
- **Research findings integration**: Loaded automatically in buildPrompt if research file exists
|
|
327
|
+
- **Parser pattern**: Added Research: true/yes parsing similar to Parallel flag parsing
|
|
328
|
+
- **Schema extension**: Optional boolean field using .optional() maintains backward compatibility
|
|
329
|
+
- **Directory creation**: Use mkdirSync with { recursive: true } for nested directory creation
|
|
330
|
+
- **Rate limit handling**: Research phase includes rate limit detection and fallback logic
|
|
331
|
+
- **Visual feedback**: Different console messages for research vs implementation phases
|
|
332
|
+
- **Iteration continuation**: Research phase can trigger agent fallback and iteration retry
|
|
333
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
334
|
+
- **Import additions**: Added mkdirSync from node:fs for directory creation
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
## 2026-01-11T17:35:00.000Z - US-010
|
|
338
|
+
|
|
339
|
+
### What was implemented
|
|
340
|
+
- Extended CreateFeatureOptions interface with autoNumber field
|
|
341
|
+
- Implemented getNextFeatureNumber() helper to find highest existing number
|
|
342
|
+
- Updated createFeature() to generate numbered directory names (001-feature-name)
|
|
343
|
+
- Updated generateBranchName() to prepend number prefix from feature name to branch name
|
|
344
|
+
- Extended createPRD() to accept optional featureName parameter
|
|
345
|
+
- Added --auto-number flag to features create CLI command
|
|
346
|
+
- Added --auto-number flag to convert CLI command
|
|
347
|
+
- Updated CLI commands to extract and use final feature name in output
|
|
348
|
+
|
|
349
|
+
### Files changed
|
|
350
|
+
- src/init/scaffolder.ts (added autoNumber option, getNextFeatureNumber helper, numbered directory creation)
|
|
351
|
+
- src/prd/parser.ts (updated generateBranchName and createPRD to support number prefix)
|
|
352
|
+
- bin/relentless.ts (added --auto-number flags to features create and convert commands)
|
|
353
|
+
- relentless/features/ghsk-ideas/prd.json (set US-010 passes: true)
|
|
354
|
+
|
|
355
|
+
### Learnings for future iterations:
|
|
356
|
+
- **Auto-numbering pattern**: Extract number from existing features with regex /^(\d{3})-/
|
|
357
|
+
- **Number formatting**: Use .padStart(3, "0") for consistent 3-digit zero-padded numbers
|
|
358
|
+
- **Next number calculation**: Find max of existing numbers and add 1, default to 1 if none exist
|
|
359
|
+
- **Feature name handling**: Auto-number creates final name (001-feature) then uses it everywhere
|
|
360
|
+
- **Branch name integration**: Extract number prefix from feature name and prepend to kebab-case project name
|
|
361
|
+
- **Optional parameter pattern**: featureName parameter in createPRD and generateBranchName allows number-aware branch generation
|
|
362
|
+
- **CLI flag pattern**: --auto-number boolean flag on both create and convert commands
|
|
363
|
+
- **Backward compatibility**: Non-numbered features still work - regex match returns null for non-numbered names
|
|
364
|
+
- **listFeatures compatibility**: No changes needed - function returns directory names as-is
|
|
365
|
+
- **Number extraction logic**: Shared pattern in convert command and getNextFeatureNumber helper
|
|
366
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
367
|
+
- **Feature name extraction**: Use .split("/").pop() to get final directory name from full path
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
## 2026-01-11T21:00:00.000Z - US-011
|
|
371
|
+
|
|
372
|
+
### What was implemented
|
|
373
|
+
- Created comprehensive GitHub Issues Generator module in src/prd/issues.ts
|
|
374
|
+
- Implemented validateGitRemote() to ensure safety before creating issues
|
|
375
|
+
- Implemented inferLabels() to automatically tag issues with type, priority, phase, research labels
|
|
376
|
+
- Implemented formatIssueBody() to create well-formatted issue bodies with description, acceptance criteria, dependencies, phase, parallel, research indicators, and notes
|
|
377
|
+
- Implemented createIssue() to create GitHub issues via gh CLI
|
|
378
|
+
- Added checkGhCLI() to validate gh CLI is installed
|
|
379
|
+
- Implemented generateGitHubIssues() main orchestration function with dry-run and filtering options
|
|
380
|
+
- Added issues command to bin/relentless.ts CLI with --all and --dry-run flags
|
|
381
|
+
- Exported issues module from src/prd/index.ts
|
|
382
|
+
|
|
383
|
+
### Files changed
|
|
384
|
+
- src/prd/issues.ts (created new module with GitHub issues generation logic)
|
|
385
|
+
- src/prd/index.ts (exported issues module)
|
|
386
|
+
- bin/relentless.ts (added issues command with comprehensive options)
|
|
387
|
+
- relentless/features/ghsk-ideas/prd.json (set US-011 passes: true)
|
|
388
|
+
|
|
389
|
+
### Learnings for future iterations:
|
|
390
|
+
- **Git remote validation**: Parse both SSH (git@github.com:owner/repo) and HTTPS (https://github.com/owner/repo) formats
|
|
391
|
+
- **Regex patterns for remotes**: Use capturing groups to extract owner and repo from various URL formats
|
|
392
|
+
- **Label inference strategy**: Combine story type (database, ui, api, test, refactor, docs, general), priority (high/medium/low), phase, and research markers
|
|
393
|
+
- **Priority label mapping**: Priority 1-3 = high, 4-6 = medium, 7+ = low
|
|
394
|
+
- **Issue body formatting**: Use markdown with ## headers, checkboxes for acceptance criteria, dependency lists, and warning indicators
|
|
395
|
+
- **gh CLI integration**: Use gh issue create --title --body --label for issue creation
|
|
396
|
+
- **Process handling in Bun**: Use Bun.spawn() with stdout/stderr readers and exitCode checking
|
|
397
|
+
- **Dry-run pattern**: Preview operations without side effects, helpful for validation
|
|
398
|
+
- **onlyIncomplete filter**: Default to only creating issues for incomplete stories, --all flag for all stories
|
|
399
|
+
- **Error accumulation**: Collect errors during batch operations, continue on individual failures
|
|
400
|
+
- **Safety checks**: Validate gh CLI installation and git remote before any destructive operations
|
|
401
|
+
- **Issue URL extraction**: gh CLI returns the created issue URL in stdout
|
|
402
|
+
- **Dependency mapping**: Include dependencies in issue body for manual linking (gh CLI doesn't support automated relationships)
|
|
403
|
+
- **Research indicator**: Add ⚠️ warning emoji for stories requiring research phase
|
|
404
|
+
- **Parallel indicator**: Document stories that can run in parallel for better planning
|
|
405
|
+
- **Typecheck and lint**: Both passed with 0 errors/warnings - clean implementation
|
|
406
|
+
- **CLI option pattern**: --dry-run for preview, --all for including completed stories, --feature required
|
|
407
|
+
|
|
408
|
+
---
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# Relentless Agent Instructions
|
|
2
|
+
|
|
3
|
+
You are an autonomous coding agent working on a software project.
|
|
4
|
+
|
|
5
|
+
## Before You Start
|
|
6
|
+
|
|
7
|
+
1. **Review the codebase** - Understand the current state, architecture, and patterns
|
|
8
|
+
2. **Read progress.txt** - Check the Codebase Patterns section for learnings from previous iterations
|
|
9
|
+
3. **Read the PRD** - Understand what needs to be done
|
|
10
|
+
|
|
11
|
+
## Your Task
|
|
12
|
+
|
|
13
|
+
1. Read the PRD at `relentless/features/<feature>/prd.json`
|
|
14
|
+
2. Read the progress log at `relentless/features/<feature>/progress.txt`
|
|
15
|
+
3. Check you're on the correct branch from PRD `branchName`. If not, check it out or create from main.
|
|
16
|
+
4. Pick the **highest priority** user story where `passes: false`
|
|
17
|
+
5. **Review relevant code** before implementing - understand existing patterns
|
|
18
|
+
|
|
19
|
+
### Research Phase (if story has `research: true`)
|
|
20
|
+
|
|
21
|
+
If the current story has `research: true` and no research file exists yet:
|
|
22
|
+
|
|
23
|
+
1. **Explore the codebase** - Find relevant files, patterns, and dependencies
|
|
24
|
+
2. **Document findings** in `relentless/features/<feature>/research/<story-id>.md`:
|
|
25
|
+
- Existing patterns that should be followed
|
|
26
|
+
- Files that will likely need modification
|
|
27
|
+
- Dependencies and integration points
|
|
28
|
+
- Potential gotchas or edge cases
|
|
29
|
+
- Recommended implementation approach
|
|
30
|
+
3. **Do NOT implement** - only research and document
|
|
31
|
+
4. Save your findings to the research file and end your turn
|
|
32
|
+
|
|
33
|
+
### Implementation Phase
|
|
34
|
+
|
|
35
|
+
If research findings exist (or research is not required):
|
|
36
|
+
|
|
37
|
+
6. Implement that single user story (using research findings if available)
|
|
38
|
+
7. Run quality checks (typecheck, lint, test - whatever your project requires)
|
|
39
|
+
8. If checks pass, commit ALL changes with message: `feat: [Story ID] - [Story Title]`
|
|
40
|
+
9. Update the PRD to set `passes: true` for the completed story
|
|
41
|
+
10. Append your progress to `relentless/features/<feature>/progress.txt`
|
|
42
|
+
|
|
43
|
+
## Progress Report Format
|
|
44
|
+
|
|
45
|
+
APPEND to progress.txt (never replace, always append):
|
|
46
|
+
```
|
|
47
|
+
## [Date/Time] - [Story ID]
|
|
48
|
+
- What was implemented
|
|
49
|
+
- Files changed
|
|
50
|
+
- **Learnings for future iterations:**
|
|
51
|
+
- Patterns discovered
|
|
52
|
+
- Gotchas encountered
|
|
53
|
+
- Useful context
|
|
54
|
+
---
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Quality Requirements
|
|
58
|
+
|
|
59
|
+
- ALL commits must pass your project's quality checks (typecheck, lint, test)
|
|
60
|
+
- Do NOT commit broken code
|
|
61
|
+
- Keep changes focused and minimal
|
|
62
|
+
- Follow existing code patterns
|
|
63
|
+
- Review code before modifying it
|
|
64
|
+
|
|
65
|
+
## Stop Condition
|
|
66
|
+
|
|
67
|
+
After completing a user story, check if ALL stories have `passes: true`.
|
|
68
|
+
|
|
69
|
+
If ALL stories are complete and passing, reply with:
|
|
70
|
+
<promise>COMPLETE</promise>
|
|
71
|
+
|
|
72
|
+
If there are still stories with `passes: false`, end your response normally (another iteration will pick up the next story).
|
|
73
|
+
|
|
74
|
+
## Important
|
|
75
|
+
|
|
76
|
+
- Work on ONE story per iteration
|
|
77
|
+
- Review existing code before implementing
|
|
78
|
+
- Commit frequently
|
|
79
|
+
- Keep CI green
|