@specpow/framework 0.5.9 → 0.5.11
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/CHANGELOG.md +623 -623
- package/LICENSE +21 -21
- package/bin/specpow.js +9 -9
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +12 -11
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +30 -3
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +5 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +29 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/execute.d.ts.map +1 -1
- package/dist/commands/execute.js +5 -2
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/explore.d.ts.map +1 -1
- package/dist/commands/explore.js +8 -10
- package/dist/commands/explore.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +6 -3
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/propose.d.ts.map +1 -1
- package/dist/commands/propose.js +4 -3
- package/dist/commands/propose.js.map +1 -1
- package/dist/commands/schema.d.ts.map +1 -1
- package/dist/commands/schema.js +5 -2
- package/dist/commands/schema.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +17 -11
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/store.d.ts.map +1 -1
- package/dist/commands/store.js +8 -6
- package/dist/commands/store.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +3 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/validate-specs.d.ts.map +1 -1
- package/dist/commands/validate-specs.js +8 -5
- package/dist/commands/validate-specs.js.map +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +17 -19
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workflow/index.d.ts.map +1 -1
- package/dist/commands/workflow/index.js +18 -10
- package/dist/commands/workflow/index.js.map +1 -1
- package/dist/core/archive/engine.d.ts.map +1 -1
- package/dist/core/archive/engine.js +10 -6
- package/dist/core/archive/engine.js.map +1 -1
- package/dist/core/artifact-graph/resolver.d.ts.map +1 -1
- package/dist/core/artifact-graph/resolver.js +5 -2
- package/dist/core/artifact-graph/resolver.js.map +1 -1
- package/dist/core/config/config-schema.d.ts +104 -0
- package/dist/core/config/config-schema.d.ts.map +1 -1
- package/dist/core/config/config-schema.js +15 -1
- package/dist/core/config/config-schema.js.map +1 -1
- package/dist/core/hooks/session-start-hook.d.ts.map +1 -1
- package/dist/core/hooks/session-start-hook.js +76 -45
- package/dist/core/hooks/session-start-hook.js.map +1 -1
- package/dist/core/hooks/workflow-state-hook.d.ts.map +1 -1
- package/dist/core/hooks/workflow-state-hook.js +3 -1
- package/dist/core/hooks/workflow-state-hook.js.map +1 -1
- package/dist/core/init/codegraph-step.d.ts +36 -0
- package/dist/core/init/codegraph-step.d.ts.map +1 -0
- package/dist/core/init/codegraph-step.js +109 -0
- package/dist/core/init/codegraph-step.js.map +1 -0
- package/dist/core/init/engine.d.ts +2 -2
- package/dist/core/init/engine.d.ts.map +1 -1
- package/dist/core/init/engine.js +28 -14
- package/dist/core/init/engine.js.map +1 -1
- package/dist/core/memory/adapters/sqlite-adapter.js +55 -55
- package/dist/core/migration/index.d.ts.map +1 -1
- package/dist/core/migration/index.js +128 -4
- package/dist/core/migration/index.js.map +1 -1
- package/dist/core/store/index.d.ts +4 -3
- package/dist/core/store/index.d.ts.map +1 -1
- package/dist/core/store/index.js +7 -7
- package/dist/core/store/index.js.map +1 -1
- package/dist/core/task-parser.d.ts +17 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +59 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/templates/index.d.ts +1 -1
- package/dist/core/templates/index.d.ts.map +1 -1
- package/dist/core/templates/index.js +11 -6
- package/dist/core/templates/index.js.map +1 -1
- package/dist/core/workflow-state.d.ts +1 -1
- package/dist/core/workflow-state.d.ts.map +1 -1
- package/dist/core/workflow-state.js +10 -5
- package/dist/core/workflow-state.js.map +1 -1
- package/dist/templates/claude-commands/specpow-apply.md +23 -23
- package/dist/templates/claude-commands/specpow-archive.md +22 -22
- package/dist/templates/claude-commands/specpow-propose.md +27 -27
- package/dist/templates/claude-commands/specpow-status.md +22 -22
- package/dist/templates/claude-commands/specpow-validate-specs.md +28 -28
- package/dist/templates/claude-commands/specpow-verify.md +21 -21
- package/dist/templates/claude-commands/specpow.md +34 -34
- package/package.json +121 -122
- package/.specpow/agents/controller/sdd-controller.md +0 -55
- package/.specpow/agents/execution/java-codegen-agent.md +0 -39
- package/.specpow/agents/execution/ui-codegen-agent.md +0 -32
- package/.specpow/agents/ops/deploy-agent.md +0 -181
- package/.specpow/agents/planning/db-designer-agent.md +0 -30
- package/.specpow/agents/planning/prd-agent.md +0 -31
- package/.specpow/agents/quality/review-agent.md +0 -36
- package/.specpow/agents/quality/test-agent.md +0 -33
- package/.specpow/hooks/hooks.json +0 -30
- package/.specpow/hooks/run-hook.cmd +0 -19
- package/.specpow/hooks/session-start +0 -62
- package/.specpow/hooks/workflow-state +0 -150
- package/.specpow/schemas/bug-fix/schema.yaml +0 -64
- package/.specpow/schemas/bug-fix/templates/analysis.md +0 -43
- package/.specpow/schemas/bug-fix/templates/fix-plan.md +0 -19
- package/.specpow/schemas/bug-fix/templates/proposal.md +0 -30
- package/.specpow/schemas/crud-module/schema.yaml +0 -65
- package/.specpow/schemas/crud-module/templates/design.md +0 -36
- package/.specpow/schemas/crud-module/templates/proposal.md +0 -30
- package/.specpow/schemas/crud-module/templates/spec.md +0 -38
- package/.specpow/schemas/crud-module/templates/tasks.md +0 -57
- package/.specpow/schemas/spec-driven/schema.yaml +0 -87
- package/.specpow/schemas/spec-driven/templates/design.md +0 -54
- package/.specpow/schemas/spec-driven/templates/proposal.md +0 -31
- package/.specpow/schemas/spec-driven/templates/spec.md +0 -42
- package/.specpow/schemas/spec-driven/templates/tasks.md +0 -98
- package/.specpow/skills/business-code-review/SKILL.md +0 -78
- package/.specpow/skills/business-db-design/SKILL.md +0 -74
- package/.specpow/skills/business-deploy-check/SKILL.md +0 -72
- package/.specpow/skills/business-doc-sync/SKILL.md +0 -72
- package/.specpow/skills/business-java-codegen/SKILL.md +0 -97
- package/.specpow/skills/business-menu-register/SKILL.md +0 -63
- package/.specpow/skills/business-prd-writer/SKILL.md +0 -80
- package/.specpow/skills/business-test-gen/SKILL.md +0 -82
- package/.specpow/skills/business-ui-codegen/SKILL.md +0 -104
- package/.specpow/skills/cli-router/SKILL.md +0 -108
- package/.specpow/skills/execution-finish-branch/SKILL.md +0 -58
- package/.specpow/skills/execution-git-worktrees/SKILL.md +0 -48
- package/.specpow/skills/execution-parallel-agents/SKILL.md +0 -46
- package/.specpow/skills/execution-receiving-review/SKILL.md +0 -47
- package/.specpow/skills/execution-requesting-review/SKILL.md +0 -51
- package/.specpow/skills/execution-sdd-orchestrator/SKILL.md +0 -366
- package/.specpow/skills/execution-subagent-dispatch/SKILL.md +0 -295
- package/.specpow/skills/execution-subagent-driven-dev/SKILL.md +0 -143
- package/.specpow/skills/execution-systematic-debugging/SKILL.md +0 -95
- package/.specpow/skills/execution-tdd/SKILL.md +0 -74
- package/.specpow/skills/execution-verification-before-completion/SKILL.md +0 -75
- package/.specpow/skills/meta-create-skill/SKILL.md +0 -374
- package/.specpow/skills/meta-using-skills/SKILL.md +0 -97
- package/.specpow/skills/meta-writing-skills/SKILL.md +0 -66
- package/.specpow/skills/planning-apply-change/SKILL.md +0 -194
- package/.specpow/skills/planning-archive-change/SKILL.md +0 -43
- package/.specpow/skills/planning-explore/SKILL.md +0 -103
- package/.specpow/skills/planning-onboard/SKILL.md +0 -61
- package/.specpow/skills/planning-propose/SKILL.md +0 -140
- package/.specpow/skills/planning-update-change/SKILL.md +0 -45
- package/.specpow/skills/planning-verify-change/SKILL.md +0 -58
- package/.specpow/skills/planning-write-design/SKILL.md +0 -59
- package/.specpow/skills/planning-write-plans/SKILL.md +0 -55
- package/.specpow/skills/planning-write-specs/SKILL.md +0 -91
- package/.specpow/skills/using-specpow/SKILL.md +0 -232
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: meta-create-skill
|
|
3
|
-
description: 技能创建元技能。引导用户创建新的 SpecPow 技能,自动生成 SKILL.md 骨架、测试文件,并注册到技能目录。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 创建技能 (Meta Create Skill)
|
|
7
|
-
> 指导用户创建新的 SpecPow 技能,包括文件结构、测试生成和目录注册
|
|
8
|
-
|
|
9
|
-
## 触发条件
|
|
10
|
-
|
|
11
|
-
- 用户要求创建新技能
|
|
12
|
-
- 需要扩展 SpecPow 能力
|
|
13
|
-
- 用户提到"写技能"/"创建 SKILL"/"新增技能"
|
|
14
|
-
- 需要为特定业务场景创建专用技能
|
|
15
|
-
|
|
16
|
-
## 铁律
|
|
17
|
-
|
|
18
|
-
1. **单一职责** — 一个技能只做一件事,解决一个明确的问题
|
|
19
|
-
2. **可测试** — 每个技能必须有配套的验证方法
|
|
20
|
-
3. **有边界** — 明确什么时候用、什么时候不用
|
|
21
|
-
4. **遵循规范** — 必须使用标准 SKILL.md 格式
|
|
22
|
-
5. **自动注册** — 新技能必须出现在 `specpow doctor` 检查中
|
|
23
|
-
|
|
24
|
-
## 合理化防御表
|
|
25
|
-
|
|
26
|
-
| 你可能的想法 | 现实 |
|
|
27
|
-
|-------------|------|
|
|
28
|
-
| "这个技能太简单了,不需要正式创建" | 简单的技能也可能变复杂。正式创建。 |
|
|
29
|
-
| "我可以晚点再写测试" | 晚点 = 永远不。现在写测试。 |
|
|
30
|
-
| "这个技能只有我会用" | 其他人也会用。写清楚文档。 |
|
|
31
|
-
| "命名不重要" | 命名很重要。用 kebab-case,见名知意。 |
|
|
32
|
-
| "我可以跳过 doctor 检查" | doctor 检查确保技能可被发现。不要跳过。 |
|
|
33
|
-
| "铁律可以少写几条" | 铁律是底线。至少写 3 条。 |
|
|
34
|
-
| "工作流不需要分阶段" | 分阶段让技能更清晰。至少分 2 阶段。 |
|
|
35
|
-
| "红旗可以模糊一点" | 红旗必须具体。模糊的红旗无法触发。 |
|
|
36
|
-
|
|
37
|
-
## 工作流
|
|
38
|
-
|
|
39
|
-
### 阶段 1: 需求分析
|
|
40
|
-
|
|
41
|
-
**目标:** 明确技能的目的和边界
|
|
42
|
-
|
|
43
|
-
1. **确定技能名称**
|
|
44
|
-
- 使用 kebab-case(如 `java-codegen`、`test-gen`)
|
|
45
|
-
- 格式:`<category>-<purpose>`
|
|
46
|
-
- 分类:planning / execution / quality / business / meta
|
|
47
|
-
|
|
48
|
-
2. **明确技能职责**
|
|
49
|
-
- 这个技能解决什么问题?
|
|
50
|
-
- 什么时候应该使用这个技能?
|
|
51
|
-
- 什么时候不应该使用?
|
|
52
|
-
|
|
53
|
-
3. **定义输入输出**
|
|
54
|
-
- 输入:用户需要提供什么?
|
|
55
|
-
- 输出:技能会生成什么?
|
|
56
|
-
|
|
57
|
-
**完成标志:** 能用一句话说清楚技能的用途
|
|
58
|
-
|
|
59
|
-
---
|
|
60
|
-
|
|
61
|
-
### 阶段 2: 创建技能文件
|
|
62
|
-
|
|
63
|
-
**目标:** 生成标准 SKILL.md 文件
|
|
64
|
-
|
|
65
|
-
1. **创建技能目录**
|
|
66
|
-
```bash
|
|
67
|
-
mkdir -p skills/<skill-name>
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
2. **生成 SKILL.md 骨架**
|
|
71
|
-
|
|
72
|
-
使用下方模板生成完整的 SKILL.md 文件:
|
|
73
|
-
|
|
74
|
-
```markdown
|
|
75
|
-
---
|
|
76
|
-
name: <category>-<skill-name>
|
|
77
|
-
description: <一句话描述技能用途>
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
# <技能名称>
|
|
81
|
-
> <一句话描述技能用途>
|
|
82
|
-
|
|
83
|
-
## 触发条件
|
|
84
|
-
|
|
85
|
-
- <什么情况下使用这个技能>
|
|
86
|
-
- <用户提到什么关键词时触发>
|
|
87
|
-
|
|
88
|
-
## 铁律
|
|
89
|
-
|
|
90
|
-
1. **<规则 1>** — <解释>
|
|
91
|
-
2. **<规则 2>** — <解释>
|
|
92
|
-
3. **<规则 3>** — <解释>
|
|
93
|
-
|
|
94
|
-
## 合理化防御表
|
|
95
|
-
|
|
96
|
-
| 你可能的想法 | 现实 |
|
|
97
|
-
|-------------|------|
|
|
98
|
-
| "<常见借口 1>" | <反驳 1> |
|
|
99
|
-
| "<常见借口 2>" | <反驳 2> |
|
|
100
|
-
| "<常见借口 3>" | <反驳 3> |
|
|
101
|
-
|
|
102
|
-
## 工作流
|
|
103
|
-
|
|
104
|
-
### 阶段 1: <阶段名称>
|
|
105
|
-
|
|
106
|
-
**目标:** <阶段目标>
|
|
107
|
-
|
|
108
|
-
1. <步骤 1>
|
|
109
|
-
2. <步骤 2>
|
|
110
|
-
3. <步骤 3>
|
|
111
|
-
|
|
112
|
-
**完成标志:** <什么表示阶段完成>
|
|
113
|
-
|
|
114
|
-
---
|
|
115
|
-
|
|
116
|
-
### 阶段 2: <阶段名称>
|
|
117
|
-
|
|
118
|
-
**目标:** <阶段目标>
|
|
119
|
-
|
|
120
|
-
1. <步骤 1>
|
|
121
|
-
2. <步骤 2>
|
|
122
|
-
3. <步骤 3>
|
|
123
|
-
|
|
124
|
-
**完成标志:** <什么表示阶段完成>
|
|
125
|
-
|
|
126
|
-
## 输出格式
|
|
127
|
-
|
|
128
|
-
- <期望的输出 1>
|
|
129
|
-
- <期望的输出 2>
|
|
130
|
-
|
|
131
|
-
## 红旗(立即停止)
|
|
132
|
-
|
|
133
|
-
这些想法意味着 STOP — 你正在合理化:
|
|
134
|
-
|
|
135
|
-
| 想法 | 现实 |
|
|
136
|
-
|------|------|
|
|
137
|
-
| "<危险信号 1>" | <现实 1> |
|
|
138
|
-
| "<危险信号 2>" | <现实 2> |
|
|
139
|
-
| "<危险信号 3>" | <现实 3> |
|
|
140
|
-
|
|
141
|
-
## 压力测试
|
|
142
|
-
|
|
143
|
-
在声称完成前,问自己:
|
|
144
|
-
|
|
145
|
-
1. <边界情况 1>
|
|
146
|
-
2. <边界情况 2>
|
|
147
|
-
3. <边界情况 3>
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
3. **填写模板内容**
|
|
151
|
-
- 根据需求分析的结果填写所有占位符
|
|
152
|
-
- 确保每个章节都有实质内容
|
|
153
|
-
- 铁律至少 3 条,最多 5 条
|
|
154
|
-
- 合理化防御表至少 5 行
|
|
155
|
-
- 红旗至少 3 条
|
|
156
|
-
- 压力测试至少 3 个问题
|
|
157
|
-
|
|
158
|
-
**完成标志:** SKILL.md 文件创建完成,格式正确
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
### 阶段 3: 创建测试文件(可选但推荐)
|
|
163
|
-
|
|
164
|
-
**目标:** 为技能创建验证方法
|
|
165
|
-
|
|
166
|
-
1. **创建测试文件**
|
|
167
|
-
```bash
|
|
168
|
-
touch test/<skill-name>.test.ts
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
2. **编写测试用例**
|
|
172
|
-
|
|
173
|
-
测试文件模板:
|
|
174
|
-
|
|
175
|
-
```typescript
|
|
176
|
-
/**
|
|
177
|
-
* <技能名称> 测试
|
|
178
|
-
*
|
|
179
|
-
* 测试 skills/<skill-name>/SKILL.md 的效果
|
|
180
|
-
*/
|
|
181
|
-
|
|
182
|
-
import { describe, it, expect } from 'vitest';
|
|
183
|
-
import { readFileSync } from 'fs';
|
|
184
|
-
import { join } from 'path';
|
|
185
|
-
|
|
186
|
-
describe('<skill-name>', () => {
|
|
187
|
-
it('should have valid SKILL.md format', () => {
|
|
188
|
-
const skillPath = join(process.cwd(), 'skills', '<skill-name>', 'SKILL.md');
|
|
189
|
-
const content = readFileSync(skillPath, 'utf-8');
|
|
190
|
-
|
|
191
|
-
// 检查 frontmatter
|
|
192
|
-
expect(content).toMatch(/^---\nname: .+\ndescription: .+\n---\n/);
|
|
193
|
-
|
|
194
|
-
// 检查必需章节
|
|
195
|
-
expect(content).toContain('## 触发条件');
|
|
196
|
-
expect(content).toContain('## 铁律');
|
|
197
|
-
expect(content).toContain('## 工作流');
|
|
198
|
-
expect(content).toContain('## 红旗');
|
|
199
|
-
});
|
|
200
|
-
|
|
201
|
-
it('should have at least 3 iron rules', () => {
|
|
202
|
-
const skillPath = join(process.cwd(), 'skills', '<skill-name>', 'SKILL.md');
|
|
203
|
-
const content = readFileSync(skillPath, 'utf-8');
|
|
204
|
-
|
|
205
|
-
const ironRulesSection = content.match(/## 铁律\n([\s\S]*?)(?=\n## |\n$)/);
|
|
206
|
-
expect(ironRulesSection).not.toBeNull();
|
|
207
|
-
|
|
208
|
-
const rules = ironRulesSection![1].match(/^\d+\./gm);
|
|
209
|
-
expect(rules!.length).toBeGreaterThanOrEqual(3);
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
it('should have defense table', () => {
|
|
213
|
-
const skillPath = join(process.cwd(), 'skills', '<skill-name>', 'SKILL.md');
|
|
214
|
-
const content = readFileSync(skillPath, 'utf-8');
|
|
215
|
-
|
|
216
|
-
expect(content).toContain('## 合理化防御表');
|
|
217
|
-
expect(content).toContain('| 你可能的想法 | 现实 |');
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
it('should have pressure testing section', () => {
|
|
221
|
-
const skillPath = join(process.cwd(), 'skills', '<skill-name>', 'SKILL.md');
|
|
222
|
-
const content = readFileSync(skillPath, 'utf-8');
|
|
223
|
-
|
|
224
|
-
expect(content).toContain('## 压力测试');
|
|
225
|
-
});
|
|
226
|
-
});
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
3. **运行测试**
|
|
230
|
-
```bash
|
|
231
|
-
npx vitest run test/<skill-name>.test.ts
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
**完成标志:** 测试文件创建并通过
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
### 阶段 4: 验证技能
|
|
239
|
-
|
|
240
|
-
**目标:** 确保技能可被正确发现和使用
|
|
241
|
-
|
|
242
|
-
1. **运行 doctor 检查**
|
|
243
|
-
```bash
|
|
244
|
-
specpow doctor
|
|
245
|
-
```
|
|
246
|
-
|
|
247
|
-
确认输出中包含:
|
|
248
|
-
```
|
|
249
|
-
✓ 技能文件: 找到 <N> 个技能文件
|
|
250
|
-
```
|
|
251
|
-
|
|
252
|
-
2. **手动验证技能格式**
|
|
253
|
-
- 检查 frontmatter 是否正确
|
|
254
|
-
- 检查所有必需章节是否存在
|
|
255
|
-
- 检查命名是否符合规范
|
|
256
|
-
|
|
257
|
-
3. **测试技能触发**
|
|
258
|
-
- 在对话中提到触发条件
|
|
259
|
-
- 确认 AI 会引用这个技能
|
|
260
|
-
|
|
261
|
-
**完成标志:** doctor 检查通过,技能可被正确引用
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
|
-
### 阶段 5: 文档更新(可选)
|
|
266
|
-
|
|
267
|
-
**目标:** 更新相关文档以包含新技能
|
|
268
|
-
|
|
269
|
-
1. **更新 CLAUDE.md**(如果是核心技能)
|
|
270
|
-
- 在技能分类表格中添加新技能
|
|
271
|
-
- 在技能列表中提及
|
|
272
|
-
|
|
273
|
-
2. **更新 README.md**(如果需要对外宣传)
|
|
274
|
-
- 在技能列表中添加新技能
|
|
275
|
-
- 提供使用示例
|
|
276
|
-
|
|
277
|
-
**完成标志:** 相关文档已更新
|
|
278
|
-
|
|
279
|
-
## 输出格式
|
|
280
|
-
|
|
281
|
-
完成技能创建后,应该生成:
|
|
282
|
-
|
|
283
|
-
1. **技能目录**
|
|
284
|
-
```
|
|
285
|
-
skills/<skill-name>/
|
|
286
|
-
└── SKILL.md
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
2. **测试文件**(可选)
|
|
290
|
-
```
|
|
291
|
-
test/<skill-name>.test.ts
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
3. **doctor 检查结果**
|
|
295
|
-
```
|
|
296
|
-
✓ 技能文件: 找到 <N> 个技能文件
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
## 技能分类参考
|
|
300
|
-
|
|
301
|
-
| 分类 | 用途 | 示例 |
|
|
302
|
-
|------|------|------|
|
|
303
|
-
| meta | 元技能,管理其他技能 | using-skills, writing-skills, create-skill |
|
|
304
|
-
| planning | 规划和设计阶段 | explore, propose, write-specs, write-design |
|
|
305
|
-
| execution | 执行阶段 | subagent-driven-dev, tdd, parallel-agents |
|
|
306
|
-
| quality | 质量保障 | requesting-review, receiving-review, verification |
|
|
307
|
-
| business | 业务特定 | java-codegen, ui-codegen, test-gen, code-review |
|
|
308
|
-
|
|
309
|
-
## 命名规范
|
|
310
|
-
|
|
311
|
-
1. **目录名:** kebab-case(如 `java-codegen`、`test-gen`)
|
|
312
|
-
2. **文件名:** 固定为 `SKILL.md`
|
|
313
|
-
3. **frontmatter name:** `<category>-<name>`(如 `execution-tdd`)
|
|
314
|
-
4. **分类前缀:**
|
|
315
|
-
- `meta-` — 元技能
|
|
316
|
-
- `planning-` — 规划技能
|
|
317
|
-
- `execution-` — 执行技能
|
|
318
|
-
- `quality-` 或 `execution-` — 质量技能
|
|
319
|
-
- `business-` — 业务技能
|
|
320
|
-
|
|
321
|
-
## 红旗(立即停止)
|
|
322
|
-
|
|
323
|
-
这些想法意味着 STOP — 你正在合理化:
|
|
324
|
-
|
|
325
|
-
| 想法 | 现实 |
|
|
326
|
-
|------|------|
|
|
327
|
-
| "我可以跳过测试" | 测试确保技能质量。不要跳过。 |
|
|
328
|
-
| "frontmatter 不重要" | frontmatter 是技能被发现的关键。必须正确。 |
|
|
329
|
-
| "我可以少写几个章节" | 每个章节都有用途。全部填写。 |
|
|
330
|
-
| "命名随便取一个" | 命名影响可发现性。认真取。 |
|
|
331
|
-
| "doctor 检查会失败也没关系" | doctor 检查确保技能可用。必须通过。 |
|
|
332
|
-
| "我可以稍后再补防御表" | 防御表防止合理化。现在就写。 |
|
|
333
|
-
|
|
334
|
-
## 压力测试
|
|
335
|
-
|
|
336
|
-
在声称技能创建完成前,问自己:
|
|
337
|
-
|
|
338
|
-
1. 如果用户完全不了解这个技能,能看懂 SKILL.md 吗?
|
|
339
|
-
2. 如果 AI 没有看到这个技能,会错过什么关键信息?
|
|
340
|
-
3. 如果多个技能同时适用,优先级清晰吗?
|
|
341
|
-
4. 如果技能被误用,后果是什么?如何防止?
|
|
342
|
-
5. 如果技能需要更新,更新路径清晰吗?
|
|
343
|
-
6. 如果其他开发者想贡献,贡献指南明确吗?
|
|
344
|
-
7. 如果技能有 bug,如何发现和修复?
|
|
345
|
-
8. 如果技能与其他技能冲突,如何解决?
|
|
346
|
-
|
|
347
|
-
## 示例:创建一个简单的技能
|
|
348
|
-
|
|
349
|
-
假设要创建一个 `execution-code-review` 技能:
|
|
350
|
-
|
|
351
|
-
1. **需求分析**
|
|
352
|
-
- 名称:`execution-code-review`
|
|
353
|
-
- 职责:指导如何进行代码审查
|
|
354
|
-
- 触发:用户要求审查代码
|
|
355
|
-
|
|
356
|
-
2. **创建目录和文件**
|
|
357
|
-
```bash
|
|
358
|
-
mkdir -p skills/execution-code-review
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
3. **生成 SKILL.md**(使用上方模板)
|
|
362
|
-
|
|
363
|
-
4. **创建测试**(可选)
|
|
364
|
-
```bash
|
|
365
|
-
touch test/execution-code-review.test.ts
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
5. **验证**
|
|
369
|
-
```bash
|
|
370
|
-
specpow doctor
|
|
371
|
-
npx vitest run test/execution-code-review.test.ts
|
|
372
|
-
```
|
|
373
|
-
|
|
374
|
-
完成!
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: meta-using-skills
|
|
3
|
-
description: 系统入口技能。每次会话开始时自动加载。建立"先检查技能再行动"的铁律。融合 Superpowers using-superpowers + OpenSpec 工作流意识。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<SUBAGENT-STOP>
|
|
7
|
-
如果你是被分发去执行特定任务的子代理,忽略此技能。
|
|
8
|
-
</SUBAGENT-STOP>
|
|
9
|
-
|
|
10
|
-
<EXTREMELY-IMPORTANT>
|
|
11
|
-
如果你认为有任何 1% 的可能性某个技能适用于你正在做的事,你绝对必须调用该技能。
|
|
12
|
-
如果一个技能适用于你的任务,你没有选择。你必须使用它。
|
|
13
|
-
这不可协商。你不能合理化地绕过它。
|
|
14
|
-
</EXTREMELY-IMPORTANT>
|
|
15
|
-
|
|
16
|
-
## 铁律
|
|
17
|
-
|
|
18
|
-
**在任何响应或行动之前调用相关技能** — 包括澄清问题、探索代码库、或检查文件。如果它不适合当前情况,你可以不用。
|
|
19
|
-
|
|
20
|
-
**在进入规划模式之前:** 如果你还没有进行头脑风暴,先调用 brainstorming/explore 技能。
|
|
21
|
-
|
|
22
|
-
然后宣布 "使用 [技能名] 用于 [目的]" 并严格遵循技能。如果它有检查清单,为每一项创建一个 todo。
|
|
23
|
-
|
|
24
|
-
## 技能优先级
|
|
25
|
-
|
|
26
|
-
当多个技能适用时,流程技能先行 — 它们设定方法,然后实施技能执行。
|
|
27
|
-
- "让我们构建 X" → 先 explore/brainstorming,然后实施技能
|
|
28
|
-
- "修复这个 bug" → 先 systematic-debugging,然后领域技能
|
|
29
|
-
- "创建新变更" → 先 propose,然后 apply-change
|
|
30
|
-
- "执行任务" → subagent-driven-development
|
|
31
|
-
|
|
32
|
-
## 技能分类
|
|
33
|
-
|
|
34
|
-
### 规划类(先于编码)
|
|
35
|
-
- `explore` — 苏格拉底式需求探索(无承诺)
|
|
36
|
-
- `propose` — 创建变更提案(proposal + specs + design + tasks)
|
|
37
|
-
- `write-plans` — 将设计转化为极详细的实现计划
|
|
38
|
-
|
|
39
|
-
### 执行类(编码阶段)
|
|
40
|
-
- `apply-change` — 执行变更(SDD 引擎驱动)
|
|
41
|
-
- `subagent-driven-dev` — 子代理驱动开发(核心执行引擎)
|
|
42
|
-
- `tdd` — 测试驱动开发(RED-GREEN-REFACTOR)
|
|
43
|
-
- `systematic-debugging` — 4 阶段根因分析
|
|
44
|
-
- `parallel-agents` — 并行子代理调度
|
|
45
|
-
|
|
46
|
-
### 质量类(验证阶段)
|
|
47
|
-
- `requesting-review` — 请求代码审查
|
|
48
|
-
- `receiving-review` — 接收审查反馈
|
|
49
|
-
- `verification-before-completion` — 完成前验证铁律
|
|
50
|
-
- `verify-change` — 规范合规性验证
|
|
51
|
-
|
|
52
|
-
### 业务类(领域能力)
|
|
53
|
-
- `java-codegen` — Java 后端代码生成
|
|
54
|
-
- `ui-codegen` — Vue2 前端代码生成
|
|
55
|
-
- `test-gen` — 测试生成
|
|
56
|
-
- `code-review` — 业务代码审查
|
|
57
|
-
- `db-design` — 数据库设计
|
|
58
|
-
- `prd-writer` — PRD 编写
|
|
59
|
-
- `deploy-check` — 发版检查
|
|
60
|
-
- `doc-sync` — 文档同步
|
|
61
|
-
|
|
62
|
-
## 红旗
|
|
63
|
-
|
|
64
|
-
这些想法意味着 STOP — 你在合理化跳过技能:
|
|
65
|
-
|
|
66
|
-
| 想法 | 现实 |
|
|
67
|
-
|------|------|
|
|
68
|
-
| "这只是个简单问题" | 问题也是任务。检查技能。 |
|
|
69
|
-
| "我需要先了解更多上下文" | 技能检查在澄清问题之前。 |
|
|
70
|
-
| "让我先探索代码库" | 技能告诉你如何探索。先检查。 |
|
|
71
|
-
| "这不需要正式的技能" | 如果技能存在,就使用它。 |
|
|
72
|
-
| "这个技能太重量级了" | 简单的事会变复杂。使用它。 |
|
|
73
|
-
| "我先做这一件事" | 做任何事之前先检查技能。 |
|
|
74
|
-
| "我记得这个技能" | 技能会演进。读当前版本。 |
|
|
75
|
-
| "这不算一个任务" | 行动 = 任务。检查技能。 |
|
|
76
|
-
| "我知道那是什么意思" | 知道概念 ≠ 使用技能。调用它。 |
|
|
77
|
-
|
|
78
|
-
## 平台适配
|
|
79
|
-
|
|
80
|
-
如果你的 AI 工具在此列表中,读取其参考文件获取特殊指令:
|
|
81
|
-
|
|
82
|
-
- Claude Code: `references/claude-tools.md`
|
|
83
|
-
- Cursor: `references/cursor-tools.md`
|
|
84
|
-
- CodeBuddy: `references/codebuddy-tools.md`
|
|
85
|
-
- GitHub Copilot: `references/copilot-tools.md`
|
|
86
|
-
- Codex: `references/codex-tools.md`
|
|
87
|
-
|
|
88
|
-
## 用户指令优先级
|
|
89
|
-
|
|
90
|
-
用户指令(CLAUDE.md, AGENTS.md 等直接请求)优先于技能,技能优先于默认行为。只有当你的搭档明确要求时,才跳过技能工作流。
|
|
91
|
-
|
|
92
|
-
## SpecPow 特有规则
|
|
93
|
-
|
|
94
|
-
1. **规划先于编码** — 任何超过 30 分钟的编码工作,必须先完成 propose 流程
|
|
95
|
-
2. **规范即契约** — specs 中定义的行为必须被实现遵守,SDD 审查会验证
|
|
96
|
-
3. **账本即真理** — 上下文压缩后,信任账本和 git log,而非自己的记忆
|
|
97
|
-
4. **文件即接口** — Agent 之间通过文件通信,不依赖对话上下文
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: meta-writing-skills
|
|
3
|
-
description: SpecPow meta-writing-skills skill
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# 编写技能
|
|
7
|
-
> 指导如何创建新的 SpecPow 技能文件
|
|
8
|
-
|
|
9
|
-
## 触发条件
|
|
10
|
-
|
|
11
|
-
- 用户要求创建新技能
|
|
12
|
-
- 需要扩展 SpecPow 能力
|
|
13
|
-
- 用户提到"写技能"/"创建 SKILL"
|
|
14
|
-
|
|
15
|
-
## 铁律
|
|
16
|
-
|
|
17
|
-
1. **单一职责** — 一个技能只做一件事
|
|
18
|
-
2. **可组合** — 技能之间可以互相引用
|
|
19
|
-
3. **有边界** — 明确什么时候用、什么时候不用
|
|
20
|
-
4. **可测试** — 技能的效果可以验证
|
|
21
|
-
|
|
22
|
-
## 技能文件结构
|
|
23
|
-
```markdown
|
|
24
|
-
# 技能名称
|
|
25
|
-
> 一句话描述技能用途
|
|
26
|
-
|
|
27
|
-
## 触发条件
|
|
28
|
-
- 什么情况下使用这个技能
|
|
29
|
-
|
|
30
|
-
## 铁律
|
|
31
|
-
1. 不可违反的规则
|
|
32
|
-
2. ...
|
|
33
|
-
|
|
34
|
-
## 工作流
|
|
35
|
-
### 阶段 1: ...
|
|
36
|
-
### 阶段 2: ...
|
|
37
|
-
|
|
38
|
-
## 输出格式
|
|
39
|
-
- 期望的输出结果
|
|
40
|
-
|
|
41
|
-
## 红旗(立即停止)
|
|
42
|
-
- 什么情况下必须停止
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
## 命名规范
|
|
46
|
-
|
|
47
|
-
- 目录名: kebab-case(如 `java-codegen`)
|
|
48
|
-
- 文件名: 固定为 `SKILL.md`
|
|
49
|
-
- 分类: planning / execution / quality / business / meta
|
|
50
|
-
|
|
51
|
-
## 技能分类
|
|
52
|
-
| 分类 | 用途 | 示例 |
|
|
53
|
-
|------|------|------|
|
|
54
|
-
| meta | 元技能,管理其他技能 | using-skills, writing-skills |
|
|
55
|
-
| planning | 规划和设计阶段 | explore, propose, write-specs |
|
|
56
|
-
| execution | 执行阶段 | subagent-driven-dev, tdd |
|
|
57
|
-
| quality | 质量保障 | code-review, test-gen |
|
|
58
|
-
| business | 业务特定 | java-codegen, ui-codegen |
|
|
59
|
-
|
|
60
|
-
## 编写原则
|
|
61
|
-
|
|
62
|
-
1. **开头用 `>` 引用块写一句话描述**
|
|
63
|
-
2. **铁律不超过 5 条**
|
|
64
|
-
3. **工作流分阶段,每阶段有明确目标**
|
|
65
|
-
4. **红旗必须具体,不能模糊**
|
|
66
|
-
5. **包含具体示例**
|