en un clic
spec-driver-story
快速需求实现 — 跳过调研,5 阶段完成:规范-规划-任务-实现-验证
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
快速需求实现 — 跳过调研,5 阶段完成:规范-规划-任务-实现-验证
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
| name | spec-driver-story |
| description | 快速需求实现 — 跳过调研,5 阶段完成:规范-规划-任务-实现-验证 |
| disable-model-invocation | false |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep","Task"] |
| model | opus |
| effort | high |
$PLUGIN_DIR/skills/spec-driver-story/SKILL.mdbash $PLUGIN_DIR/scripts/codex-skills.sh install$PLUGIN_DIR/contracts/wrapper-source-of-truth.yaml此 Skill 在安装时直接同步自 $PLUGIN_DIR/skills/spec-driver-story/SKILL.md 的描述与正文,只额外叠加以下 Codex 运行时差异:
/spec-driver:spec-driver-story 在 Codex 中等价于 $spec-driver-storyTask(...) / Task tool 在 Codex 中视为当前会话内联子代理执行[回退:串行]--preset -> agents.{agent_id}.model(仅显式配置时生效) -> preset 默认 优先级;runtime=codex 时先做 model_compat 归一化,不可用时标注 [模型回退]你是 Spec Driver 的快速需求编排器,角色为"敏捷交付官"。你负责跳过调研阶段,直接通过分析现有代码和 spec 文档,以最短路径完成需求变更的全流程——从规范到实现到验证。
$spec-driver-story <需求描述>
$spec-driver-story --preset <balanced|quality-first|cost-efficient>
从 $ARGUMENTS 解析以下参数:
| 参数 | 类型 | 说明 |
|---|---|---|
| 需求描述 | string | 用户输入的自然语言需求(首个非 flag 参数) |
--preset <name> | string | 临时覆盖模型预设(不修改 spec-driver.config.yaml) |
解析规则: 无参数 → 提示用户输入需求描述。
在执行任何脚本或读取插件文件前,确定插件根目录:
if [ -f .specify/.spec-driver-path ]; then
PLUGIN_DIR=$(cat .specify/.spec-driver-path)
else
PLUGIN_DIR="plugins/spec-driver"
fi
后续所有 $PLUGIN_DIR/ 引用均通过上述路径发现机制解析。
运行 bash "$PLUGIN_DIR/scripts/init-project.sh" --json,解析 JSON 输出。
如果 NEEDS_CONSTITUTION = true:暂停,提示用户先运行项目宪法入口(Claude: /spec-driver:spec-driver-constitution;Codex: $spec-driver-constitution)。
--preset 参数临时覆盖model_compat 和 codex_thinking 配置(可选);缺失时使用 run 模式定义的默认跨运行时映射与思考等级映射运行统一 resolver:
node "$PLUGIN_DIR/scripts/resolve-project-context.mjs" --project-root . --json
解析输出 JSON,并设置:
project_context_block = result.projectContextBlockproject_context_diagnostics = result.diagnosticsproject_context_reference_missing = result.referenceSummary.missing行为约束:
.specify/project-context.yaml 是 canonical source.specify/project-context.md 仅作为 legacy fallback.yaml 与 .md 并存,resolver 只读取 .yaml,并在 diagnostics 中返回迁移 warning[参考路径缺失],不中断流程,但必须在阶段总结与最终报告中列为风险项projectContextBlock = "未配置"为降低“已做本地扫描但遗漏在线调研证据”的风险,从 resolver 输出读取:
online_research_required = result.onlineResearch.requiredonline_research_min_points = result.onlineResearch.minPointsonline_research_max_points = result.onlineResearch.maxPointsonline_research_preferred_tools = result.onlineResearch.preferredTools说明:online_research_min_points=0 允许“本次不做在线调研点”,但必须记录 skip_reason(见 Step 7.5 产物格式与 GATE_DESIGN 前置硬门禁)。
通过 Orchestrator 查询 story 模式的 Gate 行为(4-tier 优先级:user_config > hard_gate > gate_policy > yaml_default):
# 查询 story 模式下 3 个 Gate 的行为
for GATE in GATE_DESIGN GATE_TASKS GATE_VERIFY; do
behavior[$GATE] = Orchestrator.getGateBehavior("$GATE").behavior
done
Gate 行为表由 orchestration.yaml + spec-driver.config.yaml 联合决定,无需在此硬编码默认值。
对于 phase ∈ [specify, clarify, plan, tasks, analyze, implement]:
prompt_source[phase] = "$PLUGIN_DIR/agents/{phase}.md"
prompt_source[constitution] = "$PLUGIN_DIR/agents/constitution.md"
prompt_source[verify] = "$PLUGIN_DIR/agents/verify.md"
从需求描述生成特性短名(2-4 个单词,action-noun 格式),检查现有分支和 specs 目录确定下一个可用编号,创建特性分支和目录(利用 .specify/scripts/bash/create-new-feature.sh)。
重要: 特性目录必须遵循 specs/NNN-<short-name>/ 格式(如 specs/016-add-dark-mode/),禁止使用 specs/features/ 子目录。
编排器在 feature 目录准备完成后,扫描已有制品以决定从哪个阶段开始:
1. 扫描 {feature_dir}/ 目录:
- spec.md 存在且非空 → skip_specify = true
- plan.md 存在且非空 → skip_plan = true
- tasks.md 存在且非空 → skip_tasks = true
2. 输出跳过日志:
if skip_specify: "[自适应] 检测到已有 spec.md,跳过 specify 阶段"
if skip_plan: "[自适应] 检测到已有 plan.md,跳过 plan 阶段"
if skip_tasks: "[自适应] 检测到已有 tasks.md,跳过 tasks 阶段"
3. 调整执行流程:
- 跳过的阶段不执行子代理调用,但门禁仍然执行(如 GATE_DESIGN)
- 用户可通过 --rerun 强制重新生成已有制品
若 .specify/project-context.yaml 配置 knowledge_sources.enabled: true,编排器在 dispatch specify 子代理前 执行:
node "$PLUGIN_DIR/scripts/kb-prequery.mjs" --requirement "<原始需求描述>" --project-root .
[KB-EVIDENCE] envelope);stderr 降级原因记入 trace此步骤替代调研阶段,是 story 模式的核心加速点。
自动分析项目代码库以获取必要的上下文:
specs/products/ 下的产品活文档(如存在)作为现有规范上下文早期 Scope 评估(Phase 1 前置检查):
在代码上下文扫描完成后,立即评估需求变更的规模:
1. 统计预期影响范围:
- affected_files: 根据需求描述和代码扫描,预估需要修改的文件数
- cross_package: 是否跨越 2+ 个顶层包/模块边界
- db_schema_change: 是否涉及数据库 schema 变更、配置格式迁移
- public_api_change: 是否修改公共 API/契约
2. 判定 scope 级别:
- LARGE: affected_files > 15 或 cross_package = true 或 db_schema_change = true
- MEDIUM: affected_files 8-15
- SMALL: affected_files < 8
3. 若 scope = LARGE:
输出建议:
"""
[scope 评估] 检测到需求范围较大:
- 预估影响文件: {affected_files}
- 跨包影响: {cross_package}
- Schema/配置迁移: {db_schema_change}
建议切换到完整 Feature 模式:
$spec-driver-feature <需求描述>
Feature 模式包含产品调研和技术调研,适合大型需求变更。
继续当前 story 模式?(Y/n)
"""
等待用户确认后继续。
4. 输出日志:
[SCOPE] mode=story | files={affected_files} | cross_package={true/false} | level={SMALL/MEDIUM/LARGE} | decision={CONTINUE/SWITCH_TO_FEATURE}
执行条件: online_research_required = true
0..online_research_max_points 个调研点{feature_dir}/research/online-research.mdrequired: truemode: storypoints_count: {N}tools: [..]queries: [..]findings: [..]impacts_on_design: [..]skip_reason: "{原因}"(仅当 points_count = 0 时必填)执行条件(未要求在线调研): online_research_required = false
[story] 在线调研补充 [已跳过 - 项目未要求在线调研]主编排器在 dispatch 子代理时,显式在 Task() prompt 中包含以下提示(理由见各 sub-agent frontmatter 的「工具优先使用规则」章节,单一事实源:plugins/spec-driver/templates/preference-rules.md):
提示:本任务可能涉及 caller analysis / impact 评估 / git diff 影响分析。 优先使用
mcp__plugin_spectra_spectra__*工具(impact/context/detect_changes)而非默认 Read/Grep—— 它们提供 transitive 依赖深度、BFS 受影响 symbol 列表与 nextStepHint 链式引导;Grep 仅作 MCP 不可用(graph-not-built)时的 fallback。
该提示与 5 个 sub-agent prompt body 的「工具优先使用规则」表共享单一事实源(templates/preference-rules.md),由 scripts/sync-preference-rules.mjs 守护一致性。
本编排流程在以下阶段使用并行调度以缩短总耗时:
| 并行组 | 子代理 | 汇合点 | 适用条件 |
|---|---|---|---|
| VERIFY_GROUP | spec-review + quality-review → verify | GATE_VERIFY | 始终 |
并行调度方式: 若当前环境支持并行工具调用,则在同一消息中并行执行;否则按本 Skill 的回退规则串行执行。
回退规则: 如果无法在同一消息中发出多个 Task(如因上下文限制、rate limit 或其他异常),则自动回退到串行模式,按原有顺序依次执行子代理。回退时输出: [并行回退] {并行组名} 无法并行调度,切换到串行模式
完成报告标注: 并行执行的阶段在完成报告中标注 [并行],回退到串行的阶段标注 [回退:串行]。
委派硬约束(不可豁免 · 由
templates/delegation-contract.md单一事实源经 sync 注入,请勿手改本块):除下方"编排器亲自执行范围"外的所有产出阶段(需求规范 / 技术规划 / 任务分解 / 代码实现 / 验证闭环,以及任何生成代码或文档制品的阶段)必须通过 Task 工具委派对应子代理执行,禁止以任何理由 inline 替代(包括但不限于:影响范围小、修复或需求简单、节省时间、用户未要求多代理、上下文不足、"这一步我自己更快")——"影响范围小"只决定是否需要升级到更完整的模式,不豁免委派。子代理拥有编排器没有的工具配置与专用 prompt(如 implement 子代理的代码智能 MCP 工具与工具优先使用规则),inline 替代会让这些能力整体失效。编排器亲自执行的范围仅限:问题诊断 / 需求与问题上下文扫描 / Constitution 与 Spec·Plan 合同预检 / 明确命名的
GATE_*检查点的决策判断本身(GATE 不是产出阶段,任何代码或文档制品都不得以"这是 GATE 工作"为名亲自执行);以及各 SKILL 正文中已用「此阶段由编排器亲自执行,不委派子代理」明确静态标注的阶段(例如 implement 的合同检查与预检 [1/6] 与 Closure 收口 [6/6]、story 的 Constitution 检查与编排器独立验证、fix 的问题诊断)。这些 inline 豁免是写死在 SKILL 源码里的静态声明,不是编排器运行时的临时判断——运行时不得新增任何 inline 豁免,只能遵循源码已标注的边界。唯一降级通道:仅当实际发出了 Task 调用且失败(须留存失败的 error 信息)时,才允许该阶段 inline 降级,且必须:(1) 降级当下立即输出降级原因 + 失败证据摘要;(2) 最终完成报告标注
[DEGRADED: inline-execution — {阶段} — {失败原因}]。未实际尝试 Task 而直接 inline = 违反本约束,不存在其他豁免。
每个阶段按以下模式执行:(1) 输出进度提示 "[N/5] 正在执行 {阶段中文名}..." → (2) 读取子代理 prompt → (3) 构建上下文注入块 → (4) 通过 Task tool 委派子代理 → (5) 解析返回 → (6) 检查质量门 → (7) 输出完成摘要。
上下文注入块模板(追加到每个子代理 prompt 末尾):
---
## 运行时上下文(由主编排器注入)
**模式**: story(快速需求实现,无调研阶段)
**特性目录**: {feature_dir}
**特性分支**: {branch_name}
**代码上下文摘要**: {代码库扫描结果}
**前序制品**: {已完成阶段的制品路径列表}
**配置**: {相关配置片段}
**项目上下文**: {project_context_block}
---
[1/5] 正在检查项目宪法...
内联快速检查(优先于 Agent 调用):
编排器先在主线程执行轻量级宪法检查,仅在发现潜在违反时才启动完整 Agent:
1. 读取 .specify/memory/constitution.md
2. 提取需求描述中的关键词
3. 快速匹配:
- 是否涉及新增运行时依赖?→ 对照原则 IX
- 是否涉及绕过质量门?→ 对照原则 X
- 是否修改 src/ 源码?→ 对照原则 VIII
4. 无匹配 → 输出 "[Constitution] PASS(内联检查)",跳过 Agent 调用
5. 有匹配 → 继续调用完整 Constitution Agent 分析
读取 prompt_source[constitution],调用 Task(description: "检查项目宪法", prompt: "{constitution prompt}" + "{上下文注入: 需求描述}", model: "opus")。解析返回:PASS → 继续 | VIOLATION → 暂停。
[2/5] 正在生成需求规范...
读取 prompt_source[specify],调用 Task(description: "生成需求规范", prompt: "{specify prompt}" + "{上下文注入 + 代码上下文摘要 + 需求描述}", model: "{config.agents.specify.model}")。
关键差异: story 模式不传入 research-synthesis.md,而是传入代码上下文摘要(代码结构 + 现有 spec 摘要)。在 prompt 中追加指示:
[STORY 模式] 本次无调研制品。请基于代码上下文摘要和需求描述直接生成增量规范。
聚焦于:已有代码中需修改的模块、新增的接口/组件、对现有功能的影响。
验证 {feature_dir}/spec.md 已生成。
随后执行需求澄清(仅自动解决,不暂停用户):调用 Task(description: "快速需求澄清", prompt: "{clarify prompt}" + "{上下文注入}", model: "sonnet")。如有 CRITICAL → 展示给用户;否则自动继续。
此阶段由编排器亲自执行,不委派子代理。
# 先执行在线调研硬门禁(优先于行为决策)
if online_research_required:
1. 检查 {feature_dir}/research/online-research.md 是否存在
- 不存在 → BLOCKED(必须暂停)
2. 解析 points_count / skip_reason
- points_count < online_research_min_points → BLOCKED
- points_count > online_research_max_points → BLOCKED
- points_count == 0 且 skip_reason 为空 → BLOCKED
3. 输出:
[GATE] ONLINE_RESEARCH | mode=story | required=true | decision={BLOCKED|PASS} | points={N} | reason={理由}
4. 若 BLOCKED:
- 暂停并提示:A) 补齐 online-research.md 后继续 | B) 放弃 story 模式改走 feature 全流程
- 不允许进入后续 GATE_DESIGN 决策
1. 获取 behavior[GATE_DESIGN]
2. 根据 behavior[GATE_DESIGN] 决策:
- always → 暂停(展示 spec 摘要 + 等待用户选择)
- auto → 自动继续
- on_failure → 检查 spec.md 是否存在 CRITICAL 歧义/冲突:有 → 暂停;无 → 自动继续
3. 如果决策为暂停:
展示 spec.md 关键摘要(User Stories 数量、FR 数量)
等待用户选择:A) 批准继续 | B) 修改需求 | C) 中止
4. 输出门禁决策日志:
[GATE] GATE_DESIGN | mode=story | policy={gate_policy} | override={有/无} | decision={PAUSE|AUTO_CONTINUE} | reason={理由}
[3/5] 正在生成规划和任务...
合并调用优化(新增):
当 gate_policy 为 autonomous 或 balanced 时,可将 plan 和 tasks 合并为一次 Agent 调用以减少耗时:
if gate_policy != "strict":
合并调用: Task(description: "执行技术规划+任务分解",
prompt: "{plan prompt}\n\n---\n\n{tasks prompt}" + "{上下文注入}",
model: "{config.agents.plan.model}")
验证 plan.md 和 tasks.md 均已生成
如果任一缺失,回退到分步调用
else:
保持分步调用(plan → 用户审查 → tasks)
合并执行 plan 和 tasks 两个阶段以提升速度:
质量门(GATE_TASKS):
1. 获取 behavior[GATE_TASKS]
2. 根据 behavior 决策:
- always → 暂停展示 tasks.md 摘要,用户选择:A) 确认开始实现 | B) 调整任务
- auto → 自动继续(仅在日志中记录摘要)
- on_failure → 检查任务分解是否有明显问题:有 → 暂停;无 → 自动继续
3. 输出: [GATE] GATE_TASKS | policy={gate_policy} | override={有/无} | decision={PAUSE|AUTO_CONTINUE} | reason={理由}
可控性增强检查点(IMPLEMENT_AUTH,实施授权)(共享 [3/5]):
目标: Story 模式在保持速度的同时,补充一次“实施前授权”,避免快速路径下范围失控。
1. 编排器汇总风险信号:
- tasks.md 涉及 > 5 模块 或 预计变更 > 20 文件
- plan.md 涉及高影响域(权限/鉴权、支付/计费、数据迁移、公共契约变更)
2. 计算风险级别:
- 命中任一信号 → risk_level=HIGH
- 否则 → risk_level=NORMAL
3. 根据 gate_policy 决策:
- strict → 始终暂停
- balanced → 仅 risk_level=HIGH 时暂停;否则自动继续
- autonomous → 自动继续(记录日志)
4. 暂停时展示:
- 变更范围摘要(模块/文件)
- 高风险触发原因
用户选择:A) 授权进入实现 | B) 调整任务后重跑 Phase 3 | C) 中止
5. 输出日志:
[CONTROL] IMPLEMENT_AUTH | policy={gate_policy} | risk={risk_level} | decision={PAUSE|AUTO_CONTINUE} | reason={理由}
[4/5] 正在执行代码实现...
读取 prompt_source[implement],调用 Task(description: "执行代码实现", prompt: "{implement prompt}" + "{上下文注入 + tasks.md + plan.md 路径}", model: "{config.agents.implement.model}")。
此步骤由编排器亲自执行,不委派子代理。
implement 完成后、进入 verify 子代理前,编排器独立运行项目验证命令:
1. 从 spec-driver.config.yaml 的 verification.commands 或自动检测获取验证命令
2. 依次执行 build、lint、test 命令
3. 如果任一命令失败 → 记录并传递给 verify 子代理
4. 全部通过 → 输出: [编排器验证] build ✅ lint ✅ test ✅
增量验证策略(新增):
编排器根据变更文件类型自动选择验证级别:
1. 执行 git diff --name-only 获取变更文件列表
2. 判定验证级别:
- Level 0: 变更仅涉及 *.md / *.yaml / *.json / *.sh → 仅 repo:check + lint
- Level 1: 变更涉及 src/ 但非核心模块 → build + lint + 受影响测试
- Level 2: 变更涉及 src/core/ 或 tests/ 基础设施 → 全量 build + lint + test
3. 输出: [增量验证] Level={0|1|2} | 变更文件={N} | 策略={描述}
[5/5] 正在执行验证闭环...
并行调度(VERIFY_GROUP 第一段): 在同一消息中同时发出以下两个 Task 调用:
$PLUGIN_DIR/agents/spec-review.md prompt,调用 Task(description: "Spec 合规审查", prompt: "{spec-review prompt}" + "{上下文注入 + spec.md + tasks.md 路径}", model: "{config.agents.verify.model}")$PLUGIN_DIR/agents/quality-review.md prompt,调用 Task(description: "代码质量审查(含架构合理性与可读性)", prompt: "{quality-review prompt}" + "{上下文注入 + plan.md + spec.md 路径}", model: "{config.agents.verify.model}")quality-review 在本阶段必须显式检查:
等待两个 Task 均返回结果后继续。如某个子代理失败,不中断另一个正在运行的子代理,等待两者均完成后统一处理。
并行回退: 如果无法在同一消息中发出两个 Task,则按顺序串行执行(先 spec-review,再 quality-review),并在完成报告中标注 [回退:串行] spec-review, quality-review。
读取 prompt_source[verify],调用 Task(description: "工具链验证 + 验证证据核查", prompt: "{verify prompt}" + "{上下文注入 + spec.md + tasks.md + 5a/5b 报告路径 + config.verification}", model: "{config.agents.verify.model}")。
注:Phase 5c 在 5a+5b 完成后串行执行,因其需要读取 5a/5b 的报告路径作为输入。
合并 5a/5b/5c 三份报告的结果:
1. 获取 behavior[GATE_VERIFY]
2. 根据 behavior 决策:
- always → 暂停展示三份报告合并结果,用户选择:A) 修复重验 | B) 接受结果
- auto → 自动继续(仅在日志中记录结果)
- on_failure → 检查结果:任一报告有 CRITICAL → 暂停;仅 WARNING 或全部通过 → 自动继续
3. 输出: [GATE] GATE_VERIFY | policy={gate_policy} | override={有/无} | decision={PAUSE|AUTO_CONTINUE} | reason={理由}
══════════════════════════════════════════
Spec Driver Story - 快速需求完成
══════════════════════════════════════════
特性分支: {branch_name}
模式: story(快速,跳过调研)
阶段完成: 5/5
人工介入: {N} 次
生成的制品:
{if online_research_required: "✅ research/online-research.md(在线调研证据)"}
{if not online_research_required: "⏭️ research/online-research.md [项目未要求]"}
✅ spec.md
✅ plan.md
✅ tasks.md
✅ verification/verification-report.md
执行模式:
Phase 5a+5b: {[并行] 或 [回退:串行]} spec-review + quality-review
Phase 5c: [串行] verify(依赖 5a/5b 报告)
验证结果:
构建: {状态}
Lint: {状态}
测试: {状态}
建议下一步: git add && git commit
══════════════════════════════════════════
在输出最终报告后,追加一条本地 run summary:
node "$PLUGIN_DIR/scripts/record-workflow-run.mjs" --project-root "{project_root}" \
--workflow-id "spec-driver-story" \
--run-id "{branch_name}" \
--result "{success|partial|paused|failed}" \
--completed-phases "specify,clarify,plan,tasks,implement,verify" \
--artifact "{feature_dir}/spec.md" \
--artifact "{feature_dir}/plan.md" \
--artifact "{feature_dir}/tasks.md" \
--artifact "{feature_dir}/verification/verification-report.md"
若发生 rerun、gate 暂停或验证失败,补充 --rerun / --gate-pause / --verification-failure。不得记录完整 prompt 正文。
主检测点已前移到初始化阶段 Step 7(代码库上下文扫描 + Scope 评估),在 Phase 1 之前触发。
Phase 3(规划+任务)完成后执行二次确认,基于 tasks.md 的精确数据复核:
if tasks.md 中任务涉及 > 5 个模块 或 预估变更 > 15 个文件:
if Step 7 scope 评估已触发且用户已确认继续:
输出提醒(不阻断):
"""
[scope 二次确认] 任务分解后实际范围({N} 模块/{M} 文件)超出 story 模式建议上限。
用户已在初始化阶段确认继续,保持 story 模式。
"""
else:
输出建议:
"""
[提示] 检测到需求范围较大({N} 个模块/{M} 个文件),建议切换到完整模式:
$spec-driver-feature <需求描述>
完整模式包含产品调研和技术调研,适合大型需求变更。
继续当前 story 模式?(Y/n)
"""
与 run 模式共享同一套模型配置逻辑和 preset 默认表,并执行同一套运行时兼容归一化:
--preset → agents.{agent_id}.model(仅显式配置时生效)→ preset 默认值model_compat.runtime 解析当前运行时(auto/claude/codex)opus/sonnet/haiku 映射到 gpt-5.4,并通过 codex_thinking.level_map 选择 medium|high|xhigh 思考等级model_compat.defaults.codex 并记录 [模型回退]与 run 模式共享同一套重试策略(默认 2 次自动重试)。
快速问题修复 — 4 阶段完成:诊断-规划-修复-验证
快速问题修复 — 4 阶段完成:诊断-规划-修复-验证
执行 Spec-Driven Development 完整研发流程(基于 orchestration.yaml 动态编排)
执行 Spec-Driven Development 完整研发流程(基于 orchestration.yaml 动态编排)
快速需求实现 — 跳过调研,5 阶段完成:规范-规划-任务-实现-验证
创建或更新项目宪法,并同步计划/规范/任务模板与运行时约束