speccrew 0.7.74 → 0.7.76

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.
Files changed (71) hide show
  1. package/.speccrew/agents/speccrew-feature-designer.md +4 -647
  2. package/.speccrew/agents/speccrew-product-manager.md +5 -480
  3. package/.speccrew/agents/speccrew-system-deployer.md +6 -457
  4. package/.speccrew/agents/speccrew-system-developer.md +9 -913
  5. package/.speccrew/agents/speccrew-test-manager.md +403 -1112
  6. package/.speccrew/skills/speccrew-agentflow-manager/SKILL.md +6 -149
  7. package/.speccrew/skills/speccrew-deploy-build/SKILL.md +2 -59
  8. package/.speccrew/skills/speccrew-deploy-migrate/SKILL.md +2 -64
  9. package/.speccrew/skills/speccrew-deploy-smoke-test/SKILL.md +2 -75
  10. package/.speccrew/skills/speccrew-deploy-startup/SKILL.md +2 -70
  11. package/.speccrew/skills/speccrew-dev-backend/SKILL.md +2 -381
  12. package/.speccrew/skills/speccrew-dev-desktop-electron/SKILL.md +2 -369
  13. package/.speccrew/skills/speccrew-dev-desktop-tauri/SKILL.md +2 -362
  14. package/.speccrew/skills/speccrew-dev-frontend/SKILL.md +2 -304
  15. package/.speccrew/skills/speccrew-dev-mobile/SKILL.md +2 -294
  16. package/.speccrew/skills/speccrew-dev-review-backend/SKILL.md +2 -204
  17. package/.speccrew/skills/speccrew-dev-review-desktop/SKILL.md +2 -173
  18. package/.speccrew/skills/speccrew-dev-review-frontend/SKILL.md +2 -169
  19. package/.speccrew/skills/speccrew-dev-review-mobile/SKILL.md +2 -173
  20. package/.speccrew/skills/speccrew-fd-api-contract/SKILL.md +2 -251
  21. package/.speccrew/skills/speccrew-fd-feature-analyze/SKILL.md +2 -254
  22. package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +2 -748
  23. package/.speccrew/skills/speccrew-feature-designer-orchestration/SKILL.md +6 -105
  24. package/.speccrew/skills/speccrew-get-timestamp/SKILL.md +6 -33
  25. package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/SKILL.md +3 -138
  26. package/.speccrew/skills/speccrew-knowledge-bizs-api-graph/SKILL.md +3 -283
  27. package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/SKILL.md +3 -1014
  28. package/.speccrew/skills/speccrew-knowledge-bizs-identify-entries/SKILL.md +4 -343
  29. package/.speccrew/skills/speccrew-knowledge-bizs-init-features/SKILL.md +4 -235
  30. package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/SKILL.md +6 -72
  31. package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/SKILL.md +3 -534
  32. package/.speccrew/skills/speccrew-knowledge-bizs-ui-graph/SKILL.md +3 -432
  33. package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/SKILL.md +4 -391
  34. package/.speccrew/skills/speccrew-knowledge-graph-query/SKILL.md +3 -98
  35. package/.speccrew/skills/speccrew-knowledge-graph-write/SKILL.md +3 -92
  36. package/.speccrew/skills/speccrew-knowledge-module-summarize/SKILL.md +3 -181
  37. package/.speccrew/skills/speccrew-knowledge-system-summarize/SKILL.md +3 -148
  38. package/.speccrew/skills/speccrew-knowledge-techs-dispatch/SKILL.md +3 -330
  39. package/.speccrew/skills/speccrew-knowledge-techs-generate/SKILL.md +6 -159
  40. package/.speccrew/skills/speccrew-knowledge-techs-generate-conventions/SKILL.md +3 -142
  41. package/.speccrew/skills/speccrew-knowledge-techs-generate-quality/SKILL.md +3 -568
  42. package/.speccrew/skills/speccrew-knowledge-techs-generate-ui-style/SKILL.md +3 -180
  43. package/.speccrew/skills/speccrew-knowledge-techs-index/SKILL.md +3 -154
  44. package/.speccrew/skills/speccrew-knowledge-techs-init/SKILL.md +3 -176
  45. package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/SKILL.md +3 -135
  46. package/.speccrew/skills/speccrew-pm-knowledge-detector/SKILL.md +4 -88
  47. package/.speccrew/skills/speccrew-pm-module-initializer/SKILL.md +4 -178
  48. package/.speccrew/skills/speccrew-pm-module-matcher/SKILL.md +3 -102
  49. package/.speccrew/skills/speccrew-pm-phase0-init/SKILL.md +5 -78
  50. package/.speccrew/skills/speccrew-pm-phase1-knowledge-check/SKILL.md +5 -85
  51. package/.speccrew/skills/speccrew-pm-phase2-complexity-assess/SKILL.md +4 -100
  52. package/.speccrew/skills/speccrew-pm-phase5-subprd-dispatch/SKILL.md +14 -106
  53. package/.speccrew/skills/speccrew-pm-phase6-verify-confirm/SKILL.md +7 -84
  54. package/.speccrew/skills/speccrew-pm-requirement-analysis/SKILL.md +6 -66
  55. package/.speccrew/skills/speccrew-pm-requirement-assess/SKILL.md +4 -96
  56. package/.speccrew/skills/speccrew-pm-requirement-clarify/SKILL.md +4 -131
  57. package/.speccrew/skills/speccrew-pm-requirement-model/SKILL.md +6 -79
  58. package/.speccrew/skills/speccrew-pm-requirement-simple/SKILL.md +4 -76
  59. package/.speccrew/skills/speccrew-pm-sub-prd-generate/SKILL.md +3 -281
  60. package/.speccrew/skills/speccrew-product-manager-orchestration/SKILL.md +6 -165
  61. package/.speccrew/skills/speccrew-system-deployer-orchestration/SKILL.md +6 -79
  62. package/.speccrew/skills/speccrew-system-designer-orchestration/SKILL.md +2 -35
  63. package/.speccrew/skills/speccrew-system-developer-orchestration/SKILL.md +6 -98
  64. package/.speccrew/skills/speccrew-task-worker-execution/SKILL.md +6 -94
  65. package/.speccrew/skills/speccrew-team-leader-routing/SKILL.md +6 -79
  66. package/.speccrew/skills/speccrew-test-case-design/SKILL.md +2 -58
  67. package/.speccrew/skills/speccrew-test-code-gen/SKILL.md +2 -61
  68. package/.speccrew/skills/speccrew-test-manager-orchestration/SKILL.md +6 -94
  69. package/.speccrew/skills/speccrew-test-reporter/SKILL.md +2 -102
  70. package/.speccrew/skills/speccrew-test-runner/SKILL.md +3 -121
  71. package/package.json +1 -1
