init-ai-md
Installation
SKILL.md
init-ai-md 技能说明
本技能用于在项目中快速初始化和增量更新 AI 记忆文件。通过交互式选择和差异对比补全,帮助用户精确管理 AI 记忆文件内容。
核心功能
- 初始化 CLAUDE.md:检查并创建项目的 AI 记忆文件
- 交互式选择:扫描现有内容和可用模板,让用户选择需要的记忆项
- 差异对比补全:深度对比文本差异,仅补全缺失内容而非全量替换
- 多文件同步:支持同步更新 AGENTS.md 和 GEMINI.md
- 技能表管理:扫描项目中
.claude/skills/目录下的现有技能,在 CLAUDE.md 中创建并维护「本项目的技能表」章节 - 内置技能初始化:支持将
record-bug-fix-memory等内置技能模板部署到项目的.claude/skills/目录中
执行流程
步骤 1:检查 CLAUDE.md 文件
- 检查项目根目录是否存在
CLAUDE.md文件 - 如果不存在:
- 先执行 Claude Code 内部的
/init斜杠命令 - 确保生成的
CLAUDE.md文件以中文编写
- 先执行 Claude Code 内部的
- 如果已存在:
- 读取现有内容,准备进行扫描分析
步骤 2:扫描分析
-
扫描目标文件:
- 提取
CLAUDE.md中所有的二级标题(## xxx) - 记录每个二级标题下的内容摘要
- 建立现存记忆项清单
- 提取
-
扫描模板目录:
- 读取
templates/目录下的所有模板文件名 - 按照数字前缀顺序排序(如
01.xxx.md、02.xxx.md) - 提取每个模板文件内的二级标题
- 建立可用记忆项清单
- 读取
-
对比分析:
- 对比现存记忆项和可用记忆项
- 识别三类情况:
- 缺失:模板中有但目标文件中没有的记忆项
- 需更新:标题相同但内容存在差异的记忆项
- 已完整:内容完全一致的记忆项
步骤 3:交互选择
必须使用 AskUserQuestion 工具与用户交互:
-
展示扫描结果:
- 列出当前 CLAUDE.md 中已存在的记忆项(二级标题列表)
- 列出 templates 目录中可用的记忆项
-
生成选择问题:
- 使用
AskUserQuestion工具的multiSelect: true模式 - 将每个可用记忆项作为一个选项
- 选项描述中标注该记忆项的当前状态:
[缺失]- 目标文件中不存在[需更新]- 存在但内容不完整[已完整]- 内容已完全一致
- 默认推荐选中状态为
[缺失]和[需更新]的记忆项
- 使用
-
询问示例:
请选择需要处理的记忆项: 选项: - 主动问询实施细节 [需更新] - 内容存在差异,将补全缺失部分 - 编写测试用例规范 [缺失] - 将新增此记忆项 - 报告编写规范 [已完整] - 内容一致,无需更新 - 获取技术栈对应的上下文 [需更新] - 缺少部分链接 -
等待用户选择:
- 用户可多选需要处理的记忆项
- 用户可选择"其他"输入自定义需求
步骤 4:差异对比与增量补全
对用户选择的每个记忆项,执行精细的差异对比:
-
逐行对比原则:
- 深度阅读目标文件中该记忆项的完整内容
- 深度阅读模板文件中该记忆项的完整内容
- 逐行/逐段落进行对比
-
识别差异类型:
- 缺失行:模板中有但目标文件中没有的行
- 缺失段落:模板中有但目标文件中没有的完整段落
- 缺失子标题:模板中有但目标文件中没有的三级/四级标题及其内容
- 内容差异:同一位置但文本不同(需谨慎处理,可能是用户自定义内容)
-
增量补全策略:
- 仅补全缺失内容,不全量替换
- 保持目标文件中已有的自定义内容
- 在合适的位置插入缺失的行/段落
- 保持内容的逻辑顺序和层级结构
-
示例:
假设目标文件
CLAUDE.md存在以下内容:## 获取技术栈对应的上下文 ### claude code skill - 编写语法与格式: https://code.claude.com/docs/zh-CN/skills - 最佳实践: https://platform.claude.com/docs/zh-CN/agents-and-tools/agent-skills/best-practices模板文件
99.获取技术栈对应的上下文.md的内容:## 获取技术栈对应的上下文 在处理特定技术栈相关的问题时,你应该主动获取对应的上下文文档和最佳实践。 ### claude code skill - 编写语法与格式: https://code.claude.com/docs/zh-CN/skills - 最佳实践: https://platform.claude.com/docs/zh-CN/agents-and-tools/agent-skills/best-practices - 规范文档: https://agentskills.io/home正确的处理方式:
- 识别缺失内容:
- 缺失描述段落:"在处理特定技术栈相关的问题时,你应该主动获取对应的上下文文档和最佳实践。"
- 缺失列表项:"- 规范文档: https://agentskills.io/home"
- 在原有内容的对应位置补全这两处缺失
- 不要全量替换整个章节
- 识别缺失内容:
-
禁止事项:
- 禁止使用任何形式的脚本进行批处理(Python、TypeScript、Shell 等)
- 禁止一股脑复制粘贴整个模板内容
- 禁止覆盖用户的自定义内容
步骤 5:初始化本地技能
在完成 CLAUDE.md 内容更新后,检查项目是否需要部署内置技能:
-
检查技能模板目录:
- 读取
templates/record-bug-fix-memory/目录,确认内置技能模板可用
- 读取
-
检查项目现有技能:
- 检查项目中是否已存在
.claude/skills/fix-bug/record-bug-fix-memory/SKILL.md - 如果已存在:标记为
[已存在] - 如果不存在:标记为
[可部署]
- 检查项目中是否已存在
-
询问用户:
- 使用
AskUserQuestion工具询问用户是否需要部署内置技能 - 选项中列出每个可部署的技能及其状态
- 使用
-
部署技能:
- 用户确认后,将
templates/record-bug-fix-memory/SKILL.md复制到项目的.claude/skills/fix-bug/record-bug-fix-memory/SKILL.md - 创建必要的目录结构(
.claude/skills/fix-bug/record-bug-fix-memory/) - 注意:模板中的「仓库级经验库」章节初始为空,不包含项目特有的事故记录。随着项目实际使用积累经验后由 agent 逐步补充。
- 用户确认后,将
步骤 6:生成/更新「本项目的技能表」
在步骤 5 完成后(无论是否部署了新技能),都需要生成或更新技能表:
-
扫描项目技能:
- 扫描项目
.claude/skills/目录下的所有SKILL.md文件 - 读取每个技能的
name和description(从 YAML frontmatter 中提取) - 记录每个技能的相对路径
- 扫描项目
-
生成技能表内容:
- 参考
templates/08.本项目的技能表.md的格式 - 为每个扫描到的技能生成一条条目,格式如下:
- `{技能名称}` - 路径:`{技能相对路径}` - 用途:{技能描述} - 触发时机:{从技能 SKILL.md 中提取的使用场景} - 参考作用:{从技能 SKILL.md 中提取的参考信息} - 约束:{从技能 SKILL.md 中提取的边界约束}
- 参考
-
插入或更新 CLAUDE.md:
- 如果 CLAUDE.md 中已存在「## 本项目的技能表」章节:执行差异对比,仅补全新增或变更的技能条目
- 如果不存在:将技能表章节插入到 CLAUDE.md 的一级标题之后、其他二级标题之前(即紧跟在文件开头的项目描述之后)
-
技能表位置要求:
- 技能表必须位于所有其他二级标题之前
- 这确保 agent 在读取 CLAUDE.md 时最先看到可用的技能清单
步骤 7:同步其他 AI 记忆文件
- 检查项目根目录是否存在
AGENTS.md或GEMINI.md文件 - 如果存在这些文件:
- 必须使用
AskUserQuestion工具询问用户 - 询问是否用更新后的
CLAUDE.md全量替换这些文件
- 必须使用
- 根据用户选择执行替换操作
模板文件规范
目录结构
init-ai-md/
├── SKILL.md # 技能说明文件
└── templates/ # 模板文件目录
├── 01.主动问询实施细节.md
├── 02.编写测试用例规范.md
├── 03.报告编写规范.md
├── 04.生成发版日志的操作规范.md
├── 05.沟通协作要求.md
├── 06.终端操作注意事项(防卡住).md
├── 07.简单任务的高效执行原则.md
├── 08.本项目的技能表.md # 技能表章节模板
├── 99.获取技术栈对应的上下文.md
└── record-bug-fix-memory/ # 内置技能模板
└── SKILL.md # record-bug-fix-memory 技能模板
模板文件命名规范
- 前缀:两位数字(01-99),决定插入顺序
- 分隔符:使用英文句点
. - 名称:中文描述性名称
- 后缀:
.md
模板内容规范
- 模板文件只包含二级目录,不包含一级目录
- 单个模板可包含多个二级目录
- 二级目录标题即为插入后的章节标题
- 内容使用简体中文编写
内置技能模板规范
templates/ 目录下除了序号前缀的记忆项模板外,还可以包含子目录形式的内置技能模板:
- 内置技能模板以独立子目录存放(如
templates/record-bug-fix-memory/) - 每个内置技能模板目录中必须包含
SKILL.md文件 - 内置技能模板的
SKILL.md遵循 Claude Code Skills 的 YAML frontmatter 规范 - 内置技能模板中不应包含项目特有的内容(如具体的仓库级事故记录),这些内容应在部署后由项目积累
- 内置技能模板部署到项目时,目标路径为
.claude/skills/{类别}/{技能名}/SKILL.md
执行示例
场景 1:全新项目初始化
用户:请帮我初始化 AI 记忆文件
执行流程:
1. 检测到无 CLAUDE.md → 执行 /init 命令
2. 扫描 templates/ 目录,建立可用记忆项清单
3. 使用 AskUserQuestion 询问用户需要哪些记忆项
4. 用户选择后,按序号顺序插入选中的模板内容
5. 检测到无 AGENTS.md/GEMINI.md → 完成
场景 2:增量更新现有项目
用户:请更新我的 CLAUDE.md 记忆文件
执行流程:
1. 检测到已有 CLAUDE.md → 读取现有内容
2. 扫描现有二级标题,建立现存记忆项清单
3. 扫描 templates/ 目录,建立可用记忆项清单
4. 对比分析,标注每个记忆项的状态(缺失/需更新/已完整)
5. 使用 AskUserQuestion 询问用户需要处理哪些记忆项
6. 用户选择后,对每个选中项执行差异对比和增量补全
7. 检测到存在 AGENTS.md → 询问用户是否同步替换
8. 用户确认后执行替换
场景 3:差异对比补全示例
用户:更新 CLAUDE.md 中的"获取技术栈对应的上下文"章节
执行流程:
1. 读取 CLAUDE.md 中该章节的完整内容
2. 读取模板 99.获取技术栈对应的上下文.md 的内容
3. 逐行对比,发现:
- 缺失描述段落
- 缺失"规范文档"链接
4. 在对应位置补全缺失内容
5. 保持原有的自定义内容不变
场景 4:初始化本地技能并生成技能表
用户:请帮我初始化 AI 记忆文件
执行流程:
1. 检测到无 CLAUDE.md → 执行 /init 命令
2. 扫描 templates/ 目录,建立可用记忆项清单
3. 使用 AskUserQuestion 询问用户需要哪些记忆项
4. 用户选择后,按序号顺序插入选中的模板内容
5. 检查 .claude/skills/ → 不存在 record-bug-fix-memory
6. 使用 AskUserQuestion 询问用户是否部署 record-bug-fix-memory 技能
7. 用户确认 → 创建 .claude/skills/fix-bug/record-bug-fix-memory/SKILL.md
8. 扫描 .claude/skills/ 全部技能 → 生成「本项目的技能表」章节
9. 将技能表插入 CLAUDE.md 的开头位置(一级标题之后、其他二级标题之前)
10. 检测到无 AGENTS.md/GEMINI.md → 完成
场景 5:增量更新时发现新技能
用户:请更新我的 CLAUDE.md 记忆文件
执行流程:
1. 检测到已有 CLAUDE.md → 读取现有内容
2. 扫描 templates/ 和已有记忆项 → 对比分析
3. 用户选择更新记忆项 → 执行差异补全
4. 检查 .claude/skills/ → 发现已有 record-bug-fix-memory
5. 扫描 .claude/skills/ → 发现用户新增了 code-style 技能
6. 对比现有技能表 → 识别新增技能
7. 补全技能表,新增 code-style 条目
8. 检测到存在 AGENTS.md → 询问用户是否同步替换
技能表管理详细说明
技能表的作用
「本项目的技能表」章节的作用是让 agent 在读取 CLAUDE.md 时,能够快速了解项目中可用的技能清单,包括:
- 技能名称和路径
- 技能的用途和触发时机
- 技能的参考作用和约束
这帮助 agent 在合适的场景下主动调用正确的技能,而不需要逐个扫描 .claude/skills/ 目录。
技能表条目格式
每个技能条目遵循以下格式(参考 templates/08.本项目的技能表.md):
- `{技能名称}`
- 路径:`.claude/skills/{类别}/{技能名}/SKILL.md`
- 用途:{技能描述,从 YAML frontmatter 的 description 字段提取}
- 触发时机:{从 SKILL.md 的"何时使用"章节提取关键触发条件}
- 参考作用:{技能的辅助参考价值}
- 约束:{技能的边界限制}
技能表更新策略
- 新增技能时:扫描发现新的 SKILL.md → 在技能表末尾追加条目
- 技能变更时:检测到技能描述或路径变化 → 更新对应条目
- 技能删除时:扫描未发现已记录的技能 → 使用
AskUserQuestion询问用户是否移除该条目
内置技能部署详细说明
record-bug-fix-memory 技能
这是一个专用于 bug 修复经验沉淀的技能。部署后:
- 目标路径:
.claude/skills/fix-bug/record-bug-fix-memory/SKILL.md - 来源模板:
templates/record-bug-fix-memory/SKILL.md - 部署后状态:
- 技能的通用框架已就绪(概述、何时使用、记录流程等)
- 「仓库级经验库」章节为空,等待项目实际积累
- agent 可以立即使用该技能记录 bug 修复经验
- 持续演进:
- 每次 bug 修复后,agent 应主动将经验补充到该技能的「仓库级经验库」章节
- 这使得技能随项目使用逐步丰富,形成项目特有的排错知识库
部署注意事项
- 不会覆盖:如果目标路径已存在技能文件,不执行部署
- 目录创建:自动创建
.claude/skills/fix-bug/record-bug-fix-memory/目录结构 - 技能表同步:部署完成后自动更新 CLAUDE.md 中的技能表
交互选择详细说明
AskUserQuestion 调用规范
在步骤 3 交互选择时,必须按以下格式调用 AskUserQuestion 工具:
- 问题标题:使用
header: "记忆项" - 问题内容:清晰说明当前扫描结果和可选操作
- 多选模式:设置
multiSelect: true - 选项设计:
- 每个可用记忆项作为一个选项
label格式:记忆项名称 [状态]description说明该选项的具体操作
选项状态标注规则
[缺失]:目标文件中不存在该二级标题[需更新]:标题存在但内容与模板有差异(缺少行/段落)[已完整]:内容与模板完全一致
用户选择后的处理
- 用户选择
[缺失]状态的记忆项 → 在合适位置插入完整模板内容 - 用户选择
[需更新]状态的记忆项 → 执行差异对比,仅补全缺失部分 - 用户选择
[已完整]状态的记忆项 → 跳过或提示无需更新
触发场景
本技能应在以下场景主动调用:
明确触发
- 用户提及 "init-ai-md"
- 用户提及 "初始化记忆文件"
- 用户提及 "更新 CLAUDE.md"
- 用户提及 "同步 AI 记忆"
上下文触发
- 用户新建项目时(建议初始化)
- 用户克隆项目后首次使用 Claude Code
- 用户询问如何规范化 AI 记忆文件
- 用户抱怨 AI 记忆文件内容混乱或缺失
注意事项
核心原则
- 交互优先:在处理前必须与用户交互确认,不得自动全量处理
- 增量补全:仅补全缺失内容,不全量替换
- 保护自定义:用户的自定义内容不得被覆盖
- 禁止脚本:不得使用任何脚本进行批处理
执行要求
- 中文优先:所有生成和更新的内容必须使用简体中文
- 顺序插入:严格按照模板文件的数字前缀顺序插入
- 标题来源:使用模板内的二级目录标题,而非文件名
- 前置插入:新增记忆项插入到原有二级目录之前
- 询问确认:同步 AGENTS.md/GEMINI.md 前必须询问用户
格式保持
- 保持原有文档的一级标题不变
- 保持原有文档的项目特定内容不变
- 仅更新/插入通用提示词部分
差异对比判断
判断内容需要更新的依据:
- 二级目录标题相同但内容不完整
- 模板中存在目标文件缺少的行或段落
- 模板中存在目标文件缺少的子标题或列表项
禁止事项清单
- 禁止未经用户选择直接处理所有记忆项
- 禁止使用 Python/TypeScript/Shell 等脚本批量处理
- 禁止一股脑复制粘贴整个模板文件内容
- 禁止覆盖用户在 CLAUDE.md 中的自定义内容
- 禁止跳过交互选择步骤直接执行更新
模板内容参考
详细的模板内容请查看 templates/ 目录下的各个模板文件。