intent-changes

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Intent Changes

Intent Changes

设计文档的结构化变更提案与协作 Review 工具。
设计文档的结构化变更提案与协作 Review 工具。

核心概念

核心概念

Change Proposal

Change Proposal

每个变更是一个独立提案:
字段说明
ID唯一标识 (C001, C002...)
TypeADD / MODIFY / REPLACE / DELETE
StatusPENDING / ACCEPTED / REJECTED
Target变更位置
Before/After变更内容
Decision决策记录 (reviewer, timestamp, comment)
每个变更是一个独立提案:
字段说明
ID唯一标识 (C001, C002...)
TypeADD / MODIFY / REPLACE / DELETE
StatusPENDING / ACCEPTED / REJECTED
Target变更位置
Before/After变更内容
Decision决策记录 (reviewer, timestamp, comment)

状态流

状态流

PENDING ──accept──> ACCEPTED ──finalize──> Applied
    └──reject──> REJECTED
PENDING ──accept──> ACCEPTED ──finalize──> Applied
    └──reject──> REJECTED

命令

命令

命令说明
/intent-changes start <file>
启动或恢复 review
/intent-changes propose
提出变更建议
/intent-changes accept <id>
接受变更
/intent-changes reject <id>
拒绝变更
/intent-changes status
查看当前状态
/intent-changes finalize
交互式 apply
命令说明
/intent-changes start <file>
启动或恢复 review
/intent-changes propose
提出变更建议
/intent-changes accept <id>
接受变更
/intent-changes reject <id>
拒绝变更
/intent-changes status
查看当前状态
/intent-changes finalize
交互式 apply

工作流程

工作流程

/intent-changes start <file>
┌───────────────────┐
│  检查 .reviews/   │
│  有则恢复         │
│  无则创建         │
└─────────┬─────────┘
/intent-changes propose
┌───────────────────────────────────────┐
│  读取源文档                            │
│  与用户讨论变更内容                     │
│  生成 Change Proposal (C001, C002...)  │
│  写入 .reviews/{name}.review.md        │
└─────────┬─────────────────────────────┘
/intent-changes accept/reject
┌───────────────────┐
│  更新 status      │
│  记录 reviewer    │
│  记录 timestamp   │
└─────────┬─────────┘
/intent-changes finalize
┌───────────────────────────────────────┐
│  逐个显示 ACCEPTED 变更               │
│  交互确认: Apply? [Y/n/view]          │
│  Apply 到源文档                        │
│  生成变更摘要                          │
└───────────────────────────────────────┘
/intent-changes start <file>
┌───────────────────┐
│  检查 .reviews/   │
│  有则恢复         │
│  无则创建         │
└─────────┬─────────┘
/intent-changes propose
┌───────────────────────────────────────┐
│  读取源文档                            │
│  与用户讨论变更内容                     │
│  生成 Change Proposal (C001, C002...)  │
│  写入 .reviews/{name}.review.md        │
└─────────┬─────────────────────────────┘
/intent-changes accept/reject
┌───────────────────┐
│  更新 status      │
│  记录 reviewer    │
│  记录 timestamp   │
└─────────┬─────────┘
/intent-changes finalize
┌───────────────────────────────────────┐
│  逐个显示 ACCEPTED 变更               │
│  交互确认: Apply? [Y/n/view]          │
│  Apply 到源文档                        │
│  生成变更摘要                          │
└───────────────────────────────────────┘

执行步骤

执行步骤

命令: start

命令: start

输入: 文件路径
步骤:
  1. 验证源文件存在
  2. 确定 review 文件路径:
    .reviews/{basename}.review.md
  3. 如果 review 文件存在:
    • 读取并解析
    • 显示当前状态概览
  4. 如果不存在:
    • 创建
      .reviews/
      目录(如不存在)
    • 创建 review 文件,写入 frontmatter
  5. 设置当前 session 的 source 和 review 路径
输出:
Review session started.

Source: intent/specs/kind-system-spec.md
Review: .reviews/kind-system-spec.review.md

Status: 3 PENDING, 2 ACCEPTED, 1 REJECTED

Commands:
  /intent-changes propose  - 提出新变更
  /intent-changes status   - 查看详情
  /intent-changes finalize - 应用变更
