spec-implementation-plan

📁 zixun-github/aisdlc 📅 3 days ago
22
总安装量
22
周安装量
#16665
全站排名
安装命令
npx skills add https://github.com/zixun-github/aisdlc --skill spec-implementation-plan

Agent 安装分布

claude-code 22
cursor 20
opencode 8
gemini-cli 8
github-copilot 8
codex 8

Skill 文档

spec-implementation-plan(I1:实现计划 / plan.md SSOT)

概览

I1 的目标是把 {FEATURE_DIR}/requirements/* 与 {FEATURE_DIR}/design/* 转换为可直接执行的实现计划 {FEATURE_DIR}/implementation/plan.md,并将其作为唯一执行清单与状态 SSOT(checkbox 任务 + 每任务步骤 + 最小验证 + 提交点 + 审计信息)。

开始时宣布:「我正在使用 spec-implementation-plan 技能创建实现计划(plan.md SSOT)。」

何时使用 / 不使用

  • 使用时机
    • 你需要产出或更新 {FEATURE_DIR}/implementation/plan.md(I1 必做)。
    • 你准备进入 I2 执行,但当前没有“可勾选 + 可执行”的任务清单。
  • 不要用在
    • spec-context 失败、拿不到 FEATURE_DIR(此时必须停止)。
    • 输入侧 SSOT 不足:requirements/solution.md 与 requirements/prd.md 都不存在,且无法追溯范围/验收(必须在 plan.md 标注 NEEDS CLARIFICATION 并阻断进入 I2)。

门禁 / 停止(严格执行)

REQUIRED SUB-SKILL:先满足 spec-context 门禁并在对话中回显 FEATURE_DIR=...(允许 (reuse))。

$repoRoot = (git rev-parse --show-toplevel)
if ($null -ne $FEATURE_DIR -and (Test-Path $FEATURE_DIR) -and (Test-Path (Join-Path $FEATURE_DIR "requirements"))) {
  Write-Host "FEATURE_DIR=$FEATURE_DIR (reuse)"
} else {
  . (Join-Path $repoRoot "skills\spec-context\scripts\spec-common.ps1")
  $context = Get-SpecContext
  $FEATURE_DIR = $context.FEATURE_DIR
  Write-Host "FEATURE_DIR=$FEATURE_DIR"
}

立刻停止(满足其一即可):

  • 未得到 FEATURE_DIR
  • 分支/目录不确定(你发现自己想“猜 .aisdlc/specs/... 路径”)
  • requirements/solution.md 与 requirements/prd.md 均缺失,导致目标/范围/验收口径无法追溯
  • 任何关键不确定性无法在输入中证据化(必须写入 plan.md/## NEEDS CLARIFICATION,并明确“阻断进入 I2”)

输入 / 输出(落盘约定)

  • 读取(渐进式披露,最少必要)
    • 项目级(必读其索引或必要片段):project/memory/*、project/contracts/、project/adr/
    • Spec 级(按需最少读):{FEATURE_DIR}/requirements/solution.md 或 {FEATURE_DIR}/requirements/prd.md(至少其一)
    • 影响分析(强制,若有 solution.md):必须读取 {FEATURE_DIR}/requirements/solution.md#impact-analysis,提取受影响模块清单与需遵守的不变量,作为 I1 的约束输入(缺失则停止并回到 R1 补齐)
    • Spec 级(如存在且相关):{FEATURE_DIR}/design/design.md、{FEATURE_DIR}/design/research.md
  • 写入(唯一)
    • {FEATURE_DIR}/implementation/plan.md

小块任务粒度(重用 writing-plans)

每一步是一个动作(2–5 分钟),并在 plan.md 中写到“任何人照抄即可执行”:

  • 「写失败测试」(如适用)- 一步
  • 「运行确保失败」- 一步
  • 「实现让测试通过的最少代码」- 一步
  • 「运行验证确保通过」- 一步
  • 「提交」(频繁提交)- 一步

约束:I1 只写计划,不写代码;但每个任务必须声明其最小验证方式(命令 + 期望信号)。

plan.md 头部(必须)

必须以该头部开头(模板见 ./assets/plan-template.md):

# [需求名] 实现计划(SSOT)

> **必需技能:** `spec-implementation-execute`(按批次执行本计划)
> **上下文门禁:** 必须先用 `spec-context` 定位 `{FEATURE_DIR}`,失败即停止

**目标:** [一句话描述要交付什么]
**范围:** In / Out
**架构:** [2–3 句方法说明 + 关键约束]
**验收口径:** [引用 requirements/solution.md 或 requirements/prd.md 的 AC/验收点]
**影响范围:** [引用 requirements/solution.md#impact-analysis 的受影响模块清单]
**需遵守的不变量:** [从 requirements/solution.md#impact-analysis 提取的关键 API/Data 契约不变量]

---

计划正文(必须)

  • TL;DR:一句话概括计划目标与范围
  • 范围与边界:In/Out(对齐需求与设计)
  • 影响范围与约束(必填):
    • 受影响模块清单及影响类型(引用 requirements/solution.md#impact-analysis)
    • 需遵守的 API/Data 契约不变量(逐条列出,标注来源模块/锚点)
    • 跨模块影响与协调事项(基于依赖关系图/影响分析)
  • 里程碑与节奏:阶段拆分、时间预估、交付物清单
  • 依赖与资源:外部系统/团队/权限/环境/数据依赖
  • 风险与验证:风险清单、验证方式、Owner
  • 验收口径:对应 PRD/方案的关键 AC 与验收人
  • NEEDS CLARIFICATION(必须有):统一列出未消除的不确定项(未消除前不得进入 I2)

任务结构(重用 writing-plans,但加入 SSOT/审计/门禁)

plan.md 内必须包含可勾选的任务清单,作为唯一的执行清单与状态来源(- [ ]/- [x])。

每个任务必须包含:

  • 精确文件路径(创建/修改/测试)
  • 可验证验收点(可测试条件)
  • 可执行步骤(命令 + 期望输出/信号)
  • 提交点与最小审计信息(commit/pr/changed_files)

任务模板(示例骨架):

## 任务清单(SSOT)

### Task T1: [任务标题]

- [ ] **状态**:未开始 / 进行中 / 完成 / 阻塞(阻塞必须写明取证路径)

**文件:**
- 创建:`exact/path/to/new.file`
- 修改:`exact/path/to/existing.file`(可选:精确到段落/函数)
- 测试:`tests/exact/path/to/test.file`(如适用)

**验收点:**
- [可验证条件 1]
- [可验证条件 2]

**步骤 1:写失败测试(如适用)**
- 修改点:`tests/...`
- Run: `[精确命令]`
- Expected: FAIL(写出期望看到的关键失败信号)

**步骤 2:写最少实现**
- 修改点:`path/to/file`

**步骤 3:运行验证**
- Run: `[精确命令]`
- Expected: PASS(写出期望看到的关键通过信号)

**步骤 4:提交(频繁提交;commit message 必须中文)**
- Commit message: `[一句话说明 why(中文)]`
- 审计信息:`commit=<TBD>`、`pr=<TBD>`、`changed_files=<TBD>`

命令书写约定:默认面向 PowerShell;同一行多命令请用 ; 分隔(不要用 &&)。

I1-DoD(门禁:缺一不可)

  • 计划范围与 {FEATURE_DIR}/requirements/*、{FEATURE_DIR}/design/* 一致且可追溯
  • 里程碑明确且可验收(每一项有对应产物或可验证标准)
  • 依赖与风险已列出,并有最小验证/缓解动作(含 Owner)
  • 关键验收口径可追溯(至少引用 requirements/prd.md 或 requirements/solution.md)
  • 影响范围与约束已注入:plan.md 包含”影响范围与约束”段落,受影响模块与需遵守的不变量已从 requirements/solution.md#impact-analysis 提取并逐条列出
  • plan.md 内存在“任务清单(SSOT)”,且每个任务包含:文件路径、验收点、最小验证方式、提交点与审计信息
  • 任何不确定项均进入 NEEDS CLARIFICATION,且未消除前不得进入 I2

牢记(高频规则速查)

  • 始终先 spec-context 拿到 FEATURE_DIR=...,失败就停止
  • 始终写精确路径、精确命令与期望信号
  • 不要把不确定性写成已知;统一进入 NEEDS CLARIFICATION 并阻断 I2
  • DRY、YAGNI、TDD、频繁提交(计划里也要体现提交节奏)

执行交接(写完 plan.md 之后)

保存计划后,本技能不再决定“下一步/执行方式”。统一做法:

  • 宣布:{FEATURE_DIR}/implementation/plan.md 已落盘,且是实现侧唯一 SSOT
  • 提示:回到 using-aisdlc 进行下一步路由(通常路由到 I2:spec-implementation-execute,再到 Finish:finishing-development)
  • 若用户明确要求“本会话使用 subagent-driven-development 并行执行”,也应先回到 using-aisdlc 明确路由结论后再开始执行(避免出现第二个路由源)

完成后输出(供 using-aisdlc 自动推进读取)

在回答末尾追加以下两段(不要省略):

  • 「本阶段产物已落盘。请回到 using-aisdlc 进行下一步路由(如未触发人工门禁,Router 可自动续跑)。」
  • ROUTER_SUMMARY:
ROUTER_SUMMARY:
  stage: I1
  artifacts:
    - "{FEATURE_DIR}/implementation/plan.md"
  needs_human_review: true
  blocked: false
  block_reason: ""
  notes: "plan.md 建议评审后再进入 I2 执行"