skills/arcblock/idd/intent-critique

intent-critique

SKILL.md

Intent Critique

设计质量的批判性审查。不检查格式,只检查"是否该这么设计"。

核心问题

每次 critique 回答一个问题:这个设计能更简单吗?

检查维度

维度 信号 问题
Over-engineering 复杂的配置系统、插件架构、多层抽象 "这个复杂度是当前需求驱动的吗?"
YAGNI "未来可能需要"、"预留扩展点"、"支持多种..." "删掉这个,MVP 还能工作吗?"
过早抽象 只有一个实现的接口、只用一次的工具函数 "现在真的需要这层抽象吗?"
边界问题 模块间大量数据传递、循环依赖、职责模糊 "这个边界切在这里自然吗?"
隐藏复杂度 看似简单但实现困难的描述 "这句话背后的实现复杂度是什么?"

工作流程

/intent-critique [path]
┌───────────────────┐
│  读取 Intent 文件  │
│  理解设计意图      │
└─────────┬─────────┘
┌───────────────────┐
│  逐维度分析        │
│  识别可疑设计      │
└─────────┬─────────┘
┌───────────────────────────────────────┐
│  对每个发现,与用户讨论:              │
│                                       │
│  展示问题 + 简化建议                   │
│  AskUserQuestion:                     │
│  - 接受简化                           │
│  - 保留原设计(说明理由)              │
│  - 跳过此项                           │
└─────────┬─────────────────────────────┘
┌───────────────────┐
│  汇总 critique     │
│  可选更新 Intent   │
└───────────────────┘

使用方法

# 审查指定 Intent
/intent-critique src/core/intent/INTENT.md

# 审查当前目录
/intent-critique

# 只分析不修改
/intent-critique --dry-run

执行步骤

1. 读取并理解 Intent

先完整阅读 Intent,理解:

  • 要解决什么问题
  • 核心设计决策
  • 主要组件和边界

2. 逐维度扫描

Over-engineering 信号

检查是否存在:
- 可配置的部分 > 3 个
- 插件/扩展机制
- 多于 2 层的抽象
- "支持多种 X"的描述
- 复杂的状态机

YAGNI 信号

检查是否存在:
- "未来可能..."
- "预留..."
- "方便以后..."
- 只在"高级场景"使用的功能
- 没有具体 use case 的抽象

过早抽象信号

检查是否存在:
- 只有一个实现的接口/协议
- 只用一次的公共函数
- 只有一个子类的基类
- 不必要的工厂/策略模式

边界问题信号

检查是否存在:
- 模块间传递 > 5 个参数
- A 依赖 B,B 也依赖 A
- 一个改动需要同时改多个模块
- 职责描述模糊或重叠

3. 生成发现列表

对每个发现,准备:

  • 位置:Intent 中的具体 section
  • 问题:简短描述问题
  • 简化建议:具体的替代方案
  • 风险:简化可能带来的代价

4. 交互式讨论

对每个发现使用 AskUserQuestion:

发现 1/N: Over-engineering

Section: ## 插件系统
问题: 定义了完整的插件加载、生命周期、沙箱机制,但目前只有 2 个内置功能。

简化建议: 删除插件系统,直接硬编码这 2 个功能。
未来需要时再加。

风险: 如果很快需要第三方插件,要重新设计。

---
AskUserQuestion:
- question: "是否接受这个简化?"
- options:
  - "接受简化" - 删除插件系统设计
  - "保留原设计" - 请说明具体场景
  - "跳过" - 暂不决定

5. 汇总报告

# Intent Critique Report

## 文件: src/core/intent/INTENT.md

## 统计
- 发现问题: 5
- 接受简化: 3
- 保留原设计: 1
- 跳过: 1

## 已接受的简化

### 1. 删除插件系统
- 原设计: 完整插件架构
- 简化为: 硬编码 2 个功能
- 影响 sections: ## 插件系统, ## 架构

### 2. 合并配置层
...

## 保留的设计

### 1. 多数据源支持
- 原因: 用户明确表示 v1.1 需要
- 建议: 在 Intent 中标注具体 timeline

## 跳过的项目
...

## 下一步
- [ ] 更新 Intent 文件(如果选择自动更新)
- [ ] 运行 /intent-validate 检查格式
- [ ] 运行 /intent-review 重新审批受影响的 sections

6. 可选:更新 Intent

如果用户同意,自动更新 Intent:

  • 删除被简化掉的 sections
  • 添加简化说明到变更记录
  • 将受影响的 sections 标记回 draft

讨论技巧

提问方式

好的提问:

  • "删掉 X,系统还能工作吗?"
  • "有没有具体场景需要 X?"
  • "X 的复杂度值得吗?"

避免:

  • 预设答案
  • 过于理论化的讨论
  • 同时问多个不相关的问题

接受"保留"的时机

当用户提供:

  • 具体的使用场景
  • 明确的时间线("下月就要")
  • 外部约束("合作方要求")

记录理由,建议在 Intent 中也注明。

与其他工具配合

intent-interview → intent-validate → intent-critique → intent-review
                                     可独立调用
                                     任何时候想反思设计时

不做什么

  • ❌ 不检查格式(intent-validate 的职责)
  • ❌ 不检查一致性(intent-sync 的职责)
  • ❌ 不标记审批状态(intent-review 的职责)
  • ❌ 不自动做决定(必须与用户讨论)
Weekly Installs
31
Repository
arcblock/idd
Installed on
claude-code29
gemini-cli23
opencode21
codex21
antigravity21
cursor20