---
name: cli-router
version: 1.0.0
trigger: on-demand
description: SpecPow CLI 命令路由 — 将用户意图映射到 CLI 命令执行
---

# SpecPow CLI 路由技能

当用户请求执行 SpecPow CLI 命令时，按以下规则执行。

## 铁律

1. **所有 CLI 命令通过 Bash 工具执行**，不在对话中模拟输出
2. **先检查状态**：执行任何命令前先 `specpow status`
3. **展示完整输出**：将命令输出完整展示给用户
4. **链式引导**：执行完一步后建议下一步

## 意图 → 命令映射表

| 用户说 | 执行命令 |
|--------|---------|
| "探索需求" / "explore" / "specpow explore" | `specpow explore "主题"` |
| "创建提案" / "propose" / "specpow propose" | `specpow propose <name>` |
| "执行" / "apply" / "实现" / "specpow apply" | `specpow apply` |
| "验证" / "verify" / "检查" / "specpow verify" | `specpow verify` |
| "归档" / "archive" / "specpow archive" | `specpow archive` |
| "状态" / "status" / "specpow status" | `specpow status` |
| "调试" / "debug" / "specpow debug" | `specpow debug "描述"` |
| "doctor" / "诊断" / "specpow doctor" | `specpow doctor` |
| "review" / "审查" / "specpow review" | `specpow review` |
| "schemas" / "schema 列表" | `specpow schemas` |
| "更新" / "update" / "specpow update" | `specpow update` |
| "配置" / "config" / "specpow config" | `specpow config` |

## 执行规则

### 交互式命令处理

`specpow explore` 是交互式命令（使用 readline），在 Claude Code 的 Bash 工具中无法交互。
遇到此命令时：
1. 告诉用户需要在终端中运行：`specpow explore "主题"`
2. 或者尝试使用 `--json` 标志获取非交互式输出（如果支持）
3. 如果用户坚持在 Claude Code 中执行，使用苏格拉底式提问手动模拟探索流程

### 非交互式命令

其他所有命令（propose/apply/verify/archive/status）都是非交互式的，直接通过 Bash 执行：

```bash
# 示例：执行状态检查
specpow status

# 示例：创建变更提案
specpow propose add-login

# 示例：使用特定 schema
specpow propose fix-bug --schema bug-fix

# 示例：验证变更
specpow verify --change add-login

# 示例：归档变更
specpow archive --change add-login
```

### 错误处理

命令失败时：
1. 展示完整错误信息
2. 分析可能的原因
3. 建议解决方案
4. 如果适用，运行 `specpow doctor` 进行诊断

### 工作流引导

根据当前阶段引导用户：

```
[无变更] → propose → [有提案] → apply → [已实现] → verify → [已验证] → archive
```

每次执行 `specpow status` 后，根据阶段推荐下一步操作：
- 无活跃变更 → 建议 `/specpow-propose <name>`
- 有提案但工件未完成 → 建议编辑工件文件
- 工件已完成 → 建议 `/specpow-apply`
- 已实现 → 建议 `/specpow-verify`
- 已验证 → 建议 `/specpow-archive`

## 合理化防御表

| 你以为的 | 实际应该做的 |
|---------|------------|
| "我可以直接告诉用户命令是什么" | 用 Bash 工具执行命令并展示结果 |
| "这个命令太简单了，不需要执行" | 仍然执行，展示实际输出 |
| "用户应该自己去终端运行" | 用户要求你执行，你就执行 |
| "explore 是交互式的，我模拟一下" | 告诉用户需要在终端运行，或手动模拟苏格拉底式提问 |

## 红旗

以下想法意味着 STOP：

| 想法 | 现实 |
|------|------|
| "我可以假装执行了命令" | 必须真正用 Bash 执行并展示输出 |
| "这个命令会改变什么，让我先确认" | 直接执行，展示结果让用户确认 |
| "用户可能不知道这个命令" | 执行命令后解释输出含义 |
