speccrew 0.1.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-feature-designer.md +142 -0
- package/.speccrew/agents/speccrew-product-manager.md +61 -0
- package/.speccrew/agents/speccrew-system-designer.md +200 -0
- package/.speccrew/agents/speccrew-system-developer.md +238 -0
- package/.speccrew/agents/speccrew-task-worker.md +80 -0
- package/.speccrew/agents/speccrew-team-leader.md +92 -0
- package/.speccrew/agents/speccrew-test-manager.md +313 -0
- package/.speccrew/skills/speccrew-create-agents/SKILL.md +98 -0
- package/.speccrew/skills/speccrew-create-agents/templates/agents/designer-agent.md +54 -0
- package/.speccrew/skills/speccrew-create-agents/templates/agents/dev-agent.md +79 -0
- package/.speccrew/skills/speccrew-create-agents/templates/agents/test-agent.md +80 -0
- package/.speccrew/skills/speccrew-dev-backend/SKILL.md +205 -0
- package/.speccrew/skills/speccrew-dev-backend/templates/TASK-RECORD-TEMPLATE.md +118 -0
- package/.speccrew/skills/speccrew-dev-desktop/SKILL.md +258 -0
- package/.speccrew/skills/speccrew-dev-desktop/templates/TASK-RECORD-TEMPLATE.md +161 -0
- package/.speccrew/skills/speccrew-dev-frontend/SKILL.md +202 -0
- package/.speccrew/skills/speccrew-dev-frontend/templates/TASK-RECORD-TEMPLATE.md +115 -0
- package/.speccrew/skills/speccrew-dev-mobile/SKILL.md +200 -0
- package/.speccrew/skills/speccrew-dev-mobile/templates/TASK-RECORD-TEMPLATE.md +125 -0
- package/.speccrew/skills/speccrew-fd-api-contract/SKILL.md +73 -0
- package/.speccrew/skills/speccrew-fd-api-contract/templates/API-CONTRACT-TEMPLATE.md +96 -0
- package/.speccrew/skills/speccrew-fd-feature-design/SKILL.md +395 -0
- package/.speccrew/skills/speccrew-fd-feature-design/templates/FEATURE-SPEC-TEMPLATE.md +387 -0
- package/.speccrew/skills/speccrew-get-timestamp/SKILL.md +80 -0
- package/.speccrew/skills/speccrew-get-timestamp/scripts/get-timestamp.js +35 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/SKILL.md +1116 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-FASTAPI.md +462 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-JAVA.md +480 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE-NET.md +464 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/FEATURE-DETAIL-TEMPLATE.md +480 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-api-analyze/templates/MODULE-OVERVIEW-TEMPLATE.md +367 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/SKILL.md +667 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/STATUS-FORMATS.md +74 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/batch-orchestrator.js +176 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/get-next-batch.js +150 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/get-pending-features.js +106 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/mark-stale.js +249 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/process-batch-results.js +848 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-dispatch/scripts/update-feature-status.js +226 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/SKILL.md +264 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/examples/features.json +34 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/scripts/generate-inventory.js +867 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-init-features/scripts/test-inventory.js +26 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/SKILL.md +165 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/scripts/apply-module-mapping.js +208 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/scripts/extract-module-summary.js +180 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-module-classify/scripts/reindex-modules.js +358 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/SKILL.md +1055 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-DESKTOP.md +303 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-ELECTRON.md +327 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MINIAPP.md +292 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI-MOBILE.md +281 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-analyze/templates/FEATURE-DETAIL-TEMPLATE-UI.md +324 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/SKILL.md +270 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/templates/COMPONENT-PATTERN-TEMPLATE.md +33 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/templates/LAYOUT-PATTERN-TEMPLATE.md +33 -0
- package/.speccrew/skills/speccrew-knowledge-bizs-ui-style-extract/templates/PAGE-TYPE-TEMPLATE.md +33 -0
- package/.speccrew/skills/speccrew-knowledge-graph-query/SKILL.md +229 -0
- package/.speccrew/skills/speccrew-knowledge-graph-query/scripts/graph-query.js +549 -0
- package/.speccrew/skills/speccrew-knowledge-graph-write/SKILL.md +181 -0
- package/.speccrew/skills/speccrew-knowledge-graph-write/scripts/graph-write.js +651 -0
- package/.speccrew/skills/speccrew-knowledge-module-summarize/SKILL.md +305 -0
- package/.speccrew/skills/speccrew-knowledge-module-summarize/templates/MODULE-OVERVIEW-TEMPLATE.md +400 -0
- package/.speccrew/skills/speccrew-knowledge-system-summarize/SKILL.md +351 -0
- package/.speccrew/skills/speccrew-knowledge-system-summarize/templates/SYSTEM-OVERVIEW-TEMPLATE.md +294 -0
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/SKILL.md +683 -0
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/STATUS-FORMATS.md +550 -0
- package/.speccrew/skills/speccrew-knowledge-techs-dispatch/templates/techs-manifest-EXAMPLE.json +35 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/SKILL.md +1087 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/ARCHITECTURE-TEMPLATE.md +240 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/COLOR-SYSTEM-TEMPLATE.md +68 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/COMPONENT-LIBRARY-TEMPLATE.md +86 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-BUILD-TEMPLATE.md +466 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-DATA-TEMPLATE.md +432 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-DESIGN-TEMPLATE.md +1209 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-DEV-TEMPLATE.md +1433 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-SYSTEM-TEST-TEMPLATE.md +1052 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/CONVENTIONS-UNIT-TEST-TEMPLATE.md +946 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/INDEX-TEMPLATE.md +29 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/PAGE-LAYOUTS-TEMPLATE.md +69 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/PAGE-TYPE-SUMMARY-TEMPLATE.md +74 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate/templates/TECH-STACK-TEMPLATE.md +232 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate-conventions/SKILL.md +628 -0
- package/.speccrew/skills/speccrew-knowledge-techs-generate-ui-style/SKILL.md +392 -0
- package/.speccrew/skills/speccrew-knowledge-techs-index/SKILL.md +489 -0
- package/.speccrew/skills/speccrew-knowledge-techs-index/templates/INDEX-TEMPLATE.md +243 -0
- package/.speccrew/skills/speccrew-knowledge-techs-init/SKILL.md +269 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/SKILL.md +562 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/BUSINESS-COMPONENTS-TEMPLATE.md +171 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/COMMON-COMPONENTS-TEMPLATE.md +177 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/COMPONENT-INDIVIDUAL-TEMPLATE.md +80 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/COMPONENT-LIBRARY-TEMPLATE.md +118 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/LAYOUT-INDIVIDUAL-TEMPLATE.md +97 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/LAYOUT-PATTERNS-TEMPLATE.md +208 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/NAVIGATION-PATTERNS-TEMPLATE.md +157 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/PAGE-TYPE-INDIVIDUAL-TEMPLATE.md +123 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/PAGE-TYPE-SUMMARY-TEMPLATE.md +58 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/SPACING-TEMPLATE.md +119 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/STYLE-SYSTEM-TEMPLATE.md +117 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/TYPOGRAPHY-TEMPLATE.md +107 -0
- package/.speccrew/skills/speccrew-knowledge-techs-ui-analyze/templates/UI-STYLE-GUIDE-TEMPLATE.md +171 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/SKILL.md +434 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/templates/BIZS-MODELING-TEMPLATE.md +332 -0
- package/.speccrew/skills/speccrew-pm-requirement-analysis/templates/PRD-TEMPLATE.md +200 -0
- package/.speccrew/skills/speccrew-pm-requirement-assess/SKILL.md +195 -0
- package/.speccrew/skills/speccrew-project-diagnosis/SKILL.md +208 -0
- package/.speccrew/skills/speccrew-project-diagnosis/templates/DIAGNOSIS-REPORT-TEMPLATE.md +202 -0
- package/.speccrew/skills/speccrew-sd-backend/SKILL.md +188 -0
- package/.speccrew/skills/speccrew-sd-backend/templates/INDEX-TEMPLATE.md +85 -0
- package/.speccrew/skills/speccrew-sd-backend/templates/SD-BACKEND-TEMPLATE.md +269 -0
- package/.speccrew/skills/speccrew-sd-desktop/SKILL.md +192 -0
- package/.speccrew/skills/speccrew-sd-desktop/templates/INDEX-TEMPLATE.md +271 -0
- package/.speccrew/skills/speccrew-sd-desktop/templates/SD-DESKTOP-TEMPLATE.md +673 -0
- package/.speccrew/skills/speccrew-sd-frontend/SKILL.md +176 -0
- package/.speccrew/skills/speccrew-sd-frontend/templates/INDEX-TEMPLATE.md +184 -0
- package/.speccrew/skills/speccrew-sd-frontend/templates/SD-FRONTEND-TEMPLATE.md +382 -0
- package/.speccrew/skills/speccrew-sd-mobile/SKILL.md +189 -0
- package/.speccrew/skills/speccrew-sd-mobile/templates/INDEX-TEMPLATE.md +219 -0
- package/.speccrew/skills/speccrew-sd-mobile/templates/SD-MOBILE-TEMPLATE.md +534 -0
- package/.speccrew/skills/speccrew-test-case-design/SKILL.md +284 -0
- package/.speccrew/skills/speccrew-test-case-design/templates/TEST-CASE-DESIGN-TEMPLATE.md +263 -0
- package/.speccrew/skills/speccrew-test-code-gen/SKILL.md +313 -0
- package/.speccrew/skills/speccrew-test-code-gen/templates/TEST-CODE-PLAN-TEMPLATE.md +180 -0
- package/.speccrew/skills/speccrew-test-execute/SKILL.md +283 -0
- package/.speccrew/skills/speccrew-test-execute/templates/BUG-REPORT-TEMPLATE.md +50 -0
- package/.speccrew/skills/speccrew-test-execute/templates/TEST-REPORT-TEMPLATE.md +57 -0
- package/.speccrew/skills/speccrew-workflow-diagnose/SKILL.md +155 -0
- package/LICENSE +21 -0
- package/README.ar.md +318 -0
- package/README.en.md +318 -0
- package/README.es.md +318 -0
- package/README.md +340 -0
- package/bin/cli.js +62 -0
- package/lib/commands/doctor.js +138 -0
- package/lib/commands/init.js +231 -0
- package/lib/commands/list.js +114 -0
- package/lib/commands/uninstall.js +117 -0
- package/lib/commands/update.js +351 -0
- package/lib/ide-adapters.js +73 -0
- package/lib/utils.js +104 -0
- package/package.json +28 -0
- package/workspace-template/docs/configs/document-templates.json +667 -0
- package/workspace-template/docs/configs/platform-mapping.json +194 -0
- package/workspace-template/docs/configs/tech-stack-mappings.json +313 -0
- package/workspace-template/docs/configs/validation-rules.json +87 -0
- package/workspace-template/docs/rules/mermaid-rule.md +114 -0
- package/workspace-template/docs/solutions/Agent/346/212/200/350/203/275/345/256/232/344/271/211+/351/234/200/346/261/202/346/226/207/346/241/243+UML/344/275/277/347/224/250/346/250/241/346/235/277/357/274/210ISA-95/345/205/255/346/256/265/345/274/217/350/236/215/345/220/210/347/211/210/357/274/211.md +586 -0
- package/workspace-template/docs/solutions/agent-knowledge-map.md +238 -0
- package/workspace-template/docs/solutions/bizs-knowledge-pipeline.md +678 -0
- package/workspace-template/docs/solutions/harness.md +410 -0
- package/workspace-template/docs/solutions/knowledge-incremental-sync-spec.md +943 -0
- package/workspace-template/docs/solutions/techs-knowledge-pipeline.md +803 -0
- package/workspace-template/docs/solutions/workspace-structure.md +318 -0
|
@@ -0,0 +1,683 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: speccrew-knowledge-techs-dispatch
|
|
3
|
+
description: Dispatch techs knowledge base generation tasks with 3-stage pipeline. Handles platform detection, tech document generation, and root index creation.
|
|
4
|
+
tools: Read, Write, Task
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Techs Knowledge Dispatch
|
|
8
|
+
|
|
9
|
+
Orchestrate **techs knowledge base generation** with a 3-stage pipeline: Platform Detection → Tech Doc Generation → Root Index.
|
|
10
|
+
|
|
11
|
+
## Language Adaptation
|
|
12
|
+
|
|
13
|
+
**CRITICAL**: All generated documents must match the user's language. Detect the language from the user's input and pass it to all downstream Worker Agents.
|
|
14
|
+
|
|
15
|
+
- User writes in 中文 → Generate Chinese documents, pass `language: "zh"` to workers
|
|
16
|
+
- User writes in English → Generate English documents, pass `language: "en"` to workers
|
|
17
|
+
- User writes in other languages → Use appropriate language code
|
|
18
|
+
|
|
19
|
+
**All downstream skills must receive the `language` parameter and generate content in that language only.**
|
|
20
|
+
|
|
21
|
+
## Trigger Scenarios
|
|
22
|
+
|
|
23
|
+
- "Initialize techs knowledge base"
|
|
24
|
+
- "Generate technology knowledge from source code"
|
|
25
|
+
- "Dispatch techs knowledge generation"
|
|
26
|
+
|
|
27
|
+
## User
|
|
28
|
+
|
|
29
|
+
Leader Agent (speccrew-team-leader)
|
|
30
|
+
|
|
31
|
+
## Platform Naming Convention
|
|
32
|
+
|
|
33
|
+
Read `speccrew-workspace/docs/configs/platform-mapping.json` for standardized platform mapping rules.
|
|
34
|
+
|
|
35
|
+
| Concept | techs-init (techs-manifest.json) | Example (UniApp) |
|
|
36
|
+
|---------|----------------------------------|------------------|
|
|
37
|
+
| **Category** | `platform_type` | `mobile` |
|
|
38
|
+
| **Technology** | `framework` | `uniapp` |
|
|
39
|
+
| **Identifier** | `platform_id` | `mobile-uniapp` |
|
|
40
|
+
|
|
41
|
+
## Input
|
|
42
|
+
|
|
43
|
+
| Variable | Description | Default |
|
|
44
|
+
|----------|-------------|---------|
|
|
45
|
+
| `source_path` | Source code root path | project root |
|
|
46
|
+
| `language` | User's language code (e.g., "zh", "en") | **REQUIRED** |
|
|
47
|
+
|
|
48
|
+
## Output
|
|
49
|
+
|
|
50
|
+
- Platform manifest: `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/techs-manifest.json`
|
|
51
|
+
- Tech docs: `speccrew-workspace/knowledges/techs/{platform_id}/`
|
|
52
|
+
- Root index: `speccrew-workspace/knowledges/techs/INDEX.md`
|
|
53
|
+
- Status files: `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/stage{N}-status.json`
|
|
54
|
+
|
|
55
|
+
## Workflow Overview
|
|
56
|
+
|
|
57
|
+
```mermaid
|
|
58
|
+
flowchart TB
|
|
59
|
+
S1[Stage 1: Detect Platforms] --> S2[Stage 2: Generate Tech Docs]
|
|
60
|
+
S2 --> S3[Stage 3: Generate Root Index]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Stage 1: Detect Platform Manifest (Single Task)
|
|
66
|
+
|
|
67
|
+
**Goal**: Scan source code and identify all technology platforms.
|
|
68
|
+
|
|
69
|
+
**Action**:
|
|
70
|
+
- Invoke 1 Worker Agent (`speccrew-task-worker.md`) with skill `speccrew-knowledge-techs-init/SKILL.md`
|
|
71
|
+
- Task: Analyze project structure, detect technology platforms
|
|
72
|
+
- Parameters to pass to skill:
|
|
73
|
+
- `source_path`: Source code directory path
|
|
74
|
+
- `output_path`: Output directory (default: `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/`)
|
|
75
|
+
- `language`: User's language — **REQUIRED**
|
|
76
|
+
|
|
77
|
+
**Output**:
|
|
78
|
+
- `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/techs-manifest.json`
|
|
79
|
+
|
|
80
|
+
See [templates/techs-manifest-EXAMPLE.json](templates/techs-manifest-EXAMPLE.json) for complete example.
|
|
81
|
+
|
|
82
|
+
### Platform Status Tracking Fields
|
|
83
|
+
|
|
84
|
+
Each platform entry in techs-manifest.json includes status tracking fields for monitoring the analysis pipeline progress:
|
|
85
|
+
|
|
86
|
+
| Field | Type | Values | Description |
|
|
87
|
+
|-------|------|--------|-------------|
|
|
88
|
+
| `status` | string | `pending` / `processing` / `completed` / `partial` / `failed` | Current analysis status |
|
|
89
|
+
| `startedAt` | string \| null | ISO 8601 timestamp | When the Worker started analyzing this platform |
|
|
90
|
+
| `completedAt` | string \| null | ISO 8601 timestamp | When the Worker finished analyzing this platform |
|
|
91
|
+
| `analysisLevel` | string \| null | `full` / `minimal` / `reference_only` | Depth of analysis achieved |
|
|
92
|
+
| `topicsCoverage` | number \| null | 0-100 | Percentage of domain topics covered (from analysis.json) |
|
|
93
|
+
| `workers` | object | See below | Per-worker status tracking |
|
|
94
|
+
|
|
95
|
+
**Workers Object Structure:**
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"platform_id": "web-vue",
|
|
99
|
+
"status": "completed",
|
|
100
|
+
"workers": {
|
|
101
|
+
"conventions": {
|
|
102
|
+
"status": "completed",
|
|
103
|
+
"skill": "speccrew-knowledge-techs-generate-conventions",
|
|
104
|
+
"done_file": "web-vue.done-conventions.json"
|
|
105
|
+
},
|
|
106
|
+
"ui_style": {
|
|
107
|
+
"status": "completed",
|
|
108
|
+
"skill": "speccrew-knowledge-techs-generate-ui-style",
|
|
109
|
+
"done_file": "web-vue.done-ui-style.json"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
For backend platforms, `ui_style.status` is set to `"skipped"`.
|
|
116
|
+
|
|
117
|
+
**Status Lifecycle:**
|
|
118
|
+
```
|
|
119
|
+
pending → processing → completed
|
|
120
|
+
→ partial (conventions OK, ui-style failed)
|
|
121
|
+
→ failed
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**Stage 1 (techs-init)**: All platforms initialized with `status: "pending"`, other tracking fields set to `null`.
|
|
125
|
+
|
|
126
|
+
**Stage 2 (techs-generate)**:
|
|
127
|
+
- Before launching Workers: Set `status: "processing"`, `startedAt: "{now}"`, set both workers status to `"processing"`
|
|
128
|
+
- After all Workers complete successfully: Set `status: "completed"`, `completedAt: "{now}"`, populate `analysisLevel` and `topicsCoverage` from Worker output
|
|
129
|
+
- After conventions Worker fails: Set `status: "failed"`, `completedAt: "{now}"`
|
|
130
|
+
- After ui-style Worker fails (but conventions succeeded): Set `status: "partial"`, `completedAt: "{now}"`
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Stage 2: Generate Platform Documents (Parallel)
|
|
135
|
+
|
|
136
|
+
**Goal**: Generate technology documentation for each platform in parallel.
|
|
137
|
+
|
|
138
|
+
**Action**:
|
|
139
|
+
- Read `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/techs-manifest.json`
|
|
140
|
+
- For each platform in `platforms` array, invoke 2 Worker Agents in PARALLEL:
|
|
141
|
+
- Worker 1: `speccrew-knowledge-techs-generate-conventions/SKILL.md` (ALL platforms)
|
|
142
|
+
- Worker 2: `speccrew-knowledge-techs-generate-ui-style/SKILL.md` (frontend platforms ONLY: web, mobile, desktop)
|
|
143
|
+
- Parameters to pass to each skill:
|
|
144
|
+
- `platform_id`: Platform identifier from manifest
|
|
145
|
+
- `platform_type`: Platform type (web, mobile, backend, desktop)
|
|
146
|
+
- `framework`: Primary framework
|
|
147
|
+
- `source_path`: Platform source directory
|
|
148
|
+
- `config_files`: List of configuration file paths (conventions worker only)
|
|
149
|
+
- `convention_files`: List of convention file paths (conventions worker only)
|
|
150
|
+
- `output_path`: Output directory for platform docs (e.g., `speccrew-workspace/knowledges/techs/{platform_id}/`)
|
|
151
|
+
- `completed_dir`: Directory for Worker output markers (e.g., `speccrew-workspace/knowledges/techs/.sync-status/`)
|
|
152
|
+
- `language`: User's language — **REQUIRED**
|
|
153
|
+
|
|
154
|
+
When launching each platform Worker, the Workers will output:
|
|
155
|
+
- `{completed_dir}/{platform_id}.done-conventions.json` — conventions worker completion marker
|
|
156
|
+
- `{completed_dir}/{platform_id}.done-ui-style.json` — ui-style worker completion marker (frontend only)
|
|
157
|
+
- `{completed_dir}/{platform_id}.analysis-conventions.json` — conventions coverage report
|
|
158
|
+
- `{completed_dir}/{platform_id}.analysis-ui-style.json` — ui-style coverage report (frontend only)
|
|
159
|
+
|
|
160
|
+
**Parallel Execution Logic**:
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
# Ensure completed_dir exists before launching Workers
|
|
164
|
+
completed_dir = "speccrew-workspace/knowledges/techs/.sync-status/"
|
|
165
|
+
CREATE_DIRECTORY IF NOT EXISTS completed_dir
|
|
166
|
+
|
|
167
|
+
FOR each platform IN manifest.platforms:
|
|
168
|
+
# Update manifest before launching Workers
|
|
169
|
+
SET platform.status = "processing"
|
|
170
|
+
SET platform.startedAt = "{current_timestamp}"
|
|
171
|
+
SET platform.workers.conventions.status = "processing"
|
|
172
|
+
IF platform.platform_type IN ["web", "mobile", "desktop"]:
|
|
173
|
+
SET platform.workers.ui_style.status = "processing"
|
|
174
|
+
WRITE manifest to techs-manifest.json
|
|
175
|
+
|
|
176
|
+
# Worker 1: Conventions (ALL platforms)
|
|
177
|
+
INVOKE speccrew-task-worker WITH:
|
|
178
|
+
- skill_path: "speccrew-knowledge-techs-generate-conventions/SKILL.md"
|
|
179
|
+
- context:
|
|
180
|
+
platform_id: platform.platform_id
|
|
181
|
+
platform_type: platform.platform_type
|
|
182
|
+
framework: platform.framework
|
|
183
|
+
source_path: platform.source_path
|
|
184
|
+
config_files: platform.config_files
|
|
185
|
+
convention_files: platform.convention_files
|
|
186
|
+
output_path: "speccrew-workspace/knowledges/techs/{platform.platform_id}/"
|
|
187
|
+
completed_dir: completed_dir
|
|
188
|
+
language: language
|
|
189
|
+
|
|
190
|
+
# Worker 2: UI-Style (frontend platforms ONLY)
|
|
191
|
+
IF platform.platform_type IN ["web", "mobile", "desktop"]:
|
|
192
|
+
INVOKE speccrew-task-worker WITH:
|
|
193
|
+
- skill_path: "speccrew-knowledge-techs-generate-ui-style/SKILL.md"
|
|
194
|
+
- context:
|
|
195
|
+
platform_id: platform.platform_id
|
|
196
|
+
platform_type: platform.platform_type
|
|
197
|
+
framework: platform.framework
|
|
198
|
+
source_path: platform.source_path
|
|
199
|
+
output_path: "speccrew-workspace/knowledges/techs/{platform.platform_id}/"
|
|
200
|
+
completed_dir: completed_dir
|
|
201
|
+
language: language
|
|
202
|
+
|
|
203
|
+
# Both workers run in PARALLEL for the same platform
|
|
204
|
+
|
|
205
|
+
WAIT_ALL workers complete
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Worker Completion Marker (MANDATORY)
|
|
209
|
+
|
|
210
|
+
After generating all documents and the analysis report, each Worker MUST create a completion marker file:
|
|
211
|
+
|
|
212
|
+
#### Conventions Worker Done File
|
|
213
|
+
|
|
214
|
+
**File**: `{completed_dir}/{platform_id}.done-conventions.json`
|
|
215
|
+
|
|
216
|
+
**Format**:
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"platform_id": "web-vue",
|
|
220
|
+
"worker_type": "conventions",
|
|
221
|
+
"status": "completed",
|
|
222
|
+
"documents_generated": [
|
|
223
|
+
"INDEX.md", "tech-stack.md", "architecture.md",
|
|
224
|
+
"conventions-dev.md", "conventions-design.md",
|
|
225
|
+
"conventions-unit-test.md", "conventions-build.md"
|
|
226
|
+
],
|
|
227
|
+
"analysis_file": "web-vue.analysis-conventions.json",
|
|
228
|
+
"completed_at": "2024-01-15T10:45:00Z"
|
|
229
|
+
}
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
#### UI-Style Worker Done File
|
|
233
|
+
|
|
234
|
+
**File**: `{completed_dir}/{platform_id}.done-ui-style.json`
|
|
235
|
+
|
|
236
|
+
**Format**:
|
|
237
|
+
```json
|
|
238
|
+
{
|
|
239
|
+
"platform_id": "web-vue",
|
|
240
|
+
"worker_type": "ui-style",
|
|
241
|
+
"status": "completed",
|
|
242
|
+
"ui_analysis_level": "full",
|
|
243
|
+
"documents_generated": [
|
|
244
|
+
"ui-style/ui-style-guide.md"
|
|
245
|
+
],
|
|
246
|
+
"analysis_file": "web-vue.analysis-ui-style.json",
|
|
247
|
+
"completed_at": "2024-01-15T10:45:00Z"
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Status values**:
|
|
252
|
+
- `completed` — All required documents generated successfully
|
|
253
|
+
- `failed` — Critical failure, required documents not generated
|
|
254
|
+
|
|
255
|
+
If a Worker encounters a fatal error, it should still attempt to create the done file with `status: "failed"` and include error details in an `"error"` field.
|
|
256
|
+
|
|
257
|
+
**Output per Platform**:
|
|
258
|
+
```
|
|
259
|
+
speccrew-workspace/knowledges/techs/{platform_id}/
|
|
260
|
+
├── INDEX.md # Required
|
|
261
|
+
├── tech-stack.md # Required
|
|
262
|
+
├── architecture.md # Required
|
|
263
|
+
├── conventions-design.md # Required
|
|
264
|
+
├── conventions-dev.md # Required
|
|
265
|
+
├── conventions-unit-test.md # Required
|
|
266
|
+
├── conventions-system-test.md # Required
|
|
267
|
+
├── conventions-build.md # Required
|
|
268
|
+
├── conventions-data.md # Optional — platform-specific
|
|
269
|
+
└── ui-style/ # Optional — frontend only (web/mobile/desktop)
|
|
270
|
+
├── ui-style-guide.md # Generated by techs Stage 2
|
|
271
|
+
├── page-types/ # Populated by bizs pipeline Stage 3.5 (ui-style-extract)
|
|
272
|
+
├── components/ # Populated by bizs pipeline Stage 3.5 (ui-style-extract)
|
|
273
|
+
├── layouts/ # Populated by bizs pipeline Stage 3.5 (ui-style-extract)
|
|
274
|
+
└── styles/ # Generated by techs Stage 2
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
**Cross-Pipeline Note for `ui-style/`**:
|
|
278
|
+
- `ui-style-guide.md` and `styles/` are generated by techs pipeline Stage 2 (technical framework-level style specs)
|
|
279
|
+
- `page-types/`, `components/`, and `layouts/` are populated by bizs pipeline Stage 3.5 (`speccrew-knowledge-bizs-ui-style-extract` skill), which aggregates patterns from analyzed feature documents
|
|
280
|
+
- These two sources are complementary: techs provides framework-level conventions, bizs adds real-page-derived design patterns
|
|
281
|
+
- If bizs pipeline has not been executed, these three subdirectories will be empty
|
|
282
|
+
|
|
283
|
+
**Optional file `conventions-data.md` rules**:
|
|
284
|
+
|
|
285
|
+
| Platform Type | Required? | Notes |
|
|
286
|
+
|----------|-----------|-------|
|
|
287
|
+
| `backend` | Required | ORM specs, data modeling, caching |
|
|
288
|
+
| `web` | Depends | Only if using ORM/data layer (Prisma, TypeORM, etc.) |
|
|
289
|
+
| `mobile` | Optional | Based on tech stack |
|
|
290
|
+
| `desktop` | Optional | Based on tech stack |
|
|
291
|
+
|
|
292
|
+
**Generation rules**:
|
|
293
|
+
1. `speccrew-knowledge-techs-generate` decides per platform whether `conventions-data.md` is needed
|
|
294
|
+
2. `speccrew-knowledge-techs-index` must check actual existing documents per platform and dynamically generate links
|
|
295
|
+
|
|
296
|
+
**Status Tracking**:
|
|
297
|
+
- **Get timestamp** using `speccrew-get-timestamp` skill
|
|
298
|
+
- **Generate `stage2-status.json`** at `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/stage2-status.json`
|
|
299
|
+
|
|
300
|
+
**Stage 2 status tracks**:
|
|
301
|
+
- `total_platforms`, `completed`, `failed` counts
|
|
302
|
+
- Per-platform: `documents_generated` list
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
## Stage 2 Post-Processing: Validate Worker Output
|
|
307
|
+
|
|
308
|
+
**Trigger**: After ALL platform Workers have completed (or timed out)
|
|
309
|
+
**Purpose**: Validate Worker output via completion markers and update manifest status
|
|
310
|
+
|
|
311
|
+
**Step 2a: Scan Completion Markers**
|
|
312
|
+
|
|
313
|
+
For each platform in the manifest:
|
|
314
|
+
1. Check for `{platform_id}.done-conventions.json` (REQUIRED for all platforms)
|
|
315
|
+
2. If platform_type IN ["web", "mobile", "desktop"], also check for `{platform_id}.done-ui-style.json`
|
|
316
|
+
3. A platform is "fully completed" only when ALL expected done files are present
|
|
317
|
+
4. If any expected done file is missing → mark platform as `failed` (Worker crashed without creating marker)
|
|
318
|
+
|
|
319
|
+
**Step 2b: Verify Document Output**
|
|
320
|
+
|
|
321
|
+
For each platform:
|
|
322
|
+
- **Conventions**: Check that INDEX.md, tech-stack.md, architecture.md, conventions-*.md exist
|
|
323
|
+
- **UI-Style** (frontend platforms only): Check that ui-style/ directory and required files exist
|
|
324
|
+
- If any required document is missing → downgrade status accordingly
|
|
325
|
+
|
|
326
|
+
**Step 2c: Read Coverage Reports**
|
|
327
|
+
|
|
328
|
+
For each platform:
|
|
329
|
+
1. Read `{platform_id}.analysis-conventions.json`
|
|
330
|
+
2. If frontend platform, also read `{platform_id}.analysis-ui-style.json`
|
|
331
|
+
3. Merge coverage data from both reports for manifest update
|
|
332
|
+
|
|
333
|
+
**Step 2d: Update Manifest Status**
|
|
334
|
+
|
|
335
|
+
Update `techs-manifest.json` for each platform:
|
|
336
|
+
- Set `status` based on worker results:
|
|
337
|
+
- `"completed"` — ALL workers succeeded
|
|
338
|
+
- `"partial"` — conventions succeeded but ui-style failed (frontend only)
|
|
339
|
+
- `"failed"` — conventions worker failed
|
|
340
|
+
- Set `completedAt` to current timestamp
|
|
341
|
+
- Set `workers.conventions.status` from done-conventions.json
|
|
342
|
+
- Set `workers.ui_style.status` from done-ui-style.json (or `"skipped"` for backend platforms)
|
|
343
|
+
- Set `analysisLevel` based on:
|
|
344
|
+
- `"full"` if coverage_percent >= 60 and all required docs exist
|
|
345
|
+
- `"minimal"` if coverage_percent < 60 or some optional docs missing
|
|
346
|
+
- `"reference_only"` if critical docs missing or Worker failed
|
|
347
|
+
- Set `topicsCoverage` from analysis-conventions.json coverage_percent
|
|
348
|
+
|
|
349
|
+
**Step 2e: Handle Failures**
|
|
350
|
+
|
|
351
|
+
For platforms with conventions worker `status: "failed"`:
|
|
352
|
+
- Mark platform as `failed`
|
|
353
|
+
- PRESERVE the done files and analysis files (do NOT delete them)
|
|
354
|
+
- Log a warning with the failure details
|
|
355
|
+
- The platform can be retried in a subsequent run by resetting its manifest status to `pending`
|
|
356
|
+
|
|
357
|
+
For frontend platforms with ui-style worker `status: "failed"` but conventions succeeded:
|
|
358
|
+
- Mark platform as `partial`
|
|
359
|
+
- Conventions docs are still usable
|
|
360
|
+
- Log a warning that UI-style analysis failed
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
## Stage 2.5: Quality Synchronization
|
|
365
|
+
|
|
366
|
+
**Trigger**: After ALL Stage 2 Workers have completed (all platforms processed)
|
|
367
|
+
**Purpose**: Verify cross-platform consistency and document completeness before indexing
|
|
368
|
+
|
|
369
|
+
**Steps**:
|
|
370
|
+
|
|
371
|
+
#### Step 1: Collect Worker Results
|
|
372
|
+
For each platform, verify the following required documents exist:
|
|
373
|
+
- INDEX.md
|
|
374
|
+
- tech-stack.md
|
|
375
|
+
- architecture.md
|
|
376
|
+
- conventions-design.md
|
|
377
|
+
- conventions-dev.md
|
|
378
|
+
- conventions-unit-test.md
|
|
379
|
+
- conventions-system-test.md
|
|
380
|
+
- conventions-build.md
|
|
381
|
+
- conventions-data.md (optional - only for backend or platforms with detected data layer)
|
|
382
|
+
|
|
383
|
+
#### Step 2: Document Completeness Check
|
|
384
|
+
For each platform directory at `speccrew-workspace/knowledges/techs/{platform_id}/`:
|
|
385
|
+
1. List all .md files present
|
|
386
|
+
2. Check against required document list
|
|
387
|
+
3. Record status per platform:
|
|
388
|
+
- "complete": all 8 required documents present
|
|
389
|
+
- "incomplete": one or more required documents missing (list which)
|
|
390
|
+
- "failed": INDEX.md missing (platform will be skipped in Stage 3)
|
|
391
|
+
|
|
392
|
+
#### Step 3: Language Consistency Spot-Check
|
|
393
|
+
Read the first 5 lines of each platform's INDEX.md:
|
|
394
|
+
- Verify content language matches the `language` parameter
|
|
395
|
+
- If mismatch detected, log warning: "Platform {platform_id}: language mismatch detected"
|
|
396
|
+
|
|
397
|
+
#### Step 4: Source Traceability Spot-Check
|
|
398
|
+
For each platform, check ONE document (conventions-dev.md recommended):
|
|
399
|
+
- Verify it contains `<cite>` block near the top
|
|
400
|
+
- If missing, log warning: "Platform {platform_id}: source traceability missing in conventions-dev.md"
|
|
401
|
+
|
|
402
|
+
#### Step 5: UI Style Analysis Level Recording
|
|
403
|
+
For each frontend platform (platform_type = web/mobile/desktop):
|
|
404
|
+
- Check if `speccrew-workspace/knowledges/techs/{platform_id}/ui-style/ui-style-guide.md` exists
|
|
405
|
+
- If exists, read first 20 lines to detect analysis level:
|
|
406
|
+
- Contains "Automated and manual UI analysis were not possible" → level = "reference_only"
|
|
407
|
+
- Contains "manual source code inspection" → level = "minimal"
|
|
408
|
+
- Otherwise → level = "full"
|
|
409
|
+
- Record per platform
|
|
410
|
+
|
|
411
|
+
### Enhanced Quality Checks (using analysis.json data)
|
|
412
|
+
|
|
413
|
+
In addition to the basic document existence and language checks above, Stage 2.5 MUST perform the following enhanced quality checks for each platform:
|
|
414
|
+
|
|
415
|
+
#### Check 4: Document Content Non-Empty Verification
|
|
416
|
+
|
|
417
|
+
For each generated .md file in the platform directory:
|
|
418
|
+
1. Count the number of lines in the file
|
|
419
|
+
2. If any document has fewer than 20 lines → flag as `content_warning`
|
|
420
|
+
3. Record the minimum line count across all documents as `min_doc_lines`
|
|
421
|
+
|
|
422
|
+
```
|
|
423
|
+
THRESHOLD: 20 lines minimum per document
|
|
424
|
+
SEVERITY: warning (does not block pipeline, but recorded in quality report)
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
#### Check 5: Topic Coverage Verification
|
|
428
|
+
|
|
429
|
+
Read `{completed_dir}/{platform_id}.analysis.json` (if it exists):
|
|
430
|
+
1. Extract `coverage_summary.coverage_percent`
|
|
431
|
+
2. If `coverage_percent` < 60 → flag as `coverage_warning`
|
|
432
|
+
3. Extract list of topics with `status: "not_found"` → record as `topics_missing`
|
|
433
|
+
4. If `coverage_percent` < 30 → flag as `coverage_critical` (pipeline should warn but continue)
|
|
434
|
+
|
|
435
|
+
```
|
|
436
|
+
THRESHOLD: 60% minimum topic coverage
|
|
437
|
+
SEVERITY:
|
|
438
|
+
- >= 60%: good
|
|
439
|
+
- 30-59%: warning
|
|
440
|
+
- < 30%: critical
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
#### Check 6: UI Style Completeness (Frontend Platforms Only, After UI-Style Worker)
|
|
444
|
+
|
|
445
|
+
For platforms with `platform_type` in ["web", "mobile", "desktop"]:
|
|
446
|
+
- ONLY check after ui-style Worker has completed
|
|
447
|
+
- Check that ALL 5 required ui-style files exist:
|
|
448
|
+
- `ui-style/ui-style-guide.md`
|
|
449
|
+
- `ui-style/page-types/page-type-summary.md`
|
|
450
|
+
- `ui-style/components/component-library.md`
|
|
451
|
+
- `ui-style/layouts/page-layouts.md`
|
|
452
|
+
- `ui-style/styles/color-system.md`
|
|
453
|
+
- If any file is missing → flag as `ui_style_incomplete`
|
|
454
|
+
- Read the `ui_analysis_level` from done-ui-style.json to classify:
|
|
455
|
+
- `full` — all 5 files present with substantial content
|
|
456
|
+
- `minimal` — ui-style-guide.md present but subdirectories incomplete
|
|
457
|
+
- `reference_only` — only reference documentation, no actual analysis
|
|
458
|
+
|
|
459
|
+
#### Check 7: Cross-Platform Comparison (when multiple frontend platforms exist)
|
|
460
|
+
|
|
461
|
+
If the manifest contains 2+ frontend platforms:
|
|
462
|
+
1. Compare their `coverage_percent` values
|
|
463
|
+
2. If the difference exceeds 30 percentage points → flag as `coverage_imbalance`
|
|
464
|
+
3. Compare their `documents_generated` lists
|
|
465
|
+
4. Report any platform that has significantly fewer documents than others
|
|
466
|
+
|
|
467
|
+
```
|
|
468
|
+
THRESHOLD: 30 percentage points maximum difference between frontend platforms
|
|
469
|
+
SEVERITY: warning
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
#### Check 8: Cross-Worker Completion Consistency
|
|
473
|
+
|
|
474
|
+
For each frontend platform:
|
|
475
|
+
- Verify both `{platform_id}.done-conventions.json` AND `{platform_id}.done-ui-style.json` exist
|
|
476
|
+
- Verify both workers report `status: "completed"`
|
|
477
|
+
- If one worker failed, mark platform quality as "warning" (conventions docs are still usable)
|
|
478
|
+
|
|
479
|
+
For each backend platform:
|
|
480
|
+
- Verify `{platform_id}.done-conventions.json` exists
|
|
481
|
+
- UI-style check is skipped (not applicable)
|
|
482
|
+
|
|
483
|
+
### Quality Classification
|
|
484
|
+
|
|
485
|
+
Based on the checks above, classify each platform's overall content quality:
|
|
486
|
+
|
|
487
|
+
| Classification | Criteria |
|
|
488
|
+
|---------------|----------|
|
|
489
|
+
| `good` | All docs exist, min_doc_lines >= 20, coverage_percent >= 60, ui_style complete (if frontend) |
|
|
490
|
+
| `warning` | Some docs below 20 lines OR coverage_percent 30-59% OR ui_style incomplete |
|
|
491
|
+
| `poor` | Any doc missing OR coverage_percent < 30% OR critical issues found |
|
|
492
|
+
|
|
493
|
+
#### Step 6: Generate stage2-status.json
|
|
494
|
+
Write to `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/stage2-status.json`:
|
|
495
|
+
```json
|
|
496
|
+
{
|
|
497
|
+
"generated_at": "{timestamp}",
|
|
498
|
+
"stage": "platform-doc-generation",
|
|
499
|
+
"total_platforms": {N},
|
|
500
|
+
"completed": {count of complete platforms},
|
|
501
|
+
"incomplete": {count of incomplete platforms},
|
|
502
|
+
"failed": {count of failed platforms},
|
|
503
|
+
"language": "{language}",
|
|
504
|
+
"quality_checks": {
|
|
505
|
+
"all_required_docs_present": {true/false},
|
|
506
|
+
"language_consistent": {true/false},
|
|
507
|
+
"traceability_verified": {true/false},
|
|
508
|
+
"ui_analyzer_results": {
|
|
509
|
+
"full": [{platform_ids}],
|
|
510
|
+
"minimal": [{platform_ids}],
|
|
511
|
+
"reference_only": [{platform_ids}],
|
|
512
|
+
"not_applicable": [{platform_ids for backend}]
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"platforms": [
|
|
516
|
+
{
|
|
517
|
+
"platform_id": "{id}",
|
|
518
|
+
"platform_type": "{platform_type}",
|
|
519
|
+
"framework": "{framework}",
|
|
520
|
+
"status": "complete | incomplete | failed",
|
|
521
|
+
"content_quality": "good | warning | poor",
|
|
522
|
+
"documents_generated": ["INDEX.md", "tech-stack.md", ...],
|
|
523
|
+
"documents_missing": [],
|
|
524
|
+
"ui_style_level": "full | minimal | reference_only | not_applicable",
|
|
525
|
+
"ui_style_complete": true | false,
|
|
526
|
+
"ui_analysis_level": "full | minimal | reference_only | none",
|
|
527
|
+
"topics_coverage": 0-100,
|
|
528
|
+
"topics_missing": ["topic1", "topic2"],
|
|
529
|
+
"min_doc_lines": 45,
|
|
530
|
+
"checks": {
|
|
531
|
+
"doc_existence": "pass | warning | fail",
|
|
532
|
+
"language_check": "pass | warning | fail",
|
|
533
|
+
"source_traceability": "pass | warning | fail",
|
|
534
|
+
"content_non_empty": "pass | warning | fail",
|
|
535
|
+
"topic_coverage": "pass | warning | fail",
|
|
536
|
+
"ui_style_completeness": "pass | warning | fail"
|
|
537
|
+
},
|
|
538
|
+
"output_path": "speccrew-workspace/knowledges/techs/{platform_id}/"
|
|
539
|
+
}
|
|
540
|
+
],
|
|
541
|
+
"cross_platform_checks": {
|
|
542
|
+
"coverage_imbalance": true | false,
|
|
543
|
+
"max_coverage_diff": 31,
|
|
544
|
+
"details": "web-vue (83%) vs mobile-uniapp (52%) - difference exceeds 30% threshold"
|
|
545
|
+
},
|
|
546
|
+
"overall_quality": "good | warning | poor",
|
|
547
|
+
"summary": "2 platforms analyzed. 1 good, 1 warning. mobile-uniapp needs attention: low topic coverage and incomplete ui-style."
|
|
548
|
+
}
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
#### Decision Point
|
|
552
|
+
- If ANY platform has status "failed" (no INDEX.md): log error but continue to Stage 3 (Stage 3 will skip those platforms)
|
|
553
|
+
- If ALL platforms failed: ABORT pipeline, report error
|
|
554
|
+
- Otherwise: proceed to Stage 3
|
|
555
|
+
|
|
556
|
+
---
|
|
557
|
+
|
|
558
|
+
## Stage 3: Generate Root Index (Single Task)
|
|
559
|
+
|
|
560
|
+
**Goal**: Generate root INDEX.md aggregating all platform documentation.
|
|
561
|
+
|
|
562
|
+
**Prerequisite**: All Stage 2 tasks completed.
|
|
563
|
+
|
|
564
|
+
**Action**:
|
|
565
|
+
- Read `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/techs-manifest.json`
|
|
566
|
+
- Invoke 1 Worker Agent (`speccrew-task-worker.md`) with skill `speccrew-knowledge-techs-index/SKILL.md`
|
|
567
|
+
- Parameters to pass to skill:
|
|
568
|
+
- `manifest_path`: Path to techs-manifest.json
|
|
569
|
+
- `techs_base_path`: Base path for techs documentation (e.g., `speccrew-workspace/knowledges/techs/`)
|
|
570
|
+
- `output_path`: Output path for root INDEX.md (e.g., `speccrew-workspace/knowledges/techs/`)
|
|
571
|
+
- `language`: User's language — **REQUIRED**
|
|
572
|
+
|
|
573
|
+
**Critical Requirements for Techs Index Generation**:
|
|
574
|
+
|
|
575
|
+
1. **Dynamic Document Detection**:
|
|
576
|
+
- Must scan each platform directory to detect which documents actually exist
|
|
577
|
+
- Do NOT assume all platforms have the same document set
|
|
578
|
+
- `conventions-data.md` may not exist for all platforms
|
|
579
|
+
|
|
580
|
+
2. **Dynamic Link Generation**:
|
|
581
|
+
- Only include links to documents that actually exist
|
|
582
|
+
- For missing optional documents, either omit the link or mark as "N/A"
|
|
583
|
+
|
|
584
|
+
3. **Platform-Specific Document Recommendations**:
|
|
585
|
+
- Adjust "Agent 重点文档" recommendations based on actual available documents
|
|
586
|
+
|
|
587
|
+
**Output**:
|
|
588
|
+
- `speccrew-workspace/knowledges/techs/INDEX.md` (complete with platform index and Agent mapping, dynamically generated)
|
|
589
|
+
|
|
590
|
+
**Status Tracking**:
|
|
591
|
+
- **Get timestamp** using `speccrew-get-timestamp` skill
|
|
592
|
+
- **Generate `stage3-status.json`** at `speccrew-workspace/knowledges/base/sync-state/knowledge-techs/stage3-status.json`
|
|
593
|
+
|
|
594
|
+
**Stage 3 status tracks**:
|
|
595
|
+
- `platforms_indexed` count
|
|
596
|
+
- `index_file` path
|
|
597
|
+
|
|
598
|
+
---
|
|
599
|
+
|
|
600
|
+
## Execution Flow
|
|
601
|
+
|
|
602
|
+
```
|
|
603
|
+
1. Run Stage 1 (Platform Detection)
|
|
604
|
+
└─ Wait for completion
|
|
605
|
+
|
|
606
|
+
2. Run Stage 2 (Tech Doc Generation)
|
|
607
|
+
├─ Read techs-manifest.json
|
|
608
|
+
├─ Launch ALL platform Workers in parallel
|
|
609
|
+
└─ Wait for ALL Workers → generate stage2-status.json
|
|
610
|
+
|
|
611
|
+
3. Run Stage 3 (Root Index)
|
|
612
|
+
└─ Wait for completion → generate stage3-status.json
|
|
613
|
+
```
|
|
614
|
+
|
|
615
|
+
---
|
|
616
|
+
|
|
617
|
+
## Error Handling
|
|
618
|
+
|
|
619
|
+
### Error Handling Strategy
|
|
620
|
+
|
|
621
|
+
```
|
|
622
|
+
ON Worker Failure:
|
|
623
|
+
1. Capture error message from worker_result.error
|
|
624
|
+
2. Mark platform status as "failed" in stage2-status.json
|
|
625
|
+
3. Record failed platform_id and error details
|
|
626
|
+
4. Continue processing other platforms (no retry, fail fast)
|
|
627
|
+
5. After all workers complete, evaluate overall status:
|
|
628
|
+
- IF all platforms failed → ABORT pipeline
|
|
629
|
+
- IF some platforms succeeded → CONTINUE to Stage 3 with successful platforms only
|
|
630
|
+
```
|
|
631
|
+
|
|
632
|
+
### Stage-Level Failure Handling
|
|
633
|
+
|
|
634
|
+
| Stage | Failure Handling |
|
|
635
|
+
|-------|-----------------|
|
|
636
|
+
| Stage 1 | Abort pipeline, report error |
|
|
637
|
+
| Stage 2 | Continue with successful platforms, report failed ones |
|
|
638
|
+
| Stage 3 | Abort if Stage 2 had critical failures |
|
|
639
|
+
|
|
640
|
+
### Worker Failure Details
|
|
641
|
+
|
|
642
|
+
**When a Worker Agent fails:**
|
|
643
|
+
- **No automatic retry**: Worker failures are recorded as-is
|
|
644
|
+
- **Partial success accepted**: Pipeline continues if at least one platform succeeds
|
|
645
|
+
- **Error propagation**: Failed platform details are included in stage2-status.json
|
|
646
|
+
- **Stage 3 decision**: Only platforms with status "complete" are included in root INDEX.md
|
|
647
|
+
|
|
648
|
+
---
|
|
649
|
+
|
|
650
|
+
## Checklist
|
|
651
|
+
|
|
652
|
+
- [ ] Stage 1: Platform manifest generated with techs-manifest.json
|
|
653
|
+
- [ ] Stage 2: All platforms processed in parallel
|
|
654
|
+
- [ ] Stage 2: `stage2-status.json` generated with all platform results
|
|
655
|
+
- [ ] Stage 3: Root INDEX.md generated with Agent mapping
|
|
656
|
+
- [ ] Stage 3: `stage3-status.json` generated with index info
|
|
657
|
+
|
|
658
|
+
### Document Completeness Verification
|
|
659
|
+
- [ ] Each platform directory contains required documents: INDEX.md, tech-stack.md, architecture.md, conventions-design.md, conventions-dev.md, conventions-unit-test.md, conventions-system-test.md, conventions-build.md
|
|
660
|
+
- [ ] `conventions-data.md` exists only for appropriate platforms (backend required, others optional)
|
|
661
|
+
- [ ] All documents include `<cite>` reference blocks
|
|
662
|
+
- [ ] All documents include AI-TAG and AI-CONTEXT comments
|
|
663
|
+
- [ ] techs/INDEX.md links only to existing documents
|
|
664
|
+
|
|
665
|
+
## Return
|
|
666
|
+
|
|
667
|
+
After all 3 stages complete, return a summary object to the caller:
|
|
668
|
+
|
|
669
|
+
```json
|
|
670
|
+
{
|
|
671
|
+
"status": "completed",
|
|
672
|
+
"pipeline": "techs",
|
|
673
|
+
"stages": {
|
|
674
|
+
"stage1": { "status": "completed", "platforms": 3 },
|
|
675
|
+
"stage2": { "status": "completed", "completed": 3, "failed": 0 },
|
|
676
|
+
"stage3": { "status": "completed" }
|
|
677
|
+
},
|
|
678
|
+
"output": {
|
|
679
|
+
"index": "speccrew-workspace/knowledges/techs/INDEX.md",
|
|
680
|
+
"manifest": "speccrew-workspace/knowledges/base/sync-state/knowledge-techs/techs-manifest.json"
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
```
|