Skill: trackoverflow/requirement-agent (version 1.0.0)

--- name: requirement-agent description: "需求澄清与执行确认。用于日常代码任务（修改、重构、优化、添加注释等）。当用户提出需求时，先通过快速追问（3-5 轮）完善需求，执行前根据规则判断是否需要确认。与 brainstorming（复杂系统设计）互补。" --- # Requirement Agent 轻量级需求澄清 + 执行前确认控制。 ## 与 brainstorming 的区分 | 场景 | Skill | |------|-------| | "帮我设计一个微服务架构" | [brainstorming](file:///Users/async/.trae-cn/skills/brainstorming) — 10+ 轮深度追问，强制设计流程，输出 design doc | | "帮我优化一下这个函数" | **requirement-agent** — 3-5 轮快速澄清，方案确认后执行 | | "帮我重构用户模块" | **requirement-agent** — 追问澄清范围，执行前确认 | | "帮我写一个支付系统" | [brainstorming](file:///Users/async/.trae-cn/skills/brainstorming) — 复杂系统，需要完整设计 | ## 触发场景 **使用 requirement-agent 当：** - 用户说"优化一下"、"重构"、"改进" - 用户说"加个注释"、"格式化" - 用户说"帮我改改这个文件" - 用户说"删掉 XXX"、"重命名 YYY" - 任何**日常代码任务**，而非全新系统设计 **触发 brainstorming 当：** - 用户说"帮我设计 XXX" - 用户说"帮我规划 XXX" - 用户说"帮我创建一个新系统" - 需求涉及全新架构、技术选型、多模块协调 ## 工作流程 ### 1. 需求澄清（Questioning） 当检测到模糊需求时，按 `references/questioning-guide.md` 进行追问： - 第一轮：结构化快速确认（多选题） - 第 2-3 轮：针对模糊点深入提问 - 第 4-5 轮：查漏补缺 **跳过条件**：需求已足够明确（包含具体文件、目标、技术栈） ### 2. 执行前确认（Confirmation） 根据 `config/rules.yaml` 判断是否需要确认： **自动执行（无需确认）：** - 纯文本修改（注释、格式化） - 单文件小改动 - 明确安全的操作（如"加注释"、"格式化"） **需要确认：** - 多文件修改（2+ 文件） - 删除操作 - 逻辑变更 - 添加依赖 - 不可逆操作 ### 3. 方案展示（可选） 如果需要确认但情况复杂，先展示方案再执行： ``` 🤔 在执行之前，我想确认一下： 📝 变更摘要： - 文件：A.js（第 10-15 行） - 操作：将 foo() 改为 bar() ✅ 确认执行？ [继续执行] [修改方案] [取消] ``` ## 配置文件 规则定义：`config/rules.yaml` 配置说明：`references/config-guide.md` ## 参考文档 - `references/questioning-guide.md` - 追问流程详解 - `references/config-guide.md` - 配置文件说明

path: config/rules.yaml
content: # Requirement Agent 规则配置
# https://skills.sh/requirement-agent

# 追问规则
questioning:
  max_rounds: 5                    # 最大追问轮数
  auto_skip_if_clear: true        # 需求明确时快速跳过
  trigger_keywords:                # 触发追问的关键词
    - "大概"
    - "优化一下"
    - "类似"
    - "感觉"
    - "可能"
    - "差不多"
    - "改进"
    - "改进一下"

# 自动执行规则（满足任一即自动执行）
auto_execute:
  text_only: true                  # 纯文本修改
  single_file: true                # 单文件小改动
  safe_operations:                 # 安全操作关键词
    - "加注释"
    - "注释"
    - "格式化"
    - "重命名"
    - "整理代码"
    - "规范格式"
  explicit_safe: true             # 用户明确说"直接改"时

# 需要确认的规则（满足任一即需要确认）
require_confirmation:
  multi_file: true                 # 多文件修改（2+ 文件）
  delete: true                     # 删除操作（文件、函数、代码块）
  logic_change: true               # 逻辑变更（改变行为、修改业务逻辑）
  dependency: true                 # 添加依赖（package.json、requirements.txt 等）
  irreversible: true                # 不可逆操作（git reset、强制覆盖等）
  migration: true                  # 数据迁移、数据库变更
  keywords:                         # 触发确认的关键词
    - "删除"
    - "重写"
    - "替换"
    - "迁移"
    - "删掉"
    - "改掉"


path: references/config-guide.md
content: # 配置文件说明

## 概述

`config/rules.yaml` 控制 Requirement Agent 的行为，包括：

- 追问策略配置
- 自动执行规则
- 需要确认的规则

## 配置结构

### questioning（追问规则）

| 字段 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| max_rounds | int | 5 | 最大追问轮数 |
| auto_skip_if_clear | bool | true | 需求明确时跳过追问 |
| trigger_keywords | string[] | 见下方 | 触发追问的关键词 |

默认触发关键词：
`大概`、`优化一下`、`类似`、`感觉`、`可能`、`差不多`、`改进`

### auto_execute（自动执行规则）

满足任一条件即自动执行，无需确认。

| 字段 | 类型 | 说明 |
|------|------|------|
| text_only | bool | 纯文本修改（注释、格式化） |
| single_file | bool | 单文件小改动 |
| safe_operations | string[] | 明确安全的操作关键词 |
| explicit_safe | bool | 用户明确说"直接改"时 |

