spec-product-demo

Use when 需要在 sdlc-dev 的产品需求 Spec 流程执行 R4(基于 requirements/prototype.md 生成可交互 Demo 工程),并需要避免跳过 spec-context、在缺少 prototype.md 或缺少可运行 Demo 工程根目录时仍继续、或自创页面/目录导致不可追溯与无法回流闭环。

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "spec-product-demo" with this command: npx skills add zixun-github/aisdlc/zixun-github-aisdlc-spec-product-demo

spec-product-demo(R4:基于原型生成可交互 Demo)

概览

R4 的目标是把 {FEATURE_DIR}/requirements/prototype.md 的页面清单与交互说明落地为可运行、可交互的 Demo,用于走查/验证/对齐:

  • 唯一页面来源:只能来自 prototype.md/页面/弹窗清单(P-xxx…)(禁止自创页面)
  • 共享工程模式:默认落到 {REPO_ROOT}/demo/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/
  • 先骨架后细节:先跑通路由/导航/跳转链路,再补字段/状态/校验/错误处理
  • 数据可 Mock:后端未就绪允许 Mock,但要把“真实数据接入”当作明确替换点

开始时宣布:「我正在使用 spec-product-demo 技能基于 prototype.md 生成可交互 Demo。」

R4 的核心价值是“把线框变成可点可跑”,不是替代设计稿,也不是在 Demo 里自由发挥新增需求。

何时使用 / 不使用

  • 使用时机
    • 已完成 R3,且存在 {FEATURE_DIR}/requirements/prototype.md
    • 需要更高保真走查(可用性验证/干系人对齐/研发与测试理解一致性校验)
  • 不要用在
    • spec-context 失败 → 立刻停止
    • {FEATURE_DIR}/requirements/prototype.md 缺失 → 停止并回到 using-aisdlc(路由到 R3:spec-product-prototype
    • 仓库里没有可运行的 Demo 工程根目录,且用户未提供 DEMO_PROJECT_ROOT停止并要求提供路径

输入 / 输出(落盘约定)

  • 硬门禁输入FEATURE_DIR(必须由 spec-context 获取)
  • 读取
    • {FEATURE_DIR}/requirements/prototype.md(必读,页面清单/交互说明 SSOT)
  • 可选输入
    • DEMO_PROJECT_ROOT:可运行的 Demo 工程根目录(存在 package.json 且包含可启动脚本)
  • 写入
    • Demo 代码:默认 {REPO_ROOT}/demo/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/(共享工程模式)

门禁(必须先过,否则停止)

1) REQUIRED SUB-SKILL:正在执行 spec-context 获取上下文,并回显 FEATURE_DIR=...(允许 (reuse)

  • spec-context 失败 → 停止
  • {FEATURE_DIR}/requirements/prototype.md 不存在 → 停止(不得“先做个占位 Demo”)

违反门禁=违反精神:无论“老板 10 分钟后评审/先做出来再补/在 main 上先跑一版”,都禁止跳过上下文与输入文件。

2) Demo 工程根目录定位(必须遵守;找不到就停止)

判定“可运行 Demo 工程根目录”的最低标准:

  • 目录存在
  • 存在 package.json
  • package.json 至少包含可启动脚本(例如 dev / start / preview 其一)

定位规则(从高到低):

  1. 优先使用输入:用户提供 DEMO_PROJECT_ROOT → 以其为准(仍需满足可运行判定)
  2. 未提供则自动查找
    • {REPO_ROOT}/demo/
    • {REPO_ROOT}/prototype/{REPO_ROOT}/prototypes/
    • {REPO_ROOT}/apps/demo/{REPO_ROOT}/packages/demo/
  3. 查找失败就停止:以上路径均不存在或不满足可运行判定 → 停止 R4,并要求用户提供 DEMO_PROJECT_ROOT

硬禁止:在“未找到可运行 Demo 工程根目录”时,擅自初始化新的前端工程(Vite/Next.js/CRA 等)来“先跑起来”。这会污染仓库、破坏流程可追溯性。

核心流程(从 prototype 到可跑 Demo)

0) 输出目录固定:只写到 prototypes/{SPEC_NUMBER}-{SHORT_NAME}/

