speccrew 0.2.3 → 0.2.5
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 +5 -5
- package/.speccrew/agents/speccrew-system-designer.md +16 -16
- package/.speccrew/agents/speccrew-system-developer.md +35 -22
- package/.speccrew/agents/speccrew-test-manager.md +17 -17
- package/lib/commands/init.js +11 -7
- package/lib/commands/update.js +22 -8
- package/package.json +1 -1
- /package/{.speccrew → workspace-template}/scripts/update-progress.js +0 -0
|
@@ -25,7 +25,7 @@ Before starting any feature design work:
|
|
|
25
25
|
|
|
26
26
|
1. **Read `WORKFLOW-PROGRESS.json` overview**:
|
|
27
27
|
```bash
|
|
28
|
-
node
|
|
28
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{iteration-id}/WORKFLOW-PROGRESS.json --overview
|
|
29
29
|
```
|
|
30
30
|
- If the file does not exist → Skip to Phase 1 (backward compatibility mode)
|
|
31
31
|
|
|
@@ -40,7 +40,7 @@ Before starting any feature design work:
|
|
|
40
40
|
|
|
41
41
|
3. **Update Stage Status**:
|
|
42
42
|
```bash
|
|
43
|
-
node
|
|
43
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/iterations/{iteration-id}/WORKFLOW-PROGRESS.json --stage 02_feature_design --status in_progress
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
### 0.2 Check Resume State (Checkpoint Recovery)
|
|
@@ -49,7 +49,7 @@ If resuming from an interrupted session:
|
|
|
49
49
|
|
|
50
50
|
1. **Read checkpoints** (if file exists):
|
|
51
51
|
```bash
|
|
52
|
-
node
|
|
52
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{iteration-id}/02.feature-design/.checkpoints.json --checkpoints
|
|
53
53
|
```
|
|
54
54
|
- If the file does not exist → Start from Phase 1 (no previous progress)
|
|
55
55
|
|
|
@@ -79,7 +79,7 @@ If the feature involves multiple frontend platforms:
|
|
|
79
79
|
|
|
80
80
|
1. **Read `DISPATCH-PROGRESS.json` summary** (if file exists):
|
|
81
81
|
```bash
|
|
82
|
-
node
|
|
82
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{iteration-id}/02.feature-design/DISPATCH-PROGRESS.json --summary
|
|
83
83
|
```
|
|
84
84
|
- If the file does not exist → No dispatch in progress, proceed normally
|
|
85
85
|
|
|
@@ -225,7 +225,7 @@ After user confirms Joint Confirmation:
|
|
|
225
225
|
|
|
226
226
|
1. **Update `WORKFLOW-PROGRESS.json`**:
|
|
227
227
|
```bash
|
|
228
|
-
node
|
|
228
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/iterations/{iteration-id}/WORKFLOW-PROGRESS.json --stage 02_feature_design --status confirmed --output "02.feature-design/[feature-name]-feature-spec.md,02.feature-design/[feature-name]-api-contract.md"
|
|
229
229
|
```
|
|
230
230
|
|
|
231
231
|
2. **Confirm Transition**:
|
|
@@ -23,7 +23,7 @@ Before starting system design, verify that Feature Design stage is confirmed:
|
|
|
23
23
|
|
|
24
24
|
1. **Read WORKFLOW-PROGRESS.json overview**:
|
|
25
25
|
```bash
|
|
26
|
-
node
|
|
26
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/WORKFLOW-PROGRESS.json --overview
|
|
27
27
|
```
|
|
28
28
|
|
|
29
29
|
2. **Validate upstream stage**: Check `stages.02_feature_design.status == "confirmed"` in the output
|
|
@@ -34,7 +34,7 @@ Before starting system design, verify that Feature Design stage is confirmed:
|
|
|
34
34
|
- Read `02_feature_design.outputs` to get Feature Spec and API Contract paths
|
|
35
35
|
- Update stage status:
|
|
36
36
|
```bash
|
|
37
|
-
node
|
|
37
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/iterations/{current}/WORKFLOW-PROGRESS.json --stage 03_system_design --status in_progress
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
### Step 0.2: Check Resume State (断点续传)
|
|
@@ -43,7 +43,7 @@ Check if there's existing progress to resume:
|
|
|
43
43
|
|
|
44
44
|
1. **Read checkpoints** (if file exists):
|
|
45
45
|
```bash
|
|
46
|
-
node
|
|
46
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/03.system-design/.checkpoints.json --checkpoints
|
|
47
47
|
```
|
|
48
48
|
|
|
49
49
|
2. **Determine resume point** based on passed checkpoints:
|
|
@@ -58,7 +58,7 @@ Check dispatch progress for parallel task execution:
|
|
|
58
58
|
|
|
59
59
|
1. **Read dispatch progress summary** (if file exists):
|
|
60
60
|
```bash
|
|
61
|
-
node
|
|
61
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --summary
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
2. **List task statuses**:
|
|
@@ -194,14 +194,14 @@ Before dispatching, create or update dispatch tracking:
|
|
|
194
194
|
|
|
195
195
|
1. **Initialize dispatch progress file with task list**:
|
|
196
196
|
```bash
|
|
197
|
-
node
|
|
197
|
+
node speccrew-workspace/scripts/update-progress.js init --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --stage 03_system_design --tasks '[{"id":"sd-{platform_id}-{feature_name}","platform":"{platform_id}","feature":"{feature_name}","skill":"speccrew-sd-{type}","status":"pending"}]'
|
|
198
198
|
```
|
|
199
199
|
Or use `--tasks-file` to load from a JSON file.
|
|
200
200
|
|
|
201
201
|
2. **Check existing progress** (from Step 0.3) — skip `completed` tasks
|
|
202
202
|
3. **Update status** to `in_progress` for tasks being dispatched:
|
|
203
203
|
```bash
|
|
204
|
-
node
|
|
204
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status in_progress
|
|
205
205
|
```
|
|
206
206
|
|
|
207
207
|
### 5.3 Single Feature Spec + Single Platform
|
|
@@ -210,7 +210,7 @@ When there is only one Feature Spec and one platform:
|
|
|
210
210
|
|
|
211
211
|
1. **Update task status to `in_progress`**:
|
|
212
212
|
```bash
|
|
213
|
-
node
|
|
213
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status in_progress
|
|
214
214
|
```
|
|
215
215
|
|
|
216
216
|
2. Call skill directly with parameters:
|
|
@@ -226,11 +226,11 @@ When there is only one Feature Spec and one platform:
|
|
|
226
226
|
3. **Parse Task Completion Report** from skill output:
|
|
227
227
|
- If `Status: SUCCESS`:
|
|
228
228
|
```bash
|
|
229
|
-
node
|
|
229
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status completed --output "{output_path}"
|
|
230
230
|
```
|
|
231
231
|
- If `Status: FAILED`:
|
|
232
232
|
```bash
|
|
233
|
-
node
|
|
233
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status failed --error "{error_message}"
|
|
234
234
|
```
|
|
235
235
|
|
|
236
236
|
### 5.4 Parallel Execution (Feature × Platform)
|
|
@@ -259,7 +259,7 @@ Each worker receives:
|
|
|
259
259
|
|
|
260
260
|
**Before dispatch**: Update each task status to `in_progress`:
|
|
261
261
|
```bash
|
|
262
|
-
node
|
|
262
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status in_progress
|
|
263
263
|
```
|
|
264
264
|
|
|
265
265
|
**Parallel execution example** (2 features × 3 platforms = 6 workers):
|
|
@@ -278,11 +278,11 @@ After each worker completes, parse its **Task Completion Report** and update:
|
|
|
278
278
|
|
|
279
279
|
- On SUCCESS:
|
|
280
280
|
```bash
|
|
281
|
-
node
|
|
281
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status completed --output "{output_path}"
|
|
282
282
|
```
|
|
283
283
|
- On FAILED:
|
|
284
284
|
```bash
|
|
285
|
-
node
|
|
285
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/03.system-design/DISPATCH-PROGRESS.json --task-id {task_id} --status failed --error "{error_message}"
|
|
286
286
|
```
|
|
287
287
|
|
|
288
288
|
Wait for all workers to complete before proceeding to Phase 6.
|
|
@@ -302,14 +302,14 @@ After user confirms:
|
|
|
302
302
|
|
|
303
303
|
1. **Write checkpoints**:
|
|
304
304
|
```bash
|
|
305
|
-
node
|
|
306
|
-
node
|
|
307
|
-
node
|
|
305
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{current}/03.system-design/.checkpoints.json --stage 03_system_design --checkpoint framework_evaluation --passed true
|
|
306
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{current}/03.system-design/.checkpoints.json --stage 03_system_design --checkpoint design_overview --passed true
|
|
307
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{current}/03.system-design/.checkpoints.json --stage 03_system_design --checkpoint joint_confirmation --passed true
|
|
308
308
|
```
|
|
309
309
|
|
|
310
310
|
2. **Update WORKFLOW-PROGRESS.json**:
|
|
311
311
|
```bash
|
|
312
|
-
node
|
|
312
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/iterations/{current}/WORKFLOW-PROGRESS.json --stage 03_system_design --status confirmed --output "DESIGN-OVERVIEW.md, platform-indexes, module-designs"
|
|
313
313
|
```
|
|
314
314
|
|
|
315
315
|
3. **Designs become baseline** for Dev phase
|
|
@@ -13,6 +13,8 @@ You are in the **fourth stage** of the complete engineering closed loop:
|
|
|
13
13
|
|
|
14
14
|
Your core task is: based on the System Design (HOW to build), execute and coordinate the actual implementation across platforms, ensuring code delivery and integration quality.
|
|
15
15
|
|
|
16
|
+
> **CRITICAL CONSTRAINT**: This agent is a **dispatcher/orchestrator ONLY**. It MUST NOT write any application code, create source files, or implement features directly. ALL development work MUST be delegated to `speccrew-task-worker` agents. Violation of this rule invalidates the entire workflow.
|
|
17
|
+
|
|
16
18
|
# Workflow
|
|
17
19
|
|
|
18
20
|
## Step 0: Workflow Progress Management
|
|
@@ -23,7 +25,7 @@ Before starting development, verify upstream stage completion:
|
|
|
23
25
|
|
|
24
26
|
1. **Read WORKFLOW-PROGRESS.json overview**:
|
|
25
27
|
```bash
|
|
26
|
-
node
|
|
28
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/WORKFLOW-PROGRESS.json --overview
|
|
27
29
|
```
|
|
28
30
|
|
|
29
31
|
2. **Verify System Design stage status**:
|
|
@@ -33,7 +35,7 @@ Before starting development, verify upstream stage completion:
|
|
|
33
35
|
|
|
34
36
|
3. **Update Development stage status**:
|
|
35
37
|
```bash
|
|
36
|
-
node
|
|
38
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/WORKFLOW-PROGRESS.json --stage 04_development --status in_progress
|
|
37
39
|
```
|
|
38
40
|
|
|
39
41
|
### Phase 0.2: Check Resume State
|
|
@@ -42,7 +44,7 @@ Check for existing checkpoint state to support resume:
|
|
|
42
44
|
|
|
43
45
|
1. **Read checkpoints** (if file exists):
|
|
44
46
|
```bash
|
|
45
|
-
node
|
|
47
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/04.development/.checkpoints.json --checkpoints
|
|
46
48
|
```
|
|
47
49
|
|
|
48
50
|
2. **Determine resume point based on passed checkpoints**:
|
|
@@ -61,7 +63,7 @@ Check for existing dispatch progress to support module-level retry:
|
|
|
61
63
|
|
|
62
64
|
1. **Read dispatch progress summary** (if file exists):
|
|
63
65
|
```bash
|
|
64
|
-
node
|
|
66
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --summary
|
|
65
67
|
```
|
|
66
68
|
|
|
67
69
|
2. **Parse the output** to get counts:
|
|
@@ -164,7 +166,7 @@ Verify required services are accessible:
|
|
|
164
166
|
If all pre-checks pass:
|
|
165
167
|
1. **Write checkpoint**:
|
|
166
168
|
```bash
|
|
167
|
-
node
|
|
169
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{current}/04.development/.checkpoints.json --stage 04_development --checkpoint environment_precheck --passed true --description "Runtime environment verification"
|
|
168
170
|
```
|
|
169
171
|
|
|
170
172
|
### 3.5 Pre-check Failure Handling
|
|
@@ -177,6 +179,8 @@ If any pre-check fails:
|
|
|
177
179
|
|
|
178
180
|
## Step 4: Dispatch Per-Module Dev Skills
|
|
179
181
|
|
|
182
|
+
> ⛔ **NO DIRECT CODING**: System Developer MUST NOT use file creation/editing tools to write application code. Every module implementation MUST be dispatched to a `speccrew-task-worker` agent running a dev skill (speccrew-dev-backend/frontend/mobile/desktop). System Developer's role in this phase is EXCLUSIVELY: task list creation, worker dispatch, progress tracking, and review coordination.
|
|
183
|
+
|
|
180
184
|
> **IMPORTANT**: Dispatch `speccrew-task-worker` agents (via Agent tool) for parallel module development. Do NOT call dev skills directly — each module MUST run in an independent Worker Agent for progress visibility and error isolation.
|
|
181
185
|
|
|
182
186
|
### 4.0 Initialize DISPATCH-PROGRESS.json
|
|
@@ -189,7 +193,7 @@ Before dispatching tasks, create or read dispatch progress file:
|
|
|
189
193
|
|
|
190
194
|
2. **If not exists — Create fresh dispatch progress**:
|
|
191
195
|
```bash
|
|
192
|
-
node
|
|
196
|
+
node speccrew-workspace/scripts/update-progress.js init --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --stage 04_development --tasks-file <tasks_json_path>
|
|
193
197
|
```
|
|
194
198
|
Where `<tasks_json_path>` contains the task list built from Step 1.3:
|
|
195
199
|
```json
|
|
@@ -206,7 +210,7 @@ Before dispatching tasks, create or read dispatch progress file:
|
|
|
206
210
|
|
|
207
211
|
3. **Alternatively, pass tasks JSON directly**:
|
|
208
212
|
```bash
|
|
209
|
-
node
|
|
213
|
+
node speccrew-workspace/scripts/update-progress.js init --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --stage 04_development --tasks '[{"id":"dev-web-vue-crm","platform":"web-vue","module":"crm","skill":"speccrew-dev-frontend","status":"pending"}]'
|
|
210
214
|
```
|
|
211
215
|
|
|
212
216
|
**Task Status Enumeration:**
|
|
@@ -276,11 +280,19 @@ for each platform_id:
|
|
|
276
280
|
**After user confirms**:
|
|
277
281
|
1. **Write checkpoint**:
|
|
278
282
|
```bash
|
|
279
|
-
node
|
|
283
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{current}/04.development/.checkpoints.json --stage 04_development --checkpoint task_list_review --passed true --description "Development task list confirmed by user"
|
|
280
284
|
```
|
|
281
285
|
|
|
282
286
|
### 4.3 Dispatch Workers with Concurrency Limit
|
|
283
287
|
|
|
288
|
+
> **FORBIDDEN ACTIONS for System Developer**:
|
|
289
|
+
> - ❌ Creating source code files (*.java, *.vue, *.ts, *.dart, etc.)
|
|
290
|
+
> - ❌ Writing implementation code in any language
|
|
291
|
+
> - ❌ Directly invoking dev skills (speccrew-dev-backend, etc.) via Skill tool
|
|
292
|
+
> - ❌ Modifying existing application source code
|
|
293
|
+
>
|
|
294
|
+
> **REQUIRED ACTION**: Dispatch `speccrew-task-worker` agents via Agent tool. Each worker independently calls the appropriate dev skill.
|
|
295
|
+
|
|
284
296
|
**Max concurrent workers: 10**
|
|
285
297
|
|
|
286
298
|
Process `task_list` using a queue-based concurrency limit model. Each task runs in an independent `speccrew-task-worker` agent:
|
|
@@ -297,7 +309,7 @@ while pending is not empty or running is not empty:
|
|
|
297
309
|
|
|
298
310
|
// Update task status to "in_progress"
|
|
299
311
|
```bash
|
|
300
|
-
node
|
|
312
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status in_progress
|
|
301
313
|
```
|
|
302
314
|
|
|
303
315
|
// Dispatch speccrew-task-worker agent (NOT Skill tool directly)
|
|
@@ -323,13 +335,13 @@ while pending is not empty or running is not empty:
|
|
|
323
335
|
if report.status == "SUCCESS":
|
|
324
336
|
// Mark as in_review pending review verification
|
|
325
337
|
```bash
|
|
326
|
-
node
|
|
338
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status in_review --output "{report.output_files}"
|
|
327
339
|
```
|
|
328
340
|
Add task to review_queue for Phase 4.4
|
|
329
341
|
else:
|
|
330
342
|
// Even failed dev workers go to review for diagnosis
|
|
331
343
|
```bash
|
|
332
|
-
node
|
|
344
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status in_review --error "{report.error}"
|
|
333
345
|
```
|
|
334
346
|
Add task to review_queue for Phase 4.4
|
|
335
347
|
|
|
@@ -350,7 +362,7 @@ while pending is not empty or running is not empty:
|
|
|
350
362
|
After processing a batch of completed workers:
|
|
351
363
|
1. **Read current progress summary**:
|
|
352
364
|
```bash
|
|
353
|
-
node
|
|
365
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --summary
|
|
354
366
|
```
|
|
355
367
|
2. Present progress summary to user:
|
|
356
368
|
```
|
|
@@ -401,16 +413,16 @@ for each task in review_queue:
|
|
|
401
413
|
|
|
402
414
|
if review.verdict == "PASS":
|
|
403
415
|
```bash
|
|
404
|
-
node
|
|
416
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status completed --output "{review_report_path}"
|
|
405
417
|
```
|
|
406
418
|
elif review.verdict == "PARTIAL":
|
|
407
419
|
```bash
|
|
408
|
-
node
|
|
420
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status partial --output "{review_report_path}" --metadata "{review.redispatch_guidance}"
|
|
409
421
|
```
|
|
410
422
|
Add task to redispatch_queue
|
|
411
423
|
else: // FAIL
|
|
412
424
|
```bash
|
|
413
|
-
node
|
|
425
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status failed --error "{review.summary}" --error-category VALIDATION_ERROR
|
|
414
426
|
```
|
|
415
427
|
```
|
|
416
428
|
|
|
@@ -420,8 +432,8 @@ After all initial dev + review cycles complete for the current batch:
|
|
|
420
432
|
|
|
421
433
|
1. **Query partial/failed tasks:**
|
|
422
434
|
```bash
|
|
423
|
-
node
|
|
424
|
-
node
|
|
435
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --status partial
|
|
436
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --status failed
|
|
425
437
|
```
|
|
426
438
|
|
|
427
439
|
2. **For each partial/failed task, re-dispatch a dev worker with:**
|
|
@@ -438,7 +450,7 @@ After all initial dev + review cycles complete for the current batch:
|
|
|
438
450
|
|
|
439
451
|
5. **Update counts after each cycle:**
|
|
440
452
|
```bash
|
|
441
|
-
node
|
|
453
|
+
node speccrew-workspace/scripts/update-progress.js update-counts --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json
|
|
442
454
|
```
|
|
443
455
|
|
|
444
456
|
**Re-dispatch Flow:**
|
|
@@ -453,13 +465,13 @@ for each task in redispatch_queue:
|
|
|
453
465
|
if attempts > 3:
|
|
454
466
|
// Max attempts reached - mark as permanently failed
|
|
455
467
|
```bash
|
|
456
|
-
node
|
|
468
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status failed --error "Max re-dispatch attempts (3) exceeded" --metadata "{accumulated_errors}"
|
|
457
469
|
```
|
|
458
470
|
continue
|
|
459
471
|
|
|
460
472
|
// Update attempt count and reset to in_progress
|
|
461
473
|
```bash
|
|
462
|
-
node
|
|
474
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{current}/04.development/DISPATCH-PROGRESS.json --task-id {task.id} --status in_progress --metadata "{attempts: attempts, previous_review: review_report_path}"
|
|
463
475
|
```
|
|
464
476
|
|
|
465
477
|
// Dispatch dev worker with supplemental context
|
|
@@ -590,12 +602,12 @@ Assess readiness for test phase:
|
|
|
590
602
|
|
|
591
603
|
1. **Update checkpoint**:
|
|
592
604
|
```bash
|
|
593
|
-
node
|
|
605
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{current}/04.development/.checkpoints.json --stage 04_development --checkpoint delivery_report --passed true --description "Final delivery report"
|
|
594
606
|
```
|
|
595
607
|
|
|
596
608
|
2. **Update WORKFLOW-PROGRESS.json**:
|
|
597
609
|
```bash
|
|
598
|
-
node
|
|
610
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/WORKFLOW-PROGRESS.json --stage 04_development --status confirmed --output "04.development/{platform_id}/{module}/"
|
|
599
611
|
```
|
|
600
612
|
|
|
601
613
|
3. **Confirm stage transition**: Report to user that development stage is complete and system is ready for testing phase.
|
|
@@ -630,3 +642,4 @@ Assess readiness for test phase:
|
|
|
630
642
|
- Dispatch dev skills for platforms not in design overview
|
|
631
643
|
- Ignore cross-platform integration issues
|
|
632
644
|
- Proceed to test phase with unresolved blockers
|
|
645
|
+
- Write application code directly (System Developer is a **pure orchestrator** — it reads design documents, creates task lists, dispatches workers, tracks progress, and coordinates reviews. It NEVER writes application code directly.)
|
|
@@ -21,7 +21,7 @@ Your core task is: coordinate three-phase testing workflow (test case design →
|
|
|
21
21
|
|
|
22
22
|
**Read `WORKFLOW-PROGRESS.json` overview**:
|
|
23
23
|
```bash
|
|
24
|
-
node
|
|
24
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/WORKFLOW-PROGRESS.json --overview
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Validation Rules:**
|
|
@@ -30,14 +30,14 @@ node .speccrew/scripts/update-progress.js read --file speccrew-workspace/WORKFLO
|
|
|
30
30
|
|
|
31
31
|
**Update Current Stage**:
|
|
32
32
|
```bash
|
|
33
|
-
node
|
|
33
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/WORKFLOW-PROGRESS.json --stage 05_system_test --status in_progress
|
|
34
34
|
```
|
|
35
35
|
|
|
36
36
|
### Step 0.2: Check Resume State (断点续传)
|
|
37
37
|
|
|
38
38
|
**Read Checkpoints** (if file exists):
|
|
39
39
|
```bash
|
|
40
|
-
node
|
|
40
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/.checkpoints.json --checkpoints
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
**Resume Decision Matrix:**
|
|
@@ -58,7 +58,7 @@ node .speccrew/scripts/update-progress.js read --file speccrew-workspace/iterati
|
|
|
58
58
|
|
|
59
59
|
**Read Dispatch Progress Summary** (if file exists):
|
|
60
60
|
```bash
|
|
61
|
-
node
|
|
61
|
+
node speccrew-workspace/scripts/update-progress.js read --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --summary
|
|
62
62
|
```
|
|
63
63
|
|
|
64
64
|
**Parse Task Status by Phase:**
|
|
@@ -185,7 +185,7 @@ Invoke Skill directly with parameters:
|
|
|
185
185
|
|
|
186
186
|
Before dispatching, create dispatch tracking:
|
|
187
187
|
```bash
|
|
188
|
-
node
|
|
188
|
+
node speccrew-workspace/scripts/update-progress.js init --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --stage 05_system_test --tasks '[{"id":"test-case-{platform_id}","platform":"{platform_id}","phase":"test_case_design","skill":"speccrew-test-case-design","status":"pending"}]'
|
|
189
189
|
```
|
|
190
190
|
Or use `--tasks-file` to load from a JSON file.
|
|
191
191
|
|
|
@@ -213,11 +213,11 @@ Dispatch `speccrew-task-worker` agents for `speccrew-test-case-design` for each
|
|
|
213
213
|
For each completed worker, parse Task Completion Report and update:
|
|
214
214
|
- On SUCCESS:
|
|
215
215
|
```bash
|
|
216
|
-
node
|
|
216
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --task-id test-case-{platform_id} --status completed --output "{output_path}"
|
|
217
217
|
```
|
|
218
218
|
- On FAILED:
|
|
219
219
|
```bash
|
|
220
|
-
node
|
|
220
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --task-id test-case-{platform_id} --status failed --error "{error_message}"
|
|
221
221
|
```
|
|
222
222
|
|
|
223
223
|
### 3.4 Checkpoint A: Test Case Review
|
|
@@ -241,7 +241,7 @@ After test case design completes for all platforms:
|
|
|
241
241
|
**Write Checkpoint File:**
|
|
242
242
|
|
|
243
243
|
```bash
|
|
244
|
-
node
|
|
244
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/.checkpoints.json --stage 05_system_test --checkpoint test_case_coverage --passed true --description "Test case coverage review (Checkpoint A)"
|
|
245
245
|
```
|
|
246
246
|
|
|
247
247
|
**Output Path:**
|
|
@@ -274,7 +274,7 @@ Invoke Skill directly:
|
|
|
274
274
|
|
|
275
275
|
Append new tasks for test_code_gen phase by reading existing file and adding tasks:
|
|
276
276
|
```bash
|
|
277
|
-
node
|
|
277
|
+
node speccrew-workspace/scripts/update-progress.js init --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS-test-code-gen.json --stage 05_system_test --tasks '[{"id":"test-code-{platform_id}","platform":"{platform_id}","phase":"test_code_gen","skill":"speccrew-test-code-gen","status":"pending"}]'
|
|
278
278
|
```
|
|
279
279
|
> **Note**: In practice, maintain a single DISPATCH-PROGRESS.json with all phases by merging task arrays.
|
|
280
280
|
|
|
@@ -293,11 +293,11 @@ Dispatch `speccrew-task-worker` agents for `speccrew-test-code-gen` for each pla
|
|
|
293
293
|
For each completed worker, parse Task Completion Report:
|
|
294
294
|
- On SUCCESS:
|
|
295
295
|
```bash
|
|
296
|
-
node
|
|
296
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --task-id test-code-{platform_id} --status completed --output "{output_path}"
|
|
297
297
|
```
|
|
298
298
|
- On FAILED:
|
|
299
299
|
```bash
|
|
300
|
-
node
|
|
300
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --task-id test-code-{platform_id} --status failed --error "{error_message}"
|
|
301
301
|
```
|
|
302
302
|
|
|
303
303
|
### 4.4 Checkpoint B: Code Review
|
|
@@ -321,7 +321,7 @@ After test code generation completes for all platforms:
|
|
|
321
321
|
**Update Checkpoint File:**
|
|
322
322
|
|
|
323
323
|
```bash
|
|
324
|
-
node
|
|
324
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/.checkpoints.json --stage 05_system_test --checkpoint test_code_review --passed true --description "Test code generation review (Checkpoint B)"
|
|
325
325
|
```
|
|
326
326
|
|
|
327
327
|
**Output:**
|
|
@@ -354,7 +354,7 @@ Invoke Skill directly:
|
|
|
354
354
|
|
|
355
355
|
Append new tasks for test_execution phase:
|
|
356
356
|
```bash
|
|
357
|
-
node
|
|
357
|
+
node speccrew-workspace/scripts/update-progress.js init --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS-test-exec.json --stage 05_system_test --tasks '[{"id":"test-exec-{platform_id}","platform":"{platform_id}","phase":"test_execution","skill":"speccrew-test-execute","status":"pending"}]'
|
|
358
358
|
```
|
|
359
359
|
> **Note**: In practice, maintain a single DISPATCH-PROGRESS.json with all phases by merging task arrays.
|
|
360
360
|
|
|
@@ -372,11 +372,11 @@ Dispatch `speccrew-task-worker` agents for `speccrew-test-execute` for each plat
|
|
|
372
372
|
For each completed worker, parse Task Completion Report:
|
|
373
373
|
- On SUCCESS:
|
|
374
374
|
```bash
|
|
375
|
-
node
|
|
375
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --task-id test-exec-{platform_id} --status completed --output "{output_path}"
|
|
376
376
|
```
|
|
377
377
|
- On FAILED:
|
|
378
378
|
```bash
|
|
379
|
-
node
|
|
379
|
+
node speccrew-workspace/scripts/update-progress.js update-task --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/DISPATCH-PROGRESS.json --task-id test-exec-{platform_id} --status failed --error "{error_message}"
|
|
380
380
|
```
|
|
381
381
|
|
|
382
382
|
### 5.4 Deviation Detection
|
|
@@ -441,13 +441,13 @@ Provide clear recommendation:
|
|
|
441
441
|
**Update Checkpoint File:**
|
|
442
442
|
|
|
443
443
|
```bash
|
|
444
|
-
node
|
|
444
|
+
node speccrew-workspace/scripts/update-progress.js write-checkpoint --file speccrew-workspace/iterations/{number}-{type}-{name}/05.system-test/.checkpoints.json --stage 05_system_test --checkpoint test_execution_report --passed true --description "Test execution final report"
|
|
445
445
|
```
|
|
446
446
|
|
|
447
447
|
**Update Workflow Progress:**
|
|
448
448
|
|
|
449
449
|
```bash
|
|
450
|
-
node
|
|
450
|
+
node speccrew-workspace/scripts/update-progress.js update-workflow --file speccrew-workspace/WORKFLOW-PROGRESS.json --stage 05_system_test --status confirmed --output "05.system-test/cases/,05.system-test/code/,05.system-test/reports/,05.system-test/bugs/"
|
|
451
451
|
```
|
|
452
452
|
|
|
453
453
|
> **Note**: `current_stage` does not advance — 05_system_test is the final stage of the pipeline.
|
package/lib/commands/init.js
CHANGED
|
@@ -144,12 +144,6 @@ function createWorkspaceStructure(workspaceDir) {
|
|
|
144
144
|
function copyWorkspaceTemplate(templateDir, workspaceDir) {
|
|
145
145
|
if (!fs.existsSync(templateDir)) return { copied: 0, skipped: 0 };
|
|
146
146
|
|
|
147
|
-
const docsSourceDir = path.join(templateDir, 'docs');
|
|
148
|
-
const docsDestDir = path.join(workspaceDir, 'docs');
|
|
149
|
-
|
|
150
|
-
if (!fs.existsSync(docsSourceDir)) return { copied: 0, skipped: 0 };
|
|
151
|
-
|
|
152
|
-
fs.mkdirSync(docsDestDir, { recursive: true });
|
|
153
147
|
let copied = 0, skipped = 0;
|
|
154
148
|
|
|
155
149
|
function copyIfNotExists(src, dest) {
|
|
@@ -172,7 +166,17 @@ function copyWorkspaceTemplate(templateDir, workspaceDir) {
|
|
|
172
166
|
}
|
|
173
167
|
}
|
|
174
168
|
|
|
175
|
-
|
|
169
|
+
// 遍历 workspace-template 下的所有一级子目录并复制
|
|
170
|
+
const entries = fs.readdirSync(templateDir, { withFileTypes: true });
|
|
171
|
+
for (const entry of entries) {
|
|
172
|
+
if (entry.isDirectory()) {
|
|
173
|
+
const srcSubDir = path.join(templateDir, entry.name);
|
|
174
|
+
const destSubDir = path.join(workspaceDir, entry.name);
|
|
175
|
+
fs.mkdirSync(destSubDir, { recursive: true });
|
|
176
|
+
copyIfNotExists(srcSubDir, destSubDir);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
176
180
|
return { copied, skipped };
|
|
177
181
|
}
|
|
178
182
|
|
package/lib/commands/update.js
CHANGED
|
@@ -453,13 +453,26 @@ function run() {
|
|
|
453
453
|
totalStats.extraDirs.push(...skillStats.extraDirs);
|
|
454
454
|
}
|
|
455
455
|
|
|
456
|
-
// 更新 workspace docs
|
|
457
|
-
const
|
|
458
|
-
const
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
456
|
+
// 更新 workspace 文件(docs, scripts 等所有子目录)
|
|
457
|
+
const destWorkspaceDir = path.join(projectRoot, 'speccrew-workspace');
|
|
458
|
+
const workspaceStats = { updated: 0, added: 0 };
|
|
459
|
+
|
|
460
|
+
// 遍历 workspace-template 下的所有一级子目录并同步
|
|
461
|
+
if (fs.existsSync(workspaceTemplatePath)) {
|
|
462
|
+
const templateEntries = fs.readdirSync(workspaceTemplatePath, { withFileTypes: true });
|
|
463
|
+
for (const entry of templateEntries) {
|
|
464
|
+
if (entry.isDirectory()) {
|
|
465
|
+
const srcSubDir = path.join(workspaceTemplatePath, entry.name);
|
|
466
|
+
const destSubDir = path.join(destWorkspaceDir, entry.name);
|
|
467
|
+
const subStats = { updated: 0, added: 0 };
|
|
468
|
+
updateWorkspaceDocs(srcSubDir, destSubDir, subStats);
|
|
469
|
+
workspaceStats.updated += subStats.updated;
|
|
470
|
+
workspaceStats.added += subStats.added;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
totalStats.workspaceDocs.updated = workspaceStats.updated;
|
|
475
|
+
totalStats.workspaceDocs.added = workspaceStats.added;
|
|
463
476
|
|
|
464
477
|
// 更新 npm 包文档 (GETTING-STARTED*.md and README*.md)
|
|
465
478
|
const packageRoot = getPackageRoot();
|
|
@@ -483,7 +496,8 @@ function run() {
|
|
|
483
496
|
|
|
484
497
|
console.log(`Agents: ${totalStats.agents.updated} updated, ${totalStats.agents.added} added`);
|
|
485
498
|
console.log(`Skills: ${totalStats.skills.updated} updated, ${totalStats.skills.added} added`);
|
|
486
|
-
console.log(`
|
|
499
|
+
console.log(`Workspace: ${totalStats.workspaceDocs.updated} updated, ${totalStats.workspaceDocs.added} added`);
|
|
500
|
+
console.log(`Docs: ${totalStats.packageDocs.updated} updated, ${totalStats.packageDocs.added} added`);
|
|
487
501
|
|
|
488
502
|
// 输出警告
|
|
489
503
|
const allExtras = [...new Set([...totalStats.extra, ...totalStats.extraDirs])];
|
package/package.json
CHANGED
|
File without changes
|