speccrew 0.6.43 → 0.6.44
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/skills/speccrew-knowledge-bizs-api-analyze-xml/SKILL.md +495 -477
- package/.speccrew/skills/speccrew-knowledge-bizs-api-graph-xml/SKILL.md +281 -197
- package/.speccrew/skills/speccrew-knowledge-bizs-identify-entries-xml/SKILL.md +134 -144
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze-xml/SKILL.md +316 -377
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-graph-xml/SKILL.md +233 -131
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract-xml/SKILL.md +221 -209
- package/.speccrew/skills/speccrew-knowledge-module-summarize-xml/SKILL.md +291 -255
- package/.speccrew/skills/speccrew-knowledge-system-summarize-xml/SKILL.md +355 -281
- package/.speccrew/skills/speccrew-knowledge-techs-generate-conventions-xml/SKILL.md +722 -627
- package/.speccrew/skills/speccrew-knowledge-techs-generate-xml/SKILL.md +195 -117
- package/.speccrew/skills/speccrew-knowledge-techs-index-xml/SKILL.md +151 -99
- package/.speccrew/skills/speccrew-knowledge-techs-init-xml/SKILL.md +201 -99
- package/package.json +1 -1
|
@@ -43,115 +43,217 @@ Worker Agent (speccrew-task-worker)
|
|
|
43
43
|
|
|
44
44
|
> **REQUIRED**: Before executing this workflow, read the XML workflow specification: `docs/rules/xml-workflow-spec.md`
|
|
45
45
|
|
|
46
|
-
<workflow>
|
|
46
|
+
<workflow id="techs-init-main" status="pending" version="1.0" desc="Technology platform detection and manifest generation">
|
|
47
|
+
|
|
48
|
+
<!-- ============================================================
|
|
49
|
+
Global Rules
|
|
50
|
+
============================================================ -->
|
|
51
|
+
<block type="rule" id="GLOBAL-R1" level="mandatory" desc="Continuous Execution constraint">
|
|
52
|
+
<field name="text">Execute all steps in sequence without interruption. Worker must complete all steps before reporting results.</field>
|
|
53
|
+
</block>
|
|
54
|
+
|
|
55
|
+
<block type="rule" id="GLOBAL-R-TECHSTACK" level="mandatory" desc="Technology Stack constraint">
|
|
56
|
+
<field name="text">Detected platforms must align with standardized platform identifiers from platform-mapping.json.</field>
|
|
57
|
+
</block>
|
|
58
|
+
|
|
59
|
+
<!-- ============================================================
|
|
60
|
+
Input Parameters Definition
|
|
61
|
+
============================================================ -->
|
|
62
|
+
<block type="input" id="I1" desc="techs-init input parameters">
|
|
63
|
+
<field name="source_path" required="false" type="string" default="project-root" desc="Source code root directory"/>
|
|
64
|
+
<field name="output_path" required="false" type="string" default="speccrew-workspace/knowledges/base/sync-state/knowledge-techs/" desc="Output directory for techs-manifest.json"/>
|
|
65
|
+
<field name="language" required="true" type="string" desc="Target language for generated content"/>
|
|
66
|
+
</block>
|
|
67
|
+
|
|
68
|
+
<!-- ============================================================
|
|
69
|
+
Step 1: Scan for Platform Indicators
|
|
70
|
+
============================================================ -->
|
|
71
|
+
<sequence id="S1" name="Platform Detection" status="pending" desc="Analyze project structure to detect technology platforms">
|
|
47
72
|
|
|
48
|
-
<!-- Global Rules -->
|
|
49
|
-
<rule id="GLOBAL-R1" level="mandatory" description="Continuous Execution: Execute all steps in sequence without interruption. Worker must complete all steps before reporting results." />
|
|
50
|
-
<rule id="GLOBAL-R-TECHSTACK" level="mandatory" description="Technology Stack Constraint: Detected platforms must align with standardized platform identifiers from platform-mapping.json." />
|
|
51
|
-
|
|
52
|
-
<!-- Input Block -->
|
|
53
|
-
<input name="source_path" type="string" required="false" default="project-root" description="Source code root directory" />
|
|
54
|
-
<input name="output_path" type="string" required="false" default="speccrew-workspace/knowledges/base/sync-state/knowledge-techs/" description="Output directory for techs-manifest.json" />
|
|
55
|
-
<input name="language" type="string" required="true" description="Target language for generated content" />
|
|
56
|
-
|
|
57
|
-
<!-- Step 1: Scan for Platform Indicators -->
|
|
58
|
-
<task id="step1-scan-platforms" action="scan" description="Analyze project structure to detect technology platforms">
|
|
59
|
-
|
|
60
73
|
<!-- Step 1a: Read Platform Mapping Config -->
|
|
61
|
-
<task id="
|
|
62
|
-
<
|
|
63
|
-
|
|
74
|
+
<block type="task" id="S1-B1a" action="read-file" status="pending" desc="Read platform-mapping.json for standardized identifiers">
|
|
75
|
+
<field name="file_path">${workspace_path}/docs/configs/platform-mapping.json</field>
|
|
76
|
+
<field name="output" var="platform_mapping"/>
|
|
77
|
+
</block>
|
|
64
78
|
|
|
65
79
|
<!-- Step 1b: Detect Web Platforms -->
|
|
66
|
-
<gateway id="
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
80
|
+
<block type="gateway" id="S1-G1" mode="parallel" desc="Detect web platform indicators">
|
|
81
|
+
<branch test="package.json exists AND react dependency detected" name="web-react">
|
|
82
|
+
<field name="platform_id" value="web-react"/>
|
|
83
|
+
<field name="framework" value="react"/>
|
|
84
|
+
</branch>
|
|
85
|
+
<branch test="package.json exists AND vue dependency detected" name="web-vue">
|
|
86
|
+
<field name="platform_id" value="web-vue"/>
|
|
87
|
+
<field name="framework" value="vue"/>
|
|
88
|
+
</branch>
|
|
89
|
+
<branch test="package.json exists AND @angular/core detected" name="web-angular">
|
|
90
|
+
<field name="platform_id" value="web-angular"/>
|
|
91
|
+
<field name="framework" value="angular"/>
|
|
92
|
+
</branch>
|
|
93
|
+
<branch test="package.json exists AND next dependency detected" name="web-nextjs">
|
|
94
|
+
<field name="platform_id" value="web-nextjs"/>
|
|
95
|
+
<field name="framework" value="nextjs"/>
|
|
96
|
+
</branch>
|
|
97
|
+
<branch test="package.json exists AND nuxt dependency detected" name="web-nuxt">
|
|
98
|
+
<field name="platform_id" value="web-nuxt"/>
|
|
99
|
+
<field name="framework" value="nuxt"/>
|
|
100
|
+
</branch>
|
|
101
|
+
<branch test="package.json exists AND svelte dependency detected" name="web-svelte">
|
|
102
|
+
<field name="platform_id" value="web-svelte"/>
|
|
103
|
+
<field name="framework" value="svelte"/>
|
|
104
|
+
</branch>
|
|
105
|
+
</block>
|
|
74
106
|
|
|
75
107
|
<!-- Step 1c: Detect Mobile Platforms -->
|
|
76
|
-
<gateway id="
|
|
77
|
-
<
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
<
|
|
82
|
-
|
|
83
|
-
|
|
108
|
+
<block type="gateway" id="S1-G2" mode="parallel" desc="Detect mobile platform indicators">
|
|
109
|
+
<branch test="pubspec.yaml exists" name="mobile-flutter">
|
|
110
|
+
<field name="platform_id" value="mobile-flutter"/>
|
|
111
|
+
<field name="framework" value="flutter"/>
|
|
112
|
+
</branch>
|
|
113
|
+
<branch test="package.json exists AND react-native dependency detected" name="mobile-react-native">
|
|
114
|
+
<field name="platform_id" value="mobile-react-native"/>
|
|
115
|
+
<field name="framework" value="react-native"/>
|
|
116
|
+
</branch>
|
|
117
|
+
<branch test=".xcodeproj OR Package.swift exists" name="mobile-ios">
|
|
118
|
+
<field name="platform_id" value="mobile-ios"/>
|
|
119
|
+
<field name="framework" value="ios"/>
|
|
120
|
+
</branch>
|
|
121
|
+
<branch test="build.gradle exists AND AndroidManifest.xml exists" name="mobile-android">
|
|
122
|
+
<field name="platform_id" value="mobile-android"/>
|
|
123
|
+
<field name="framework" value="android"/>
|
|
124
|
+
</branch>
|
|
125
|
+
<branch test="manifest.json exists AND pages.json exists" name="mobile-uniapp">
|
|
126
|
+
<field name="platform_id" value="mobile-uniapp"/>
|
|
127
|
+
<field name="framework" value="uniapp"/>
|
|
128
|
+
</branch>
|
|
129
|
+
<branch test="project.config.json exists AND app.json exists" name="mobile-miniprogram">
|
|
130
|
+
<field name="platform_id" value="mobile-miniprogram"/>
|
|
131
|
+
<field name="framework" value="miniprogram"/>
|
|
132
|
+
</branch>
|
|
133
|
+
</block>
|
|
84
134
|
|
|
85
135
|
<!-- Step 1d: Detect Backend Platforms -->
|
|
86
|
-
<gateway id="
|
|
87
|
-
<
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
<
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
136
|
+
<block type="gateway" id="S1-G3" mode="parallel" desc="Detect backend platform indicators">
|
|
137
|
+
<branch test="package.json exists AND @nestjs/core detected" name="backend-nestjs">
|
|
138
|
+
<field name="platform_id" value="backend-nestjs"/>
|
|
139
|
+
<field name="framework" value="nestjs"/>
|
|
140
|
+
</branch>
|
|
141
|
+
<branch test="package.json exists AND express detected" name="backend-express">
|
|
142
|
+
<field name="platform_id" value="backend-express"/>
|
|
143
|
+
<field name="framework" value="express"/>
|
|
144
|
+
</branch>
|
|
145
|
+
<branch test="package.json exists AND fastify detected" name="backend-fastify">
|
|
146
|
+
<field name="platform_id" value="backend-fastify"/>
|
|
147
|
+
<field name="framework" value="fastify"/>
|
|
148
|
+
</branch>
|
|
149
|
+
<branch test="pom.xml exists AND spring-boot detected" name="backend-spring">
|
|
150
|
+
<field name="platform_id" value="backend-spring"/>
|
|
151
|
+
<field name="framework" value="spring"/>
|
|
152
|
+
</branch>
|
|
153
|
+
<branch test="requirements.txt exists AND django detected" name="backend-django">
|
|
154
|
+
<field name="platform_id" value="backend-django"/>
|
|
155
|
+
<field name="framework" value="django"/>
|
|
156
|
+
</branch>
|
|
157
|
+
<branch test="requirements.txt exists AND fastapi detected" name="backend-fastapi">
|
|
158
|
+
<field name="platform_id" value="backend-fastapi"/>
|
|
159
|
+
<field name="framework" value="fastapi"/>
|
|
160
|
+
</branch>
|
|
161
|
+
<branch test="go.mod exists" name="backend-go">
|
|
162
|
+
<field name="platform_id" value="backend-go"/>
|
|
163
|
+
<field name="framework" value="go"/>
|
|
164
|
+
</branch>
|
|
165
|
+
<branch test="Cargo.toml exists" name="backend-rust">
|
|
166
|
+
<field name="platform_id" value="backend-rust"/>
|
|
167
|
+
<field name="framework" value="rust"/>
|
|
168
|
+
</branch>
|
|
169
|
+
</block>
|
|
96
170
|
|
|
97
171
|
<!-- Step 1e: Detect Desktop Platforms -->
|
|
98
|
-
<gateway id="
|
|
99
|
-
<
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
<
|
|
112
|
-
<field name="platform_id" value="
|
|
113
|
-
<field name="
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
<field name="
|
|
117
|
-
<field name="
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
</
|
|
122
|
-
|
|
123
|
-
<!--
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
</
|
|
150
|
-
|
|
151
|
-
<!--
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
<
|
|
172
|
+
<block type="gateway" id="S1-G4" mode="parallel" desc="Detect desktop platform indicators">
|
|
173
|
+
<branch test="package.json exists AND electron detected" name="desktop-electron">
|
|
174
|
+
<field name="platform_id" value="desktop-electron"/>
|
|
175
|
+
<field name="framework" value="electron"/>
|
|
176
|
+
</branch>
|
|
177
|
+
<branch test="tauri.conf.json exists" name="desktop-tauri">
|
|
178
|
+
<field name="platform_id" value="desktop-tauri"/>
|
|
179
|
+
<field name="framework" value="tauri"/>
|
|
180
|
+
</branch>
|
|
181
|
+
<branch test=".csproj exists AND WPF references detected" name="desktop-wpf">
|
|
182
|
+
<field name="platform_id" value="desktop-wpf"/>
|
|
183
|
+
<field name="framework" value="wpf"/>
|
|
184
|
+
</branch>
|
|
185
|
+
<branch test=".csproj exists AND WinForms detected" name="desktop-winforms">
|
|
186
|
+
<field name="platform_id" value="desktop-winforms"/>
|
|
187
|
+
<field name="framework" value="winforms"/>
|
|
188
|
+
</branch>
|
|
189
|
+
<branch test=".pro file exists AND Qt detected" name="desktop-qt">
|
|
190
|
+
<field name="platform_id" value="desktop-qt"/>
|
|
191
|
+
<field name="framework" value="qt"/>
|
|
192
|
+
</branch>
|
|
193
|
+
</block>
|
|
194
|
+
|
|
195
|
+
</sequence>
|
|
196
|
+
|
|
197
|
+
<!-- ============================================================
|
|
198
|
+
Step 2: Extract Platform Metadata
|
|
199
|
+
============================================================ -->
|
|
200
|
+
<sequence id="S2" name="Metadata Extraction" status="pending" desc="Extract metadata for each detected platform">
|
|
201
|
+
|
|
202
|
+
<block type="loop" id="S2-L1" over="${detected_platforms}" as="platform" desc="Extract metadata for each detected platform">
|
|
203
|
+
<block type="task" id="S2-B1" action="analyze" status="pending" desc="Extract platform metadata fields">
|
|
204
|
+
<field name="platform_id" value="${platform.platform_type}-${platform.framework}"/>
|
|
205
|
+
<field name="platform_type" from="${platform.detected_type}"/>
|
|
206
|
+
<field name="framework" from="${platform.detected_framework}"/>
|
|
207
|
+
<field name="language" from="${platform.config_file_analysis}"/>
|
|
208
|
+
<field name="source_path" from="${platform.directory_location}"/>
|
|
209
|
+
<field name="config_files" from="${platform.file_list}"/>
|
|
210
|
+
<field name="convention_files" from="${platform.lint_format_configs}"/>
|
|
211
|
+
<field name="output" var="platform_metadata"/>
|
|
212
|
+
</block>
|
|
213
|
+
</block>
|
|
214
|
+
|
|
215
|
+
</sequence>
|
|
216
|
+
|
|
217
|
+
<!-- ============================================================
|
|
218
|
+
Step 3: Get Timestamp
|
|
219
|
+
============================================================ -->
|
|
220
|
+
<block type="task" id="S3-B1" action="run-script" status="pending" desc="Get current timestamp for generated_at field">
|
|
221
|
+
<field name="command">node scripts/get-timestamp.js</field>
|
|
222
|
+
<field name="output" var="timestamp"/>
|
|
223
|
+
</block>
|
|
224
|
+
|
|
225
|
+
<!-- ============================================================
|
|
226
|
+
Step 4: Generate techs-manifest.json
|
|
227
|
+
============================================================ -->
|
|
228
|
+
<block type="task" id="S4-B1" action="generate" status="pending" desc="Generate techs-manifest.json with detected platforms">
|
|
229
|
+
<field name="output_path">${output_path}/techs-manifest.json</field>
|
|
230
|
+
<field name="generated_at" value="${timestamp}"/>
|
|
231
|
+
<field name="source_path" value="${source_path}"/>
|
|
232
|
+
<field name="language" value="${language}"/>
|
|
233
|
+
<field name="platforms" from="${detected_platforms_metadata}"/>
|
|
234
|
+
</block>
|
|
235
|
+
|
|
236
|
+
<!-- ============================================================
|
|
237
|
+
Step 5: Report Results
|
|
238
|
+
============================================================ -->
|
|
239
|
+
<block type="event" id="S5-E1" action="log" level="info" desc="Report detection results">
|
|
240
|
+
Stage 1 completed: Technology Platform Detection
|
|
241
|
+
- Platforms Detected: ${platform_count}
|
|
242
|
+
- web-react: React 18.2.0, TypeScript 5.3.0
|
|
243
|
+
- backend-nestjs: NestJS 10.0.0, TypeScript 5.3.0
|
|
244
|
+
- Configuration Files Found: ${config_file_count}
|
|
245
|
+
- Output: ${output_path}/techs-manifest.json
|
|
246
|
+
- Next: Dispatch parallel tasks for Stage 2 (Tech Document Generation)
|
|
247
|
+
</block>
|
|
248
|
+
|
|
249
|
+
<!-- ============================================================
|
|
250
|
+
Output Definition
|
|
251
|
+
============================================================ -->
|
|
252
|
+
<block type="output" id="O1" desc="Workflow output results">
|
|
253
|
+
<field name="status" from="${detection_status}"/>
|
|
254
|
+
<field name="platforms_detected" from="${detected_platforms_list}"/>
|
|
255
|
+
<field name="manifest_path" from="${manifest_file_path}"/>
|
|
256
|
+
</block>
|
|
155
257
|
|
|
156
258
|
</workflow>
|
|
157
259
|
|