speccrew 0.6.64 → 0.6.66
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.
|
@@ -107,6 +107,27 @@ If the skill file is not found, report an error with the attempted paths.
|
|
|
107
107
|
> - If the Skill contains MANDATORY/FORBIDDEN constraints → You MUST follow them strictly.
|
|
108
108
|
> - DO NOT improvise alternative execution paths. If a step fails, report the error — do not attempt workarounds.
|
|
109
109
|
|
|
110
|
+
### XML Workflow Block Announcement Protocol
|
|
111
|
+
|
|
112
|
+
When executing a Skill that uses XML workflow format (`<workflow>` root element), you MUST follow the Block Execution Announcement Protocol defined in `docs/rules/xml-workflow-spec.md`:
|
|
113
|
+
|
|
114
|
+
1. **Before executing each `<block>`**, announce it using this exact format:
|
|
115
|
+
```
|
|
116
|
+
📋 Block [{block-id}] (type={block-type}, action={action}) — {block-desc}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
2. **ALL block types require announcement**: `task`, `loop`, `checkpoint`, `rule`, `gateway`, `input`, `output`.
|
|
120
|
+
|
|
121
|
+
3. **Special block announcements**:
|
|
122
|
+
- `loop`: Include iteration context — e.g., "Loop [L1] — Iterating over ${endpoints}, 6 items"
|
|
123
|
+
- `checkpoint`: Include validation result — e.g., "✅ Result: Template loaded, 15KB"
|
|
124
|
+
- `rule`: Include rule being applied — e.g., "✅ Result: MANDATORY constraint applied"
|
|
125
|
+
- `gateway`: Include branch taken — e.g., "Branch: fastapi template selected"
|
|
126
|
+
|
|
127
|
+
4. **FORBIDDEN**: Do NOT replace block announcements with your own numbering scheme (e.g., "步骤 1", "Step 1", "Phase 1"). You MUST use the block IDs defined in the Skill's XML workflow.
|
|
128
|
+
|
|
129
|
+
5. **Sequential execution**: Execute blocks strictly in document order (top-to-bottom), announcing each one before execution.
|
|
130
|
+
|
|
110
131
|
**If `skill_name` is NOT provided:**
|
|
111
132
|
1. Parse `context` to understand the task requirements
|
|
112
133
|
2. Execute the task directly based on context description
|
|
@@ -93,8 +93,8 @@ For each platform, generates:
|
|
|
93
93
|
|
|
94
94
|
<!-- Step 1: Read Directory Tree -->
|
|
95
95
|
<block type="task" id="B1" action="run-script" desc="Read each platform's sourcePath directory structure (3 levels deep)">
|
|
96
|
-
<field name="command">
|
|
97
|
-
<field name="
|
|
96
|
+
<field name="command">Get-ChildItem -Path "${platform.sourcePath}" -Recurse -Directory -Depth 2 | Select-Object -ExpandProperty FullName</field>
|
|
97
|
+
<field name="note">MUST use Get-ChildItem (NOT tree command). MUST use ${platform.sourcePath} absolute path (NOT relative path). Scan depth follows module_scan.depth configuration from tech-stack-mappings.json.</field>
|
|
98
98
|
<field name="output" var="directory_tree"/>
|
|
99
99
|
</block>
|
|
100
100
|
|
package/package.json
CHANGED
|
@@ -12,6 +12,29 @@
|
|
|
12
12
|
".next", ".nuxt", ".output",
|
|
13
13
|
"docs", "scripts", "public", "assets", "mock", "fixtures"
|
|
14
14
|
],
|
|
15
|
+
"tech_aliases": {
|
|
16
|
+
"vue3": "vue",
|
|
17
|
+
"vue2": "vue",
|
|
18
|
+
"react18": "react",
|
|
19
|
+
"react17": "react",
|
|
20
|
+
"next": "nextjs",
|
|
21
|
+
"nuxt3": "nuxt",
|
|
22
|
+
"nuxt2": "nuxt",
|
|
23
|
+
"svelte-kit": "svelte",
|
|
24
|
+
"spring-boot": "spring",
|
|
25
|
+
"springboot": "spring",
|
|
26
|
+
"nest": "nestjs",
|
|
27
|
+
"fast-api": "fastapi",
|
|
28
|
+
"python-fastapi": "fastapi",
|
|
29
|
+
"gin": "go",
|
|
30
|
+
"echo": "go",
|
|
31
|
+
"actix": "rust",
|
|
32
|
+
"axum": "rust",
|
|
33
|
+
"uni-app": "uniapp",
|
|
34
|
+
"weapp": "miniprogram",
|
|
35
|
+
"wechat-miniprogram": "miniprogram",
|
|
36
|
+
"rn": "react-native"
|
|
37
|
+
},
|
|
15
38
|
"tech_stacks": {
|
|
16
39
|
"web": {
|
|
17
40
|
"react": {
|