speccrew 0.6.9 → 0.6.10
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.
|
@@ -424,11 +424,42 @@ No knowledge base exists. A lightweight feature inventory scan is triggered to d
|
|
|
424
424
|
|
|
425
425
|
3. **After Worker completes**: Re-run Step 1.1 (dispatch detector again)
|
|
426
426
|
- **Verify** status changed from "none" to "lite"
|
|
427
|
-
- If status is now "lite" → **
|
|
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)
|
|
427
|
+
- If status is now "lite" → **Execute Path B immediately** (see MANDATORY instruction below)
|
|
430
428
|
- If status is still "none" → Initialization failed, proceed to Step 4
|
|
431
429
|
|
|
430
|
+
> 🛑 **MANDATORY — Path C → Path B Sequence**:
|
|
431
|
+
> After init-features completes (features-*.json generated), you MUST immediately execute Path B:
|
|
432
|
+
> 1. Dispatch Worker with `speccrew-pm-module-matcher` skill to match requirement features against the generated features inventory
|
|
433
|
+
> 2. Based on matcher results, dispatch Worker with `speccrew-pm-module-initializer` skill to deep-initialize matched modules' knowledge base
|
|
434
|
+
> 3. Only after module initialization completes, proceed to Phase 2 (Requirement Clarification)
|
|
435
|
+
>
|
|
436
|
+
> DO NOT skip Path B. DO NOT proceed directly to Phase 2 after Path C.
|
|
437
|
+
> The features-*.json files are INPUT for Path B's matcher, not the final output of Phase 1.
|
|
438
|
+
|
|
439
|
+
**Agent Tool Invocation for Path B Step 1 (Matcher)**:
|
|
440
|
+
```
|
|
441
|
+
Use the Agent tool to invoke speccrew-task-worker:
|
|
442
|
+
- agent: speccrew-task-worker
|
|
443
|
+
- task: Execute speccrew-pm-module-matcher skill
|
|
444
|
+
- context:
|
|
445
|
+
skill: speccrew-pm-module-matcher
|
|
446
|
+
sync_state_bizs_dir: {sync_state_bizs_dir}
|
|
447
|
+
requirement_summary: <brief summary of user's requirement>
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
**Agent Tool Invocation for Path B Step 2 (Module Initializer)**:
|
|
451
|
+
```
|
|
452
|
+
Use the Agent tool to invoke speccrew-task-worker:
|
|
453
|
+
- agent: speccrew-task-worker
|
|
454
|
+
- task: Execute speccrew-pm-module-initializer skill
|
|
455
|
+
- context:
|
|
456
|
+
skill: speccrew-pm-module-initializer
|
|
457
|
+
workspace_path: {workspace_path}
|
|
458
|
+
matched_modules: <modules from matcher result>
|
|
459
|
+
sync_state_bizs_dir: {sync_state_bizs_dir}
|
|
460
|
+
ide_skills_dir: {ide_skills_dir}
|
|
461
|
+
```
|
|
462
|
+
|
|
432
463
|
4. **IF feature inventory fails**:
|
|
433
464
|
- Report to user: "Project structure scan encountered issues: [specific error]. Continuing without knowledge base context."
|
|
434
465
|
- Log the error details for debugging
|
|
@@ -1089,6 +1120,8 @@ After all workers complete, report dispatch summary:
|
|
|
1089
1120
|
|
|
1090
1121
|
Update `.checkpoints.json` → `sub_prd_dispatch.passed = true` (only if all succeeded or user skips failures).
|
|
1091
1122
|
|
|
1123
|
+
> 🛑 **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.
|
|
1124
|
+
|
|
1092
1125
|
---
|
|
1093
1126
|
|
|
1094
1127
|
## Phase 6: Verification & Confirmation
|
package/package.json
CHANGED
|
@@ -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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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", "
|
|
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"],
|