speccrew 0.6.9 → 0.6.11

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.
@@ -93,33 +93,14 @@ Use Glob to search `{iterations_dir}/*/WORKFLOW-PROGRESS.json`
93
93
  - If `01_prd.status` is `confirmed`, check resume state (Step 0.2)
94
94
  3. **If WORKFLOW-PROGRESS.json does not exist**:
95
95
  - **MUST use script to initialize:**
96
+
97
+ > 🛑 **FORBIDDEN**: DO NOT manually create WORKFLOW-PROGRESS.json via Write/Edit tools. ALL initialization MUST be done via `update-progress.js` script.
98
+
96
99
  ```bash
97
100
  node "{update_progress_script}" update-workflow \
98
- --file {iterations_dir}/{iteration}/WORKFLOW-PROGRESS.json \
101
+ --file "{iterations_dir}/{iteration_name}/WORKFLOW-PROGRESS.json" \
99
102
  --stage 01_prd --status in_progress
100
103
  ```
101
- - **Fallback** (ONLY if script file does not exist):
102
- Create manually with the following structure:
103
- ```json
104
- {
105
- "iteration": "{iteration-name}",
106
- "current_stage": "01_prd",
107
- "stages": {
108
- "01_prd": {
109
- "status": "in_progress",
110
- "started_at": "<current-timestamp>",
111
- "completed_at": null,
112
- "confirmed_at": null,
113
- "outputs": []
114
- },
115
- "02_feature_design": { "status": "pending" },
116
- "03_system_design": { "status": "pending" },
117
- "04_development": { "status": "pending" },
118
- "05_deployment": { "status": "pending" },
119
- "06_system_test": { "status": "pending" }
120
- }
121
- }
122
- ```
123
104
 
124
105
  ## Phase 0.2: Check Resume State (Checkpoint Recovery)
125
106
 
@@ -424,11 +405,42 @@ No knowledge base exists. A lightweight feature inventory scan is triggered to d
424
405
 
425
406
  3. **After Worker completes**: Re-run Step 1.1 (dispatch detector again)
426
407
  - **Verify** status changed from "none" to "lite"
427
- - If status is now "lite" → **Continue with Path B flow**
428
- - Path B will use **matcher** to identify modules relevant to the user's requirement
429
- - Only those matched modules will be offered for deep initialization (module-initializer)
408
+ - If status is now "lite" → **Execute Path B immediately** (see MANDATORY instruction below)
430
409
  - If status is still "none" → Initialization failed, proceed to Step 4
431
410
 
411
+ > 🛑 **MANDATORY — Path C → Path B Sequence**:
412
+ > After init-features completes (features-*.json generated), you MUST immediately execute Path B:
413
+ > 1. Dispatch Worker with `speccrew-pm-module-matcher` skill to match requirement features against the generated features inventory
414
+ > 2. Based on matcher results, dispatch Worker with `speccrew-pm-module-initializer` skill to deep-initialize matched modules' knowledge base
415
+ > 3. Only after module initialization completes, proceed to Phase 2 (Requirement Clarification)
416
+ >
417
+ > DO NOT skip Path B. DO NOT proceed directly to Phase 2 after Path C.
418
+ > The features-*.json files are INPUT for Path B's matcher, not the final output of Phase 1.
419
+
420
+ **Agent Tool Invocation for Path B Step 1 (Matcher)**:
421
+ ```
422
+ Use the Agent tool to invoke speccrew-task-worker:
423
+ - agent: speccrew-task-worker
424
+ - task: Execute speccrew-pm-module-matcher skill
425
+ - context:
426
+ skill: speccrew-pm-module-matcher
427
+ sync_state_bizs_dir: {sync_state_bizs_dir}
428
+ requirement_summary: <brief summary of user's requirement>
429
+ ```
430
+
431
+ **Agent Tool Invocation for Path B Step 2 (Module Initializer)**:
432
+ ```
433
+ Use the Agent tool to invoke speccrew-task-worker:
434
+ - agent: speccrew-task-worker
435
+ - task: Execute speccrew-pm-module-initializer skill
436
+ - context:
437
+ skill: speccrew-pm-module-initializer
438
+ workspace_path: {workspace_path}
439
+ matched_modules: <modules from matcher result>
440
+ sync_state_bizs_dir: {sync_state_bizs_dir}
441
+ ide_skills_dir: {ide_skills_dir}
442
+ ```
443
+
432
444
  4. **IF feature inventory fails**:
433
445
  - Report to user: "Project structure scan encountered issues: [specific error]. Continuing without knowledge base context."
434
446
  - Log the error details for debugging
@@ -626,6 +638,9 @@ Clarification File: {iteration_path}/01.product-requirement/.clarification-summa
626
638
 
627
639
  - **IF user confirms** (explicit "įĄŪčŪĪ" or "OK"):
628
640
  1. Update checkpoint to record user confirmation:
