Community编程与开发github.com

samyak-here/project-bootstrap

为全新仓库完成完整的初始项目设置——访谈用户、创建 CLAUDE.md、AGENTS.md 和项目文档(PRD、ROADMAP、CONTEXT、STATE、SETUP、ADRs),仅安装与项目栈相关的技能、添加审查代理并修复 .gitignore——然后验证、提交并停止。当用户说“设置新项目”、“引导此仓库”、“初始项目设置”、“搭建此项目”或要求为 AI 编码代理设置新仓库时使用。不要用于添加功能、修复缺陷或继续已设置好的项目。

project-bootstrap 是什么?

此技能是一个轻量级编排器,专为全新仓库的初始化一键设置而设计。它通过访谈用户收集项目需求,然后自动创建 CLAUDE.md、AGENTS.md 以及全面的文档(包括 PRD、ROADMAP、CONTEXT、STATE、SETUP 和架构决策记录)。它会探测项目技术栈并仅安装相关的技能(例如 iOS、Web),同时确保每个技能都被固定到确切的提交 SHA 并经过安全审查。该技能还包含严格的验证步骤,检查文件完整性、令牌填充、.gitignore 配置,并确认构建命令有效。整个过程以一次提交和停止信号结束,防止该会话继续开发功能,遵循规范-计划-构建-独立审查的工作流模式。该技能支持 iOS、Web、Python 和通用项目类型,并通过引用文件按需加载特定于平台的指令。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/samyak-here/skill-md/tree/HEAD

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

项目引导 (Project Bootstrap)

一个轻量级编排器。此技能不包含其他技能——它会在正确的步骤加载正确的技能,运行确定性脚本以创建文件,并根据用户的回答填充模板。如果以下步骤与复制进来的技能冲突,以此技能为准。

优先规则——仅限设置会话

此排序**仅在设置会话期间(即此技能激活时)**适用。如果在设置过程中指令冲突,请按以下顺序应用:

  1. 此技能 (project-bootstrap) —— 设置范围、安全规则、停止规则。
  2. 项目自己的 CLAUDE.md —— 因为正在被创建。
  3. 栈技能 —— 例如适用于此项目类型的 SwiftUI 或设计技能。
  4. 工作流检查表 —— references/workflow.md,默认流程。

一旦设置结束,此技能不再激活,排序失效:项目的 CLAUDE.md(及其文档)是未来会话的唯一常设指令集。

切勿安装两个竞争的工作流框架(例如,不要同时安装基于重度规范驱动框架与此技能的工作流检查表)。如果用户明确指定了一个工作流框架,则使用该框架代替默认检查表,并将选择记录在 docs/SETUP.md 中。

安全规则(绝不能被覆盖)

  • 绝不要将密码、API 密钥或令牌写入任何生成的文件,也绝不要将服务器端秘密(例如银行 API 密钥)放在客户端应用中。
  • 未经用户明确同意,绝不要覆盖现有文件(scripts/bootstrap.py 默认拒绝;--force 是仅限选择的选项,使用 --force 时脚本会先将每个文件备份到 <filename>.pre-bootstrap.bak)。
  • 仅用于设置:不要在此会话中开始构建产品功能。

工作流

按顺序执行这些步骤。不要跳步。

1. 访谈

加载 references/interview.md。一次一个地提问,并在每个答案到达时将其写入相关的文档——不要将所有内容保留在对话记忆中。如果用户一次回答多个问题,记录所有给出的答案,标记那些问题已回答,并从第一个未回答的问题继续——绝不要重新询问已回答的问题。当每个问题都有答案或用户明确推迟回答时(将推迟的项目记录在 docs/STATE.md 中),停止访谈。

2. 运行脚本

从此技能目录执行:

python3 scripts/bootstrap.py \
  --project-name "<来自访谈的项目名称>" \
  --type <ios|web|python|generic> \
  --purpose "<来自访谈的单行目的>" \
  --target <全新项目仓库路径> \
  --allow-placeholders

此处需要 --allow-placeholders:在此阶段,模板仍然有意包含 {{...}} 填充令牌(步骤 3 会填充它们),因此脚本通过逐文件令牌警告而非失败来通过验证。目标目录必须已存在(全新项目仓库);如果目标缺失,脚本会报错,而不是创建拼写错误的路径——只有当用户明确希望脚本创建该目录时才传递 --create-target。

