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,410 @@
|
|
|
1
|
+
# Harness 原则
|
|
2
|
+
|
|
3
|
+
Harness 原则是指导 SpecCrew 体系设计的核心规范,涵盖 Skill 定义、Agent 行为、任务委派等多个层面,确保整个系统具备高可读性、可维护性和执行可靠性。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. 操作手册原则(SOP 连续性)
|
|
8
|
+
|
|
9
|
+
Skill 中定义的是标准操作流程(SOP),必须具备:
|
|
10
|
+
|
|
11
|
+
- **顺序性**:步骤按执行顺序排列,编号清晰
|
|
12
|
+
- **连续性**:每步操作在步骤内完整描述,不跳转到其他章节
|
|
13
|
+
- **自包含**:禁止出现"详见第 X 章"、"参考外部文档"等模糊指引
|
|
14
|
+
- **无穿插**:步骤间不交叉引用,大模型无需推理步骤关联关系
|
|
15
|
+
|
|
16
|
+
**反例**:
|
|
17
|
+
```markdown
|
|
18
|
+
## 步骤 1: 分析需求
|
|
19
|
+
(详细分析过程见第 3 节) ← 错误
|
|
20
|
+
|
|
21
|
+
## 步骤 3: 详细分析
|
|
22
|
+
... ← 步骤 1 未完成,依赖后续内容
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
**正例**:
|
|
26
|
+
```markdown
|
|
27
|
+
## 步骤 1: 分析需求
|
|
28
|
+
1. 读取 PRD 文档路径: `{{input.prd_path}}`
|
|
29
|
+
2. 提取功能模块列表
|
|
30
|
+
3. 输出模块清单到: `{{output.module_list}}`
|
|
31
|
+
|
|
32
|
+
## 步骤 2: 生成文档
|
|
33
|
+
1. 读取模块清单: `{{output.module_list}}`
|
|
34
|
+
2. 按模板生成技术文档
|
|
35
|
+
3. 输出到: `{{output.tech_doc}}`
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**职责聚焦**:
|
|
39
|
+
|
|
40
|
+
Skill 只描述"做什么"和"怎么做",不涉及:
|
|
41
|
+
- 输出结果的最终用途或受众
|
|
42
|
+
- 其他系统的消费方式
|
|
43
|
+
- 业务价值或目标
|
|
44
|
+
|
|
45
|
+
**反例**:
|
|
46
|
+
```markdown
|
|
47
|
+
## Target Audience ← 错误:与 Skill 职责无关
|
|
48
|
+
Generated documents serve:
|
|
49
|
+
- **devcrew-designer**: Architecture patterns...
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**正例**:
|
|
53
|
+
```markdown
|
|
54
|
+
## Output ← 正确:只描述输出什么
|
|
55
|
+
- 技术文档:`{{output_dir}}/tech-stack.md`
|
|
56
|
+
- 架构文档:`{{output_dir}}/architecture.md`
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 2. 按需加载原则(模板分离)
|
|
62
|
+
|
|
63
|
+
当 Skill 涉及多种场景或输出格式时:
|
|
64
|
+
|
|
65
|
+
- **模板外置**:不同格式的文档模板放到 `templates/` 文件夹
|
|
66
|
+
- **条件加载**:Skill 根据参数判断,仅加载所需模板
|
|
67
|
+
- **避免混淆**:用不到的模板内容不混入 Skill 正文
|
|
68
|
+
|
|
69
|
+
**结构示例**:
|
|
70
|
+
```
|
|
71
|
+
skill-name/
|
|
72
|
+
├── SKILL.md # 核心流程,通过参数决定加载哪个模板
|
|
73
|
+
├── templates/
|
|
74
|
+
│ ├── web-template.md # Web 端文档模板
|
|
75
|
+
│ ├── mobile-template.md # 移动端文档模板
|
|
76
|
+
│ └── api-template.md # API 文档模板
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**路径规范**:
|
|
80
|
+
- **使用相对路径**:SKILL.md 中引用模板/配置时,使用相对于当前 Skill 目录的相对路径
|
|
81
|
+
- **禁止绝对路径**:不使用 `skill-name/templates/xxx.md` 这类带 Skill 名称的路径
|
|
82
|
+
- **禁止上级路径**:不使用 `../other-skill/templates/xxx.md` 跨 Skill 引用
|
|
83
|
+
|
|
84
|
+
**路径示例**:
|
|
85
|
+
| 场景 | 正确路径 | 错误路径 |
|
|
86
|
+
|------|---------|---------|
|
|
87
|
+
| 引用自身模板 | `templates/web-template.md` | `skill-name/templates/web-template.md` |
|
|
88
|
+
| 引用自身配置 | `reference.md` | `./skill-name/reference.md` |
|
|
89
|
+
| 引用外部配置 | 通过输入参数传入路径 | `../other-skill/config.json` |
|
|
90
|
+
|
|
91
|
+
**SKILL.md 中的条件加载**:
|
|
92
|
+
```markdown
|
|
93
|
+
## 步骤 2: 加载对应模板
|
|
94
|
+
根据 `{{input.platform_type}}` 加载模板:
|
|
95
|
+
- `web` → 加载 `templates/web-template.md`
|
|
96
|
+
- `mobile` → 加载 `templates/mobile-template.md`
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 3. 输入输出原则(接口契约)
|
|
102
|
+
|
|
103
|
+
每个 Skill 必须明确定义输入输出契约:
|
|
104
|
+
|
|
105
|
+
| 要素 | 短内容 | 长内容(文档) |
|
|
106
|
+
|------|--------|----------------|
|
|
107
|
+
| **输入** | 变量形式 `{{input.param}}` | 明确文件路径 `{{input.config_path}}` |
|
|
108
|
+
| **输出** | 变量形式 `{{output.result}}` | 模板 + 路径 + 命名规则 |
|
|
109
|
+
| **过程** | 步骤内联处理 | 不依赖外部隐式逻辑 |
|
|
110
|
+
|
|
111
|
+
**输入定义示例**:
|
|
112
|
+
```markdown
|
|
113
|
+
## 输入参数
|
|
114
|
+
- `prd_path`: PRD 文档路径(必填)
|
|
115
|
+
- `platform_type`: 平台类型,枚举值:web/mobile/desktop
|
|
116
|
+
- `output_dir`: 输出目录(默认:./output)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**输出定义示例**:
|
|
120
|
+
```markdown
|
|
121
|
+
## 输出产物
|
|
122
|
+
- 技术设计文档:`{{output_dir}}/TECH-DESIGN-{{module_name}}.md`
|
|
123
|
+
- 使用模板:`templates/tech-design-template.md`
|
|
124
|
+
- 命名规则:大写模块名替换 `{{module_name}}`
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 4. 编程严谨原则(伪代码设计)
|
|
130
|
+
|
|
131
|
+
Skill 设计应像编程一样严谨:
|
|
132
|
+
|
|
133
|
+
- **明确输入**:所有依赖前置定义,无隐式假设
|
|
134
|
+
- **瀑布执行**:步骤线性执行,无跳转、无循环(除非显式声明)
|
|
135
|
+
- **按需引用**:外部资源显式加载,不自动继承
|
|
136
|
+
- **确定性输出**:相同输入产生相同输出
|
|
137
|
+
|
|
138
|
+
**Skill 即伪代码**:
|
|
139
|
+
```markdown
|
|
140
|
+
## 执行流程
|
|
141
|
+
|
|
142
|
+
INPUT: prd_path, platform_type, output_dir
|
|
143
|
+
|
|
144
|
+
STEP 1: 验证输入
|
|
145
|
+
IF prd_path 不存在 THEN 报错并退出
|
|
146
|
+
IF platform_type 不在 [web, mobile, desktop] THEN 报错并退出
|
|
147
|
+
|
|
148
|
+
STEP 2: 加载模板
|
|
149
|
+
template = LOAD("templates/" + platform_type + "-template.md")
|
|
150
|
+
|
|
151
|
+
STEP 3: 生成文档
|
|
152
|
+
content = RENDER(template, {prd_data: READ(prd_path)})
|
|
153
|
+
WRITE(output_dir + "/output.md", content)
|
|
154
|
+
|
|
155
|
+
OUTPUT: output_dir + "/output.md"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**条件执行显式声明**:
|
|
159
|
+
|
|
160
|
+
条件逻辑必须在步骤内显式声明,不能使用前置章节的"适用条件"代替执行判断。
|
|
161
|
+
|
|
162
|
+
**反例**:
|
|
163
|
+
```markdown
|
|
164
|
+
### When to Invoke ← 错误:前置条件说明
|
|
165
|
+
- `platform_type` is `web`, `mobile`, `desktop`
|
|
166
|
+
|
|
167
|
+
### Step 4: Analyze UI
|
|
168
|
+
Invoke `ui-analyzer`... ← 错误:未显式判断条件
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**正例**:
|
|
172
|
+
```markdown
|
|
173
|
+
### Step 4: Analyze UI
|
|
174
|
+
If `platform_type` in [`web`, `mobile`, `desktop`]:
|
|
175
|
+
1. **Invoke** `speccrew-knowledge-techs-ui-analyze`
|
|
176
|
+
Else:
|
|
177
|
+
1. **Skip** this step
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
## 5. 逐级披露原则(渐进式信息架构)
|
|
183
|
+
|
|
184
|
+
信息按重要性分层,避免一次性暴露所有细节:
|
|
185
|
+
|
|
186
|
+
| 层级 | 位置 | 内容 | 读取时机 |
|
|
187
|
+
|------|------|------|----------|
|
|
188
|
+
| **L1 核心** | `SKILL.md` | 执行流程、关键步骤、输入输出定义 | 每次必载 |
|
|
189
|
+
| **L2 参考** | `reference.md` | API 详情、配置选项、错误代码表 | 按需查阅 |
|
|
190
|
+
| **L3 示例** | `examples.md` | 具体使用案例、输入输出样例 | 需要时参考 |
|
|
191
|
+
| **L4 模板** | `templates/*.md` | 各类输出格式模板 | 条件加载 |
|
|
192
|
+
| **L5 脚本** | `scripts/*` | 辅助工具、验证脚本 | 执行时调用 |
|
|
193
|
+
|
|
194
|
+
**设计要点**:
|
|
195
|
+
- **一层深度**:SKILL.md 直接链接到同级文件,不嵌套目录
|
|
196
|
+
- **显式引用**:使用 `[reference.md](reference.md)` 明确告知存在附加资料
|
|
197
|
+
- **渐进加载**:Agent 先读核心流程,需要时再深入细节
|
|
198
|
+
- **先定义后使用**:引用外部配置前必须显式声明读取,不能在读取前描述其内容
|
|
199
|
+
|
|
200
|
+
**配置引用规范(变量定义-使用原则)**:
|
|
201
|
+
|
|
202
|
+
外部配置文件如同变量,必须先"定义"(声明读取)后"使用"(引用内容):
|
|
203
|
+
|
|
204
|
+
| 顺序 | 操作 | 说明 |
|
|
205
|
+
|------|------|------|
|
|
206
|
+
| 1 | **声明读取** | 在 Step 开头明确声明:"读取配置文件 X" |
|
|
207
|
+
| 2 | **描述内容** | 声明后才能描述该配置的内容和用途 |
|
|
208
|
+
| 3 | **使用配置** | 基于已读取的配置执行操作 |
|
|
209
|
+
|
|
210
|
+
**反例 - 先使用后定义**:
|
|
211
|
+
```markdown
|
|
212
|
+
## 步骤 1: 分析源码
|
|
213
|
+
根据技术栈映射表确定文件扩展名... ← 错误:未声明读取就使用
|
|
214
|
+
|
|
215
|
+
> **配置引用**: 读取 `tech-stack-mappings.json` ← 声明放在后面
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**正例 - 先定义后使用**:
|
|
219
|
+
```markdown
|
|
220
|
+
## 步骤 1: 分析源码
|
|
221
|
+
|
|
222
|
+
1. **读取配置**: 读取 `speccrew-workspace/docs/configs/tech-stack-mappings.json`
|
|
223
|
+
2. **确定扩展名**: 根据 `tech_stack` 参数查询配置,确定源码文件扩展名
|
|
224
|
+
3. **定位文件**: 使用确定的扩展名搜索源码文件
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
**多配置引用示例**:
|
|
228
|
+
```markdown
|
|
229
|
+
## 步骤 3: 识别功能
|
|
230
|
+
|
|
231
|
+
1. **读取配置**:
|
|
232
|
+
- 读取 `feature-granularity-rules.json` - 确定功能拆分策略
|
|
233
|
+
- 读取 `validation-rules.json` - 验证功能命名规范
|
|
234
|
+
|
|
235
|
+
2. **确定拆分策略**: 根据功能复杂度查询 `feature-granularity-rules.json`...
|
|
236
|
+
3. **验证命名**: 使用 `validation-rules.json` 验证功能名称...
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**SKILL.md 中的引用示例**:
|
|
240
|
+
```markdown
|
|
241
|
+
## 快速开始
|
|
242
|
+
[核心步骤...]
|
|
243
|
+
|
|
244
|
+
## 详细参考
|
|
245
|
+
- API 完整说明:[reference.md](reference.md)
|
|
246
|
+
- 使用示例:[examples.md](examples.md)
|
|
247
|
+
- 输出模板:见 `templates/` 目录
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
**执行细节位置规范**:
|
|
251
|
+
|
|
252
|
+
执行逻辑必须放在 Workflow 对应 Step 内,禁止在 Output 或其他前置章节描述执行细节。
|
|
253
|
+
|
|
254
|
+
| 内容类型 | 正确位置 | 错误位置 |
|
|
255
|
+
|---------|---------|---------|
|
|
256
|
+
| 步骤执行逻辑 | Workflow 对应 Step 内 | Output 章节前置说明 |
|
|
257
|
+
| 子 Agent 调用参数 | Step 执行指令中 | 独立章节前置描述 |
|
|
258
|
+
| 输出格式示例 | Reference Guides | Workflow 步骤中 |
|
|
259
|
+
|
|
260
|
+
**反例**:
|
|
261
|
+
```markdown
|
|
262
|
+
## Output
|
|
263
|
+
### UI Style Analysis Integration ← 错误:执行细节混入输出定义
|
|
264
|
+
For frontend platforms, invoke `ui-analyzer`:
|
|
265
|
+
- Input: `source_path`, `platform_id`
|
|
266
|
+
- Output: ui-style docs
|
|
267
|
+
|
|
268
|
+
## Workflow
|
|
269
|
+
### Step 4: UI Style Analysis ← 错误:只有标题,无执行细节
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
**正例**:
|
|
273
|
+
```markdown
|
|
274
|
+
## Output
|
|
275
|
+
- UI 风格文档:`{{output_dir}}/ui-style/` (frontend platforms only)
|
|
276
|
+
|
|
277
|
+
## Workflow
|
|
278
|
+
### Step 4: UI Style Analysis
|
|
279
|
+
If `platform_type` in [web, mobile, desktop]:
|
|
280
|
+
1. **Invoke** `speccrew-knowledge-techs-ui-analyze` with:
|
|
281
|
+
- `source_path`: `{{source_path}}`
|
|
282
|
+
- `platform_id`: `{{platform_id}}`
|
|
283
|
+
- `output_path`: `{{output_path}}/ui-style/`
|
|
284
|
+
2. **Wait** for completion
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
**章节结构规范**:
|
|
288
|
+
|
|
289
|
+
```
|
|
290
|
+
## Workflow ← 只包含执行步骤
|
|
291
|
+
### Step 1: ...
|
|
292
|
+
### Step 2: ...
|
|
293
|
+
|
|
294
|
+
--- ← 分隔线明确区分
|
|
295
|
+
|
|
296
|
+
## Reference Guides ← 详细规范、示例、模板说明
|
|
297
|
+
### Mermaid Guide
|
|
298
|
+
### Document Structure
|
|
299
|
+
|
|
300
|
+
--- ← 分隔线
|
|
301
|
+
|
|
302
|
+
## Template Usage ← 模板使用说明
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**禁止**:在 Workflow 前插入执行细节说明章节
|
|
306
|
+
**禁止**:在 Step 中嵌套子章节描述详细规范
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## 6. 工作外包原则(子 Agent 委派)
|
|
311
|
+
|
|
312
|
+
复杂任务通过子 Agent 处理,当前 Agent 只关注结果,不关注过程:
|
|
313
|
+
|
|
314
|
+
- **上下文减负**:将复杂子任务外包,减少当前 Agent 上下文负担
|
|
315
|
+
- **小颗粒度 Skill**:配合细粒度的 Skill,每个 Skill 专注单一职责
|
|
316
|
+
- **通用子 Agent**:指派通用子 Agent,动态赋予所需 Skill
|
|
317
|
+
- **输入完备**:子 Agent 调用时提供 Skill 所需的全部输入参数
|
|
318
|
+
- **结果导向**:只接收子 Agent 返回的最终结果,不介入执行过程
|
|
319
|
+
|
|
320
|
+
**适用场景**:
|
|
321
|
+
| 场景 | 当前 Agent | 子 Agent |
|
|
322
|
+
|------|-----------|----------|
|
|
323
|
+
| 代码审查 | 接收审查报告 | 执行代码分析、生成审查意见 |
|
|
324
|
+
| 文档生成 | 接收生成文档 | 读取模板、填充数据、格式化输出 |
|
|
325
|
+
| 批量处理 | 接收汇总结果 | 并行处理多个文件、聚合结果 |
|
|
326
|
+
| 复杂计算 | 接收计算结果 | 执行算法、返回数值/结论 |
|
|
327
|
+
|
|
328
|
+
**调用模式(使用 speccrew-task-worker)**:
|
|
329
|
+
|
|
330
|
+
`speccrew-task-worker` 是一个通用无职能的 Worker Agent,必须通过 `skill_path` 参数赋予具体 Skill 才能执行任务。
|
|
331
|
+
|
|
332
|
+
```markdown
|
|
333
|
+
## 步骤 3: 批量生成模块文档(外包给子 Agent)
|
|
334
|
+
|
|
335
|
+
并行调用多个 `speccrew-task-worker` 实例:
|
|
336
|
+
|
|
337
|
+
**Worker 实例 1 - 生成用户模块文档:**
|
|
338
|
+
- **skill_path**: `.speccrew/skills/module-doc-gen/SKILL.md`
|
|
339
|
+
- **context**:
|
|
340
|
+
- `module_name`: `user`
|
|
341
|
+
- `module_path`: `./src/modules/user`
|
|
342
|
+
- `output_path`: `./docs/modules/user.md`
|
|
343
|
+
- `template_path`: `./templates/module-doc-template.md`
|
|
344
|
+
|
|
345
|
+
**Worker 实例 2 - 生成分单模块文档:**
|
|
346
|
+
- **skill_path**: `.speccrew/skills/module-doc-gen/SKILL.md`
|
|
347
|
+
- **context**:
|
|
348
|
+
- `module_name`: `dispatch`
|
|
349
|
+
- `module_path`: `./src/modules/dispatch`
|
|
350
|
+
- `output_path`: `./docs/modules/dispatch.md`
|
|
351
|
+
- `template_path`: `./templates/module-doc-template.md`
|
|
352
|
+
|
|
353
|
+
**子 Agent 返回格式**:
|
|
354
|
+
```json
|
|
355
|
+
{
|
|
356
|
+
"status": "success",
|
|
357
|
+
"output_path": "./docs/modules/user.md",
|
|
358
|
+
"summary": "Generated user module documentation"
|
|
359
|
+
}
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
**当前 Agent 继续**: 收集所有 Worker 返回结果,生成索引文档
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**设计要点**:
|
|
366
|
+
- **Skill 可复用**:子 Agent 使用的 Skill 应通用化,可被不同父 Agent 调用
|
|
367
|
+
- **输入自给自足**:子 Agent 不依赖父 Agent 的上下文,所有输入通过参数传递
|
|
368
|
+
- **输出标准化**:子 Agent 输出格式固定,便于父 Agent 解析和集成
|
|
369
|
+
- **错误隔离**:子 Agent 失败不影响父 Agent,可重试或降级处理
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
## 原则关系图
|
|
374
|
+
|
|
375
|
+
```
|
|
376
|
+
┌─────────────────────────────────────────────────────────┐
|
|
377
|
+
│ Harness 原则体系 │
|
|
378
|
+
├─────────────────────────────────────────────────────────┤
|
|
379
|
+
│ 操作手册原则 ──→ 确保步骤清晰、连续、自包含 │
|
|
380
|
+
│ ↓ │
|
|
381
|
+
│ 输入输出原则 ──→ 明确定义接口契约 │
|
|
382
|
+
│ ↓ │
|
|
383
|
+
│ 编程严谨原则 ──→ 像伪代码一样严谨设计 │
|
|
384
|
+
│ ↓ │
|
|
385
|
+
│ 按需加载原则 ──→ 模板/资源条件分离 │
|
|
386
|
+
│ ↓ │
|
|
387
|
+
│ 逐级披露原则 ──→ 信息分层,渐进展示 │
|
|
388
|
+
│ ↓ │
|
|
389
|
+
│ 工作外包原则 ──→ 复杂任务子 Agent 委派 │
|
|
390
|
+
└─────────────────────────────────────────────────────────┘
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
---
|
|
394
|
+
|
|
395
|
+
## 验收清单
|
|
396
|
+
|
|
397
|
+
创建或评审 Skill 时,检查:
|
|
398
|
+
|
|
399
|
+
- [ ] 步骤是否顺序编号,无跳转引用?
|
|
400
|
+
- [ ] 每步操作是否在步骤内完整描述?
|
|
401
|
+
- [ ] 输入参数是否有明确路径或变量定义?
|
|
402
|
+
- [ ] 输出文档是否有模板 + 路径 + 命名规则?
|
|
403
|
+
- [ ] 多场景模板是否分离到 `templates/`?
|
|
404
|
+
- [ ] 是否存在"详见 XX"等模糊指引?
|
|
405
|
+
- [ ] 流程是否像伪代码一样可线性执行?
|
|
406
|
+
- [ ] 详细信息是否通过链接渐进披露?
|
|
407
|
+
- [ ] 复杂任务是否考虑子 Agent 外包?子 Agent 输入是否完备?
|
|
408
|
+
- [ ] 是否包含与 Skill 职责无关的内容(如 Target Audience)?
|
|
409
|
+
- [ ] 执行细节是否放在 Workflow 对应 Step 内,而非前置章节?
|
|
410
|
+
- [ ] 条件执行是否在 Step 内显式声明,而非依赖前置条件说明?
|