641
+
642
+ > 🛑 **FORBIDDEN**: DO NOT manually edit .checkpoints.json via Write/Edit tools. ALL checkpoint updates MUST be done via `update-progress.js` script.
643
+
629
644
  ```bash
630
645
  node "{update_progress_script}" write-checkpoint \
631
646
  --file {iteration_path}/01.product-requirement/.checkpoints.json \
@@ -1089,6 +1104,8 @@ After all workers complete, report dispatch summary:
1089
1104
 
1090
1105
  Update `.checkpoints.json` → `sub_prd_dispatch.passed = true` (only if all succeeded or user skips failures).
1091
1106
 
1107
+ > 🛑 **MANDATORY**: After all Sub-PRDs are generated and checkpoint is recorded, you MUST immediately proceed to Phase 6 (Verification & User Review). DO NOT skip Phase 6. DO NOT directly ask the user if they want to continue to Feature Design. Phase 6 handles the formal verification, user review, and status update.
1108
+
1092
1109
  ---
1093
1110
 
1094
1111
  ## Phase 6: Verification & Confirmation
@@ -1256,10 +1273,14 @@ After presenting the documents above, you MUST stop and ask:
1256
1273
  > - If NO → Return to Phase 6.2 and wait for confirmation
1257
1274
  > - If YES → Proceed with the steps below
1258
1275
 
1276
+ > 🛑 **FORBIDDEN**: DO NOT manually edit WORKFLOW-PROGRESS.json via Write/Edit tools. ALL updates to this file MUST be done via `update-progress.js` script through `run_in_terminal`.
1277
+
1259
1278
  **5.3.1 Update Checkpoints**
1260
1279
 
1261
1280
  Now update all checkpoints (user has confirmed):
1262
1281
 
1282
+ > 🛑 **FORBIDDEN**: DO NOT manually edit .checkpoints.json via Write/Edit tools. ALL checkpoint updates MUST be done via `update-progress.js` script.
1283
+
1263
1284
  ```bash
1264
1285
  # Update verification_checklist checkpoint
1265
1286
  node "{update_progress_script}" write-checkpoint \
@@ -1276,10 +1297,14 @@ node "{update_progress_script}" write-checkpoint \
1276
1297
 
1277
1298
  **5.3.2 Update WORKFLOW-PROGRESS.json**
1278
1299
 
1300
+ **Update workflow status to completed:**
1301
+ ```bash
1302
+ node "{update_progress_script}" update-workflow --file "{iterations_dir}/{iteration_name}/WORKFLOW-PROGRESS.json" --stage 01_prd --status completed
1303
+ ```
1304
+
1305
+ **Update workflow status to confirmed (after user confirms):**
1279
1306
  ```bash
1280
- node "{update_progress_script}" update-workflow \
1281
- --file {iterations_dir}/{iteration}/WORKFLOW-PROGRESS.json \
1282
- --stage 01_prd --status completed
1307
+ node "{update_progress_script}" update-workflow --file "{iterations_dir}/{iteration_name}/WORKFLOW-PROGRESS.json" --stage 01_prd --status confirmed
1283
1308
  ```
1284
1309
 
1285
1310
  **5.3.3 Update PRD Status**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "speccrew",
3
- "version": "0.6.9",
3
+ "version": "0.6.11",
4
4
  "description": "Spec-Driven Development toolkit for AI-powered IDEs",
5
5
  "author": "charlesmu99",