这将创建目录并确定性地渲染模板。准确报告创建、跳过或覆盖的内容——永远不要声称脚本未报告的文件存在。

3. 根据访谈答案填充模板

用实际答案替换生成文件中剩余的填充提示:CLAUDE.md / AGENTS.md 中的栈和构建/测试命令,docs/PRD.md 中的范围,docs/ROADMAP.md 中的阶段,docs/CONTEXT.md 中的词汇表术语。保持 CLAUDE.md 简短——如果超过约 80 行,将细节移到 docs/ 中并留下指针。

4. 安装栈技能——固定版本,安装前阅读

加载项目类型的引用,仅安装其列出的技能:

  • iOS → references/ios.md
  • Web → references/web.md
  • Python / 通用 → 默认无栈技能;在 SETUP 中记录该选择。

列出的每个技能都固定到引用文件的固定技能表中的确切提交 SHA。安装意味着:将仓库克隆到项目的 .claude/skills/,然后 git checkout 固定的 SHA——不要从移动分支安装,并且在不记录新 SHA 的情况下不要更改固定版本。

**强制要求安装前阅读。**克隆后,在安装被视为完成之前,对于每个技能:

  1. 完整阅读其 SKILL.md(并注意它默认加载的其他内容)。
  2. 写出 2-3 行摘要:此技能将向未来会话加载哪些指令。
  3. 标记任何要求网络访问、凭据使用或破坏性命令的内容。将标记展示给用户;未经用户同意,不要静默安装任何要求这些内容的技能。

在 docs/SETUP.md 中记录每个技能:名称、确切来源 URL、固定 SHA、安装日期和阅读摘要。不要将技能的内容复制到 CLAUDE.md 中——技能应保持一个独立可加载的单元。

5. 设置工作流规则

如果 CLAUDE.md 中尚未存在,则从 references/workflow.md 写入默认循环:规范 → 计划 → 构建 → 独立审查,每个阶段一个全新的会话,每个会话结束时更新 docs/STATE.md。

6. 验证——全新检查,而非步骤 2 的输出

现在,在 --verify 模式下全新运行验证(它读取目标当前状态且不修改任何内容):

python3 scripts/bootstrap.py --verify --target <项目仓库路径>

不要重用步骤 2 运行的输出——该运行在步骤 3 的填充和步骤 4 的安装之前。不要在验证命令中添加 --allow-placeholders——脚本会直接拒绝此组合,因为验证必须针对已填充的文件运行。--verify 在生成文件中发现任何剩余的填充令牌时会失败:如果因令牌失败,则步骤 3 未完成——返回,填充剩余令牌,并重新运行 --verify 直到通过。--verify 还检查内容,而不仅仅是令牌:PRD 的不在范围内列表必须非空,并且 docs/SETUP.md 必须为每个已安装的技能记录固定的 SHA(或声明未安装任何栈技能)。同时:

  • 确认 .gitignore 涵盖了此栈的秘密。
  • 确认项目的空/模板应用仍能使用 CLAUDE.md 中记录的构建命令构建(如果构建命令已存在)。
  • 重新阅读 docs/SETUP.md:每个已安装的技能都必须列出其来源 URL、固定 SHA、安装日期和阅读摘要。

7. 提交

一次提交,仅此而已:

chore: 初始项目设置

仅包含设置文件。如果未配置 git 用户身份或远程仓库,请说明并将提交留给用户——不要虚构任何一个。

8. 停止

向用户展示创建的文件树和 docs/ROADMAP.md 的阶段 1。然后停止。不要开始阶段 1,不要构建功能,也不要主动提出“仅启动骨架”——下一阶段应属于全新的会话(参见 references/workflow.md)。

应急出口: 停止,除非用户明确指示你继续。如果他们指示继续,建议一次——即阶段 1 仍应在新会话中进行——然后听从用户并继续。

引用文件——按需加载

文件加载时机
references/interview.md总是——步骤 1。
references/ios.md项目类型为 ios。
references/web.md项目类型为 web。
references/workflow.md步骤 5,以及任何后续在已引导仓库中工作的会话。

相关技能