输入: 文件路径
步骤:
  1. 验证源文件存在
  2. 确定 review 文件路径:
    .reviews/{basename}.review.md
  3. 如果 review 文件存在:
    • 读取并解析
    • 显示当前状态概览
  4. 如果不存在:
    • 创建
      .reviews/
      目录(如不存在)
    • 创建 review 文件,写入 frontmatter
  5. 设置当前 session 的 source 和 review 路径
输出:
Review session started.

Source: intent/specs/kind-system-spec.md
Review: .reviews/kind-system-spec.review.md

Status: 3 PENDING, 2 ACCEPTED, 1 REJECTED

Commands:
  /intent-changes propose  - 提出新变更
  /intent-changes status   - 查看详情
  /intent-changes finalize - 应用变更

命令: propose

命令: propose

前置条件: 已执行 start
步骤:
  1. 读取源文档内容
  2. 读取当前 review 文件,获取已有提案
  3. 计算下一个 ID (如已有 C001-C005,下一个是 C006)
  4. 与用户讨论:
    • 展示源文档结构
    • 使用 AskUserQuestion 询问变更类型和位置
    • 收集变更内容
  5. 生成 Change Proposal 块
  6. 追加到 review 文件
交互流程:
使用 AskUserQuestion:
- question: "你想对哪个部分提出变更?"
- header: "变更位置"
- options:
  - "## Kind 定义" - 第一个 section
  - "## Actions" - 第二个 section
  - "## 示例" - 第三个 section
  - "其他位置" - 手动指定
使用 AskUserQuestion:
- question: "变更类型是什么?"
- header: "变更类型"
- options:
  - "ADD" - 新增内容
  - "MODIFY" - 修改现有内容
  - "REPLACE" - 替换整个 section
  - "DELETE" - 删除内容
然后收集具体内容,生成提案。
前置条件: 已执行 start
步骤:
  1. 读取源文档内容
  2. 读取当前 review 文件,获取已有提案
  3. 计算下一个 ID (如已有 C001-C005,下一个是 C006)
  4. 与用户讨论:
    • 展示源文档结构
    • 使用 AskUserQuestion 询问变更类型和位置
    • 收集变更内容
  5. 生成 Change Proposal 块
  6. 追加到 review 文件
交互流程:
使用 AskUserQuestion:
- question: "你想对哪个部分提出变更?"
- header: "变更位置"
- options:
  - "## Kind 定义" - 第一个 section
  - "## Actions" - 第二个 section
  - "## 示例" - 第三个 section
  - "其他位置" - 手动指定
使用 AskUserQuestion:
- question: "变更类型是什么?"
- header: "变更类型"
- options:
  - "ADD" - 新增内容
  - "MODIFY" - 修改现有内容
  - "REPLACE" - 替换整个 section
  - "DELETE" - 删除内容
然后收集具体内容,生成提案。

命令: accept / reject

命令: accept / reject

输入: 提案 ID,可选 comment/reason
语法:
/intent-changes accept C001
/intent-changes accept C001 --comment "LGTM"
/intent-changes reject C002 --reason "不同意这个改法"
步骤:
  1. 读取 review 文件
  2. 找到对应 ID 的提案
  3. 验证当前状态是 PENDING
  4. 更新状态为 ACCEPTED 或 REJECTED
  5. 添加 Decision 记录:
    • reviewer: 从 git config user.name 或 $USER 获取
    • timestamp: 当前日期
    • comment: 用户提供的评论
  6. 写回 review 文件
Decision 格式:
markdown
**Decision:**
- ✓ @robmao (2026-01-21): "LGTM"
或拒绝时:
markdown
**Decision:**
- ✗ @robmao (2026-01-21): "不同意这个改法"
输入: 提案 ID,可选 comment/reason
语法:
/intent-changes accept C001
/intent-changes accept C001 --comment "LGTM"
/intent-changes reject C002 --reason "不同意这个改法"
步骤:
  1. 读取 review 文件
  2. 找到对应 ID 的提案
  3. 验证当前状态是 PENDING
  4. 更新状态为 ACCEPTED 或 REJECTED
  5. 添加 Decision 记录:
    • reviewer: 从 git config user.name 或 $USER 获取
    • timestamp: 当前日期
    • comment: 用户提供的评论
  6. 写回 review 文件
Decision 格式:
markdown
**Decision:**
- ✓ @robmao (2026-01-21): "LGTM"
或拒绝时:
markdown
**Decision:**
- ✗ @robmao (2026-01-21): "不同意这个改法"

命令: status

命令: status

输出详情:
Review: kind-system-spec.md
Source: intent/specs/kind-system-spec.md
Reviewers: @robmao, @claude