6
6
  "repository": {
@@ -16,7 +16,7 @@
16
16
  "web": {
17
17
  "react": {
18
18
  "extensions": [".tsx", ".ts", ".jsx", ".js"],
19
- "exclude_dirs": ["components", "hooks", "lib", "utils", "contexts", "hocs", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
19
+ "exclude_dirs": ["components", "hooks", "lib", "utils", "contexts", "hocs", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
20
20
  "entry_patterns": ["src/pages/**/*.{tsx,jsx}", "src/components/**/*.{tsx,jsx}"],
21
21
  "api_call_patterns": ["fetch(", "axios.", "apiClient.", "useQuery", "useMutation"],
22
22
  "state_management": ["useState", "useReducer", "Redux", "Zustand", "MobX"],
@@ -25,7 +25,7 @@
25
25
  },
26
26
  "vue": {
27
27
  "extensions": [".vue", ".ts", ".js"],
28
- "exclude_dirs": ["components", "composables", "hooks", "utils", "mixins", "directives", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
28
+ "exclude_dirs": ["components", "composables", "hooks", "utils", "mixins", "directives", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
29
29
  "entry_patterns": ["src/views/**/*.vue", "src/components/**/*.vue", "pages/**/*.vue"],
30
30
  "api_call_patterns": ["axios.", "fetch(", "$http", "useFetch"],
31
31
  "state_management": ["Pinia", "Vuex", "ref", "reactive", "computed"],
@@ -34,7 +34,7 @@
34
34
  },
35
35
  "angular": {
36
36
  "extensions": [".ts", ".html", ".scss", ".css"],
37
- "exclude_dirs": ["components", "directives", "pipes", "guards", "interceptors", "services", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
37
+ "exclude_dirs": ["components", "directives", "pipes", "guards", "interceptors", "services", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
38
38
  "entry_patterns": ["src/app/components/**/*.ts", "src/app/pages/**/*.ts"],
39
39
  "api_call_patterns": ["HttpClient", "http.get", "http.post"],
40
40
  "state_management": ["RxJS", "NgRx", "BehaviorSubject", "Observable"],
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "nextjs": {
45
45
  "extensions": [".tsx", ".ts", ".jsx", ".js"],
46
- "exclude_dirs": ["components", "hooks", "lib", "utils", "contexts", "api", "src", "views", "pages", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
46
+ "exclude_dirs": ["components", "hooks", "lib", "utils", "contexts", "api", "views", "pages", "layout", "layouts", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
47
47
  "entry_patterns": ["app/**/*.{tsx,jsx}", "pages/**/*.{tsx,jsx}"],
48
48
  "api_call_patterns": ["fetch(", "axios.", "useSWR", "React Query"],
49
49
  "state_management": ["useState", "Zustand", "Redux", "Context API"],
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "nuxt": {
54
54
  "extensions": [".vue", ".ts", ".js"],
55
- "exclude_dirs": ["components", "composables", "utils", "plugins", "middleware", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
55
+ "exclude_dirs": ["components", "composables", "utils", "plugins", "middleware", "views", "pages", "api", "layout", "layouts", "assets", "store", "stores", "router", "routes", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
56
56
  "entry_patterns": ["pages/**/*.vue", "components/**/*.vue"],
57
57
  "api_call_patterns": ["$fetch", "useFetch", "axios."],
58
58
  "state_management": ["Pinia", "useState", "composables"],
@@ -61,7 +61,7 @@
61
61
  },
62
62
  "svelte": {
63
63
  "extensions": [".svelte", ".ts", ".js"],
64
- "exclude_dirs": ["components", "lib", "utils", "stores", "actions", "src", "views", "pages", "api", "layout", "layouts", "assets", "store", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
64
+ "exclude_dirs": ["components", "lib", "utils", "stores", "actions", "views", "pages", "api", "layout", "layouts", "assets", "store", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
65
65
  "entry_patterns": ["src/**/*.svelte", "routes/**/*.svelte"],
66
66
  "api_call_patterns": ["fetch(", "axios."],
67
67
  "state_management": ["writable", "readable", "derived", "Svelte Store"],
@@ -81,7 +81,7 @@
81
81
  },
82
82
  "react-native": {
83
83
  "extensions": [".tsx", ".ts", ".jsx", ".js"],
84
- "exclude_dirs": ["components", "hooks", "utils", "contexts", "navigations", "src", "views", "pages", "api", "screens", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
84
+ "exclude_dirs": ["components", "hooks", "utils", "contexts", "navigations", "views", "pages", "api", "screens", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs"],
85
85
  "entry_patterns": ["src/screens/**/*.{tsx,jsx}", "src/components/**/*.{tsx,jsx}"],
86
86
  "api_call_patterns": ["fetch(", "axios.", "apiClient."],
87
87
  "state_management": ["useState", "Redux", "MobX", "Zustand", "Recoil"],
@@ -90,7 +90,7 @@
90
90
  },
91
91
  "uniapp": {
92
92
  "extensions": [".vue", ".ts", ".js"],
93
- "exclude_dirs": ["components", "composables", "utils", "mixins", "directives", "src", "views", "pages", "api", "static", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs", "http", "tabbar", "constants", "common", "hooks", "style"],
93
+ "exclude_dirs": ["components", "composables", "utils", "mixins", "directives", "views", "pages", "api", "static", "assets", "store", "stores", "router", "routes", "plugins", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs", "http", "tabbar", "constants", "common", "hooks", "style"],
94
94
  "exclude_file_suffixes": [],
95
95
  "strip_module_prefixes": ["pages-"],
96
96
  "entry_patterns": ["pages/**/*.vue", "components/**/*.vue"],
@@ -117,7 +117,7 @@
117
117
  },
118
118
  "miniprogram": {
119
119
  "extensions": [".js", ".ts", ".wxml", ".wxss", ".json"],
120
- "exclude_dirs": ["components", "utils", "behaviors", "mixins", "src", "views", "pages", "api", "static", "assets", "store", "stores", "router", "routes", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs", "http", "tabbar", "constants", "common", "hooks", "style"],
120
+ "exclude_dirs": ["components", "utils", "behaviors", "mixins", "views", "pages", "api", "static", "assets", "store", "stores", "router", "routes", "styles", "types", "typings", "locales", "i18n", "lang", "config", "configs", "http", "tabbar", "constants", "common", "hooks", "style"],
121
121
  "exclude_file_suffixes": [],
122
122
  "strip_module_prefixes": ["pages-"],
123
123
  "entry_patterns": ["pages/**/*.js", "pages/**/*.ts", "components/**/*.js"],