speccrew 0.7.29 → 0.7.31
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/.speccrew/agents/speccrew-feature-designer.md +117 -115
- package/.speccrew/agents/speccrew-product-manager.md +35 -0
- package/.speccrew/agents/speccrew-task-worker.md +26 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +162 -42
- package/.speccrew/skills/speccrew-fd-feature-design/templates/FEATURE-SPEC-TEMPLATE.md +22 -1
- package/.speccrew/skills/speccrew-fd-feature-design/workflow.agentflow.xml +204 -74
- package/.speccrew/skills/speccrew-feature-designer-orchestration/workflow.agentflow.xml +25 -84
- package/package.json +1 -1
|
@@ -49,8 +49,8 @@
|
|
|
49
49
|
<branch test="${checkpoints.feature_spec_review.passed} == true" name="Resume from Phase 4">
|
|
50
50
|
<block type="set-variable" id="P0-V1" name="resume_phase" value="4"/>
|
|
51
51
|
</branch>
|
|
52
|
-
<branch test="${checkpoints.function_decomposition.passed} == true" name="Resume from Phase
|
|
53
|
-
<block type="set-variable" id="P0-V2" name="resume_phase" value="
|
|
52
|
+
<branch test="${checkpoints.function_decomposition.passed} == true" name="Resume from Phase 3">
|
|
53
|
+
<block type="set-variable" id="P0-V2" name="resume_phase" value="3"/>
|
|
54
54
|
</branch>
|
|
55
55
|
<branch default="true" name="Resume from Phase 1"/>
|
|
56
56
|
</block>
|
|
@@ -179,29 +179,28 @@
|
|
|
179
179
|
</block>
|
|
180
180
|
</sequence>
|
|
181
181
|
|
|
182
|
-
<!-- ========== Phase 3: Feature Design
|
|
183
|
-
<sequence name="Phase 3: Feature Design
|
|
182
|
+
<!-- ========== Phase 3: Feature Design (Unified Analysis + Design) ========== -->
|
|
183
|
+
<sequence name="Phase 3: Feature Design (Unified Analysis + Design)">
|
|
184
184
|
|
|
185
185
|
<block type="rule" id="P3-R1" level="mandatory" desc="Phase 3 Mandatory Rules">
|
|
186
186
|
<field name="text">DO NOT ask user which strategy to use - strategy determined by Phase 2 extraction</field>
|
|
187
187
|
<field name="text">DO NOT invoke skills directly when 2+ Features - MUST dispatch speccrew-task-worker</field>
|
|
188
188
|
<field name="text">Dispatch granularity is PER FEATURE, not per module</field>
|
|
189
189
|
<field name="text">DO NOT generate Feature Spec documents yourself - role is to DISPATCH workers</field>
|
|
190
|
-
<field name="text">Phase 3a → 3b → 3c is STRICTLY SERIAL</field>
|
|
191
190
|
<field name="text">Feature name is LOCKED after Phase 2 confirmation</field>
|
|
192
191
|
</block>
|
|
193
192
|
|
|
194
|
-
<!-- ==========
|
|
195
|
-
<block type="event" id="P3-E1" action="log" desc="Start Phase
|
|
196
|
-
<field name="message">📊 Phase
|
|
193
|
+
<!-- ========== Unified Feature Design Dispatch ========== -->
|
|
194
|
+
<block type="event" id="P3-E1" action="log" desc="Start Phase 3">
|
|
195
|
+
<field name="message">📊 Phase 3: Feature Design (Unified Analysis + Design)</field>
|
|
197
196
|
</block>
|
|
198
197
|
|
|
199
|
-
<block type="gateway" id="P3-G1" mode="exclusive" desc="Dispatch mode for Phase
|
|
198
|
+
<block type="gateway" id="P3-G1" mode="exclusive" desc="Dispatch mode for Phase 3">
|
|
200
199
|
|
|
201
200
|
<!-- Single Feature: Direct Invocation -->
|
|
202
201
|
<branch test="${dispatch_mode} == 'direct'" name="Direct Invocation">
|
|
203
|
-
<block type="task" id="P3-B1" action="run-skill" status="pending" desc="Invoke feature
|
|
204
|
-
<field name="skill">speccrew-fd-feature-
|
|
202
|
+
<block type="task" id="P3-B1" action="run-skill" status="pending" desc="Invoke feature design skill">
|
|
203
|
+
<field name="skill">speccrew-fd-feature-design</field>
|
|
205
204
|
<field name="context">
|
|
206
205
|
prd_path: ${prd_files[0]}
|
|
207
206
|
feature_id: ${feature_list.modules[0].features[0].feature_id}
|
|
@@ -209,8 +208,9 @@
|
|
|
209
208
|
feature_type: ${feature_list.modules[0].features[0].feature_type}
|
|
210
209
|
iteration_id: ${iteration_path}
|
|
211
210
|
frontend_platforms: ${frontend_platforms}
|
|
211
|
+
output_path: ${iteration_path}/02.feature-design/${feature_id}-${feature_name}-feature-spec.md
|
|
212
212
|
</field>
|
|
213
|
-
<field name="output" var="
|
|
213
|
+
<field name="output" var="design_result"/>
|
|
214
214
|
</block>
|
|
215
215
|
</branch>
|
|
216
216
|
|
|
@@ -225,96 +225,33 @@
|
|
|
225
225
|
|
|
226
226
|
<!-- Initialize DISPATCH-PROGRESS.json -->
|
|
227
227
|
<block type="task" id="P3-B2" action="run-script" status="pending" desc="Initialize dispatch progress">
|
|
228
|
-
<field name="command">node ${workspace_root}/scripts/update-progress.js init --file ${iteration_path}/02.feature-design/DISPATCH-PROGRESS.json --stage 02_feature_design_analyze --tasks-file ${iteration_path}/02.feature-design/.tasks-temp.json</field>
|
|
229
|
-
</block>
|
|
230
|
-
|
|
231
|
-
<!-- Dispatch Workers in batches of 6 -->
|
|
232
|
-
<block type="loop" id="P3-L1" mode="batch" batch_size="6" desc="Dispatch analyze workers">
|
|
233
|
-
<field name="items" value="${all_features}"/>
|
|
234
|
-
|
|
235
|
-
<block type="task" id="P3-B3" action="dispatch-to-worker" status="pending" desc="Dispatch analyze worker">
|
|
236
|
-
<field name="agent">speccrew-task-worker</field>
|
|
237
|
-
<field name="skill">speccrew-fd-feature-analyze</field>
|
|
238
|
-
<field name="context">
|
|
239
|
-
prd_path: ${item.prd_path}
|
|
240
|
-
feature_id: ${item.feature_id}
|
|
241
|
-
feature_name: ${item.feature_name}
|
|
242
|
-
feature_type: ${item.feature_type}
|
|
243
|
-
iteration_id: ${iteration_path}
|
|
244
|
-
frontend_platforms: ${frontend_platforms}
|
|
245
|
-
skip_checkpoint: true
|
|
246
|
-
</field>
|
|
247
|
-
</block>
|
|
248
|
-
|
|
249
|
-
<block type="task" id="P3-B4" action="run-script" status="pending" desc="Update worker progress">
|
|
250
|
-
<field name="command">node ${workspace_root}/scripts/update-progress.js update-task --file ${iteration_path}/02.feature-design/DISPATCH-PROGRESS.json --task-id ${item.feature_id} --status ${worker_status}</field>
|
|
251
|
-
</block>
|
|
252
|
-
</block>
|
|
253
|
-
|
|
254
|
-
<!-- All completed: Present summary -->
|
|
255
|
-
<block type="event" id="P3-E2" action="log" desc="Display analyze summary">
|
|
256
|
-
<field name="template">analyze-summary</field>
|
|
257
|
-
<field name="data" value="${analyze_results}"/>
|
|
258
|
-
</block>
|
|
259
|
-
|
|
260
|
-
<block type="event" id="P3-E3" action="confirm" desc="HARD STOP for analyze confirmation">
|
|
261
|
-
<field name="prompt">📊 Phase 3a (Analyze) complete. Does this function breakdown align with your understanding?</field>
|
|
262
|
-
</block>
|
|
263
|
-
</branch>
|
|
264
|
-
</block>
|
|
265
|
-
|
|
266
|
-
<!-- ========== Phase 3b: Design & Generate — Feature Spec Production ========== -->
|
|
267
|
-
<block type="event" id="P3-E4" action="log" desc="Start Phase 3b">
|
|
268
|
-
<field name="message">📊 Phase 3b: Design & Generate — Feature Spec Production</field>
|
|
269
|
-
</block>
|
|
270
|
-
|
|
271
|
-
<block type="gateway" id="P3-G2" mode="exclusive" desc="Dispatch mode for Phase 3b">
|
|
272
|
-
|
|
273
|
-
<!-- Single Feature: Direct Invocation -->
|
|
274
|
-
<branch test="${dispatch_mode} == 'direct'" name="Direct Invocation">
|
|
275
|
-
<block type="task" id="P3-B5" action="run-skill" status="pending" desc="Invoke feature design skill">
|
|
276
|
-
<field name="skill">speccrew-fd-feature-design</field>
|
|
277
|
-
<field name="context">
|
|
278
|
-
feature_analysis_path: ${analyze_result.output_path}
|
|
279
|
-
prd_path: ${prd_files[0]}
|
|
280
|
-
feature_id: ${feature_list.modules[0].features[0].feature_id}
|
|
281
|
-
feature_name: ${feature_list.modules[0].features[0].feature_name}
|
|
282
|
-
feature_type: ${feature_list.modules[0].features[0].feature_type}
|
|
283
|
-
frontend_platforms: ${frontend_platforms}
|
|
284
|
-
output_path: ${iteration_path}/02.feature-design/${feature_id}-${feature_name}-feature-spec.md
|
|
285
|
-
</field>
|
|
286
|
-
<field name="output" var="design_result"/>
|
|
287
|
-
</block>
|
|
288
|
-
</branch>
|
|
289
|
-
|
|
290
|
-
<!-- Multiple Features: Worker Dispatch -->
|
|
291
|
-
<branch test="${dispatch_mode} == 'worker'" name="Worker Dispatch">
|
|
292
|
-
|
|
293
|
-
<!-- Initialize DISPATCH-PROGRESS.json for Design stage -->
|
|
294
|
-
<block type="task" id="P3-B6" action="run-script" status="pending" desc="Initialize design dispatch progress">
|
|
295
228
|
<field name="command">node ${workspace_root}/scripts/update-progress.js init --file ${iteration_path}/02.feature-design/DISPATCH-PROGRESS.json --stage 02_feature_design_spec --tasks-file ${iteration_path}/02.feature-design/.tasks-temp.json</field>
|
|
296
229
|
</block>
|
|
297
230
|
|
|
231
|
+
<!-- MANDATORY: Dispatch prompt must contain ONLY skill path + context data parameters.
|
|
232
|
+
DO NOT include execution instructions, step sequences, or output directives.
|
|
233
|
+
Worker will read skill's workflow.agentflow.xml for execution plan. -->
|
|
298
234
|
<!-- Dispatch Workers in batches of 6 -->
|
|
299
|
-
<block type="loop" id="P3-
|
|
235
|
+
<block type="loop" id="P3-L1" mode="batch" batch_size="6" desc="Dispatch design workers">
|
|
300
236
|
<field name="items" value="${all_features}"/>
|
|
301
237
|
|
|
302
|
-
<block type="task" id="P3-
|
|
238
|
+
<block type="task" id="P3-B3" action="dispatch-to-worker" status="pending" desc="Dispatch design worker">
|
|
303
239
|
<field name="agent">speccrew-task-worker</field>
|
|
304
240
|
<field name="skill">speccrew-fd-feature-design</field>
|
|
305
241
|
<field name="context">
|
|
306
|
-
|
|
242
|
+
workspace_path: ${workspace_root}
|
|
307
243
|
prd_path: ${item.prd_path}
|
|
308
244
|
feature_id: ${item.feature_id}
|
|
309
245
|
feature_name: ${item.feature_name}
|
|
310
246
|
feature_type: ${item.feature_type}
|
|
247
|
+
iteration_id: ${iteration_path}
|
|
311
248
|
frontend_platforms: ${frontend_platforms}
|
|
312
249
|
output_path: ${iteration_path}/02.feature-design/${item.feature_id}-${item.feature_name}-feature-spec.md
|
|
313
|
-
|
|
250
|
+
skip_analysis_checkpoint: true
|
|
314
251
|
</field>
|
|
315
252
|
</block>
|
|
316
253
|
|
|
317
|
-
<block type="task" id="P3-
|
|
254
|
+
<block type="task" id="P3-B4" action="run-script" status="pending" desc="Update worker progress">
|
|
318
255
|
<field name="command">node ${workspace_root}/scripts/update-progress.js update-task --file ${iteration_path}/02.feature-design/DISPATCH-PROGRESS.json --task-id ${item.feature_id} --status ${worker_status}</field>
|
|
319
256
|
</block>
|
|
320
257
|
</block>
|
|
@@ -404,6 +341,9 @@
|
|
|
404
341
|
<field name="command">node ${workspace_root}/scripts/update-progress.js init --file ${iteration_path}/02.feature-design/DISPATCH-PROGRESS.json --stage 02_feature_design_api_contract --tasks-file ${iteration_path}/02.feature-design/.tasks-temp.json</field>
|
|
405
342
|
</block>
|
|
406
343
|
|
|
344
|
+
<!-- MANDATORY: Dispatch prompt must contain ONLY skill path + context data parameters.
|
|
345
|
+
DO NOT include execution instructions, step sequences, or output directives.
|
|
346
|
+
Worker will read skill's workflow.agentflow.xml for execution plan. -->
|
|
407
347
|
<!-- Dispatch Workers in batches of 6 -->
|
|
408
348
|
<block type="loop" id="P4-L1" mode="batch" batch_size="6" desc="Dispatch API contract workers">
|
|
409
349
|
<field name="items" value="${all_features}"/>
|
|
@@ -412,6 +352,7 @@
|
|
|
412
352
|
<field name="agent">speccrew-task-worker</field>
|
|
413
353
|
<field name="skill">speccrew-fd-api-contract</field>
|
|
414
354
|
<field name="context">
|
|
355
|
+
workspace_path: ${workspace_root}
|
|
415
356
|
feature_spec_path: ${item.spec_path}
|
|
416
357
|
feature_id: ${item.feature_id}
|
|
417
358
|
feature_name: ${item.feature_name}
|