breakdown — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited breakdown (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
breakdown 是 Packer:接收 refinement artifact、bug-triage RCA、JIRA ticket 或 DP source,把已定案的需求拆成可施工 work orders。它不擁有需求探索或技術決策;需要 改 Goal / Background / Decisions / Blind Spots / Technical Approach 時,route back to refinement。
workspace-config-reader.md、workspace-language-policy.md、authoring-preflight.md 與 root language;preview、JIRA comment、task.md / V*.md artifact 必須直接用 policy language 起稿,不可把 language gate 當送出前翻譯器。
pipeline-handoff.md § Artifact Schemas,再讀refinement-artifact.md / task-md-schema.md 等對應 artifact-specific schema。breakdown 是唯一直接消費 refinement.json derive work order 的 owner;atom ownership 邊界以 pipeline-handoff-atom-matrix.md 為準,SKILL 主文不複製完整 schema 表。
starlight-authoring-contract.md;task work order寫入 folder-native tasks/Tn/index.md 或 tasks/Vn/index.md;task schema 以 task-md-schema.md 為準。
estimation-scale.md;JIRA sub-task / story point 操作使用jira-subtask-creation.md 與 jira-story-points.md。
task.md、sidecar processed flag。
auto-pass dispatch,explicit confirmation 可由AUTO_PASS_LEDGER_PATH=<absolute ledger path> envelope token 提供,但 breakdown 必須先用 scripts/validate-auto-pass-ledger.sh 驗證 schema、source match、三個 consent boolean、 canonical consent_excludes enum 與 task write timestamp ordering。缺 token、relative path、 source mismatch、invalid schema 或 task write 早於 ledger start/resume 都等同缺 confirmation, 不得寫 task.md。
engineering 單獨消費:Allowed Files、Gate Closure Matrix、Behavior Contract、Test Environment、Verify Command 都要完整。
tool_requirements[],必須包成 task.md## Required Tools table。ticket-scoped 工具只能透過 task.md 提醒 engineering 檢查或安裝; 不得把單一工單工具需求升級成 root mise.toml 需求。
dependency governance 或 selected suite,task.md 必須寫出 script test contract; 高風險行為變更優先包進 failing selftest → implementation → passing selftest。 text-only / trivial 文件或 help 文案變更可註明不需新增 failing selftest。
infra-first-decision.md;infra prerequisite 只能由refinement artifact 的 AC verification methods 推導,不得只因 visual regression config 存在就加入 fixture task。
stacked-delivery-sibling-epic-policy.md;建立 task.md / JIRA child 前必須用 scripts/detect-stacked-delivery-lane.mjs 檢查 draft task set。若結果是 required, 使用者確認 sibling Epic strategy 或 explicit override 前不得寫 task.md、不得寫 JIRA、 不得建 branch。
engineering,就必須沿用與 Epic 相同的正規鏈;framework-release 只能作為 engineering PR 之後的 local extension tail,不得提前取代 engineering。
docs-manager/src/content/docs/specs/**),不得包成 implementation task handoff engineering;必須留在 refinement / breakdown artifact,或另拆真正的 tracked releaseable task。
sub-agent-roles.md 並注入 Completion Envelope;Codexruntime / model fallback contract 見該 reference § Runtime Adapter Contract / Fallback Behavior。
Phase 2 / DP refinement 寫 Work Orders 前,對每張 candidate task 問三題:
三題全部 No 表示這張 task 是 contract registration micro-task(純 reference doc 加段 落 + SKILL.md 加 3 行 + 補 selftest fixture,沒有獨立 producer code),必須合併進它最自然 的父 task(通常是同層 schema/validator task)。
多個 owning skill 各自登錄同一 contract 時,不需要每個 skill 切一張 task;合併進 contract 主 task,Allowed Files 一次涵蓋多個 SKILL.md / reference doc。
例外:某 owning skill 的 producer 確實有獨立 helper script(如 run-verify-command.sh 等級的 writer),該 skill 可獨立切 task。
Rule of thumb:
Why:缺乏 producer code 等於沒有獨立 PR boundary。engineering 會把多張 micro-task 合併進 一顆 PR(DP-201 原 plan 切 T2/T3/T4 共 13pt 結果全併入 PR #343 commit a4763f6),導致 plan ↔ delivery 永久脫鉤,必須 reopen refinement 壓縮 task 結構。
當 framework-release 把多個 task 合進單一 aggregate-release PR 時,bundle 的 branch / worktree / PR identity 由 --source DP-NNN 與 --version vX.Y.Z 決定, 不再從任一 task summary slug 推導。breakdown 在拆 task 時要記得:
bundle-DP-NNN-vX.Y.Z,由scripts/engineering-branch-setup.sh --aggregate-release --source DP-NNN --version vX.Y.Z --task-md <path> [--task-md <path> ...] 建立。
bundle_branch_alias: bundle-DP-NNN-vX.Y.Z 寫進每張 task.mdfrontmatter;breakdown 不需要手寫這個欄位,但要避免在 task.md 留下會跟 bundle alias 衝突的 per-task release branch 設計。
--task-head-sha DP-NNN-T1=<sha1>,DP-NNN-T2=<sha2>map syntax 對每張 task 做 per-task closeout;breakdown 拆出來的 task id 必須與 map key 對齊(folder-native tasks/Tn/index.md 已自然滿足)。
先讀 spec-source-resolver.md 判斷 source type,再只讀對應 reference:
| Source / signal | Path | Reference |
|---|---|---|
| Bug ticket | Bug RCA estimate / simple fix or planning handoff | breakdown-bug-flow.md |
| Story / Task / Epic ticket | JIRA planning, sub-task creation, task.md packaging | breakdown-planning-flow.md |
DP-NNN or locked DP artifact | DP-backed tasks/T{n}.md without JIRA writes | breakdown-dp-intake-flow.md |
| engineering escalation sidecar | scope-escalation intake and planner decision | breakdown-escalation-intake-flow.md |
scope challenge / 挑戰需求 | advisory challenge only, no writes unless user later confirms planning | breakdown-scope-challenge-flow.md |
| branch/task packaging details needed | branch DAG, task.md / V*.md validation | breakdown-task-packaging.md |
SKILL.md 本身只是 documentation pointer:寫 specs-bound artifact 的實際 writer authority 來自 producer-env(POLARIS_SKILL_WRITER / POLARIS_PRODUCER)+ producer registry(scripts/lib/evidence-producers.json),不是 SKILL.md prose 本身。
新建 tasks/T*/index.md 或 tasks/V*/index.md 時,breakdown 必須走 deterministic two-step pipeline:先由 derive-task-md-from-refinement-json.sh 從 refinement.json 的 structured tasks[] entry 機械產出 staged body,再由 write-producer-owned-artifact.sh 用 breakdown:initial-create token 寫入。
# Step 1 — deterministic body derivation (no LLM judgment in pipeline).
bash scripts/derive-task-md-from-refinement-json.sh \
--refinement-json /absolute/path/to/refinement.json \
--task-id DP-NNN-Tn \
> /absolute/path/to/staged-task-body.md
# Step 2 — atomic, token-guarded write.
bash scripts/write-producer-owned-artifact.sh \
--producer-token breakdown:initial-create \
--path /absolute/path/to/tasks/T{n}/index.md \
--body-file /absolute/path/to/staged-task-body.md語意:
derive-task-md-from-refinement-json.sh 機械產生,不可由 breakdown skill session 在主 對話中手寫 / 拼湊 frontmatter、Allowed Files、Scope Trace Matrix 或 Verify Command。 derive script 從 refinement.json structured fields(id、title、scope、 allowed_files、ac_ids、verification.detail、estimate_points)一比一還原 task.md schema 必填欄位;缺欄位即 fail-loud,沒有 LLM fallback 把 gap 填起來。需要新 欄位時改 refinement artifact,不在 breakdown 層補。
task_shape的 canonical writer。derive script 從 refinement.json 的 planned_tasks[].task_shape(值若存在須為 implementation \| audit \| confirmation) 一比一寫入對應 task.md frontmatter;planned_tasks[] 缺 task_shape 或整個欄位不存在 時,task.md 一律省略 task_shape(reader 端 default = implementation,見 task-md-schema-common.md)。breakdown 不在主對話中自行推斷或覆寫 task_shape——它是 refinement 階段宣告的 delivery shape,breakdown 只負責機械搬運。下游三個 consumer (validate-breakdown-ready.sh carve-out、check-delivery-completion.sh no-PR completion path、auto-pass terminal required-PR set)都讀同一個 frontmatter 欄位, enum 認定集中在 validate-task-md.sh,breakdown 不重寫第二套 classifier。
breakdown:initial-create token 只覆蓋 首次建立 的 task.md;既有 task.md 的後續編修(status flip、jira_transition_log 補寫等)沿用原來的 dp-task-status-writer flow,不注入此 token。
tasks/**/index.md,token 也會解析到 initial-create entry),並以 validate-task-md.sh 驗證寫入內容; validator fail 時 rollback 任何既有內容,不留下 invalid artifact。
POLARIS_PRODUCER env 仍只由 deterministic 觸發路徑(producer script 內部)使用,不得透過 Claude tool per-call env 模擬 producer。
scripts/selftests/derive-task-md-from-refinement-json-selftest.sh enforce(AC28 positive, AC-NEG9 fail-loud)。
#### Source-Type Dispatch:dp mode vs jira mode (DP-269)
derive-task-md-from-refinement-json.sh 依 refinement.json 的 source.type 分兩 mode; 這是同一條 initial-create lane 的 additional contract,不是 DP-only fast path(JIRA Epic-backed 與 DP-backed source 對稱,呼應 canonical-contract-governance.md § Source Parity,由 scripts/validate-spec-source-parity.sh 在 framework PR gate 保護):
DP-NNN-Tn,Repo = polaris-framework(CLI --repo default),Base branch = main, JIRA key cell = N/A。
refinement.json 注入產品事實 ——task identity = 真實 tasks[].jira_key(命中 validate-task-md.sh is_valid_task_identity 的 plain JIRA key 分支),Repo = source.repo, Base branch = source.base_branch(產品 base branch,如 develop), JIRA key cell = 真實 key(非 N/A)。
source.repo / source.base_branch / tasks[].jira_key 是 jira-only 欄位,由 refinement Phase 1/2 populate(base_branch 來源見 refinement SKILL.md § JIRA-Epic-Backed Source Field Population;base_branch 從 {company}/polaris-config/{project}/handbook/config.yaml 讀取,無對應 entry 時 fail-stop 不硬猜)。tasks[].jira_key=null 的 jira task 進 derive 時 fail-closed(要求先 populate 真實 key,無 N/A fallback);DP-backed source 帶任一 jira-only 欄位由 validate-refinement-json.sh fail-closed(POLARIS_REFINEMENT_JIRA_ONLY_FIELD,不外洩到 dp 分支)。
breakdown 寫 refinement-inbox/、planner-owned task.md 後續編修,或其他 breakdown owning_skill entry 對應路徑(見 scripts/lib/evidence-producers.json)時,若必須以 Claude Write / Edit / MultiEdit 直接寫入(沒有 deterministic writer script), 先 `export POLARIS_SKILL_WRITER=breakdown` 再呼叫 Write tool,讓 no-direct-evidence-write hook 通過 owning-skill consent 檢查:
export POLARIS_SKILL_WRITER=breakdown
# 然後使用 Write tool 寫入路徑屬於 breakdown owning_skill 的檔案POLARIS_SKILL_WRITER 只允許設成本 skill 名(breakdown);hook 會交叉比對寫入路徑是否落在registry 的 breakdown owning_skill entry 內,不符即 deny。
cat > foo.md <<'EOF'、tee specs/...)寫入 specs-bound artifact;Bash heredoc 不走 hook 並繞過 producer-env 認證,違反 spec-source single-writer 原則。
(write-producer-owned-artifact.sh + --producer-token)。
refinement-owned DP / Epic / Story / Task 需要 current refinement.json;Bug 需要 bug-triage confirmed [ROOT_CAUSE] handoff。
[ROOT_CAUSE] comment:停止,請使用者先跑 bug-triage {TICKET}。status: DISCUSSION 或缺 refinement.json:停止並 route back torefinement DP-NNN。
validate-task-md.sh 或 validate-task-md-deps.sh 失敗:修 artifact,不得 handoffengineering。
或 Allowed Files 全落在 ignored local artifact surface:停止,回 planning 重拆,不得 handoff engineering / framework-release。
task_snapshot、validation_fail、missing_v_task 與 route_back_refinement_inbox canonical signal 的 owning writer。Marker schema、producer mapping 與 freshness rule 以 auto-pass-proof-of-work.md / scripts/lib/evidence-producers.json 為準;auto-pass 只能讀取, 不可代寫 breakdown marker。
validate-task-md.sh、validate-task-md-deps.sh、validate-breakdown-ready.sh全部通過後,才可提示 做 {TASK_KEY}、做 {EPIC_KEY} 或 做 DP-NNN-T1。
engineering;若lineage cap 或 planner decision 指向 refinement,只建立 refinement inbox record 後提示 refinement {EPIC}。
breakdown 同時是 consumer 與 producer:consumer 端預設 traverse refinement 的 canonical refinement.json tasks[] schema 來 derive work order,不改去解析 refinement 的 LLM freeform prose 補 scope 缺口;producer 端產出 canonical task.md (task-md-schema.md 形狀,含 Allowed Files / Scope Trace Matrix / Verify Command)給 engineering 機械消費。LLM freeform 只在 standalone 情境合法——亦即該產出沒有下游 pipeline consumer 會機械消費它(例如對使用者的 task preview prose)。會被下一段 skill 機械消費的 handoff artifact 一律走 canonical schema。本契約只約束 handoff artifact 介面, 不約束 breakdown 內部如何拆 task 或推導估點。完整契約見 .claude/skills/references/pipeline-handoff.md § Canonical Schema Traversal Contract。
breakdown session 開始時必須呼叫 skill-workflow-boundary baseline writer:
bash scripts/skill-workflow-boundary-gate.sh --skill breakdown --start \
--source-container "$SOURCE_CONTAINER"breakdown 完成、handoff engineering 前(或在 /auto-pass cross-skill transition 之前)必須跑:
bash scripts/skill-workflow-boundary-gate.sh --skill breakdown --check \
--source-container "$SOURCE_CONTAINER"breakdown 的 owning scope 僅限本 source container 的 tasks/T*/index.md / tasks/T*.md / tasks/V*/index.md / tasks/V*.md / tasks/** 內 task artifact,以及 refinement-inbox/**。任何 owning scope 之外 的新增/修改(refinement.md / refinement.json / code / generated target)會讓 gate exit 1 並輸出 POLARIS_SKILL_WORKFLOW_BOUNDARY_BLOCKED:breakdown, breakdown 必須回去把該修改改回 refinement 階段或讓對應 owning skill 處理。
POLARIS_LANGUAGE_POLICY_BYPASS / POLARIS_SKILL_BOUNDARY_BYPASS 等 env 不能 silence 這個 gate(AC-NEG16)。
完成 write flow 後必須呼叫 scripts/check-feedback-signals.sh。
見 post-task-reflection-checkpoint.md;write 後必跑、不可跳過。
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.