一键导入
su-archive
在 review 通过后固化完成证据、风险和后续建议。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
在 review 通过后固化完成证据、风险和后续建议。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Fix bugs by reproducing the failure first, making the smallest correction, and proving the regression is covered. Use for bug reports, failing tests, and regressions.
Fix failing tests or CI by reading logs, identifying the smallest failing surface, making a minimal change, and rerunning targeted verification. Use when given CI logs, failing commands, or broken checks.
Scan relevant source, tests, commands, and existing project patterns before editing code. Use before non-trivial implementation, bug fixing, or refactoring when the right local pattern is unclear.
Control error handling, defaults, retries, compatibility paths, and fallback behavior. Use before adding catch blocks, defaults, shims, optional values, retries, or graceful degradation.
Prevent large-file growth and mixed-responsibility edits. Use when adding significant logic to a large file, mixed-purpose module, or file with repeated conditionals.
Implement the smallest safe repo-native code change for the requested behavior. Use for feature work, small refactors, and multi-file implementation tasks.
| name | su-archive |
| description | 在 review 通过后固化完成证据、风险和后续建议。 |
| metadata | {"short-description":"CCB 归档入口"} |
/ccb:su-archive 用于把已通过 review 的任务沉淀成可追溯历史。归档不是“结束任务”四个字,而是写清完成内容、证据、未覆盖项、风险和后续建议。
主要进入:
| 节点 | Manifest |
|---|---|
| 归档 | references/kernel/nodes/archive.node.md |
如果 review 未通过,必须回到 references/kernel/nodes/review.node.md,不得普通归档。
/ccb:su-archive task_id=<subtaskId>
/ccb:su-archive requirement_id=<requirementId>
/ccb:su-archive --reopen requirement_id=<requirementId>
/ccb:su-archive 当前已通过 review 的任务
可带 risk_accepted=true,但只有用户明确授权带风险归档时才可使用。
task_id 是子任务归档入口;requirement_id 是需求级手动归档入口,用于把已
merged 的 per-需求 worktree 清理并把 requirement finalize 为 delivered。
--reopen 是显式返工入口,用于把 merged worktree 解冻回 ready,复用同一实施分支继续改。
归档记录直接写入 plugin 域文件:
docs/05_经验沉淀/(需要沉淀经验时)docs/03_开发计划/*开发任务.mddocs/.ccb/events/journal.jsonl子任务归档不得调用 worktree merge/cleanup。归档子任务时,只写该 dev_task 终态和归档记录:
await writeTaskState({
projectRoot,
taskId,
title,
patch: {
status: "done",
current_node: "archive",
node_substate: "archived",
review_status: "passed"
},
updatedBy: "ai_session"
});
归档必须以 docs/03_开发计划/ 的 dev_task 文档为任务真相;status/current_node/node_substate/review_status 只能通过受治理写入更新。
归档子任务后,如果该子任务可能是 requirement 最后一个待归档项,只能做 requirement-wide
终态判断并调用 mergeRequirementWorktree() 进入 merged 预览暂停;不得 cleanup 或声明
delivered。需求交付状态必须等用户执行需求级手动归档。
需求级手动归档入口(/ccb:su-archive requirement_id=<id>)必须按顺序执行:
docs/.ccb/worktrees/<id>.json,确认 requirement 未
cancelled/deferred 且 worktree runtime aggregate 为 merged;若 runtime aggregate 已是 archived 且
requirement 仍未 delivered,进入 finalize-only recovery。merged 时调用 cleanupRequirementWorktree({ projectRoot, requirementId, codeWorkspace })。cleanup 按 implementation spaces 声明序逐空间执行;若返回
status: "escalated",保留已成功 archived 的空间事实并停止,不得 finalize。仅
aggregate=merged、aggregate=escalated && last_error.op=="cleanup" 或已 archived
可进入 cleanup。applyCapabilityOutcome() 声明
delivered;必须使用 dev_task_requirement_terminal evidence 和
requirement_finalize_expected_hash guard。aggregate=archived + requirement 仍非 delivered,跳过 cleanup,执行 finalize-only recovery。示例:
import { readFile } from "node:fs/promises";
import { cleanupRequirementWorktree, reopenRequirementWorktree } from "../../lib/worktree/index.mjs";
import { applyCapabilityOutcome } from "../../lib/capability-outcome/index.mjs";
import { hashContent } from "../../lib/runtime/index.mjs";
const cleanup = await cleanupRequirementWorktree({
projectRoot,
requirementId,
codeWorkspace
});
if (cleanup.status === "escalated") return cleanup;
const requirementContent = await readFile(requirementMarkdownPath, "utf8");
const requirementMarkdownHash = hashContent(requirementContent);
await applyCapabilityOutcome({
projectRoot,
capabilityId: "requirement.finalize",
outcomeType: "delivered",
subjectRef: {
subject_type: "requirement",
subject_id: requirementId,
canonical_path: requirementMarkdownPath,
base_hash: requirementMarkdownHash
},
expectedHash: requirementMarkdownHash,
evidence: [{
kind: "C",
ref: `dev-task-requirement:${requirementId}`,
check_id: "dev_task_requirement_terminal",
params: { requirement_id: requirementId }
}]
});
如果全需求 dev_task 未终态、review 未通过、hash 已变、需求已 cancelled/deferred 或 AI 判断仍有 必须处理事项,不得声明 delivered;输出拒绝原因。
reopen 入口(/ccb:su-archive --reopen requirement_id=<id>)只处理 merged→ready:
await reopenRequirementWorktree({
projectRoot,
requirementId,
codeWorkspace
});
reopenRequirementWorktree 不改 git 内容;它仅允许 aggregate=merged,并校验全部
implementation spaces 的 worktree+分支仍存在且 clean(单空间即 worktree+分支仍存在且 worktree clean)。任一空间失败时 all-or-nothing
返回 status: "escalated"、保留 runtime 不写并报告原因;成功后全部空间回到 ready,
associations 重置为 pending,requirement 保持非 delivered,后续返工继续复用实施分支。
不得调用 Console 业务写入接口改业务状态。Console 只负责展示归档投影。
归档 / merge / finalize / reopen 写完 canonical 后,best-effort 主动触发一次 Console 投影刷新(本地 Console 在跑时 POST /api/projects/<projectId>/scan),并校验投影(子任务 current_node/status、需求 status、worktree runtime status)与 canonical 一致,不要只依赖 watcher 异步跟上(WSL2 会漏文件事件);Console 不可达或投影不一致时,告知用户需手动 scan。Console UI 当前不是手动归档能力的唯一真相源。
归档前必须:
输出归档路径、完成摘要、验证证据、未覆盖风险、后续建议和是否继续下一个 DeliveryUnit。