第三章 · /impeccable init 产品画像
每个新项目从 init 开始:它只问「不会随时间改变的产品事实」,写成 PRODUCT.md,之后所有命令都吃这份上下文。
1为什么第一条命令是 init
没有产品事实,Agent 的「设计决策」就只能瞎猜——而它猜的结果高度雷同,正是 AI 味的根源。
init 会先检查项目(技术栈、目录结构、已有视觉系统),然后只补真正的信息缺口:受众是谁、产品目的是什么、有什么硬约束、语气如何。答案不写进 prompt 就消失,而是落成仓库里的 PRODUCT.md,从此每个命令开工前都会读它。
官方的表述是:init 记录 「durable product truth」(持久产品真相),并且不会把这些事实与表面化的视觉方向混为一谈——视觉系统记在另一个文件 DESIGN.md 里。
2完整实例:给记账 App 跑一次 init
假设你有一个 Vite + React 的记账应用,下面是 Cursor CLI 里的真实节奏。
你:/impeccable init
Agent:扫完项目:Vite + React 18,TypeScript,无组件库,
src/pages 下有 3 个页面,未见设计系统文档。
需要确认 3 个产品事实:
1) 目标用户是谁?使用场景?
2) 有没有必须遵守的品牌约束(色 / 字体 / 合规)?
3) 期望的产品语气?(克制 / 友好 / 极客……)
你:1) 自由职业者,碎片时间快速记账;
2) 无硬性品牌约束;
3) 安静、高效,不要营销腔。
Agent:已写入 PRODUCT.md(受众 / 目的 / 约束 / 语气)。
最后一个问题——buildPath 选哪个?
· comp:先产出组件草图,你过目后再进代码
· code:直接在代码库里实现
(选完会记入 .impeccable/config.json)
你:comp
Agent:buildPath=comp 已记录。视觉系统检测为空,
首次 craft 时会先规划一套并写入 DESIGN.md。
建议下一步:/impeccable craft 记账仪表盘
整个过程一两条消息就能结束,但这份 PRODUCT.md 会在之后的每一次 craft、critique、polish 里持续生效。
3buildPath:comp 还是 code
init 只问一次、记进 .impeccable/config.json,决定后面「动手前要不要先给你看草稿」。
| 选择 | 行为 | 适合谁 |
|---|---|---|
comp | 关键页面先出组件级草图 / 线框,方向确认后再写实现代码 | 视觉敏感的新项目;想掌控方向的团队 |
code | 跳过草图阶段,直接按规划在代码库里实现 | 后台工具、内部系统;已经清楚要什么的老项目 |
拿不准就选 comp:多一步确认,换来的是方向返工变少。想改也容易——直接编辑 .impeccable/config.json 即可,init 不会反复问。
4老项目先来一发 /impeccable document
项目里已经有一套顺手(或凑合)的视觉系统?让 Agent 先从代码里把它反向归纳成 DESIGN.md。
你:/impeccable document
Agent:读取 src/styles、tailwind.config、3 个页面代码,
归纳出当前视觉系统并写入 DESIGN.md:
· 主色 #0F766E(按钮 / 链接),辅助琥珀 #F59E0B
· 字体:标题 Manrope,正文系统 UI
· 圆角 8-12px,卡片白底、阴影偏淡
发现 2 处不一致:登录页用了另一套蓝色、
设置页标题字号不在字阶内。要顺手修吗?
这份 DESIGN.md 是后续 polish(对齐设计系统)和 extract(抽组件与设计令牌) 的基准。老项目的推荐顺序:document 归纳现状 → 你修订 → 之后照常 init 补产品事实。
记一下
至此项目里多了 PRODUCT.md(产品真相)、DESIGN.md(视觉系统)、.impeccable/config.json(buildPath 等配置)——它们都属于应该提交 git 的共享文件,完整清单见第八章。