speccrew 0.6.28 → 0.6.30
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/agents/speccrew-team-leader-xml.md +415 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +18 -3
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze-xml/SKILL.md +643 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-graph-xml/SKILL.md +523 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch-xml/SKILL.md +986 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-identify-entries-xml/SKILL.md +288 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze-xml/SKILL.md +524 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-graph-xml/SKILL.md +343 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract-xml/SKILL.md +385 -0
- package/.speccrew/skills/speccrew-knowledge-module-summarize-xml/SKILL.md +473 -0
- package/.speccrew/skills/speccrew-knowledge-system-summarize-xml/SKILL.md +572 -0
- package/package.json +1 -1
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: speccrew-knowledge-bizs-ui-analyze-xml
|
|
3
|
+
description: Analyze a single UI feature from source code to extract business functionality and generate feature documentation using XML Block workflow. Used by Worker Agent in parallel execution during knowledge base initialization Stage 2. Each worker analyzes one feature (e.g., one Vue/React page component).
|
|
4
|
+
tools: Read, Write, Edit, Glob, Grep, Bash
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# UI Feature Analysis - Single Feature (XML Block Workflow)
|
|
8
|
+
|
|
9
|
+
> **CRITICAL CONSTRAINT**: DO NOT create temporary scripts, batch files, or workaround code files (`.py`, `.bat`, `.sh`, `.ps1`, etc.) under any circumstances. If execution encounters errors, STOP and report the exact error. Fixes must be applied to the Skill definition or source scripts — not patched at runtime.
|
|
10
|
+
|
|
11
|
+
Analyze one specific UI feature from source code, extract business functionality, and generate feature documentation. This skill operates at feature granularity - one worker per feature file.
|
|
12
|
+
|
|
13
|
+
## Trigger Scenarios
|
|
14
|
+
|
|
15
|
+
- "Analyze feature {fileName} from source code"
|
|
16
|
+
- "Extract UI functionality from feature {fileName}"
|
|
17
|
+
- "Generate documentation for feature {fileName}"
|
|
18
|
+
- "Analyze UI feature from features.json"
|
|
19
|
+
|
|
20
|
+
## Input Variables
|
|
21
|
+
|
|
22
|
+
| Variable | Type | Description | Example |
|
|
23
|
+
|----------|------|-------------|---------|
|
|
24
|
+
| `{{feature}}` | object | Complete feature object from features.json | - |
|
|
25
|
+
| `{{fileName}}` | string | Feature file name | `"index"`, `"UserForm"` |
|
|
26
|
+
| `{{sourcePath}}` | string | Relative path to source file | `"frontend-web/src/views/system/user/index.vue"` |
|
|
27
|
+
| `{{documentPath}}` | string | Target path for generated document | `"speccrew-workspace/knowledges/bizs/web-vue/src/views/system/user/index.md"` |
|
|
28
|
+
| `{{module}}` | string | Business module name (from feature.module) | `"system"`, `"trade"`, `"_root"` |
|
|
29
|
+
| `{{analyzed}}` | boolean | Analysis status flag | `true` / `false` |
|
|
30
|
+
| `{{platform_type}}` | string | Platform type | `"web"`, `"mobile"` |
|
|
31
|
+
| `{{platform_subtype}}` | string | Platform subtype | `"vue"`, `"react"` |
|
|
32
|
+
| `{{tech_stack}}` | array | Platform tech stack | `["vue", "typescript"]` |
|
|
33
|
+
| `{{language}}` | string | **REQUIRED** - Target language for generated content | `"zh"`, `"en"` |
|
|
34
|
+
|
|
35
|
+
## Language Adaptation
|
|
36
|
+
|
|
37
|
+
**CRITICAL**: Generate all content in the language specified by the `{{language}}` parameter.
|
|
38
|
+
|
|
39
|
+
- `{{language}} == "zh"` → Generate all content in 中文
|
|
40
|
+
- `{{language}} == "en"` → Generate all content in English
|
|
41
|
+
- Other languages → Use the specified language
|
|
42
|
+
|
|
43
|
+
**All output content (feature names, descriptions, business rules) must be in the target language only.**
|
|
44
|
+
|
|
45
|
+
## Output Variables
|
|
46
|
+
|
|
47
|
+
| Variable | Type | Description |
|
|
48
|
+
|----------|------|-------------|
|
|
49
|
+
| `{{status}}` | string | Analysis status: `"success"`, `"partial"`, or `"failed"` |
|
|
50
|
+
| `{{feature_name}}` | string | Name of the analyzed feature |
|
|
51
|
+
| `{{generated_file}}` | string | Path to the generated documentation file |
|
|
52
|
+
| `{{message}}` | string | Summary message for status update |
|
|
53
|
+
|
|
54
|
+
## Output
|
|
55
|
+
|
|
56
|
+
**Generated Files (MANDATORY - Task is NOT complete until all files are written):**
|
|
57
|
+
1. `{{documentPath}}` - Feature documentation file
|
|
58
|
+
|
|
59
|
+
**Return Value (JSON format):**
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"status": "success|partial|failed",
|
|
63
|
+
"feature": {
|
|
64
|
+
"fileName": "index",
|
|
65
|
+
"sourcePath": "frontend-web/src/views/system/user/index.vue"
|
|
66
|
+
},
|
|
67
|
+
"platformType": "web",
|
|
68
|
+
"module": "system",
|
|
69
|
+
"featureName": "user-management",
|
|
70
|
+
"generatedFile": "speccrew-workspace/knowledges/bizs/web-vue/src/views/system/user/index.md",
|
|
71
|
+
"message": "Successfully analyzed user-management feature from index.vue"
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
> **Note**: Graph data construction (nodes, edges, marker files) is handled by `speccrew-knowledge-bizs-ui-graph` Skill. This Skill only generates feature documentation.
|
|
76
|
+
|
|
77
|
+
## Workflow
|
|
78
|
+
|
|
79
|
+
<!--
|
|
80
|
+
== Block Types ==
|
|
81
|
+
input : Workflow input parameters (required=mandatory, default=default value)
|
|
82
|
+
output : Workflow output results (from=data source variable)
|
|
83
|
+
task : Execute action (action: run-skill | run-script | dispatch-to-worker)
|
|
84
|
+
gateway : Conditional branch/gate (mode: exclusive | guard | parallel)
|
|
85
|
+
loop : Iterate over collection (over=collection, as=current item)
|
|
86
|
+
event : Log/confirm/signal (action: log | confirm | signal)
|
|
87
|
+
error-handler : Exception handling (try > catch > finally)
|
|
88
|
+
checkpoint : Persistent milestone (name=checkpoint name, verify=verification condition)
|
|
89
|
+
rule : Constraint declaration (level: forbidden | mandatory | note)
|
|
90
|
+
-->
|
|
91
|
+
|
|
92
|
+
```xml
|
|
93
|
+
<workflow name="ui-feature-analysis" version="1.0">
|
|
94
|
+
|
|
95
|
+
<!-- ==================== INPUT PARAMETERS ==================== -->
|
|
96
|
+
<input name="feature" type="object" required="true" description="Complete feature object from features.json"/>
|
|
97
|
+
<input name="fileName" type="string" required="true" description="Feature file name"/>
|
|
98
|
+
<input name="sourcePath" type="string" required="true" description="Relative path to source file"/>
|
|
99
|
+
<input name="documentPath" type="string" required="true" description="Target path for generated document"/>
|
|
100
|
+
<input name="module" type="string" required="true" description="Business module name"/>
|
|
101
|
+
<input name="analyzed" type="boolean" required="true" description="Analysis status flag"/>
|
|
102
|
+
<input name="platform_type" type="string" required="true" description="Platform type: web, mobile, etc."/>
|
|
103
|
+
<input name="platform_subtype" type="string" required="true" description="Platform subtype: vue, react, etc."/>
|
|
104
|
+
<input name="tech_stack" type="array" required="true" description="Platform tech stack"/>
|
|
105
|
+
<input name="language" type="string" required="true" description="Target language for generated content"/>
|
|
106
|
+
|
|
107
|
+
<!-- ==================== CONSTRAINT RULES ==================== -->
|
|
108
|
+
<rule level="forbidden" id="no-create-file-for-docs">
|
|
109
|
+
NEVER use create_file to rewrite entire document. Documents MUST be created by copying template then filling with search_replace.
|
|
110
|
+
</rule>
|
|
111
|
+
<rule level="forbidden" id="no-file-deletion">
|
|
112
|
+
NEVER delete generated files. If a file is malformed, fix it with search_replace.
|
|
113
|
+
</rule>
|
|
114
|
+
<rule level="forbidden" id="no-full-rewrite">
|
|
115
|
+
NEVER rewrite entire document. Always use targeted search_replace on specific sections.
|
|
116
|
+
</rule>
|
|
117
|
+
<rule level="mandatory" id="template-first">
|
|
118
|
+
Template copying (Step 5a) MUST execute before section filling (Step 5b).
|
|
119
|
+
</rule>
|
|
120
|
+
<rule level="mandatory" id="all-sections-filled">
|
|
121
|
+
ALL sections in the template must be filled. Use "N/A" for unavailable data, never skip a section.
|
|
122
|
+
</rule>
|
|
123
|
+
<rule level="mandatory" id="language-compliance">
|
|
124
|
+
ALL content MUST be generated in the language specified by {{language}} parameter.
|
|
125
|
+
</rule>
|
|
126
|
+
|
|
127
|
+
<!-- ==================== STEP 0: CHECK ANALYSIS STATUS ==================== -->
|
|
128
|
+
<gateway name="check-analyzed-status" mode="exclusive">
|
|
129
|
+
<branch condition="{{analyzed}} == true">
|
|
130
|
+
<event action="log" level="info" message="Step 0 Status: SKIPPED (already analyzed)"/>
|
|
131
|
+
<output name="status" value="skipped"/>
|
|
132
|
+
<output name="message" value="Feature already analyzed, skipping"/>
|
|
133
|
+
<checkpoint name="skip-complete" verify="true"/>
|
|
134
|
+
</branch>
|
|
135
|
+
<branch condition="{{analyzed}} == false">
|
|
136
|
+
<event action="log" level="info" message="Step 0 Status: PROCEEDING (analysis required)"/>
|
|
137
|
+
</branch>
|
|
138
|
+
</gateway>
|
|
139
|
+
|
|
140
|
+
<!-- ==================== STEP 1: READ ANALYSIS TEMPLATE ==================== -->
|
|
141
|
+
<task name="step1-read-template" action="run-skill">
|
|
142
|
+
<description>Read the appropriate template based on platform type</description>
|
|
143
|
+
<parameter name="platform_type">{{platform_type}}</parameter>
|
|
144
|
+
<parameter name="platform_subtype">{{platform_subtype}}</parameter>
|
|
145
|
+
<script>
|
|
146
|
+
<!-- Template Selection Logic -->
|
|
147
|
+
<gateway name="template-selection" mode="exclusive">
|
|
148
|
+
<branch condition="{{platform_type}} == 'mobile'">
|
|
149
|
+
<output name="templateFile" value="../speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MOBILE.md"/>
|
|
150
|
+
</branch>
|
|
151
|
+
<branch condition="{{platform_type}} == 'miniapp'">
|
|
152
|
+
<output name="templateFile" value="../speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MINIAPP.md"/>
|
|
153
|
+
</branch>
|
|
154
|
+
<branch condition="{{platform_type}} == 'desktop' AND {{platform_subtype}} == 'electron'">
|
|
155
|
+
<output name="templateFile" value="../speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-ELECTRON.md"/>
|
|
156
|
+
</branch>
|
|
157
|
+
<branch condition="{{platform_type}} == 'desktop'">
|
|
158
|
+
<output name="templateFile" value="../speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-DESKTOP.md"/>
|
|
159
|
+
</branch>
|
|
160
|
+
<branch condition="default">
|
|
161
|
+
<output name="templateFile" value="../speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI.md"/>
|
|
162
|
+
</branch>
|
|
163
|
+
</gateway>
|
|
164
|
+
|
|
165
|
+
<!-- Read Template Content -->
|
|
166
|
+
<task action="read-file" target="{{templateFile}}">
|
|
167
|
+
<output name="templateContent" from="file.content"/>
|
|
168
|
+
</task>
|
|
169
|
+
|
|
170
|
+
<!-- Validate Template Structure -->
|
|
171
|
+
<checkpoint name="template-loaded" verify="{{templateContent}} != null AND {{templateContent}} != ''"/>
|
|
172
|
+
<event action="log" level="info" message="Step 1 Status: COMPLETED - Read template for {{platform_type}}/{{platform_subtype}}"/>
|
|
173
|
+
</script>
|
|
174
|
+
</task>
|
|
175
|
+
|
|
176
|
+
<!-- ==================== STEP 2: READ FEATURE FILE AND ANALYZE UI STRUCTURE ==================== -->
|
|
177
|
+
<task name="step2-read-source" action="run-skill">
|
|
178
|
+
<description>Read feature file and analyze UI structure, components, props, state management</description>
|
|
179
|
+
<parameter name="sourcePath">{{sourcePath}}</parameter>
|
|
180
|
+
<script>
|
|
181
|
+
<!-- Read Source File -->
|
|
182
|
+
<task action="read-file" target="{{sourcePath}}">
|
|
183
|
+
<output name="sourceContent" from="file.content"/>
|
|
184
|
+
<output name="lineCount" from="file.lineCount"/>
|
|
185
|
+
</task>
|
|
186
|
+
|
|
187
|
+
<!-- Analyze UI Structure -->
|
|
188
|
+
<task action="analyze-ui">
|
|
189
|
+
<input name="content">{{sourceContent}}</input>
|
|
190
|
+
<input name="tech_stack">{{tech_stack}}</input>
|
|
191
|
+
<output name="componentCount" from="analysis.components"/>
|
|
192
|
+
<output name="eventCount" from="analysis.events"/>
|
|
193
|
+
<output name="apiCalls" from="analysis.apis"/>
|
|
194
|
+
<output name="stateFields" from="analysis.state"/>
|
|
195
|
+
<output name="formFields" from="analysis.forms"/>
|
|
196
|
+
</task>
|
|
197
|
+
|
|
198
|
+
<checkpoint name="source-analyzed" verify="{{sourceContent}} != null"/>
|
|
199
|
+
<event action="log" level="info" message="Step 2 Status: COMPLETED - Read {{sourcePath}} ({{lineCount}} lines), Analyzed {{componentCount}} components, {{eventCount}} events"/>
|
|
200
|
+
</script>
|
|
201
|
+
</task>
|
|
202
|
+
|
|
203
|
+
<!-- ==================== STEP 3: EXTRACT BUSINESS FEATURES ==================== -->
|
|
204
|
+
<task name="step3-extract-features" action="run-skill">
|
|
205
|
+
<description>Extract business features, wireframes, and business flows from source analysis</description>
|
|
206
|
+
<parameter name="sourceContent">{{sourceContent}}</parameter>
|
|
207
|
+
<parameter name="language">{{language}}</parameter>
|
|
208
|
+
<script>
|
|
209
|
+
<!-- Read Mermaid Rules -->
|
|
210
|
+
<task action="read-file" target="speccrew-workspace/docs/rules/mermaid-rule.md">
|
|
211
|
+
<output name="mermaidRules" from="file.content"/>
|
|
212
|
+
</task>
|
|
213
|
+
|
|
214
|
+
<!-- Extract Wireframes -->
|
|
215
|
+
<task action="extract-wireframes">
|
|
216
|
+
<input name="content">{{sourceContent}}</input>
|
|
217
|
+
<input name="platform">{{platform_type}}</input>
|
|
218
|
+
<output name="wireframes" from="extraction.wireframes"/>
|
|
219
|
+
<output name="wireframeCount" from="extraction.count"/>
|
|
220
|
+
</task>
|
|
221
|
+
|
|
222
|
+
<!-- Extract Business Flows -->
|
|
223
|
+
<task action="extract-flows">
|
|
224
|
+
<input name="content">{{sourceContent}}</input>
|
|
225
|
+
<input name="events">{{eventCount}}</input>
|
|
226
|
+
<output name="flows" from="extraction.flows"/>
|
|
227
|
+
<output name="flowCount" from="extraction.count"/>
|
|
228
|
+
<output name="sequenceAnalysis" from="extraction.sequences"/>
|
|
229
|
+
<output name="boundaryScenarios" from="extraction.boundaries"/>
|
|
230
|
+
</task>
|
|
231
|
+
|
|
232
|
+
<!-- Extract Data Bindings -->
|
|
233
|
+
<task action="extract-data-bindings">
|
|
234
|
+
<input name="stateFields">{{stateFields}}</input>
|
|
235
|
+
<input name="formFields">{{formFields}}</input>
|
|
236
|
+
<output name="dataBindingMap" from="extraction.bindings"/>
|
|
237
|
+
<output name="reactiveDependencies" from="extraction.dependencies"/>
|
|
238
|
+
</task>
|
|
239
|
+
|
|
240
|
+
<checkpoint name="features-extracted" verify="{{flowCount}} > 0 OR {{wireframeCount}} > 0"/>
|
|
241
|
+
<event action="log" level="info" message="Step 3 Status: COMPLETED - Extracted {{wireframeCount}} wireframes, {{flowCount}} business flows"/>
|
|
242
|
+
</script>
|
|
243
|
+
</task>
|
|
244
|
+
|
|
245
|
+
<!-- ==================== STEP 4: FIND REFERENCING PAGES ==================== -->
|
|
246
|
+
<task name="step4-find-references" action="run-skill">
|
|
247
|
+
<description>Search other page files to find which pages reference/navigate to this page</description>
|
|
248
|
+
<parameter name="fileName">{{fileName}}</parameter>
|
|
249
|
+
<parameter name="sourcePath">{{sourcePath}}</parameter>
|
|
250
|
+
<script>
|
|
251
|
+
<!-- Search for Router Navigation -->
|
|
252
|
+
<task action="grep-search">
|
|
253
|
+
<input name="pattern">{{fileName}}</input>
|
|
254
|
+
<input name="glob">*.{vue,tsx,jsx}</input>
|
|
255
|
+
<output name="routerMatches" from="search.results"/>
|
|
256
|
+
</task>
|
|
257
|
+
|
|
258
|
+
<!-- Search for Component Imports -->
|
|
259
|
+
<task action="grep-search">
|
|
260
|
+
<input name="pattern">import.*{{fileName}}</input>
|
|
261
|
+
<input name="glob">*.{vue,tsx,jsx,ts,js}</input>
|
|
262
|
+
<output name="importMatches" from="search.results"/>
|
|
263
|
+
</task>
|
|
264
|
+
|
|
265
|
+
<!-- Compile Referencing Pages -->
|
|
266
|
+
<task action="compile-references">
|
|
267
|
+
<input name="routerMatches">{{routerMatches}}</input>
|
|
268
|
+
<input name="importMatches">{{importMatches}}</input>
|
|
269
|
+
<output name="referencingPages" from="compilation.pages"/>
|
|
270
|
+
<output name="referenceCount" from="compilation.count"/>
|
|
271
|
+
</task>
|
|
272
|
+
|
|
273
|
+
<event action="log" level="info" message="Step 4 Status: COMPLETED - Found {{referenceCount}} referencing pages"/>
|
|
274
|
+
</script>
|
|
275
|
+
</task>
|
|
276
|
+
|
|
277
|
+
<!-- ==================== STEP 5A: COPY TEMPLATE TO DOCUMENT PATH ==================== -->
|
|
278
|
+
<task name="step5a-copy-template" action="run-skill">
|
|
279
|
+
<description>Copy the appropriate template file to the target document path, replacing top-level placeholders</description>
|
|
280
|
+
<parameter name="templateContent">{{templateContent}}</parameter>
|
|
281
|
+
<parameter name="documentPath">{{documentPath}}</parameter>
|
|
282
|
+
<parameter name="fileName">{{fileName}}</parameter>
|
|
283
|
+
<parameter name="sourcePath">{{sourcePath}}</parameter>
|
|
284
|
+
<parameter name="language">{{language}}</parameter>
|
|
285
|
+
<script>
|
|
286
|
+
<!-- Prepare Placeholder Replacements -->
|
|
287
|
+
<task action="prepare-replacements">
|
|
288
|
+
<output name="featureName" from="i18n.featureName"/>
|
|
289
|
+
<output name="currentDate" from="date.now"/>
|
|
290
|
+
</task>
|
|
291
|
+
|
|
292
|
+
<!-- Replace Top-Level Placeholders -->
|
|
293
|
+
<task action="replace-placeholders">
|
|
294
|
+
<input name="template">{{templateContent}}</input>
|
|
295
|
+
<replacements>
|
|
296
|
+
<replacement from="{Feature Name}" to="{{featureName}}"/>
|
|
297
|
+
<replacement from="{documentPath}" to="{{documentPath}}"/>
|
|
298
|
+
<replacement from="{sourcePath}" to="{{sourcePath}}"/>
|
|
299
|
+
<replacement from="{Date}" to="{{currentDate}}"/>
|
|
300
|
+
<replacement from="{FeatureFile}.vue" to="{{fileName}}.vue"/>
|
|
301
|
+
</replacements>
|
|
302
|
+
<output name="documentSkeleton" from="result.content"/>
|
|
303
|
+
</task>
|
|
304
|
+
|
|
305
|
+
<!-- Write Document Skeleton -->
|
|
306
|
+
<task action="create-file" target="{{documentPath}}">
|
|
307
|
+
<content>{{documentSkeleton}}</content>
|
|
308
|
+
</task>
|
|
309
|
+
|
|
310
|
+
<checkpoint name="template-copied" verify="file.exists({{documentPath}})"/>
|
|
311
|
+
<event action="log" level="info" message="Step 5a Status: COMPLETED - Template copied to {{documentPath}}"/>
|
|
312
|
+
</script>
|
|
313
|
+
</task>
|
|
314
|
+
|
|
315
|
+
<!-- ==================== STEP 5B: FILL EACH SECTION USING SEARCH_REPLACE ==================== -->
|
|
316
|
+
<task name="step5b-fill-sections" action="run-skill">
|
|
317
|
+
<description>Fill each section of the copied template document using search_replace</description>
|
|
318
|
+
<parameter name="documentPath">{{documentPath}}</parameter>
|
|
319
|
+
<parameter name="analysisData">{{analysisData}}</parameter>
|
|
320
|
+
<parameter name="language">{{language}}</parameter>
|
|
321
|
+
<script>
|
|
322
|
+
<!-- Section 1: Content Overview -->
|
|
323
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
324
|
+
<search>## 1. Content Overview.*?(?=## 2.|$)</search>
|
|
325
|
+
<replace>## 1. Content Overview
|
|
326
|
+
|
|
327
|
+
{{section1Content}}</replace>
|
|
328
|
+
</task>
|
|
329
|
+
|
|
330
|
+
<!-- Section 2: Interface Prototype -->
|
|
331
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
332
|
+
<search>## 2. Interface Prototype.*?(?=## 3.|$)</search>
|
|
333
|
+
<replace>## 2. Interface Prototype
|
|
334
|
+
|
|
335
|
+
{{wireframes}}
|
|
336
|
+
|
|
337
|
+
### Interface Element Description
|
|
338
|
+
|
|
339
|
+
{{elementDescriptions}}</replace>
|
|
340
|
+
</task>
|
|
341
|
+
|
|
342
|
+
<!-- Section 3: Business Flow -->
|
|
343
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
344
|
+
<search>## 3. Business Flow.*?(?=## 4.|$)</search>
|
|
345
|
+
<replace>## 3. Business Flow
|
|
346
|
+
|
|
347
|
+
{{businessFlows}}
|
|
348
|
+
|
|
349
|
+
### API Call Sequence Analysis
|
|
350
|
+
|
|
351
|
+
{{sequenceAnalysis}}
|
|
352
|
+
|
|
353
|
+
### Boundary Scenarios
|
|
354
|
+
|
|
355
|
+
{{boundaryScenarios}}</replace>
|
|
356
|
+
</task>
|
|
357
|
+
|
|
358
|
+
<!-- Section 4: Data Field Definition -->
|
|
359
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
360
|
+
<search>## 4. Data Field Definition.*?(?=## 5.|$)</search>
|
|
361
|
+
<replace>## 4. Data Field Definition
|
|
362
|
+
|
|
363
|
+
### Page State Fields
|
|
364
|
+
|
|
365
|
+
{{stateFieldsTable}}
|
|
366
|
+
|
|
367
|
+
### Form Fields
|
|
368
|
+
|
|
369
|
+
{{formFieldsTable}}
|
|
370
|
+
|
|
371
|
+
### Data Binding Mapping
|
|
372
|
+
|
|
373
|
+
{{dataBindingMap}}
|
|
374
|
+
|
|
375
|
+
### Reactive Dependency Chain
|
|
376
|
+
|
|
377
|
+
{{reactiveDependencies}}</replace>
|
|
378
|
+
</task>
|
|
379
|
+
|
|
380
|
+
<!-- Section 5: References -->
|
|
381
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
382
|
+
<search>## 5. References.*?(?=## 6.|$)</search>
|
|
383
|
+
<replace>## 5. References
|
|
384
|
+
|
|
385
|
+
### APIs
|
|
386
|
+
|
|
387
|
+
{{apiReferences}}
|
|
388
|
+
|
|
389
|
+
### Shared Methods
|
|
390
|
+
|
|
391
|
+
{{sharedMethods}}
|
|
392
|
+
|
|
393
|
+
### Shared Components
|
|
394
|
+
|
|
395
|
+
{{sharedComponents}}
|
|
396
|
+
|
|
397
|
+
### Other Pages
|
|
398
|
+
|
|
399
|
+
{{otherPages}}
|
|
400
|
+
|
|
401
|
+
### Referenced By
|
|
402
|
+
|
|
403
|
+
{{referencedBy}}</replace>
|
|
404
|
+
</task>
|
|
405
|
+
|
|
406
|
+
<!-- Section 6: Business Rule Constraints -->
|
|
407
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
408
|
+
<search>## 6. Business Rule Constraints.*?(?=## 7.|$)</search>
|
|
409
|
+
<replace>## 6. Business Rule Constraints
|
|
410
|
+
|
|
411
|
+
### Permission Rules
|
|
412
|
+
|
|
413
|
+
{{permissionRules}}
|
|
414
|
+
|
|
415
|
+
### Business Logic Rules
|
|
416
|
+
|
|
417
|
+
{{businessRules}}
|
|
418
|
+
|
|
419
|
+
### Validation Rules
|
|
420
|
+
|
|
421
|
+
{{validationRules}}</replace>
|
|
422
|
+
</task>
|
|
423
|
+
|
|
424
|
+
<!-- Section 7: Notes and Additional Information -->
|
|
425
|
+
<task action="search_replace" target="{{documentPath}}">
|
|
426
|
+
<search>## 7. Notes and Additional Information.*?(?=$)</search>
|
|
427
|
+
<replace>## 7. Notes and Additional Information
|
|
428
|
+
|
|
429
|
+
{{notes}}
|
|
430
|
+
|
|
431
|
+
### Performance and Scalability Analysis
|
|
432
|
+
|
|
433
|
+
{{performanceAnalysis}}</replace>
|
|
434
|
+
</task>
|
|
435
|
+
|
|
436
|
+
<checkpoint name="all-sections-filled" verify="all.sections.filled"/>
|
|
437
|
+
<event action="log" level="info" message="Step 5b Status: COMPLETED - All sections filled using search_replace"/>
|
|
438
|
+
</script>
|
|
439
|
+
</task>
|
|
440
|
+
|
|
441
|
+
<!-- ==================== STEP 6: REPORT RESULTS ==================== -->
|
|
442
|
+
<task name="step6-report" action="run-skill">
|
|
443
|
+
<description>Return analysis result summary</description>
|
|
444
|
+
<script>
|
|
445
|
+
<output name="status" value="success"/>
|
|
446
|
+
<output name="feature_name" value="{{fileName}}"/>
|
|
447
|
+
<output name="generated_file" value="{{documentPath}}"/>
|
|
448
|
+
<output name="message" value="Successfully analyzed {{fileName}} feature from {{sourcePath}}"/>
|
|
449
|
+
|
|
450
|
+
<event action="log" level="info" message="Step 6 Status: COMPLETED - Analysis {{status}}: {{message}}"/>
|
|
451
|
+
</script>
|
|
452
|
+
</task>
|
|
453
|
+
|
|
454
|
+
<!-- ==================== FINAL OUTPUT ==================== -->
|
|
455
|
+
<output name="status" from="step6-report.status"/>
|
|
456
|
+
<output name="feature" from="step6-report.feature"/>
|
|
457
|
+
<output name="platformType" from="input.platform_type"/>
|
|
458
|
+
<output name="module" from="input.module"/>
|
|
459
|
+
<output name="featureName" from="step6-report.feature_name"/>
|
|
460
|
+
<output name="generatedFile" from="step6-report.generated_file"/>
|
|
461
|
+
<output name="message" from="step6-report.message"/>
|
|
462
|
+
|
|
463
|
+
<!-- ==================== ERROR HANDLING ==================== -->
|
|
464
|
+
<error-handler>
|
|
465
|
+
<catch type="file-not-found">
|
|
466
|
+
<event action="log" level="error" message="Source file not found: {{sourcePath}}"/>
|
|
467
|
+
<output name="status" value="failed"/>
|
|
468
|
+
<output name="message" value="Source file not found: {{sourcePath}}"/>
|
|
469
|
+
</catch>
|
|
470
|
+
<catch type="template-error">
|
|
471
|
+
<event action="log" level="error" message="Template processing error"/>
|
|
472
|
+
<output name="status" value="failed"/>
|
|
473
|
+
<output name="message" value="Failed to process template"/>
|
|
474
|
+
</catch>
|
|
475
|
+
<catch type="validation-error">
|
|
476
|
+
<event action="log" level="error" message="Validation failed: {{error.message}}"/>
|
|
477
|
+
<output name="status" value="partial"/>
|
|
478
|
+
<output name="message" value="Analysis completed with validation errors"/>
|
|
479
|
+
</catch>
|
|
480
|
+
<finally>
|
|
481
|
+
<event action="log" level="info" message="Workflow execution completed"/>
|
|
482
|
+
</finally>
|
|
483
|
+
</error-handler>
|
|
484
|
+
|
|
485
|
+
</workflow>
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
## Constraints
|
|
489
|
+
|
|
490
|
+
1. **DO NOT analyze files outside the specified `{{sourcePath}}`**
|
|
491
|
+
2. **DO NOT generate separate documents for embedded components**
|
|
492
|
+
3. **All content MUST be in the language specified by `{{language}}`**
|
|
493
|
+
4. **Use `search_replace` for section filling, NEVER rewrite entire document**
|
|
494
|
+
5. **Mermaid diagrams MUST follow the rules in `mermaid-rule.md`**
|
|
495
|
+
6. **All links MUST use relative paths, NEVER `file://` protocol**
|
|
496
|
+
|
|
497
|
+
## Task Completion Report
|
|
498
|
+
|
|
499
|
+
When the task is complete, report the following:
|
|
500
|
+
|
|
501
|
+
**Status:** `success` | `partial` | `failed`
|
|
502
|
+
|
|
503
|
+
**Summary:**
|
|
504
|
+
- Feature analyzed: `{{feature_name}}`
|
|
505
|
+
- Document generated: `{{documentPath}}`
|
|
506
|
+
- Platform: `{{platform_type}}/{{platform_subtype}}`
|
|
507
|
+
- Module: `{{module}}`
|
|
508
|
+
|
|
509
|
+
**Files Generated:**
|
|
510
|
+
- `{{documentPath}}` - Feature documentation
|
|
511
|
+
|
|
512
|
+
**Note:** Graph data construction (nodes, edges, marker files) is handled by `speccrew-knowledge-bizs-ui-graph` Skill.
|
|
513
|
+
|
|
514
|
+
## Checklist
|
|
515
|
+
|
|
516
|
+
- [ ] Template file selected based on `{{platform_type}}`
|
|
517
|
+
- [ ] Template content read successfully
|
|
518
|
+
- [ ] Source file read and analyzed
|
|
519
|
+
- [ ] Business features extracted with wireframes
|
|
520
|
+
- [ ] Referencing pages found
|
|
521
|
+
- [ ] Template copied to document path
|
|
522
|
+
- [ ] All sections filled using search_replace
|
|
523
|
+
- [ ] All content in target language (`{{language}}`)
|
|
524
|
+
- [ ] Results reported in JSON format
|