📋 摘要
- 作用:空文件夹 → 最小工程骨架(
.gitignore+ README + CLAUDE.md + docs/PRD.md + 第一张任务卡 +git init+ 初始 commit)。 - 定位:与 Vibe-Coding-小型工程全流程方案 §一 目录树配套,把「缺啥补啥、别铺满」自动化。
- 结构:
SKILL.md(流程 + 示例 + 注意事项)+references/templates.md(模板库)。 - 安装:把整个
new-project-scaffold/目录存到~/.claude/skills/(全局)或某项目.claude/skills/。 - 使用:新项目里输入
/new-project-scaffold,或直接说「帮我搭一个新项目的目录」。
安装
- 创建目录
~/.claude/skills/new-project-scaffold/(全局,所有项目可用);只想在某个项目用就放<项目>/.claude/skills/new-project-scaffold/。 - 把下面的
SKILL.md和references/templates.md两个文件存进去(后者放references/子目录)。 - 新项目目录里跑
claude,输入/new-project-scaffold触发。
目录结构
❯Text
new-project-scaffold/
├── SKILL.md # 核心:流程 + 示例 + 注意事项
└── references/
└── templates.md # 模板库:5 个生成文件的模板SKILL.md 全文
❯Markdown
---
name: new-project-scaffold
description: 把一个空文件夹初始化成最小可跑的 vibe-coding 工程骨架——生成 .gitignore、README、CLAUDE.md、docs/PRD.md、第一张任务卡,git init 并做初始 commit。当用户要「新建项目 / 搭目录 / 初始化工程」时使用。
---
# new-project-scaffold:初始化新项目骨架
目标:空文件夹 → 最小可跑工程骨架。原则:**缺啥补啥、别铺满、内容只写草稿不虚构**。
## 核心逻辑
### 步骤 1:确认需求
先问清三件事(用户没说就提问,别瞎编):项目做什么、什么技术栈、怎么跑(启动/测试命令)。
### 步骤 2:初始化 git
在目标目录 `git init`。
### 步骤 3:生成最小骨架
按 `references/templates.md` 的模板生成最小集,内容写**草稿**,未知处留 `TODO` 并追问,不编造需求:
| 文件 | 作用 |
|------|------|
| `.gitignore` | 按技术栈定制(node_modules / .env / build 必含) |
| `README.md` | 一句话定位 + 快速开始 |
| `CLAUDE.md` | 项目概述 + 命令 + 目录约定 + 红线 |
| `docs/PRD.md` | 目标 / 范围 / 验收标准 / 技术选型 |
| `docs/tasks/0001-让骨架跑起来.md` | 第一张任务卡 |
### 步骤 4:克制——只生成最小集
`src/`、`tests/` 等代码目录写第一行代码时再建;`ARCHITECTURE / USER_STORY / DATABASE / API / CHANGELOG`、`.claude/skills/`、`.claude/agents/` 等**用户明确要了再加**。
### 步骤 5:初始 commit
做一次初始 commit(`chore: 初始化项目骨架`),作为第一个可回滚点。
### 步骤 6:收尾报告
报告三件事:改了什么 / 涉及哪些文件 / 怎么验证。
## 示例
### 示例 1:Python 数据分析脚本
**输入**:「帮我搭一个 Python 数据分析项目,处理 CSV 并画图」
**输出**:
```text
my-analysis/
├── .gitignore # 补 venv/、__pycache__/、*.png
├── README.md # 「读 CSV → 清洗 → 画图 → 导出」的命令行工具
├── CLAUDE.md # Python 3.12 + pandas + matplotlib;运行 python main.py
└── docs/
├── PRD.md # 范围:读 CSV → 清洗 → 画图 → 导出 PNG
└── tasks/0001-让骨架跑起来.md
```
- 追问未确认项:CSV 字段结构、输出图片格式、是否要命令行参数。
- 验证:`git log --oneline` 可见 `chore: 初始化项目骨架`。
### 示例 2:Node.js Web 服务
**输入**:「初始化一个 Express 后端,提供 /health 健康检查」
**输出**:
```text
my-api/
├── .gitignore # node_modules/、.env、dist/
├── README.md # 「Express 后端,暴露 /health」
├── CLAUDE.md # Node 20 + Express;启动 npm run dev
└── docs/
├── PRD.md # 范围:/health 返回 200;不做数据库/鉴权/日志
└── tasks/0001-让骨架跑起来.md
```
- PRD「不做」区明确写:数据库、鉴权、日志系统(等用户要了再加)。
- 不主动建 `src/`、`tests/`,写第一行代码时再建。
## 注意事项
- **前提**:目标目录已存在(空或近空);本机已装 `git`。
- **不做的事**:不装依赖、不写 `src/`/`tests/` 代码、不生成 `ARCHITECTURE / USER_STORY / DATABASE / API` 等重型文档,除非用户明确要求。
- **不虚构**:需求、字段、命令不清楚时留 `TODO` 并追问,绝不编造。
- **运行位置**:在目标项目目录内触发,才会在该目录 `git init` 与生成文件。
- **不支持**:已有大量代码的目录不适用(本技能针对空/近空目录初始化)。
## 版本
- `1.1.0`(2026-08-23):新增「示例」「注意事项」「版本」章节;模板拆到 `references/templates.md`,SKILL.md 聚焦流程。
- `1.0.0`:初始版本(流程 + 内联模板)。references/templates.md 全文
❯Markdown
# 模板库
生成时按技术栈定制;所有 `<...>` 占位符未确认时留 `TODO`。
## .gitignore
```gitignore
# 依赖 / 环境 / 构建产物(按技术栈补全)
node_modules/
.env
.env.*
!.env.example
dist/
build/
*.log
.DS_Store
```
> Python 项目补 `venv/`、`__pycache__/`;Node 已含 `node_modules/`。
## README.md
```markdown
# <项目名>
<一句话:做什么、解决什么问题>
## 快速开始
<!-- 安装、运行命令;未知写 TODO -->
```
## CLAUDE.md
```markdown
# CLAUDE.md
## 项目概述
<一句话:项目是什么、解决什么问题>
## 技术栈与命令
- 技术栈:<技术栈>
- 开发:<dev 命令> / 测试:<test 命令> / Lint:<lint 命令>
## 目录约定
- src/ 放源码,tests/ 放测试,docs/ 放文档(PRD、任务卡、ADR)
## 编码规范
<!-- 有共识再写,别预防式堆砌 -->
## 红线
- 别改 <关键模块>,除非先明确同意
- 别引入新依赖,除非先确认
```
## docs/PRD.md
```markdown
# PRD:<项目名>
## 目标
<要达成什么>
## 范围
- 做:<in-scope>
- 不做:<out-of-scope>
## 验收标准
- [ ] <可验证标准 1>
- [ ] <可验证标准 2>
## 技术选型
<技术栈 + 一句理由>
```
## docs/tasks/0001-让骨架跑起来.md
```markdown
## 任务:让骨架跑起来
- 目标:项目能启动、测试能跑、本地命令全绿
- 涉及文件:README.md、CLAUDE.md、docs/PRD.md
- 验收:<启动命令> 成功,<测试命令> 通过
- 验证:<测试命令> + <lint 命令>
- 状态:☐ 未开始 / ▶ 进行中 / ☑ 完成
```使用
- 手动触发:
/new-project-scaffold。 - 自然语言触发:「帮我搭一个新项目的目录」「初始化一个 <技术栈> 项目」。
- 触发后它会先问三件事(做什么 / 技术栈 / 怎么跑),再生成,不会瞎编需求。
相关
- Vibe-Coding-小型工程全流程方案 —— 目录设计与维护节奏的完整约定。