Use when 一个 Spec Pack 已完成,需要把可复用资产晋升到 project SSOT(ADR/契约/ops/NFR/registry),且存在“整包复制污染 project / 跳过 spec-context / 把 merge-back 误当 git merge”的风险。
From sdlc-dev-skillsnpx claudepluginhub zixun-github/aisdlcThis skill uses the workspace's default tool permissions.
Merge-back 是 Spec Pack 生命周期的“晋升阶段”:把本次需求中会长期复用/会约束未来需求的内容晋升到 .aisdlc/project/(Project SSOT),其余内容仍留在 {FEATURE_DIR} 作为交付证据。
核心原则:Project SSOT 只沉淀 入口 + 护栏(不变量)+ 证据链;禁止把“一次性交付细节”搬到 project。
适用于:
.aisdlc/project/(ADR / API Contract / Data Contract / Ops / NFR / Registry)。{FEATURE_DIR}/implementation/plan.md 中已出现 ## Merge-back 待办清单,需要在结束前清空或留痕。不适用于:
.aisdlc/project/ 的骨架(这是 CONTEXT GAP,应先用 project-discover* 或项目初始化流程建立 project SSOT)。REQUIRED SUB-SKILL:正在执行 spec-context 获取上下文,并在对话中回显 FEATURE_DIR=...(允许 (reuse))。
失败即停止:Get-SpecContext 报错就停止,不允许“先写一版/先猜路径”。
.aisdlc/project/CONTEXT GAP: .aisdlc/project missing 并停止(禁止“随便建个目录能跑就行”)。以 {FEATURE_DIR}/implementation/plan.md 中的 ## Merge-back 待办清单 为主入口,汇总本次需要晋升的条目,并按类别分组:
.aisdlc/project/index.md).gitmodules:结合 plan.md 中声明的受影响子仓,确认哪些证据来自根项目、哪些来自子仓路径禁止:跳过
plan.md待办改用“凭记忆总结”。若时间紧,可用git diff补证据,但清单来源仍以plan.md为主;.gitmodules只提供静态子仓路径事实,不替代plan.md的需求级声明。
{FEATURE_DIR}/merge_back.md(清单与证据){FEATURE_DIR}/merge_back.md 是本次 merge-back 的需求级 SSOT:每条都必须写清楚:
.gitmodules 中的路径)若用户要求“先别改 project、后面有人手动做”:仍然必须完成 Step 1–2,并把 Step 3 的 project 晋升项标记为 Not Done + 计划(否则 merge-back 不可审计、容易永久遗漏)。
对齐 design/aisdlc.md 的默认必晋升项:
.aisdlc/project/adr/ + 索引.aisdlc/project/components/{module}.md#api-contract / #data-contract
.aisdlc/project/ops/(入口式,不重复本次发布执行细节).aisdlc/project/nfr.md(如适用).aisdlc/project/index.md(状态更新到 Merged & Archived 或团队约定状态){FEATURE_DIR}/merge_back.md 已落盘,覆盖 ADR/API/Data/Ops/NFR/Registry(适用项)。#api-contract / #data-contract)。spec-context。.aisdlc/project 不存在但你准备“先随便建一下” → 禁止(CONTEXT GAP,先建 project SSOT 骨架)。implementation/plan.md 的 Merge-back 待办 → 高概率遗漏或漂移。.gitmodules,但你完全忽略 plan.md 中记录的受影响子仓与 repo 维度审计信息 → 高概率丢失证据链| 常见借口 | 现实/反制 |
|---|---|
| “很急,先复制整包到 project,后面再整理” | 整包复制会长期污染 project;正确做法是只晋升“入口+不变量+证据链”。 |
| “用户给了 FEATURE_DIR,不用跑 spec-context” | 口头路径不可信;必须以 spec-context 输出为唯一锚点。 |
| “project 目录没有,我先建个最小的让它跑起来” | merge-back 不负责初始化 project SSOT;缺失即 CONTEXT GAP 并停止。 |
| “不看 plan.md 待办也能总结” | 待办是唯一执行期汇总入口;跳过会遗漏且不可审计。 |
merge_back.md 落盘后,必须完成以下动作(按顺序,不可省略):
ROUTER_SUMMARY:
stage: MergeBack
artifacts:
- "{FEATURE_DIR}/merge_back.md"
needs_human_review: true
blocked: false
block_reason: ""
notes: "已晋升 ADR/契约/ops/NFR/registry;Done/Not Done 与证据入口齐全。"
立即执行 using-aisdlc:将上述 ROUTER_SUMMARY 作为路由输入传递给 using-aisdlc,由 Router 判定下一步并自动推进(无需等待用户说「继续」)。
对话输出:在调用 using-aisdlc 前,可简短说明「本阶段产物已落盘,正在调用 using-aisdlc 路由下一步。」