Community生產力與協作github.com

Converge - QA後規格回寫

當任務達到 QA_PASSED 狀態後,將確認的實現偏差折返寫入技術規格,封存任務包並關閉變更提案。

Converge - QA後規格回寫 是什麼?

這個技能實現了開發生命週期中的「收斂 (Converge)」環節,是連接 QA 驗證通過與規格更新的關鍵橋樑。當任務包的 QA 驗證結果為 `QA_PASSED`,且開發工作區 (`02-dev-workspace.md`) 中已記錄了凍結的實現偏差表後,此技能會將這些偏差折返寫入主規格文件 `.specs/02-tech-spec.md`,並在規格中新增一個帶有時間戳記的收斂區塊,確保完全的歸屬與可追溯性。支援手動執行與透過 Python 輔助腳本 (`converge.py`) 自動化處理,輔助腳本提供 `check`、`apply` 和 `verify` 三個步驟。此技能明確不會授予任何寫入權限,其合約基於文件中嵌入的標記(如 `<!-- converged: <task-id> sha256:<hash> -->`)與 `04-process.md` 中的 `CONVERGED` 巨集狀態。拒絕條件包括 QA 未通過、存在未完成的修正、偏差記錄空白、規格漂移或存檔衝突。此技能適用於 Claude Code、Cursor、Codex 等實作代理工具的開發工作流程。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/formal-you/agent-skills-suite/tree/HEAD/.agents/skills/converge

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

預覽

來自技能 README

Converge - QA後規格回寫 preview

說明文件

Converge - QA後規格回寫 是做什麼的?

關閉執行迴圈:通過 QA 的任務將成為動態規格的一部分。此技能代表了生命週期中的 ConvergeTool 角色。它定義了流程;儲存庫代理規則仍擁有權限,且此技能絕不會授予額外的存取權限。

管線位置:dev -> qa -> converge -> 已封存任務包 + 已更新規格

使用時機

  • 任務包的 03-qa-verification.md 記錄了已勾選的 QA_PASSED 判決。
  • 02-dev-workspace.md 包含凍結的實現偏差表(列或明確的 None 列)。
  • 任務的確認行為必須被折返寫入 .specs/02-tech-spec.md,任務包被封存,且原始變更提案被關閉。

請勿使用時機

  • 實現或 QA 仍在執行中,交接標記未勾選,或 REWORK_REQUIRED 處於啟用狀態 – 請等待穩定的 QA_PASSED 判決。
  • 偏差記錄為空白或遺失 – 請將任務退回給 Dev,而不是進行猜測。
  • 您需要自行發明規格內容或重寫現有規格文字;那是規劃變更,而非收斂。

輸入

  • tasks/<task-id>/01-contract.md - 標題、可追溯性錨點、可選的 change_id。
  • tasks/<task-id>/02-dev-workspace.md - 實現偏差表(凍結格式)。
  • tasks/<task-id>/03-qa-verification.md - 已勾選的 QA_PASSED 判決與證據。
  • tasks/<task-id>/04-process.md - 衍生的狀態卡與事件日誌。
  • .specs/02-tech-spec.md - 動態技術規格文件。
  • .specs/changes/<change-id>/proposal.md - 原始變更提案(若存在)。

輸出

  • 規格中 Converged changes 區段下的每個任務對應一條帶有日期和屬主的條目。
  • 每個任務的收斂標記:<!-- converged: <task-id> sha256:<hash> -->。
  • 04-process.md 中 macro_status 設定為 "CONVERGED",並新增一條 TASK_CONVERGED 事件行(參與者 ConvergeTool)。
  • 任務包被移動(從不刪除)至 tasks/archive/<task-id>/。
  • 若提案存在,則新增 .specs/changes/<change-id>/convergence.md 並將提案狀態設為 archived。

檢查 -> 套用 -> 驗證

  1. 檢查。 在寫入任何內容前對任務包進行分類: python .agents/skills/converge/scripts/converge.py check --tasks-dir ./tasks --json 僅當 QA 已通過、無進行中的修正、偏差表至少有一列或一個明確的 None 列,且規格尚未帶有該任務標記時,任務包才準備好進行收斂。
  2. 套用。 收斂一個任務包: python .agents/skills/converge/scripts/converge.py apply --task tasks/<task-id> 首先使用 --dry-run 檢查預計的寫入操作。若任務包未準備好收斂,輔助腳本會以退出碼 1 拒絕;若存在封存目標目錄且未使用 --force,也會拒絕。
  3. 驗證。 重新執行 check,確認標記存在、04-process.md 顯示 CONVERGED、任務包已被封存,且 --spec-sha256 與預期的 CI 值相符: python .agents/skills/converge/scripts/converge.py --spec .specs/02-tech-spec.md --spec-sha256

