speccrew 0.6.68 → 0.7.0
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-task-worker.md +1 -1
- package/.speccrew/agents/speccrew-team-leader.md +336 -189
- package/.speccrew/skills/speccrew-agentflow-manager/SKILL.md +161 -0
- package/.speccrew/skills/speccrew-agentflow-manager/workflow.agentflow.xml +347 -0
- package/.speccrew/skills/speccrew-deploy-build/SKILL.md +3 -56
- package/.speccrew/skills/speccrew-deploy-build/workflow.agentflow.xml +125 -0
- package/.speccrew/skills/speccrew-deploy-migrate/SKILL.md +3 -64
- package/.speccrew/skills/speccrew-deploy-migrate/workflow.agentflow.xml +135 -0
- package/.speccrew/skills/speccrew-deploy-smoke-test/SKILL.md +4 -156
- package/.speccrew/skills/speccrew-deploy-smoke-test/workflow.agentflow.xml +178 -0
- package/.speccrew/skills/speccrew-deploy-startup/SKILL.md +3 -135
- package/.speccrew/skills/speccrew-deploy-startup/workflow.agentflow.xml +223 -0
- package/.speccrew/skills/speccrew-dev-backend/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-backend/workflow.agentflow.xml +254 -0
- package/.speccrew/skills/speccrew-dev-desktop-electron/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-desktop-electron/workflow.agentflow.xml +259 -0
- package/.speccrew/skills/speccrew-dev-desktop-tauri/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-desktop-tauri/workflow.agentflow.xml +245 -0
- package/.speccrew/skills/speccrew-dev-frontend/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-frontend/workflow.agentflow.xml +262 -0
- package/.speccrew/skills/speccrew-dev-mobile/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-mobile/workflow.agentflow.xml +244 -0
- package/.speccrew/skills/speccrew-dev-review-backend/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-review-backend/workflow.agentflow.xml +251 -0
- package/.speccrew/skills/speccrew-dev-review-desktop/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-review-desktop/workflow.agentflow.xml +214 -0
- package/.speccrew/skills/speccrew-dev-review-frontend/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-review-frontend/workflow.agentflow.xml +213 -0
- package/.speccrew/skills/speccrew-dev-review-mobile/SKILL.md +10 -2
- package/.speccrew/skills/speccrew-dev-review-mobile/workflow.agentflow.xml +214 -0
- package/.speccrew/skills/speccrew-fd-api-contract/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-fd-api-contract/workflow.agentflow.xml +222 -0
- package/.speccrew/skills/speccrew-fd-feature-analyze/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-fd-feature-analyze/workflow.agentflow.xml +223 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-fd-feature-design/workflow.agentflow.xml +322 -0
- package/.speccrew/skills/speccrew-get-timestamp/SKILL.md +3 -39
- package/.speccrew/skills/speccrew-get-timestamp/workflow.agentflow.xml +43 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/SKILL.md +57 -508
- package/.speccrew/skills/{speccrew-knowledge-bizs-api-analyze-xml/SKILL.md → speccrew-knowledge-bizs-api-analyze/workflow.agentflow.xml} +1 -154
- package/.speccrew/skills/speccrew-knowledge-bizs-api-graph/SKILL.md +73 -283
- package/.speccrew/skills/{speccrew-knowledge-bizs-api-graph-xml/SKILL.md → speccrew-knowledge-bizs-api-graph/workflow.agentflow.xml} +0 -298
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/SKILL.md +931 -801
- package/.speccrew/skills/{speccrew-knowledge-bizs-dispatch-xml/SKILL.md → speccrew-knowledge-bizs-dispatch/workflow.agentflow.xml} +42 -272
- package/.speccrew/skills/speccrew-knowledge-bizs-identify-entries/SKILL.md +263 -71
- package/.speccrew/skills/{speccrew-knowledge-bizs-identify-entries-xml/SKILL.md → speccrew-knowledge-bizs-identify-entries/workflow.agentflow.xml} +8 -184
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/SKILL.md +200 -181
- package/.speccrew/skills/{speccrew-knowledge-bizs-init-features-xml/SKILL.md → speccrew-knowledge-bizs-init-features/workflow.agentflow.xml} +7 -134
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/SKILL.md +5 -89
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/workflow.agentflow.xml +129 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/SKILL.md +454 -326
- package/.speccrew/skills/{speccrew-knowledge-bizs-ui-analyze-xml/SKILL.md → speccrew-knowledge-bizs-ui-analyze/workflow.agentflow.xml} +8 -128
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-graph/SKILL.md +302 -247
- package/.speccrew/skills/{speccrew-knowledge-bizs-ui-graph-xml/SKILL.md → speccrew-knowledge-bizs-ui-graph/workflow.agentflow.xml} +7 -199
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/SKILL.md +267 -156
- package/.speccrew/skills/{speccrew-knowledge-bizs-ui-style-extract-xml/SKILL.md → speccrew-knowledge-bizs-ui-style-extract/workflow.agentflow.xml} +7 -151
- package/.speccrew/skills/speccrew-knowledge-graph-query/SKILL.md +3 -122
- package/.speccrew/skills/speccrew-knowledge-graph-query/workflow.agentflow.xml +106 -0
- package/.speccrew/skills/speccrew-knowledge-graph-write/SKILL.md +3 -80
- package/.speccrew/skills/speccrew-knowledge-graph-write/workflow.agentflow.xml +152 -0
- package/.speccrew/skills/speccrew-knowledge-module-summarize/SKILL.md +371 -265
- package/.speccrew/skills/{speccrew-knowledge-module-summarize-xml/SKILL.md → speccrew-knowledge-module-summarize/workflow.agentflow.xml} +7 -197
- package/.speccrew/skills/speccrew-knowledge-system-summarize/SKILL.md +45 -333
- package/.speccrew/skills/{speccrew-knowledge-system-summarize-xml/SKILL.md → speccrew-knowledge-system-summarize/workflow.agentflow.xml} +0 -177
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/SKILL.md +174 -727
- package/.speccrew/skills/{speccrew-knowledge-techs-dispatch-xml/SKILL.md → speccrew-knowledge-techs-dispatch/workflow.agentflow.xml} +10 -351
- package/.speccrew/skills/speccrew-knowledge-techs-generate/SKILL.md +20 -150
- package/.speccrew/skills/{speccrew-knowledge-techs-generate-xml/SKILL.md → speccrew-knowledge-techs-generate/workflow.agentflow.xml} +0 -169
- package/.speccrew/skills/speccrew-knowledge-techs-generate-conventions/SKILL.md +75 -587
- package/.speccrew/skills/{speccrew-knowledge-techs-generate-conventions-xml/SKILL.md → speccrew-knowledge-techs-generate-conventions/workflow.agentflow.xml} +0 -153
- package/.speccrew/skills/speccrew-knowledge-techs-generate-quality/SKILL.md +463 -297
- package/.speccrew/skills/{speccrew-knowledge-techs-generate-quality-xml/SKILL.md → speccrew-knowledge-techs-generate-quality/workflow.agentflow.xml} +0 -164
- package/.speccrew/skills/speccrew-knowledge-techs-generate-ui-style/SKILL.md +57 -292
- package/.speccrew/skills/{speccrew-knowledge-techs-generate-ui-style-xml/SKILL.md → speccrew-knowledge-techs-generate-ui-style/workflow.agentflow.xml} +2 -193
- package/.speccrew/skills/speccrew-knowledge-techs-index/SKILL.md +49 -335
- package/.speccrew/skills/{speccrew-knowledge-techs-index-xml/SKILL.md → speccrew-knowledge-techs-index/workflow.agentflow.xml} +0 -167
- package/.speccrew/skills/speccrew-knowledge-techs-init/SKILL.md +28 -109
- package/.speccrew/skills/{speccrew-knowledge-techs-init-xml/SKILL.md → speccrew-knowledge-techs-init/workflow.agentflow.xml} +0 -189
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/SKILL.md +3 -487
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/workflow.agentflow.xml +278 -0
- package/.speccrew/skills/speccrew-pm-knowledge-detector/SKILL.md +3 -71
- package/.speccrew/skills/speccrew-pm-knowledge-detector/workflow.agentflow.xml +108 -0
- package/.speccrew/skills/speccrew-pm-module-initializer/SKILL.md +3 -107
- package/.speccrew/skills/speccrew-pm-module-initializer/workflow.agentflow.xml +139 -0
- package/.speccrew/skills/speccrew-pm-module-matcher/SKILL.md +3 -115
- package/.speccrew/skills/speccrew-pm-module-matcher/workflow.agentflow.xml +146 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/SKILL.md +3 -343
- package/.speccrew/skills/speccrew-pm-requirement-analysis/workflow.agentflow.xml +174 -0
- package/.speccrew/skills/speccrew-pm-requirement-assess/SKILL.md +3 -91
- package/.speccrew/skills/speccrew-pm-requirement-assess/workflow.agentflow.xml +173 -0
- package/.speccrew/skills/speccrew-pm-requirement-clarify/SKILL.md +3 -224
- package/.speccrew/skills/speccrew-pm-requirement-clarify/workflow.agentflow.xml +159 -0
- package/.speccrew/skills/speccrew-pm-requirement-model/SKILL.md +3 -275
- package/.speccrew/skills/speccrew-pm-requirement-model/workflow.agentflow.xml +210 -0
- package/.speccrew/skills/speccrew-pm-requirement-simple/SKILL.md +3 -76
- package/.speccrew/skills/speccrew-pm-requirement-simple/workflow.agentflow.xml +120 -0
- package/.speccrew/skills/speccrew-pm-sub-prd-generate/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-pm-sub-prd-generate/workflow.agentflow.xml +218 -0
- package/.speccrew/skills/speccrew-sd-backend/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-sd-backend/workflow.agentflow.xml +264 -0
- package/.speccrew/skills/speccrew-sd-desktop/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-sd-desktop/workflow.agentflow.xml +288 -0
- package/.speccrew/skills/speccrew-sd-framework-evaluate/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-sd-framework-evaluate/workflow.agentflow.xml +235 -0
- package/.speccrew/skills/speccrew-sd-frontend/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-sd-frontend/workflow.agentflow.xml +299 -0
- package/.speccrew/skills/speccrew-sd-mobile/SKILL.md +7 -1
- package/.speccrew/skills/speccrew-sd-mobile/workflow.agentflow.xml +301 -0
- package/.speccrew/skills/speccrew-test-case-design/SKILL.md +165 -284
- package/.speccrew/skills/speccrew-test-case-design/workflow.agentflow.xml +210 -0
- package/.speccrew/skills/speccrew-test-code-gen/SKILL.md +204 -324
- package/.speccrew/skills/speccrew-test-code-gen/workflow.agentflow.xml +265 -0
- package/.speccrew/skills/speccrew-test-reporter/SKILL.md +205 -184
- package/.speccrew/skills/speccrew-test-reporter/workflow.agentflow.xml +284 -0
- package/.speccrew/skills/speccrew-test-runner/SKILL.md +242 -241
- package/.speccrew/skills/speccrew-test-runner/workflow.agentflow.xml +314 -0
- package/bin/cli.js +8 -1
- package/lib/commands/validate.js +565 -0
- package/package.json +1 -1
- package/workspace-template/docs/rules/{xml-workflow-spec.md → agentflow-spec.md} +5 -5
- package/workspace-template/scripts/validate-agentflow.js +637 -0
- package/.speccrew/agents/speccrew-team-leader-xml.md +0 -480
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/STATUS-FORMATS.md +0 -99
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/batch-orchestrator.js +0 -176
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/get-next-batch.js +0 -150
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/get-pending-features.js +0 -106
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/mark-stale.js +0 -249
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/merge-features.js +0 -300
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/process-batch-results.js +0 -915
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/update-feature-status.js +0 -226
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/examples/features.json +0 -34
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/scripts/generate-inventory.js +0 -1071
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/scripts/test-inventory.js +0 -26
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/STATUS-FORMATS.md +0 -550
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<workflow id="dev-backend" status="pending" version="1.0" desc="Backend Development SOP - Guide System Developer Agent to implement backend code">
|
|
3
|
+
|
|
4
|
+
<!-- ============================================================
|
|
5
|
+
Input Parameters Definition
|
|
6
|
+
============================================================ -->
|
|
7
|
+
<block type="input" id="I1" desc="Workflow input parameters">
|
|
8
|
+
<field name="design_doc_path" required="true" type="string" desc="Path to a single module design document"/>
|
|
9
|
+
<field name="platform_id" required="true" type="string" desc="Platform identifier (e.g., backend-spring, backend-nodejs)"/>
|
|
10
|
+
<field name="task_id" required="true" type="string" desc="Task identifier from dispatch context"/>
|
|
11
|
+
<field name="iteration_id" required="false" type="string" desc="Current iteration identifier for progress messages"/>
|
|
12
|
+
<field name="output_dir" required="false" type="string" desc="Output directory for task record"/>
|
|
13
|
+
</block>
|
|
14
|
+
|
|
15
|
+
<!-- ============================================================
|
|
16
|
+
Global Constraints
|
|
17
|
+
============================================================ -->
|
|
18
|
+
<block type="rule" id="R1" level="forbidden" desc="Task Record document constraints">
|
|
19
|
+
<field name="text">NEVER use create_file to write the Task Record document</field>
|
|
20
|
+
<field name="text">MUST create Task Record by copying template then filling sections with search_replace</field>
|
|
21
|
+
<field name="text">NEVER replace the entire Task Record content in a single operation</field>
|
|
22
|
+
</block>
|
|
23
|
+
|
|
24
|
+
<block type="rule" id="R2" level="mandatory" desc="Template-first workflow">
|
|
25
|
+
<field name="text">Copy template MUST execute before fill sections</field>
|
|
26
|
+
<field name="text">Source code is NOT template-filled - write directly based on design blueprints</field>
|
|
27
|
+
</block>
|
|
28
|
+
|
|
29
|
+
<!-- ============================================================
|
|
30
|
+
Main Processing Sequence
|
|
31
|
+
============================================================ -->
|
|
32
|
+
<sequence id="S1" name="Backend Development" status="pending" desc="Execute backend development workflow">
|
|
33
|
+
|
|
34
|
+
<!-- Step 1: Read Design Documents -->
|
|
35
|
+
<block type="task" id="B1" action="read-file" desc="Read Module Design Document">
|
|
36
|
+
<field name="path" value="${design_doc_path}"/>
|
|
37
|
+
<field name="output" var="module_design"/>
|
|
38
|
+
</block>
|
|
39
|
+
|
|
40
|
+
<block type="task" id="B2" action="read-file" desc="Read Platform INDEX">
|
|
41
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/03.system-design/${platform_id}/INDEX.md</field>
|
|
42
|
+
<field name="output" var="platform_index"/>
|
|
43
|
+
</block>
|
|
44
|
+
|
|
45
|
+
<block type="task" id="B3" action="read-file" desc="Read API Contract">
|
|
46
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/02.feature-design/[feature-name]-api-contract.md</field>
|
|
47
|
+
<field name="output" var="api_contract"/>
|
|
48
|
+
</block>
|
|
49
|
+
|
|
50
|
+
<block type="task" id="B4" action="read-file" desc="Read Techs Knowledge - tech-stack">
|
|
51
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/tech-stack.md</field>
|
|
52
|
+
<field name="output" var="tech_stack"/>
|
|
53
|
+
</block>
|
|
54
|
+
|
|
55
|
+
<block type="task" id="B5" action="read-file" desc="Read Techs Knowledge - architecture">
|
|
56
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/architecture.md</field>
|
|
57
|
+
<field name="output" var="architecture"/>
|
|
58
|
+
</block>
|
|
59
|
+
|
|
60
|
+
<block type="task" id="B6" action="read-file" desc="Read Techs Knowledge - conventions-design">
|
|
61
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/conventions-design.md</field>
|
|
62
|
+
<field name="output" var="conventions_design"/>
|
|
63
|
+
</block>
|
|
64
|
+
|
|
65
|
+
<block type="task" id="B7" action="read-file" desc="Read Techs Knowledge - conventions-dev">
|
|
66
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/conventions-dev.md</field>
|
|
67
|
+
<field name="output" var="conventions_dev"/>
|
|
68
|
+
</block>
|
|
69
|
+
|
|
70
|
+
<block type="task" id="B8" action="read-file" desc="Read Techs Knowledge - conventions-data">
|
|
71
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/conventions-data.md</field>
|
|
72
|
+
<field name="output" var="conventions_data"/>
|
|
73
|
+
</block>
|
|
74
|
+
|
|
75
|
+
<block type="task" id="B9" action="read-file" desc="Read Task Record Template">
|
|
76
|
+
<field name="path">speccrew-dev-backend/templates/TASK-RECORD-TEMPLATE.md</field>
|
|
77
|
+
<field name="output" var="task_template"/>
|
|
78
|
+
</block>
|
|
79
|
+
|
|
80
|
+
<!-- Step 2: Create Task Record File -->
|
|
81
|
+
<block type="task" id="B10" action="create-file" desc="Copy template to Task Record path">
|
|
82
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/04.development/${platform_id}/[module]-task.md</field>
|
|
83
|
+
<field name="content">${task_template} with top-level placeholders replaced</field>
|
|
84
|
+
<field name="output" var="task_record_path"/>
|
|
85
|
+
</block>
|
|
86
|
+
|
|
87
|
+
<block type="task" id="B11" action="edit-file" desc="Fill Task Record sections using search_replace">
|
|
88
|
+
<field name="path" value="${task_record_path}"/>
|
|
89
|
+
<field name="action">Fill each section with design metadata</field>
|
|
90
|
+
<field name="output" var="task_record_filled"/>
|
|
91
|
+
</block>
|
|
92
|
+
|
|
93
|
+
<!-- Step 3: Extract Task List -->
|
|
94
|
+
<block type="task" id="B12" action="analyze" desc="Extract task list from design documents">
|
|
95
|
+
<field name="input" value="${module_design}"/>
|
|
96
|
+
<field name="extraction_rules">
|
|
97
|
+
- Entity/Model tasks: entity/, model/, domain/ directories
|
|
98
|
+
- Repository/DAO tasks: repository/, dao/, mapper/ directories
|
|
99
|
+
- Service tasks: service/, manager/, handler/ directories
|
|
100
|
+
- Controller/API tasks: controller/, router/, api/ directories
|
|
101
|
+
- Database Migration tasks: db/migration/, migrations/ directories
|
|
102
|
+
- API Configuration tasks: config/, routes/ directories
|
|
103
|
+
- Middleware/Interceptor tasks: middleware/, interceptor/ directories
|
|
104
|
+
</field>
|
|
105
|
+
<field name="output" var="task_list"/>
|
|
106
|
+
</block>
|
|
107
|
+
|
|
108
|
+
<!-- Checkpoint: Task list extracted -->
|
|
109
|
+
<block type="checkpoint" id="CP1" name="task-list-extracted" desc="Verify task list extracted">
|
|
110
|
+
<field name="verify" value="${task_list.length} > 0"/>
|
|
111
|
+
</block>
|
|
112
|
+
|
|
113
|
+
<!-- Step 4: Task-by-Task Implementation -->
|
|
114
|
+
<block type="loop" id="L1" over="${task_list}" as="task" desc="Execute tasks in dependency order">
|
|
115
|
+
<block type="task" id="B13" action="edit-file" desc="Mark task as In Progress">
|
|
116
|
+
<field name="path" value="${task_record_path}"/>
|
|
117
|
+
<field name="action">Update task status to 🔄 In Progress</field>
|
|
118
|
+
</block>
|
|
119
|
+
|
|
120
|
+
<block type="task" id="B14" action="generate" desc="Implement the code following design specification">
|
|
121
|
+
<field name="task" value="${task}"/>
|
|
122
|
+
<field name="design" value="${module_design}"/>
|
|
123
|
+
<field name="conventions" value="${conventions_dev}, ${conventions_data}"/>
|
|
124
|
+
<field name="output" var="implementation_result"/>
|
|
125
|
+
</block>
|
|
126
|
+
|
|
127
|
+
<!-- Step 6: Local Checks (embedded in loop) -->
|
|
128
|
+
<block type="task" id="B15" action="run-script" desc="Run local quality checks">
|
|
129
|
+
<field name="command">Run compile, lint, unit tests, API smoke test as applicable</field>
|
|
130
|
+
<field name="output" var="check_result"/>
|
|
131
|
+
</block>
|
|
132
|
+
|
|
133
|
+
<block type="gateway" id="G1" mode="guard" desc="Verify checks passed"
|
|
134
|
+
test="${check_result.status} == 'passed'"
|
|
135
|
+
fail-action="stop">
|
|
136
|
+
<field name="message">Local checks failed for task ${task.id}</field>
|
|
137
|
+
</block>
|
|
138
|
+
|
|
139
|
+
<block type="task" id="B16" action="edit-file" desc="Update status to Complete">
|
|
140
|
+
<field name="path" value="${task_record_path}"/>
|
|
141
|
+
<field name="action">Update task status to ✅ Complete</field>
|
|
142
|
+
</block>
|
|
143
|
+
</block>
|
|
144
|
+
|
|
145
|
+
<!-- Step 5: Database Migration Verification (conditional) -->
|
|
146
|
+
<block type="gateway" id="G2" mode="exclusive" desc="Check if migration tasks exist">
|
|
147
|
+
<branch test="${task_list.has_migration_tasks} == true" name="Has Migrations">
|
|
148
|
+
<block type="task" id="B17" action="analyze" desc="Verify Migration Scripts">
|
|
149
|
+
<field name="checks">
|
|
150
|
+
- Check script existence at specified paths
|
|
151
|
+
- Check naming convention follows conventions-data.md
|
|
152
|
+
- Check script content matches Table Schema in design
|
|
153
|
+
</field>
|
|
154
|
+
<field name="output" var="migration_verification"/>
|
|
155
|
+
</block>
|
|
156
|
+
|
|
157
|
+
<block type="task" id="B18" action="analyze" desc="Verify Migration Order">
|
|
158
|
+
<field name="checks">
|
|
159
|
+
- Check dependency order (referenced table before foreign key)
|
|
160
|
+
- Check version sequence has no gaps
|
|
161
|
+
</field>
|
|
162
|
+
<field name="output" var="migration_order"/>
|
|
163
|
+
</block>
|
|
164
|
+
|
|
165
|
+
<block type="task" id="B19" action="edit-file" desc="Add Migration Summary to task record">
|
|
166
|
+
<field name="path" value="${task_record_path}"/>
|
|
167
|
+
<field name="action">Add migration summary table</field>
|
|
168
|
+
</block>
|
|
169
|
+
</branch>
|
|
170
|
+
<branch default="true" name="No Migrations">
|
|
171
|
+
<block type="event" id="E1" action="log" level="info" desc="No migration tasks">
|
|
172
|
+
<field name="message">No database migration tasks in this module</field>
|
|
173
|
+
</block>
|
|
174
|
+
</branch>
|
|
175
|
+
</block>
|
|
176
|
+
|
|
177
|
+
<!-- Step 7: Record Deviations -->
|
|
178
|
+
<block type="gateway" id="G3" mode="exclusive" desc="Check if deviations exist">
|
|
179
|
+
<branch test="${deviations.length} > 0" name="Has Deviations">
|
|
180
|
+
<block type="task" id="B20" action="edit-file" desc="Record deviations in task file">
|
|
181
|
+
<field name="path" value="${task_record_path}"/>
|
|
182
|
+
<field name="action">Add Deviation Log section with task ID, design spec, actual implementation, reason</field>
|
|
183
|
+
</block>
|
|
184
|
+
</branch>
|
|
185
|
+
<branch default="true" name="No Deviations">
|
|
186
|
+
<block type="event" id="E2" action="log" level="info" desc="No deviations">
|
|
187
|
+
<field name="message">No deviations from design</field>
|
|
188
|
+
</block>
|
|
189
|
+
</branch>
|
|
190
|
+
</block>
|
|
191
|
+
|
|
192
|
+
<!-- Step 8: Handle Technical Debt -->
|
|
193
|
+
<block type="gateway" id="G4" mode="exclusive" desc="Check if technical debt exists">
|
|
194
|
+
<branch test="${tech_debt.length} > 0" name="Has Tech Debt">
|
|
195
|
+
<block type="task" id="B21" action="create-file" desc="Write technical debt document">
|
|
196
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/tech-debt/[module]-tech-debt.md</field>
|
|
197
|
+
<field name="content">${tech_debt} using unified template</field>
|
|
198
|
+
<field name="output" var="tech_debt_path"/>
|
|
199
|
+
</block>
|
|
200
|
+
</branch>
|
|
201
|
+
<branch default="true" name="No Tech Debt">
|
|
202
|
+
<block type="event" id="E3" action="log" level="info" desc="No tech debt">
|
|
203
|
+
<field name="message">No technical debt identified</field>
|
|
204
|
+
</block>
|
|
205
|
+
</branch>
|
|
206
|
+
</block>
|
|
207
|
+
|
|
208
|
+
<!-- Step 9: Completion Notification -->
|
|
209
|
+
<block type="task" id="B22" action="edit-file" desc="Update task record final status">
|
|
210
|
+
<field name="path" value="${task_record_path}"/>
|
|
211
|
+
<field name="action">Update final statuses for all tasks</field>
|
|
212
|
+
</block>
|
|
213
|
+
|
|
214
|
+
<block type="task" id="B23" action="report" desc="Generate completion notification">
|
|
215
|
+
<field name="template">
|
|
216
|
+
Backend Development Complete: {module-name}
|
|
217
|
+
Platform: {platform_id}
|
|
218
|
+
|
|
219
|
+
Tasks Completed: {X}
|
|
220
|
+
├── ✅ Complete: {count}
|
|
221
|
+
├── 🚫 Blocked: {count}
|
|
222
|
+
└── Deviations: {count}
|
|
223
|
+
|
|
224
|
+
API Endpoints:
|
|
225
|
+
├── Implemented: {count} endpoints
|
|
226
|
+
└── Status: See task record for details
|
|
227
|
+
|
|
228
|
+
Database Changes:
|
|
229
|
+
├── New Tables: {count}
|
|
230
|
+
├── Modified Tables: {count}
|
|
231
|
+
└── Migrations: {count}
|
|
232
|
+
|
|
233
|
+
Technical Debt: {count} items (see tech-debt/)
|
|
234
|
+
Task Record: speccrew-workspace/iterations/{number}-{type}-{name}/04.development/{platform_id}/[module]-task.md
|
|
235
|
+
|
|
236
|
+
Ready for testing phase.
|
|
237
|
+
</field>
|
|
238
|
+
<field name="output" var="completion_report"/>
|
|
239
|
+
</block>
|
|
240
|
+
|
|
241
|
+
</sequence>
|
|
242
|
+
|
|
243
|
+
<!-- ============================================================
|
|
244
|
+
Output Results
|
|
245
|
+
============================================================ -->
|
|
246
|
+
<block type="output" id="O1" desc="Workflow output results">
|
|
247
|
+
<field name="task_record_path" value="${task_record_path}" type="string" desc="Path to task record document"/>
|
|
248
|
+
<field name="task_count" from="${task_list.length}" type="number" desc="Number of tasks completed"/>
|
|
249
|
+
<field name="deviation_count" type="number" desc="Number of deviations recorded"/>
|
|
250
|
+
<field name="tech_debt_count" type="number" desc="Number of tech debt items"/>
|
|
251
|
+
<field name="completion_report" value="${completion_report}" type="string" desc="Completion notification text"/>
|
|
252
|
+
</block>
|
|
253
|
+
|
|
254
|
+
</workflow>
|
|
@@ -10,9 +10,17 @@ tools: Read, Write, Glob, Grep, Bash
|
|
|
10
10
|
- User asks "Start Electron development", "Implement Electron app"
|
|
11
11
|
- Design documents confirmed in `03.system-design/{platform_id}/`
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## AgentFlow Definition
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
<!-- @agentflow: workflow.agentflow.xml -->
|
|
16
|
+
|
|
17
|
+
> **REQUIRED**: Before executing this workflow, read the XML workflow specification: `speccrew-workspace/docs/rules/agentflow-spec.md`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
### Absolute Constraints
|
|
16
24
|
|
|
17
25
|
> **These rules apply to Task Record document generation. Violation = task failure.**
|
|
18
26
|
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<workflow id="dev-desktop-electron" status="pending" version="1.0" desc="Electron Desktop Development - Implements desktop application features using Electron framework">
|
|
3
|
+
|
|
4
|
+
<!-- ============================================================
|
|
5
|
+
Input Parameters Definition
|
|
6
|
+
============================================================ -->
|
|
7
|
+
<block type="input" id="I1" desc="Workflow input parameters">
|
|
8
|
+
<field name="design_doc_path" required="true" type="string" desc="Path to single module design document"/>
|
|
9
|
+
<field name="platform_id" required="true" type="string" desc="Desktop platform identifier (desktop-electron)"/>
|
|
10
|
+
<field name="task_id" required="true" type="string" desc="Task identifier from dispatch context"/>
|
|
11
|
+
<field name="source_root" required="true" type="string" desc="Root directory of Electron source code"/>
|
|
12
|
+
</block>
|
|
13
|
+
|
|
14
|
+
<!-- ============================================================
|
|
15
|
+
Global Constraints
|
|
16
|
+
============================================================ -->
|
|
17
|
+
<block type="rule" id="R1" level="forbidden" desc="Task Record document constraints">
|
|
18
|
+
<field name="text">NEVER use create_file or full-content overwrite for Task Record after Step 3.1a</field>
|
|
19
|
+
<field name="text">All subsequent updates MUST use targeted search_replace on specific sections</field>
|
|
20
|
+
</block>
|
|
21
|
+
|
|
22
|
+
<block type="rule" id="R2" level="mandatory" desc="Template-first workflow">
|
|
23
|
+
<field name="text">Copy template MUST execute before fill sections</field>
|
|
24
|
+
<field name="text">Source code is NOT template-filled - write directly based on design blueprints</field>
|
|
25
|
+
</block>
|
|
26
|
+
|
|
27
|
+
<block type="rule" id="R3" level="mandatory" desc="Security requirements">
|
|
28
|
+
<field name="text">Never disable contextIsolation</field>
|
|
29
|
+
<field name="text">Never enable nodeIntegration in renderer</field>
|
|
30
|
+
<field name="text">All main-renderer communication must go through preload scripts</field>
|
|
31
|
+
</block>
|
|
32
|
+
|
|
33
|
+
<!-- ============================================================
|
|
34
|
+
Main Processing Sequence
|
|
35
|
+
============================================================ -->
|
|
36
|
+
<sequence id="S1" name="Electron Desktop Development" status="pending" desc="Execute Electron development workflow">
|
|
37
|
+
|
|
38
|
+
<!-- Step 1: Read Design Documents -->
|
|
39
|
+
<block type="task" id="B1" action="read-file" desc="Read Module Design Document">
|
|
40
|
+
<field name="path" value="${design_doc_path}"/>
|
|
41
|
+
<field name="output" var="module_design"/>
|
|
42
|
+
</block>
|
|
43
|
+
|
|
44
|
+
<block type="task" id="B2" action="read-file" desc="Read API Contract">
|
|
45
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/02.feature-design/[feature-name]-api-contract.md</field>
|
|
46
|
+
<field name="output" var="api_contract"/>
|
|
47
|
+
</block>
|
|
48
|
+
|
|
49
|
+
<block type="task" id="B3" action="read-file" desc="Read Techs Knowledge - tech-stack">
|
|
50
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/tech-stack.md</field>
|
|
51
|
+
<field name="output" var="tech_stack"/>
|
|
52
|
+
</block>
|
|
53
|
+
|
|
54
|
+
<block type="task" id="B4" action="read-file" desc="Read Techs Knowledge - architecture">
|
|
55
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/architecture.md</field>
|
|
56
|
+
<field name="output" var="architecture"/>
|
|
57
|
+
</block>
|
|
58
|
+
|
|
59
|
+
<block type="task" id="B5" action="read-file" desc="Read Techs Knowledge - conventions-design">
|
|
60
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/conventions-design.md</field>
|
|
61
|
+
<field name="output" var="conventions_design"/>
|
|
62
|
+
</block>
|
|
63
|
+
|
|
64
|
+
<block type="task" id="B6" action="read-file" desc="Read Techs Knowledge - conventions-dev">
|
|
65
|
+
<field name="path">speccrew-workspace/knowledges/techs/${platform_id}/conventions-dev.md</field>
|
|
66
|
+
<field name="output" var="conventions_dev"/>
|
|
67
|
+
</block>
|
|
68
|
+
|
|
69
|
+
<!-- Step 2: Analyze Existing Code Structure -->
|
|
70
|
+
<block type="task" id="B7" action="analyze" desc="Analyze existing Electron codebase structure">
|
|
71
|
+
<field name="patterns">
|
|
72
|
+
- Main process: src/main/**/*.{ts,js}
|
|
73
|
+
- Renderer process: src/renderer/**/*.{tsx,vue,html}
|
|
74
|
+
- IPC definitions: src/main/ipc/**/*
|
|
75
|
+
- Window management: src/main/window/**/*
|
|
76
|
+
- Preload scripts: src/preload/**/* or preload.{ts,js}
|
|
77
|
+
- Native modules: src/main/native/**/*
|
|
78
|
+
- State management: src/renderer/stores/**/*
|
|
79
|
+
- API layer: src/renderer/apis/**/*
|
|
80
|
+
- Configuration: package.json, electron-builder.yml
|
|
81
|
+
</field>
|
|
82
|
+
<field name="output" var="codebase_structure"/>
|
|
83
|
+
</block>
|
|
84
|
+
|
|
85
|
+
<!-- Step 3: Extract Task List and Create Task Record -->
|
|
86
|
+
<block type="task" id="B8" action="read-file" desc="Read Task Record Template">
|
|
87
|
+
<field name="path">templates/TASK-RECORD-TEMPLATE.md</field>
|
|
88
|
+
<field name="output" var="task_template"/>
|
|
89
|
+
</block>
|
|
90
|
+
|
|
91
|
+
<block type="task" id="B9" action="create-file" desc="Copy template to Task Record path">
|
|
92
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/04.development/${platform_id}/[feature-name]-task.md</field>
|
|
93
|
+
<field name="content">${task_template} with top-level placeholders replaced</field>
|
|
94
|
+
<field name="output" var="task_record_path"/>
|
|
95
|
+
</block>
|
|
96
|
+
|
|
97
|
+
<block type="task" id="B10" action="edit-file" desc="Fill Task Record sections using search_replace">
|
|
98
|
+
<field name="path" value="${task_record_path}"/>
|
|
99
|
+
<field name="action">Fill each section with task checklist and design metadata</field>
|
|
100
|
+
<field name="output" var="task_record_filled"/>
|
|
101
|
+
</block>
|
|
102
|
+
|
|
103
|
+
<!-- Extract Electron-specific task types -->
|
|
104
|
+
<block type="task" id="B11" action="analyze" desc="Extract Electron-specific task list">
|
|
105
|
+
<field name="input" value="${module_design}"/>
|
|
106
|
+
<field name="extraction_rules">
|
|
107
|
+
- Main Process Module: Backend logic in main process
|
|
108
|
+
- Renderer Page/Component: UI components in renderer
|
|
109
|
+
- IPC Channel Handler: Communication bridge between processes
|
|
110
|
+
- Preload Script: Context bridge for secure renderer access
|
|
111
|
+
- Window Management: Window creation and lifecycle
|
|
112
|
+
- Native Integration: File system, system tray, notifications
|
|
113
|
+
- Menu/Shortcut: Application menus, keyboard shortcuts
|
|
114
|
+
- Auto-Update: Update checking and installation
|
|
115
|
+
- Security Hardening: Context isolation, CSP, permissions
|
|
116
|
+
</field>
|
|
117
|
+
<field name="output" var="task_list"/>
|
|
118
|
+
</block>
|
|
119
|
+
|
|
120
|
+
<!-- Checkpoint: Task list extracted -->
|
|
121
|
+
<block type="checkpoint" id="CP1" name="task-list-extracted" desc="Verify task list extracted">
|
|
122
|
+
<field name="verify" value="${task_list.length} > 0"/>
|
|
123
|
+
</block>
|
|
124
|
+
|
|
125
|
+
<!-- Step 4: Implement Tasks -->
|
|
126
|
+
<block type="loop" id="L1" over="${task_list}" as="task" desc="Execute tasks in dependency order">
|
|
127
|
+
<block type="task" id="B12" action="edit-file" desc="Mark task as In Progress">
|
|
128
|
+
<field name="path" value="${task_record_path}"/>
|
|
129
|
+
<field name="action">Update task status to In Progress</field>
|
|
130
|
+
</block>
|
|
131
|
+
|
|
132
|
+
<block type="task" id="B13" action="generate" desc="Implement task following Electron patterns">
|
|
133
|
+
<field name="task" value="${task}"/>
|
|
134
|
+
<field name="design" value="${module_design}"/>
|
|
135
|
+
<field name="conventions" value="${conventions_dev}"/>
|
|
136
|
+
<field name="codebase" value="${codebase_structure}"/>
|
|
137
|
+
<field name="output" var="implementation_result"/>
|
|
138
|
+
</block>
|
|
139
|
+
|
|
140
|
+
<!-- Step 5: Local Checks (embedded in loop) -->
|
|
141
|
+
<block type="task" id="B14" action="run-script" desc="Build verification">
|
|
142
|
+
<field name="command">npm run build:dev OR npm run electron:dev</field>
|
|
143
|
+
<field name="output" var="build_result"/>
|
|
144
|
+
</block>
|
|
145
|
+
|
|
146
|
+
<block type="task" id="B15" action="run-script" desc="Lint check">
|
|
147
|
+
<field name="command">npm run lint OR npx eslint [modified-files]</field>
|
|
148
|
+
<field name="output" var="lint_result"/>
|
|
149
|
+
</block>
|
|
150
|
+
|
|
151
|
+
<block type="task" id="B16" action="run-script" desc="Type check">
|
|
152
|
+
<field name="command">npx tsc --noEmit</field>
|
|
153
|
+
<field name="output" var="type_result"/>
|
|
154
|
+
</block>
|
|
155
|
+
|
|
156
|
+
<block type="task" id="B17" action="analyze" desc="Security audit">
|
|
157
|
+
<field name="checks">
|
|
158
|
+
- Context Isolation: Verify contextIsolation: true in window config
|
|
159
|
+
- nodeIntegration: Verify nodeIntegration: false
|
|
160
|
+
- Preload Script: Verify all IPC goes through preload
|
|
161
|
+
- CSP: Check Content Security Policy headers
|
|
162
|
+
</field>
|
|
163
|
+
<field name="output" var="security_result"/>
|
|
164
|
+
</block>
|
|
165
|
+
|
|
166
|
+
<block type="task" id="B18" action="run-script" desc="Unit tests">
|
|
167
|
+
<field name="command">npm test -- [related-test-pattern]</field>
|
|
168
|
+
<field name="output" var="test_result"/>
|
|
169
|
+
</block>
|
|
170
|
+
|
|
171
|
+
<block type="task" id="B19" action="analyze" desc="Quick verify">
|
|
172
|
+
<field name="checks">
|
|
173
|
+
- Application window launches without crash
|
|
174
|
+
- No console errors in DevTools
|
|
175
|
+
- IPC channels respond correctly
|
|
176
|
+
- Native integrations work as expected
|
|
177
|
+
</field>
|
|
178
|
+
<field name="output" var="verify_result"/>
|
|
179
|
+
</block>
|
|
180
|
+
|
|
181
|
+
<block type="gateway" id="G1" mode="guard" desc="Verify all checks passed"
|
|
182
|
+
test="${build_result.status} == 'passed' AND ${lint_result.status} == 'passed' AND ${type_result.status} == 'passed'"
|
|
183
|
+
fail-action="stop">
|
|
184
|
+
<field name="message">Local checks failed for task ${task.id}</field>
|
|
185
|
+
</block>
|
|
186
|
+
|
|
187
|
+
<block type="task" id="B20" action="edit-file" desc="Update status to Completed">
|
|
188
|
+
<field name="path" value="${task_record_path}"/>
|
|
189
|
+
<field name="action">Update task status to Completed</field>
|
|
190
|
+
</block>
|
|
191
|
+
</block>
|
|
192
|
+
|
|
193
|
+
<!-- Step 6: Record Deviations -->
|
|
194
|
+
<block type="gateway" id="G2" mode="exclusive" desc="Check if deviations exist">
|
|
195
|
+
<branch test="${deviations.length} > 0" name="Has Deviations">
|
|
196
|
+
<block type="task" id="B21" action="edit-file" desc="Record deviations in task file">
|
|
197
|
+
<field name="path" value="${task_record_path}"/>
|
|
198
|
+
<field name="action">Add Deviation Log section with EL-XXX prefix</field>
|
|
199
|
+
</block>
|
|
200
|
+
</branch>
|
|
201
|
+
<branch default="true" name="No Deviations">
|
|
202
|
+
<block type="event" id="E1" action="log" level="info" desc="No deviations">
|
|
203
|
+
<field name="message">No deviations from design</field>
|
|
204
|
+
</block>
|
|
205
|
+
</branch>
|
|
206
|
+
</block>
|
|
207
|
+
|
|
208
|
+
<!-- Step 7: Record Technical Debt -->
|
|
209
|
+
<block type="gateway" id="G3" mode="exclusive" desc="Check if technical debt exists">
|
|
210
|
+
<branch test="${tech_debt.length} > 0" name="Has Tech Debt">
|
|
211
|
+
<block type="task" id="B22" action="create-file" desc="Write technical debt document">
|
|
212
|
+
<field name="path">speccrew-workspace/iterations/{number}-{type}-{name}/tech-debt/[feature-name]-tech-debt.md</field>
|
|
213
|
+
<field name="content">${tech_debt} with categories: Security, Performance, Refactoring, Dependencies</field>
|
|
214
|
+
<field name="output" var="tech_debt_path"/>
|
|
215
|
+
</block>
|
|
216
|
+
</branch>
|
|
217
|
+
<branch default="true" name="No Tech Debt">
|
|
218
|
+
<block type="event" id="E2" action="log" level="info" desc="No tech debt">
|
|
219
|
+
<field name="message">No technical debt identified</field>
|
|
220
|
+
</block>
|
|
221
|
+
</branch>
|
|
222
|
+
</block>
|
|
223
|
+
|
|
224
|
+
<!-- Step 8: Complete Notification -->
|
|
225
|
+
<block type="task" id="B23" action="report" desc="Generate completion summary">
|
|
226
|
+
<field name="template">
|
|
227
|
+
Electron Development Complete: {feature-name}
|
|
228
|
+
Platform: {platform_id}
|
|
229
|
+
Framework: Electron
|
|
230
|
+
|
|
231
|
+
Tasks Completed: {count}
|
|
232
|
+
├── Main Process: {count}
|
|
233
|
+
├── Renderer Process: {count}
|
|
234
|
+
├── IPC Channels: {count}
|
|
235
|
+
├── Native Integration: {count}
|
|
236
|
+
└── Security/Other: {count}
|
|
237
|
+
|
|
238
|
+
Deviations Recorded: {count}
|
|
239
|
+
Technical Debt Items: {count}
|
|
240
|
+
|
|
241
|
+
Task Record: speccrew-workspace/iterations/{number}-{type}-{name}/04.development/{platform_id}/[feature-name]-task.md
|
|
242
|
+
</field>
|
|
243
|
+
<field name="output" var="completion_report"/>
|
|
244
|
+
</block>
|
|
245
|
+
|
|
246
|
+
</sequence>
|
|
247
|
+
|
|
248
|
+
<!-- ============================================================
|
|
249
|
+
Output Results
|
|
250
|
+
============================================================ -->
|
|
251
|
+
<block type="output" id="O1" desc="Workflow output results">
|
|
252
|
+
<field name="task_record_path" value="${task_record_path}" type="string" desc="Path to task record document"/>
|
|
253
|
+
<field name="task_count" from="${task_list.length}" type="number" desc="Number of tasks completed"/>
|
|
254
|
+
<field name="deviation_count" type="number" desc="Number of deviations recorded"/>
|
|
255
|
+
<field name="tech_debt_count" type="number" desc="Number of tech debt items"/>
|
|
256
|
+
<field name="completion_report" value="${completion_report}" type="string" desc="Completion notification text"/>
|
|
257
|
+
</block>
|
|
258
|
+
|
|
259
|
+
</workflow>
|
|
@@ -10,9 +10,17 @@ tools: Read, Write, Glob, Grep, Bash
|
|
|
10
10
|
- User asks "Start Tauri development", "Implement Tauri app"
|
|
11
11
|
- Design documents confirmed in `03.system-design/{platform_id}/`
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
## AgentFlow Definition
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
<!-- @agentflow: workflow.agentflow.xml -->
|
|
16
|
+
|
|
17
|
+
> **REQUIRED**: Before executing this workflow, read the XML workflow specification: `speccrew-workspace/docs/rules/agentflow-spec.md`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
### Absolute Constraints
|
|
16
24
|
|
|
17
25
|
> **These rules apply to Task Record document generation. Violation = task failure.**
|
|
18
26
|
|