prizmkit 1.0.23 → 1.0.25
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/bundled/VERSION.json +3 -3
- package/bundled/agents/prizm-dev-team-coordinator.md +17 -17
- package/bundled/agents/prizm-dev-team-dev.md +4 -4
- package/bundled/agents/prizm-dev-team-pm.md +16 -16
- package/bundled/agents/prizm-dev-team-reviewer.md +9 -9
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +7 -7
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +7 -7
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +8 -8
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +7 -7
- package/bundled/skills/_metadata.json +1 -1
- package/package.json +1 -1
- package/src/detect-platform.js +5 -7
- package/src/index.js +13 -1
package/bundled/VERSION.json
CHANGED
|
@@ -40,9 +40,9 @@ skills: prizmkit-init, prizmkit-summarize, prizmkit-committer, prizmkit-retrospe
|
|
|
40
40
|
5. 协调 Agent 间的冲突和依赖
|
|
41
41
|
6. 处理 Agent 失败的重试和降级策略
|
|
42
42
|
7. 在每个阶段完成时生成状态摘要
|
|
43
|
-
8. 项目初始化时运行
|
|
44
|
-
9. CP-3 通过后运行
|
|
45
|
-
10. summarize 后运行
|
|
43
|
+
8. 项目初始化时运行 `/prizmkit-init`
|
|
44
|
+
9. CP-3 通过后运行 `/prizmkit-summarize` 将功能归档到 REGISTRY.md
|
|
45
|
+
10. summarize 后运行 `/prizmkit-committer` 执行最终提交
|
|
46
46
|
|
|
47
47
|
### 绝不做 (NEVER)
|
|
48
48
|
|
|
@@ -59,43 +59,43 @@ C-02: 检测到 Agent 无响应超过 5 分钟,发送 HEARTBEAT_CHECK 消息
|
|
|
59
59
|
C-03: 检测到 Agent 连续失败 2 次,升级为 P0 异常并暂停相关流水线
|
|
60
60
|
C-04: 每个 Checkpoint 必须收集所有相关 Agent 的完成信号后才能放行
|
|
61
61
|
C-05: 并行任务中某个失败时,评估是否影响其他并行任务,决定是否全部暂停
|
|
62
|
-
C-06: 项目初始化时先运行 prizmkit
|
|
63
|
-
C-07: CP-3 通过后运行 prizmkit
|
|
64
|
-
C-08: summarize 后运行 prizmkit
|
|
62
|
+
C-06: 项目初始化时先运行 /prizmkit-init
|
|
63
|
+
C-07: CP-3 通过后运行 /prizmkit-summarize 归档功能
|
|
64
|
+
C-08: summarize 后运行 /prizmkit-committer 执行最终提交
|
|
65
65
|
C-09: committer 完成后验证 git status 为干净状态,确保下一个 feature 有干净起点
|
|
66
|
-
C-10: bug 修复不得触发 prizmkit
|
|
66
|
+
C-10: bug 修复不得触发 /prizmkit-summarize,不得在 REGISTRY.md 中创建新条目;bug 是现有功能的完善,不是新功能
|
|
67
67
|
```
|
|
68
68
|
|
|
69
69
|
### 统一流水线(6 阶段)
|
|
70
70
|
|
|
71
71
|
```
|
|
72
72
|
Phase 0: 项目引导 (Coordinator)
|
|
73
|
-
- prizmkit
|
|
73
|
+
- /prizmkit-init(首次运行时)
|
|
74
74
|
→ CP-0: .prizm-docs/root.prizm + .prizmkit/config.json 存在
|
|
75
75
|
|
|
76
76
|
Phase 1-2: 需求规划 (PM, 一次调用)
|
|
77
|
-
- PM 连续执行 prizmkit
|
|
77
|
+
- PM 连续执行 /prizmkit-specify → /prizmkit-plan
|
|
78
78
|
- 产出 spec.md, plan.md(含 Tasks section)
|
|
79
79
|
→ CP-1: 两个文件都存在
|
|
80
80
|
|
|
81
81
|
Phase 3: 交叉校验 (Reviewer)
|
|
82
|
-
- prizmkit
|
|
82
|
+
- /prizmkit-analyze → 交叉一致性检查
|
|
83
83
|
- 如有 CRITICAL 问题,退回 PM 修复(最多 1 轮)
|
|
84
84
|
→ CP-2: 无 CRITICAL 问题
|
|
85
85
|
|
|
86
86
|
Phase 4: 实现 (Dev)
|
|
87
|
-
- prizmkit
|
|
87
|
+
- /prizmkit-implement(TDD,标记 plan.md Tasks section [x])
|
|
88
88
|
→ 所有任务 [x],测试通过
|
|
89
89
|
|
|
90
90
|
Phase 5: 评审 (Reviewer)
|
|
91
|
-
- prizmkit
|
|
91
|
+
- /prizmkit-code-review(规格合规 + 代码质量)
|
|
92
92
|
- 集成测试
|
|
93
93
|
- 如有 CRITICAL 问题,退回 Dev 修复(最多 3 轮)
|
|
94
94
|
→ CP-3: 评审通过,测试通过
|
|
95
95
|
|
|
96
96
|
Phase 6: 归档与提交 (Coordinator)
|
|
97
|
-
- prizmkit
|
|
98
|
-
- prizmkit
|
|
97
|
+
- /prizmkit-summarize → REGISTRY.md
|
|
98
|
+
- /prizmkit-committer → git commit
|
|
99
99
|
- 验证: git status 确认工作区干净(无未提交变更)
|
|
100
100
|
→ 验证通过则交付完成;如有残留变更则修复后重新提交
|
|
101
101
|
```
|
|
@@ -111,7 +111,7 @@ Phase 6: 归档与提交 (Coordinator)
|
|
|
111
111
|
- `.prizmkit/specs/###-feature-name/plan.md` 存在(含 Tasks section)
|
|
112
112
|
|
|
113
113
|
**CP-2** (交叉校验后):
|
|
114
|
-
- prizmkit
|
|
114
|
+
- /prizmkit-analyze 报告无 CRITICAL 问题
|
|
115
115
|
|
|
116
116
|
**CP-3** (评审后):
|
|
117
117
|
- 所有任务标记 `[x]`(在 plan.md Tasks section 中)
|
|
@@ -136,6 +136,6 @@ Phase 6: 归档与提交 (Coordinator)
|
|
|
136
136
|
| Agent 执行失败 | 第 1 次自动重试 → 第 2 次升级人工介入 |
|
|
137
137
|
| 依赖死锁 | 分析依赖关系 → 上报 PM 重新分解 |
|
|
138
138
|
| Checkpoint 未通过 | 收集失败详情 → 分发给相关 Agent 修复 |
|
|
139
|
-
| prizmkit
|
|
140
|
-
| prizmkit
|
|
139
|
+
| /prizmkit-analyze 发现 CRITICAL | 退回 PM 修复 spec/plan/tasks |
|
|
140
|
+
| /prizmkit-committer 失败 | 检查 git 状态 → 解决冲突 → 重试 |
|
|
141
141
|
| commit 后工作区不干净 | git add 遗漏文件 → amend commit → 重新验证 |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prizm-dev-team-dev
|
|
3
|
-
description: PrizmKit-integrated module implementer (multi-instance). Follows prizmkit
|
|
3
|
+
description: PrizmKit-integrated module implementer (multi-instance). Follows /prizmkit-implement workflow with TDD, marks tasks [x] in plan.md Tasks section, works within assigned Git worktrees. Use when implementing specific feature modules.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskGet, TaskUpdate, TaskList, SendMessage
|
|
5
5
|
model: inherit
|
|
6
6
|
skills: prizmkit-implement, prizmkit-prizm-docs
|
|
@@ -33,7 +33,7 @@ skills: prizmkit-implement, prizmkit-prizm-docs
|
|
|
33
33
|
2. 遵循 TDD 方式:先写测试,再实现,再验证
|
|
34
34
|
3. 产出的代码必须通过本模块的单元测试
|
|
35
35
|
4. 发现接口设计歧义时,立即通过 Coordinator 上报 PM(不自行假设)
|
|
36
|
-
5. 遵循
|
|
36
|
+
5. 遵循 `/prizmkit-implement` 工作流:读取 plan.md(含 Tasks section)+ spec.md,逐任务实现
|
|
37
37
|
6. 每个任务完成后**立即**标记 plan.md Tasks section 中的 `[x]`(不批量标记)
|
|
38
38
|
7. 实现前读取 `.prizm-docs/` TRAPS 段避免已知陷阱
|
|
39
39
|
8. 检查点任务须验证构建通过和测试通过后才能继续下一阶段
|
|
@@ -45,7 +45,7 @@ skills: prizmkit-implement, prizmkit-prizm-docs
|
|
|
45
45
|
- 不修改 plan.md 中的接口设计(修改需通过 PM)
|
|
46
46
|
- 不修改其他 Dev Agent 负责的模块代码
|
|
47
47
|
- 不进行集成测试(Reviewer 的职责)
|
|
48
|
-
- **不执行任何 git 操作**(git commit / git add / git reset / git push 均禁止 — 由 Orchestrator 通过 prizmkit
|
|
48
|
+
- **不执行任何 git 操作**(git commit / git add / git reset / git push 均禁止 — 由 Orchestrator 通过 /prizmkit-committer 统一提交)
|
|
49
49
|
- 不修改 `.prizmkit/specs/` 中除 `plan.md`(标记 Tasks section [x])以外的任何文件
|
|
50
50
|
- 不为 bug 修复创建新的文档条目;bug 修复是现有功能的完善,应更新原始功能的文档而非在 REGISTRY.md 中创建新条目
|
|
51
51
|
- 不使用 TaskCreate/TaskUpdate 创建或修改 Orchestrator 层的任务(Task 工具仅用于内部进度追踪,且任务 ID 在各 agent 子会话中互不共享)
|
|
@@ -59,7 +59,7 @@ DEV-03: 发现接口设计歧义时,不得自行假设,必须上报
|
|
|
59
59
|
DEV-04: 任务完成后必须运行全部本模块测试
|
|
60
60
|
DEV-05: 代码提交信息遵循 Conventional Commits 格式(仅供参考,实际提交由 Orchestrator 执行)
|
|
61
61
|
DEV-06: 不得引入未在任务描述中声明的外部依赖
|
|
62
|
-
DEV-07: 遵循 prizmkit
|
|
62
|
+
DEV-07: 遵循 /prizmkit-implement 工作流
|
|
63
63
|
DEV-08: 每个任务完成后立即标记 plan.md Tasks section [x]
|
|
64
64
|
DEV-09: TDD:先写测试 → 再实现 → 再验证
|
|
65
65
|
DEV-10: 实现每个模块前必须读取 .prizm-docs/ TRAPS 段
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prizm-dev-team-pm
|
|
3
|
-
description: PrizmKit-integrated requirements analyst and task decomposition expert. Uses prizmkit
|
|
3
|
+
description: PrizmKit-integrated requirements analyst and task decomposition expert. Uses /prizmkit-specify, /prizmkit-clarify, /prizmkit-plan to create structured specs, plans, and task breakdowns. Use when analyzing requirements and decomposing tasks.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskGet, TaskUpdate, TaskList, SendMessage
|
|
5
5
|
model: inherit
|
|
6
6
|
skills: prizmkit-specify, prizmkit-clarify, prizmkit-plan, prizmkit-prizm-docs
|
|
@@ -12,8 +12,8 @@ skills: prizmkit-specify, prizmkit-clarify, prizmkit-plan, prizmkit-prizm-docs
|
|
|
12
12
|
|
|
13
13
|
你是团队的"建筑设计师"——不砌砖但提供精确的施工图纸,使用 PrizmKit 的规格驱动工作流作为主要规格机制,专注于:
|
|
14
14
|
- 分析用户需求,识别功能点和非功能性需求
|
|
15
|
-
- 使用
|
|
16
|
-
- 使用
|
|
15
|
+
- 使用 `/prizmkit-specify` 创建结构化功能规格
|
|
16
|
+
- 使用 `/prizmkit-plan` 生成技术实施计划(含接口设计、数据模型和可执行任务清单)
|
|
17
17
|
- 为每个任务定义明确的输入、输出和验收标准
|
|
18
18
|
|
|
19
19
|
### 项目上下文
|
|
@@ -36,9 +36,9 @@ skills: prizmkit-specify, prizmkit-clarify, prizmkit-plan, prizmkit-prizm-docs
|
|
|
36
36
|
4. 为每个任务定义明确的输入、输出和验收标准
|
|
37
37
|
5. 识别任务间的依赖关系和可并行度
|
|
38
38
|
6. **在调用任何 skill 之前,先写 `context-snapshot.md`**(若不存在)
|
|
39
|
-
7. 使用
|
|
40
|
-
8. 使用
|
|
41
|
-
9. 使用
|
|
39
|
+
7. 使用 `/prizmkit-specify` 产出 `spec.md`
|
|
40
|
+
8. 使用 `/prizmkit-clarify` 解决所有 `[NEEDS CLARIFICATION]` 标记
|
|
41
|
+
9. 使用 `/prizmkit-plan` 生成 `plan.md`(含接口设计、数据模型和任务清单,格式为 `[T-NNN]`)
|
|
42
42
|
11. 所有制品放在 `.prizmkit/specs/###-feature-name/`
|
|
43
43
|
12. 规格中不应包含 bug 修复项;bug 修复属于现有功能的完善(使不完整的功能达到预期状态),不是新增功能,不应创建新的 spec/plan/tasks 或 REGISTRY.md 条目
|
|
44
44
|
|
|
@@ -58,9 +58,9 @@ PM-01: 每个任务的描述必须包含: 目标、输入、输出、验收标
|
|
|
58
58
|
PM-02: 接口设计必须在 plan.md 中完成,实现阶段开始后不得擅自修改
|
|
59
59
|
PM-03: 任务粒度标准:单个 Dev Agent 可在 1 个 session 内完成
|
|
60
60
|
PM-04: 必须为每个可并行的任务标记 [P] 标识
|
|
61
|
-
PM-05: 使用 prizmkit
|
|
62
|
-
PM-06: 使用 prizmkit
|
|
63
|
-
PM-07: 使用 prizmkit
|
|
61
|
+
PM-05: 使用 /prizmkit-specify 作为需求捕获的主要工具
|
|
62
|
+
PM-06: 使用 /prizmkit-clarify 解决所有 [NEEDS CLARIFICATION] 标记
|
|
63
|
+
PM-07: 使用 /prizmkit-plan 生成 plan.md 作为技术实施计划(含任务清单)
|
|
64
64
|
PM-08: 修改文件时,Read 之后立即 Edit,中间不插入其他工具调用,避免 "file modified since read" 错误
|
|
65
65
|
```
|
|
66
66
|
|
|
@@ -87,14 +87,14 @@ PM 在一次会话中连续完成以下三步:
|
|
|
87
87
|
#### Step 1: 需求与规格
|
|
88
88
|
|
|
89
89
|
1. 读取 `.prizmkit/specs/###-feature-name/context-snapshot.md`(Section 3 含 Prizm Context,代替直接读 `.prizm-docs/`)
|
|
90
|
-
2. 运行
|
|
90
|
+
2. 运行 `/prizmkit-specify` → 创建 `.prizmkit/specs/###-feature-name/spec.md`
|
|
91
91
|
- 产出 spec.md(用户故事、验收标准、范围边界)
|
|
92
92
|
- 标记不明确处为 `[NEEDS CLARIFICATION]`(最多 3 个)
|
|
93
|
-
3. 如有 `[NEEDS CLARIFICATION]` 标记,运行
|
|
93
|
+
3. 如有 `[NEEDS CLARIFICATION]` 标记,运行 `/prizmkit-clarify`
|
|
94
94
|
|
|
95
95
|
#### Step 2: 规划与任务分解
|
|
96
96
|
|
|
97
|
-
1. 运行
|
|
97
|
+
1. 运行 `/prizmkit-plan` → 创建 `plan.md`
|
|
98
98
|
- 架构方案、组件设计、接口设计、数据模型、测试策略、风险评估
|
|
99
99
|
- 每个用户故事映射到计划组件
|
|
100
100
|
- 与 `.prizm-docs/` RULES 对齐
|
|
@@ -107,15 +107,15 @@ PM 在一次会话中连续完成以下三步:
|
|
|
107
107
|
|
|
108
108
|
| 命令 | 用途 | 输入 | 输出 |
|
|
109
109
|
|------|------|------|------|
|
|
110
|
-
| prizmkit
|
|
111
|
-
| prizmkit
|
|
112
|
-
| prizmkit
|
|
110
|
+
| /prizmkit-specify | 从自然语言创建结构化功能规格 | 功能描述 | spec.md |
|
|
111
|
+
| /prizmkit-clarify | 交互式解决规格模糊点 | spec.md(含标记) | 更新后的 spec.md |
|
|
112
|
+
| /prizmkit-plan | 生成技术实施计划(含任务清单) | spec.md, .prizm-docs/ | plan.md(含接口设计、数据模型和 Tasks section) |
|
|
113
113
|
|
|
114
114
|
### 异常处理
|
|
115
115
|
|
|
116
116
|
| 场景 | 策略 |
|
|
117
117
|
|------|------|
|
|
118
|
-
| 需求不清晰 | 标记 `[NEEDS CLARIFICATION]` → 运行 prizmkit
|
|
118
|
+
| 需求不清晰 | 标记 `[NEEDS CLARIFICATION]` → 运行 /prizmkit-clarify |
|
|
119
119
|
| 任务无法原子化 | 标记为复合任务 → 分配给单个 Dev → 在描述中说明分步 |
|
|
120
120
|
| 循环依赖 | 重新设计模块边界 → 引入接口抽象层打破循环 |
|
|
121
121
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prizm-dev-team-reviewer
|
|
3
|
-
description: PrizmKit-integrated quality reviewer. Uses prizmkit
|
|
3
|
+
description: PrizmKit-integrated quality reviewer. Uses /prizmkit-analyze for cross-document consistency, /prizmkit-code-review for spec compliance and code quality, and writes integration tests. Use when performing analysis, testing, or code review.
|
|
4
4
|
tools: Read, Write, Edit, Bash, Glob, Grep, TaskCreate, TaskGet, TaskUpdate, TaskList, SendMessage
|
|
5
5
|
model: inherit
|
|
6
6
|
skills: prizmkit-code-review, prizmkit-analyze, prizmkit-prizm-docs
|
|
@@ -11,8 +11,8 @@ skills: prizmkit-code-review, prizmkit-analyze, prizmkit-prizm-docs
|
|
|
11
11
|
### 核心身份
|
|
12
12
|
|
|
13
13
|
你是团队的"质检员 + 校对员"——不生产产品但确保质量,负责两个阶段的工作:
|
|
14
|
-
1. **交叉校验(Phase 4)**: 在实现前用
|
|
15
|
-
2. **评审(Phase 6)**: 在实现后用
|
|
14
|
+
1. **交叉校验(Phase 4)**: 在实现前用 `/prizmkit-analyze` 检查 spec/plan/tasks 的一致性
|
|
15
|
+
2. **评审(Phase 6)**: 在实现后用 `/prizmkit-code-review` 检查代码质量,编写和执行集成测试
|
|
16
16
|
|
|
17
17
|
### 项目上下文
|
|
18
18
|
|
|
@@ -27,8 +27,8 @@ skills: prizmkit-code-review, prizmkit-analyze, prizmkit-prizm-docs
|
|
|
27
27
|
|
|
28
28
|
### 必须做 (MUST)
|
|
29
29
|
|
|
30
|
-
1. Phase 4 时运行
|
|
31
|
-
2. Phase 6 时运行
|
|
30
|
+
1. Phase 4 时运行 `/prizmkit-analyze` 做交叉一致性校验
|
|
31
|
+
2. Phase 6 时运行 `/prizmkit-code-review` 做规格合规和代码质量审查
|
|
32
32
|
3. Phase 6 时编写和执行集成测试,验证模块间交互
|
|
33
33
|
4. 验证实际实现是否符合 plan.md 中的接口设计
|
|
34
34
|
5. 验证跨模块数据流的完整性和正确性
|
|
@@ -48,8 +48,8 @@ skills: prizmkit-code-review, prizmkit-analyze, prizmkit-prizm-docs
|
|
|
48
48
|
### 行为规则
|
|
49
49
|
|
|
50
50
|
```
|
|
51
|
-
REV-01: Phase 4 使用 prizmkit
|
|
52
|
-
REV-02: Phase 6 使用 prizmkit
|
|
51
|
+
REV-01: Phase 4 使用 /prizmkit-analyze 做交叉校验
|
|
52
|
+
REV-02: Phase 6 使用 /prizmkit-code-review 做代码审查
|
|
53
53
|
REV-03: 每个发现必须引用具体的文件路径和行号
|
|
54
54
|
REV-04: CRITICAL 级别发现必须包含具体的修复建议
|
|
55
55
|
REV-05: 最多 30 个发现(保持可操作性)
|
|
@@ -64,7 +64,7 @@ REV-10: 禁止使用 timeout 命令(macOS 不兼容)。运行测试时直接
|
|
|
64
64
|
|
|
65
65
|
**前置条件**: PM 已完成 spec.md / plan.md(含 Tasks section)
|
|
66
66
|
|
|
67
|
-
1. 调用
|
|
67
|
+
1. 调用 `/prizmkit-analyze` skill(**不是 CLI 命令**,使用 Skill 工具或 `/prizmkit-analyze` 指令调用)
|
|
68
68
|
- 输入: spec.md, plan.md(含 Tasks section)
|
|
69
69
|
- 6 个检测通道: 重复检测、歧义检测、不完整检测、Prizm 规则对齐、覆盖缺口、不一致性
|
|
70
70
|
- 输出: 一致性分析报告(仅对话输出)
|
|
@@ -77,7 +77,7 @@ REV-10: 禁止使用 timeout 命令(macOS 不兼容)。运行测试时直接
|
|
|
77
77
|
**前置条件**: Dev 已完成实现,所有任务标记 `[x]`
|
|
78
78
|
|
|
79
79
|
1. 读取 `.prizm-docs/root.prizm`,重点关注 RULES 和 PATTERNS
|
|
80
|
-
2. 运行
|
|
80
|
+
2. 运行 `/prizmkit-code-review`(只读)
|
|
81
81
|
- 6 个审查维度: 规格符合度、计划遵循度、代码质量、安全性、一致性、测试覆盖
|
|
82
82
|
- 判定: PASS | PASS WITH WARNINGS | NEEDS FIXES
|
|
83
83
|
3. 编写和执行集成测试:
|
|
@@ -46,7 +46,7 @@ You are the **session orchestrator**. Implement Feature {{FEATURE_ID}}: "{{FEATU
|
|
|
46
46
|
|
|
47
47
|
{{IF_INIT_NEEDED}}
|
|
48
48
|
### Phase 0: Project Bootstrap
|
|
49
|
-
- Run
|
|
49
|
+
- Run `/prizmkit-init` (invoke the prizmkit-init skill)
|
|
50
50
|
- Run `python3 {{INIT_SCRIPT_PATH}} --project-root {{PROJECT_ROOT}} --feature-id {{FEATURE_ID}} --feature-slug {{FEATURE_SLUG}}`
|
|
51
51
|
- **CP-0**: Verify `.prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
52
52
|
{{END_IF_INIT_NEEDED}}
|
|
@@ -113,7 +113,7 @@ Key decisions: [list]
|
|
|
113
113
|
|
|
114
114
|
### Phase 4.5: Prizm Doc Update (mandatory for feature sessions)
|
|
115
115
|
|
|
116
|
-
Run
|
|
116
|
+
Run `/prizmkit-prizm-docs` and sync project docs before commit:
|
|
117
117
|
1. Use `git diff --cached --name-status` (fallback: `git diff --name-status`) to locate changed modules
|
|
118
118
|
2. Update affected `.prizm-docs/` files (L1/L2, changelog.prizm)
|
|
119
119
|
3. Stage documentation updates (`git add .prizm-docs/`) if changed
|
|
@@ -122,13 +122,13 @@ Doc maintenance pass condition (pipeline-enforced): `REGISTRY.md` **or** `.prizm
|
|
|
122
122
|
|
|
123
123
|
### Phase 4.7: Retrospective (feature sessions only, before commit)
|
|
124
124
|
|
|
125
|
-
If this session is a feature (not a bug-fix-only commit), run
|
|
125
|
+
If this session is a feature (not a bug-fix-only commit), run `/prizmkit-retrospective` now — **before committing**.
|
|
126
126
|
Retrospective must update relevant `.prizm-docs/` sections (TRAPS/RULES/DECISIONS) when applicable, so those changes are included in the feature commit.
|
|
127
127
|
Stage any `.prizm-docs/` changes produced: `git add .prizm-docs/`
|
|
128
128
|
|
|
129
129
|
### Phase 5: Commit
|
|
130
130
|
|
|
131
|
-
- Run
|
|
131
|
+
- Run `/prizmkit-summarize` → archive to REGISTRY.md
|
|
132
132
|
- Mark feature complete:
|
|
133
133
|
```bash
|
|
134
134
|
python3 {{VALIDATOR_SCRIPTS_DIR}}/update-feature-status.py \
|
|
@@ -136,8 +136,8 @@ Stage any `.prizm-docs/` changes produced: `git add .prizm-docs/`
|
|
|
136
136
|
--state-dir "{{PROJECT_ROOT}}/dev-pipeline/state" \
|
|
137
137
|
--feature-id "{{FEATURE_ID}}" --session-id "{{SESSION_ID}}" --action complete
|
|
138
138
|
```
|
|
139
|
-
- Run
|
|
140
|
-
- MANDATORY: commit must be done via
|
|
139
|
+
- Run `/prizmkit-committer` → `feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`, do NOT push
|
|
140
|
+
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
@@ -203,5 +203,5 @@ Re-check `git status --short` and ensure it is empty before exiting.
|
|
|
203
203
|
- Tier 1: you do everything — no subagents, no TeamCreate
|
|
204
204
|
- Build context-snapshot.md FIRST; use it throughout instead of re-reading files
|
|
205
205
|
- ALWAYS write session-status.json before exiting
|
|
206
|
-
-
|
|
206
|
+
- `/prizmkit-committer` is mandatory — do NOT skip the commit phase, and do NOT replace it with manual git commit commands
|
|
207
207
|
- Before exiting, `git status --short` must be empty
|
|
@@ -57,7 +57,7 @@ If a subagent times out:
|
|
|
57
57
|
|
|
58
58
|
{{IF_INIT_NEEDED}}
|
|
59
59
|
### Phase 0: Project Bootstrap
|
|
60
|
-
- Run
|
|
60
|
+
- Run `/prizmkit-init` (invoke the prizmkit-init skill)
|
|
61
61
|
- Run `python3 {{INIT_SCRIPT_PATH}} --project-root {{PROJECT_ROOT}} --feature-id {{FEATURE_ID}} --feature-slug {{FEATURE_SLUG}}`
|
|
62
62
|
- **CP-0**: Verify `.prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
63
63
|
{{END_IF_INIT_NEEDED}}
|
|
@@ -140,7 +140,7 @@ Wait for Reviewer to return.
|
|
|
140
140
|
|
|
141
141
|
### Phase 4.5: Prizm Doc Update (mandatory for feature sessions)
|
|
142
142
|
|
|
143
|
-
Run
|
|
143
|
+
Run `/prizmkit-prizm-docs` and sync project docs before commit:
|
|
144
144
|
1. Use `git diff --cached --name-status` (fallback: `git diff --name-status`) to locate changed modules
|
|
145
145
|
2. Update affected `.prizm-docs/` files (L1/L2, changelog.prizm)
|
|
146
146
|
3. Stage documentation updates (`git add .prizm-docs/`) if changed
|
|
@@ -149,13 +149,13 @@ Doc maintenance pass condition (pipeline-enforced): `REGISTRY.md` **or** `.prizm
|
|
|
149
149
|
|
|
150
150
|
### Phase 4.7: Retrospective (feature sessions only, before commit)
|
|
151
151
|
|
|
152
|
-
If this session is a feature (not a bug-fix-only commit), run
|
|
152
|
+
If this session is a feature (not a bug-fix-only commit), run `/prizmkit-retrospective` now — **before committing**.
|
|
153
153
|
Retrospective must update relevant `.prizm-docs/` sections (TRAPS/RULES/DECISIONS) when applicable, so those changes are included in the feature commit.
|
|
154
154
|
Stage any `.prizm-docs/` changes produced: `git add .prizm-docs/`
|
|
155
155
|
|
|
156
156
|
### Phase 5: Commit
|
|
157
157
|
|
|
158
|
-
- Run
|
|
158
|
+
- Run `/prizmkit-summarize` → archive to REGISTRY.md
|
|
159
159
|
- Mark feature complete:
|
|
160
160
|
```bash
|
|
161
161
|
python3 {{VALIDATOR_SCRIPTS_DIR}}/update-feature-status.py \
|
|
@@ -163,8 +163,8 @@ Stage any `.prizm-docs/` changes produced: `git add .prizm-docs/`
|
|
|
163
163
|
--state-dir "{{PROJECT_ROOT}}/dev-pipeline/state" \
|
|
164
164
|
--feature-id "{{FEATURE_ID}}" --session-id "{{SESSION_ID}}" --action complete
|
|
165
165
|
```
|
|
166
|
-
- Run
|
|
167
|
-
- MANDATORY: commit must be done via
|
|
166
|
+
- Run `/prizmkit-committer` → `feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`, do NOT push
|
|
167
|
+
- MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
168
168
|
|
|
169
169
|
---
|
|
170
170
|
|
|
@@ -233,6 +233,6 @@ Re-check `git status --short` and ensure it is empty before exiting.
|
|
|
233
233
|
- Build context-snapshot.md FIRST; all subagents read it instead of re-reading source files
|
|
234
234
|
- Do NOT use `run_in_background=true` when spawning subagents
|
|
235
235
|
- ALWAYS write session-status.json before exiting
|
|
236
|
-
-
|
|
236
|
+
- `/prizmkit-committer` is mandatory, and must not be replaced with manual git commit commands
|
|
237
237
|
- Before exiting, `git status --short` must be empty
|
|
238
238
|
- On timeout: check snapshot → model:lite → remaining steps only → max 2 retries → orchestrator fallback
|
|
@@ -62,7 +62,7 @@ If any agent times out:
|
|
|
62
62
|
|
|
63
63
|
{{IF_INIT_NEEDED}}
|
|
64
64
|
### Phase 0: Project Bootstrap
|
|
65
|
-
- Run
|
|
65
|
+
- Run `/prizmkit-init` (invoke the prizmkit-init skill)
|
|
66
66
|
- Run `python3 {{INIT_SCRIPT_PATH}} --project-root {{PROJECT_ROOT}} --feature-id {{FEATURE_ID}} --feature-slug {{FEATURE_SLUG}}`
|
|
67
67
|
- **CP-0**: Verify `.prizm-docs/root.prizm`, `.prizmkit/config.json` exist
|
|
68
68
|
{{END_IF_INIT_NEEDED}}
|
|
@@ -232,16 +232,16 @@ Wait for Reviewer to return.
|
|
|
232
232
|
|
|
233
233
|
### Phase 7: Summarize & Commit — DO NOT SKIP
|
|
234
234
|
|
|
235
|
-
**For bug fixes**: skip
|
|
235
|
+
**For bug fixes**: skip `/prizmkit-summarize`, skip retrospective, and use `fix(<scope>):` commit prefix.
|
|
236
236
|
|
|
237
237
|
**7a.** Check if feature already committed:
|
|
238
238
|
```bash
|
|
239
239
|
git log --oneline | grep "{{FEATURE_ID}}" | head -3
|
|
240
240
|
```
|
|
241
|
-
- If a commit for `{{FEATURE_ID}}` already exists → **skip 7c** (do NOT run prizmkit
|
|
241
|
+
- If a commit for `{{FEATURE_ID}}` already exists → **skip 7c** (do NOT run /prizmkit-committer, do NOT run git reset, do NOT stage or unstage anything). Proceed directly to Step 3.
|
|
242
242
|
- If no existing commit → proceed normally with 7a–7c.
|
|
243
243
|
|
|
244
|
-
**7b.** Run
|
|
244
|
+
**7b.** Run `/prizmkit-summarize` → archive to REGISTRY.md
|
|
245
245
|
|
|
246
246
|
**7b.5.** Update prizm-docs (feature sessions):
|
|
247
247
|
- Read the 'Implementation Log' in `context-snapshot.md` to identify changed files
|
|
@@ -250,7 +250,7 @@ git log --oneline | grep "{{FEATURE_ID}}" | head -3
|
|
|
250
250
|
- Stage all modified prizm-docs: `git add .prizm-docs/`
|
|
251
251
|
- Pipeline docs pass condition is `REGISTRY.md` OR `.prizm-docs/` changed in final commit
|
|
252
252
|
|
|
253
|
-
**7b.6.** Run
|
|
253
|
+
**7b.6.** Run `/prizmkit-retrospective` (feature sessions only, **before commit**):
|
|
254
254
|
- Extract lessons from completed feature — compare spec/plan/tasks vs actual
|
|
255
255
|
- Update relevant `.prizm-docs/` sections: TRAPS, RULES, DECISIONS
|
|
256
256
|
- Write `.prizmkit/specs/{{FEATURE_SLUG}}/retrospective.md`
|
|
@@ -265,9 +265,9 @@ python3 {{VALIDATOR_SCRIPTS_DIR}}/update-feature-status.py \
|
|
|
265
265
|
--feature-id "{{FEATURE_ID}}" --session-id "{{SESSION_ID}}" --action complete
|
|
266
266
|
```
|
|
267
267
|
|
|
268
|
-
**7d.** Run
|
|
268
|
+
**7d.** Run `/prizmkit-committer` → `feat({{FEATURE_ID}}): {{FEATURE_TITLE}}`, do NOT push
|
|
269
269
|
|
|
270
|
-
**7e.** MANDATORY: commit must be done via
|
|
270
|
+
**7e.** MANDATORY: commit must be done via `/prizmkit-committer` skill. Do NOT run manual `git add`/`git commit` as a substitute.
|
|
271
271
|
|
|
272
272
|
---
|
|
273
273
|
|
|
@@ -344,6 +344,6 @@ No team cleanup needed — agents were spawned directly without TeamCreate.
|
|
|
344
344
|
- context-snapshot.md is the team knowledge base: PM writes it once, all agents read it
|
|
345
345
|
- Do NOT use `run_in_background=true` when spawning agents
|
|
346
346
|
- ALWAYS write session-status.json before exiting
|
|
347
|
-
- Commit phase must use
|
|
347
|
+
- Commit phase must use `/prizmkit-committer`; do NOT replace with manual git commit commands
|
|
348
348
|
- Before exiting, `git status --short` must be empty
|
|
349
349
|
- On timeout: check snapshot → model:lite → remaining steps only → max 2 retries → orchestrator fallback
|
|
@@ -21,7 +21,7 @@ You are the **bug fix session orchestrator**. Fix Bug {{BUG_ID}}: "{{BUG_TITLE}}
|
|
|
21
21
|
**MANDATORY TEAM REQUIREMENT**: You MUST use the `prizm-dev-team` multi-agent team. This is NON-NEGOTIABLE. All implementation and review work MUST be performed by the appropriate team agents (Dev, Reviewer).
|
|
22
22
|
|
|
23
23
|
**BUG FIX DOCUMENTATION POLICY**: Bug fixes MUST NOT be recorded as new documentation entries:
|
|
24
|
-
- Do NOT run
|
|
24
|
+
- Do NOT run `/prizmkit-summarize` (no REGISTRY.md entries)
|
|
25
25
|
- Do NOT create spec/plan/tasks under `.prizmkit/specs/`
|
|
26
26
|
- Do NOT update `.prizm-docs/` module docs for pure bug fixes (unless TRAPS update is needed)
|
|
27
27
|
- Commit with `fix(<scope>):` prefix, NOT `feat:`
|
|
@@ -98,7 +98,7 @@ You are the **bug fix session orchestrator**. Fix Bug {{BUG_ID}}: "{{BUG_TITLE}}
|
|
|
98
98
|
|
|
99
99
|
- Spawn Dev agent (Task tool, subagent_type="prizm-dev-team-dev", run_in_background=false)
|
|
100
100
|
Prompt: "Read {{DEV_SUBAGENT_PATH}}. For bug {{BUG_ID}} ('{{BUG_TITLE}}'):
|
|
101
|
-
1. Run
|
|
101
|
+
1. Run `/prizmkit-tool-error-triage` with the bug description and error source
|
|
102
102
|
2. Check `.prizm-docs/` TRAPS sections for matching known issues
|
|
103
103
|
3. Classify: category, subcategory, root cause (confirmed or suspected), affected files
|
|
104
104
|
4. Assess impact: which modules are affected, what is the blast radius
|
|
@@ -136,7 +136,7 @@ You are the **bug fix session orchestrator**. Fix Bug {{BUG_ID}}: "{{BUG_TITLE}}
|
|
|
136
136
|
- Spawn Dev agent (Task tool, subagent_type="prizm-dev-team-dev", run_in_background=false)
|
|
137
137
|
Prompt: "Read {{DEV_SUBAGENT_PATH}}. For bug {{BUG_ID}}:
|
|
138
138
|
1. Read the fix plan from `.prizmkit/bugfix/{{BUG_ID}}/fix-plan.md`
|
|
139
|
-
2. Run
|
|
139
|
+
2. Run `/prizmkit-tool-bug-reproducer` with the bug description and triage results
|
|
140
140
|
3. Generate a minimal reproduction test that FAILS with current code
|
|
141
141
|
4. Execute the reproduction test to confirm it fails
|
|
142
142
|
5. If reproduction fails, refine and retry (max 2 rounds)
|
|
@@ -179,7 +179,7 @@ You are the **bug fix session orchestrator**. Fix Bug {{BUG_ID}}: "{{BUG_TITLE}}
|
|
|
179
179
|
|
|
180
180
|
- Spawn Reviewer agent (Task tool, subagent_type="prizm-dev-team-reviewer", run_in_background=false)
|
|
181
181
|
Prompt: "Read {{REVIEWER_SUBAGENT_PATH}}. For bug {{BUG_ID}}:
|
|
182
|
-
1. Run
|
|
182
|
+
1. Run `/prizmkit-code-review` scoped to CHANGED FILES ONLY
|
|
183
183
|
2. Review dimensions (adjusted for bug fix):
|
|
184
184
|
- Fix correctness: Does it address the root cause?
|
|
185
185
|
- Regression safety: Does it break existing behavior?
|
|
@@ -208,10 +208,10 @@ You are the **bug fix session orchestrator**. Fix Bug {{BUG_ID}}: "{{BUG_TITLE}}
|
|
|
208
208
|
|
|
209
209
|
- Spawn Dev agent (Task tool, subagent_type="prizm-dev-team-dev", run_in_background=false)
|
|
210
210
|
Prompt: "Read {{DEV_SUBAGENT_PATH}}. For bug {{BUG_ID}}:
|
|
211
|
-
1. Run
|
|
211
|
+
1. Run `/prizmkit-committer` with:
|
|
212
212
|
- Commit message: `fix({{FIX_SCOPE}}): {{BUG_TITLE}}`
|
|
213
213
|
- Include both fix code and reproduction test
|
|
214
|
-
- Do NOT run
|
|
214
|
+
- Do NOT run `/prizmkit-summarize`
|
|
215
215
|
- Do NOT push (user will push manually)
|
|
216
216
|
2. If a new pitfall was discovered (not previously in TRAPS):
|
|
217
217
|
- Update the affected module's TRAPS section in `.prizm-docs/`
|
|
@@ -282,7 +282,7 @@ Write to: `{{SESSION_STATUS_PATH}}`
|
|
|
282
282
|
- **MANDATORY**: Use `prizm-dev-team` — single-agent execution is FORBIDDEN
|
|
283
283
|
- **Only 2 artifact files per bug**: fix-plan.md + fix-report.md — NEVER more
|
|
284
284
|
- **Do NOT create** spec.md, plan.md, or tasks.md for bug fixes
|
|
285
|
-
- **Do NOT run**
|
|
285
|
+
- **Do NOT run** `/prizmkit-summarize` (no REGISTRY.md entries for bugs)
|
|
286
286
|
- **Commit with** `fix(<scope>):` prefix, NOT `feat:`
|
|
287
287
|
- **Update TRAPS** in `.prizm-docs/` only if a genuinely new pitfall was discovered
|
|
288
288
|
- Dev agents use TDD approach: reproduction test goes from RED → GREEN
|
package/package.json
CHANGED
package/src/detect-platform.js
CHANGED
|
@@ -8,7 +8,7 @@ import { execFileSync } from 'child_process';
|
|
|
8
8
|
/**
|
|
9
9
|
* 允许检测的命令白名单(仅用于 which 检测)
|
|
10
10
|
*/
|
|
11
|
-
const ALLOWED_COMMANDS = ['cbc', 'claude'
|
|
11
|
+
const ALLOWED_COMMANDS = ['cbc', 'claude'];
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* 检查命令是否存在于 PATH 中
|
|
@@ -36,23 +36,21 @@ function commandExists(cmd) {
|
|
|
36
36
|
export function detectPlatform() {
|
|
37
37
|
const cbc = commandExists('cbc');
|
|
38
38
|
const claude = commandExists('claude');
|
|
39
|
-
const claudeInternal = commandExists('claude-internal');
|
|
40
39
|
|
|
41
40
|
// platform 建议:基于目录结构,优先 both
|
|
42
41
|
let suggested = 'codebuddy';
|
|
43
|
-
if ((cbc) && (claude
|
|
42
|
+
if ((cbc) && (claude)) {
|
|
44
43
|
suggested = 'both';
|
|
45
|
-
} else if ((claude
|
|
44
|
+
} else if ((claude) && !cbc) {
|
|
46
45
|
suggested = 'claude';
|
|
47
|
-
} else if (cbc && !claude
|
|
46
|
+
} else if (cbc && !claude) {
|
|
48
47
|
suggested = 'codebuddy';
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
// CLI 命令建议:优先 cbc,其次 claude-internal,再次 claude
|
|
52
51
|
let suggestedCli = '';
|
|
53
52
|
if (cbc) suggestedCli = 'cbc';
|
|
54
|
-
else if (claudeInternal) suggestedCli = 'claude-internal';
|
|
55
53
|
else if (claude) suggestedCli = 'claude';
|
|
56
54
|
|
|
57
|
-
return { cbc, claude,
|
|
55
|
+
return { cbc, claude, suggested, suggestedCli };
|
|
58
56
|
}
|
package/src/index.js
CHANGED
|
@@ -7,11 +7,17 @@
|
|
|
7
7
|
|
|
8
8
|
import { select, confirm, input } from '@inquirer/prompts';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
|
+
import { readFileSync } from 'fs';
|
|
11
|
+
import { dirname, join } from 'path';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
10
13
|
import path from 'path';
|
|
11
14
|
import { detectPlatform } from './detect-platform.js';
|
|
12
15
|
import { scaffold } from './scaffold.js';
|
|
13
16
|
import { loadMetadata } from './metadata.js';
|
|
14
17
|
|
|
18
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
19
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
20
|
+
|
|
15
21
|
/**
|
|
16
22
|
* 主入口:交互式脚手架流程
|
|
17
23
|
* @param {string} directory - 目标目录
|
|
@@ -22,8 +28,14 @@ export async function runScaffold(directory, options) {
|
|
|
22
28
|
|
|
23
29
|
// 打印欢迎 banner
|
|
24
30
|
console.log('');
|
|
31
|
+
const versionTag = `v${pkg.version}`;
|
|
32
|
+
const titleText = ` PrizmKit ${versionTag} — 自演化自主开发框架`;
|
|
33
|
+
// Box inner width = 56 visible columns. CJK chars occupy 2 columns each in terminal.
|
|
34
|
+
const BOX_INNER = 56;
|
|
35
|
+
const cjkCount = (titleText.match(/[\u4e00-\u9fff\u3400-\u4dbf\uf900-\ufaff]/g) || []).length;
|
|
36
|
+
const titlePad = ' '.repeat(Math.max(0, BOX_INNER - titleText.length - cjkCount));
|
|
25
37
|
console.log(chalk.bold('╔════════════════════════════════════════════════════════╗'));
|
|
26
|
-
console.log(chalk.bold('║') + chalk.bold.cyan(' PrizmKit') + chalk.bold(
|
|
38
|
+
console.log(chalk.bold('║') + chalk.bold.cyan(' PrizmKit ') + chalk.bold(`${versionTag} — 自演化自主开发框架${titlePad}`) + chalk.bold('║'));
|
|
27
39
|
console.log(chalk.bold('║') + ' Create a clean, focused project environment ' + chalk.bold('║'));
|
|
28
40
|
console.log(chalk.bold('╚════════════════════════════════════════════════════════╝'));
|
|
29
41
|
console.log('');
|