─────────────────────────────────

PENDING (2):
  C002 [MODIFY] 修改 Kind 定义的措辞
  C004 [ADD] 新增性能章节

ACCEPTED (3):
  C001 [ADD] 新增 Action 分类说明
       ✓ @robmao (2026-01-21)
  C003 [MODIFY] 调整示例代码
       ✓ @claude (2026-01-21)
  C005 [DELETE] 删除过时章节
       ✓ @robmao (2026-01-21)

REJECTED (1):
  C006 [REPLACE] 重写整个文档
       ✗ @robmao (2026-01-21): "改动太大"

─────────────────────────────────

Next: /intent-changes finalize (3 changes ready)
输出详情:
Review: kind-system-spec.md
Source: intent/specs/kind-system-spec.md
Reviewers: @robmao, @claude

─────────────────────────────────

PENDING (2):
  C002 [MODIFY] 修改 Kind 定义的措辞
  C004 [ADD] 新增性能章节

ACCEPTED (3):
  C001 [ADD] 新增 Action 分类说明
       ✓ @robmao (2026-01-21)
  C003 [MODIFY] 调整示例代码
       ✓ @claude (2026-01-21)
  C005 [DELETE] 删除过时章节
       ✓ @robmao (2026-01-21)

REJECTED (1):
  C006 [REPLACE] 重写整个文档
       ✗ @robmao (2026-01-21): "改动太大"

─────────────────────────────────

Next: /intent-changes finalize (3 changes ready)

命令: finalize

命令: finalize

前置条件: 至少有一个 ACCEPTED 的提案
步骤:
  1. 读取 review 文件,筛选 ACCEPTED 提案
  2. 按 Target 位置排序(从文档末尾往前,避免位置偏移)
  3. 对每个提案交互确认:
[1/3] C001 [ADD]: 新增 Action 分类说明

Target: After "## Actions"

Content to add:
┌────────────────────────────────────────┐
│ Actions 分为三类:                      │
│ - Inline: 同步执行,决定 commit 成功与否 │
│ - Deferred: 异步执行,失败不影响 commit  │
│ - Observational: 只读,可以慢           │
└────────────────────────────────────────┘

Apply this change? [Y/n/view/quit]
用户选项:
  • Y
    (默认): Apply 并继续
  • n
    : Skip 此变更(保持 ACCEPTED 状态但不 apply)
  • view
    : 显示完整的 before/after diff
  • quit
    : 中止 finalize
  1. Apply 变更到源文档
  2. 更新 review 文件:
    • 已 apply 的标记为
      [APPLIED]
    • 更新 frontmatter status 为
      finalized
      (如果全部处理完)
  3. 输出摘要
Apply 摘要:
Finalize complete.

Applied: 2
  C001 - 新增 Action 分类说明
  C003 - 调整示例代码

Skipped: 1
  C005 - 删除过时章节 (user chose to skip)

Source updated: intent/specs/kind-system-spec.md
Review archived: .reviews/kind-system-spec.review.md
前置条件: 至少有一个 ACCEPTED 的提案
步骤:
  1. 读取 review 文件,筛选 ACCEPTED 提案
  2. 按 Target 位置排序(从文档末尾往前,避免位置偏移)
  3. 对每个提案交互确认:
[1/3] C001 [ADD]: 新增 Action 分类说明

Target: After "## Actions"

Content to add:
┌────────────────────────────────────────┐
│ Actions 分为三类:                      │
│ - Inline: 同步执行,决定 commit 成功与否 │
│ - Deferred: 异步执行,失败不影响 commit  │
│ - Observational: 只读,可以慢           │
└────────────────────────────────────────┘

Apply this change? [Y/n/view/quit]
用户选项:
  • Y
    (默认): Apply 并继续
  • n
    : Skip 此变更(保持 ACCEPTED 状态但不 apply)
  • view
    : 显示完整的 before/after diff
  • quit
    : 中止 finalize
  1. Apply 变更到源文档
  2. 更新 review 文件:
    • 已 apply 的标记为
      [APPLIED]
    • 更新 frontmatter status 为
      finalized
      (如果全部处理完)
  3. 输出摘要
Apply 摘要:
Finalize complete.

Applied: 2
  C001 - 新增 Action 分类说明
  C003 - 调整示例代码

Skipped: 1
  C005 - 删除过时章节 (user chose to skip)

