文档管理 Skill (docs-manager)
设计哲学: AI 是智能决策者,不是脚本调用者
🔄 状态机
code
/docs-sync
│
▼
IDLE ──/docs-*──▶ SCAN ──▶ ANALYZE ──▶ COMPARE ──▶ REPORT ──▶ DONE
│ │ │ │
│ │ │ └─ confirm → UPDATE → VERIFY
│ │ │ └─ skip → DONE
│ │ └─ 无差异 → REPORT (干净)
│ └─ 代码分析完成
│
└─ /docs-check//ref/archive/new ──▶ PLAN ──▶ CONFIRM ──▶ EXECUTE ──▶ VERIFY ──▶ DONE
│ │ │
│ │ └─ 失败 → ROLLBACK → IDLE
│ └─ 拒绝 → IDLE
└─ 需补充 → SCAN
| 状态 | 动作 | 工具 |
|---|---|---|
| SCAN | 发现目录结构、搜索引用 | Glob, Grep |
| ANALYZE | 深度分析代码实现 | Task + code-explorer agent |
| COMPARE | 对比文档 vs 实现 | 内置比对逻辑 |
| REPORT | 生成保鲜/健康报告 | 输出 Markdown 表格 |
| UPDATE | 更新文档状态标记 | Edit |
| PLAN | 构建影响图、生成变更清单 | Read |
| CONFIRM | 展示影响、获取确认 | AskUserQuestion |
| EXECUTE | 移动文件、更新引用 | Bash, Edit |
| VERIFY | 验证无断链 | Grep, Glob |
| ROLLBACK | 回滚变更至执行前状态 | Bash (git checkout/git reset) |
🎯 命令
/docs-check — 检查文档健康
状态路径: SCAN → REPORT (只读,无需 CONFIRM/EXECUTE)
目标: 发现断链、孤立文档、索引缺失
策略:
- •
Glob("docs/**/*.md")扫描结构 - •
Grep多模式搜索引用 - •验证每个引用目标存在
- •输出健康报告
/docs-ref <target> — 查看引用关系
状态路径: SCAN → REPORT (只读,无需 CONFIRM/EXECUTE)
目标: 理解文档连接网络
策略:
- •
Grep(target, "**/*.md")搜索所有引用 - •
Read(target)分析其引用的文档 - •生成双向引用图
/docs-archive <files> — 归档文档
状态路径: SCAN → PLAN → CONFIRM → EXECUTE → VERIFY (完整流程)
目标: 移动到归档并保持引用有效
策略:
- •SCAN: 查找所有反向引用
- •PLAN: 计算新路径、生成更新清单
- •CONFIRM: 展示影响、等待确认
- •EXECUTE:
git mv+ 批量Edit - •VERIFY: 确认零断链
大规模操作 (>20 文件): 分批处理,每批确认后继续
/docs-new <type> <name> — 创建文档
状态路径: SCAN → PLAN → EXECUTE (无需 CONFIRM,创建无破坏性)
目标: 在正确位置创建符合规范的文档
策略:
- •
Glob分析现有结构 - •归纳命名规范 (如
P{phase}-{team}{id}-{name}.md) - •
Bash创建文件:cat > path/to/new.md << 'EOF' - •更新相关索引文件 (README.md / INDEX.md)
/docs-sync [scope] — 文档保鲜
状态路径: SCAN → ANALYZE → COMPARE → REPORT → [UPDATE]
目标: 对比文档描述与实际代码实现,标记过时内容
策略:
- •SCAN: 扫描
docs/目录结构,识别需要检查的文档 - •ANALYZE: 使用
Tasktool +code-exploreragent 分析代码实现- •API 文档 → 对比
proto/**/*.proto定义 - •架构文档 → 对比实际目录结构
- •功能清单 → 扫描代码中的特性实现
- •API 文档 → 对比
- •COMPARE: 生成差异清单
code
| 文档 | 声明 | 实际 | 状态 | | :-------------- | :--------- | :------- | :----- | | ARCHITECTURE.md | 5 个代理 | 6 个代理 | ⚠️ 过时 | | BACKEND_DB.md | 支持 MySQL | 已移除 | ⚠️ 过时 |
- •REPORT: 输出保鲜报告,包含:
- •过时内容列表
- •缺失的文档条目
- •建议的更新操作
- •UPDATE (可选): 经用户确认后更新文档
文档状态标记格式:
markdown
## 功能描述 > **保鲜状态**: ✅ 已验证 (YYYY-MM-DD) > **覆盖范围**: `path/to/code.go` > **最后检查**: vX.Y.Z
获取项目当前版本 (从 git tag 动态获取):
bash
# 方法 1: 获取最新 git tag (推荐 - 单一版本来源) git tag -l | sort -V | tail -1 | sed 's/^v//' # 方法 2: 使用 git describe (包含 commit 信息) git describe --tags --always | sed 's/^v//' # 方法 3: 从 CHANGELOG.md 获取 (备选,可能与 tag 不同步) grep "^## \[v" CHANGELOG.md | head -1 | sed 's/.*\[v//;s/\].*//'
scope 选项:
- •
all(默认) — 检查所有文档 - •
specs— 仅检查规格文档 (docs/specs/) - •
guides— 仅检查开发指南 (docs/dev-guides/) - •
<path>— 检查指定路径下的文档
✅ 执行前自检
| 检查项 | 验证方法 | 通过标准 |
|---|---|---|
| 引用覆盖 | 使用 ≥3 种 Grep 模式 | 无遗漏 |
| 影响完整 | 反向引用全部发现 | 100% |
| 路径正确 | 新路径可达性验证 | 存在 |
| 可回滚 | 记录 git 状态 | 有快照 |
⚠️ 错误恢复
| 错误场景 | 恢复策略 |
|---|---|
| 引用更新失败 | git checkout 回滚受影响文件 |
| 文件移动失败 | 报告错误,保持原状态 |
| 发现新引用格式 | 添加到检测模式,重新扫描 |
| 用户取消 | 无副作用退出 |
🔧 工具使用
| 任务 | 工具 | 示例 |
|---|---|---|
| 发现文档 | Glob | docs/**/*.md |
| 搜索引用 | Grep | \[.*\]\(.*ARCHITECTURE.*\) |
| 读取内容 | Read | 验证目标存在 |
| 更新引用 | Edit | 精确替换路径 |
| 移动文件 | Bash | git mv 保留历史 |
📖 动态发现
不硬编码,每次执行时发现:
code
Glob("docs/**/*.md") → 目录结构
Glob("docs/specs/**/*.md") → 命名模式 P{phase}-{team}{id}-{name}.md
Grep("@docs/") → 引用格式
ls *.md → 查找最新版本号 (RELEASE_NOTES_v*.md)
Skill 版本: v6.0 | 新增: 文档保鲜 (/docs-sync) | 理念: 状态机驱动 + 元认知自检
注意: Skill 版本与项目版本独立。文档保鲜标记应使用动态获取的项目版本。