手動替代方案(無 Python)

當輔助腳本不可用時,請手動執行相同步驟,並確保標記完全精確:

  1. 確認 03 中的 QA_PASSED 已勾選,且無 REWORK_REQUIRED 處於啟用狀態。
  2. 讀取 02 中的偏差行;拒絕空白記錄。
  3. 在規格的 Converged changes 區段附加(而非編輯)一條條目:一個 ### <task-id> 標題、偏差表以及 <!-- converged: <task-id> sha256:<hash> --> 標記。使用任何 SHA-256 工具根據正規化的任務 ID 和行來計算雜湊值。
  4. 將 04 中的 macro_status 設定為 CONVERGED,並附加 TASK_CONVERGED / ConvergeTool 行。
  5. 移動(永遠不要刪除)任務包至 tasks/archive/<task-id>/;若存在變更提案,則封存提案並撰寫 convergence.md。
  6. 重新執行驗證步驟並記錄證據。

拒絕條件

當以下任一條件成立時,停止收斂並回報,而非進行收斂:

  • QA 未通過 - 03 沒有已勾選的 QA_PASSED,或 REWORK_REQUIRED 仍處於啟用狀態。
  • 未解決的修正 - 重試證據顯示任務正在進行修正;請等待新的判決。
  • 空白偏差記錄 - 實現偏差表遺失,或既無 DEV 行也無明確的 None 行。
  • 規格漂移 - modify/remove 偏差指向規格中不存在的 #sec-* 錨點;規格與偏差記錄不一致。在 CI 中使用 --strict 執行 check/apply 可將此警告升級為拒絕。
  • 封存衝突 - tasks/archive/<task-id>/ 已存在,且未提供 --force 參數。

結構性偏差(新模組、邊界變更、新的 ADR 層級決策)必須升級給 spec-generator;它們絕不能默默地被收斂。

歷史記錄與歸屬

收斂絕不重寫歷史記錄:它附加一個帶有日期和屬主的區段,而不是編輯現有的規格文字。現有條目維持位元組級別的穩定,且每個條目都會指明來源任務、QA 判決和 ConvergeTool 參與者。切勿為了適合新任務而編輯舊的收斂條目;應新增一個條目並記錄衝突。

參考資料

  • references/convergence-protocol.md - 狀態機、誰寫什麼、封存佈局、冪等性標記、衝突規則與結構性升級。
  • 角色邊界:references/role-boundaries.md — 寫入範圍、不變量與誠實執行模型(已打包;無需外部檔案)。
  • 任務包格式與角色生命週期:task-decomposition 技能(若已安裝)。
  • 交接輸入:dev 技能;判決輸入:qa 技能。
  • 儲存庫規則:若採用的專案有定義,請閱讀 AGENTS.md 和任何角色規則檔案;它們可能增加要求,但此技能不強制要求。

誠實限制

此技能不授予寫入權限,也無法強制角色隔離。若儲存庫設有 CI(例如基於 Git 的角色稽核)或分支保護,則該層是權威層。打包的輔助腳本是可選的確定性輔助工具;標記和書面證據才是合約。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

formal-you/agent-skills-suite

Run a bounded brownfield change (bugfix, small feature, behavior tweak) against an existing spec or codebase: proposal -> one task bundle -> dev/QA -> converge -> archive. Use when an existing spec or codebase needs an incremental change (bugfix, small feature, behavior tweak) and a full PRD is overkill. Do not use for greenfield requirements (use prd-generator), architecture decisions (use spec-generator), or pure task slicing (use task-decomposition).

formal-you/agent-skills-suite

Implement one planned task bundle as the Dev role: read the contract, change only touch_files, run the machine-checkable DoD, fill 02-dev-workspace.md and hand off to QA. Use when a task contract exists and you are assigned implementation. Do not use for planning, task slicing, architecture, or QA verification.

formal-you/agent-skills-suite

Use on Windows for unexpected DSH sandbox access denials: workspace writes or listing fail, or an ordinarily readable path cannot be read. One bundled command inspects the path and every ancestor and repairs the ACL problems it proves in that same run. Expected confinement denials need no ACL repair.

formal-you/agent-skills-suite

Run the Gate 1 deterministic static check on task bundles before development starts and follow the Gate 2 review checklist. Use when task contracts exist under tasks/ and you need to verify blast radius, diff budget, declared-file topology, traceability anchors, spec anchor coverage, inherited ADRs, machine-checkable acceptance criteria, and DAG acyclicity. Do not use for code execution, CI pipeline construction, AST/complexity checks, or test audits (owned by quality-engineering).

相關技能