Source updated: intent/specs/kind-system-spec.md
Review archived: .reviews/kind-system-spec.review.md

Review 文件格式

Review 文件格式

Frontmatter

Frontmatter

yaml
---
source: intent/specs/kind-system-spec.md
created: 2026-01-21
reviewers:
  - robmao
  - claude
status: active
---
status 值:
  • active
    : 进行中
  • finalized
    : 已完成 apply
  • abandoned
    : 已放弃
yaml
---
source: intent/specs/kind-system-spec.md
created: 2026-01-21
reviewers:
  - robmao
  - claude
status: active
---
status 值:
  • active
    : 进行中
  • finalized
    : 已完成 apply
  • abandoned
    : 已放弃

Change Proposal 块

Change Proposal 块

markdown
---
markdown
---

C001 [ADD] [PENDING]

C001 [ADD] [PENDING]

简短描述
Target: After "## Actions"
After:
markdown
新增的内容...

简短描述
Target: After "## Actions"
After:
markdown
新增的内容...

C002 [MODIFY] [ACCEPTED]

C002 [MODIFY] [ACCEPTED]

简短描述
Target: Section "## Kind 定义"
Before:
markdown
原内容...
After:
markdown
新内容...
Reason: 变更理由
Decision:
  • ✓ @robmao (2026-01-21): "LGTM"
undefined
简短描述
Target: Section "## Kind 定义"
Before:
markdown
原内容...
After:
markdown
新内容...
Reason: 变更理由
Decision:
  • ✓ @robmao (2026-01-21): "LGTM"
undefined

获取 Reviewer 名称

获取 Reviewer 名称

按优先级:
  1. 命令参数
    --reviewer
  2. git config user.name
  3. 环境变量
    $USER
bash
undefined
按优先级:
  1. 命令参数
    --reviewer
  2. git config user.name
  3. 环境变量
    $USER
bash
undefined

获取方式

获取方式

git config user.name || echo $USER
undefined
git config user.name || echo $USER
undefined

边界

边界

做什么

做什么

  • ✓ 结构化管理变更提案
  • ✓ 追踪决策过程
  • ✓ 支持多 reviewer 署名
  • ✓ 交互式 apply
  • ✓ 结构化管理变更提案
  • ✓ 追踪决策过程
  • ✓ 支持多 reviewer 署名
  • ✓ 交互式 apply

不做什么

不做什么

  • ✗ 格式校验 → intent-validate
  • ✗ Section 审批 → intent-review
  • ✗ 设计质量判断 → intent-critique
  • ✗ 实现一致性 → intent-sync
  • ✗ 格式校验 → intent-validate
  • ✗ Section 审批 → intent-review
  • ✗ 设计质量判断 → intent-critique
  • ✗ 实现一致性 → intent-sync

与其他工具配合

与其他工具配合

intent-interview → 创建 Intent
intent-critique → 质疑设计
/intent-changes → 管理变更提案  ← 本 Skill
intent-review → 锁定 sections
intent-plan → 开始实现
intent-interview → 创建 Intent
intent-critique → 质疑设计
/intent-changes → 管理变更提案  ← 本 Skill
intent-review → 锁定 sections
intent-plan → 开始实现

示例

示例

独立 Review

独立 Review

bash
undefined
bash
undefined

开始

开始

/intent-changes start intent/specs/tools-spec.md
/intent-changes start intent/specs/tools-spec.md

提出建议

提出建议

/intent-changes propose
/intent-changes propose

决策

决策

/intent-changes accept C001 /intent-changes reject C002 --reason "不需要"
/intent-changes accept C001 /intent-changes reject C002 --reason "不需要"

应用

应用

/intent-changes finalize
undefined
/intent-changes finalize
undefined

协作 Review

协作 Review

bash
undefined
bash
undefined

A 启动并提建议

A 启动并提建议

/intent-changes start spec.md /intent-changes propose # C001-C003
/intent-changes start spec.md /intent-changes propose # C001-C003

B 来 review

B 来 review

/intent-changes accept C001 --comment "Good" /intent-changes reject C002 --reason "换个方式"
/intent-changes accept C001 --comment "Good" /intent-changes reject C002 --reason "换个方式"

A 提新方案

A 提新方案

/intent-changes propose # C004 替代 C002
/intent-changes propose # C004 替代 C002

B 接受

B 接受

/intent-changes accept C004
/intent-changes accept C004

最终 apply

最终 apply

/intent-changes finalize
undefined
/intent-changes finalize
undefined