@ghostwater/soulforge 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/LICENSE +21 -0
- package/README.md +115 -0
- package/dist/cli/cli.d.ts +2 -0
- package/dist/cli/cli.js +483 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/daemon/daemon-entry.d.ts +2 -0
- package/dist/daemon/daemon-entry.js +8 -0
- package/dist/daemon/daemon-entry.js.map +1 -0
- package/dist/daemon/daemon.d.ts +9 -0
- package/dist/daemon/daemon.js +88 -0
- package/dist/daemon/daemon.js.map +1 -0
- package/dist/daemon/runner.d.ts +3 -0
- package/dist/daemon/runner.js +310 -0
- package/dist/daemon/runner.js.map +1 -0
- package/dist/db/database.d.ts +95 -0
- package/dist/db/database.js +277 -0
- package/dist/db/database.js.map +1 -0
- package/dist/executors/claude-code.d.ts +9 -0
- package/dist/executors/claude-code.js +86 -0
- package/dist/executors/claude-code.js.map +1 -0
- package/dist/executors/codex.d.ts +9 -0
- package/dist/executors/codex.js +66 -0
- package/dist/executors/codex.js.map +1 -0
- package/dist/executors/openclaw.d.ts +10 -0
- package/dist/executors/openclaw.js +19 -0
- package/dist/executors/openclaw.js.map +1 -0
- package/dist/executors/registry.d.ts +4 -0
- package/dist/executors/registry.js +20 -0
- package/dist/executors/registry.js.map +1 -0
- package/dist/executors/self.d.ts +10 -0
- package/dist/executors/self.js +25 -0
- package/dist/executors/self.js.map +1 -0
- package/dist/executors/types.d.ts +41 -0
- package/dist/executors/types.js +2 -0
- package/dist/executors/types.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/logger.d.ts +7 -0
- package/dist/lib/logger.js +56 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/worktree.d.ts +30 -0
- package/dist/lib/worktree.js +131 -0
- package/dist/lib/worktree.js.map +1 -0
- package/dist/workflow/parser.d.ts +2 -0
- package/dist/workflow/parser.js +95 -0
- package/dist/workflow/parser.js.map +1 -0
- package/dist/workflow/template.d.ts +14 -0
- package/dist/workflow/template.js +71 -0
- package/dist/workflow/template.js.map +1 -0
- package/dist/workflow/types.d.ts +65 -0
- package/dist/workflow/types.js +2 -0
- package/dist/workflow/types.js.map +1 -0
- package/package.json +46 -0
- package/workflows/feature-dev/workflow.yml +169 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Soulforge Feature Development Workflow
|
|
2
|
+
# Uses Claude Code for implementation, with orchestrator review checkpoints.
|
|
3
|
+
id: feature-dev
|
|
4
|
+
name: Feature Development
|
|
5
|
+
version: 1
|
|
6
|
+
description: |
|
|
7
|
+
Story-based development pipeline with pluggable executors.
|
|
8
|
+
Planner decomposes tasks → orchestrator reviews → Claude Code implements →
|
|
9
|
+
verifier checks → integration testing → PR → final review.
|
|
10
|
+
|
|
11
|
+
defaults:
|
|
12
|
+
executor: claude-code
|
|
13
|
+
model: opus
|
|
14
|
+
timeout: 600
|
|
15
|
+
max_retries: 2
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- id: plan
|
|
19
|
+
executor: claude-code
|
|
20
|
+
model: opus
|
|
21
|
+
workdir: "{{workdir}}"
|
|
22
|
+
input: |
|
|
23
|
+
You are working in {{workdir}}. A git branch has already been created for you.
|
|
24
|
+
|
|
25
|
+
Decompose the following task into ordered user stories for autonomous execution.
|
|
26
|
+
|
|
27
|
+
TASK:
|
|
28
|
+
{{task}}
|
|
29
|
+
|
|
30
|
+
Instructions:
|
|
31
|
+
1. Explore the codebase to understand the stack, conventions, and patterns
|
|
32
|
+
2. Break the task into small user stories (max 20)
|
|
33
|
+
3. Order by dependency: schema/DB first, backend, frontend, integration
|
|
34
|
+
4. Each story must fit in one developer session (one context window)
|
|
35
|
+
5. Every acceptance criterion must be mechanically verifiable
|
|
36
|
+
6. Always include "Typecheck passes" as the last criterion in every story
|
|
37
|
+
7. Every story MUST include test criteria
|
|
38
|
+
|
|
39
|
+
Reply with:
|
|
40
|
+
STATUS: done
|
|
41
|
+
STORIES_JSON: [ ... array of story objects ... ]
|
|
42
|
+
expects: "STATUS: done"
|
|
43
|
+
|
|
44
|
+
- id: review-plan
|
|
45
|
+
executor: self
|
|
46
|
+
input: |
|
|
47
|
+
Review the planned stories before execution begins.
|
|
48
|
+
STORIES: {{stories_json}}
|
|
49
|
+
|
|
50
|
+
- id: implement
|
|
51
|
+
executor: claude-code
|
|
52
|
+
model: opus
|
|
53
|
+
workdir: "{{workdir}}"
|
|
54
|
+
type: loop
|
|
55
|
+
loop:
|
|
56
|
+
over: stories
|
|
57
|
+
completion: all_done
|
|
58
|
+
fresh_session: true
|
|
59
|
+
verify_each: true
|
|
60
|
+
verify_step: verify
|
|
61
|
+
input: |
|
|
62
|
+
Implement the following user story.
|
|
63
|
+
|
|
64
|
+
TASK (overall): {{task}}
|
|
65
|
+
WORKDIR: {{workdir}}
|
|
66
|
+
BUILD_CMD: {{build_cmd}}
|
|
67
|
+
TEST_CMD: {{test_cmd}}
|
|
68
|
+
|
|
69
|
+
CURRENT STORY:
|
|
70
|
+
{{current_story}}
|
|
71
|
+
|
|
72
|
+
COMPLETED STORIES:
|
|
73
|
+
{{completed_stories}}
|
|
74
|
+
|
|
75
|
+
STORIES REMAINING: {{stories_remaining}}
|
|
76
|
+
|
|
77
|
+
VERIFY FEEDBACK (if retrying):
|
|
78
|
+
{{verify_feedback}}
|
|
79
|
+
|
|
80
|
+
Instructions:
|
|
81
|
+
1. Pull latest on the branch
|
|
82
|
+
2. Implement this story only
|
|
83
|
+
3. Write tests for this story
|
|
84
|
+
4. Run typecheck / build
|
|
85
|
+
5. Run tests
|
|
86
|
+
6. Commit: feat: {{current_story_id}} - {{current_story_title}}
|
|
87
|
+
|
|
88
|
+
Reply with:
|
|
89
|
+
STATUS: done
|
|
90
|
+
CHANGES: what you implemented
|
|
91
|
+
TESTS: what tests you wrote
|
|
92
|
+
expects: "STATUS: done"
|
|
93
|
+
|
|
94
|
+
- id: verify
|
|
95
|
+
executor: claude-code
|
|
96
|
+
model: opus
|
|
97
|
+
workdir: "{{workdir}}"
|
|
98
|
+
input: |
|
|
99
|
+
Verify the developer's work on this story.
|
|
100
|
+
|
|
101
|
+
WORKDIR: {{workdir}}
|
|
102
|
+
CHANGES: {{changes}}
|
|
103
|
+
TEST_CMD: {{test_cmd}}
|
|
104
|
+
|
|
105
|
+
CURRENT STORY:
|
|
106
|
+
{{current_story}}
|
|
107
|
+
|
|
108
|
+
Check:
|
|
109
|
+
1. Code exists (not just TODOs or placeholders)
|
|
110
|
+
2. Each acceptance criterion is met
|
|
111
|
+
3. Tests were written
|
|
112
|
+
4. Tests pass (run {{test_cmd}})
|
|
113
|
+
5. Typecheck passes
|
|
114
|
+
|
|
115
|
+
Reply with:
|
|
116
|
+
STATUS: done
|
|
117
|
+
VERIFIED: What you confirmed
|
|
118
|
+
|
|
119
|
+
Or if incomplete:
|
|
120
|
+
STATUS: retry
|
|
121
|
+
ISSUES:
|
|
122
|
+
- What's missing
|
|
123
|
+
expects: "STATUS: done"
|
|
124
|
+
|
|
125
|
+
- id: test
|
|
126
|
+
executor: claude-code
|
|
127
|
+
model: opus
|
|
128
|
+
workdir: "{{workdir}}"
|
|
129
|
+
input: |
|
|
130
|
+
Run integration and E2E tests.
|
|
131
|
+
|
|
132
|
+
TASK: {{task}}
|
|
133
|
+
WORKDIR: {{workdir}}
|
|
134
|
+
TEST_CMD: {{test_cmd}}
|
|
135
|
+
|
|
136
|
+
1. Run the full test suite
|
|
137
|
+
2. Look for integration issues between stories
|
|
138
|
+
3. Check error handling and edge cases
|
|
139
|
+
|
|
140
|
+
Reply with:
|
|
141
|
+
STATUS: done
|
|
142
|
+
RESULTS: What you tested and outcomes
|
|
143
|
+
expects: "STATUS: done"
|
|
144
|
+
|
|
145
|
+
- id: pr
|
|
146
|
+
executor: claude-code
|
|
147
|
+
model: opus
|
|
148
|
+
workdir: "{{workdir}}"
|
|
149
|
+
input: |
|
|
150
|
+
Create a pull request.
|
|
151
|
+
|
|
152
|
+
TASK: {{task}}
|
|
153
|
+
WORKDIR: {{workdir}}
|
|
154
|
+
CHANGES: {{changes}}
|
|
155
|
+
|
|
156
|
+
Create a PR with gh pr create.
|
|
157
|
+
|
|
158
|
+
Reply with:
|
|
159
|
+
STATUS: done
|
|
160
|
+
PR: URL to the pull request
|
|
161
|
+
expects: "STATUS: done"
|
|
162
|
+
|
|
163
|
+
- id: final-review
|
|
164
|
+
executor: self
|
|
165
|
+
input: |
|
|
166
|
+
Final review before merge.
|
|
167
|
+
PR: {{pr}}
|
|
168
|
+
TASK: {{task}}
|
|
169
|
+
CHANGES: {{changes}}
|