本 SOP 唯一允許調用工具產生或修改的 artifact,只能來自下述 SOP 中明確標注 CREATE、WRITE、UPDATE 的步驟;impact matrix 僅供讀取,本 skill 不寫入。
-
解析 arguments
1.1 在 CWD SEARCH **/arguments.yml 檔案,找不到則 STOP 並對使用者輸出「我在 CWD 底下找不到 **/arguments.yml 檔案,你是否已經執行過 /aibdd-kickoff 了?」。
1.2 EXECUTE command 以 resolver 綁定本 SOP 引用的變數並對使用者輸出 resolver stdout(每行一筆 KEY=value),resolver 非 0 退出時 STOP 並對使用者輸出其 stderr;resolver 輸出含 <<NNN-plan-slug>> 借位者由 $PLAN_PACKAGE_SLUG 解析,${FEATURE_SPECS_DIR}、${TRUTH_FUNCTION_PACKAGE} 另含 <<NN-functional-module>> 借位由各 package 決策的 NN-<slug> 解析。
python3 .claude/skills/aibdd-core/scripts/cli/resolve_args.py <<'EOF'
CURRENT_PLAN_PACKAGE=${CURRENT_PLAN_PACKAGE}
FEATURE_SPECS_DIR=${FEATURE_SPECS_DIR}
IMPACT_MATRIX_YML=${IMPACT_MATRIX_YML}
PLAN_PACKAGES_DIR=${PLAN_PACKAGES_DIR}
PLAN_REPORTS_DIR=${PLAN_REPORTS_DIR}
PLAN_SPEC=${PLAN_SPEC}
PROJECT_SPEC_LANGUAGE=${PROJECT_SPEC_LANGUAGE}
TRUTH_BOUNDARY_PACKAGES_DIR=${TRUTH_BOUNDARY_PACKAGES_DIR}
TRUTH_BOUNDARY_ROOT=${TRUTH_BOUNDARY_ROOT}
TRUTH_FUNCTION_PACKAGE=${TRUTH_FUNCTION_PACKAGE}
EOF
-
解析本批次 plan package: 對話歷史已指名具體 NNN-<slug>(例:reconcile 剛校準完那個 package、使用者點名 ${PLAN_PACKAGES_DIR}/NNN-<slug>、或「繼續校正 NNN 那個 package」這類指涉),且 ASSERT ${PLAN_PACKAGES_DIR}/NNN-<slug>/ 存在於 CWD,則設 $PLAN_PACKAGE_SLUG 為該 NNN-<slug>,否則對使用者輸出 ${PLAN_PACKAGES_DIR}/*/ 全部候選 folder 並直接詢問(不使用 /clarify)要校正哪一個 plan package、設 $PLAN_PACKAGE_SLUG 為其 slug,STOP 待使用者回答,候選僅一個甚至為空也必須釐清。
-
載入校正基準
3.1 若 ${PLAN_REPORTS_DIR}/function-packaging.md 不存在則參考 aibdd-function-packaging/assets/templates/function-packaging.template.md CREATE ${PLAN_REPORTS_DIR}/function-packaging.md 空骨架,僅含 # Function Packaging 標題。
3.2 READ ${PLAN_REPORTS_DIR}/function-packaging.md 內容作為 $CURRENT_PACKAGING。
3.3 READ ${PLAN_SPEC} 需求描述段最新批次作為 $LATEST_BATCH。
3.4 EXECUTE command 以 read --impact-status pending 讀出 ${IMPACT_MATRIX_YML} 全部 pending impact 作為 $PENDING_IMPACTS,CLI 用法詳見 aibdd-core::references/impact-matrix/cli-usage.md。
-
識別 impact matrix 標記的既有 package: 設 $RELATED_PACKAGES 為 $PENDING_IMPACTS 中 spec path 落在 packages/NN-<slug>/ 下者所對映的既有 packages/NN-<slug> 集合;${CONTRACTS_DIR}、${DATA_DIR} 等 boundary spec 不對映 function package。
-
判定全新需求的 package 歸屬: 對 $PENDING_IMPACTS 中 specs 為空的每個 impact,參考 aibdd-function-packaging/rules/function-package-granularity.md 與 $CURRENT_PACKAGING,依其 quotes 與 $LATEST_BATCH REASONING 其需求該歸入哪個 function package;落入某既有 package 者把該 packages/NN-<slug> 加入 $RELATED_PACKAGES,無既有 package 可承載者依 slug 命名規則 PRINCIPLE derive 新 packages/NN-<slug> 加入 $ADDED_PACKAGES。
-
梳理決策與 rationale
6.1 對 $RELATED_PACKAGES 每個 package,參考 aibdd-function-packaging/rules/function-package-granularity.md READ 該 package 於 ${TRUTH_BOUNDARY_PACKAGES_DIR} 下的既有 specs 了解職責,依 $LATEST_BATCH REASONING 其 rationale 以說明本批次對它要增修或新增哪些 spec。
6.2 對 $ADDED_PACKAGES 每個 package,參考 aibdd-function-packaging/rules/function-package-granularity.md 依 $LATEST_BATCH REASONING 其 rationale 以說明為何必須新開。
6.3 設 $PACKAGING_DECISIONS 為 $RELATED_PACKAGES 與 $ADDED_PACKAGES 各 package 的決策集合,每筆為 { package_path, flagged_reason, rationale },對應 ${PLAN_REPORTS_DIR}/function-packaging.md 內容章節,語意參考 aibdd-function-packaging/assets/templates/function-packaging.template.md。
-
落地新 package 目錄: 對 $PACKAGING_DECISIONS 每個 flagged_reason 為 added 的決策,依其 package_path 的 NN-<slug> 解析 ${TRUTH_FUNCTION_PACKAGE} 與 ${FEATURE_SPECS_DIR},CREATE ${TRUTH_FUNCTION_PACKAGE} 與 ${FEATURE_SPECS_DIR} 空骨架。
-
校正 function-packaging.md: 對 $PACKAGING_DECISIONS 每個決策參考 aibdd-function-packaging/assets/templates/function-packaging.template.md 在 ${PLAN_REPORTS_DIR}/function-packaging.md 將該 package_path 的章節 UPDATE 為其 flagged_reason 與 rationale,章節不存在則新增;未列入 $PACKAGING_DECISIONS 的既有章節保持不動。
-
回報結果: 對使用者輸出(可使用不同詞彙但維持語意)「OK,/aibdd-function-packaging 已依本批次需求校正 function-packaging.md:新開的 package 已建立目錄並標記 added、其餘受牽動的既有 package 標記 related。下面逐一列出本批次 added/related 的 package:<逐一列出>。接著請執行 /aibdd-flows-specify,在這些 package 內展開 UAT flow 與 feature。」