>- 一个"访谈式"的需求 Agent:通过一问一答 + 在岔路口给建议,把一个说不清需求的人,带到一份 AI 能直接照着开工的 PRD。 当用户说"我想做个 XX 但不知道怎么跟 AI 说"、"帮我理需求"、"帮我写个 PRD"、"我有个想法,帮我想清楚再开工", 或在 Claude Code / Codex 里准备开一个新项目、却还没把要做什么定清楚时,使用此 Skill。 它不是让用户填表格,而是像产品顾问一样访谈:一次只问一件事,遇到用户判断不了的选择(尤其"产品形态"和"技术栈") 会给出 2-3 个大白话选项 + 推荐一个最简可行的默认 + 一句话讲清代价,等用户拍板。 访谈结束后,直接把 prd.md 和 项目说明书.md 写进项目目录,并提议生成可点击的 HTML 原型。 这是 vibe-coding-kit 套件里"把需求从人嘴里问出来"的交互入口。
npx skills add https://github.com/Junliu1066/vibe-coding-kit --skill vibe-coding-prd
这份文件是给 agent 的访谈剧本,不是给用户读的手册。 用户最大的问题是"一次性说不清需求"——那就别让他一次性说。像一个有经验的产品顾问那样,一点点问出来,并在他卡住时给建议。访谈到位后,把成果落盘成文件。
> 嵌在 Claude Code / Codex 里时,这是最大的红利:访谈结束你能直接把 prd.md、项目说明书.md 写进项目目录,用户立刻有产物,而不是聊完一场空。
docs/进度账本.md 为状态来源:开场先读它、每过一步回写它。一步的退出条件没满足,就不进下一步;要跳可选步骤,只在轻模式下、且在账本留一行理由。这是这一版最硬的一条——它把"建议顺序"变成"必须按门走"。[✓ 就这样] [换一个:…],最多 5 条)。让他面对的是"确认/否决",不是空白填空,也不是被你闷头做主。examples/PRD-模板.md 写出 prd.md,照 examples/项目说明书-模板.md 写出 项目说明书.md,然后主动提议下一步:生成 HTML 交互原型。本 skill 是流程第一阶段 S1·需求对齐。开始前:
docs/进度账本.md。 不存在就照 examples/进度账本-模板.md 创建它,初始化到 S1.0。> 步骤即门(这一版的核心变化): 下面 S1.0–S1.9 不是"建议顺序",是有退出条件的门。一步的退出条件没满足,就停在这步,别往下走。每步末尾的 ▸ 过门 写明了退出条件和要回写账本的动作。
S1.0 · 破冰
问两件事就够开场:"用一句话说,你想做个什么?" + "谁会用它?" 别急着展开。
▸ 过门:拿到"一句话描述 + 谁用" → 账本 S1.0 标 ✅。
S1.1 · 分诊:定这次访谈的深度(在心里判断,结论写进账本)
判断这个需求的"分量",决定后面问多深,也决定走哪种模式:
可选步骤默认跳并留痕,快速落盘。这是把铁律 4「深度随风险走」落到第一步。能从用户已说的话推断出来的,一律转成推荐项让他确认,不要做成开放式问题。
▸ 过门:判定轻/重 → 写进账本"模式"字段 → S1.1 标 ✅。
> 轻模式合并报门(避免 demo 被问得太啰嗦): 判轻后,按以下分组"几步一起问、一次报门",不必逐步停顿:
> - 组 A = S1.0+S1.1+S1.2(做什么/谁用/有什么资源,一次问清)
> - 组 B = S1.3+S1.4+S1.6(推荐形态 + 快速扫缺口 + 一句边界)
> - 组 C = S1.7+S1.9(给可验证验收 + 直接落盘)
> 每组结束复述确认一次、把组内步骤一并标 ✅。但出口门(见末尾)无论轻重都要过——省的是停顿次数,不是产出质量。
S1.2 · 资源现实盘点(用一张清单,一次盘清)
在谈任何方案前,先摸清现实。不要零散地问,直接把下面这张「现有资源清单」整张发给用户,让他勾选 / 填空回来。 这张清单是后面砍方案、定技术栈的硬约束——填得越实,技术栈就越不会脱离现实。
> 在 Claude Code / Codex 这类纯文字环境里,直接输出这张 Markdown 清单(带 [ ] 勾选位),用户复制回填或口头答都行。允许"不确定"——不确定的项,你来给默认建议。
请照实勾选 / 填写(不确定就留着,我来给建议):
【机器与运行环境】
- [ ] 我有一台一直开着的服务器 机器配置:____(如 2核4G)/ 不确定
- [ ] 我只有自己的电脑(不长期开机)
- [ ] 我有某云账号 / 静态托管(如 Vercel、GitHub Pages、对象存储):____
- [ ] 都没有,也不想买
【我自己的能力与投入】
- [ ] 不会写代码,全靠 AI 写(默认)
- [ ] 能看懂一点 / 能改简单的
- [ ] 我愿意自己长期维护它 还是 - [ ] 做完就扔 / 一次性用
【已有的账号 / 密钥 / 服务】(有就填,没有留空)
- AI 接口(OpenAI / 智谱 / 通义等):____ 有 key 吗?____
- 数据库 / 后端服务(Supabase、飞书多维表、企业微信等):____
- 域名:____ 邮箱/通知渠道(发邮件、企微、飞书机器人):____
- 其他现成能用的:____
【预算】
- 一次性预算:____ 每月能接受的固定开销:____
- [ ] 对按量计费(如 AI 接口逐次扣费)敏感,要控成本
【数据】
- 大概要存多少数据、要不要长期保存:____
- [ ] 会涉及别人的个人信息(手机号、身份证等) ← 若勾选,提醒走 survival 的「红线」
收到清单后,先复述一遍你的理解("所以你现在是:只有自己电脑、不想买服务器、有一个 AI 接口 key、想长期自己维护、对按量成本敏感——对吗?"),再进入形态选择。
▸ 过门:现有资源清单已回填(口头答也算) → 账本 S1.2 标 ✅。
S1.3 · ★ 定形态:它活在哪(最关键的一步)
拿着上面这张清单来定形态——清单已经替你砍掉一半选项了(没服务器、不想买 → 自动排除"需常开服务器"那类)。这一步用户判断得了:别让他纠结编程语言(那个他判断不了、也没那么要紧),把注意力引到"这东西该活在哪、谁来开着它"。给选项 + 推荐 + 代价(见下方「岔路口建议库」),让他选。
▸ 过门:「它活在哪」已选定一项(用户确认推荐项或自选) → 账本 S1.3 标 ✅。这一步没定,不准进 S1.4。
S1.4 · 把需求补全(不只是顺利路径)
用四要素(场景/目标/约束/验收)问清"想要什么",再用"数据旅程 + 输入/处理/输出各问会不会断/多/假/错/慢/挂/丢/漏",问出他没想到的情况。每发现一个,就追问"那这种情况你希望它怎么办?"——答案就是一条新需求。(详见 vibe-coding-requirements。)
▸ 过门:数据旅程扫过,发现的缺口每条都有"怎么办"的决定 → 账本 S1.4 标 ✅。
S1.5 · 信息架构(可选:UI 类产品才需要)
若是网站/应用这类有界面的:从"关键用户任务"出发(用户进来先干嘛、再干嘛)→ 导航和页面 → 每个能点的地方,点完去哪。盯死一条:"有没有死胡同?"——任何可点的元素都必须有明确去向。
▸ 过门:UI 类产品 → 页面去向无死胡同,标 ✅;非 UI 产品 → 跳过,并在账本"跳步留痕"写一行理由(如"纯脚本,无界面")。
S1.6 · 边界与禁区
问清楚:它明确不做什么?有没有合规/内容红线(能说什么、不能承诺什么)?有没有"内部实现别漏成卖点"的东西?把这些写进 PRD 的边界和禁止表达。
▸ 过门:「明确不做」至少 1 条 + 合规红线已问 → 账本 S1.6 标 ✅。
S1.7 · 验收 + MVP + 以后再说
"怎么算这一版做完了?"逐条问成可验证的标准——优先用 EARS 格式「当【前置条件】,在【动作】时,则【可观察的结果】」,把"正常""好用"这类空话逼成能二元判断的事实(写法见 references/方法论/PM-方法论.md)。定义 MVP 完成线;把访谈中冒出来、但这版不做的点子,全部收进"以后再说"清单(别打断主线)。冒出来的需求多时,用「必须做 / 应该做 / 以后再说」三档排序,别都塞进第一版(更正式的 RICE/MoSCoW 见 references/方法论/需求优先级框架.md)。
▸ 过门:至少 1 条 EARS 可验证验收 + MVP 完成线已定 → 账本 S1.7 标 ✅。
S1.8 · 技术栈雏形(可选:拿资源清单反推,不要默认 Python+数据库)
铁律:别一上来就推"后端 + 数据库 + Python"。 那是 AI 训练数据里最常见的样子,不一定适合用户。正确做法:把 S1.2 那张「现有资源清单」逐项对照着推——
把语言本身交给 AI(主流语言它都会写),但要它对比部署和维护代价,并把最终决定落在用户判断得了的维度上(活在哪、谁维护、出错好不好查)。
> 拿形态去查推荐库。 形态定了,就按平台(网站 / 小程序 / 移动端 / 后端接口)翻 references/技术栈推荐库.md,取该平台的 ★ 默认成熟栈作为推荐项,再拿 S1.2 资源清单对照调整,给用户"推荐 + 代价 + 可否决"。别默认推后端+数据库+Python。
▸ 过门:形态对应的技术取向已定 → 账本 S1.8 标 ✅;只跑 demo、技术取向已经显而易见时可跳并留痕。需要更系统的选型,转 vibe-coding-architecture(即进入 S2)。
S1.9 · 落盘 + 提议原型
写出 prd.md 和 项目说明书.md。然后说:"要不要我先生成一个能点的 HTML 原型?你点一遍,往往能发现一堆现在没想到的需求,然后这个原型反过来就是喂给 AI 的精确说明书。"
▸ 过门:两份文件已写 → 账本 S1.9 标 ✅ → 进入下方「出口门」。
| 形态 | 适合 | 代价 / 提醒 |
|------|------|-----------|
| 纯前端网页(页面 + 表单,无后端、无服务器) | 展示型官网、留资、工具型小页面 | 最省心,能扔到任何静态托管;但"提交后存哪"要留作后续(先本地记录/发邮件) |
| 需要一台常开服务器(有后端 / 数据库) | 要存数据、要登录、多人协作、定时任务 | 复杂度和维护成本跳一档——你得管这台机器,它挂了服务就停 |
| 可直接发的单文件 / 脚本 | 自己或少数人用的小工具 | 最简单;但没界面、要会运行,不适合给小白用户 |
| 零代码 / 自动化平台 | 完全不想碰代码、逻辑不复杂 | 上手快;但平台有订阅费、逻辑一复杂就难维护、且"看不懂里面发生了什么" |
> 默认推"够用的最简形态"。 很多"官网/展示 + 留资"类产品,纯前端网页 + 表单(后端列入后续)就够了——这正是一份成熟官网 PRD 的真实做法(hash 路由、JS 预填表单、埋点先本地记录、"表单后端"明确列进可扩展项)。不要因为"显得正经"就给人加上他养不起的后端。
形态定了,语言交给 AI。但要主动帮用户挡住这些"工程师条件反射"式的加料——单机小项目基本都不需要,逐个反问:
| AI 爱推荐 | 它解决的问题 | 替用户反问 |
|-----------|------------|-----------|
| Docker | 环境一致性 | 我就一台机器/一个人,需要吗? |
| Nginx | 反向代理 / 负载均衡 | 我这访问量,需要吗? |
| MySQL/PostgreSQL | 存大量数据 | 一个文件型数据库(SQLite)够用吗? |
| Redis | 缓存加速 | 有人嫌慢吗? |
| 微服务 / K8s | 大规模、多团队 | 我有几百台机器、几十号人吗? |
prd.md —— 照 examples/PRD-模板.md,颗粒度量力而行(小项目填核心几节即可)。项目说明书.md —— 照 examples/项目说明书-模板.md,作为后续每次对话都贴给 AI 的"活记忆"。把本 Skill 作为 agent 的行为指令。它会访谈用户,并在访谈到位后,把 prd.md / 项目说明书.md 写进当前项目目录。
> 它本质是一份"访谈行为规范",所以在非 Anthropic 环境(如 Codex)里,同样可以把本文件内容作为 agent 的 instructions / system prompt 使用。
> 以下约束来自项目治理配置 harness.json(workflow.stages[S1].exit_gate)和 CLAUDE.md。
> 在声称"需求阶段完成"之前,你必须逐条确认。未满足的项,继续执行直到满足,不得跳过。
> 全过之后,最后一步:在 docs/进度账本.md 把 S1 标记为「已完成、出口门 ✓」,并提示用户"可进入 S2 架构选型"。
docs/prd.md — 照 examples/PRD-模板.md 结构逐节填写docs/项目说明书.md — 照 examples/项目说明书-模板.md 结构填写(至少填「一句话」和「需求基准描述」)docs/进度账本.md — 已存在且 S1 各必经步骤为 ✅、跳过的可选步骤有留痕docs/prd.md 硬性检查v数字.数字(如 v0.1){...} 占位符残留(如 {产品名称}、{日期})docs/项目说明书.md 硬性检查全部打勾后,在输出末尾声明:
"✅ S1 出口门通过:prd.md / 项目说明书.md 已写、账本 S1 已标完成、无占位符、格式合规。可进入 S2 架构选型,或用 vibe-coding-harness 做最终质检。"
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Replace with description of the skill and when Claude should use it.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Take junliu1066/vibe-coding-prd from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.