DEMO_PROJECT_ROOT 下为当前需求创建独立命名空间:

  • OUTPUT_DIR = {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/

规则:

  • 需求实现必须落在 OUTPUT_DIR:页面/组件/样式/Mock/交互逻辑等都写在 OUTPUT_DIR 内,避免污染其他需求
  • 允许最小粘合改动:可在 Demo 根工程做最小改动用于“挂载当前需求”(例如路由注册、入口菜单、通用 layout),但禁止修改其他需求的 prototypes/* 目录
  • 目录名必须精确等于 {SPEC_NUMBER}-{SHORT_NAME}(禁止手写或另起别名)

1) 从 prototype.md 生成页面任务清单(不落盘)

prototype.md/页面/弹窗清单 为唯一页面来源(SSOT):

  • 每个 P-xxx 至少 1 个任务条目(可再细分)
  • 每个条目必须包含:
    • 页面路由/入口、页面目标
    • 主要控件/字段与默认值
    • 关键状态(正常/加载/空/错误/无权限)与提示文案要点
    • 与任务流节点(T-xxx)及 AC 的映射(引用 prototype.md 位置)

禁止:为“看起来更完整”而新增登录页/设置页/通用布局页等未在 prototype.md 声明的页面。需要新增页面 → 回流 R3 更新 prototype.md 后再做 R4。

2) 先搭骨架(必须先跑通)

先完成:

  • 所有页面/弹窗的路由或入口占位
  • 导航入口与关键跳转链路(至少覆盖核心任务流主链路)

此阶段允许:

  • 仅用静态/Mock 数据渲染
  • 仅实现关键按钮与跳转(字段/校验可后补)

3) 再补细节(按优先级)

按“核心主链路优先”补齐:

  • 字段与校验(含错误提示要点)
  • 状态与异常分支(加载/空/失败/无权限)
  • 交互细节(取消/返回/二次确认/恢复路径)

数据依赖未就绪时:

  • 用 Mock 数据/Mock API 让交互可跑
  • 把“真实数据接入”作为明确替换点(避免把 Mock 当最终实现)

4) 运行与冒烟(完成检查)

最小完成标准(缺一不可):

  • Demo 工程可启动
  • 可导航到 OUTPUT_DIR 的页面集合
  • 关键链路可走通(至少覆盖 prototype.md 的核心任务流主链路)

完成后:立即调用 using-aisdlc 路由下一步(通常进入走查/回流,或继续后续阶段)。

完成后输出与自动路由(必须执行)

Demo 落盘至 {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/ 后,必须完成以下动作(按顺序,不可省略):

  1. 输出 ROUTER_SUMMARY(YAML 形态,供 Router 决策):
ROUTER_SUMMARY:
  stage: R4
  artifacts:
    - "{DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/"
  needs_human_review: false
  blocked: false
  block_reason: ""
  notes: "软检查点:Demo 建议走查;如不触发硬中断 Router 可继续自动推进"
  1. 立即执行 using-aisdlc:将上述 ROUTER_SUMMARY 作为路由输入传递给 using-aisdlc,由 Router 判定下一步并自动推进(无需等待用户说「继续」)。

    • 若 Router 判定可自动续跑:在同一轮对话内继续执行下一步 worker skill(如 D0、I1 等)
    • 若 Router 触发硬中断:停下并输出阻断原因、需要的输入、候选下一步
  2. 对话输出:在调用 using-aisdlc 前,可简短说明「本阶段产物已落盘,正在调用 using-aisdlc 路由下一步。」

Quick reference(高频规则速查)

  • 必须
    • 先执行 spec-context 获取上下文,只用其输出的 FEATURE_DIR/REPO_ROOT/SPEC_NUMBER/SHORT_NAME
    • 必须存在 {FEATURE_DIR}/requirements/prototype.md
    • 页面清单只来自 prototype.md(不加页)
    • Demo 根目录找不到/不可运行 → 立即停止并要求 DEMO_PROJECT_ROOT
    • 需求实现写在 {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/;Demo 根工程只做最小粘合改动(路由/入口)
  • 禁止
    • 在 main(或非 {num}-{short-name} 分支)上硬做 R4
    • 用“先做占位 Demo”替代缺失的 prototype.md
    • 未找到 Demo 工程根目录时擅自 npm create vite@latest / npx create-next-app 初始化新工程
    • 自创页面/路由并声称“demo 常见”

红旗清单(出现任一条:停止并纠正)

  • 没跑 spec-context 就开始找/写 requirements/*.md 或 demo 目录
  • {FEATURE_DIR}/requirements/prototype.md 不存在,却仍要继续
  • Demo 根目录不存在/不可运行,却仍要“先初始化一个 Vite 工程”
  • 在 Demo 里新增 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 根目录时如何正确停止)

当未提供 DEMO_PROJECT_ROOT 且自动查找失败时,应当输出类似结论:

  • 阻断原因:当前仓库未发现可运行的 Demo 工程根目录(缺 demo/ 或缺 package.json/启动脚本)
  • 需要用户提供:DEMO_PROJECT_ROOT(例如 E:\\path\\to\\demo),并说明其必须可启动
  • 下一步:拿到 DEMO_PROJECT_ROOT 后,在 {DEMO_PROJECT_ROOT}/prototypes/{SPEC_NUMBER}-{SHORT_NAME}/ 生成 Demo

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

spec-product-prd

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

spec-product-prototype

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

subagent-driven-development

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

spec-init

No summary provided by upstream source.

Repository SourceNeeds Review
spec-product-demo | V50.AI