speccrew 0.6.42 → 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 +505 -477
- package/.speccrew/skills/speccrew-knowledge-bizs-api-graph-xml/SKILL.md +290 -196
- package/.speccrew/skills/speccrew-knowledge-bizs-identify-entries-xml/SKILL.md +145 -145
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze-xml/SKILL.md +325 -376
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-graph-xml/SKILL.md +241 -129
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract-xml/SKILL.md +231 -209
- package/.speccrew/skills/speccrew-knowledge-module-summarize-xml/SKILL.md +301 -255
- package/.speccrew/skills/speccrew-knowledge-system-summarize-xml/SKILL.md +362 -278
- 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
|
@@ -40,123 +40,201 @@ Generate comprehensive technology documentation for a specific platform by analy
|
|
|
40
40
|
|
|
41
41
|
> **REQUIRED**: Before executing this workflow, read the XML workflow specification: `docs/rules/xml-workflow-spec.md`
|
|
42
42
|
|
|
43
|
-
<workflow>
|
|
44
|
-
|
|
45
|
-
<!--
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
<
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
<
|
|
117
|
-
<
|
|
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
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
43
|
+
<workflow id="techs-generate-main" status="pending" version="1.0" desc="Platform technology documentation generation">
|
|
44
|
+
|
|
45
|
+
<!-- ============================================================
|
|
46
|
+
Global Rules
|
|
47
|
+
============================================================ -->
|
|
48
|
+
<block type="rule" id="GLOBAL-R1" level="mandatory" desc="Continuous Execution constraint">
|
|
49
|
+
<field name="text">Execute all steps in sequence without interruption. Worker must complete all steps before reporting results.</field>
|
|
50
|
+
</block>
|
|
51
|
+
|
|
52
|
+
<block type="rule" id="GLOBAL-R-TECHSTACK" level="mandatory" desc="Technology Stack constraint">
|
|
53
|
+
<field name="text">All generated documents must align with the detected technology stack of the platform.</field>
|
|
54
|
+
</block>
|
|
55
|
+
|
|
56
|
+
<!-- ============================================================
|
|
57
|
+
Input Parameters Definition
|
|
58
|
+
============================================================ -->
|
|
59
|
+
<block type="input" id="I1" desc="techs-generate input parameters">
|
|
60
|
+
<field name="platform_id" required="true" type="string" desc="Platform identifier (e.g., web-react, backend-nestjs)"/>
|
|
61
|
+
<field name="platform_type" required="true" type="string" desc="Platform type (web, mobile, backend, desktop)"/>
|
|
62
|
+
<field name="framework" required="true" type="string" desc="Primary framework (react, nestjs, flutter, etc.)"/>
|
|
63
|
+
<field name="source_path" required="true" type="string" desc="Platform source directory"/>
|
|
64
|
+
<field name="config_files" required="true" type="array" desc="List of configuration file paths"/>
|
|
65
|
+
<field name="convention_files" required="false" type="array" desc="List of convention file paths"/>
|
|
66
|
+
<field name="output_path" required="true" type="string" desc="Output directory for generated documents"/>
|
|
67
|
+
<field name="language" required="true" type="string" desc="Target language (e.g., zh, en)"/>
|
|
68
|
+
<field name="completed_dir" required="false" type="string" desc="Directory for analysis coverage report output"/>
|
|
69
|
+
</block>
|
|
70
|
+
|
|
71
|
+
<!-- ============================================================
|
|
72
|
+
Step 0: Read Document Templates
|
|
73
|
+
============================================================ -->
|
|
74
|
+
<sequence id="S0" name="Template Loading" status="pending" desc="Read document templates from templates directory">
|
|
75
|
+
|
|
76
|
+
<block type="task" id="S0-B1" action="read-file" status="pending" desc="Read document templates from templates directory">
|
|
77
|
+
<field name="file_path">${skill_dir}/../speccrew-knowledge-techs-generate/templates/</field>
|
|
78
|
+
<field name="output" var="document_templates"/>
|
|
79
|
+
</block>
|
|
80
|
+
|
|
81
|
+
</sequence>
|
|
82
|
+
|
|
83
|
+
<!-- ============================================================
|
|
84
|
+
Step 1: Read Configuration Files
|
|
85
|
+
============================================================ -->
|
|
86
|
+
<sequence id="S1" name="Config Reading" status="pending" desc="Read primary configuration and convention files">
|
|
87
|
+
|
|
88
|
+
<block type="task" id="S1-B1" action="read-files" status="pending" desc="Read primary configuration and convention files">
|
|
89
|
+
<field name="files" value="${config_files},${convention_files}"/>
|
|
90
|
+
<field name="output" var="config_contents"/>
|
|
91
|
+
</block>
|
|
92
|
+
|
|
93
|
+
</sequence>
|
|
94
|
+
|
|
95
|
+
<!-- ============================================================
|
|
96
|
+
Step 2: Extract Technology Stack
|
|
97
|
+
============================================================ -->
|
|
98
|
+
<sequence id="S2" name="Tech Stack Extraction" status="pending" desc="Parse configuration files to extract technology stack">
|
|
99
|
+
|
|
100
|
+
<block type="task" id="S2-B1" action="analyze" status="pending" desc="Parse configuration files to extract technology stack">
|
|
101
|
+
<field name="extract_items">
|
|
102
|
+
<field name="core_framework" source="package.json|pom.xml|requirements.txt|pubspec.yaml|go.mod"/>
|
|
103
|
+
<field name="dependencies" source="dependencies section"/>
|
|
104
|
+
<field name="build_tools" source="devDependencies, scripts"/>
|
|
105
|
+
</field>
|
|
106
|
+
<field name="output" var="tech_stack"/>
|
|
107
|
+
</block>
|
|
108
|
+
|
|
109
|
+
</sequence>
|
|
110
|
+
|
|
111
|
+
<!-- ============================================================
|
|
112
|
+
Step 3: Analyze Conventions
|
|
113
|
+
============================================================ -->
|
|
114
|
+
<sequence id="S3" name="Convention Analysis" status="pending" desc="Extract conventions from config files and analyze project structure">
|
|
115
|
+
|
|
116
|
+
<block type="task" id="S3-B1" action="read-file" status="pending" desc="Read mermaid-rule.md for diagram generation">
|
|
117
|
+
<field name="file_path">${workspace_path}/docs/rules/mermaid-rule.md</field>
|
|
118
|
+
<field name="output" var="mermaid_rule"/>
|
|
119
|
+
</block>
|
|
120
|
+
|
|
121
|
+
<block type="task" id="S3-B2" action="analyze" status="pending" desc="Extract conventions from ESLint/Prettier configs and analyze directory structure">
|
|
122
|
+
<field name="extract_from" value="ESLint/Prettier configs"/>
|
|
123
|
+
<field name="analyze_dir" value="${source_path}"/>
|
|
124
|
+
<field name="analyze_for" value="directory-conventions"/>
|
|
125
|
+
<field name="output" var="conventions"/>
|
|
126
|
+
</block>
|
|
127
|
+
|
|
128
|
+
</sequence>
|
|
129
|
+
|
|
130
|
+
<!-- ============================================================
|
|
131
|
+
Step 4: UI Style Analysis (Frontend Platforms Only)
|
|
132
|
+
============================================================ -->
|
|
133
|
+
<block type="gateway" id="S4-G1" mode="exclusive" desc="Check if platform is frontend">
|
|
134
|
+
<branch test="${platform_type} IN [web, mobile, desktop]" name="Frontend platform">
|
|
135
|
+
<block type="task" id="S4-B1" action="run-skill" status="pending" desc="Invoke UI style analysis skill">
|
|
136
|
+
<field name="skill">speccrew-knowledge-techs-ui-analyze</field>
|
|
137
|
+
<field name="args">source_path=${source_path};platform_id=${platform_id};platform_type=${platform_type};framework=${framework};output_path=${output_path}/ui-style/;language=${language}</field>
|
|
138
|
+
<field name="output" var="ui_style_result"/>
|
|
139
|
+
</block>
|
|
140
|
+
</branch>
|
|
141
|
+
<branch default="true" name="Backend platform">
|
|
142
|
+
<block type="event" id="S4-E1" action="log" level="info" desc="UI style analysis skipped">
|
|
143
|
+
UI style analysis skipped for backend platform
|
|
144
|
+
</block>
|
|
145
|
+
</branch>
|
|
146
|
+
</block>
|
|
147
|
+
|
|
148
|
+
<!-- ============================================================
|
|
149
|
+
Step 5: Generate Documents
|
|
150
|
+
============================================================ -->
|
|
151
|
+
<sequence id="S5" name="Document Generation" status="pending" desc="Generate all required documents using template fill workflow">
|
|
152
|
+
|
|
153
|
+
<block type="task" id="S5-B1" action="generate" status="pending" desc="Generate all required documents using template fill workflow">
|
|
154
|
+
<field name="template_path">${skill_dir}/../speccrew-knowledge-techs-generate/templates/</field>
|
|
155
|
+
<field name="output_path">${output_path}</field>
|
|
156
|
+
<field name="documents">
|
|
157
|
+
<field name="INDEX.md" template="INDEX-TEMPLATE.md"/>
|
|
158
|
+
<field name="tech-stack.md" template="TECH-STACK-TEMPLATE.md"/>
|
|
159
|
+
<field name="architecture.md" template="ARCHITECTURE-TEMPLATE.md"/>
|
|
160
|
+
<field name="conventions-design.md" template="CONVENTIONS-DESIGN-TEMPLATE.md"/>
|
|
161
|
+
<field name="conventions-dev.md" template="CONVENTIONS-DEV-TEMPLATE.md"/>
|
|
162
|
+
<field name="conventions-unit-test.md" template="CONVENTIONS-UNIT-TEST-TEMPLATE.md"/>
|
|
163
|
+
<field name="conventions-system-test.md" template="CONVENTIONS-SYSTEM-TEST-TEMPLATE.md"/>
|
|
164
|
+
<field name="conventions-build.md" template="CONVENTIONS-BUILD-TEMPLATE.md"/>
|
|
165
|
+
</field>
|
|
166
|
+
<field name="output" var="generated_docs"/>
|
|
167
|
+
</block>
|
|
168
|
+
|
|
169
|
+
</sequence>
|
|
170
|
+
|
|
171
|
+
<!-- ============================================================
|
|
172
|
+
Step 5b: Generate conventions-data.md for Backend
|
|
173
|
+
============================================================ -->
|
|
174
|
+
<block type="gateway" id="S5b-G1" mode="exclusive" desc="Check if data layer document needed">
|
|
175
|
+
<branch test="${platform_type} == backend OR ${data_layer_detected} == true" name="Data layer required">
|
|
176
|
+
<block type="task" id="S5b-B1" action="generate" status="pending" desc="Generate data layer conventions">
|
|
177
|
+
<field name="template" value="CONVENTIONS-DATA-TEMPLATE.md"/>
|
|
178
|
+
<field name="output_path">${output_path}/conventions-data.md</field>
|
|
179
|
+
<field name="output" var="data_conventions"/>
|
|
180
|
+
</block>
|
|
181
|
+
</branch>
|
|
182
|
+
<branch default="true" name="No data layer">
|
|
183
|
+
<block type="event" id="S5b-E1" action="log" level="info" desc="Data conventions skipped">
|
|
184
|
+
conventions-data.md skipped - not required for this platform
|
|
185
|
+
</block>
|
|
186
|
+
</branch>
|
|
187
|
+
</block>
|
|
188
|
+
|
|
189
|
+
<!-- ============================================================
|
|
190
|
+
Step 6: Write Output Files
|
|
191
|
+
============================================================ -->
|
|
192
|
+
<block type="task" id="S6-B1" action="write-files" status="pending" desc="Write all generated documents to output directory">
|
|
193
|
+
<field name="output_path">${output_path}</field>
|
|
194
|
+
<field name="files" from="${generated_docs}"/>
|
|
195
|
+
</block>
|
|
196
|
+
|
|
197
|
+
<!-- ============================================================
|
|
198
|
+
Step 7: Generate Analysis Coverage Report
|
|
199
|
+
============================================================ -->
|
|
200
|
+
<block type="task" id="S7-B1" action="generate" status="pending" desc="Generate analysis coverage JSON report">
|
|
201
|
+
<field name="output_path">${completed_dir}/${platform_id}.analysis.json</field>
|
|
202
|
+
<field name="format" value="json"/>
|
|
203
|
+
<field name="include">
|
|
204
|
+
<field name="topics_analysis"/>
|
|
205
|
+
<field name="config_files_analyzed"/>
|
|
206
|
+
<field name="source_dirs_scanned"/>
|
|
207
|
+
<field name="documents_generated"/>
|
|
208
|
+
</field>
|
|
209
|
+
<field name="output" var="coverage_report"/>
|
|
210
|
+
</block>
|
|
211
|
+
|
|
212
|
+
<!-- ============================================================
|
|
213
|
+
Step 8: Report Results
|
|
214
|
+
============================================================ -->
|
|
215
|
+
<block type="event" id="S8-E1" action="log" level="info" desc="Report generation results">
|
|
216
|
+
Platform Technology Documents Generated: ${platform_id}
|
|
217
|
+
- INDEX.md: ✓
|
|
218
|
+
- tech-stack.md: ✓
|
|
219
|
+
- architecture.md: ✓
|
|
220
|
+
- conventions-design.md: ✓
|
|
221
|
+
- conventions-dev.md: ✓
|
|
222
|
+
- conventions-unit-test.md: ✓
|
|
223
|
+
- conventions-system-test.md: ✓
|
|
224
|
+
- conventions-build.md: ✓
|
|
225
|
+
- conventions-data.md: ✓ (or skipped)
|
|
226
|
+
- ui-style-guide.md: ✓ (frontend only)
|
|
227
|
+
- Output Directory: ${output_path}
|
|
228
|
+
</block>
|
|
229
|
+
|
|
230
|
+
<!-- ============================================================
|
|
231
|
+
Output Definition
|
|
232
|
+
============================================================ -->
|
|
233
|
+
<block type="output" id="O1" desc="Workflow output results">
|
|
234
|
+
<field name="status" from="${generation_status}"/>
|
|
235
|
+
<field name="documents_generated" from="${generated_files_list}"/>
|
|
236
|
+
<field name="coverage_report" from="${analysis_coverage}"/>
|
|
237
|
+
</block>
|
|
160
238
|
|
|
161
239
|
</workflow>
|
|
162
240
|
|
|
@@ -50,105 +50,157 @@ Worker Agent (speccrew-task-worker)
|
|
|
50
50
|
|
|
51
51
|
> **REQUIRED**: Before executing this workflow, read the XML workflow specification: `docs/rules/xml-workflow-spec.md`
|
|
52
52
|
|
|
53
|
-
<workflow>
|
|
54
|
-
|
|
55
|
-
<!--
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
-
|
|
53
|
+
<workflow id="techs-index-main" status="pending" version="1.0" desc="Root technology index generation from platform manifests">
|
|
54
|
+
|
|
55
|
+
<!-- ============================================================
|
|
56
|
+
Global Rules
|
|
57
|
+
============================================================ -->
|
|
58
|
+
<block type="rule" id="GLOBAL-R1" level="mandatory" desc="Continuous Execution constraint">
|
|
59
|
+
<field name="text">Execute all steps in sequence without interruption. Worker must complete all steps before reporting results.</field>
|
|
60
|
+
</block>
|
|
61
|
+
|
|
62
|
+
<block type="rule" id="GLOBAL-R-TECHSTACK" level="mandatory" desc="Technology Stack constraint">
|
|
63
|
+
<field name="text">All generated index documents must accurately reflect detected platform technology stacks.</field>
|
|
64
|
+
</block>
|
|
65
|
+
|
|
66
|
+
<!-- ============================================================
|
|
67
|
+
Input Parameters Definition
|
|
68
|
+
============================================================ -->
|
|
69
|
+
<block type="input" id="I1" desc="techs-index input parameters">
|
|
70
|
+
<field name="manifest_path" required="true" type="string" desc="Path to techs-manifest.json"/>
|
|
71
|
+
<field name="techs_base_path" required="false" type="string" default="speccrew-workspace/knowledges/techs/" desc="Base path for techs documentation"/>
|
|
72
|
+
<field name="output_path" required="false" type="string" default="speccrew-workspace/knowledges/techs/" desc="Output path for root INDEX.md"/>
|
|
73
|
+
<field name="language" required="true" type="string" desc="Target language (e.g., zh, en)"/>
|
|
74
|
+
</block>
|
|
75
|
+
|
|
76
|
+
<!-- ============================================================
|
|
77
|
+
Step 0: Read Root Index Template
|
|
78
|
+
============================================================ -->
|
|
79
|
+
<sequence id="S0" name="Template Loading" status="pending" desc="Read root index template to understand required structure">
|
|
80
|
+
|
|
81
|
+
<block type="task" id="S0-B1" action="read-file" status="pending" desc="Read root index template">
|
|
82
|
+
<field name="file_path">${skill_dir}/../speccrew-knowledge-techs-index/templates/INDEX-TEMPLATE.md</field>
|
|
83
|
+
<field name="output" var="index_template"/>
|
|
84
|
+
</block>
|
|
85
|
+
|
|
86
|
+
</sequence>
|
|
87
|
+
|
|
88
|
+
<!-- ============================================================
|
|
89
|
+
Step 1: Read Manifest
|
|
90
|
+
============================================================ -->
|
|
91
|
+
<sequence id="S1" name="Manifest Reading" status="pending" desc="Read techs-manifest.json to get platform list">
|
|
92
|
+
|
|
93
|
+
<block type="task" id="S1-B1" action="read-file" status="pending" desc="Read techs-manifest.json">
|
|
94
|
+
<field name="file_path">${manifest_path}</field>
|
|
95
|
+
<field name="output" var="techs_manifest"/>
|
|
96
|
+
</block>
|
|
97
|
+
|
|
98
|
+
</sequence>
|
|
99
|
+
|
|
100
|
+
<!-- ============================================================
|
|
101
|
+
Step 2: Verify Platform Documents
|
|
102
|
+
============================================================ -->
|
|
103
|
+
<sequence id="S2" name="Document Verification" status="pending" desc="Scan each platform directory for document availability">
|
|
104
|
+
|
|
105
|
+
<block type="loop" id="S2-L1" over="${techs_manifest.platforms}" as="platform" desc="Scan each platform directory for document availability">
|
|
106
|
+
<!-- Step 2a: List .md files in platform directory -->
|
|
107
|
+
<block type="task" id="S2-B1" action="list-dir" status="pending" desc="List all .md files in platform directory">
|
|
108
|
+
<field name="path">${techs_base_path}/${platform.platform_id}/</field>
|
|
109
|
+
<field name="filter" value="*.md"/>
|
|
110
|
+
<field name="output" var="platform_md_files"/>
|
|
111
|
+
</block>
|
|
112
|
+
|
|
113
|
+
<!-- Step 2b: Verify required documents -->
|
|
114
|
+
<block type="task" id="S2-B2" action="verify" status="pending" desc="Check required documents exist">
|
|
115
|
+
<field name="required_docs" value="INDEX.md,tech-stack.md,architecture.md,conventions-design.md,conventions-dev.md,conventions-unit-test.md,conventions-system-test.md,conventions-build.md"/>
|
|
116
|
+
<field name="optional_docs" value="conventions-data.md"/>
|
|
117
|
+
<field name="on_missing_required" value="mark-incomplete"/>
|
|
118
|
+
<field name="output" var="platform_doc_status"/>
|
|
119
|
+
</block>
|
|
120
|
+
</block>
|
|
121
|
+
|
|
122
|
+
</sequence>
|
|
123
|
+
|
|
124
|
+
<!-- ============================================================
|
|
125
|
+
Step 3: Extract Platform Summaries
|
|
126
|
+
============================================================ -->
|
|
127
|
+
<sequence id="S3" name="Summary Extraction" status="pending" desc="Read each platform INDEX.md for summary extraction">
|
|
128
|
+
|
|
129
|
+
<block type="loop" id="S3-L1" over="${techs_manifest.platforms}" as="platform" desc="Read each platform INDEX.md for summary extraction">
|
|
130
|
+
<block type="gateway" id="S3-G1" mode="guard" test="${platform.documents.INDEX.md} exists" fail-action="skip" desc="Only process platforms with INDEX.md">
|
|
131
|
+
<field name="message">Skipping platform without INDEX.md: ${platform.platform_id}</field>
|
|
132
|
+
|
|
133
|
+
<block type="task" id="S3-B1" action="read-file" status="pending" desc="Read platform INDEX.md">
|
|
134
|
+
<field name="file_path">${techs_base_path}/${platform.platform_id}/INDEX.md</field>
|
|
135
|
+
<field name="output" var="platform_index_content"/>
|
|
136
|
+
</block>
|
|
137
|
+
|
|
138
|
+
<block type="task" id="S3-B2" action="analyze" status="pending" desc="Extract platform name, framework, language, key technologies">
|
|
139
|
+
<field name="extract_fields" value="platform_name,framework,language,key_technologies"/>
|
|
140
|
+
<field name="output" var="platform_summary"/>
|
|
141
|
+
</block>
|
|
142
|
+
</block>
|
|
143
|
+
</block>
|
|
144
|
+
|
|
145
|
+
</sequence>
|
|
146
|
+
|
|
147
|
+
<!-- ============================================================
|
|
148
|
+
Step 4: Get Timestamp
|
|
149
|
+
============================================================ -->
|
|
150
|
+
<block type="task" id="S4-B1" action="run-script" status="pending" desc="Get current timestamp for generated_at field">
|
|
151
|
+
<field name="command">node scripts/get-timestamp.js</field>
|
|
152
|
+
<field name="output" var="timestamp"/>
|
|
153
|
+
</block>
|
|
154
|
+
|
|
155
|
+
<!-- ============================================================
|
|
156
|
+
Step 5: Generate Root INDEX.md
|
|
157
|
+
============================================================ -->
|
|
158
|
+
<sequence id="S5" name="Index Generation" status="pending" desc="Generate root INDEX.md using template fill workflow">
|
|
159
|
+
|
|
160
|
+
<block type="task" id="S5-B1" action="generate" status="pending" desc="Generate root INDEX.md from template">
|
|
161
|
+
<field name="template_path">${skill_dir}/../speccrew-knowledge-techs-index/templates/INDEX-TEMPLATE.md</field>
|
|
162
|
+
<field name="output_path">${output_path}/INDEX.md</field>
|
|
163
|
+
<field name="sections">
|
|
164
|
+
<field name="header" value="${generated_at},${source_path},${platform_count}"/>
|
|
165
|
+
<field name="platform-overview" value="dynamic_links_from_verification"/>
|
|
166
|
+
<field name="quick-reference" value="organized_links"/>
|
|
167
|
+
<field name="agent-mapping" value="platform_agent_documents"/>
|
|
168
|
+
<field name="document-guide" value="document_descriptions"/>
|
|
169
|
+
<field name="usage-guide" value="agent_usage_instructions"/>
|
|
170
|
+
</field>
|
|
171
|
+
<field name="output" var="generated_index"/>
|
|
172
|
+
</block>
|
|
173
|
+
|
|
174
|
+
</sequence>
|
|
175
|
+
|
|
176
|
+
<!-- ============================================================
|
|
177
|
+
Step 6: Write Output
|
|
178
|
+
============================================================ -->
|
|
179
|
+
<block type="task" id="S6-B1" action="write-file" status="pending" desc="Write generated INDEX.md to output path">
|
|
180
|
+
<field name="file_path">${output_path}/INDEX.md</field>
|
|
181
|
+
<field name="content" from="${generated_index}"/>
|
|
182
|
+
</block>
|
|
183
|
+
|
|
184
|
+
<!-- ============================================================
|
|
185
|
+
Step 7: Report Results
|
|
186
|
+
============================================================ -->
|
|
187
|
+
<block type="event" id="S7-E1" action="log" level="info" desc="Report generation results">
|
|
188
|
+
Stage 3 completed: Root Technology Index Generated
|
|
189
|
+
- Platforms Indexed: ${platform_count}
|
|
190
|
+
- web-react: ✓
|
|
191
|
+
- backend-nestjs: ✓
|
|
192
|
+
- Root Index: ${output_path}/INDEX.md
|
|
193
|
+
- Agent Mappings: Documented for all platforms
|
|
194
|
+
</block>
|
|
195
|
+
|
|
196
|
+
<!-- ============================================================
|
|
197
|
+
Output Definition
|
|
198
|
+
============================================================ -->
|
|
199
|
+
<block type="output" id="O1" desc="Workflow output results">
|
|
200
|
+
<field name="status" from="${generation_status}"/>
|
|
201
|
+
<field name="platforms_indexed" from="${indexed_platforms_list}"/>
|
|
202
|
+
<field name="output_file" from="${index_file_path}"/>
|
|
203
|
+
</block>
|
|
152
204
|
|
|
153
205
|
</workflow>
|
|
154
206
|
|