# Setup

> 初始化或更新仓库工程底座。仅用户显式调用 setup 时使用。

- Skill: `cabinet-fe/setup` (Agent Skill, multi-file: 13 files)
- Install (CLI): `npx skillmds@latest add cabinet-fe/setup`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cabinet-fe/setup/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: cabinet-fe (https://skillmd.com/u/cabinet-fe)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cabinet-fe/setup

---


# setup

每个仓库完整执行一次。其它工程技能运行 `.agents/scripts/precheck.mjs` 判定是否已 setup，缺了就停，不代跑本技能。禁止啰嗦和故作高深。

项目类别与仓库结构写在 `.agents/docs/PROJECT.md`，不要写进根 `AGENTS.md`。业务/技术架构、技术栈由本技能写入 `.agents/docs/ARCHITECTURE.md`（仅代码类）。坏味道基线从技能包模板原样复制为 `.agents/docs/SMELLS.md`（仅代码类）。

## 统一工具定义

- `交互式提问`：Agent 内置的向用户提问并给出选项的工具，各 Agent 命名不同（如 `AskUserQuestion`、`AskQuestion`）。本技能所有向用户的提问都用它。

## 完成判定

写完后运行 `node .agents/scripts/precheck.mjs`：FAIL 则补缺失项直到 PASS。检查项以该脚本为准。

已完成且用户只是说 setup：告知已完成，使用 `交互式提问` 工具来问要不要走「更新模式」。

## 工作流

### 1. 确定工作目录

目标根目录 = 当前 workspace / git 根目录。有歧义时必须确认：

- 用户指定了子目录
- 多个 git 根
- monorepo 里多个可独立交付的包

确认前不要写文件。之后所有路径相对该根目录。

### 2. 目录与 gitignore

- 创建 `.agents/docs/`、`.agents/cooking/`（空目录即可，不要写 README）
- 创建 `.agents/scripts/`，把 `<engineering>/setup/scripts/` **整目录**复制到 `.agents/scripts/`（`<engineering>` = 本技能包目录）。里面有 precheck / spec-files / cooking 三个脚本和两份根 AGENTS 模板，precheck 运行时读同目录模板，缺一不可
- `.gitignore` 追加 `.agents/cooking/`（已有则跳过）
- 若 `.gitignore` 忽略了整个 `.agents/`：改成只忽略 cooking，`.agents/docs/` 和 `.agents/scripts/` 必须能提交
- 模板见 [templates.md](references/templates.md)

### 3. 分类，写 PROJECT.md

按 [classify.md](references/classify.md)：现有项目先推断；新项目能从描述定类别就不要再问类别。写 `.agents/docs/PROJECT.md`，模板见 [templates.md](references/templates.md)。只留类别、组织结构、（全栈才有）架构形态、一句「是什么」。

新项目判定见 [new-project.md](references/new-project.md)。

### 4. 覆写根 `AGENTS.md`

按类别用 shell 复制文件：`cp .agents/scripts/root-agents-code.md AGENTS.md` 或 `cp .agents/scripts/root-agents-non-code.md AGENTS.md`（源文件见 [root-agents-code.md](scripts/root-agents-code.md) / [root-agents-non-code.md](scripts/root-agents-non-code.md)）。不要手打必有行。禁止短注、流程章、把项目特例写成正文。

- **没有**：直接复制
- **已有且很长**：代码类把技术栈 → `ARCHITECTURE.md`，开发偏好 → `DEV-STANDARDS.md`，目录/模块 → `CODE-MAP.md`；能对应上的原文尽量搬迁。然后按下一则处理
- **已有且已是索引**：复制模板后，把原表里自定义 `.agents/docs/` 行追加回表末（不是 `PROJECT.md` / `ARCHITECTURE.md` / `DEV-STANDARDS.md` / `SMELLS.md` / `CODE-MAP.md` 的才算自定义）。丢掉短注、流程章。禁止改模板必有行的文案

用户全局规则（例如个人 `AGENTS.md`）不要复制进本仓库 docs。

### 5. 写其余 docs

**非代码**：不写 `ARCHITECTURE.md`、`DEV-STANDARDS.md`、`CODE-MAP.md`、`SMELLS.md`。从代码改为非代码时只改 AGENTS 索引，不强制删盘上旧的这些文件。

**代码类**：先按 [interview.md](references/interview.md) 多轮澄清，再按 [templates.md](references/templates.md) 写：

| 文件               | 现有项目                                                                     | 新项目                                                       |
| ------------------ | ---------------------------------------------------------------------------- | ------------------------------------------------------------ |
| `ARCHITECTURE.md`  | 从代码归纳草稿，访谈补空白和矛盾                                             | 按用户回答写                                                 |
| `DEV-STANDARDS.md` | 从 eslint/prettier/测试目录/现有代码归纳；无依据的章节删掉；必须人定的仍要问 | 按用户回答写                                                 |
| `CODE-MAP.md`      | 扫真实目录；模块怎么切拿不准才问                                             | 按组织结构写规划目录，确认模块切分；尚未建目录就标明「规划」 |
| `SMELLS.md`        | 从 [smells.md](references/smells.md) **原样复制**；已有则覆写为当前模板      | 同左。禁止按项目改写、追加或删条                             |

CODE-MAP 何时改见 [code-map-update.md](references/code-map-update.md)。已有文档对齐见 [persistent-docs.md](references/persistent-docs.md)。`.agents/docs` 已有文件之后由 `sync-docs` 更新。

### 6. 汇报

列出写入的路径，每个文件一句话。不要把流程教程写进 `AGENTS.md`。提醒：流程可选；技能默认不自动触发；`.agents/docs` 过时跑 `sync-docs`；脚本 / 根 `AGENTS.md` 走样再跑更新模式。

工作流第 6 步汇报之后、以及更新模式正常结束之后：用 `交互式提问` 询问是否为编码加一层验收保障（token 与工时会明显增加）。
选否或跳过：不生成验收文件、不代跑 `acceptance`。选是：只提示显式调用 `acceptance`。
不把验收访谈写入 `interview.md`，不在 setup 里生成 `.agents/docs/ACCEPTANCE.md`。

## 更新模式

docs 已存在、用户要刷新底座，或 precheck 缺项时：

| 变更                                                                          | 做                                                                                           |
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| 代码/非代码切换                                                               | 改用对应 AGENTS 模板；按第 5 步补缺的代码类 docs。从代码改为非代码不强制删旧的代码类 docs     |
| `.agents/scripts/` 缺失任一脚本 / 模板或与技能包不一致                        | 从 `<engineering>/setup/scripts/` 整目录覆盖复制                                             |
| `AGENTS.md` 掺了短注、流程章，或缺模板必有行                                  | 按第 4 步重建必有行，保留用户追加的 `.agents/docs/` 索引行                                   |
| 代码类必有 docs 缺失                                                          | 按第 5 步补写                                                                                |
| `.agents/docs/` 已有文档内容过时                                              | 让用户跑 `sync-docs`，不要在这里改                                                           |

禁止：删除 `cooking/` 里进行中的功能、把规范全文写回根目录 `AGENTS.md`。
正常结束后执行上文验收保障询问。

