Use when 需要在 sdlc-dev 的产品需求 Spec 流程执行 R4(基于 requirements/prototype.md 生成可交互 Demo 工程),并需要避免跳过 spec-context、在缺少 prototype.md 或缺少可运行 Demo 工程根目录时仍继续、或自创页面/目录导致不可追溯与无法回流闭环。
From sdlc-dev-skillsnpx claudepluginhub zixun-github/aisdlcThis skill uses the workspace's default tool permissions.
R4 的目标是把 {FEATURE_DIR}/requirements/prototype.md 的页面清单与交互说明落地为可运行、可交互的 Demo,用于走查/验证/对齐:
prototype.md/页面/弹窗清单(P-xxx…)(禁止自创页面){REPO_ROOT}/demo/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/开始时宣布:「我正在使用 spec-product-demo 技能基于 prototype.md 生成可交互 Demo。」
R4 的核心价值是“把线框变成可点可跑”,不是替代设计稿,也不是在 Demo 里自由发挥新增需求。
{FEATURE_DIR}/requirements/prototype.mdspec-context 失败 → 立刻停止{FEATURE_DIR}/requirements/prototype.md 缺失 → 停止并回到 using-aisdlc(路由到 R3:spec-product-prototype)DEMO_PROJECT_ROOT → 停止并要求提供路径FEATURE_DIR(必须由 spec-context 获取){FEATURE_DIR}/requirements/prototype.md(必读,页面清单/交互说明 SSOT)DEMO_PROJECT_ROOT:可运行的 Demo 工程根目录(存在 package.json 且包含可启动脚本){REPO_ROOT}/demo/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/(共享工程模式)spec-context 获取上下文,并回显 FEATURE_DIR=...(允许 (reuse))spec-context 失败 → 停止{FEATURE_DIR}/requirements/prototype.md 不存在 → 停止(不得“先做个占位 Demo”)违反门禁=违反精神:无论“老板 10 分钟后评审/先做出来再补/在 main 上先跑一版”,都禁止跳过上下文与输入文件。
判定“可运行 Demo 工程根目录”的最低标准:
package.jsonpackage.json 至少包含可启动脚本(例如 dev / start / preview 其一)定位规则(从高到低):
DEMO_PROJECT_ROOT → 以其为准(仍需满足可运行判定){REPO_ROOT}/demo/{REPO_ROOT}/prototype/ 或 {REPO_ROOT}/prototypes/{REPO_ROOT}/apps/demo/、{REPO_ROOT}/packages/demo/DEMO_PROJECT_ROOT硬禁止:在“未找到可运行 Demo 工程根目录”时,擅自初始化新的前端工程(Vite/Next.js/CRA 等)来“先跑起来”。这会污染仓库、破坏流程可追溯性。
prototypes/{SPEC_NUMBER}-{SHORT_NAME}/在 DEMO_PROJECT_ROOT 下为当前需求创建独立命名空间:
OUTPUT_DIR = {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/规则:
OUTPUT_DIR:页面/组件/样式/Mock/交互逻辑等都写在 OUTPUT_DIR 内,避免污染其他需求prototypes/* 目录{SPEC_NUMBER}-{SHORT_NAME}(禁止手写或另起别名)prototype.md 生成页面任务清单(不落盘)以 prototype.md/页面/弹窗清单 为唯一页面来源(SSOT):
P-xxx 至少 1 个任务条目(可再细分)prototype.md 位置)禁止:为“看起来更完整”而新增登录页/设置页/通用布局页等未在 prototype.md 声明的页面。需要新增页面 → 回流 R3 更新 prototype.md 后再做 R4。
先完成:
此阶段允许:
按“核心主链路优先”补齐:
数据依赖未就绪时:
最小完成标准(缺一不可):
OUTPUT_DIR 的页面集合prototype.md 的核心任务流主链路)完成后:立即调用 using-aisdlc 路由下一步(通常进入走查/回流,或继续后续阶段)。
Demo 落盘至 {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/ 后,必须完成以下动作(按顺序,不可省略):
ROUTER_SUMMARY:
stage: R4
artifacts:
- "{DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/"
needs_human_review: false
blocked: false
block_reason: ""
notes: "软检查点:Demo 建议走查;如不触发硬中断 Router 可继续自动推进"
立即执行 using-aisdlc:将上述 ROUTER_SUMMARY 作为路由输入传递给 using-aisdlc,由 Router 判定下一步并自动推进(无需等待用户说「继续」)。
对话输出:在调用 using-aisdlc 前,可简短说明「本阶段产物已落盘,正在调用 using-aisdlc 路由下一步。」
spec-context 获取上下文,只用其输出的 FEATURE_DIR/REPO_ROOT/SPEC_NUMBER/SHORT_NAME{FEATURE_DIR}/requirements/prototype.mdprototype.md(不加页)DEMO_PROJECT_ROOT{DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/;Demo 根工程只做最小粘合改动(路由/入口){num}-{short-name} 分支)上硬做 R4prototype.mdnpm create vite@latest / npx create-next-app 初始化新工程spec-context 就开始找/写 requirements/*.md 或 demo 目录{FEATURE_DIR}/requirements/prototype.md 不存在,却仍要继续prototype.md 未定义的页面(登录/设置/随便加页)prototypes/{SPEC_NUMBER}-{SHORT_NAME}(写到根目录、写错 spec 目录名、或写到别的需求目录)| 借口(压力来源) | 常见违规行为 | 必须的反制动作 |
|---|---|---|
| “老板 10 分钟后要看,先在 main 上做一版” | 跳过 spec-context;在 main 上写 demo | 门禁不过就停止:先切到合法 spec 分支并跑 spec-context;否则只能交付“阻断原因 + 需要的输入/下一步” |
| “prototype 还没写/找不到,就先做个占位 Demo” | 自创页面与流程,导致不可追溯 | prototype.md 缺失 → 回到 using-aisdlc 路由到 R3;R4 禁止替代 R3 的交互决策 |
| “仓库里没有 demo/,我先初始化一个 Vite/Next.js 工程” | 在未知位置创建新工程污染仓库 | 停止并要求 DEMO_PROJECT_ROOT;只有在已存在可运行 demo 工程时才允许继续 |
| “顺便加登录页/设置页,demo 常见” | 自创页面,偏离 SSOT | 拒绝加页并回流 R3:先把页面写进 prototype.md 的页面清单(含编号、说明、AC 映射) |
当未提供 DEMO_PROJECT_ROOT 且自动查找失败时,应当输出类似结论:
demo/ 或缺 package.json/启动脚本)DEMO_PROJECT_ROOT(例如 E:\\path\\to\\demo),并说明其必须可启动DEMO_PROJECT_ROOT 后,在 {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/ 生成 Demo