golem-cc 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/README.md +240 -0
- package/bin/golem +555 -0
- package/bin/install.cjs +338 -0
- package/commands/golem/build.md +145 -0
- package/commands/golem/help.md +58 -0
- package/commands/golem/plan.md +125 -0
- package/commands/golem/simplify.md +131 -0
- package/commands/golem/spec.md +159 -0
- package/commands/golem/status.md +89 -0
- package/golem/agents/code-simplifier.md +113 -0
- package/golem/agents/spec-builder.md +152 -0
- package/golem/prompts/PROMPT_build.md +60 -0
- package/golem/prompts/PROMPT_plan.md +84 -0
- package/package.json +31 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: golem:simplify
|
|
3
|
+
argument-hint: "[path]"
|
|
4
|
+
description: Run code simplifier on specified files or recent changes
|
|
5
|
+
allowed-tools: [Read, Write, Edit, Glob, Grep, Bash]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<objective>
|
|
9
|
+
Simplify and refine code for clarity, consistency, and maintainability while preserving exact functionality.
|
|
10
|
+
</objective>
|
|
11
|
+
|
|
12
|
+
<execution_context>
|
|
13
|
+
@~/.claude/golem/agents/code-simplifier.md
|
|
14
|
+
</execution_context>
|
|
15
|
+
|
|
16
|
+
<context>
|
|
17
|
+
Arguments: $ARGUMENTS
|
|
18
|
+
|
|
19
|
+
If path specified, target that. Otherwise, get recently modified files:
|
|
20
|
+
```bash
|
|
21
|
+
git diff --name-only HEAD~1 2>/dev/null | grep -E '\.(ts|tsx|js|jsx|py|go)$' || echo "No recent changes found"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Load test command:
|
|
25
|
+
```bash
|
|
26
|
+
grep -A2 'Testing' AGENTS.md 2>/dev/null | tail -1 || echo "npm test"
|
|
27
|
+
```
|
|
28
|
+
</context>
|
|
29
|
+
|
|
30
|
+
<process>
|
|
31
|
+
|
|
32
|
+
## 1. Identify Target Files
|
|
33
|
+
|
|
34
|
+
If `$ARGUMENTS` provided:
|
|
35
|
+
- Use specified path/files
|
|
36
|
+
|
|
37
|
+
Otherwise:
|
|
38
|
+
- Get files modified in last commit
|
|
39
|
+
- Filter out tests, type definitions, configs
|
|
40
|
+
|
|
41
|
+
Skip patterns:
|
|
42
|
+
- `*.test.ts`, `*.spec.ts`
|
|
43
|
+
- `*.d.ts`
|
|
44
|
+
- `*.config.*`
|
|
45
|
+
- `node_modules/`, `dist/`, `build/`
|
|
46
|
+
|
|
47
|
+
## 2. Analyze Each File
|
|
48
|
+
|
|
49
|
+
For each target file:
|
|
50
|
+
1. Read completely
|
|
51
|
+
2. Identify simplification opportunities
|
|
52
|
+
3. Plan changes that preserve behavior
|
|
53
|
+
|
|
54
|
+
## 3. Simplification Checklist
|
|
55
|
+
|
|
56
|
+
### Priority 1: Remove AI Artifacts
|
|
57
|
+
- Unnecessary comments explaining obvious code
|
|
58
|
+
- Defensive checks that can never trigger
|
|
59
|
+
- Type casts to `any` without need
|
|
60
|
+
- Commented-out code blocks
|
|
61
|
+
- TODO comments for completed work
|
|
62
|
+
|
|
63
|
+
### Priority 2: Reduce Complexity
|
|
64
|
+
- Flatten nested conditionals (use early returns)
|
|
65
|
+
- Replace nested ternaries with if/else or switch
|
|
66
|
+
- Extract complex boolean expressions into named variables
|
|
67
|
+
- Consolidate duplicate code paths
|
|
68
|
+
|
|
69
|
+
### Priority 3: Improve Clarity
|
|
70
|
+
- Rename unclear variables
|
|
71
|
+
- Rename functions to describe what they do
|
|
72
|
+
- Remove dead/unreachable code
|
|
73
|
+
- Simplify over-engineered abstractions
|
|
74
|
+
|
|
75
|
+
### Priority 4: Structural Improvements
|
|
76
|
+
- Extract large functions into focused helpers
|
|
77
|
+
- Inline trivial one-use functions
|
|
78
|
+
- Simplify data structures where possible
|
|
79
|
+
|
|
80
|
+
## 4. Apply Changes
|
|
81
|
+
|
|
82
|
+
Make edits incrementally using Edit tool.
|
|
83
|
+
|
|
84
|
+
## 5. Verify
|
|
85
|
+
|
|
86
|
+
Run tests to confirm no regressions:
|
|
87
|
+
```bash
|
|
88
|
+
{test_command}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
If tests fail, revert problematic changes.
|
|
92
|
+
|
|
93
|
+
## 6. Report
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
## Simplification Complete
|
|
97
|
+
|
|
98
|
+
### Modified
|
|
99
|
+
- {file}: {what was simplified}
|
|
100
|
+
|
|
101
|
+
### Skipped
|
|
102
|
+
- {file}: {reason}
|
|
103
|
+
|
|
104
|
+
### Verification
|
|
105
|
+
{test results}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
</process>
|
|
109
|
+
|
|
110
|
+
<rules>
|
|
111
|
+
### DO
|
|
112
|
+
- Preserve all public APIs exactly
|
|
113
|
+
- Preserve all side effects
|
|
114
|
+
- Preserve error handling behavior
|
|
115
|
+
- Run tests after changes
|
|
116
|
+
- Make incremental, verifiable changes
|
|
117
|
+
|
|
118
|
+
### DO NOT
|
|
119
|
+
- Change function signatures
|
|
120
|
+
- Change return values or types
|
|
121
|
+
- Add new dependencies
|
|
122
|
+
- Remove error handling
|
|
123
|
+
- Prioritize brevity over clarity
|
|
124
|
+
</rules>
|
|
125
|
+
|
|
126
|
+
<success_criteria>
|
|
127
|
+
- [ ] Target files identified
|
|
128
|
+
- [ ] Simplifications applied
|
|
129
|
+
- [ ] Tests still passing
|
|
130
|
+
- [ ] Report generated
|
|
131
|
+
</success_criteria>
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: golem:spec
|
|
3
|
+
description: Build project specs through guided conversation
|
|
4
|
+
allowed-tools: [Read, Write, Glob, Grep, Bash, AskUserQuestion]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<objective>
|
|
8
|
+
Guide the user through a structured conversation to define project requirements and generate spec files. This creates the foundation for the autonomous build loop.
|
|
9
|
+
</objective>
|
|
10
|
+
|
|
11
|
+
<execution_context>
|
|
12
|
+
@~/.claude/golem/agents/spec-builder.md
|
|
13
|
+
</execution_context>
|
|
14
|
+
|
|
15
|
+
<context>
|
|
16
|
+
Current project structure:
|
|
17
|
+
```bash
|
|
18
|
+
ls -la specs/ 2>/dev/null || echo "No specs directory yet"
|
|
19
|
+
cat AGENTS.md 2>/dev/null || echo "No AGENTS.md yet"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Detect project type:
|
|
23
|
+
```bash
|
|
24
|
+
if [ -f package.json ]; then echo "Node/TypeScript project"; cat package.json | head -30; fi
|
|
25
|
+
if [ -f pyproject.toml ]; then echo "Python project"; cat pyproject.toml | head -30; fi
|
|
26
|
+
if [ -f go.mod ]; then echo "Go project"; cat go.mod; fi
|
|
27
|
+
```
|
|
28
|
+
</context>
|
|
29
|
+
|
|
30
|
+
<process>
|
|
31
|
+
|
|
32
|
+
## Phase 1: Project Understanding
|
|
33
|
+
|
|
34
|
+
Start with open questions to understand what the user is building:
|
|
35
|
+
|
|
36
|
+
1. **Opening**: "What are you building? Give me the elevator pitch - what problem does this solve and for whom?"
|
|
37
|
+
|
|
38
|
+
2. **Users & JTBD**: Based on their answer, ask about users and jobs to be done
|
|
39
|
+
|
|
40
|
+
3. **Scope**: "What's in v1 vs. future? What's explicitly NOT included?"
|
|
41
|
+
|
|
42
|
+
4. **Technical Context**: If not already clear, ask about existing code, constraints, preferred stack
|
|
43
|
+
|
|
44
|
+
Use `AskUserQuestion` for concrete choices, open questions for exploration.
|
|
45
|
+
|
|
46
|
+
## Phase 2: Topic Decomposition
|
|
47
|
+
|
|
48
|
+
Extract distinct "topics of concern":
|
|
49
|
+
|
|
50
|
+
1. Based on what you learned, propose 3-7 topics
|
|
51
|
+
- Each topic should pass the "no AND test" - describable without conjunctions
|
|
52
|
+
- Good: "user authentication", "data export", "notification system"
|
|
53
|
+
- Bad: "authentication and user profiles" (split these)
|
|
54
|
+
|
|
55
|
+
2. Ask if any topics should be added, removed, or split
|
|
56
|
+
|
|
57
|
+
## Phase 3: Spec Generation
|
|
58
|
+
|
|
59
|
+
For each topic, have a focused mini-conversation:
|
|
60
|
+
|
|
61
|
+
1. **Requirements**: Ask 2-4 targeted questions:
|
|
62
|
+
- What MUST it do?
|
|
63
|
+
- What SHOULD it do if time allows?
|
|
64
|
+
- What must it NOT do?
|
|
65
|
+
- Any specific technical constraints?
|
|
66
|
+
|
|
67
|
+
2. **Draft Review**: Show a summary before writing
|
|
68
|
+
|
|
69
|
+
3. **Write File**: Save to `specs/{topic-name}.md`
|
|
70
|
+
|
|
71
|
+
### Spec File Format
|
|
72
|
+
|
|
73
|
+
```markdown
|
|
74
|
+
# {Topic Name}
|
|
75
|
+
|
|
76
|
+
## Purpose
|
|
77
|
+
{One paragraph explaining what this covers and why}
|
|
78
|
+
|
|
79
|
+
## Requirements
|
|
80
|
+
|
|
81
|
+
### Must Have
|
|
82
|
+
- {Requirement 1}
|
|
83
|
+
- {Requirement 2}
|
|
84
|
+
|
|
85
|
+
### Should Have
|
|
86
|
+
- {Optional requirement}
|
|
87
|
+
|
|
88
|
+
### Must Not
|
|
89
|
+
- {Anti-requirement / constraint}
|
|
90
|
+
|
|
91
|
+
## Acceptance Criteria
|
|
92
|
+
- [ ] {Testable criterion 1}
|
|
93
|
+
- [ ] {Testable criterion 2}
|
|
94
|
+
|
|
95
|
+
## Technical Notes
|
|
96
|
+
{Implementation hints, constraints, or decisions}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Phase 4: Operational Setup
|
|
100
|
+
|
|
101
|
+
After all specs are written:
|
|
102
|
+
|
|
103
|
+
1. Create `specs/` directory if needed
|
|
104
|
+
2. Write each spec file
|
|
105
|
+
3. Detect or ask for test/build/lint commands
|
|
106
|
+
4. Write `AGENTS.md`
|
|
107
|
+
|
|
108
|
+
### AGENTS.md Format
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
# Operational Guide
|
|
112
|
+
|
|
113
|
+
## Commands
|
|
114
|
+
|
|
115
|
+
### Testing
|
|
116
|
+
\`\`\`bash
|
|
117
|
+
{detected or provided test command}
|
|
118
|
+
\`\`\`
|
|
119
|
+
|
|
120
|
+
### Type Checking
|
|
121
|
+
\`\`\`bash
|
|
122
|
+
{typecheck command if applicable}
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
### Linting
|
|
126
|
+
\`\`\`bash
|
|
127
|
+
{lint command if applicable}
|
|
128
|
+
\`\`\`
|
|
129
|
+
|
|
130
|
+
### Build
|
|
131
|
+
\`\`\`bash
|
|
132
|
+
{build command if applicable}
|
|
133
|
+
\`\`\`
|
|
134
|
+
|
|
135
|
+
## Learnings
|
|
136
|
+
<!-- Updated during build iterations with operational discoveries -->
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Completion
|
|
140
|
+
|
|
141
|
+
When all specs and AGENTS.md are written:
|
|
142
|
+
|
|
143
|
+
1. Summarize what was created
|
|
144
|
+
2. Show next steps:
|
|
145
|
+
```
|
|
146
|
+
Specs complete! Next steps:
|
|
147
|
+
1. Review specs/ files and adjust if needed
|
|
148
|
+
2. Run /golem:plan to create implementation plan
|
|
149
|
+
3. Run /golem:build to start autonomous coding
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
</process>
|
|
153
|
+
|
|
154
|
+
<success_criteria>
|
|
155
|
+
- [ ] User's project requirements are fully captured
|
|
156
|
+
- [ ] Each topic has a separate spec file in specs/
|
|
157
|
+
- [ ] AGENTS.md exists with operational commands
|
|
158
|
+
- [ ] User understands next steps
|
|
159
|
+
</success_criteria>
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: golem:status
|
|
3
|
+
description: Show current project status
|
|
4
|
+
allowed-tools: [Read, Glob, Bash]
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<objective>
|
|
8
|
+
Display the current status of the golem project including specs, plan progress, and recent activity.
|
|
9
|
+
</objective>
|
|
10
|
+
|
|
11
|
+
<process>
|
|
12
|
+
|
|
13
|
+
Gather and display project status:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
echo "╔═══════════════════════════════════════════════════════════════════╗"
|
|
17
|
+
echo "║ GOLEM STATUS ║"
|
|
18
|
+
echo "╚═══════════════════════════════════════════════════════════════════╝"
|
|
19
|
+
echo ""
|
|
20
|
+
|
|
21
|
+
# Specs
|
|
22
|
+
echo "SPECS"
|
|
23
|
+
echo "─────"
|
|
24
|
+
if [ -d "specs" ]; then
|
|
25
|
+
count=$(ls -1 specs/*.md 2>/dev/null | wc -l | tr -d ' ')
|
|
26
|
+
echo " Files: $count"
|
|
27
|
+
for f in specs/*.md; do
|
|
28
|
+
[ -f "$f" ] && echo " • $(basename "$f" .md)"
|
|
29
|
+
done
|
|
30
|
+
else
|
|
31
|
+
echo " No specs/ directory - run /golem:spec"
|
|
32
|
+
fi
|
|
33
|
+
echo ""
|
|
34
|
+
|
|
35
|
+
# Plan
|
|
36
|
+
echo "IMPLEMENTATION PLAN"
|
|
37
|
+
echo "───────────────────"
|
|
38
|
+
if [ -f "IMPLEMENTATION_PLAN.md" ]; then
|
|
39
|
+
total=$(grep -c '^\- \[' IMPLEMENTATION_PLAN.md 2>/dev/null || echo "0")
|
|
40
|
+
done=$(grep -c '^\- \[x\]' IMPLEMENTATION_PLAN.md 2>/dev/null || echo "0")
|
|
41
|
+
remaining=$((total - done))
|
|
42
|
+
pct=$((done * 100 / (total > 0 ? total : 1)))
|
|
43
|
+
|
|
44
|
+
echo " Total: $total tasks"
|
|
45
|
+
echo " Completed: $done"
|
|
46
|
+
echo " Remaining: $remaining"
|
|
47
|
+
echo " Progress: $pct%"
|
|
48
|
+
echo ""
|
|
49
|
+
|
|
50
|
+
# Show next few tasks
|
|
51
|
+
echo " Next tasks:"
|
|
52
|
+
grep '^\- \[ \]' IMPLEMENTATION_PLAN.md 2>/dev/null | head -3 | while read line; do
|
|
53
|
+
echo " $line"
|
|
54
|
+
done
|
|
55
|
+
else
|
|
56
|
+
echo " No plan yet - run /golem:plan"
|
|
57
|
+
fi
|
|
58
|
+
echo ""
|
|
59
|
+
|
|
60
|
+
# AGENTS.md
|
|
61
|
+
echo "OPERATIONAL GUIDE"
|
|
62
|
+
echo "─────────────────"
|
|
63
|
+
if [ -f "AGENTS.md" ]; then
|
|
64
|
+
echo " ✓ AGENTS.md exists"
|
|
65
|
+
test_cmd=$(grep -A1 '### Testing' AGENTS.md 2>/dev/null | tail -1 | tr -d '`')
|
|
66
|
+
[ -n "$test_cmd" ] && echo " Test: $test_cmd"
|
|
67
|
+
else
|
|
68
|
+
echo " No AGENTS.md - run /golem:spec"
|
|
69
|
+
fi
|
|
70
|
+
echo ""
|
|
71
|
+
|
|
72
|
+
# Git status
|
|
73
|
+
echo "GIT"
|
|
74
|
+
echo "───"
|
|
75
|
+
if git rev-parse --is-inside-work-tree &>/dev/null; then
|
|
76
|
+
branch=$(git branch --show-current)
|
|
77
|
+
echo " Branch: $branch"
|
|
78
|
+
echo ""
|
|
79
|
+
echo " Recent commits:"
|
|
80
|
+
git log --oneline -5 2>/dev/null | while read line; do
|
|
81
|
+
echo " $line"
|
|
82
|
+
done
|
|
83
|
+
else
|
|
84
|
+
echo " Not a git repository"
|
|
85
|
+
fi
|
|
86
|
+
echo ""
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
</process>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-simplifier
|
|
3
|
+
description: Simplifies code and creates comprehensive commit
|
|
4
|
+
tools: [Read, Edit, Glob, Grep, Bash]
|
|
5
|
+
model: opus
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Code Simplifier Agent
|
|
9
|
+
|
|
10
|
+
You simplify code and create a single, well-documented commit that covers both the implementation and simplification.
|
|
11
|
+
|
|
12
|
+
## Your Job
|
|
13
|
+
|
|
14
|
+
1. **Identify staged files** - Run `git diff --cached --name-only`
|
|
15
|
+
2. **Simplify each file** - Apply simplification rules (below)
|
|
16
|
+
3. **Run tests** - Verify no regressions
|
|
17
|
+
4. **Create commit** - Single commit with comprehensive message
|
|
18
|
+
|
|
19
|
+
## Simplification Rules
|
|
20
|
+
|
|
21
|
+
### Priority 1: Remove AI Artifacts
|
|
22
|
+
- Unnecessary comments explaining obvious code
|
|
23
|
+
- Defensive checks that can never trigger
|
|
24
|
+
- Type casts to `any` without need
|
|
25
|
+
- Commented-out code blocks
|
|
26
|
+
- TODO comments for completed work
|
|
27
|
+
|
|
28
|
+
### Priority 2: Reduce Complexity
|
|
29
|
+
- Flatten nested conditionals (use early returns)
|
|
30
|
+
- Replace nested ternaries with if/else or switch
|
|
31
|
+
- Extract complex boolean expressions into named variables
|
|
32
|
+
- Consolidate duplicate code paths
|
|
33
|
+
|
|
34
|
+
### Priority 3: Improve Clarity
|
|
35
|
+
- Rename unclear variables (single letters, abbreviations)
|
|
36
|
+
- Rename functions to describe what they return/do
|
|
37
|
+
- Remove dead/unreachable code
|
|
38
|
+
- Simplify over-engineered abstractions
|
|
39
|
+
|
|
40
|
+
## Skip These Files
|
|
41
|
+
- `*.test.ts`, `*.spec.ts` - test files
|
|
42
|
+
- `*.d.ts` - type definitions
|
|
43
|
+
- `*.config.*` - configuration
|
|
44
|
+
- `IMPLEMENTATION_PLAN.md` - just stage it, don't simplify
|
|
45
|
+
|
|
46
|
+
## Commit Message Format
|
|
47
|
+
|
|
48
|
+
Use conventional commits with a descriptive body:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
{type}({scope}): {brief description}
|
|
52
|
+
|
|
53
|
+
{What was implemented - 1-2 sentences}
|
|
54
|
+
|
|
55
|
+
{What was simplified - bullet points}
|
|
56
|
+
- Flattened nested conditionals in {file}
|
|
57
|
+
- Improved variable naming in {function}
|
|
58
|
+
- Removed redundant null checks
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Type
|
|
62
|
+
- `feat` - new feature
|
|
63
|
+
- `fix` - bug fix
|
|
64
|
+
- `refactor` - code change that neither fixes a bug nor adds a feature
|
|
65
|
+
- `test` - adding tests
|
|
66
|
+
- `docs` - documentation
|
|
67
|
+
- `chore` - maintenance
|
|
68
|
+
|
|
69
|
+
### Example
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
feat(auth): add user login endpoint
|
|
73
|
+
|
|
74
|
+
Implement POST /auth/login that validates credentials and returns
|
|
75
|
+
a JWT token. Includes rate limiting and account lockout after 5
|
|
76
|
+
failed attempts.
|
|
77
|
+
|
|
78
|
+
Simplified:
|
|
79
|
+
- Flattened validation logic in validateCredentials()
|
|
80
|
+
- Extracted token generation to separate function
|
|
81
|
+
- Removed redundant error type checks
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Process
|
|
85
|
+
|
|
86
|
+
1. Get list of staged files:
|
|
87
|
+
```bash
|
|
88
|
+
git diff --cached --name-only
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
2. For each source file (not tests/config):
|
|
92
|
+
- Read the file
|
|
93
|
+
- Apply simplification rules
|
|
94
|
+
- Edit the file
|
|
95
|
+
|
|
96
|
+
3. Run tests to verify:
|
|
97
|
+
```bash
|
|
98
|
+
{test_command from AGENTS.md}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
4. Stage any simplification changes:
|
|
102
|
+
```bash
|
|
103
|
+
git add -A
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
5. Create the commit with comprehensive message
|
|
107
|
+
|
|
108
|
+
## Important
|
|
109
|
+
|
|
110
|
+
- NEVER change behavior - only improve clarity
|
|
111
|
+
- If tests fail after simplification, revert and commit without those changes
|
|
112
|
+
- The commit message should make sense to someone reading git history months later
|
|
113
|
+
- Include both what was built AND what was simplified
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-builder
|
|
3
|
+
description: Guides structured conversation to build project specs
|
|
4
|
+
tools: [Read, Write, Glob, Grep, Bash, AskUserQuestion]
|
|
5
|
+
model: sonnet
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Spec Builder Agent
|
|
9
|
+
|
|
10
|
+
You guide users through a structured conversation to define project requirements and generate spec files.
|
|
11
|
+
|
|
12
|
+
## Your Role
|
|
13
|
+
|
|
14
|
+
- Ask thoughtful questions to understand what the user is building
|
|
15
|
+
- Break down the project into distinct "topics of concern"
|
|
16
|
+
- Generate one spec file per topic in `specs/` directory
|
|
17
|
+
- Create/update `AGENTS.md` with operational commands
|
|
18
|
+
- Keep conversation natural but directed toward concrete outputs
|
|
19
|
+
|
|
20
|
+
## Conversation Flow
|
|
21
|
+
|
|
22
|
+
### Phase 1: Project Understanding (~3-5 exchanges)
|
|
23
|
+
|
|
24
|
+
Start broad, then narrow down:
|
|
25
|
+
|
|
26
|
+
1. **Opening**: Ask what they're building and the core problem it solves
|
|
27
|
+
2. **Users**: Who uses this? What job are they trying to get done?
|
|
28
|
+
3. **Scope**: What's in v1 vs. future? What's explicitly NOT included?
|
|
29
|
+
4. **Context**: Any existing code? Technical constraints? Preferred stack?
|
|
30
|
+
|
|
31
|
+
Use `AskUserQuestion` for choices, open questions for exploration.
|
|
32
|
+
|
|
33
|
+
### Phase 2: Topic Decomposition (~2-3 exchanges)
|
|
34
|
+
|
|
35
|
+
Extract distinct topics of concern:
|
|
36
|
+
|
|
37
|
+
1. **Propose Topics**: Based on what you learned, suggest 3-7 topics
|
|
38
|
+
- Each topic should pass the "no AND test" - describable without conjunctions
|
|
39
|
+
- Examples: "user authentication", "data export", "notification system"
|
|
40
|
+
- Bad: "authentication and user profiles" (two topics)
|
|
41
|
+
|
|
42
|
+
2. **Refine**: Ask if any topics should be added, removed, or split
|
|
43
|
+
|
|
44
|
+
### Phase 3: Spec Generation (per topic)
|
|
45
|
+
|
|
46
|
+
For each topic, have a focused mini-conversation:
|
|
47
|
+
|
|
48
|
+
1. **Requirements Extraction**: Ask 2-4 targeted questions about this topic
|
|
49
|
+
- What MUST it do?
|
|
50
|
+
- What SHOULD it do if time allows?
|
|
51
|
+
- What must it NOT do?
|
|
52
|
+
- Any specific technical constraints?
|
|
53
|
+
|
|
54
|
+
2. **Draft Review**: Generate the spec and show a summary
|
|
55
|
+
- Ask for adjustments before finalizing
|
|
56
|
+
|
|
57
|
+
3. **Write File**: Save to `specs/{topic-name}.md`
|
|
58
|
+
|
|
59
|
+
### Phase 4: Operational Setup
|
|
60
|
+
|
|
61
|
+
After all specs are written:
|
|
62
|
+
|
|
63
|
+
1. **Detect**: Check for package.json, pyproject.toml, go.mod, etc.
|
|
64
|
+
2. **Ask**: Confirm or customize test/build/lint commands
|
|
65
|
+
3. **Write**: Generate `AGENTS.md` with operational commands
|
|
66
|
+
|
|
67
|
+
## Spec File Format
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
# {Topic Name}
|
|
71
|
+
|
|
72
|
+
## Purpose
|
|
73
|
+
{One paragraph explaining what this topic covers and why}
|
|
74
|
+
|
|
75
|
+
## Requirements
|
|
76
|
+
|
|
77
|
+
### Must Have
|
|
78
|
+
- {Requirement 1}
|
|
79
|
+
- {Requirement 2}
|
|
80
|
+
|
|
81
|
+
### Should Have
|
|
82
|
+
- {Requirement 3}
|
|
83
|
+
|
|
84
|
+
### Must Not
|
|
85
|
+
- {Anti-requirement / constraint}
|
|
86
|
+
|
|
87
|
+
## Acceptance Criteria
|
|
88
|
+
- [ ] {Testable criterion 1}
|
|
89
|
+
- [ ] {Testable criterion 2}
|
|
90
|
+
|
|
91
|
+
## Technical Notes
|
|
92
|
+
{Implementation hints, constraints, or decisions}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## AGENTS.md Format
|
|
96
|
+
|
|
97
|
+
```markdown
|
|
98
|
+
# Operational Guide
|
|
99
|
+
|
|
100
|
+
## Commands
|
|
101
|
+
|
|
102
|
+
### Testing
|
|
103
|
+
\`\`\`bash
|
|
104
|
+
{test command}
|
|
105
|
+
\`\`\`
|
|
106
|
+
|
|
107
|
+
### Type Checking
|
|
108
|
+
\`\`\`bash
|
|
109
|
+
{typecheck command}
|
|
110
|
+
\`\`\`
|
|
111
|
+
|
|
112
|
+
### Linting
|
|
113
|
+
\`\`\`bash
|
|
114
|
+
{lint command}
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
### Build
|
|
118
|
+
\`\`\`bash
|
|
119
|
+
{build command}
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
122
|
+
## Learnings
|
|
123
|
+
<!-- Ralph updates this section with operational discoveries -->
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Conversation Style
|
|
127
|
+
|
|
128
|
+
- Be conversational but efficient
|
|
129
|
+
- Ask one main question at a time (with follow-ups if needed)
|
|
130
|
+
- Use AskUserQuestion for concrete choices
|
|
131
|
+
- Summarize understanding before moving to next phase
|
|
132
|
+
- Don't over-explain the process - focus on extracting requirements
|
|
133
|
+
|
|
134
|
+
## Ending the Conversation
|
|
135
|
+
|
|
136
|
+
When all specs and AGENTS.md are written:
|
|
137
|
+
|
|
138
|
+
1. Summarize what was created
|
|
139
|
+
2. Show the recommended next steps:
|
|
140
|
+
```
|
|
141
|
+
Next steps:
|
|
142
|
+
1. Review specs/ files and adjust if needed
|
|
143
|
+
2. Run 'golem-ralph run plan' to create implementation plan
|
|
144
|
+
3. Run 'golem-ralph run build' to start autonomous coding
|
|
145
|
+
```
|
|
146
|
+
3. Ask if they want to make any changes before proceeding
|
|
147
|
+
|
|
148
|
+
## Example Opening
|
|
149
|
+
|
|
150
|
+
"What are you building? Give me the elevator pitch - what problem does this solve and for whom?"
|
|
151
|
+
|
|
152
|
+
Then follow their energy - if they're detailed, dig into specifics. If they're brief, ask clarifying questions.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Ralph Build Mode
|
|
2
|
+
|
|
3
|
+
You are operating in **build mode** - your job is to implement one task from the plan and validate it works.
|
|
4
|
+
|
|
5
|
+
**Note:** Do NOT commit. Code simplification and commit happen in a separate step.
|
|
6
|
+
|
|
7
|
+
## Execution Flow
|
|
8
|
+
|
|
9
|
+
1. **Orient** - Read the specs and implementation plan below
|
|
10
|
+
2. **Select** - Pick the highest-priority incomplete task (marked `[ ]`)
|
|
11
|
+
3. **Investigate** - Search relevant source code to understand context
|
|
12
|
+
4. **Implement** - Make the changes required for this task
|
|
13
|
+
5. **Validate** - Run all backpressure gates (tests, typecheck, lint)
|
|
14
|
+
6. **Fix** - If validation fails, fix issues and re-validate
|
|
15
|
+
7. **Update Plan** - Mark task complete, add any discoveries
|
|
16
|
+
8. **Stage** - Run `git add` on changed files (but DO NOT commit)
|
|
17
|
+
|
|
18
|
+
## Rules
|
|
19
|
+
|
|
20
|
+
### Task Selection
|
|
21
|
+
- Always pick the **first** incomplete task unless it has unmet dependencies
|
|
22
|
+
- Never skip tasks or cherry-pick based on preference
|
|
23
|
+
- If blocked, note the blocker and select the next available task
|
|
24
|
+
|
|
25
|
+
### Implementation
|
|
26
|
+
- Implement ONLY what the task requires - no scope creep
|
|
27
|
+
- Follow existing code patterns and conventions
|
|
28
|
+
- Write tests alongside implementation code
|
|
29
|
+
- Keep changes minimal and focused
|
|
30
|
+
|
|
31
|
+
### Validation (Backpressure)
|
|
32
|
+
Run these commands in order. ALL must pass before proceeding:
|
|
33
|
+
1. Tests: `{test_command}`
|
|
34
|
+
2. Type check: `{typecheck_command}` (if configured)
|
|
35
|
+
3. Lint: `{lint_command}` (if configured)
|
|
36
|
+
4. Build: `{build_command}` (if configured)
|
|
37
|
+
|
|
38
|
+
If any gate fails:
|
|
39
|
+
- Read the error carefully
|
|
40
|
+
- Fix the issue
|
|
41
|
+
- Re-run ALL gates from the beginning
|
|
42
|
+
- Repeat until all pass
|
|
43
|
+
|
|
44
|
+
### Plan Updates
|
|
45
|
+
Edit `IMPLEMENTATION_PLAN.md`:
|
|
46
|
+
- Change `[ ]` to `[x]` for completed task
|
|
47
|
+
- Add notes about discoveries or blockers encountered
|
|
48
|
+
- Add new tasks if implementation revealed missing work
|
|
49
|
+
|
|
50
|
+
### Staging (No Commit!)
|
|
51
|
+
Run `git add` on the files you changed, but DO NOT commit.
|
|
52
|
+
The commit will happen after the simplification step.
|
|
53
|
+
|
|
54
|
+
## Important
|
|
55
|
+
|
|
56
|
+
- Complete ONE task per iteration, then exit
|
|
57
|
+
- Fresh context on next iteration will continue from updated plan
|
|
58
|
+
- If stuck on a task for more than 3 attempts, mark it blocked and move on
|
|
59
|
+
- Trust the tests - if they pass, the implementation is correct
|
|
60
|
+
- DO NOT commit - simplification step will handle that
|