spec-manager 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/AGENTS.md +27 -0
- package/CODEBUDDY.md +19 -0
- package/LICENSE +21 -0
- package/README.md +531 -0
- package/dist/cli/audit.d.ts +10 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +62 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/change.d.ts +10 -0
- package/dist/cli/change.d.ts.map +1 -0
- package/dist/cli/change.js +103 -0
- package/dist/cli/change.js.map +1 -0
- package/dist/cli/common.d.ts +5 -0
- package/dist/cli/common.d.ts.map +1 -0
- package/dist/cli/common.js +17 -0
- package/dist/cli/common.js.map +1 -0
- package/dist/cli/decision.d.ts +13 -0
- package/dist/cli/decision.d.ts.map +1 -0
- package/dist/cli/decision.js +185 -0
- package/dist/cli/decision.js.map +1 -0
- package/dist/cli/dict.d.ts +10 -0
- package/dist/cli/dict.d.ts.map +1 -0
- package/dist/cli/dict.js +73 -0
- package/dist/cli/dict.js.map +1 -0
- package/dist/cli/incident.d.ts +10 -0
- package/dist/cli/incident.d.ts.map +1 -0
- package/dist/cli/incident.js +119 -0
- package/dist/cli/incident.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +30 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/project.d.ts +3 -0
- package/dist/cli/project.d.ts.map +1 -0
- package/dist/cli/project.js +144 -0
- package/dist/cli/project.js.map +1 -0
- package/dist/cli/spec.d.ts +3 -0
- package/dist/cli/spec.d.ts.map +1 -0
- package/dist/cli/spec.js +289 -0
- package/dist/cli/spec.js.map +1 -0
- package/dist/cli/task.d.ts +14 -0
- package/dist/cli/task.d.ts.map +1 -0
- package/dist/cli/task.js +287 -0
- package/dist/cli/task.js.map +1 -0
- package/dist/cli/usability.d.ts +3 -0
- package/dist/cli/usability.d.ts.map +1 -0
- package/dist/cli/usability.js +153 -0
- package/dist/cli/usability.js.map +1 -0
- package/dist/core/agents.d.ts +43 -0
- package/dist/core/agents.d.ts.map +1 -0
- package/dist/core/agents.js +194 -0
- package/dist/core/agents.js.map +1 -0
- package/dist/core/archive.d.ts +35 -0
- package/dist/core/archive.d.ts.map +1 -0
- package/dist/core/archive.js +360 -0
- package/dist/core/archive.js.map +1 -0
- package/dist/core/audit-events.d.ts +12 -0
- package/dist/core/audit-events.d.ts.map +1 -0
- package/dist/core/audit-events.js +16 -0
- package/dist/core/audit-events.js.map +1 -0
- package/dist/core/audit.d.ts +78 -0
- package/dist/core/audit.d.ts.map +1 -0
- package/dist/core/audit.js +157 -0
- package/dist/core/audit.js.map +1 -0
- package/dist/core/constants.d.ts +28 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +30 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/decision.d.ts +69 -0
- package/dist/core/decision.d.ts.map +1 -0
- package/dist/core/decision.js +210 -0
- package/dist/core/decision.js.map +1 -0
- package/dist/core/delta.d.ts +85 -0
- package/dist/core/delta.d.ts.map +1 -0
- package/dist/core/delta.js +264 -0
- package/dist/core/delta.js.map +1 -0
- package/dist/core/dict.d.ts +28 -0
- package/dist/core/dict.d.ts.map +1 -0
- package/dist/core/dict.js +57 -0
- package/dist/core/dict.js.map +1 -0
- package/dist/core/frontmatter.d.ts +19 -0
- package/dist/core/frontmatter.d.ts.map +1 -0
- package/dist/core/frontmatter.js +57 -0
- package/dist/core/frontmatter.js.map +1 -0
- package/dist/core/incident.d.ts +45 -0
- package/dist/core/incident.d.ts.map +1 -0
- package/dist/core/incident.js +128 -0
- package/dist/core/incident.js.map +1 -0
- package/dist/core/paths.d.ts +68 -0
- package/dist/core/paths.d.ts.map +1 -0
- package/dist/core/paths.js +162 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/repository.d.ts +13 -0
- package/dist/core/repository.d.ts.map +1 -0
- package/dist/core/repository.js +29 -0
- package/dist/core/repository.js.map +1 -0
- package/dist/core/spec-io.d.ts +125 -0
- package/dist/core/spec-io.d.ts.map +1 -0
- package/dist/core/spec-io.js +260 -0
- package/dist/core/spec-io.js.map +1 -0
- package/dist/core/status.d.ts +22 -0
- package/dist/core/status.d.ts.map +1 -0
- package/dist/core/status.js +54 -0
- package/dist/core/status.js.map +1 -0
- package/dist/core/task.d.ts +118 -0
- package/dist/core/task.d.ts.map +1 -0
- package/dist/core/task.js +340 -0
- package/dist/core/task.js.map +1 -0
- package/dist/core/usability.d.ts +25 -0
- package/dist/core/usability.d.ts.map +1 -0
- package/dist/core/usability.js +136 -0
- package/dist/core/usability.js.map +1 -0
- package/dist/core/validate.d.ts +34 -0
- package/dist/core/validate.d.ts.map +1 -0
- package/dist/core/validate.js +195 -0
- package/dist/core/validate.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/change.d.ts +138 -0
- package/dist/schemas/change.d.ts.map +1 -0
- package/dist/schemas/change.js +38 -0
- package/dist/schemas/change.js.map +1 -0
- package/dist/schemas/spec.d.ts +233 -0
- package/dist/schemas/spec.d.ts.map +1 -0
- package/dist/schemas/spec.js +56 -0
- package/dist/schemas/spec.js.map +1 -0
- package/package.json +66 -0
- package/rules/_TEMPLATE.md +20 -0
- package/rules/code-discipline.md +47 -0
- package/rules/codebase-survey.md +37 -0
- package/rules/delta.md +42 -0
- package/rules/doc-governance.md +195 -0
- package/rules/flow-control.md +65 -0
- package/rules/quality-gate.md +73 -0
- package/skill/SKILL.md +90 -0
- package/skill/subskills/adr.md +73 -0
- package/skill/subskills/change.md +118 -0
- package/skill/subskills/design.md +53 -0
- package/skill/subskills/impl.md +100 -0
- package/skill/subskills/plan.md +46 -0
- package/skill/subskills/postmortem.md +77 -0
- package/skill/subskills/prd.md +72 -0
- package/skill/subskills/quick.md +25 -0
- package/skill/subskills/release.md +50 -0
- package/skill/subskills/research.md +35 -0
- package/skill/subskills/runbook.md +44 -0
- package/skill/subskills/testplan.md +48 -0
- package/templates/L0-prd.md +43 -0
- package/templates/L1-prd.md +130 -0
- package/templates/L2-design.md +135 -0
- package/templates/L3-impl.md +125 -0
- package/templates/agent-plan.json +17 -0
- package/templates/agents/AGENTS.md +27 -0
- package/templates/agents/CLAUDE.md +11 -0
- package/templates/agents/CODEBUDDY.md +23 -0
- package/templates/agents/codebuddy-skill/SKILL.md +46 -0
- package/templates/decision.md +42 -0
package/skill/SKILL.md
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "Spec-driven project iteration workflow — L1 PRD → L2 Design → L3 Impl → Agent Task → Deploy, with human review gates at each layer. Pure local markdown storage, no MCP, no network. Use when the user invokes /spec-manager or asks for: new feature/PRD, technical design, implementation spec, agent task, iteration plan, test plan, release notes, runbook, postmortem, or ADR."
|
|
3
|
+
argument-hint: "<需求描述> | run <taskId>"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# spec-manager — 本地项目迭代全链路
|
|
7
|
+
|
|
8
|
+
PRD → Design → Spec → Agent Task → 部署。**纯本地**,所有数据落 markdown + git。
|
|
9
|
+
|
|
10
|
+
## 用法
|
|
11
|
+
|
|
12
|
+
- `/spec-manager <需求>` — 从需求开始走完整链路
|
|
13
|
+
- `/spec-manager run <taskId>` — 执行已有 Agent Task
|
|
14
|
+
|
|
15
|
+
## 入口路由
|
|
16
|
+
|
|
17
|
+
收到 `/spec-manager <用户输入>` 时,按下表匹配子 skill;不确定时用当前工具的用户提问能力澄清。关键词重叠按 # 小者优先。
|
|
18
|
+
|
|
19
|
+
| # | 关键词 | 子 skill | 产出 |
|
|
20
|
+
|---|---|---|---|
|
|
21
|
+
| 1 | 修 typo / 改一行 / 改 log level | [subskills/quick.md](subskills/quick.md) | quick |
|
|
22
|
+
| 2 | 查 / 看 / 列 / 统计 / 搜索 | [subskills/research.md](subskills/research.md) | (只读) |
|
|
23
|
+
| 3 | 需求 / 新功能 / 痛点 / 用户故事 | [subskills/prd.md](subskills/prd.md) | L1 |
|
|
24
|
+
| 4 | 技术方案 / 架构 / 接口设计 | [subskills/design.md](subskills/design.md) | L2 |
|
|
25
|
+
| 5 | 实施 / 编码 / planJson | [subskills/impl.md](subskills/impl.md) | L3 |
|
|
26
|
+
| 6 | 计划 / 里程碑 / 排期 | [subskills/plan.md](subskills/plan.md) | plan |
|
|
27
|
+
| 7 | 测试方案 / QA / 测试用例 | [subskills/testplan.md](subskills/testplan.md) | testplan |
|
|
28
|
+
| 8 | 发布 / changelog / release | [subskills/release.md](subskills/release.md) | release |
|
|
29
|
+
| 9 | 运维手册 / oncall | [subskills/runbook.md](subskills/runbook.md) | runbook |
|
|
30
|
+
| 10 | 复盘 / postmortem / RCA | [subskills/postmortem.md](subskills/postmortem.md) | postmortem |
|
|
31
|
+
| 11 | ADR / 为什么选 X | [subskills/adr.md](subskills/adr.md) | decision |
|
|
32
|
+
| 12 | delta / change / 增量 | [subskills/change.md](subskills/change.md) | change |
|
|
33
|
+
|
|
34
|
+
**消歧规则**: 关键词重叠时小 # 优先;看不懂意图不要猜,先问用户;2 次仍无法定位则停止走 /spec-manager。
|
|
35
|
+
|
|
36
|
+
## 方法论
|
|
37
|
+
|
|
38
|
+
| 层 | 产物 | 核心约束 |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| L1 PRD | 需求文档 | 新功能必须先写 |
|
|
41
|
+
| L2 Design | 技术设计 | confirmed 才能进实施 |
|
|
42
|
+
| L3 Impl | 实施规格 | ≤20 步,frozen 后建 Task |
|
|
43
|
+
|
|
44
|
+
## 规则(24 条,按 applies_to 过滤)
|
|
45
|
+
|
|
46
|
+
| 主题 | 规则 | 文件 |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| 流程控制 | R1-R4 停下审核/状态归用户/frozen 才建 Task | [rules/flow-control.md](rules/flow-control.md) |
|
|
49
|
+
| 质量门禁 | R5/R6/R10/R15/R18 不跳步/planJson 校验 | [rules/quality-gate.md](rules/quality-gate.md) |
|
|
50
|
+
| 文档治理 | R7/R11/R13/R14/R16-R22 层级绑定/aiSummary | [rules/doc-governance.md](rules/doc-governance.md) |
|
|
51
|
+
| 代码纪律 | R8/R9/R12 改代码前自检 | [rules/code-discipline.md](rules/code-discipline.md) |
|
|
52
|
+
| 代码调查 | R23 Spec 前必须基于实际代码 | [rules/codebase-survey.md](rules/codebase-survey.md) |
|
|
53
|
+
| Delta | R24 delta 必须含 proposal | [rules/delta.md](rules/delta.md) |
|
|
54
|
+
|
|
55
|
+
## Spec 状态流
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
draft → confirmed → frozen → implemented
|
|
59
|
+
AI agent 用户 用户 task_complete
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## CLI 概要
|
|
63
|
+
|
|
64
|
+
`spec-manager <command> --help` 查看完整用法。主要命令组:
|
|
65
|
+
|
|
66
|
+
- `project init|status` — 初始化/总览
|
|
67
|
+
- `spec new|list|show|update|confirm|freeze|implement|validate|add-relation` — Spec CRUD
|
|
68
|
+
- `task create|start|step|complete|fail|wait|show|list` — Agent Task
|
|
69
|
+
- `decision create|list|show|update|set-partial|supersede` — 决策卡片
|
|
70
|
+
- `change new|archive|list|show` — Delta spec
|
|
71
|
+
- `incident new|list` — 事故记录
|
|
72
|
+
- `audit hit|report|show` — 规则审计
|
|
73
|
+
|
|
74
|
+
## 数据布局
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
<project>/
|
|
78
|
+
├── .spec-manager/ # config + audit + incidents
|
|
79
|
+
├── specs/<topic>/ # spec 平铺(点分编号自文档化层级)
|
|
80
|
+
│ ├── <L1-code>-<date>.md
|
|
81
|
+
│ ├── <L2-code>-<date>.md
|
|
82
|
+
│ ├── <L3-code>[-desc]-<date>.md
|
|
83
|
+
│ ├── decisions/ # 决策卡片(topic 级别)
|
|
84
|
+
│ └── tasks/ # Agent Task(topic 级别)
|
|
85
|
+
│ └── <specCode>-<taskId>.json
|
|
86
|
+
├── changes/<name>/ # delta 提案
|
|
87
|
+
└── archive/<name>/ # 已合并 change
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
违反任一规则视为流程事故,参照 `.spec-manager/incidents/_TEMPLATE.md` 记录。
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# ADR 子 skill — 架构决策记录
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
|
|
5
|
+
**优先用 `decision create` 命令**(结构化 what/why/affectedCriteria + topic 查询),非必要不新增 adr 文档。
|
|
6
|
+
|
|
7
|
+
## Decision vs ADR 的选择
|
|
8
|
+
|
|
9
|
+
| 维度 | Decision Card(推荐) | ADR 文档 |
|
|
10
|
+
|------|----------------------|----------|
|
|
11
|
+
| 存储 | `specs/<topic>/decisions/DC-NNN.md`(topic 级别) | `adrs/NNNN-title.md` |
|
|
12
|
+
| 字段 | what/why/affectedCriteria | 全文 Markdown |
|
|
13
|
+
| 状态机 | active/superseded/partial | N/A(顺序追加) |
|
|
14
|
+
| 查询 | `decision list --topic X` | 扫文件 |
|
|
15
|
+
| 强制 | R18 强制 L1 implemented 后建 | 不强制 |
|
|
16
|
+
|
|
17
|
+
## Decision 创建流程
|
|
18
|
+
|
|
19
|
+
1. 触发条件:L1 spec 走到 `implemented`
|
|
20
|
+
2. 必走:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
spec-manager decision create 2026-06-04-a1b2c3 \
|
|
24
|
+
--topic auth \
|
|
25
|
+
--what "采用 JWT 而非 session" \
|
|
26
|
+
--why "无状态扩展,便于多服务共享身份" \
|
|
27
|
+
--criteria "AC-1,AC-2"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
3. supersede:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# 旧决策被新决策取代
|
|
34
|
+
spec-manager decision supersede DC-001 --by DC-002
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## ADR 创建流程(少数情况)
|
|
38
|
+
|
|
39
|
+
如果决策需要:
|
|
40
|
+
- 大段背景 / 备选方案对比 / 详细 trade-off
|
|
41
|
+
- 多人评审记录
|
|
42
|
+
|
|
43
|
+
则走 ADR:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
mkdir -p adrs
|
|
47
|
+
cat > adrs/0007-use-paseto.md <<'EOF'
|
|
48
|
+
# 7. 用 PASETO 替代 JWT
|
|
49
|
+
|
|
50
|
+
## 背景
|
|
51
|
+
JWT 有 alg=none 等已知攻击面...
|
|
52
|
+
|
|
53
|
+
## 候选方案
|
|
54
|
+
1. 继续 JWT + 严格校验 alg
|
|
55
|
+
2. PASETO(平台无关安全 token)
|
|
56
|
+
3. 自研 session
|
|
57
|
+
|
|
58
|
+
## 决定
|
|
59
|
+
方案 2
|
|
60
|
+
|
|
61
|
+
## 影响
|
|
62
|
+
- 库替换:jose → paseto
|
|
63
|
+
- 决策卡片:DC-002
|
|
64
|
+
|
|
65
|
+
## 关联
|
|
66
|
+
- spec: 2026-06-04-a1b2c3
|
|
67
|
+
- decision: DC-002
|
|
68
|
+
EOF
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 关联规则
|
|
72
|
+
|
|
73
|
+
- R18 L1 implemented 后必须建决策卡片(ADR 不替代)
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# Change 子 skill — Delta Spec 提案(OpenSpec 风格)
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
|
|
5
|
+
当需要**修改已存在的 spec** 时(不是新建一个 L1/L2/L3),用 change 提案:
|
|
6
|
+
- 比"改 spec 文件 + git diff"更结构化
|
|
7
|
+
- archive 时机 = 知识合并点(带 proposal + delta spec 的完整审计轨迹)
|
|
8
|
+
- 比"另起一个 v2 spec"更轻量
|
|
9
|
+
|
|
10
|
+
## 流程
|
|
11
|
+
|
|
12
|
+
1. 创建 change 目录:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
spec-manager change new add-2fa --description "新增 2FA 双因素认证"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
输出:
|
|
19
|
+
```
|
|
20
|
+
changes/add-2fa/
|
|
21
|
+
├── README.md
|
|
22
|
+
├── proposal.md ← 填写 why/scope/risk
|
|
23
|
+
├── deltas/ ← 在这里创建 <spec-code>.md
|
|
24
|
+
└── specs/auth/ ← ADDED 时放新 spec 占位
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. 写 `proposal.md` frontmatter(why + scope 必填):
|
|
28
|
+
|
|
29
|
+
```yaml
|
|
30
|
+
---
|
|
31
|
+
name: add-2fa
|
|
32
|
+
why: 高频账号被盗事件
|
|
33
|
+
scope: auth L1 加 2FA 需求
|
|
34
|
+
risk: 用户登录多一步
|
|
35
|
+
rollback: 移除 2FA 强制,保留可选
|
|
36
|
+
affectedCriteria:
|
|
37
|
+
- AC-1
|
|
38
|
+
- AC-2
|
|
39
|
+
---
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
3. 写 delta spec 文件 `deltas/<code>.md`:
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
---
|
|
46
|
+
code: 2026-06-04-a1b2c3
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## MODIFIED Requirements
|
|
50
|
+
|
|
51
|
+
### Requirement: 2026-06-04-a1b2c3
|
|
52
|
+
## 2FA 强制
|
|
53
|
+
|
|
54
|
+
登录成功后系统 **SHALL** 要求 TOTP 二次校验。
|
|
55
|
+
**SHALL NOT** 仅靠密码判定身份。
|
|
56
|
+
|
|
57
|
+
## 范围边界
|
|
58
|
+
- 邮箱 + 密码
|
|
59
|
+
- TOTP
|
|
60
|
+
- 备份码
|
|
61
|
+
|
|
62
|
+
## 验收标准
|
|
63
|
+
1. **AC-1-2fa**: **Given** 用户登录成功 **When** 系统检测未配置 2FA **Then** **SHALL** 引导用户设置
|
|
64
|
+
2. **AC-2-2fa**: **Given** 用户已配置 2FA **When** 登录 **Then** **SHALL** 要求 TOTP
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
支持 4 种 op:
|
|
68
|
+
- `## ADDED Requirements` — 新增 spec
|
|
69
|
+
- `## MODIFIED Requirements` — 修改 spec
|
|
70
|
+
- `## REMOVED Requirements` — 删除 spec
|
|
71
|
+
- `## RENAMED Requirements` — 改名 spec(`- FROM: X TO: Y`)
|
|
72
|
+
|
|
73
|
+
4. ADDED 时需要 `changes/<name>/specs/<topic>/<code>/<code>.md` 占位文件(含 frontmatter level/title/parentCode)—— 占位文件按 `<code>/<code>.md` 嵌套存放(仅限 changes/ 目录),archive 时由 `archiveChange` 根据 `parentCode` 创建到主 specs 平铺目录:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
mkdir -p changes/add-2fa/specs/auth/auth-L2.1
|
|
77
|
+
cat > changes/add-2fa/specs/auth/auth-L2.1/auth-L2.1.md <<'EOF'
|
|
78
|
+
---
|
|
79
|
+
code: auth-L2.1
|
|
80
|
+
level: L2
|
|
81
|
+
title: 2FA 后端设计
|
|
82
|
+
topic: auth
|
|
83
|
+
parentCode: auth-L1
|
|
84
|
+
status: draft
|
|
85
|
+
project: 1
|
|
86
|
+
---
|
|
87
|
+
# 占位
|
|
88
|
+
EOF
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
5. 应用:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
spec-manager change archive add-2fa
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
输出(按 RENAMED→REMOVED→MODIFIED→ADDED 顺序):
|
|
98
|
+
```
|
|
99
|
+
✓ Change add-2fa archived
|
|
100
|
+
applied: 2
|
|
101
|
+
[MODIFIED] 2026-06-04-a1b2c3
|
|
102
|
+
[ADDED] 2026-06-05-d4e5f6
|
|
103
|
+
archived to: archive/add-2fa
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
archive 会自动:
|
|
107
|
+
- 把 deltas/ 内容追加到主 spec 的 `## Delta (<name>)` 段
|
|
108
|
+
- 创建 ADDED 的新 spec
|
|
109
|
+
- REMOVED 把主 spec 移到 archive/
|
|
110
|
+
- RENAMED 改文件路径 + frontmatter code
|
|
111
|
+
- 整个 changes/<name>/ 目录移到 archive/<name>/
|
|
112
|
+
- 写 audit hit R24
|
|
113
|
+
|
|
114
|
+
## 关联规则
|
|
115
|
+
|
|
116
|
+
- R14 跨层引用用 code 不是复述
|
|
117
|
+
- R24 delta change 必须含 proposal + delta spec
|
|
118
|
+
- R18 L1 implemented 后必须建决策卡片(改动 L1 时同步建/改 decision)
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Sub-skill: Design (L2)
|
|
2
|
+
|
|
3
|
+
## 路由自检
|
|
4
|
+
|
|
5
|
+
✓ 走本 skill 的信号:用户说"技术方案/架构/选型/接口设计/数据模型/可选方案"
|
|
6
|
+
✗ 不走的信号:用户说"业务需求"(→ prd.md)或"实施"(→ impl.md)或"typo"(→ quick.md)
|
|
7
|
+
|
|
8
|
+
## 模板
|
|
9
|
+
|
|
10
|
+
- [templates/L2-design.md](../templates/L2-design.md)
|
|
11
|
+
|
|
12
|
+
## 流程
|
|
13
|
+
|
|
14
|
+
### L2 Spec 创建
|
|
15
|
+
|
|
16
|
+
1. **确认父 L1**:`spec-manager spec show <L1 code>`(默认 narrow 视图读 aiSummary)
|
|
17
|
+
> 🔍 **R19 自检**: 研究/跨层是否只读 aiSummary?→ `spec-manager audit hit R19`
|
|
18
|
+
2. **L2 全文读父**(R19 跨层设计强制):写 L2 正文前必须 `spec show <L1 code> --include-content` 读父 L1 全文
|
|
19
|
+
3. **Level 2 代码调查**(R23):Read ≥3 个源文件了解模块
|
|
20
|
+
4. **创建 L2**:
|
|
21
|
+
```bash
|
|
22
|
+
spec-manager spec new L2 --topic <topic> --title "..." --parent <L1 code> # --code 不传则自动生成
|
|
23
|
+
```
|
|
24
|
+
> 🔍 **R7 自检**: L2 是否绑定了父 L1?→ `spec-manager audit hit R7`
|
|
25
|
+
5. **写正文**:
|
|
26
|
+
```bash
|
|
27
|
+
spec-manager spec update <code> --content ./draft.md --ai-summary "..." --change-summary "..."
|
|
28
|
+
```
|
|
29
|
+
L2 必填段:方案概述 / 受影响模块 / 接口契约 / L3 裂变计划
|
|
30
|
+
6. 🛑 **等用户审核**(R1)
|
|
31
|
+
7. 用户批准 → `spec-manager spec confirm <code>`(R2)
|
|
32
|
+
|
|
33
|
+
## L2 是架构拆解(R17)
|
|
34
|
+
|
|
35
|
+
- L1:L2 比例 1:1 或 1:2
|
|
36
|
+
- 按模块边界拆,不是功能点
|
|
37
|
+
- L2 裂变计划表格列出所有 L3
|
|
38
|
+
|
|
39
|
+
## 与主 SKILL.md 关系
|
|
40
|
+
|
|
41
|
+
L2 confirmed 后,路由到 `subskills/impl.md` 继续 L3。
|
|
42
|
+
|
|
43
|
+
## 适用规则
|
|
44
|
+
|
|
45
|
+
R1 / R2 / R4 / R7 / R13 / R14 / R17 / R19 / R22 / R23
|
|
46
|
+
|
|
47
|
+
## 相关规则(按需加载)
|
|
48
|
+
|
|
49
|
+
| 规则 ID | 文件 | 适用场景 |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| R7/R14/R17 | [rules/doc-governance.md](../rules/doc-governance.md) | 层级绑定 / 跨层引用 / 架构拆解 |
|
|
52
|
+
| R19 | [rules/doc-governance.md](../rules/doc-governance.md) | 写 L2 前必读父 L1 全文 |
|
|
53
|
+
| R23 | [rules/codebase-survey.md](../rules/codebase-survey.md) | Level 2 模块深潜(≥3 源文件) |
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Sub-skill: Impl (L3 + Agent Task)
|
|
2
|
+
|
|
3
|
+
## 路由自检
|
|
4
|
+
|
|
5
|
+
✓ 走本 skill 的信号:用户说"实施/实现/编码/写代码/具体文件/planJson"
|
|
6
|
+
✗ 不走的信号:用户说"业务需求"(→ prd.md)或"架构设计"(→ design.md)或"typo"(→ quick.md)
|
|
7
|
+
|
|
8
|
+
## 模板
|
|
9
|
+
|
|
10
|
+
- [templates/L3-impl.md](../templates/L3-impl.md)
|
|
11
|
+
- [templates/agent-plan.json](../templates/agent-plan.json)(planJson 字段名 stepNo/stepType/name)
|
|
12
|
+
|
|
13
|
+
## 流程
|
|
14
|
+
|
|
15
|
+
### L3 Spec 创建
|
|
16
|
+
|
|
17
|
+
1. **确认父 L2**:`spec-manager spec show <L2 code>`
|
|
18
|
+
> ☑ **R7**: L3 必须绑父 L2(违反时 CLI 自动 audit hit,见 `audit show`)
|
|
19
|
+
2. **L3 全文读父**(R19 跨层设计强制):`spec show <L2 code> --include-content`
|
|
20
|
+
3. **文件级分析(Level 3)**(R23):
|
|
21
|
+
- 读 L2"受影响模块"中的每个文件,确认存在
|
|
22
|
+
- 追踪 import/依赖:`grep -rn "functionName" <module-dir>`
|
|
23
|
+
- 识别测试文件:`find <module-dir>/../test -name "*Test*"`
|
|
24
|
+
> ☑ **R23** / **R12** / **R8** — 流程规则,人工把关
|
|
25
|
+
4. **创建 L3**:
|
|
26
|
+
```bash
|
|
27
|
+
spec-manager spec new L3 --topic <topic> --title "..." --parent <L2 code> # --code 不传则自动生成
|
|
28
|
+
```
|
|
29
|
+
> ☑ **R20** — 流程规则:scope-split L2 时所有子 L3 一次建齐
|
|
30
|
+
5. **写正文**:
|
|
31
|
+
```bash
|
|
32
|
+
spec-manager spec update <code> --content ./draft.md --ai-summary "..." --change-summary "..."
|
|
33
|
+
```
|
|
34
|
+
L3 必填段:目标 / 实施步骤 / 验证命令
|
|
35
|
+
planJson ≤ 20 步(用户授权 ≤10 — R11),Step 1 上下文收集,末步验证(R10)
|
|
36
|
+
```bash
|
|
37
|
+
spec-manager spec validate-plan ./plan.json # R10/R11 校验,违反时自动 audit hit
|
|
38
|
+
```
|
|
39
|
+
> ☑ **R11** / **R10** — `validate-plan` 违反时自动 audit hit
|
|
40
|
+
> ☑ **R13** / **R21** — `--ai-summary` ≤300 字符(CLI 截断,>300 自动 warn)
|
|
41
|
+
> ☑ **R14** / **R22** — 流程规则,人工把关
|
|
42
|
+
6. 🛑 **等用户审核**(R1)— 流程规则,停下等用户信号
|
|
43
|
+
7. 用户批准 → `spec-manager spec confirm <code>` → 用户再批准 → `spec-manager spec freeze <code>`
|
|
44
|
+
> ☑ **R2** / **R4** — 流程规则:状态由用户推进,每层独立审核
|
|
45
|
+
> CLI 在 `confirm`/`freeze` 之前会校验 R22(contentTemplate 非空)
|
|
46
|
+
|
|
47
|
+
### Agent Task 执行
|
|
48
|
+
|
|
49
|
+
8. **查历史任务**(连续性层):
|
|
50
|
+
```bash
|
|
51
|
+
spec-manager task list --topic <topic>
|
|
52
|
+
```
|
|
53
|
+
了解同主题已有实现模式,复用成功的步骤顺序,避免重复踩坑。
|
|
54
|
+
9. **frozen 才可建 Task**(R3):
|
|
55
|
+
```bash
|
|
56
|
+
spec-manager task create <L3 code> --plan ./plan.json --auto-confirm
|
|
57
|
+
```
|
|
58
|
+
> ☑ **R3** — 非 frozen 时 CLI 拒绝并 audit hit
|
|
59
|
+
10. `spec-manager task start <task-id>`
|
|
60
|
+
11. 逐步 `spec-manager task step <task-id> --no N --type T --name S --status ok --output-json J --latency L`
|
|
61
|
+
- 禁跳步(R5)
|
|
62
|
+
- outputJson 必含 summary(R15)
|
|
63
|
+
- step_report 必须在工作完成后才报(R15)
|
|
64
|
+
> ☑ **R5** — `task complete` 时仍有 pending/running 步会拒绝并报错
|
|
65
|
+
> ☑ **R15** — outputJson 缺 summary 时 warning 落 warn 数组
|
|
66
|
+
12. `spec-manager task complete <task-id>`
|
|
67
|
+
> 完成后看 `cascadedL1Specs`,对每个 L1 用 `decision list --doc-code <L1>` 查是否已建决策卡
|
|
68
|
+
> ☑ **R6** — 流程规则:确认 cascade 后再标 implemented
|
|
69
|
+
13. 若仍 frozen,手动 `spec-manager spec implement <L3 code>`
|
|
70
|
+
14. L1 implemented 后必须 ≥1 张决策卡片(R18)
|
|
71
|
+
> ☑ **R18** — task complete 触发 L1 cascade 时 CLI 自动 audit hit,提示待建决策卡
|
|
72
|
+
15. 规则审计合规检查:
|
|
73
|
+
```bash
|
|
74
|
+
spec-manager audit show
|
|
75
|
+
```
|
|
76
|
+
确认最低合规基线通过(R1≥1, R4≥1, R13≥1, R22≥1)
|
|
77
|
+
|
|
78
|
+
## 与主 SKILL.md 关系
|
|
79
|
+
|
|
80
|
+
L2 confirmed 后进入本 skill。Agent Task 完成后走 `/deploy` skill 部署。
|
|
81
|
+
|
|
82
|
+
## 适用规则
|
|
83
|
+
|
|
84
|
+
R1 / R2 / R3 / R4 / R5 / R6 / R7 / R8 / R10 / R11 / R12 / R13 / R14 / R15 / R18 / R20 / R22 / R23
|
|
85
|
+
|
|
86
|
+
## 相关规则(按需加载)
|
|
87
|
+
|
|
88
|
+
| 规则 ID | 文件 | 适用场景 | 类型 |
|
|
89
|
+
|---|---|---|---|
|
|
90
|
+
| R1/R2/R4 | [rules/flow-control.md](../rules/flow-control.md) | 停下审核 / 状态归用户 / 每层独立 | 流程 |
|
|
91
|
+
| R3/R5/R6 | [rules/flow-control.md](../rules/flow-control.md) + [rules/quality-gate.md](../rules/quality-gate.md) | frozen 才建 Task / 不跳步 / task 后校验 | 流程 + 代码 |
|
|
92
|
+
| R7/R11/R13/R14/R22 | [rules/doc-governance.md](../rules/doc-governance.md) | 层级绑定 / 粒度 / aiSummary / 跨层引用 / 创建即写正文 | 代码 + 流程 |
|
|
93
|
+
| R8/R12 | [rules/code-discipline.md](../rules/code-discipline.md) | 改代码前自检 / 禁凭记忆 | 流程 |
|
|
94
|
+
| R10/R15/R18 | [rules/quality-gate.md](../rules/quality-gate.md) | planJson 必含验证 / step 必含 summary / 决策卡片 | 代码 |
|
|
95
|
+
| R20 | [rules/doc-governance.md](../rules/doc-governance.md) | scope-split 批量建齐 | 流程 |
|
|
96
|
+
| R23 | [rules/codebase-survey.md](../rules/codebase-survey.md) | Level 3 文件级分析 | 流程 |
|
|
97
|
+
|
|
98
|
+
**类型说明**:
|
|
99
|
+
- **代码**:违反时 CLI 自动抛错或 audit hit
|
|
100
|
+
- **流程**:无自动审计,人工把关
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Plan 子 skill — 实施计划(不是 L2 架构设计)
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
|
|
5
|
+
为已确认的 L2 spec 写"实施计划"(plan.md):
|
|
6
|
+
- **不是 L2 的架构设计**(L2 是"为什么这么做 / 怎么拆模块")
|
|
7
|
+
- plan.md 是"接下来几周按什么顺序做什么",可被任意角色读取
|
|
8
|
+
- 与 Agent Task 的关系:plan.md 是 task 的上游,task 是 plan 的执行
|
|
9
|
+
|
|
10
|
+
## 流程
|
|
11
|
+
|
|
12
|
+
1. 读父 L2 spec
|
|
13
|
+
2. 用 `spec new L3` 创建 L3 spec(已有则跳过)
|
|
14
|
+
3. 写 `plan.md`:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
spec-manager spec show 2026-06-04-b2c3d4 --include-content
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
4. `plan.md` 结构:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
# <L2 title> 实施计划
|
|
24
|
+
|
|
25
|
+
## 阶段拆分
|
|
26
|
+
- 阶段 1(M1):<一句话目标>
|
|
27
|
+
- 阶段 2(M2):<一句话目标>
|
|
28
|
+
- ...
|
|
29
|
+
|
|
30
|
+
## 每个阶段交付
|
|
31
|
+
- M1:L3 spec 列表 + 预期工时
|
|
32
|
+
- M2:...
|
|
33
|
+
|
|
34
|
+
## 风险
|
|
35
|
+
- ...
|
|
36
|
+
|
|
37
|
+
## 里程碑 Spec
|
|
38
|
+
- M1: <link to L3 spec>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
5. 写完用 `spec update` 把它存到 spec 的 frontmatter `changeSummary` 或专门建一个 plan/ 目录
|
|
42
|
+
|
|
43
|
+
## 关联规则
|
|
44
|
+
|
|
45
|
+
- R17 L2 是架构拆解不是 todolist(plan.md 才是 todolist)
|
|
46
|
+
- R20 scope-split 批量建齐子 L3
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Postmortem 子 skill — Blameless 复盘
|
|
2
|
+
|
|
3
|
+
## 用途
|
|
4
|
+
|
|
5
|
+
故障复盘(Blameless 风格):
|
|
6
|
+
- 不指责个人,关注系统和流程
|
|
7
|
+
- 5 Whys 找根因
|
|
8
|
+
- 输出 action items → 改 spec / 改 runbook / 改规则
|
|
9
|
+
|
|
10
|
+
## 流程
|
|
11
|
+
|
|
12
|
+
1. 找到对应 incident:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
spec-manager incident list --status resolved
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
2. 创建 postmortem:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
mkdir -p postmortems
|
|
22
|
+
cat > postmortems/INC-20260604-001-postmortem.md <<'EOF'
|
|
23
|
+
# INC-20260604-001 复盘 — R15 step outputJson 缺 summary
|
|
24
|
+
|
|
25
|
+
## 时间线
|
|
26
|
+
- 10:41 任务开始
|
|
27
|
+
- 10:42 step 3 重试时漏掉 summary
|
|
28
|
+
- 10:45 发现并补 summary
|
|
29
|
+
- 10:50 task complete
|
|
30
|
+
|
|
31
|
+
## 5 Whys
|
|
32
|
+
1. 为什么 outputJson 缺 summary?—— Agent 模板里只在 happy path 加了
|
|
33
|
+
2. 为什么模板不一致?—— 模板没强制 summary
|
|
34
|
+
3. 为什么没强校验?—— CLI 没把 R15 warning 转 throw
|
|
35
|
+
4. 为什么没早发现?—— task show 不显示 warning
|
|
36
|
+
5. 为什么?—— R15 是软约束
|
|
37
|
+
|
|
38
|
+
## 根因
|
|
39
|
+
R15 是软约束(warning),缺乏 hard fail 机制
|
|
40
|
+
|
|
41
|
+
## Action Items
|
|
42
|
+
- [ ] spec-manager task step 校验 R15,缺 summary 时 hard fail(PR #123)
|
|
43
|
+
- [ ] skill impl.md 写明"outputJson 必含 summary"红线
|
|
44
|
+
- [ ] decision:升 R15 为 hard constraint?DC-003 待评估
|
|
45
|
+
|
|
46
|
+
## 关联
|
|
47
|
+
- incident: INC-20260604-001
|
|
48
|
+
- spec: 2026-06-04-c3d4e5
|
|
49
|
+
- 规则: R15
|
|
50
|
+
EOF
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
3. 同步更新 runbook / decision / spec
|
|
54
|
+
|
|
55
|
+
## 决策错误的复盘
|
|
56
|
+
|
|
57
|
+
如果事故根因追溯到一张「错」的决策卡片(DC-XXX),复盘要补两件事:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 1) 标记该决策为 partial(部分被取代/作废)
|
|
61
|
+
spec-manager decision set-partial DC-001 --reason "INC-20260604-001 复盘:AC-3 设计假设不成立"
|
|
62
|
+
|
|
63
|
+
# 2) 用新决策 supersede 旧的
|
|
64
|
+
spec-manager decision create <L1 code> \
|
|
65
|
+
--topic <topic> \
|
|
66
|
+
--what "改用 X 而非 Y" \
|
|
67
|
+
--why "INC-20260604-001:旧决策 AC-3 在 <场景> 下不成立" \
|
|
68
|
+
--criteria AC-3
|
|
69
|
+
|
|
70
|
+
spec-manager decision supersede DC-001 --by DC-002
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
这样多轮迭代后,`decision list --criteria AC-3` 能返回完整历史(active / superseded / partial)。
|
|
74
|
+
|
|
75
|
+
## 关联规则
|
|
76
|
+
|
|
77
|
+
- 关联 R18 决策卡片(重大改动的决策落库)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Sub-skill: PRD (L1)
|
|
2
|
+
|
|
3
|
+
## 路由自检
|
|
4
|
+
|
|
5
|
+
✓ 走本 skill 的信号:用户说"需求/想做 X/新功能/痛点/用户故事/商业价值"
|
|
6
|
+
✗ 不走的信号:用户说"实施/编码"(→ impl.md)或"技术方案"(→ design.md)或"typo"(→ quick.md)
|
|
7
|
+
|
|
8
|
+
## 模板
|
|
9
|
+
|
|
10
|
+
- [templates/L1-prd.md](../templates/L1-prd.md)
|
|
11
|
+
- skill 内 Read 该文件获取完整模板
|
|
12
|
+
|
|
13
|
+
## 流程
|
|
14
|
+
|
|
15
|
+
### L1 Spec 创建
|
|
16
|
+
|
|
17
|
+
1. **Q4 历史决策查询**(必做):
|
|
18
|
+
```bash
|
|
19
|
+
spec-manager decision list --topic <topic>
|
|
20
|
+
```
|
|
21
|
+
若返回非空 → 向用户展示决策摘要,让用户确认新 L1 是否与历史一致或有意覆盖。
|
|
22
|
+
> ☑ **R18** — 流程规则:新 L1 创建前查历史决策,避免与已实现 L1 的决策冲突
|
|
23
|
+
2. **PRE-WRITE Q1-Q3**(必做):用当前工具的用户提问能力一次性问 3 个问题
|
|
24
|
+
- Q1 核心痛点(量化)
|
|
25
|
+
- Q2 范围边界(做/不做/推迟)
|
|
26
|
+
- Q3 成功指标(基线 + 目标 + 测量方式)
|
|
27
|
+
3. **L1 去重搜索**(R16):
|
|
28
|
+
```bash
|
|
29
|
+
spec-manager spec list --level L1 --topic <topic>
|
|
30
|
+
```
|
|
31
|
+
若发现同 topic L1 存在,**复用**而非新建。
|
|
32
|
+
> ☑ **R16** — 流程规则:查重确认无重复 L1
|
|
33
|
+
4. **创建 L1**:
|
|
34
|
+
```bash
|
|
35
|
+
spec-manager spec new L1 --topic <topic> --title "..." # --code 不传则自动生成 <YYYY-MM-DD>-<shortId>
|
|
36
|
+
```
|
|
37
|
+
5. **写正文**:把 L1-prd.md 模板填好后写到文件
|
|
38
|
+
```bash
|
|
39
|
+
spec-manager spec update <code> --content ./draft.md --ai-summary "..." --change-summary "初始 L1"
|
|
40
|
+
```
|
|
41
|
+
`spec update` 自动跑必填段校验(warning-only)。
|
|
42
|
+
> ☑ **R13** / **R21** — `--ai-summary` ≤300 字符(CLI 截断,>300 自动 warn)
|
|
43
|
+
> ☑ **R22** — 流程规则:创建后立即写正文,通知审核前自检 contentTemplate 非空(CLI 在 `confirm` 时强制校验)
|
|
44
|
+
6. 🛑 **等用户审核**(R1)
|
|
45
|
+
> ☑ **R1** — 流程规则:停下等用户审核,不自行推进
|
|
46
|
+
7. 用户批准 → 调本 skill(不要凭上下文):
|
|
47
|
+
```bash
|
|
48
|
+
spec-manager spec confirm <code>
|
|
49
|
+
```
|
|
50
|
+
> ☑ **R2** — 流程规则:状态变更由用户触发
|
|
51
|
+
> ☑ **R4** — 流程规则:L1 审核独立,不连带假设 L2
|
|
52
|
+
|
|
53
|
+
## 与主 SKILL.md 关系
|
|
54
|
+
|
|
55
|
+
L1 confirmed 后,路由到 `subskills/design.md` 继续 L2。
|
|
56
|
+
|
|
57
|
+
## 适用规则
|
|
58
|
+
|
|
59
|
+
R1 / R2 / R4 / R7 / R13 / R14 / R16 / R17 / R19 / R22 / R23
|
|
60
|
+
|
|
61
|
+
## 相关规则(按需加载)
|
|
62
|
+
|
|
63
|
+
| 规则 ID | 文件 | 适用场景 | 类型 |
|
|
64
|
+
|---|---|---|---|
|
|
65
|
+
| R1/R2/R4 | [rules/flow-control.md](../rules/flow-control.md) | 停下审核 / 状态归用户 / 每层独立 | 流程 |
|
|
66
|
+
| R7 | [rules/doc-governance.md](../rules/doc-governance.md) | 层级绑定(虽 L1 无父,但确认子层要绑) | 代码 |
|
|
67
|
+
| R13/R21 | [rules/doc-governance.md](../rules/doc-governance.md) | aiSummary 必传 + ≤300 字符 | 代码 |
|
|
68
|
+
| R14 | [rules/doc-governance.md](../rules/doc-governance.md) | 跨层引用 — L1 不复述上层 | 流程 |
|
|
69
|
+
| R16 | [rules/doc-governance.md](../rules/doc-governance.md) | L1 去重搜索 | 流程 |
|
|
70
|
+
| R19 | [rules/doc-governance.md](../rules/doc-governance.md) | 研究期读 aiSummary 而非全文 | 流程 |
|
|
71
|
+
| R22 | [rules/doc-governance.md](../rules/doc-governance.md) | 创建后立即写正文 | 代码(CLI 在 `confirm` 时强制) |
|
|
72
|
+
| R23 | [rules/codebase-survey.md](../rules/codebase-survey.md) | 写 L1 前 Level 1 架构概览 | 流程 |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Sub-skill: Quick (≤5 步微调)
|
|
2
|
+
|
|
3
|
+
## 路由自检
|
|
4
|
+
|
|
5
|
+
✓ 走本 skill 的信号:用户说"修 typo / 改一行注释 / 调一个字符串 / 改 log level"
|
|
6
|
+
✗ 不走的信号:用户说"新功能"(→ prd.md)或"重构"(→ design.md + impl.md)
|
|
7
|
+
|
|
8
|
+
## 流程
|
|
9
|
+
|
|
10
|
+
1. **直接 Edit 源码**:用 `Read` 找到目标行,`Edit` 改一行
|
|
11
|
+
2. **验证**(如有):`Bash` 跑相关测试
|
|
12
|
+
3. **报告**:告诉用户改了哪个文件的哪一行
|
|
13
|
+
4. **无需建任何 spec** — quick 不走完整 L1→L2→L3 流程
|
|
14
|
+
|
|
15
|
+
## 限制
|
|
16
|
+
|
|
17
|
+
- 步数 ≤ 5
|
|
18
|
+
- 单一文件
|
|
19
|
+
- 不涉及 schema 变更
|
|
20
|
+
- 不涉及 API 契约变更
|
|
21
|
+
- 不跨模块
|
|
22
|
+
|
|
23
|
+
超限则跳到 `prd.md` 走完整流程。
|
|
24
|
+
|
|
25
|
+
`git diff` 本身就是审计追踪。
|