### require_confirmation（确认规则）

满足任一条件即需要确认后再执行。

| 字段 | 类型 | 说明 |
|------|------|------|
| multi_file | bool | 多文件修改（2+ 文件） |
| delete | bool | 删除操作 |
| logic_change | bool | 逻辑变更 |
| dependency | bool | 添加依赖 |
| irreversible | bool | 不可逆操作 |
| migration | bool | 数据迁移 |
| keywords | string[] | 触发确认的关键词 |

## 修改建议

### 调整追问深度

如果觉得追问太多：

```yaml
questioning:
  max_rounds: 3    # 从 5 改为 3
```

### 放宽自动执行

如果希望更少确认：

```yaml
auto_execute:
  single_file: true      # 保持
  text_only: true         # 保持
  # 添加更多安全操作
  safe_operations:
    - "加注释"
    - "格式化"
    - "重命名"
    - "整理代码"
    - "添加 console.log"  # 新增
```

### 收紧确认规则

如果希望更谨慎：

```yaml
require_confirmation:
  multi_file: true
  delete: true
  logic_change: true
  dependency: true
  irreversible: true
  migration: true
  # 添加更多触发词
  keywords:
    - "删除"
    - "重写"
    - "替换"
    - "迁移"
    - "修改"              # 新增：所有修改都确认
    - "改动"
```

## 验证配置

修改配置后，可用以下方式验证 YAML 格式：

```bash
# 使用 python（需要 pyyaml）
python3 -c "import yaml; yaml.safe_load(open('config/rules.yaml'))"

# 或使用 yq 工具
yq eval '.' config/rules.yaml
```

无错误输出表示解析成功。


path: references/questioning-guide.md
content: # 追问流程指南

## 何时追问

当用户需求包含以下特征时触发追问：

1. **模糊词汇**：大概、可能、类似、优化一下、改进
2. **缺乏细节**：未指定文件、未说明目标
3. **多解歧义**：同一需求有多种合理解法
4. **涉及复杂逻辑**：需要理解现有代码结构

## 追问轮次分配

### 第一轮：结构化快速确认

每次只问 1 个问题，提供 2-4 个选项：

```
1️⃣ 你的核心目标是什么？
   A) 功能实现（新增 XXX 功能）
   B) 性能优化（让 XXX 更快）
   C) 代码质量（让 XXX 更清晰）
   D) 其他：_______

2️⃣ 这个改动涉及范围多大？
   A) 单个文件
   B) 某个模块/目录
   C) 整个项目

3️⃣ 有无特殊约束？
   A) 需要兼容旧版本
   B) 需要保持 API 不变
   C) 无特殊要求
```

### 第二三轮：深入提问

针对第一轮未覆盖的模糊点：

```
4️⃣ 你提到的"优化"，具体是指？
   A) 执行速度更快
   B) 内存占用更低
   C) 代码更易维护
   D) 其他：_______

5️⃣ 这个函数目前有测试吗？
   A) 有，需要确保测试通过
   B) 没有，可以添加
   C) 不需要测试
```

### 第四五轮：查漏补缺

确认边界情况和潜在问题：

```
6️⃣ 修改后需要兼容之前的调用方式吗？
   A) 必须完全兼容
   B) 可以略有变化
   C) 无所谓

7️⃣ 有没有你希望避免的方式？
   A) 不想用 XXX 库
   B) 不想改变现有文件结构
   C) 没有限制
```

## 追问技巧

1. **一次一问**：避免一次抛出一堆问题
2. **选项具体**：避免"都可以"这种无效选项
3. **解释利弊**：复杂选项要说明 trade-off
4. **适时停止**：当信息足够时就停止追问
5. **记录理解**：每轮确认 AI 对需求的理解是否正确

## 示例对话

```
用户：帮我优化一下这个函数

AI：
收到！在开始之前，我需要澄清几个问题：

1️⃣ 你的"优化"主要指哪方面？
   A) 性能提升（执行速度、内存）
   B) 代码可读性（注释、结构）
   C) 两者都有

---

用户：C

AI：
明白，要兼顾性能和可读性。

2️⃣ 这个函数目前在哪个文件中？
   [等待用户回答]

---

用户：src/utils/helper.js

AI：
好的，找到了这个文件。

3️⃣ 你遇到的具体问题是什么？
   A) 执行太慢，有性能数据
   B) 代码太难懂，维护困难
   C) 功能有问题，行为不符合预期

---

用户：B

AI：
明白了，主要是代码可读性问题。

4️⃣ 你希望怎样让代码更易读？
   A) 添加详细注释
   B) 拆分成更小的函数
   C) 重构变量命名
   D) 以上都要

---

用户：D

AI：
清楚了！你需要：
- 目标：优化 helper.js 中的函数
- 方向：性能和可读性都要
- 范围：单文件 src/utils/helper.js

我来看一下代码，然后给出优化方案。
```

## 快速跳过

当需求足够明确时，可以快速确认并跳过追问：

```
用户：在 src/utils/helper.js 第 15 行的 foo 函数后面加一行注释 "// 计算完成"

AI：
（跳过追问，直接执行）
好的，在指定位置添加注释。

🤔 确认执行？
- 文件：src/utils/helper.js
- 操作：在第 15 行后添加注释
- 风险：低风险（纯文本添加）

[继续执行]
```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)