@@ -4,441 +4,12 @@ description: Constructs knowledge graph data (nodes, edges, relationships) from
4
4
  tools: Read, Write, Glob, Grep, Bash
5
5
  ---
6
6
 
7
- # UI Knowledge Graph Constructor (XML Workflow)
8
-
9
- > **CRITICAL CONSTRAINT**: DO NOT create temporary scripts, batch files, or workaround code files (`.py`, `.bat`, `.sh`, `.ps1`, etc.) under any circumstances.
10
-
11
- Construct knowledge graph data (nodes, edges, relationships) from UI feature analysis results and write completion marker files for the bizs knowledge pipeline.
12
-
13
- ## Language Adaptation
14
-
15
- This skill automatically adapts to the user's input language. All documentation and output will be generated in the same language as the user's query.
16
-
17
- ## Trigger Scenarios
18
-
7
+ # Trigger Scenarios
19
8
  - "Construct graph data for UI feature {fileName}"
20
9
  - "Generate graph nodes and edges from UI analysis"
21
10
  - "Write completion markers for feature {fileName}"
22
11
 
23
- ## Input Variables
24
-
25
- | Variable | Type | Description | Example |
26
- |----------|------|-------------|---------|
27
- | `{{feature}}` | object | Complete feature object from features.json | - |
28
- | `{{fileName}}` | string | Feature file name | `"index"`, `"UserForm"` |
29
- | `{{sourcePath}}` | string | Relative path to source file | `"frontend-web/src/views/system/user/index.vue"` |
30
- | `{{documentPath}}` | string | Path to generated documentation | `"speccrew-workspace/knowledges/bizs/..."` |
31
- | `{{module}}` | string | Business module name | `"system"`, `"trade"`, `"_root"` |
32
- | `{{platform_type}}` | string | Platform type | `"web"`, `"mobile"` |
33
- | `{{platform_subtype}}` | string | Platform subtype | `"vue"`, `"react"` |
34
- | `{{completed_dir}}` | string | Marker files output directory | `"speccrew-workspace/knowledges/base/sync-state/knowledge-bizs/completed"` |
35
- | `{{sourceFile}}` | string | Source features JSON file name | `"features-web-vue.json"` |
36
- | `{{status}}` | string | Analysis status from UI analysis | `"success"`, `"partial"`, `"failed"` |
37
- | `{{analysisNotes}}` | string | Analysis notes from UI analysis | `"Successfully analyzed..."` |
38
-
39
- ## Output
40
-
41
- **Generated Files (MANDATORY):**
42
- 1. `{{completed_dir}}/{module}-{subpath}-{fileName}.graph.json` - Graph data with nodes and edges
43
- 2. `{{completed_dir}}/{module}-{subpath}-{fileName}.graph-done.json` - Graph completion marker
44
-
45
12
  ## AgentFlow Definition
