speccrew 0.7.30 → 0.7.32
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 +46 -141
- package/.speccrew/agents/speccrew-task-worker.md +20 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +193 -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 +212 -74
- package/.speccrew/skills/speccrew-feature-designer-orchestration/workflow.agentflow.xml +17 -88
- 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,77 +225,6 @@
|
|
|
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
|
-
<!-- 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. -->
|
|
234
|
-
<!-- Dispatch Workers in batches of 6 -->
|
|
235
|
-
<block type="loop" id="P3-L1" mode="batch" batch_size="6" desc="Dispatch analyze workers">
|
|
236
|
-
<field name="items" value="${all_features}"/>
|
|
237
|
-
|
|
238
|
-
<block type="task" id="P3-B3" action="dispatch-to-worker" status="pending" desc="Dispatch analyze worker">
|
|
239
|
-
<field name="agent">speccrew-task-worker</field>
|
|
240
|
-
<field name="skill">speccrew-fd-feature-analyze</field>
|
|
241
|
-
<field name="context">
|
|
242
|
-
workspace_path: ${workspace_root}
|
|
243
|
-
prd_path: ${item.prd_path}
|
|
244
|
-
feature_id: ${item.feature_id}
|
|
245
|
-
feature_name: ${item.feature_name}
|
|
246
|
-
feature_type: ${item.feature_type}
|
|
247
|
-
iteration_id: ${iteration_path}
|
|
248
|
-
frontend_platforms: ${frontend_platforms}
|
|
249
|
-
skip_checkpoint: true
|
|
250
|
-
</field>
|
|
251
|
-
</block>
|
|
252
|
-
|
|
253
|
-
<block type="task" id="P3-B4" action="run-script" status="pending" desc="Update worker progress">
|
|
254
|
-
<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>
|
|
255
|
-
</block>
|
|
256
|
-
</block>
|
|
257
|
-
|
|
258
|
-
<!-- All completed: Present summary -->
|
|
259
|
-
<block type="event" id="P3-E2" action="log" desc="Display analyze summary">
|
|
260
|
-
<field name="template">analyze-summary</field>
|
|
261
|
-
<field name="data" value="${analyze_results}"/>
|
|
262
|
-
</block>
|
|
263
|
-
|
|
264
|
-
<block type="event" id="P3-E3" action="confirm" desc="HARD STOP for analyze confirmation">
|
|
265
|
-
<field name="prompt">📊 Phase 3a (Analyze) complete. Does this function breakdown align with your understanding?</field>
|
|
266
|
-
</block>
|
|
267
|
-
</branch>
|
|
268
|
-
</block>
|
|
269
|
-
|
|
270
|
-
<!-- ========== Phase 3b: Design & Generate — Feature Spec Production ========== -->
|
|
271
|
-
<block type="event" id="P3-E4" action="log" desc="Start Phase 3b">
|
|
272
|
-
<field name="message">📊 Phase 3b: Design & Generate — Feature Spec Production</field>
|
|
273
|
-
</block>
|
|
274
|
-
|
|
275
|
-
<block type="gateway" id="P3-G2" mode="exclusive" desc="Dispatch mode for Phase 3b">
|
|
276
|
-
|
|
277
|
-
<!-- Single Feature: Direct Invocation -->
|
|
278
|
-
<branch test="${dispatch_mode} == 'direct'" name="Direct Invocation">
|
|
279
|
-
<block type="task" id="P3-B5" action="run-skill" status="pending" desc="Invoke feature design skill">
|
|
280
|
-
<field name="skill">speccrew-fd-feature-design</field>
|
|
281
|
-
<field name="context">
|
|
282
|
-
feature_analysis_path: ${analyze_result.output_path}
|
|
283
|
-
prd_path: ${prd_files[0]}
|
|
284
|
-
feature_id: ${feature_list.modules[0].features[0].feature_id}
|
|
285
|
-
feature_name: ${feature_list.modules[0].features[0].feature_name}
|
|
286
|
-
feature_type: ${feature_list.modules[0].features[0].feature_type}
|
|
287
|
-
frontend_platforms: ${frontend_platforms}
|
|
288
|
-
output_path: ${iteration_path}/02.feature-design/${feature_id}-${feature_name}-feature-spec.md
|
|
289
|
-
</field>
|
|
290
|
-
<field name="output" var="design_result"/>
|
|
291
|
-
</block>
|
|
292
|
-
</branch>
|
|
293
|
-
|
|
294
|
-
<!-- Multiple Features: Worker Dispatch -->
|
|
295
|
-
<branch test="${dispatch_mode} == 'worker'" name="Worker Dispatch">
|
|
296
|
-
|
|
297
|
-
<!-- Initialize DISPATCH-PROGRESS.json for Design stage -->
|
|
298
|
-
<block type="task" id="P3-B6" action="run-script" status="pending" desc="Initialize design dispatch progress">
|
|
299
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>
|
|
300
229
|
</block>
|
|
301
230
|
|
|
@@ -303,26 +232,26 @@
|
|
|
303
232
|
DO NOT include execution instructions, step sequences, or output directives.
|
|
304
233
|
Worker will read skill's workflow.agentflow.xml for execution plan. -->
|
|
305
234
|
<!-- Dispatch Workers in batches of 6 -->
|
|
306
|
-
<block type="loop" id="P3-
|
|
235
|
+
<block type="loop" id="P3-L1" mode="batch" batch_size="6" desc="Dispatch design workers">
|
|
307
236
|
<field name="items" value="${all_features}"/>
|
|
308
237
|
|
|
309
|
-
<block type="task" id="P3-
|
|
238
|
+
<block type="task" id="P3-B3" action="dispatch-to-worker" status="pending" desc="Dispatch design worker">
|
|
310
239
|
<field name="agent">speccrew-task-worker</field>
|
|
311
240
|
<field name="skill">speccrew-fd-feature-design</field>
|
|
312
241
|
<field name="context">
|
|
313
242
|
workspace_path: ${workspace_root}
|
|
314
|
-
feature_analysis_path: ${item.analysis_path}
|
|
315
243
|
prd_path: ${item.prd_path}
|
|
316
244
|
feature_id: ${item.feature_id}
|
|
317
245
|
feature_name: ${item.feature_name}
|
|
318
246
|
feature_type: ${item.feature_type}
|
|
247
|
+
iteration_id: ${iteration_path}
|
|
319
248
|
frontend_platforms: ${frontend_platforms}
|
|
320
249
|
output_path: ${iteration_path}/02.feature-design/${item.feature_id}-${item.feature_name}-feature-spec.md
|
|
321
|
-
|
|
250
|
+
skip_analysis_checkpoint: true
|
|
322
251
|
</field>
|
|
323
252
|
</block>
|
|
324
253
|
|
|
325
|
-
<block type="task" id="P3-
|
|
254
|
+
<block type="task" id="P3-B4" action="run-script" status="pending" desc="Update worker progress">
|
|
326
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>
|
|
327
256
|
</block>
|
|
328
257
|
</block>
|