spec-manager 0.2.0 → 0.2.1
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/dist/cli/index.js +4 -1
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
- package/rules/doc-governance.md +2 -2
- package/skill/SKILL.md +12 -9
- package/skill/subskills/adr.md +2 -2
- package/skill/subskills/change.md +4 -4
- package/skill/subskills/design.md +4 -4
- package/skill/subskills/impl.md +9 -9
- package/skill/subskills/plan.md +1 -1
- package/skill/subskills/postmortem.md +1 -1
- package/skill/subskills/prd.md +9 -9
- package/skill/subskills/release.md +2 -2
- package/skill/subskills/runbook.md +1 -1
- package/skill/subskills/testplan.md +2 -2
- package/templates/L2-design.md +2 -2
- package/templates/L3-impl.md +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
2
3
|
import { Command } from 'commander';
|
|
3
4
|
import { registerProject } from './project.js';
|
|
4
5
|
import { registerSpec } from './spec.js';
|
|
@@ -11,11 +12,13 @@ import { registerDictCommands } from './dict.js';
|
|
|
11
12
|
import { registerUsabilityCommands } from './usability.js';
|
|
12
13
|
import { registerViewCommands } from './view.js';
|
|
13
14
|
import { registerCompletionCommands } from './completion.js';
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
const { version } = require('../../package.json');
|
|
14
17
|
const program = new Command();
|
|
15
18
|
program
|
|
16
19
|
.name('spec-manager')
|
|
17
20
|
.description('spec-manager: local-first spec-driven development platform. Portable CLI + multi-agent instructions.')
|
|
18
|
-
.version(
|
|
21
|
+
.version(version);
|
|
19
22
|
registerProject(program);
|
|
20
23
|
registerSpec(program);
|
|
21
24
|
registerTaskCommands(program);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,sGAAsG,CAAC;KACnH,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AAEpC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAE7D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,cAAc,CAAC;KACpB,WAAW,CAAC,sGAAsG,CAAC;KACnH,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe,CAAC,OAAO,CAAC,CAAC;AACzB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,yBAAyB,CAAC,OAAO,CAAC,CAAC;AACnC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,0BAA0B,CAAC,OAAO,CAAC,CAAC;AAEpC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;IAC3C,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "spec-manager",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "spec-manager: local-first spec-driven development platform. Pure markdown storage, no network, no MCP. Portable CLI + multi-agent instructions.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
package/rules/doc-governance.md
CHANGED
|
@@ -76,8 +76,8 @@ applies_to: [L2_write, L3_write]
|
|
|
76
76
|
|
|
77
77
|
✅ 正确:
|
|
78
78
|
|
|
79
|
-
- L2: `本 L2 实现
|
|
80
|
-
- L3: `本 L3 对应
|
|
79
|
+
- L2: `本 L2 实现 auth-L1 的目标 3(演进闭环)。L1 的用户故事详见其正文。`
|
|
80
|
+
- L3: `本 L3 对应 auth-L2.1 的 L3 裂变计划,落地 5 份模板文件。`
|
|
81
81
|
|
|
82
82
|
❌ 错误:
|
|
83
83
|
|
package/skill/SKILL.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: spec-manager
|
|
2
3
|
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
4
|
argument-hint: "<需求描述> | run <taskId>"
|
|
4
5
|
---
|
|
@@ -56,12 +57,12 @@ PRD → Design → Spec → Agent Task → 部署。**纯本地**,所有数据
|
|
|
56
57
|
|
|
57
58
|
| 主题 | 规则 | 文件 |
|
|
58
59
|
|---|---|---|
|
|
59
|
-
| 流程控制 | R1-R4 停下审核/状态归用户/frozen 才建 Task | [rules/flow-control.md](rules/flow-control.md) |
|
|
60
|
-
| 质量门禁 | R5/R6/R10/R15/R18 不跳步/planJson 校验 | [rules/quality-gate.md](rules/quality-gate.md) |
|
|
61
|
-
| 文档治理 | R7/R11/R13/R14/R16-R22 层级绑定/aiSummary | [rules/doc-governance.md](rules/doc-governance.md) |
|
|
62
|
-
| 代码纪律 | R8/R9/R12 改代码前自检 | [rules/code-discipline.md](rules/code-discipline.md) |
|
|
63
|
-
| 代码调查 | R23 Spec 前必须基于实际代码 | [rules/codebase-survey.md](rules/codebase-survey.md) |
|
|
64
|
-
| Delta | R24 delta 必须含 proposal | [rules/delta.md](rules/delta.md) |
|
|
60
|
+
| 流程控制 | R1-R4 停下审核/状态归用户/frozen 才建 Task | [rules/flow-control.md](../rules/flow-control.md) |
|
|
61
|
+
| 质量门禁 | R5/R6/R10/R15/R18 不跳步/planJson 校验 | [rules/quality-gate.md](../rules/quality-gate.md) |
|
|
62
|
+
| 文档治理 | R7/R11/R13/R14/R16-R22 层级绑定/aiSummary | [rules/doc-governance.md](../rules/doc-governance.md) |
|
|
63
|
+
| 代码纪律 | R8/R9/R12 改代码前自检 | [rules/code-discipline.md](../rules/code-discipline.md) |
|
|
64
|
+
| 代码调查 | R23 Spec 前必须基于实际代码 | [rules/codebase-survey.md](../rules/codebase-survey.md) |
|
|
65
|
+
| Delta | R24 delta 必须含 proposal | [rules/delta.md](../rules/delta.md) |
|
|
65
66
|
|
|
66
67
|
## Spec 状态流
|
|
67
68
|
|
|
@@ -89,9 +90,9 @@ L3: draft → frozen → implemented
|
|
|
89
90
|
<project>/
|
|
90
91
|
├── .spec-manager/ # config + audit + incidents
|
|
91
92
|
├── specs/<topic>/ # spec 平铺(点分编号自文档化层级)
|
|
92
|
-
│ ├── <L1-
|
|
93
|
-
│ ├── <L2-
|
|
94
|
-
│ ├── <L3
|
|
93
|
+
│ ├── <topic>-L1.md # 如 auth-L1.md
|
|
94
|
+
│ ├── <topic>-L2.1.md # 如 auth-L2.1.md
|
|
95
|
+
│ ├── <topic>-L3.1.1[-desc].md # 如 auth-L3.1.1-jwt.md
|
|
95
96
|
│ ├── decisions/ # 决策卡片(topic 级别)
|
|
96
97
|
│ └── tasks/ # Agent Task(topic 级别)
|
|
97
98
|
│ └── <specCode>-<taskId>.json
|
|
@@ -99,4 +100,6 @@ L3: draft → frozen → implemented
|
|
|
99
100
|
└── archive/<name>/ # 已合并 change
|
|
100
101
|
```
|
|
101
102
|
|
|
103
|
+
**文件命名规则**:`<topic>-L<level>[.<序号>][.<序号>][-desc].md`,点分编号自文档化层级关系,topic 前缀必填。必须通过 CLI 命令创建,不要用 Write 工具直接写文件。
|
|
104
|
+
|
|
102
105
|
违反任一规则视为流程事故,参照 `.spec-manager/incidents/_TEMPLATE.md` 记录。
|
package/skill/subskills/adr.md
CHANGED
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
2. 必走:
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
spec-manager decision create
|
|
23
|
+
spec-manager decision create auth-L1 \
|
|
24
24
|
--topic auth \
|
|
25
25
|
--what "采用 JWT 而非 session" \
|
|
26
26
|
--why "无状态扩展,便于多服务共享身份" \
|
|
@@ -63,7 +63,7 @@ JWT 有 alg=none 等已知攻击面...
|
|
|
63
63
|
- 决策卡片:DC-002
|
|
64
64
|
|
|
65
65
|
## 关联
|
|
66
|
-
- spec:
|
|
66
|
+
- spec: auth-L1
|
|
67
67
|
- decision: DC-002
|
|
68
68
|
EOF
|
|
69
69
|
```
|
|
@@ -43,12 +43,12 @@ affectedCriteria:
|
|
|
43
43
|
|
|
44
44
|
```markdown
|
|
45
45
|
---
|
|
46
|
-
code:
|
|
46
|
+
code: auth-L1
|
|
47
47
|
---
|
|
48
48
|
|
|
49
49
|
## MODIFIED Requirements
|
|
50
50
|
|
|
51
|
-
### Requirement:
|
|
51
|
+
### Requirement: auth-L1
|
|
52
52
|
## 2FA 强制
|
|
53
53
|
|
|
54
54
|
登录成功后系统 **SHALL** 要求 TOTP 二次校验。
|
|
@@ -98,8 +98,8 @@ spec-manager change archive add-2fa
|
|
|
98
98
|
```
|
|
99
99
|
✓ Change add-2fa archived
|
|
100
100
|
applied: 2
|
|
101
|
-
[MODIFIED]
|
|
102
|
-
[ADDED]
|
|
101
|
+
[MODIFIED] auth-L1
|
|
102
|
+
[ADDED] auth-L3.1.1-new-feature
|
|
103
103
|
archived to: archive/add-2fa
|
|
104
104
|
```
|
|
105
105
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
3. **Level 2 代码调查**(R23):Read ≥3 个源文件了解模块
|
|
20
20
|
4. **创建 L2**:
|
|
21
21
|
```bash
|
|
22
|
-
spec-manager spec new L2 --topic <topic> --title "..." --parent <L1 code> # --code 不传则自动生成
|
|
22
|
+
spec-manager spec new L2 --topic <topic> --title "..." --parent <L1 code> # --code 不传则自动生成 <topic>-L2.N
|
|
23
23
|
```
|
|
24
24
|
> 🔍 **R7 自检**: L2 是否绑定了父 L1?→ `spec-manager audit hit R7`
|
|
25
25
|
5. **写正文**:
|
|
@@ -48,6 +48,6 @@ R1 / R2 / R4 / R7 / R13 / R14 / R17 / R19 / R22 / R23
|
|
|
48
48
|
|
|
49
49
|
| 规则 ID | 文件 | 适用场景 |
|
|
50
50
|
|---|---|---|
|
|
51
|
-
| R7/R14/R17 | [rules/doc-governance.md](
|
|
52
|
-
| R19 | [rules/doc-governance.md](
|
|
53
|
-
| R23 | [rules/codebase-survey.md](
|
|
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 源文件) |
|
package/skill/subskills/impl.md
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
> ☑ **R23** / **R12** / **R8** — 流程规则,人工把关
|
|
25
25
|
4. **创建 L3**:
|
|
26
26
|
```bash
|
|
27
|
-
spec-manager spec new L3 --topic <topic> --title "..." --parent <L2 code> # --code 不传则自动生成
|
|
27
|
+
spec-manager spec new L3 --topic <topic> --title "..." --parent <L2 code> # --code 不传则自动生成 <topic>-L3.N.M[-desc]
|
|
28
28
|
```
|
|
29
29
|
> ☑ **R20** — 流程规则:scope-split L2 时所有子 L3 一次建齐
|
|
30
30
|
5. **写正文**:
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
```
|
|
58
58
|
> ☑ **R3** — 非 frozen 时 CLI 拒绝并 audit hit
|
|
59
59
|
10. `spec-manager task start <task-id>`
|
|
60
|
-
11. 逐步 `spec-manager task step <task-id> --no N --type T --name S --status
|
|
60
|
+
11. 逐步 `spec-manager task step <task-id> --no N --type T --name S --status succeeded --output-json J --latency L`
|
|
61
61
|
- 禁跳步(R5)
|
|
62
62
|
- outputJson 必含 summary(R15)
|
|
63
63
|
- step_report 必须在工作完成后才报(R15)
|
|
@@ -87,13 +87,13 @@ R1 / R2 / R3 / R4 / R5 / R6 / R7 / R8 / R10 / R11 / R12 / R13 / R14 / R15 / R18
|
|
|
87
87
|
|
|
88
88
|
| 规则 ID | 文件 | 适用场景 | 类型 |
|
|
89
89
|
|---|---|---|---|
|
|
90
|
-
| R1/R2/R4 | [rules/flow-control.md](
|
|
91
|
-
| R3/R5/R6 | [rules/flow-control.md](
|
|
92
|
-
| R7/R11/R13/R14/R22 | [rules/doc-governance.md](
|
|
93
|
-
| R8/R12 | [rules/code-discipline.md](
|
|
94
|
-
| R10/R15/R18 | [rules/quality-gate.md](
|
|
95
|
-
| R20 | [rules/doc-governance.md](
|
|
96
|
-
| R23 | [rules/codebase-survey.md](
|
|
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
97
|
|
|
98
98
|
**类型说明**:
|
|
99
99
|
- **代码**:违反时 CLI 自动抛错或 audit hit
|
package/skill/subskills/plan.md
CHANGED
package/skill/subskills/prd.md
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
> ☑ **R16** — 流程规则:查重确认无重复 L1
|
|
33
33
|
4. **创建 L1**:
|
|
34
34
|
```bash
|
|
35
|
-
spec-manager spec new L1 --topic <topic> --title "..." # --code 不传则自动生成 <
|
|
35
|
+
spec-manager spec new L1 --topic <topic> --title "..." # --code 不传则自动生成 <topic>-L1
|
|
36
36
|
```
|
|
37
37
|
5. **写正文**:把 L1-prd.md 模板填好后写到文件
|
|
38
38
|
```bash
|
|
@@ -62,11 +62,11 @@ R1 / R2 / R4 / R7 / R13 / R14 / R16 / R17 / R19 / R22 / R23
|
|
|
62
62
|
|
|
63
63
|
| 规则 ID | 文件 | 适用场景 | 类型 |
|
|
64
64
|
|---|---|---|---|
|
|
65
|
-
| R1/R2/R4 | [rules/flow-control.md](
|
|
66
|
-
| R7 | [rules/doc-governance.md](
|
|
67
|
-
| R13/R21 | [rules/doc-governance.md](
|
|
68
|
-
| R14 | [rules/doc-governance.md](
|
|
69
|
-
| R16 | [rules/doc-governance.md](
|
|
70
|
-
| R19 | [rules/doc-governance.md](
|
|
71
|
-
| R22 | [rules/doc-governance.md](
|
|
72
|
-
| R23 | [rules/codebase-survey.md](
|
|
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 架构概览 | 流程 |
|
|
@@ -26,10 +26,10 @@ cat > releases/v1.2.0-release.md <<'EOF'
|
|
|
26
26
|
# v1.2.0 — <主题>
|
|
27
27
|
|
|
28
28
|
## 新增
|
|
29
|
-
- 2FA 强制登录(
|
|
29
|
+
- 2FA 强制登录(auth-L1 MODIFIED)
|
|
30
30
|
|
|
31
31
|
## 修复
|
|
32
|
-
- JWT 过期返回 401 而非 500(
|
|
32
|
+
- JWT 过期返回 401 而非 500(auth-L3.1.1-jwt bugfix)
|
|
33
33
|
|
|
34
34
|
## 变更
|
|
35
35
|
- 数据库 schema: users 表加 mfa_secret 字段(migration 2026_05_11)
|
|
@@ -30,7 +30,7 @@ cat > runbooks/auth-service-down.md <<'EOF'
|
|
|
30
30
|
- 切回上一版本:`docker compose up -d --scale auth-service=0 && git checkout v1.1.0 && docker compose up -d`
|
|
31
31
|
|
|
32
32
|
## 关联
|
|
33
|
-
- 关联 spec:
|
|
33
|
+
- 关联 spec:auth-L1
|
|
34
34
|
- 历史 incident:INC-20260513-001
|
|
35
35
|
EOF
|
|
36
36
|
```
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
1. 读 L3 spec + 父 L2
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
spec-manager spec show
|
|
14
|
+
spec-manager spec show auth-L3.1.1 --include-content
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
2. 创建 testplan:
|
|
@@ -19,7 +19,7 @@ spec-manager spec show 2026-06-04-c3d4e5 --include-content
|
|
|
19
19
|
```bash
|
|
20
20
|
# 用 git 直接写,或:
|
|
21
21
|
mkdir -p testplans/auth
|
|
22
|
-
cat > testplans/auth/
|
|
22
|
+
cat > testplans/auth/auth-L3.1.1-testplan.md <<'EOF'
|
|
23
23
|
# <L3 title> 测试方案
|
|
24
24
|
|
|
25
25
|
## 单元测试
|
package/templates/L2-design.md
CHANGED
|
@@ -127,8 +127,8 @@ Expert guidelines:
|
|
|
127
127
|
|
|
128
128
|
| L3 code | 范围 | 前置依赖 |
|
|
129
129
|
|---|---|---|
|
|
130
|
-
|
|
|
131
|
-
|
|
|
130
|
+
| auth-L3.1.1 | ... | 无 |
|
|
131
|
+
| auth-L3.1.2 | ... | auth-L3.1.1 implemented |
|
|
132
132
|
|
|
133
133
|
## 关联
|
|
134
134
|
|
package/templates/L3-impl.md
CHANGED