46
-
47
13
  <!-- @agentflow: SKILL.xml -->
48
-
49
- > **REQUIRED**: Before executing this workflow, read the XML workflow specification: `speccrew-workspace/docs/rules/agentflow-spec.md`
50
-
51
- <!-- ============================================================
52
- Input Parameters Definition
53
- ============================================================ -->
54
- <block type="input" id="I1" desc="Workflow input parameters">
55
- <field name="feature" required="true" type="object" desc="Complete feature object from features.json"/>
56
- <field name="fileName" required="true" type="string" desc="Feature file name without extension"/>
57
- <field name="sourcePath" required="true" type="string" desc="Relative path to source file"/>
58
- <field name="documentPath" required="true" type="string" desc="Path to generated documentation"/>
59
- <field name="module" required="true" type="string" desc="Business module name"/>
60
- <field name="platform_type" required="true" type="string" desc="Platform type"/>
61
- <field name="platform_subtype" required="true" type="string" desc="Platform subtype"/>
62
- <field name="completed_dir" required="true" type="string" desc="Marker files output directory"/>
63
- <field name="sourceFile" required="true" type="string" desc="Source features JSON file name"/>
64
- <field name="status" required="false" type="string" default="success" desc="Analysis status from UI analysis"/>
65
- <field name="analysisNotes" required="false" type="string" default="" desc="Analysis notes from UI analysis"/>
66
- </block>
67
-
68
- <!-- ============================================================
69
- Global Continuous Execution Rules
70
- ============================================================ -->
71
- <block type="rule" id="GLOBAL-R1" level="forbidden" desc="Continuous execution constraints — NEVER violate">
72
- <field name="text">DO NOT ask user "Should I continue?" or "How would you like to proceed?" during execution</field>
73
- <field name="text">DO NOT offer options like "Full execution / Partial / Stop" — always execute ALL tasks to completion</field>
74
- <field name="text">DO NOT suggest "Due to context window limits, let me pause" — complete current task, use checkpoint for resumption</field>
75
- <field name="text">DO NOT estimate workload and suggest breaking it into phases — execute ALL items in sequence</field>
76
- <field name="text">DO NOT warn about "large number of files" or "this may take a while" — proceed with generation</field>
77
- <field name="text">Context window management: if approaching limit, save progress to checkpoint file and resume — do NOT ask user for guidance</field>
78
- </block>
79
-
80
- <!-- ============================================================
81
- Step 1: Read Source File
82
- ============================================================ -->
83
- <sequence id="S1" name="Step 1: Read Source File" status="pending" desc="Read source file and extract components">
84
- <block type="task" id="B1" action="read-file" desc="Read source file content">
85
- <field name="path" value="${sourcePath}"/>
86
- <field name="output" var="sourceContent"/>
87
- </block>
88
-
89
- <block type="task" id="B2" action="analyze" desc="Extract API imports from source content">
90
- <field name="input" value="${sourceContent}"/>
91
- <field name="output" var="apiImports"/>
92
- </block>
93
-
94
- <block type="task" id="B3" action="analyze" desc="Extract component usage from source content">
95
- <field name="input" value="${sourceContent}"/>
96
- <field name="output" var="componentUsage"/>
97
- </block>
98
-
99
- <block type="task" id="B4" action="analyze" desc="Extract navigation patterns from source content">
100
- <field name="input" value="${sourceContent}"/>
101
- <field name="output" var="navigationPatterns"/>
102
- </block>
103
-
104
- <block type="event" id="E1" action="log" level="info" desc="Log Step 1 completion">
105
- <field name="message">Step 1 Status: COMPLETED - Read ${sourcePath}, found ${apiImports.count} APIs, ${componentUsage.count} components, ${navigationPatterns.count} navigations</field>
106
- </block>
107
-
108
- <block type="checkpoint" id="CP1" name="step-1-read-source" desc="Source file read complete">
109
- <field name="file" value="${completed_dir}/.progress.json"/>
110
- <field name="verify" value="${sourceContent} != null"/>
111
- </block>
112
- </sequence>
113
-
114
- <!-- ============================================================
115
- Step 2: Construct Graph Nodes
116
- ============================================================ -->
117
- <sequence id="S2" name="Step 2: Construct Graph Nodes" status="pending" desc="Build page and component nodes">
118
- <block type="task" id="B5" action="analyze" desc="Construct page node">
119
- <field name="type" value="page"/>
120
- <field name="id" value="page-${module}-${fileName}"/>
121
- <field name="name" value="${fileName}"/>
122
- <field name="module" value="${module}"/>
123
- <field name="sourcePath" value="${sourcePath}"/>
124
- <field name="documentPath" value="${documentPath}"/>
125
- <field name="context_route" value="${extractedRoute}"/>
126
- <field name="context_components" value="${componentUsage.list}"/>
127
- <field name="context_platform" value="${platform_type}-${platform_subtype}"/>
128
- <field name="output" var="pageNode"/>
129
- </block>
130
-
131
- <block type="loop" id="L1" over="${componentUsage.list}" as="component" desc="Construct component nodes">
132
- <block type="task" id="B6" action="analyze" desc="Construct component node for ${component.name}">
133
- <field name="type" value="component"/>
134
- <field name="id" value="component-${module}-${component.name}"/>
135
- <field name="name" value="${component.name}"/>
136
- <field name="module" value="${module}"/>
137
- <field name="sourcePath" value="${component.path}"/>
138
- <field name="documentPath" value="${documentPath}"/>
139
- <field name="context_props" value="${component.props}"/>
140
- <field name="context_events" value="${component.events}"/>
141
- <field name="output" var="componentNodes[]" append="true"/>
142
- </block>
143
- </block>
144
-
145
- <block type="event" id="E2" action="log" level="info" desc="Log Step 2 completion">
146
- <field name="message">Step 2 Status: COMPLETED - Constructed ${nodeCount} nodes</field>
147
- </block>
148
-
149
- <block type="checkpoint" id="CP2" name="step-2-construct-nodes" desc="Graph nodes constructed">
150
- <field name="file" value="${completed_dir}/.progress.json"/>
151
- <field name="verify" value="${nodeCount} > 0"/>
152
- </block>
153
- </sequence>
154
-
155
- <!-- ============================================================
156
- Step 3: Construct Graph Edges
157
- ============================================================ -->
158
- <sequence id="S3" name="Step 3: Construct Graph Edges" status="pending" desc="Build API call, navigation, and component usage edges">
159
- <!-- API Call Edges -->
160
- <block type="loop" id="L2" over="${apiImports.list}" as="api" desc="Construct API call edges">
161
- <block type="task" id="B7" action="analyze" desc="Construct calls edge for ${api.name}">
162
- <field name="source" value="page-${module}-${fileName}"/>
163
- <field name="target" value="api-${api.module}-${api.name}"/>
164
- <field name="type" value="calls"/>
165
- <field name="metadata_trigger" value="${api.trigger}"/>
166
- <field name="metadata_method" value="${api.method}"/>
167
- <field name="metadata_context" value="${api.context}"/>
168
- <field name="output" var="apiEdges[]" append="true"/>
169
- </block>
170
- </block>
171
-
172
- <!-- Navigation Edges -->
173
- <block type="loop" id="L3" over="${navigationPatterns.list}" as="nav" desc="Construct navigation edges">
174
- <block type="task" id="B8" action="analyze" desc="Construct navigates-to edge">
175
- <field name="source" value="page-${module}-${fileName}"/>
176
- <field name="target" value="page-${nav.targetModule}-${nav.targetPage}"/>
177
- <field name="type" value="navigates-to"/>
178
- <field name="metadata_trigger" value="${nav.trigger}"/>
179
- <field name="metadata_method" value="${nav.method}"/>
180
- <field name="output" var="navEdges[]" append="true"/>
181
- </block>
182
- </block>
183
-
184
- <!-- Component Usage Edges -->
185
- <block type="loop" id="L4" over="${componentUsage.list}" as="comp" desc="Construct component usage edges">
186
- <block type="task" id="B9" action="analyze" desc="Construct uses edge for ${comp.name}">
187
- <field name="source" value="page-${module}-${fileName}"/>
188
- <field name="target" value="component-${module}-${comp.name}"/>
189
- <field name="type" value="uses"/>
190
- <field name="metadata_context" value="${comp.usageContext}"/>
191
- <field name="output" var="useEdges[]" append="true"/>
192
- </block>
193
- </block>
194
-
195
- <block type="event" id="E3" action="log" level="info" desc="Log Step 3 completion">
196
- <field name="message">Step 3 Status: COMPLETED - Constructed ${edgeCount} edges (${apiEdges.count} API calls, ${navEdges.count} navigations, ${useEdges.count} component uses)</field>
197
- </block>
198
-
199
- <block type="checkpoint" id="CP3" name="step-3-construct-edges" desc="Graph edges constructed">
200
- <field name="file" value="${completed_dir}/.progress.json"/>
201
- <field name="verify" value="${edgeCount} >= 0"/>
202
- </block>
203
- </sequence>
204
-
205
- <!-- ============================================================
206
- Step 4: Write Graph JSON
207
- ============================================================ -->
208
- <sequence id="S4" name="Step 4: Write Graph JSON" status="pending" desc="Generate and write graph data file">
209
- <block type="task" id="B10" action="analyze" desc="Calculate marker filename">
210
- <field name="module" value="${module}"/>
211
- <field name="subpath" value="${extractSubpath sourcePath}"/>
212
- <field name="fileName" value="${fileName}"/>
213
- <field name="output" var="markerFilename"/>
214
- </block>
215
-
216
- <block type="task" id="B11" action="write-file" desc="Write graph JSON file">
217
- <field name="path" value="${completed_dir}/${markerFilename}.graph.json"/>
218
- <field name="content_json">
219
- {
220
- "module": "${module}",
221
- "nodes": [
222
- ${pageNode},
223
- ${componentNodes}
224
- ],
225
- "edges": [
226
- ${apiEdges},
227
- ${navEdges},
228
- ${useEdges}
229
- ]
230
- }
231
- </field>
232
- </block>
233
-
234
- <block type="event" id="E4" action="log" level="info" desc="Log Step 4 completion">
235
- <field name="message">Step 4 Status: COMPLETED - Graph JSON written to ${completed_dir}/${markerFilename}.graph.json</field>
236
- </block>
237
-
238
- <block type="checkpoint" id="CP4" name="step-4-write-graph-json" desc="Graph JSON written">
239
- <field name="file" value="${completed_dir}/.progress.json"/>
240
- <field name="verify" value="valid-json-structure"/>
241
- </block>
242
- </sequence>
243
-
244
- <!-- ============================================================
245
- Step 5: Write Completion Marker
246
- ============================================================ -->
247
- <sequence id="S5" name="Step 5: Write Completion Marker" status="pending" desc="Generate and write completion marker file">
248
- <block type="task" id="B12" action="write-file" desc="Write graph completion marker">
249
- <field name="path" value="${completed_dir}/${markerFilename}.graph-done.json"/>
250
- <field name="content_json">
251
- {
252
- "fileName": "${fileName}",
253
- "sourcePath": "${sourcePath}",
254
- "sourceFile": "${sourceFile}",
255
- "module": "${module}",
256
- "documentPath": "${documentPath}",
257
- "marker": "graph_completed",
258
- "graphFile": "${markerFilename}.graph.json",
259
- "nodeCount": ${nodeCount},
260
- "edgeCount": ${edgeCount},
261
- "status": "${status}",
262
- "analysisNotes": "${analysisNotes}"
263
- }
264
- </field>
265
- </block>
266
-
267
- <block type="event" id="E5" action="log" level="info" desc="Log Step 5 completion">
268
- <field name="message">Step 5 Status: COMPLETED - Graph completion marker written to ${completed_dir}/${markerFilename}.graph-done.json</field>
269
- </block>
270
-
271
- <block type="checkpoint" id="CP5" name="step-5-write-marker" desc="Completion marker written">
272
- <field name="file" value="${completed_dir}/.progress.json"/>
273
- <field name="verify" value="valid-marker-structure"/>
274
- </block>
275
- </sequence>
276
-
277
- <!-- ============================================================
278
- Output Results
279
- ============================================================ -->
280
- <block type="output" id="O1" desc="Workflow output results">
281
- <field name="status" from="success" type="string" desc="Execution status"/>
282
- <field name="module" from="${module}" type="string" desc="Module name"/>
283
- <field name="fileName" from="${fileName}" type="string" desc="Feature file name"/>
284
- <field name="graphFile" from="${completed_dir}/${markerFilename}.graph.json" type="string" desc="Graph JSON file path"/>
285
- <field name="nodeCount" from="${nodeCount}" type="number" desc="Number of nodes constructed"/>
286
- <field name="edgeCount" from="${edgeCount}" type="number" desc="Number of edges constructed"/>
287
- <field name="message" from="Generated graph data with ${nodeCount} nodes and ${edgeCount} edges" type="string" desc="Summary message"/>
288
- </block>
289
-
290
- <!-- ============================================================
291
- Constraints
292
- ============================================================ -->
293
- <block type="rule" id="R1" level="mandatory" desc="Graph data constraints">
294
- <field name="text">100% API coverage - ALL imported API functions MUST be represented as calls edges</field>
295
- <field name="text">Valid JSON format - Both .graph.json and .graph-done.json MUST be valid JSON</field>
296
- <field name="text">Root-level module field - .graph.json MUST include module at root level</field>
297
- <field name="text">Correct filename pattern - Use {module}-{subpath}-{fileName} composite naming</field>
298
- <field name="text">No file extension in fileName - The fileName field in .graph-done.json MUST NOT include extension</field>
299
- <field name="text">documentPath as N/A - Use N/A when no document exists, never empty string</field>
300
- </block>
301
-
302
- </workflow>
303
-
304
- ## Node Structure Reference
305
-
306
- ```json
307
- {
308
- "id": "page-{module}-{feature-name}",
309
- "type": "page",
310
- "name": "<display name>",
311
- "module": "{{module}}",
312
- "sourcePath": "{{sourcePath}}",
313
- "documentPath": "{{documentPath}}",
314
- "description": "...",
315
- "tags": [...],
316
- "keywords": [...],
317
- "context": {
318
- "route": "...",
319
- "components": [...],
320
- "platform": "{{platform_type}}-{{platform_subtype}}"
321
- }
322
- }
323
- ```
324
-
325
- ## Edge Structure Reference
326
-
327
- ```json
328
- {
329
- "source": "page-{module}-{name}",
330
- "target": "api-{module}-{api-name}",
331
- "type": "calls",
332
- "metadata": {
333
- "trigger": "onClick|onMounted|onSubmit|...",
334
- "method": "getUserList",
335
- "context": "Page initialization - load user list"
336
- }
337
- }
338
- ```
339
-
340
- ## Node ID Naming Convention
341
-
342
- ```
343
- {type}-{module}-{name}
344
-
345
- Examples:
346
- page-system-user-list
347
- page-system-user-detail
348
- component-system-user-form
349
- component-shared-delete-confirm
350
- ```
351
-
352
- ## Marker File Naming Convention
353
-
354
- ```
355
- {completed_dir}/{module}-{subpath}-{fileName}.graph.json
356
- ```
357
-
358
- **Naming Rule Explanation:**
359
-
360
- The marker filename MUST follow the composite naming pattern `{module}-{subpath}-{fileName}` to prevent conflicts between same-named source files.
361
-
362
- **How to Extract Each Component from `{{sourcePath}}`:**
363
-
364
- 1. **module**: Use `{{module}}` input variable directly (e.g., `system`, `trade`, `bpm`)
365
-
366
- 2. **subpath**: Extract the middle path between the platform source root and the file name:
367
- - Remove the top-level directory prefix (e.g., `yudao-ui/yudao-ui-admin-vue3/src/views/`)
368
- - Remove the file name at the end
369
- - Replace path separators (`/`) with hyphens (`-`)
370
- - If the file is at the module root directory, subpath will be empty → omit from filename
371
-
372
- 3. **fileName**: Use `{{fileName}}` input variable (file name WITHOUT extension)
373
-
374
- **Examples:**
375
-
376
- | sourcePath | module | subpath | fileName | Marker Filename |
377
- |------------|--------|---------|----------|-----------------|
378
- | `yudao-ui/.../system/notify/message/index.vue` | `system` | `notify-message` | `index` | `system-notify-message-index.graph.json` |
379
- | `yudao-ui/.../system/user/index.vue` | `system` | `user` | `index` | `system-user-index.graph.json` |
380
- | `yudao-ui/.../bpm/process-instance/index.vue` | `bpm` | `process-instance` | `index` | `bpm-process-instance-index.graph.json` |
381
-
382
- **Special Case - Empty subpath:**
383
- - If the file is directly in the module root directory: `{module}-{fileName}.graph.json`
384
- - Example: `yudao-ui/.../system/index.vue` → `system-index.graph.json`
385
-
386
- ## Edge Types Reference
387
-
388
- | Edge Type | Direction | When to Create |
389
- |-----------|-----------|----------------|
390
- | `calls` | page → api | Page calls an API endpoint |
391
- | `navigates-to` | page → page | Page navigates to another page |
392
- | `uses` | page → component | Page uses a shared/local component |
393
-
394
- ## API Coverage Verification Checklist
395
-
396
- - [ ] List ALL imported API functions from the source file
397
- - [ ] For each imported API, verify there is a corresponding `calls` edge
398
- - [ ] Check event handlers for API calls
399
- - [ ] Check lifecycle hooks for initialization API calls
400
- - [ ] Check status toggles, action buttons for special operation APIs
401
- - [ ] Verify no imported API is left unmapped
402
-
403
- ## Pre-write Verification Checklist
404
-
405
- ### Graph JSON Verification:
406
- - [ ] Filename follows `{module}-{subpath}-{fileName}.graph.json` pattern
407
- - [ ] JSON is valid (no trailing commas, all strings quoted)
408
- - [ ] Root-level `module` field is present
409
- - [ ] `nodes` and `edges` are arrays
410
- - [ ] ALL imported API functions are represented as `calls` edges
411
-
412
- ### Completion Marker Verification:
413
- - [ ] Filename follows `{module}-{subpath}-{fileName}.graph-done.json` pattern
414
- - [ ] JSON is valid
415
- - [ ] `fileName` does NOT contain file extension
416
- - [ ] `sourceFile` matches `features-{platform}.json` pattern
417
- - [ ] `module` field is present and non-empty
418
- - [ ] `documentPath` is `"N/A"` when no document exists (not empty string)
419
- - [ ] `nodeCount` and `edgeCount` match actual graph data
420
-
421
- ## Constraints
422
-
423
- 1. **100% API coverage** - ALL imported API functions MUST be represented as `calls` edges
424
- 2. **Valid JSON format** - Both `.graph.json` and `.graph-done.json` MUST be valid JSON
425
- 3. **Root-level module field** - `.graph.json` MUST include `module` at root level
426
- 4. **Correct filename pattern** - Use `{module}-{subpath}-{fileName}` composite naming
427
- 5. **No file extension in fileName** - The `fileName` field in `.graph-done.json` MUST NOT include extension
428
- 6. **documentPath as N/A** - Use `"N/A"` when no document exists, never empty string
429
-
430
- ## Task Completion Report
431
-
432
- When the task is complete, report the following:
433
-
434
- **Status:** `success` | `partial` | `failed`
435
-
436
- **Summary:**
437
- - Feature: `{{fileName}}`
438
- - Module: `{{module}}`
439
- - Nodes constructed: `{{nodeCount}}`
440
- - Edges constructed: `{{edgeCount}}`
441
-
442
- **Files Generated:**
443
- - `{{completed_dir}}/{marker-filename}.graph.json`
444
- - `{{completed_dir}}/{marker-filename}.graph-done.json`
14
+ > **REQUIRED**: Before executing this workflow, read the XML workflow specification: speccrew-workspace/docs/rules/agentflow-spec.md
15
+ > Then read and execute the XML workflow in SKILL.xml block-by-block as the authoritative execution plan.