Project Init
读取全局协议,分析项目,生成上下文。
工作流程
Step 1: 读取全局协议
读取 ~/.claude/CLAUDE.md(及其 @include 引用的文件),理解全局协作协议。这是生成项目上下文的基准——项目文档的格式和结构应对齐全局协议中的定义(如文档体系、SOP、DECISIONS 格式等)。
Step 2: 读取配置
读取本 skill 目录下的 config/profiles.yaml,获取:
skill_sources: Skill 源仓库路径profiles: 各项目类型的检测规则和 Skill 列表
Step 3: 检测项目类型
- 调用
scripts/init.sh detect <project_dir>获取指示文件列表。 - 按配置中 profiles 的定义顺序评估
detect规则:any_of: 任一文件存在即匹配has_skill_md: 根目录或skills/子目录下存在 SKILL.mdextensions: 指定扩展名文件数 >=min_countdir_patterns: 任一目录名存在即匹配
- 第一个命中的 profile 即为检测结果。未命中则使用
default_profile。
Step 4: 分析项目
在生成任何文件之前,先分析项目实际情况:
- 读取
package.json/pyproject.toml/Cargo.toml等获取技术栈 - 扫描目录结构了解项目架构(
src/、app/、lib/等) - 读取已有的 README.md 或代码了解项目用途
- 检查是否已有
.claude/、CLAUDE.md、docs/等
将这些信息汇总,作为后续生成上下文的素材。
Step 5: 展示计划并确认
向用户展示检测结果和生成计划,必须等待确认。若计划使用文件化任务源,同时说明:
- 任务文件的名称与位置;
- 根据风险与复杂度选择的
Lite、Standard或Strict配置及理由; - 将写入的首批真实任务,以及已有任务文件的合并或跳过策略。
Step 6: 创建 .claude/ 和安装 Skill
mkdir -p .claude/skills/
对 profile 中 skills 字段列出的每个 Skill,通过调用 skill-manager Skill 以符号链接方式安装到项目的 .claude/skills/ 目录。skill-manager 会自动处理路径解析、去重和版本追踪。
Step 7: 生成 AGENTS.md 和 CLAUDE.md
不是复制模板,而是基于全局协议 + 项目分析结果生成项目特定的 AGENTS.md。
参考 templates/agents-template.md 中各项目类型的结构模板和生成指南,结合 Step 4 的分析结果,生成包含真实项目信息的内容,写入 AGENTS.md。
templates/agents-template.md 包含所有项目类型的段落定义、结构模板和脱敏范例,无需参考其他外部文件。
CLAUDE.md 不重复写内容,仅写入:
@include ./AGENTS.md
这样 Claude Code 和 Codex 共享同一份项目协议,只维护一个源文件。
已有 AGENTS.md 时展示 diff,让用户决定覆盖/合并/跳过。已有 CLAUDE.md 但内容不是纯 @include 时,同样展示 diff。
Step 8: 生成 settings.json
将 assets/claude-settings-template.json 原样复制为项目 .claude/settings.json。已有则跳过。
Step 9: 创建 .codex/ 目录
bash scripts/init.sh codex "<project_dir>"
创建 .codex/ 目录结构:
config.toml:从assets/codex-config.toml复制rules/default.rules:从assets/codex-default.rules复制skills:符号链接 →../.claude/skills(与.claude/skills/共享,不重复安装)
已有则跳过。.codex/skills 软链确保 Codex 能直接访问 .claude/skills/ 中已安装的 Skill。
Step 10: 生成 docs/ 文档
不是复制空模板,而是基于全局协议的文档体系定义 + 项目分析结果生成有实际内容的文档。
按需读取对应文档模板,结合项目选择的协作文档体系生成真实初始内容;不要复制空壳或保留占位符:
- docs/ROADMAP.md: 读取
templates/roadmap-template.md,从 README、版本和当前实现提取愿景、状态与阶段规划 - docs/DECISIONS.md: 读取
templates/decision-log-template.md,记录真实存在的初始化决策和工作日志,不虚构备选方案 - 任务清单文件: 仅当项目选择文件化任务源时创建;读取
templates/task-template.md,根据项目风险选择一个任务配置,生成真实队列与任务卡。不要逐字复制生成指南,也不要生成与所选配置无关的空章节。文件名和位置由项目上下文决定 - docs/ARCHITECTURE.md: 读取
templates/architecture-template.md,从目录结构、入口和技术栈生成初始架构描述 - DESIGN.md: 仅包含前端的项目读取
templates/design-template.md,结合实际设计系统和技术栈生成 - CHANGELOG.md: 项目需要变更日志且文件不存在时读取
templates/changelog-template.md,使用明确版本号和日期生成初始化记录
任务文件只作为当前任务入口:长期方向留在 ROADMAP,重要取舍留在 DECISIONS,用户可见历史留在 CHANGELOG。任务完成并同步相应文档后,从活跃区移除;不为任务文件创建快照、before 副本或专用历史归档。仅创建不存在的文件;已有任务文件时展示 diff,由用户决定合并或跳过,不直接覆盖。
Step 11: 创建 .gitignore
将 assets/gitignore-template 原样复制为项目 .gitignore。已有则跳过。
Step 12: Skill 脚手架(仅 skill-project 类型)
bash scripts/init.sh scaffold "<project_dir>" "<skill_name>"
创建 references/、scripts/、assets/、SKILL.md、LICENSE.txt。
配置说明
编辑 config/profiles.yaml 自定义。
资源目录
templates/:读取后结合项目事实选择、裁剪和填充;不得原样复制,也不得保留占位符。文件统一使用*-template.md,避免与生成目标同名或命中常见 Git 忽略规则。assets/:不需要载入上下文,按步骤或脚本原样复制到目标位置;已有目标文件时遵循幂等规则。- 新增资源时按消费方式归类,不按文件扩展名归类。同为文本文件,需理解后生成的进入
templates/,固定内容进入assets/。
幂等性
符号链接相同目标 → 跳过;文件已存在 → 不覆盖。