en un clic
aibdd-dsl-refine
AIBDD DSL Refine SOP。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
AIBDD DSL Refine SOP。
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
| name | aibdd-dsl-refine |
| description | AIBDD DSL Refine SOP。 |
| metadata | {"user-invocable":true,"source":"project-level"} |
嚴格遵照底下 Principles 來執行 SOP。
CWD 所涵蓋之專案/規格樹內(相對路徑自 CWD 解析;本檔所列 ${...} 路徑皆以 CWD 為錨)。CWD 外的任意絕對路徑,或以「方便」為由落到未載明於當步 SOP 的其他根目錄。$FP_SLUG/$TARGET_FEATURES、在 step 10 未取得使用者逐項同意前標 # done 或寫 FP 層 isa.yml,一律屬未授權產出(等同越權寫檔)。即使開場指令看似已指定範圍(如「完成所有推導」),該指令只授權「開始跑本 SOP」,不取代任何停點的使用者回覆。依序不漏步:自底下列 SOP 逐一執行;每做一步,在訊息中明示該步編號。
限縮延長推理:僅當當步明文標示須 THINK / REASONING 時,才拉長內省與推演;否則以最直接可做之 READ/PARSE/DERIVE/WRITE/UPDATE/工具呼叫達成該步,省略冗長鋪墊。
長流程會跨多輪對話;在 conversation compact 之後,執行者仍要靠同一套待辦還原進度。外層只列 phase(本檔 # SOP 每一步),進入 LOOP 後每個 example 再把 sub-SOP 步驟拆成子項。必須以執行環境的待辦工具(TODOCREATE/TASKCREATE 或等效)實體化,禁止只靠聊天口頭列點。
DELEGATE /clarify-loop 批次提問,由其決定提問工具與白話文轉譯。assets/fp-question.template.md;選 features → assets/features-question.template.md;example 變更 → 01-refine-example/assets/change-question.template.md;收尾 batch review 的 ISA 確認 → 01-refine-example/assets/isa-question.template.md。context/question 保持精簡單句並引用上方預覽。切勿把展開/表格塞進 clarify-loop 的 question 欄位(會被攤平成一坨、無法閱讀)。.feature(SBE 產出)為待驗證候選、非 SSOT。每個未定義 step 先驗測試意圖與合理性(見 01-refine-example/rules/dsl-step-reasoning.md),確認正確才推 isa_step。/clarify-loop(帶完整 Example)確認後變更 .feature,再續。DSL_REFINE_PLAN.yml(專案根)一律由 scripts/cli/build_worklist.py 產出/刷新,AI 不得手動修改;查看=READ,刷新=重跑腳本。# done 標記;worklist 為衍生 session 暫存,啟動即刪除重建。詳見 rules/refine-worklist-query.md。請執行到哪讀到哪,千萬不要提早閱讀後續文件,SOP 寫啥就做啥,沒叫你 [THINK/REASONING] 就絕對不准啟用 EXTENDED THINKING。
SEARCH **/arguments.yml(在 CWD 下)做 parameters binding;此檔一定存在,如不存在停止並回報:「我在 ${CWD} 底下找不到 **/arguments.yml,你是否已經執行過 /aibdd-kickoff 了?」
RESOLVE arguments——將下列 ${VAR} 透過 sibling resolver 綁定,stdout 原樣 EMIT;非 0 退出則 STOP 並透傳 stderr。
python3 .claude/skills/aibdd-core/scripts/cli/resolve_args.py <<'EOF'
AIBDD_ARGUMENTS_PATH=${AIBDD_ARGUMENTS_PATH}
BOUNDARY_ISA=${BOUNDARY_ISA}
CONTRACTS_DIR=${CONTRACTS_DIR}
DATA_DIR=${DATA_DIR}
TRUTH_BOUNDARY_PACKAGES_DIR=${TRUTH_BOUNDARY_PACKAGES_DIR}
TRUTH_BOUNDARY_ROOT=${TRUTH_BOUNDARY_ROOT}
EOF
ASSERT arguments 必備鍵齊全——對 ${AIBDD_ARGUMENTS_PATH} 檢查:TRUTH_BOUNDARY_ROOT、TRUTH_BOUNDARY_PACKAGES_DIR、BOUNDARY_ISA、CONTRACTS_DIR、DATA_DIR。缺鍵 → 列出、提示 /aibdd-kickoff、STOP。本步禁止順手補建 arguments.yml。
ASSERT 上游真相已就緒(READ-ONLY;任一失敗即列缺項、STOP、提示對應 skill):
${BOUNDARY_ISA} 存在(kickoff isa 種子);缺 → /aibdd-kickoff。${TRUTH_BOUNDARY_PACKAGES_DIR}/*/features/*.feature 至少一份且已列 atomic rules;缺 → /aibdd-flows-specify、/aibdd-rules-specify。${CONTRACTS_DIR} 下有實際 operation contract 檔(排除 .gitkeep);缺 → /aibdd-api-plan。${DATA_DIR} 下有 schema(DDL .sql/.dbml)與 entity_to_table_mapping.yml;缺 → /aibdd-data-plan。LOAD 參照真相(一次性,READ-ONLY;供整個 LOOP 共用,不在 loop 內逐 example 重讀):
${BOUNDARY_ISA} 與 ${TRUTH_BOUNDARY_PACKAGES_DIR}/*/*.isa.yml(每條 name/format/instruction_type/data_format/custom 契約)。${CONTRACTS_DIR}/**(summary/path/query/header/required)。${DATA_DIR}/**(DDL/.dbml 與 entity_to_table_mapping.yml;表/欄位/NOT NULL/PK)。BUILD worklist——RUN 下列腳本掃出「含未完成定義 dsl step」的 FP/feature/example,產出 DSL_REFINE_PLAN.yml(專案根;先刪舊檔再產,read-only 對 specs)。語意見 rules/refine-worklist-query.md。
python3 .claude/skills/aibdd-dsl-refine/scripts/cli/build_worklist.py --packages-dir ${TRUTH_BOUNDARY_PACKAGES_DIR} --out DSL_REFINE_PLAN.yml
產出為空(全部完成)→ STOP 並回報完成;腳本回報找不到 package → STOP 並提示先完成 /aibdd-flows-specify。
SELECT FP(單選硬閘門)——READ DSL_REFINE_PLAN.yml 的 fps[],以 assets/fp-question.template.md 組裝、DELEGATE /clarify-loop 讓使用者選一個 FP。
$FP_SLUG、$FP_DIR=${TRUTH_BOUNDARY_PACKAGES_DIR}/$FP_SLUG、$FP_FEATURES=$FP_DIR/features、$FP_PACKAGE_DSL=$FP_DIR/dsl.yml,進入 step 7。SELECT Features(多選硬閘門)——READ worklist 選定 FP 的 features[],以 assets/features-question.template.md 組裝、DELEGATE /clarify-loop 讓使用者複選。
$TARGET_FEATURES[];空集合 → STOP。ENSURE {feature}.dsl.yml 就緒——對每個 $TARGET_FEATURES,$FP_FEATURES/{feature}.dsl.yml 不存在 → 以 assets/dsl.template.yml 為模版 CREATE 空骨架。(跨 feature 共用的 $FP_PACKAGE_DSL 待 sub-SOP 重構步按需才建。)本步只 CREATE 空骨架,不填內容。
LOOP examples(推導期,不中途確認)——對 worklist 中「屬 $TARGET_FEATURES、status: pending」的每個 example,逐一 EXECUTE the sub-sop:
01-refine-example/SOP.md(輸入:該 example 的 feature 路徑 ${FEATURE}、example 標題、worklist 列的未完成 step)
每個 example 的 sub-SOP 返回後(帶回該 example 的待 review 展開),接續下一個 pending example;直到 $TARGET_FEATURES 內無 pending。
【嚴禁】推導期間逐 example 或逐 dsl_step 向使用者確認 ISA;所有 ISA 確認集中在 step 10 的收尾 batch review 一次進行(sub-SOP 內 a/b 的 example 合理性變更授權不在此限)。
BATCH REVIEW(收尾一次 review,強制硬閘門)——所有選定 examples 推導完成後才執行;使用者同意前不得定案:
a. 對每個受影響 example RUN 01-refine-example 的 expand_isa.py 取得展開,一次 EMIT 全部受影響 features/examples 的完整展開預覽到對話(每個 example:完整 Example + 逐 dsl_step 展開)。
b. 依 01-refine-example/assets/isa-question.template.md 組裝、DELEGATE /clarify-loop 讓使用者對預覽逐項同意/不同意(引用上方預覽,question 保持精簡單句)。
# done(見 Artifact output contract)。
c. 任一項不同意 → 依回饋回 sub-SOP c 調整該 dsl_step(含把誤開的 custom 改為 builtin 組合),重跑該 example 展開,回 a 只重審被拒項,直到全數同意。
d. 全數同意 → 才在各 dsl_step name 上方標 # done;custom 有新增 → 此時才寫 FP 層 isa.yml 契約;再重跑 step 5 的 build_worklist.py 刷新 worklist,確認 $TARGET_FEATURES 內無 pending。
【嚴禁】在使用者同意前標 # done、寫 FP 層 isa.yml,或以任何理由(含環境無互動工具)跳過本 review 自行定案。FP 級去重 + name 唯一性 gate(收尾,強制硬閘門)——所有選定 feature 的 example 全部 # done 後才執行;這是宣告完成前的決定性 gate,不可略過、不可只憑自我回報「已收斂」(曾發生 agent 謊報無重複、實際 16 條未上移、展開階段被阻斷)。
a. RUN 偵測器(其 exit code 為 gate):
python3 .claude/skills/aibdd-dsl-refine/scripts/cli/detect_shared_dsl.py --packages-dir ${TRUTH_BOUNDARY_PACKAGES_DIR} --fp $FP_SLUG
b. exit 3(有跨 feature 重複):對回報的每一條都要處理,依 01-refine-example/rules/example-refactor.md §2 hoist 到 $FP_PACKAGE_DSL、刪各 {feature}.dsl.yml 的重複(保留 # done)。
DSL_DEFINITION_DUPLICATE_NAME、阻斷整個 FP、連 dry-run 都掃不到)→ 務必全部上移;標「同名不同 format」者先對齊 format 再上移。build_worklist.py 確認 worklist 仍空。本步只重構結構、不改驗收意圖。當要把一筆需求對齊進 plan package 時觸發,這筆需求可以是對既有規格的變更或缺陷,也可以是要落到既有或全新 plan package 的全新需求。把這筆需求追加進 spec.md 並校準 impact matrix。
跨 skill 共用資源庫,本身不會被執行,只存放供其他 skill 載入的共用資源(reference/asset/script)。
Turn a legal Red handoff for target feature files green by verifying drift, editing product code only, detecting failure oscillation, and emitting a Green handoff. TRIGGER when Green execute is requested after aibdd-red-execute. SKIP when no legal Red handoff exists or the request is test, DSL, runtime, or architecture repair.
當 reconcile 校準 impact matrix 後、本 owner 名下有 pending impact 待落成 persistent data schema 時觸發。以 `read --owner aibdd-data-plan --impact-status pending` 為 worklist,依 Discovery 真相(spec.md/feature truth)把須穩定保存的系統狀態推論成 state schema、在草稿上收斂後委派 boundary profile 宣告之 state_specifier 落地至 `${DATA_DIR}`,最後回寫 impact matrix。
Build the entity-to-table mapping (`entity_to_table_mapping.yml`) from a boundary's physical schema specs (DBML / SQL DDL), preserving existing entity names and naming new tables from the plan spec.
Create legal AIBDD red for target feature files by loading project config, mapping every Scenario step to DSL and core preset assets, rendering runtime-visible step definitions, and emitting a Red handoff. TRIGGER when Red execute is requested or delegated by implementation/debug flow. SKIP when the feature package or BDD stack config is absent.