intent-normalize
Scan and normalize existing intent/planning files to IDD standard. Auto-fixes mechanical issues (frontmatter, directory structure), tags content issues for pickup. Use /intent-normalize to scan current project, or /intent-normalize <path> for specific directory.
Works with
Agent Skills format with YAML frontmatter. Claude Code reads it as-is.
---
name: "intent-normalize"
description: "Scan and normalize existing intent/planning files to IDD standard. Auto-fixes mechanical issues (frontmatter, directory structure), tags content issues for pickup. Use /intent-normalize to scan current project, or /intent-normalize <path> for specific directory."
license: "MIT"
---
# Intent Normalize
扫描现有项目,将 intent 和 planning 文件规范化到 IDD 标准。能自动修的直接修,不能修的打上状态让 TeamSwarm pickup。
## 设计原则
1. **格式先行** — 所有文件先有 frontmatter,让系统能识别
2. **能修则修** — 机械性问题直接修复(frontmatter、目录结构、命名)
3. **不能修则标记** — 内容问题打上状态,后续由 TeamSwarm 或人处理
4. **幂等** — 多次运行结果一致,已规范的文件不会被改动
## 工作流程
```
/intent-normalize [path]
↓
┌───────────────────────────────────┐
│ 1. 扫描 intent/ 和 planning/ │
│ 发现所有 .md 和 .yaml 文件 │
└─────────────┬─────────────────────┘
↓
┌───────────────────────────────────┐
│ 2. 分析每个文件的合规状态 │
│ - 有无 frontmatter? │
│ - 有无 Anchor? │
│ - 目录结构是否完整? │
└─────────────┬─────────────────────┘
↓
┌───────────────────────────────────┐
│ 3. 自动修复机械问题 │
│ - 补 frontmatter │
│ - 创建 records/ + INDEX.md │
│ - 创建 _archive/, _data/ │
│ - 规范化文件命名 │
└─────────────┬─────────────────────┘
↓
┌───────────────────────────────────┐
│ 4. 标记内容问题 │
│ - 缺 Anchor → status: draft │
│ - 超预算 → 标记 needs_critique │
│ - 无法分类 → status: draft │
└─────────────┬─────────────────────┘
↓
┌───────────────────────────────────┐
│ 5. 输出规范化报告 │
└───────────────────────────────────┘
```
## 检查项与修复策略
### 自动修复(机械性,无需判断)
| 检查项 | 条件 | 修复动作 |
|--------|------|----------|
| Intent frontmatter | INTENT.md 没有 frontmatter | 添加 `status: active`(或根据内容推断) |
| Planning frontmatter | planning/ 下 .md 没有 frontmatter | 添加 `type:` (从内容推断: idea/research/feedback/analysis) |
| Anchor 格式 | Anchor 存在但格式不对(不是 blockquote) | 修正为 `> Anchor: ...` 格式 |
| records/ 目录 | intent 目录下没有 records/ | 创建 `records/` + 空 `INDEX.md` |
| _archive/ 目录 | intent/ 下没有 _archive/ | 创建 `intent/_archive/` |
| _data/ 目录 | intent/ 下没有 _data/ | 创建 `intent/_data/` |
| TASK.yaml 格式 | TASK.yaml 缺少 type 字段 | 添加 `type: one-shot`(默认) |
### 标记 pickup(需要内容判断)
| 检查项 | 条件 | 标记动作 |
|--------|------|----------|
| 缺少 Anchor | INTENT.md 没有 Anchor 行 | frontmatter 加 `needs: [anchor]` |
| 超预算 | 行数 > 500 | frontmatter 加 `needs: [critique]` |
| 预算警告 | 300 < 行数 ≤ 500 | frontmatter 加 `needs: [review]` |
| 无 Assumes | 内容中引用了其他 intent 但没有 Assumes 标签 | frontmatter 加 `needs: [assumes]` |
| 分类不明 | planning 文件无法自动判断类型 | `type: idea`(默认最安全) |
### `needs` 字段
`needs` 是 frontmatter 中的 pickup 信号,表示该文件需要后续处理:
```yaml
---
status: active
needs: [anchor, critique]
---
```
TeamSwarm 扫描 `needs` 字段来自动调度后续 skill:
- `needs: [anchor]` → 安排 `/intent-interview` 补充
- `needs: [critique]` → 安排 `/intent-critique` 精简
- `needs: [review]` → 安排 `/intent-review`
- `needs: [assumes]` → 安排人工补充依赖声明
处理完成后,对应的 `needs` 项被移除。`needs` 为空时可以删掉整个字段。
## Planning 类型推断
自动从文件内容推断 `type:`:
| 关键词/模式 | 推断类型 |
|-------------|----------|
| idea, concept, proposal, brainstorm, what if | `idea` |
| research, analysis, comparison, benchmark, study | `research` |
| feedback, user, complaint, request, survey | `feedback` |
| code analysis, refactor, migration, legacy, improvement | `analysis` |
| 无法判断 | `idea`(最安全的默认值) |
## 执行细节
### 1. 扫描范围
```
默认扫描当前项目根目录下的:
- intent/ → 所有 INTENT.md 文件(递归,跳过 _archive/ 和 _data/)
- planning/ → 所有 .md 文件
- **/intent/ → 模块级 intent 目录
```
### 2. Frontmatter 注入
对没有 frontmatter 的文件,在文件头部插入:
**Intent 文件:**
```yaml
---
status: active
---
```
如果文件看起来已经实现(有对应的代码目录和测试),推断为:
```yaml
---
status: implemented
---
```
**Planning 文件:**
```yaml
---
type: research
---
```
### 3. 推断 status 的启发式规则
| 信号 | 推断 status |
|------|-------------|
| 有 TASK.yaml 且 status: done | `implemented` |
| 有对应的 src/ 目录且文件最近没修改 | `implemented` |
| 文件内容很少(< 50 行)或明显不完整 | `active`(+ `needs: [anchor]`) |
| 默认 | `active` |
### 4. 幂等保证
- 已有正确 frontmatter 的文件不修改
- 已有 records/ 的不重建
- `needs` 字段只添加不覆盖(合并已有的)
- 每次运行结果相同
## 输出
### 规范化报告
```markdown
# Intent Normalize Report
> 项目: my-project
> 扫描时间: 2026-02-06
## 统计
| 类型 | 扫描 | 已规范 | 自动修复 | 需 pickup |
|------|------|--------|----------|-----------|
| Intent 文件 | 15 | 8 | 5 | 2 |
| Planning 文件 | 7 | 2 | 4 | 1 |
| 目录结构 | — | — | 3 | — |
## 自动修复(已完成)
1. ✅ `intent/kernel/proc/INTENT.md` — 添加 frontmatter `status: active`
2. ✅ `intent/kernel/afs/INTENT.md` — 添加 frontmatter `status: implemented`
3. ✅ `planning/v2-ideas.md` — 添加 frontmatter `type: idea`
4. ✅ `planning/legacy-analysis.md` — 添加 frontmatter `type: analysis`
5. ✅ `intent/kernel/proc/records/` — 创建目录 + INDEX.md
6. ✅ `intent/_archive/` — 创建目录
7. ✅ `intent/_data/` — 创建目录
## 需要 Pickup(已标记)
| 文件 | needs | 建议 |
|------|-------|------|
| `intent/ash/INTENT.md` | `[anchor, critique]` | 缺少 Anchor,612 行超预算 |
| `intent/surfaces/INTENT.md` | `[anchor]` | 缺少 Anchor |
| `planning/random-notes.md` | — | 无法分类,默认 type: idea |
```
## 使用
### 基本用法
```
/intent-normalize
```
扫描并规范化当前项目。
### 指定路径
```
/intent-normalize intent/kernel/
```
只规范化特定目录。
### Dry run
```
/intent-normalize --dry-run
```
只报告,不做任何修改。
## 与其他命令配合
```
/intent-normalize # 先规范化格式(本命令)
↓
TeamSwarm pickup # 自动调度 needs 中的后续 skill
↓
/intent-interview # 处理 needs: [anchor]
/intent-critique # 处理 needs: [critique]
/intent-review # 处理 needs: [review]
↓
/intent-check # 最终合规检查
```More General & Other skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

