speccrew 0.7.63 → 0.7.64
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-sd-design-overview-generate/SKILL.md +1 -224
- package/.speccrew/skills/speccrew-sd-design-overview-generate/SKILL.xml +40 -0
- package/.speccrew/skills/speccrew-sd-desktop/SKILL.md +1 -282
- package/.speccrew/skills/speccrew-sd-desktop/SKILL.xml +309 -52
- package/.speccrew/skills/speccrew-sd-framework-evaluate/SKILL.md +1 -245
- package/.speccrew/skills/speccrew-sd-framework-evaluate/SKILL.xml +39 -0
- package/package.json +1 -1
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
Input Parameters Definition
|
|
6
6
|
============================================================ -->
|
|
7
7
|
<block type="input" id="I1" desc="Workflow input parameters">
|
|
8
|
-
<field name="
|
|
8
|
+
<field name="feature_id" required="false" type="string" desc="Feature identifier, e.g., F-CRM-01. If provided, use new naming format"/>
|
|
9
|
+
<field name="feature_name" required="true" type="string" desc="Feature name, e.g., customer-list"/>
|
|
9
10
|
<field name="platform_id" required="true" type="string" desc="Target platform, e.g., desktop-electron, desktop-tauri"/>
|
|
10
11
|
<field name="iteration_path" required="true" type="string" desc="Absolute path to iteration directory"/>
|
|
11
12
|
<field name="workspace_path" required="true" type="string" desc="Absolute path to speccrew-workspace"/>
|
|
12
|
-
<field name="task_id" required="false" type="string" desc="Task
|
|
13
|
+
<field name="task_id" required="false" type="string" desc="Task identifier in DISPATCH-PROGRESS.json. Used for status tracking"/>
|
|
14
|
+
<field name="skip_confirmation" required="false" type="boolean" default="false" desc="When true, skip Checkpoint A user confirmation (used in batch dispatch mode)"/>
|
|
15
|
+
<field name="skip_index_generation" required="false" type="boolean" default="false" desc="When true, skip Step 5 INDEX.md generation (INDEX.md will be generated by orchestrator after all workers complete)"/>
|
|
16
|
+
<field name="index_only" required="false" type="boolean" default="false" desc="When true, skip Steps 1-4 and ONLY execute Step 5 (INDEX.md generation). Used after all platform workers complete"/>
|
|
17
|
+
<field name="dispatch_progress_file" required="false" type="string" desc="Path to DISPATCH-PROGRESS.json. If provided, worker updates its own task status on completion"/>
|
|
18
|
+
<field name="update_progress_script" required="false" type="string" desc="Path to update-progress.js script"/>
|
|
13
19
|
</block>
|
|
14
20
|
|
|
15
21
|
<!-- ============================================================
|
|
@@ -17,7 +23,8 @@
|
|
|
17
23
|
============================================================ -->
|
|
18
24
|
<block type="rule" id="R1" level="forbidden" desc="Document creation constraints">
|
|
19
25
|
<field name="text">NEVER use create_file to write design documents or INDEX directly</field>
|
|
20
|
-
<field name="text">MUST
|
|
26
|
+
<field name="text">Documents MUST be created by copying template then filling with search_replace</field>
|
|
27
|
+
<field name="text">create_file produces truncated output on large files</field>
|
|
21
28
|
</block>
|
|
22
29
|
|
|
23
30
|
<block type="rule" id="R2" level="forbidden" desc="Full-file rewrite prohibition">
|
|
@@ -31,8 +38,61 @@
|
|
|
31
38
|
</block>
|
|
32
39
|
|
|
33
40
|
<block type="rule" id="R4" level="mandatory" desc="Actual framework syntax">
|
|
34
|
-
<field name="text">All pseudo-code MUST use actual framework syntax from techs knowledge</field>
|
|
35
|
-
<field name="text">
|
|
41
|
+
<field name="text">All pseudo-code MUST use actual framework/library syntax from techs knowledge</field>
|
|
42
|
+
<field name="text">NOT generic pseudo-code</field>
|
|
43
|
+
<field name="text">Include actual import statements</field>
|
|
44
|
+
<field name="text">Use actual store/API patterns from conventions</field>
|
|
45
|
+
</block>
|
|
46
|
+
|
|
47
|
+
<block type="rule" id="R5" level="forbidden" desc="TODO/FIXME placeholders">
|
|
48
|
+
<field name="text">Design documents MUST contain complete implementation logic</field>
|
|
49
|
+
<field name="text">Do NOT use TODO, FIXME, HACK, or any placeholder comments</field>
|
|
50
|
+
<field name="text">Every component, method, and interaction MUST be fully specified with actual pseudocode</field>
|
|
51
|
+
</block>
|
|
52
|
+
|
|
53
|
+
<block type="rule" id="R6" level="mandatory" desc="Output filename pattern">
|
|
54
|
+
<field name="text">Output filename MUST follow pattern: {feature_id}-{feature_name}-design.md</field>
|
|
55
|
+
<field name="text">Omitting feature_id or using alternative naming is FORBIDDEN</field>
|
|
56
|
+
</block>
|
|
57
|
+
|
|
58
|
+
<block type="rule" id="R7" level="mandatory" desc="Mermaid for all diagrams">
|
|
59
|
+
<field name="text">ALL component trees, interaction flows, and state management diagrams MUST use Mermaid syntax</field>
|
|
60
|
+
<field name="text">Use graph TB, sequenceDiagram, flowchart</field>
|
|
61
|
+
<field name="text">Plain text ASCII diagrams are FORBIDDEN for these sections</field>
|
|
62
|
+
</block>
|
|
63
|
+
|
|
64
|
+
<block type="rule" id="R8" level="mandatory" desc="API route consistency">
|
|
65
|
+
<field name="text">All API routes in design document MUST exactly match routes defined in API Contract</field>
|
|
66
|
+
<field name="text">Before writing any route, READ the API Contract and copy routes verbatim</field>
|
|
67
|
+
<field name="text">Do NOT invent or modify routes</field>
|
|
68
|
+
</block>
|
|
69
|
+
|
|
70
|
+
<block type="rule" id="R9" level="mandatory" desc="Cross-feature dependency marking">
|
|
71
|
+
<field name="text">When referencing functionality from another Feature, MUST explicitly mark as [DEPENDENCY: F-XXX-NNN]</field>
|
|
72
|
+
<field name="text">Define a degradation strategy (e.g., hide button, show placeholder) for when that Feature is not yet implemented</field>
|
|
73
|
+
</block>
|
|
74
|
+
|
|
75
|
+
<block type="rule" id="R10" level="mandatory" desc="Status markers required">
|
|
76
|
+
<field name="text">Use [EXISTING], [MODIFIED], [NEW] markers for all components and store modules</field>
|
|
77
|
+
</block>
|
|
78
|
+
|
|
79
|
+
<block type="rule" id="R11" level="mandatory" desc="Follow techs conventions">
|
|
80
|
+
<field name="text">Naming, directory structure, patterns must follow techs knowledge</field>
|
|
81
|
+
<field name="text">Component naming follows conventions-dev.md</field>
|
|
82
|
+
<field name="text">Directory structure follows conventions-design.md</field>
|
|
83
|
+
</block>
|
|
84
|
+
|
|
85
|
+
<block type="rule" id="R12" level="mandatory" desc="Direct-to-File Output">
|
|
86
|
+
<field name="text">All design content MUST be written directly to output files</field>
|
|
87
|
+
</block>
|
|
88
|
+
|
|
89
|
+
<block type="rule" id="R13" level="mandatory" desc="Minimal Conversation Output">
|
|
90
|
+
<field name="text">Only output block execution announcements, error messages, and Task Completion Report</field>
|
|
91
|
+
</block>
|
|
92
|
+
|
|
93
|
+
<block type="rule" id="R14" level="forbidden" desc="No conversation document output">
|
|
94
|
+
<field name="text">NEVER display full document sections, Mermaid diagrams, API endpoint listings, data model tables in conversation</field>
|
|
95
|
+
<field name="text">NEVER display architecture descriptions longer than 2 lines in conversation</field>
|
|
36
96
|
</block>
|
|
37
97
|
|
|
38
98
|
<!-- ============================================================
|
|
@@ -40,14 +100,25 @@
|
|
|
40
100
|
============================================================ -->
|
|
41
101
|
<sequence id="S1" name="Desktop System Design" status="pending" desc="Generate desktop detailed design documents">
|
|
42
102
|
|
|
103
|
+
<!-- Gateway: index_only conditional -->
|
|
104
|
+
<block type="gateway" id="G0" mode="exclusive" desc="Check if index_only mode">
|
|
105
|
+
<branch test="${index_only} == true" name="Index only - skip to Step 5">
|
|
106
|
+
<block type="event" id="E0" action="log" level="info" desc="index_only mode active">
|
|
107
|
+
<field name="message">index_only=true, skipping Steps 1-4 and jumping directly to Step 5 (INDEX.md generation)</field>
|
|
108
|
+
</block>
|
|
109
|
+
</branch>
|
|
110
|
+
<branch default="true" name="Full workflow">
|
|
111
|
+
|
|
43
112
|
<!-- Step 1: Read Inputs -->
|
|
44
113
|
<block type="task" id="B1" action="read-file" desc="Read Feature Spec document">
|
|
45
|
-
<field name="path">${iteration_path}/02.feature-design/${feature_name}-feature-spec.md</field>
|
|
114
|
+
<field name="path">${iteration_path}/02.feature-design/${feature_id}-${feature_name}-feature-spec.md</field>
|
|
115
|
+
<field name="fallback_path">${iteration_path}/02.feature-design/${feature_name}-feature-spec.md</field>
|
|
46
116
|
<field name="output" var="feature_spec"/>
|
|
47
117
|
</block>
|
|
48
118
|
|
|
49
119
|
<block type="task" id="B2" action="read-file" desc="Read API Contract">
|
|
50
|
-
<field name="path">${iteration_path}/03.api-contract/${feature_name}-api-contract.md</field>
|
|
120
|
+
<field name="path">${iteration_path}/03.api-contract/${feature_id}-${feature_name}-api-contract.md</field>
|
|
121
|
+
<field name="fallback_path">${iteration_path}/03.api-contract/${feature_name}-api-contract.md</field>
|
|
51
122
|
<field name="output" var="api_contract"/>
|
|
52
123
|
</block>
|
|
53
124
|
|
|
@@ -72,8 +143,15 @@
|
|
|
72
143
|
<field name="output" var="conventions_dev"/>
|
|
73
144
|
</block>
|
|
74
145
|
|
|
146
|
+
<!-- Optional: Read UI style guide -->
|
|
147
|
+
<block type="task" id="B7" action="read-file" desc="Read UI style guide">
|
|
148
|
+
<field name="path">${workspace_path}/knowledges/techs/${platform_id}/ui-style/ui-style-guide.md</field>
|
|
149
|
+
<field name="optional" value="true"/>
|
|
150
|
+
<field name="output" var="ui_style_guide"/>
|
|
151
|
+
</block>
|
|
152
|
+
|
|
75
153
|
<!-- Step 2: Analyze Existing Code Structure -->
|
|
76
|
-
<block type="task" id="
|
|
154
|
+
<block type="task" id="B8" action="analyze" desc="Analyze desktop codebase structure">
|
|
77
155
|
<field name="analysis_targets">
|
|
78
156
|
- Main process: src/main/**/*.{ts,js} or src-tauri/src/**/*.rs
|
|
79
157
|
- Renderer process: src/renderer/**/*.{tsx,vue,html}
|
|
@@ -88,23 +166,31 @@
|
|
|
88
166
|
</block>
|
|
89
167
|
|
|
90
168
|
<!-- Step 3: Extract Functions from Feature Spec -->
|
|
91
|
-
<block type="task" id="
|
|
169
|
+
<block type="task" id="B9" action="analyze" desc="Extract desktop functions from Feature Spec">
|
|
92
170
|
<field name="input" value="${feature_spec}">${api_contract}</field>
|
|
93
171
|
<field name="extraction_rules">
|
|
94
172
|
- Parse Feature Spec Section 2.N pattern
|
|
173
|
+
- Each Feature Spec typically contains 3-8 functions (fine-grained format)
|
|
95
174
|
- Extract UI prototype for each function
|
|
96
|
-
- Extract interaction flow
|
|
175
|
+
- Extract interaction flow (user actions and system responses)
|
|
97
176
|
- Extract backend API calls from API Contract
|
|
98
177
|
- Extract local operations (file system, native API, local DB)
|
|
99
|
-
- Extract data requirements
|
|
178
|
+
- Extract data requirements (fields and structures needed)
|
|
100
179
|
- Mark components as [EXISTING], [MODIFIED], or [NEW]
|
|
101
180
|
</field>
|
|
102
181
|
<field name="output" var="extracted_functions"/>
|
|
103
182
|
</block>
|
|
104
183
|
|
|
105
|
-
<!-- Checkpoint A:
|
|
106
|
-
<block type="
|
|
107
|
-
<
|
|
184
|
+
<!-- Checkpoint A: Function Extraction Confirmation -->
|
|
185
|
+
<block type="gateway" id="G1" mode="exclusive" desc="Handle Checkpoint A - skip_confirmation gateway">
|
|
186
|
+
<branch test="${skip_confirmation} == true" name="Skip confirmation - auto proceed">
|
|
187
|
+
<block type="event" id="E1_skip" action="log" level="info" desc="Skipping Checkpoint A">
|
|
188
|
+
<field name="message">skip_confirmation=true, logging function extraction summary and proceeding automatically</field>
|
|
189
|
+
</block>
|
|
190
|
+
</branch>
|
|
191
|
+
<branch default="true" name="Request user confirmation">
|
|
192
|
+
<block type="event" id="E1" action="confirm" title="Function Extraction Confirmation - Checkpoint A" type="yesno" desc="Present function extraction summary">
|
|
193
|
+
<field name="preview">Desktop Functions Extracted for: ${feature_name}
|
|
108
194
|
Platform: ${platform_id}
|
|
109
195
|
|
|
110
196
|
Function Extraction Summary:
|
|
@@ -116,136 +202,244 @@ Component Markers:
|
|
|
116
202
|
- [EXISTING]: ${extracted_functions.existing_count} components
|
|
117
203
|
|
|
118
204
|
Confirm function extraction before proceeding?</field>
|
|
205
|
+
</block>
|
|
206
|
+
</branch>
|
|
119
207
|
</block>
|
|
120
208
|
|
|
121
209
|
<!-- Step 4: Generate Module Design Documents -->
|
|
122
|
-
<block type="task" id="
|
|
210
|
+
<block type="task" id="B10" action="read-file" desc="Read design template">
|
|
123
211
|
<field name="path">speccrew-sd-desktop/templates/SD-DESKTOP-TEMPLATE.md</field>
|
|
124
212
|
<field name="output" var="design_template"/>
|
|
125
213
|
</block>
|
|
126
214
|
|
|
127
215
|
<!-- Loop: Generate design for each function -->
|
|
128
216
|
<block type="loop" id="L1" over="${extracted_functions.functions}" as="function" desc="Generate module design documents">
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
<
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
217
|
+
<!-- Gateway: Determine output path based on feature_id -->
|
|
218
|
+
<block type="gateway" id="G2" mode="exclusive" desc="Determine output path">
|
|
219
|
+
<branch test="${feature_id} != null" name="With feature_id">
|
|
220
|
+
<block type="task" id="B11" action="generate" desc="Copy template and create document with feature_id">
|
|
221
|
+
<field name="template" value="${design_template}"/>
|
|
222
|
+
<field name="placeholders">
|
|
223
|
+
- {Module Name} → ${function.module_name}
|
|
224
|
+
- {Feature Name} → ${feature_name}
|
|
225
|
+
- {Platform ID} → ${platform_id}
|
|
226
|
+
</field>
|
|
227
|
+
<field name="output_path">${iteration_path}/03.system-design/${platform_id}/${feature_id}-${feature_name}-design.md</field>
|
|
228
|
+
<field name="output" var="module_doc_created"/>
|
|
229
|
+
</block>
|
|
230
|
+
</branch>
|
|
231
|
+
<branch default="true" name="Without feature_id (backward compatibility)">
|
|
232
|
+
<block type="task" id="B12" action="generate" desc="Copy template and create document without feature_id">
|
|
233
|
+
<field name="template" value="${design_template}"/>
|
|
234
|
+
<field name="placeholders">
|
|
235
|
+
- {Module Name} → ${function.module_name}
|
|
236
|
+
- {Feature Name} → ${feature_name}
|
|
237
|
+
- {Platform ID} → ${platform_id}
|
|
238
|
+
</field>
|
|
239
|
+
<field name="output_path">${iteration_path}/03.system-design/${platform_id}/${function.module_name}-design.md</field>
|
|
240
|
+
<field name="output" var="module_doc_created"/>
|
|
241
|
+
</block>
|
|
242
|
+
</branch>
|
|
138
243
|
</block>
|
|
139
244
|
|
|
140
|
-
|
|
141
|
-
|
|
245
|
+
<!-- Fill each section using search_replace -->
|
|
246
|
+
<block type="task" id="B13" action="edit-file" desc="Fill Process Architecture section">
|
|
247
|
+
<field name="path">${module_doc_created.path}</field>
|
|
142
248
|
<field name="operation">search_replace</field>
|
|
143
249
|
<field name="content_source">${architecture}${tech_stack}</field>
|
|
144
250
|
<field name="section">Process Architecture</field>
|
|
251
|
+
<field name="rules">
|
|
252
|
+
- Use actual framework patterns (Electron main/renderer or Tauri command/event)
|
|
253
|
+
- ALL process architecture diagrams MUST use Mermaid syntax
|
|
254
|
+
- Mark each process/thread as [EXISTING], [MODIFIED], or [NEW]
|
|
255
|
+
</field>
|
|
145
256
|
</block>
|
|
146
257
|
|
|
147
|
-
<block type="task" id="
|
|
148
|
-
<field name="path">${
|
|
258
|
+
<block type="task" id="B14" action="edit-file" desc="Fill IPC Channels section">
|
|
259
|
+
<field name="path">${module_doc_created.path}</field>
|
|
149
260
|
<field name="operation">search_replace</field>
|
|
150
261
|
<field name="content_source">${conventions_design}${function}</field>
|
|
151
262
|
<field name="section">IPC Channels</field>
|
|
263
|
+
<field name="rules">
|
|
264
|
+
- Define channel names, request/response types, and serialization format
|
|
265
|
+
- IPC flow diagrams MUST use Mermaid syntax
|
|
266
|
+
</field>
|
|
152
267
|
</block>
|
|
153
268
|
|
|
154
|
-
<block type="task" id="
|
|
155
|
-
<field name="path">${
|
|
269
|
+
<block type="task" id="B15" action="edit-file" desc="Fill Window Design section">
|
|
270
|
+
<field name="path">${module_doc_created.path}</field>
|
|
156
271
|
<field name="operation">search_replace</field>
|
|
157
272
|
<field name="content_source">${feature_spec}${conventions_design}</field>
|
|
158
273
|
<field name="section">Window Design</field>
|
|
274
|
+
<field name="rules">
|
|
275
|
+
- Window dimensions, lifecycle, state management
|
|
276
|
+
- Modal/dialog behavior
|
|
277
|
+
- Multi-window coordination if applicable
|
|
278
|
+
</field>
|
|
159
279
|
</block>
|
|
160
280
|
|
|
161
|
-
<block type="task" id="
|
|
162
|
-
<field name="path">${
|
|
281
|
+
<block type="task" id="B16" action="edit-file" desc="Fill Native Integration section">
|
|
282
|
+
<field name="path">${module_doc_created.path}</field>
|
|
163
283
|
<field name="operation">search_replace</field>
|
|
164
284
|
<field name="content_source">${function}${tech_stack}</field>
|
|
165
285
|
<field name="section">Native Integration</field>
|
|
286
|
+
<field name="rules">
|
|
287
|
+
- Actual native API or module usage patterns
|
|
288
|
+
- Platform-specific considerations (Windows/macOS/Linux)
|
|
289
|
+
</field>
|
|
166
290
|
</block>
|
|
167
291
|
|
|
168
|
-
<block type="task" id="
|
|
169
|
-
<field name="path">${
|
|
292
|
+
<block type="task" id="B17" action="edit-file" desc="Fill Local Storage section">
|
|
293
|
+
<field name="path">${module_doc_created.path}</field>
|
|
170
294
|
<field name="operation">search_replace</field>
|
|
171
|
-
<field name="content_source">${
|
|
295
|
+
<field name="content_source">${conventions_design}</field>
|
|
172
296
|
<field name="section">Local Storage</field>
|
|
297
|
+
<field name="rules">
|
|
298
|
+
- Local DB, file system, or electron-store patterns
|
|
299
|
+
- Data schema and persistence strategy
|
|
300
|
+
</field>
|
|
173
301
|
</block>
|
|
174
302
|
|
|
175
|
-
<block type="task" id="
|
|
176
|
-
<field name="path">${
|
|
303
|
+
<block type="task" id="B18" action="edit-file" desc="Fill Security section">
|
|
304
|
+
<field name="path">${module_doc_created.path}</field>
|
|
177
305
|
<field name="operation">search_replace</field>
|
|
178
306
|
<field name="content_source">${architecture}${conventions_design}</field>
|
|
179
307
|
<field name="section">Security</field>
|
|
308
|
+
<field name="rules">
|
|
309
|
+
- Context isolation, CSP, preload script security
|
|
310
|
+
- Permission model and secure IPC practices
|
|
311
|
+
</field>
|
|
180
312
|
</block>
|
|
181
313
|
|
|
182
|
-
<block type="task" id="
|
|
183
|
-
<field name="path">${
|
|
314
|
+
<block type="task" id="B19" action="edit-file" desc="Fill Auto-update section">
|
|
315
|
+
<field name="path">${module_doc_created.path}</field>
|
|
184
316
|
<field name="operation">search_replace</field>
|
|
185
317
|
<field name="content_source">${tech_stack}</field>
|
|
186
318
|
<field name="section">Auto-update</field>
|
|
319
|
+
<field name="rules">
|
|
320
|
+
- Update check strategy, download flow, restart behavior
|
|
321
|
+
- Use actual updater library patterns from techs knowledge
|
|
322
|
+
</field>
|
|
187
323
|
</block>
|
|
188
324
|
|
|
189
|
-
<block type="task" id="
|
|
190
|
-
<field name="path">${
|
|
325
|
+
<block type="task" id="B20" action="edit-file" desc="Fill Pseudo-code section">
|
|
326
|
+
<field name="path">${module_doc_created.path}</field>
|
|
191
327
|
<field name="operation">search_replace</field>
|
|
192
328
|
<field name="content_source">${conventions_dev}${function}</field>
|
|
193
329
|
<field name="section">Pseudo-code</field>
|
|
330
|
+
<field name="rules">
|
|
331
|
+
- MUST use actual framework API syntax from techs knowledge
|
|
332
|
+
- NOT generic pseudo-code
|
|
333
|
+
- Include actual import statements
|
|
334
|
+
- Use actual store/API patterns from conventions
|
|
335
|
+
</field>
|
|
336
|
+
</block>
|
|
337
|
+
|
|
338
|
+
<!-- Step 4.3: Verify Output -->
|
|
339
|
+
<block type="task" id="B21" action="verify" desc="Verify completed design document">
|
|
340
|
+
<field name="verification_rules">
|
|
341
|
+
- All sections filled with actual content (no remaining placeholders)
|
|
342
|
+
- Mermaid diagrams render correctly
|
|
343
|
+
- Pseudo-code uses actual framework syntax from techs knowledge
|
|
344
|
+
- If a section has no applicable content, section title kept with "N/A"
|
|
345
|
+
- All section titles and numbering preserved
|
|
346
|
+
</field>
|
|
347
|
+
<field name="output" var="design_doc_verified"/>
|
|
194
348
|
</block>
|
|
195
349
|
</block>
|
|
196
350
|
|
|
351
|
+
</branch>
|
|
352
|
+
</block>
|
|
353
|
+
|
|
354
|
+
<!-- Gateway: skip_index_generation conditional -->
|
|
355
|
+
<block type="gateway" id="G3" mode="exclusive" desc="Check if skip_index_generation">
|
|
356
|
+
<branch test="${skip_index_generation} == true" name="Skip INDEX.md generation">
|
|
357
|
+
<block type="event" id="E2_skip" action="log" level="info" desc="Skipping INDEX.md generation">
|
|
358
|
+
<field name="message">skip_index_generation=true, skipping Step 5 (INDEX.md will be generated by orchestrator after all workers complete)</field>
|
|
359
|
+
</block>
|
|
360
|
+
</branch>
|
|
361
|
+
<branch default="true" name="Generate INDEX.md">
|
|
362
|
+
|
|
197
363
|
<!-- Step 5: Generate Platform INDEX.md -->
|
|
198
|
-
<block type="task" id="
|
|
364
|
+
<block type="task" id="B22" action="read-file" desc="Read index template">
|
|
199
365
|
<field name="path">speccrew-sd-desktop/templates/INDEX-TEMPLATE.md</field>
|
|
200
366
|
<field name="output" var="index_template"/>
|
|
201
367
|
</block>
|
|
202
368
|
|
|
203
|
-
<block type="task" id="
|
|
369
|
+
<block type="task" id="B23" action="generate" desc="Create INDEX.md from template">
|
|
204
370
|
<field name="template" value="${index_template}"/>
|
|
205
371
|
<field name="placeholders">
|
|
206
372
|
- {Platform Name} → ${platform_id}
|
|
207
373
|
- {Feature Name} → ${feature_name}
|
|
208
374
|
</field>
|
|
209
375
|
<field name="output_path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
376
|
+
<field name="output" var="index_doc_created"/>
|
|
210
377
|
</block>
|
|
211
378
|
|
|
212
|
-
<block type="task" id="
|
|
379
|
+
<block type="task" id="B24" action="edit-file" desc="Fill Tech Stack Summary">
|
|
213
380
|
<field name="path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
214
381
|
<field name="operation">search_replace</field>
|
|
215
382
|
<field name="content_source">${tech_stack}</field>
|
|
216
383
|
<field name="section">Tech Stack Summary</field>
|
|
217
384
|
</block>
|
|
218
385
|
|
|
219
|
-
<block type="task" id="
|
|
386
|
+
<block type="task" id="B25" action="edit-file" desc="Fill Target Operating Systems">
|
|
220
387
|
<field name="path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
221
388
|
<field name="operation">search_replace</field>
|
|
222
389
|
<field name="content_source">${tech_stack}</field>
|
|
223
390
|
<field name="section">Target Operating Systems</field>
|
|
224
391
|
</block>
|
|
225
392
|
|
|
226
|
-
<block type="task" id="
|
|
393
|
+
<block type="task" id="B26" action="edit-file" desc="Fill Process Architecture Strategy">
|
|
227
394
|
<field name="path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
228
395
|
<field name="operation">search_replace</field>
|
|
229
396
|
<field name="content_source">${architecture}</field>
|
|
230
397
|
<field name="section">Process Architecture Strategy</field>
|
|
231
398
|
</block>
|
|
232
399
|
|
|
233
|
-
<block type="task" id="
|
|
400
|
+
<block type="task" id="B27" action="edit-file" desc="Fill IPC Patterns">
|
|
234
401
|
<field name="path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
235
402
|
<field name="operation">search_replace</field>
|
|
236
403
|
<field name="content_source">${conventions_design}</field>
|
|
237
404
|
<field name="section">IPC Patterns</field>
|
|
238
405
|
</block>
|
|
239
406
|
|
|
240
|
-
<block type="task" id="
|
|
407
|
+
<block type="task" id="B28" action="edit-file" desc="Fill Security Model">
|
|
241
408
|
<field name="path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
242
409
|
<field name="operation">search_replace</field>
|
|
243
410
|
<field name="content_source">${architecture}</field>
|
|
244
411
|
<field name="section">Security Model</field>
|
|
245
412
|
</block>
|
|
246
413
|
|
|
414
|
+
<block type="task" id="B29" action="edit-file" desc="Fill Module List">
|
|
415
|
+
<field name="path">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
416
|
+
<field name="operation">search_replace</field>
|
|
417
|
+
<field name="content_source">${extracted_functions}</field>
|
|
418
|
+
<field name="section">Module List</field>
|
|
419
|
+
<field name="module_list_rules">
|
|
420
|
+
- Column ID: Use feature_id if available (e.g., F-CRM-01), otherwise use module name
|
|
421
|
+
- Column Name: Feature or module name
|
|
422
|
+
- Column Document: Link to design file (e.g., F-CRM-01-customer-list-design.md)
|
|
423
|
+
- Column Status: [NEW], [MODIFIED], or [EXISTING]
|
|
424
|
+
- Example row: | F-CRM-01 | Customer List | F-CRM-01-customer-list-design.md | NEW |
|
|
425
|
+
</field>
|
|
426
|
+
</block>
|
|
427
|
+
|
|
428
|
+
<!-- Step 5.4: Verify INDEX.md Output -->
|
|
429
|
+
<block type="task" id="B30" action="verify" desc="Verify completed INDEX.md">
|
|
430
|
+
<field name="verification_rules">
|
|
431
|
+
- All sections filled with actual content (no remaining placeholders)
|
|
432
|
+
- All module design documents are correctly linked
|
|
433
|
+
- Platform-level summary is complete
|
|
434
|
+
</field>
|
|
435
|
+
<field name="output" var="index_doc_verified"/>
|
|
436
|
+
</block>
|
|
437
|
+
|
|
438
|
+
</branch>
|
|
439
|
+
</block>
|
|
440
|
+
|
|
247
441
|
<!-- Step 6: Present Summary -->
|
|
248
|
-
<block type="event" id="
|
|
442
|
+
<block type="event" id="E3" action="log" level="info" desc="Present design summary">
|
|
249
443
|
<field name="message">Desktop System Design Summary for: ${feature_name}
|
|
250
444
|
Platform: ${platform_id}
|
|
251
445
|
Framework: ${tech_stack.framework}
|
|
@@ -260,6 +454,9 @@ Key Design Decisions:
|
|
|
260
454
|
- Security Model: ${architecture.security_model}
|
|
261
455
|
- Auto-Update: ${tech_stack.updater}
|
|
262
456
|
|
|
457
|
+
Concerns/Trade-offs:
|
|
458
|
+
- ${concerns_list}
|
|
459
|
+
|
|
263
460
|
Please confirm:
|
|
264
461
|
1. Are the process architectures appropriate?
|
|
265
462
|
2. Is the IPC communication design correct?
|
|
@@ -268,21 +465,81 @@ Please confirm:
|
|
|
268
465
|
5. Is the native integration approach suitable?</field>
|
|
269
466
|
</block>
|
|
270
467
|
|
|
468
|
+
<!-- Step 7: Update Task Status (conditional) -->
|
|
469
|
+
<block type="gateway" id="G4" mode="exclusive" desc="Check if dispatch_progress_file provided">
|
|
470
|
+
<branch test="${dispatch_progress_file} != null AND ${task_id} != null" name="Update task status">
|
|
471
|
+
<block type="gateway" id="G4a" mode="exclusive" desc="Determine success or failure">
|
|
472
|
+
<branch test="${workflow_status} == 'SUCCESS'" name="Mark completed">
|
|
473
|
+
<block type="task" id="B31" action="run-script" desc="Update task status to completed">
|
|
474
|
+
<field name="command">node "${update_progress_script}" update-task --file "${dispatch_progress_file}" --task-id "${task_id}" --status completed</field>
|
|
475
|
+
<field name="output" var="status_update_result"/>
|
|
476
|
+
</block>
|
|
477
|
+
</branch>
|
|
478
|
+
<branch default="true" name="Mark failed">
|
|
479
|
+
<block type="task" id="B32" action="run-script" desc="Update task status to failed">
|
|
480
|
+
<field name="command">node "${update_progress_script}" update-task --file "${dispatch_progress_file}" --task-id "${task_id}" --status failed</field>
|
|
481
|
+
<field name="output" var="status_update_result"/>
|
|
482
|
+
</block>
|
|
483
|
+
</branch>
|
|
484
|
+
</block>
|
|
485
|
+
</branch>
|
|
486
|
+
<branch default="true" name="No status update needed">
|
|
487
|
+
<block type="event" id="E4" action="log" level="info" desc="No dispatch_progress_file provided">
|
|
488
|
+
<field name="message">dispatch_progress_file or task_id not provided, skipping status update</field>
|
|
489
|
+
</block>
|
|
490
|
+
</branch>
|
|
491
|
+
</block>
|
|
492
|
+
|
|
271
493
|
</sequence>
|
|
272
494
|
|
|
273
495
|
<!-- ============================================================
|
|
274
496
|
Output Results
|
|
275
497
|
============================================================ -->
|
|
276
|
-
<block type="output" id="O1" desc="Workflow output results">
|
|
498
|
+
<block type="output" id="O1" desc="Workflow output results - SUCCESS scenario">
|
|
277
499
|
<field name="status" value="SUCCESS" type="string" desc="Task completion status"/>
|
|
278
|
-
<field name="task_id" from="${task_id}" type="string" desc="Task ID"/>
|
|
500
|
+
<field name="task_id" from="${task_id}" type="string" desc="Task ID from context"/>
|
|
279
501
|
<field name="platform" value="${platform_id}" type="string" desc="Target platform"/>
|
|
502
|
+
<field name="feature_id" from="${feature_id}" type="string" desc="Feature ID"/>
|
|
280
503
|
<field name="feature" value="${feature_name}" type="string" desc="Feature name"/>
|
|
281
504
|
<field name="output_files" type="array" desc="List of generated files">
|
|
282
505
|
<field name="file">${iteration_path}/03.system-design/${platform_id}/INDEX.md</field>
|
|
283
506
|
<field name="files" from="${extracted_functions.output_files}"/>
|
|
284
507
|
</field>
|
|
285
|
-
<field name="summary" value="Desktop system design completed for ${feature_name} on ${platform_id}" type="string" desc="Completion summary"/>
|
|
508
|
+
<field name="summary" value="Desktop system design completed for ${feature_name} on ${platform_id} with ${extracted_functions.design_count} module designs" type="string" desc="Completion summary"/>
|
|
509
|
+
</block>
|
|
510
|
+
|
|
511
|
+
<block type="output" id="O2" desc="Workflow output results - FAILED scenario">
|
|
512
|
+
<field name="status" value="FAILED" type="string" desc="Task completion status"/>
|
|
513
|
+
<field name="task_id" from="${task_id}" type="string" desc="Task ID from context"/>
|
|
514
|
+
<field name="platform" value="${platform_id}" type="string" desc="Target platform"/>
|
|
515
|
+
<field name="feature_id" from="${feature_id}" type="string" desc="Feature ID"/>
|
|
516
|
+
<field name="feature" value="${feature_name}" type="string" desc="Feature name"/>
|
|
517
|
+
<field name="output_files" value="[]" type="array" desc="No output files generated"/>
|
|
518
|
+
<field name="error" type="string" desc="Description of what went wrong"/>
|
|
519
|
+
<field name="error_category" type="string" desc="DEPENDENCY_MISSING | VALIDATION_ERROR | BLOCKED"/>
|
|
520
|
+
<field name="recovery_hint" type="string" desc="Suggestion for how to resolve or retry"/>
|
|
521
|
+
</block>
|
|
522
|
+
|
|
523
|
+
<!-- ============================================================
|
|
524
|
+
Quality Verification Checklist
|
|
525
|
+
============================================================ -->
|
|
526
|
+
<block type="checklist" id="CK1" desc="Quality verification checklist">
|
|
527
|
+
<field name="item">All techs knowledge documents loaded before design</field>
|
|
528
|
+
<field name="item">Existing code structure analyzed via Glob/Grep</field>
|
|
529
|
+
<field name="item">Every Feature Spec function covered in a module design</field>
|
|
530
|
+
<field name="item">All API calls from API Contract referenced correctly</field>
|
|
531
|
+
<field name="item">Pseudo-code uses actual framework syntax (not generic)</field>
|
|
532
|
+
<field name="item">Component naming follows conventions-dev.md</field>
|
|
533
|
+
<field name="item">State management follows architecture.md patterns</field>
|
|
534
|
+
<field name="item">Directory structure follows conventions-design.md</field>
|
|
535
|
+
<field name="item">INDEX.md generated with complete module list</field>
|
|
536
|
+
<field name="item">All files written to correct paths under 03.system-design/{platform_id}/</field>
|
|
537
|
+
<field name="item">Output file named as {feature_id}-{feature_name}-design.md</field>
|
|
538
|
+
<field name="item">Checkpoint A passed (or skipped via skip_confirmation)</field>
|
|
539
|
+
<field name="item">No TODO/FIXME placeholders - all components have complete pseudocode</field>
|
|
540
|
+
<field name="item">API routes match API Contract exactly</field>
|
|
541
|
+
<field name="item">Cross-Feature dependencies explicitly marked</field>
|
|
542
|
+
<field name="item">Mermaid diagrams used - no ASCII text diagrams</field>
|
|
286
543
|
</block>
|
|
287
544
|
|
|
288
545
|
</workflow>
|