# Before Build

> 实现前关卡。设计或 brainstorm 已定、准备脚手架、demo、新项目、新子系统、首次写代码、进入实现阶段时使用；按八个工程维度逐一判断并写出「建设前判断记录」，经用户确认后才动手。

- Skill: `redgranite/before-build` (Agent Skill)
- Install (CLI): `npx skillmds@latest add redgranite/before-build`
- Raw SKILL.md: https://api.skillmd.com/api/skills/redgranite/before-build/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: MIT
- Author: RedGranite (https://skillmd.com/u/redgranite)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/redgranite/before-build

---

# before-build：动手前的判断关卡

## 何时用
设计已定、代码还没写：新项目脚手架、demo、新子系统、大功能首次实现。实现中途遇到具体问题时直接用对应维度 skill。

## 硬规则
- MUST 写第一行实现代码前完成判断记录并交用户确认。
- MUST 八个维度逐一判断，只写 `适用（证据 + 具体后果）` 与 `待定（谁回答什么）`；不适用的省略，仅当其前提可能变化时写一句（见 context-legibility）。
- NEVER 写"已考虑""无明显问题"这类无证据结论。
- MUST 判断记录含 MVP 边界与验证计划（见 minimal-viable）。
- MUST 判断记录只写在回复里，不另建文件；本次实现以它为约束。
- NEVER 因维度 skill 未安装而跳过该维度；按下表核心问题作答。

## 审问清单
| 维度 | 核心问题 | 细则 skill |
|---|---|---|
| 自研边界 | 哪部分是 commodity、哪部分是 core differentiation？官方 SDK / 库 / 成品查过没？ | build-vs-buy |
| 复用 | 已有哪些定义可复用？新定义是否重复？做接口还是一次性方法？ | ssot-reuse |
| 并发 | 会并发跑吗？同一状态会被多 request / webhook / worker 同时改吗？竞态怎么建模？ | concurrency-modeling |
| 工程评审 | 异常路径？组件间状态一致？可观测？tech debt 在哪、谁维护？ | engineering-review |
| spec | 接口、状态、critical path、非目标写清了吗？ | spec-first |
| 守卫 | 哪些规则应确定化：lint、CI、e2e、状态机约束？ | guardrails |
| MVP | 边界在哪？edge case 与复杂度如何取舍？验证做哪几项？ | minimal-viable |
| 平台 | 当前平台有哪些已知兼容问题？已出现编码异常时再排查。 | powershell-utf8 |

## 反模式
- 错误：brainstorm 完直接起项目，并发问题上线后暴露。→ 正确：先答"同一订单状态会被支付回调和用户操作同时改吗"，答"会"就先定状态机。
- 错误：判断记录写"并发：已考虑，暂不处理"。→ 正确："并发：不适用——单进程 CLI，无共享状态"或"待定——需产品确认是否多设备同时登录"。
- 错误：八个维度全写"适用"，堆一页分析。→ 正确：不适用的不写，适用的给证据与决策。

## 输出要求
判断记录直接作为回复，格式固定：
```
## 建设前判断记录（YYYY-MM-DD）
| 维度 | 结论 | 证据 / 理由 |
|---|---|---|
| 并发 | 适用 | 支付回调与用户取消会同时改订单状态；不处理会重复退款。用状态机 + 幂等键 |
| 自研边界 | 适用 | 支付用 Stripe SDK；核心是分账规则引擎，自研 |
| 守卫 | 待定 | 需你确认：有 CI 吗？没有则 e2e 只做本地脚本 |
### 决策
1. 订单状态用状态机，转移表见 spec §x
### MVP 边界
做：…；不做：…
### 验证计划
1. e2e：下单 → 支付回调 → 状态 paid，跑一次
```
末尾一句：`请确认以上判断，确认后进入实现。`

