@laitszkin/apollo-toolkit 3.11.7 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +0 -2
  3. package/align-project-documents/SKILL.md +20 -69
  4. package/align-project-documents/references/templates/standardized-docs-template.md +1 -1
  5. package/analyse-app-logs/scripts/__pycache__/filter_logs_by_time.cpython-312.pyc +0 -0
  6. package/analyse-app-logs/scripts/__pycache__/log_cli_utils.cpython-312.pyc +0 -0
  7. package/analyse-app-logs/scripts/__pycache__/search_logs.cpython-312.pyc +0 -0
  8. package/archive-specs/SKILL.md +18 -70
  9. package/commit-and-push/SKILL.md +24 -52
  10. package/develop-new-features/SKILL.md +15 -60
  11. package/discover-edge-cases/SKILL.md +16 -75
  12. package/discover-security-issues/SKILL.md +49 -83
  13. package/docs-to-voice/SKILL.md +3 -30
  14. package/docs-to-voice/scripts/__pycache__/docs_to_voice.cpython-312.pyc +0 -0
  15. package/enhance-existing-features/SKILL.md +36 -57
  16. package/generate-spec/SKILL.md +51 -130
  17. package/generate-spec/references/templates/coordination.md +0 -1
  18. package/generate-spec/scripts/__pycache__/create-specscpython-312.pyc +0 -0
  19. package/implement-specs/SKILL.md +27 -62
  20. package/implement-specs-with-subagents/SKILL.md +28 -71
  21. package/implement-specs-with-worktree/SKILL.md +38 -62
  22. package/init-project-html/SKILL.md +27 -137
  23. package/init-project-html/lib/atlas/cli.js +897 -43
  24. package/init-project-html/scripts/architecture.js +4 -25
  25. package/katex/scripts/__pycache__/render_katex.cpython-312.pyc +0 -0
  26. package/lib/cli.js +166 -20
  27. package/lib/tool-runner.js +418 -2
  28. package/maintain-project-constraints/SKILL.md +24 -78
  29. package/maintain-project-constraints/references/constraint-file-reference.md +58 -0
  30. package/merge-changes-from-local-branches/SKILL.md +36 -99
  31. package/open-github-issue/SKILL.md +7 -98
  32. package/open-github-issue/scripts/__pycache__/open_github_issue.cpython-312.pyc +0 -0
  33. package/optimise-skill/SKILL.md +7 -6
  34. package/optimise-skill/references/definition.md +38 -0
  35. package/optimise-skill/references/example_skill.md +7 -6
  36. package/package.json +1 -1
  37. package/read-github-issue/SKILL.md +6 -46
  38. package/read-github-issue/scripts/__pycache__/find_issues.cpython-312.pyc +0 -0
  39. package/read-github-issue/scripts/__pycache__/read_issue.cpython-312.pyc +0 -0
  40. package/resolve-review-comments/SKILL.md +4 -26
  41. package/resolve-review-comments/scripts/__pycache__/review_threads.cpython-312.pyc +0 -0
  42. package/review-change-set/SKILL.md +41 -91
  43. package/review-codebases/SKILL.md +42 -99
  44. package/review-spec-related-changes/SKILL.md +42 -77
  45. package/scripts/validate_openai_agent_config.py +16 -1
  46. package/scripts/validate_skill_frontmatter.py +16 -1
  47. package/solve-issues-found-during-review/SKILL.md +38 -66
  48. package/spec-to-project-html/SKILL.md +27 -88
  49. package/submission-readiness-check/SKILL.md +35 -55
  50. package/systematic-debug/SKILL.md +37 -53
  51. package/test-case-strategy/SKILL.md +38 -85
  52. package/text-to-short-video/scripts/__pycache__/enforce_video_aspect_ratio.cpython-312.pyc +0 -0
  53. package/update-project-html/SKILL.md +25 -110
  54. package/version-release/SKILL.md +39 -74
  55. package/weekly-financial-event-report/scripts/extract_pdf_text_pdfkit.swift +32 -4
  56. package/archive-specs/references/templates/architecture.md +0 -21
  57. package/archive-specs/references/templates/docs-index.md +0 -39
  58. package/archive-specs/references/templates/features.md +0 -25
  59. package/archive-specs/references/templates/principles.md +0 -28
  60. package/maintain-skill-catalog/README.md +0 -18
  61. package/maintain-skill-catalog/SKILL.md +0 -72
  62. package/maintain-skill-catalog/agents/openai.yaml +0 -4
@@ -1,88 +1,54 @@
1
1
  ---
2
2
  name: discover-security-issues
3
3
  description: >-
4
- Discovery-only adversarial audit: map trust boundaries, run module catalogs (`agent-system`, `financial-program`, `software-system`, `combined`), reproduce exploitable behavior with payloads/commands and `path:line` evidence; prioritize impact × exploitability—**no code edits, no PRs, no auto-remediation**.
5
- Use for security review, vuln hunting, SQLi/XSS/auth/IDOR checks, agent prompt-injection/tool abuse, money-path races **STOP** when user wants patches shipped—hand off findings… BAD single vague “looks fine”… GOOD two-pass repro, hypothesis vs confirmed…
4
+ 面向選定範圍的只讀安全審查技能。先界定信任邊界,再依 `agent-system`、`financial-program`、`software-system` `combined` 攻擊目錄執行可重現的對抗性驗證,要求以 payload、請求形狀、命令或運行結果配合 `path:line` 證據支撐結論;不允許修改代碼、提交 PR 或直接修復漏洞。
6
5
  ---
7
6
 
8
- # Discover Security Issues
9
-
10
- ## Dependencies
11
-
12
- - Required: none.
13
- - Conditional: none.
14
- - Optional: none.
15
- - Fallback: not applicable.
16
-
17
- ## Non-negotiables
18
-
19
- - **Discovery-only**: **MUST NOT** edit code, apply patches, open PRs, or run “fix workflows.”
20
- - **MUST** keep only **reproducible** issues with exploit evidence; separate **hypotheses** from **confirmed** findings.
21
- - **MUST** reproduce each confirmed exploit **at least twice** on the same path; use nearby payload variants for high-risk sinks.
22
- - **MUST** discard authorship bias—treat all code as untrusted until evidence proves behavior.
23
-
24
- ## Standards (summary)
25
-
26
- - **Evidence**: Payload/precondition, observable failure, `path:line`, commands or requests that reproduce.
27
- - **Execution**: Pick modules → boundaries → scenarios from references → validate → prioritize → report only.
28
- - **Quality**: Rank by impact, exploitability, reach; unknowns listed under residual risk.
29
- - **Output**: Findings (severity-ordered), attack evidence, risk notes, hardening **advice** (not patches), residual risk.
30
-
31
- ## Workflow
32
-
33
- **Chain-of-thought:** After each step, satisfy **`Pause →`** before continuing; halt on missing scope or contradictory module choice.
34
-
35
- ### 1) Scope and modules
36
-
37
- - Choose one or more of: `agent-system`, `financial-program`, `software-system`, `combined` (cross-boundary chains).
38
- - List untrusted inputs, privileged actions, and protected assets; state invariants that must hold.
39
- - **Pause →** Which module catalogs did I **open** (file names)—not guessed from memory?
40
-
41
- ### 2) Execute scenarios from references
42
-
43
- - **Agent**: `references/agent-attack-catalog.md`; optional `references/security-test-patterns-agent.md` (prompt injection, tool abuse, memory/exfil paths).
44
- - **Financial**: `references/red-team-extreme-scenarios.md`, `references/risk-checklist.md`; optional `references/security-test-patterns-finance.md` (authz, replay/race, idempotency, precision, lifecycle).
45
- - **Software**: `references/common-software-attack-catalog.md` (SQL/NoSQL/command injection, XSS, CSRF, SSRF, traversal, upload, session/JWT, IDOR/BOLA, deserialization, misconfig).
46
- - **Combined**: relevant subsets **plus** chains (e.g. injection → privileged API).
47
- - **Pause →** Did I record **payload + preconditions + observed behavior** for each candidate—not just “maybe vulnerable”?
48
-
49
- ### 3) Validate reproducibility
50
-
51
- - Re-run each confirmed path twice; add encoding/casing/delimiter variants on hot sinks.
52
- - **Pause →** Is anything still “likely” without a second repro—downgrade to hypothesis?
53
-
54
- ### 4) Prioritize
55
-
56
- - Order Critical/High → Medium → Low using impact, exploitability, blast radius (multi-tenant / cross-tenant called out).
57
-
58
- ### 5) Report only
59
-
60
- Deliver (see **Output shape** below): findings, attack evidence, prioritization, hardening guidance (advisory), residual risk.
61
-
62
- ## Minimum coverage (apply per selected module)
63
-
64
- - **Core**: trust boundaries, authn/authz, input → dangerous sink paths, secrets/sensitive data handling.
65
- - **Agent**: prompt/indirect injection, unauthorized tools/actions, exfil, memory poisoning resistance.
66
- - **Financial**: object-level authz, replay/race/idempotency, precision, oracle/side-effect safety, failure consistency.
67
- - **Software**: injection families, XSS/CSRF/SSRF, traversal/upload, session/JWT, brute-force/rate limits, debug/CORS/secrets exposure.
68
- - **Combined**: module checks + realistic cross-boundary chains.
69
-
70
- ## Output shape
71
-
72
- 1. **Findings** (high → low): title, severity, evidence (`path:line`), reproduction steps/payload, impacted invariant/asset.
73
- 2. **Attack evidence**: preconditions, commands/requests, observed insecure behavior, variant results.
74
- 3. **Risk prioritization**: impact, exploitability, reach; why it matters in **this** system.
75
- 4. **Hardening guidance** (advice only): fix direction, validation focus post-remediation.
76
- 5. **Residual risk**: hypotheses, assumptions, follow-up probes.
77
-
78
- ## Sample hints
79
-
80
- - **Module**: Web API + Claude tool-use → `combined` (software + agent); deposits/withdrawals → include `financial-program`.
81
- - **Evidence**: “SQLi possible” without two runs + exact parameter → stays **hypothesis** until repro’d.
82
- - **Stop line**: User says “patch it now” → finish report; hand off to implementation skills—**do not** self-patch here.
83
-
84
- ## References
85
-
86
- - `references/agent-attack-catalog.md`, `references/security-test-patterns-agent.md`
87
- - `references/red-team-extreme-scenarios.md`, `references/risk-checklist.md`, `references/security-test-patterns-finance.md`
88
- - `references/common-software-attack-catalog.md`, `references/test-snippets.md` (optional snippets)
7
+ ## 目標
8
+ 輸出一份只讀的安全審查報告,僅保留可重現、可利用、可定位的安全問題。報告需要包含攻擊前提、攻擊步驟、觀察到的不安全行為、`path:line` 證據、嚴重度排序、建議性加固方向與剩餘風險;本技能不負責修補漏洞。
9
+
10
+ ## 驗收條件
11
+ - 審查開始前已明確定義範圍:所選模組目錄、信任邊界、不可信輸入、受保護資產、特權操作與必須成立的安全不變式。
12
+ - 每個已確認問題都包含 payload 或請求形狀、前置條件、實際觀察到的不安全行為,以及精確的 `path:line` 證據。
13
+ - 每個已確認漏洞都在同一路徑下成功重現至少兩次;對高風險熱點還要補做相鄰變體驗證。無法穩定重現者只能作為假設或剩餘風險。
14
+ - 問題排序基於影響、可利用性與波及範圍,並對資金流、權限提升、跨租戶資料暴露與破壞性操作給予更高權重。
15
+ - 最終交付物是按嚴重度排序的安全報告,只包含已確認發現、攻擊證據、風險解釋、建議性加固方向與剩餘風險。
16
+ - 全流程保持只讀:不得修改代碼、補丁、測試、PR 或直接執行修復工作流。
17
+
18
+ ## 工作流程
19
+ 1. 先定義安全審查範圍。
20
+ - 根據目標選擇 `agent-system`、`financial-program`、`software-system` `combined`。
21
+ - 列出所有不可信輸入、受保護資產、特權操作與關鍵安全不變式。
22
+ - 在挑選攻擊場景前,先打開對應參考資料,不依賴記憶臆測。
23
+ 2. 選擇合適的攻擊目錄。
24
+ - `agent-system`:聚焦提示注入、間接注入、工具濫用、記憶污染、資料外洩與 agent handoff 攻擊。
25
+ - `financial-program`:聚焦授權繞過、重放、競態、精度、生命週期、外部依賴與資金流濫用。
26
+ - `software-system`:聚焦注入、XSS、CSRF、SSRF、路徑穿越、檔案上傳、Session/Token、存取控制與配置錯誤。
27
+ - `combined`:合併多個目錄,驗證跨邊界的真實攻擊鏈。
28
+ 3. 執行可確定的攻擊驗證。
29
+ - 對每條候選路徑記錄 payload、前置條件、入口點、可觀察結果與能解釋結果的代碼路徑。
30
+ - 只保留有證據支撐的候選;「看起來像漏洞」不能直接進報告。
31
+ 4. 確認或降級。
32
+ - 對每個候選問題做同路徑二次重現。
33
+ - 對 parser 邊界、授權檢查、查詢構造、命令執行、資金流與 prompt/tool 路由等熱點補做相鄰變體。
34
+ - 若第二次重現失敗或證據鏈不足,將其降級為假設或剩餘風險。
35
+ 5. 按嚴重度排序並只輸出報告。
36
+ - 依影響、可利用性與波及範圍從高到低排序。
37
+ - 交付內容只包含已確認問題、攻擊證據、排序理由、建議性加固方向與剩餘風險。
38
+ - 若使用者要求修復,先完成本技能報告,再交由實作型技能處理。
39
+
40
+ ## 使用範例
41
+ - 「審查這個 Web API 是否有 SQLi、IDOR、SSRF 和 token 問題」-> 選擇 `software-system`,圍繞輸入邊界、查詢構造與授權控制執行可重現驗證。
42
+ - 「審查這個帶 retrieval、memory tool call agent」-> 選擇 `agent-system`,聚焦提示注入、間接注入、工具濫用、資料外洩與記憶污染。
43
+ - 「審查結算、清算或餘額流程是否能被 replay、race precision abuse 利用」-> 選擇 `financial-program`,優先驗證資金守恆、生命週期原子性與精度邊界。
44
+ - 「幫我看 prompt injection 能不能一路打到特權 API」-> 選擇 `combined`,設計跨 agent 與後端邊界的真實攻擊鏈。
45
+ - 「這裡可能有 SQLi,但我只有模糊直覺」-> 若沒有二次重現與精確參數路徑,只能在報告中標記為假設,不能算作已確認漏洞。
46
+
47
+ ## 參考資料索引
48
+ - `references/agent-attack-catalog.md`:AI agent 安全攻擊目錄,涵蓋直接/間接注入、工具濫用、記憶污染、資料外洩與 handoff 攻擊。
49
+ - `references/security-test-patterns-agent.md`:AI agent 安全測試模式,用於描述驗證思路與後續補強方向。
50
+ - `references/red-team-extreme-scenarios.md`:金融與高風險系統的極端攻擊場景,聚焦重放、競態、生命週期、預言機與安全開關濫用。
51
+ - `references/risk-checklist.md`:金融系統風險檢查清單與嚴重度規則,涵蓋授權、資金完整性、依賴風險與運維控制。
52
+ - `references/security-test-patterns-finance.md`:金融系統安全測試模式,涵蓋 replay、授權、精度、陳舊資料與狀態機失敗。
53
+ - `references/common-software-attack-catalog.md`:通用軟體與 Web/API 攻擊目錄,涵蓋主流注入、瀏覽器端與存取控制問題。
54
+ - `references/test-snippets.md`:可重現 payload 與測試模板範例,用於補充報告中的攻擊形狀與驗證描述。
@@ -44,41 +44,14 @@ description: Convert text and document content into audio files and sentence-lev
44
44
  6. Return completion details.
45
45
  - Report absolute output audio path.
46
46
 
47
- ## Script Reference
47
+ ## CLI reference
48
48
 
49
- `apltk docs-to-voice` flags:
50
-
51
- - `--project-dir` (required)
52
- - `--project-name` (optional)
53
- - `--text` or `--input-file` (exactly one required)
54
- - `--env-file` (optional, default: `skill_dir/.env`)
55
- - `--mode` (`say|api`, optional)
56
- - `--voice` (optional, say mode)
57
- - `--rate` (optional, say mode)
58
- - `--speech-rate` (optional, post-process speed multiplier)
59
- - `--api-endpoint` (optional, api mode)
60
- - `--api-model` (optional, api mode)
61
- - `--api-voice` (optional, api mode)
62
- - `--max-chars` (optional, auto chunking threshold for long text)
63
- - `--output-name` (optional)
64
- - `--no-auto-prosody` (optional, say mode)
65
- - `--force` (optional)
66
-
67
- Environment variables:
68
-
69
- - `DOCS_TO_VOICE_MODE`
70
- - `DOCS_TO_VOICE_VOICE`
71
- - `DOCS_TO_VOICE_API_ENDPOINT`
72
- - `DOCS_TO_VOICE_API_MODEL`
73
- - `DOCS_TO_VOICE_API_VOICE`
74
- - `DOCS_TO_VOICE_MAX_CHARS`
75
- - `DOCS_TO_VOICE_SPEECH_RATE`
76
- - `DASHSCOPE_API_KEY`
49
+ Use `apltk docs-to-voice --help` as the live command reference for required inputs, mode-specific flags, environment variables, examples, and expected output paths.
77
50
 
78
51
  ## Troubleshooting
79
52
 
80
53
  - `say` mode: confirm `command -v say` and `command -v python3`.
81
54
  - `api` mode: confirm `command -v python3` and valid `DASHSCOPE_API_KEY`.
82
55
  - Long-text chunk merge (especially AIFF output): recommend `command -v ffmpeg`.
83
- - If output exists, use `--force` or a new `--output-name`.
56
+ - If output exists, use the overwrite or rename options shown in `apltk docs-to-voice --help`.
84
57
  - `scripts/docs_to_voice.sh` is kept as a compatibility wrapper for existing workflows, but prefer `apltk docs-to-voice`.
@@ -1,77 +1,56 @@
1
1
  ---
2
2
  name: enhance-existing-features
3
3
  description: >-
4
- Extend brownfield systems only after reading the real modules involved: choose **`generate-spec`**/`recover-missing-plan` when user-visible scope, ambiguity, coordination, or sensitive flows demand written approval; otherwise implement directly but still run **`test-case-strategy`** on every non-trivial delta (property/adversarial/integration as risk dictates) and never check off plans without commit+test evidence.
5
- Use for backlog work that mutates production behavior; reroute pure regressions, copy/style-only tweaks, or single-pocket config nits that restore documented intent without new surface area.
6
- Bad: multi-service permission change with zero spec… Good: contract captures external API limits + property tests cover invariants… Single-file pagination fix matching README → targeted regression only…
4
+ 用於在既有系統上增強或調整產品行為。必須先讀懂實際受影響的模組,再決定是直接實作,
5
+ 還是先走 `generate-spec` / `recover-missing-plan`;所有非平凡變更都要經過 `test-case-strategy`。
7
6
  ---
8
7
 
9
- # Enhance Existing Features
8
+ # 增強既有功能
10
9
 
11
10
  ## Dependencies
12
11
 
13
- - Required: `test-case-strategy` for risk selection, oracles, drift checks.
14
- - Conditional: **`generate-spec`** when spec triggers below fire; **`recover-missing-plan`** when user-named `docs/plans/...` is missing/archived/mismatched; **`commit-and-push`** when the user requests **git commit** and/or **push** to persist completed work—**MUST** delegate final submission to **`commit-and-push`** (often via **`implement-specs`** / **`implement-specs-with-worktree`** when a spec path is active).
15
- - Optional: none.
16
- - Fallback: **`test-case-strategy`** unavailable ⇒ **stop**. Spec path required but **`generate-spec`** unavailable **stop**. If the user requested **commit/push** and **`commit-and-push`** is unavailable, **MUST** stop and report.
12
+ - Required: `test-case-strategy`
13
+ - Conditional: `generate-spec`、`recover-missing-plan`、`commit-and-push`
14
+ - Optional:
15
+ - Fallback: `test-case-strategy` 不可用時必須停止;需要spec但 `generate-spec` `recover-missing-plan` 不可用時也必須停止;若使用者要求提交或推送但 `commit-and-push` 不可用,必須說明後停止
17
16
 
18
- ## Non-negotiables
17
+ ## Standards
19
18
 
20
- - **MUST** explore relevant code (entrypoints, flows, integrations) **before** deciding process or editing—**MUST NOT** spec-dump or code-dump from titles alone.
21
- - Spec path **when** any: new/changed **user-visible** behavior (not mere restore of old intent); ambiguity needing approval; multi-module alignment; critical/sensitive/irreversible/migration risk; traceability materially reduces error.
22
- - **MUST NOT** open **`generate-spec`** for clearly tiny/localized work: pure regression to prior intent; polish-only UI copy/style; one-area config/constant/flag; narrow CRUD/validation tweak; internal refactor/observability **without** behavior change—**implement + `test-case-strategy` directly**.
23
- - If specs: **MUST** complete **`generate-spec`** lifecycle (approval before code; backfill after); **≤3 modules** per spec set—split independent non-dependent sets + batch `coordination.md` when coordinated parallelism; **MUST NOT** code pre-approval.
24
- - **MUST NOT** yield with approved in-scope **`tasks.md`/`checklist.md`** undone except user deferral or documented external blocker (record in plans).
25
- - **`test-case-strategy` required** for non-trivial deltas—property/adversarial/integration etc. per risk; meaningful oracles; drift check or explicit **`N/A`** with reason per non-trivial logic task.
26
- - External deps: **`contract.md`** records official-backed obligations when material.
19
+ - Evidence: 先閱讀實際程式碼、整合點與外部文件,再決定流程與修改方案
20
+ - Execution: 探索範圍 -> 判斷是否需要 spec -> 查官方資料 -> 最小實作 -> 測試 -> 回填或總結
21
+ - Quality: 不因怕麻煩而跳過 spec,也不為小改動硬開 spec;只做與需求直接相關的修改
22
+ - Output: 交付符合需求的行為變更、可追溯的測試結果,以及在需要時保持誠實的計劃文件狀態
27
23
 
28
- ## Standards (summary)
24
+ ## 技能目標
29
25
 
30
- - **Evidence**: Code exploration + official docs/APIs where touched.
31
- - **Execution**: Explore → decide specs → docs/officials → implement → test → backfill/summary.
32
- - **Quality**: No speculative scope expansion; reuse patterns.
33
- - **Output**: Behavior matches ask; traceable tests; plans honest if specs used.
26
+ 在不打亂既有系統邊界的前提下,為 brownfield 專案安全地增強功能或調整行為,並用合適的spec流程與測試策略把風險控制在可驗證範圍內。
34
27
 
35
- ## Workflow
28
+ ## 驗收條件
36
29
 
37
- **Chain-of-thought:** **`Pause →`** after explorations and spec decision—wrong classification wastes days.
30
+ - 在動手前已讀懂受影響模組、入口點、整合邊界與變更爆炸半徑
31
+ - 已正確判斷這次工作是直接實作還是必須先走 `generate-spec` / `recover-missing-plan`
32
+ - 每個非平凡變更都經過 `test-case-strategy`,並留下清楚的 oracle、驗證方式與 `N/A` 理由
33
+ - 若使用了 spec,則批准、實作、回填與真實狀態同步全部完成;若未使用 spec,則最終摘要足以說明風險、測試與限制
38
34
 
39
- ### 1) Explore codebase
35
+ ## 工作流程
40
36
 
41
- - Map modules, integrations, blast radius.
42
- - **Pause →** Can I state **one paragraph** concrete change surface before editing?
37
+ 1. 先完整閱讀相關模組、資料流、整合點與現有測試,明確界定這次變更會影響哪些地方
38
+ 2. 判斷是否需要spec流程;若涉及新的或改變後的使用者可見行為、跨模組協調、高風險敏感流程、重大歧義,則走 `generate-spec`;如果使用者指定的 plan 路徑缺失或不一致,先用 `recover-missing-plan`
39
+ 3. 若不需要 spec,明確說出不開 spec 的理由;若需要 spec,必須等批准後才能改產品程式碼
40
+ 4. 查閱變更所依賴的官方文件、API spec或工具文件,尤其是外部整合與契約邏輯
41
+ 5. 以最小差異實作需求,不順手做額外重構或範圍擴張
42
+ 6. 使用 `test-case-strategy` 選擇單元、回歸、property、integration、E2E 或 adversarial 測試,跑測試並修正失敗
43
+ 7. 若使用了 spec,回填 `spec.md`、`tasks.md`、`checklist.md`、`contract.md`、`design.md` 與任何 `coordination.md`;若未使用 spec,輸出簡潔的結果摘要、測試證據與剩餘限制
43
44
 
44
- ### 2) Decide specs
45
+ ## 使用範例
45
46
 
46
- - Apply Non-negotiable triggers above; if doubt favors **implement-only** **only when** genuinely low-risk localized.
47
- - If specs: broken path ⇒ **`recover-missing-plan`** then **`generate-spec`** (templates, clarification loop, approval). Parallel batch rules per **`generate-spec`**. If **not** specs: complete step 2 with “no specs” rationale, then continue with steps 3–6 (still run official-doc pass when external surfaces change).
48
- - **Pause →** Am I dodging specs just to avoid bureaucracy while scope is multi-team/critical?
47
+ - 「新增一套影響 API、資料庫與 UI 的權限模型」-> 先走 `generate-spec`,批准後再實作,並補上跨層測試
48
+ - 「修正分頁 off-by-one,讓行為回到 README 描述」-> 不開 spec,直接修復並加回歸測試
49
+ - 「目前指定的 `docs/plans/...` 不見了,但使用者要沿著它繼續做」-> 先用 `recover-missing-plan` 還原或重建,再繼續
49
50
 
50
- ### 3) Authoritative docs
51
+ ## 參考資料索引
51
52
 
52
- - Official docs / Context7 / web for libs used in change.
53
-
54
- ### 4) Implement
55
-
56
- - Minimal diffs preserving behavior unless tasked otherwise; specs ⇒ every in-scope unchecked item delivered; intermediate milestones ≠ user’s final asked outcome unless rescoped.
57
-
58
- ### 5) Testing (always for non-trivial)
59
-
60
- - **`test-case-strategy`**: inventory risk → tests with oracles → run/fix.
61
-
62
- ### 6) Completion
63
-
64
- - With specs: backfill **`spec.md`/`tasks.md`/`checklist.md`/`contract.md`/`design.md`** (+ **`coordination.md`** if batch truth moved). **`spec.md`** requirement status honest. Strip template noise / `N/A` properly.
65
- - Without specs: concise summary citing tests/results/`N/A` reasons.
66
-
67
- ## Sample hints
68
-
69
- - **Spec yes**: Adds new permission model affecting API+DB+UI—the blast radius crosses layers.
70
- - **Spec no**: Off-by-one in existing pagination restoring documented behavior—fix + regression test.
71
- - **Split**: Touches auth, billing, infra—**three plans** capped modules, **`coordination.md`** collision map.
72
-
73
- ## References
74
-
75
- - **`generate-spec`**: planning/backfill lifecycle
76
- - **`test-case-strategy`**: tests + drift philosophy
77
- - **`recover-missing-plan`**: heal missing dirs
53
+ - `generate-spec`:需要書面批准時的spec流程
54
+ - `recover-missing-plan`:修復缺失或不一致的計劃檔
55
+ - `test-case-strategy`:非平凡變更的測試選型與 oracle 設計
56
+ - `commit-and-push`:使用者要求提交或推送時的最終交付流程
@@ -1,135 +1,56 @@
1
1
  ---
2
2
  name: generate-spec
3
3
  description: >-
4
- Author docs/plans trees: run `apltk create-specs`, fill `spec/tasks/checklist/contract/design`
5
- (+ `coordination.md`/`preparation.md` for batches), cite official docs, plan tests via
6
- **`test-case-strategy`**, and block code edits until approval. Architecture deltas use
7
- `apltk architecture --spec <spec_dir> …`: single specs write under `<spec_dir>/architecture_diff/`,
8
- while batch member paths resolve to the shared batch-root `architecture_diff/` beside
9
- `coordination.md`; `apltk architecture diff` renders the before/after viewer. Use for
10
- drafting/refreshing specs or restructuring batches, not execution. Reject vague `tasks.md`
11
- rows and split scope beyond 3 modules.
4
+ Create or refresh approval-gated planning docs under `docs/plans/...` with
5
+ `apltk create-specs`, `test-case-strategy`, and optional batch coordination or
6
+ preparation files. Use for drafting or restructuring specs, not implementation.
12
7
  ---
13
8
 
14
- # Generate Spec
15
-
16
- ## Dependencies
17
-
18
- - Required: `test-case-strategy` for risk-driven test selection, oracles, and unit drift-check planning.
19
- - Conditional: none.
20
- - Optional: none.
21
- - Fallback: If `test-case-strategy` is unavailable, **MUST** stop and report it. **MUST NOT** invent local coverage heuristics as a substitute.
22
-
23
- ## Non-negotiables
24
-
25
- - **MUST** read relevant code, config, and authoritative external documentation before writing requirements, contracts, or test plans. When the change depends on frameworks, libraries, SDKs, APIs, CLIs, or hosted services, **MUST** consult **official** documentation during spec creation (required evidence step, not optional).
26
- - **MUST** generate new or refreshed files from this skill’s **`references/templates/*.md`** via `apltk create-specs` (paths `scripts/...` and `references/...` in this document are **under this skill folder**, not the target project). **MUST NOT** let older `docs/plans/...` layouts override current template headings or required fields; old plans are scope evidence only.
27
- - **MUST NOT** overwrite or repurpose a neighboring plan directory just because topics overlap; adjacent scope **MUST** get a new `change_name` unless it is the **same** issue/change.
28
- - **MUST** keep each spec set to **at most three modules** that will be touched. If broader, **MUST** split into multiple spec sets (each ≤3 modules), each independently valid; **MUST NOT** ship one oversized coupled plan.
29
- - **MUST** use batch-root `preparation.md` **only** for minimal shared prerequisite work that must land before parallel implementation; keep that preparation minimal and free of core business logic or target outcomes (see Working Rules). **`preparation.md` content boundary**: enabling scaffolds, shared fixtures, stubs, mechanical migrations, compatibility surfaces—**no** core business logic, **no** target user-visible outcomes (those stay in normal specs). Exclude core business logic, target business outcomes, user-visible behavior changes, and member-spec implementation guidance; those belong in normal spec files.
30
- - **`tasks.md` checklist items**: **every** `- [ ]` **MUST** specify (a) concrete file/function target, (b) specific modification and expected outcome, (c) a verification hook—**no** vague rows (`Implement integration`, `Add tests`). Forbidden vague items **MUST** be rewritten before approval.
31
- - **MUST** use `test-case-strategy` when planning non-trivial logic tests and checklist mapping (test IDs, drift checks). Every **non-trivial** `tasks.md` implementation item **MUST** name a focused unit drift check, another concrete verification hook, or **`N/A`** with a concrete reason.
32
- - **MUST NOT** modify implementation code before **explicit user approval** of the spec set. Clarifications **MUST** sync across affected files and **MUST** re-trigger approval. If scope becomes a **different issue**, **MUST** stop editing the old set and create a **new** `change_name`.
33
- - **MUST** when the proposed change touches the architecture surface (feature / sub-module add / rename / remove, edge add / remove, variable rows, function I/O rows, internal dataflow / error deltas), declare the proposed-after state **only** through `apltk architecture --spec <spec_dir> …` using the exact verbs, subverbs, and flags from **`apltk architecture --help`** (this file must not be treated as the command list). The CLI writes overlay YAML to `<spec_dir>/architecture_diff/atlas/` and renders only the affected proposed-after HTML pages under `<spec_dir>/architecture_diff/` for single-spec plans. For batch plans, passing any member spec path to `--spec` resolves to the shared batch-root overlay beside `coordination.md`, so the whole batch maintains **one** `architecture_diff/atlas/` and **one** rendered architecture diff. **`apltk architecture diff`** then builds a paginated **before/after viewer**: it walks every `docs/plans/**/architecture_diff/` tree, pairs each overlay HTML path with the matching file under `resources/project-architecture/` when it exists, and labels pages **modified**, **added**, or **removed** (via `_removed.txt` / removal manifests) so reviewers can scroll the whole architecture delta without opening files by hand. **MUST NOT** hand-author anything under `architecture_diff/**` — the renderer owns layout, DOM, CSS, ARIA, and pan/zoom. Use this skill’s `references/TEMPLATE_SPEC.md` for field/enum schema; use `init-project-html/SKILL.md` for semantic rules (**subagent gate** + edge kinds + dataflow integrity). When using subagents to draft atlas overlay, the authoring agent **MUST** wait until **all** feature subagents finish before declaring cross-feature **`edge`** (or overlay **`meta`** / **`actor`** that only exists to stitch features), matching `init-project-html` / `spec-to-project-html`.
34
- - Write prose in the **user’s language** by default; keep requirement/task/test IDs traceable across `spec.md`, `tasks.md`, and `checklist.md`.
35
- - **MUST** use **kebab-case** `change_name`; **MUST NOT** use spaces or arbitrary special characters in names.
36
-
37
- ## Standards (summary)
38
-
39
- - **Evidence**: Official docs when externally constrained; record cites in `spec.md` / `contract.md`.
40
- - **Execution**: Scaffold → fill templates in place → clarification loop → approval gate → (later) backfill after implementation.
41
- - **Quality**: Synchronized artifacts; **`tasks.md`** is unique runnable granularity; **`design.md`/`contract.md`** constrain and orient without mirroring checklist rows—**`TBD`/honest `None`** when facts missing.
42
- - **Output**: `docs/plans/{YYYY-MM-DD}/{change_name}/` or `docs/plans/{YYYY-MM-DD}/{batch_name}/{change_name}/`; batch root `coordination.md` when intentionally parallel; `preparation.md` only when prerequisite batch work is required first.
43
-
44
- ## Workflow
45
-
46
- **Chain-of-thought:** For every subsection **`N)`**, answer **`Pause →`** prompts before scaffolding or authoring the next subsection; unanswered external constraints or ambiguous scope mean **stop** or **loop** clarifications—not silent drafting.
47
-
48
- ### 1) Inputs and evidence
49
-
50
- Confirm workspace root, feature title, kebab-case `change_name`. Review minimal code/config. **Mandatory** official-doc pass when external systems apply; note sources for `spec.md` / `contract.md`. Inspect existing `docs/plans/`—reuse a set **only** when it matches **this** issue; otherwise create a new directory.
51
- - **Pause →** Which **official** URLs or docs did I actually consult for each external dependency I plan to cite—URLs not opened are not citations?
52
- - **Pause →** Is the user ask the **same** issue as an existing nearby plan—or only **adjacent**, requiring a **new** `change_name`?
53
- - **Pause →** What is the smallest set of repo paths whose behavior I **must** read before writing requirements truthfully?
54
-
55
- ### 2) Scaffold planning files
56
-
57
- Identify concrete modules (≤3 per set; split if needed). Resolve shared collision: merge spec sets, additive-only ownership rules in `coordination.md`, or `preparation.md` when one-time shared prep is the only safe path.
58
-
59
- Run from this skill’s context (templates resolved from this skill dir):
60
-
61
- ```bash
62
- WORKSPACE_ROOT=<target_project_root>
63
- apltk create-specs "<feature_name>" --change-name <kebab-case> --output-dir "$WORKSPACE_ROOT/docs/plans"
64
- ```
65
-
66
- Multi-spec parallel batch: add `--batch-name <kebab-case>` and `--with-coordination`. **Only** if parallel safety needs prior shared work: add `--with-preparation`.
67
-
68
- Always materialize: `spec.md`, `tasks.md`, `checklist.md`, `contract.md`, `design.md` from `references/templates/`. Add `coordination.md` / `preparation.md` at batch root only when flags require. Save under `docs/plans/{YYYY-MM-DD}/...`. After generation, fill in place **without** stripping section headings unless truly N/A (document inline); drop unused repeatable blocks (extra component or dependency stubs). Run a **template-drift pass** before approval: required fields covered, placeholders removed or justified.
69
- - **Pause →** List the **module names** (≤3) this spec set will touch; if more, where is my **split plan**?
70
- - **Pause →** For every shared file two specs might touch, where is the **named** resolution in `coordination.md` or why is `preparation.md` required instead?
71
- - **Pause →** Did I run `apltk create-specs` from the **skill** context so template paths resolve correctly?
72
-
73
- ### 3) Author content (fill templates)
74
-
75
- - **`spec.md`**: Concrete scope; BDD (`GIVEN` / `WHEN` / `THEN` / `AND` / `Requirements`); testable requirements; boundaries, auth, failure, idempotency/concurrency/integrity where relevant; doc references; `3-5` clarification questions or `None`.
76
- - **`tasks.md`**: `## **Task N: [Title]**` with Purpose, Requirements, Scope, Out of scope; atomic `- N [ ]` triple (path · change · verify). **Derive sequencing and decomposition from** **`spec.md` + `design.md` + `contract.md`**; **`tasks.md` stays the only enumerated runnable checklist**. Optionally cite **`INT-###` / `EXT-###`** on rows an anchor constrains—and **keep design/contract coarser**, never a second copy of checklist lines. Integrate `test-case-strategy` for drift checks where needed.
77
- - **`contract.md`**: Cite-backed **external facts / limits / failure semantics / security**, plus **`EXT-###`** integration **anchors** (typically fewer rows than **`tasks.md` items)—**constraints and anti-hallucination context**, **not** a parallel implementation runbook (`TBD` instead of guesses; **`Dependencies` → None** when genuinely no externals).
78
- - **`design.md`**: **High-level architectural context for composing `tasks.md`**—baseline/target shape, boundaries, modules, **`INT-###`** coarse coupling/order hints (`task` granularity lives only in **`tasks.md`**). No file-level chores; batches defer ownership grids to **`coordination.md`**; **`preparation.md`** assumed done—don't replay prep execution here.
79
- - **`coordination.md`** (batch root, parallel only): **Business Goals** (outcome, member specs, parallel readiness, exclusions, blockers → `preparation.md` or list); **Design Principles** (baseline, shared invariants, compat, cleanup—high level); **Spec Boundaries** → **Ownership Map** (allowed/forbidden touchpoints per spec) and **Collisions & Integration** (shared-file rules, freeze owners, merge order, checkpoints, re-coordination trigger)—**every** collision candidate **MUST** have a named resolution.
80
- - **`preparation.md`** (batch root, only if required): Preparation Goal (why, no core business logic, dependents, start condition); **Task P[N]** like `tasks.md` (atomic triple items); **Validation**; **Handoff** (assumptions, must-not-change, if prep changes later). Strip duplicate prep from member specs.
81
- - **`checklist.md`**: `- [ ]` adapted to scope; map behaviors to requirement/test IDs via `test-case-strategy`; behavior lines `[CL-xx]: … — R?.? → [Test IDs] — Result: …`; property-based logic **required** unless `N/A` + reason; honest execution/completion records—**no** checking unused examples or unchosen options.
82
- - **Pause →** Pick one **random** `tasks.md` checkbox: does it still fail the triple rule (target, change, verify)—if yes, rewrite now?
83
- - **Pause →** Does every **R** requirement ID I care about appear in `tasks.md` or `checklist.md` with a test or explicit `N/A`?
84
- - **Pause →** Do **`design.md` / `contract.md`** stay **coarser than `tasks.md`** (no mirrored checkbox choreography / file paths)—yet still constrain ordering and forbidden hallucinations?
85
- - **Pause →** For parallel batches, does `design.md` **avoid** duplicating batch ownership grids already locked in **`coordination.md`**?
86
-
87
- ### 3.5) Architecture overlay + diff viewer (only when the proposal touches the architecture surface)
88
-
89
- When the spec changes a feature module, sub-module, edge, variable row, function I/O row, internal dataflow, or error row:
90
-
91
- **Completion standard:** the overlay is not complete until every intended cross-feature **edge**, every feature-to-feature dependency or call/return relationship, and every sub-module-to-sub-module relationship inside the affected scope has been declared precisely through the CLI. It is **not** acceptable to leave relationship structure implied only by prose in `spec.md` / `design.md`; the architecture diff must explicitly express the real proposed-after topology.
92
-
93
- 1. **Discover commands:** run **`apltk architecture --help`** in the target workspace; use that output for every `add` / `set` / `remove` / `reorder` spelling and required flag. Do not copy long command tables from skills — they go stale.
94
- 2. **Declare proposed-after state** with `apltk architecture --spec <spec_dir> …` for each mutation (pass `--no-render` while batching if you prefer a single render at the end). In a batch, keep using the member spec path; the CLI resolves writes to the batch-root `architecture_diff/` beside `coordination.md`.
95
- 3. **`apltk architecture render --spec <spec_dir>`** — emits/updates only the HTML files touched by this overlay plus assets. In a batch, this updates the shared batch-root render.
96
- 4. **`apltk architecture validate --spec <spec_dir>`** — **MUST** return OK before the spec is approval-ready (resolve dangling edges, unknown enums, bad dataflow references). In a batch, this validates the shared batch-root overlay.
97
- 5. **`apltk architecture diff`** — **MUST** run before hand-off when atlas changed; confirm the paginated viewer shows sensible **modified** / **added** / **removed** counts and that each interesting path pairs correctly (base `resources/project-architecture/…` vs the spec or batch-root `architecture_diff/…`). Use this pass to verify that the rendered graph actually contains the full intended relationship set: all relevant feature-level seams, all required sub-module seams, and no missing edge that the design prose depends on. A page appearing as **remove + add** instead of **modified** usually means a **slug rename** was split wrong — fix with intentional remove+add or a single coherent mutation sequence.
98
-
99
- **Where files land:** single-spec plans write overlay YAML under `<spec_dir>/architecture_diff/atlas/` and rendered proposed-after HTML under `<spec_dir>/architecture_diff/`. Batch plans write both under the batch root beside `coordination.md`, even when the CLI call uses a member spec path. Cross-feature edges whose far endpoint exists only in the **base** atlas still resolve when merged — but you **must** `validate` to catch mistakes.
100
-
101
- **Subagent coordination:** if multiple features are drafted in parallel, **do not** declare cross-feature **`edge`** (or overlay **`meta` / `actor`** used only to stitch features) until **all** feature workers report done — see `init-project-html/SKILL.md` Rule 3 and `spec-to-project-html`.
102
-
103
- **Do not hand-edit** any file under `architecture_diff/`.
104
-
105
- - **Pause →** Did I touch any file under `architecture_diff/` by hand? Revert and re-run the CLI verb instead.
106
- - **Pause →** Does `apltk architecture validate --spec <spec_dir>` return OK?
107
- - **Pause →** Does `apltk architecture diff` pair the spec’s pages correctly?
108
- - **Pause →** Have I explicitly declared every intended edge, feature-to-feature relationship, and sub-module relationship in the CLI output, or am I still relying on prose to imply missing structure?
109
-
110
- ### 4) Clarifications and approval
111
-
112
- On answers: update clarification/approval section in `checklist.md` first, then any of `spec.md`, `tasks.md`, `checklist.md`, `contract.md`, `design.md`; **MUST** obtain approval again after material edits. **MUST NOT** touch product code pre-approval.
113
- - **Pause →** Am I about to “just fix a small bug” in product code before explicit approval—**why is that not a hard stop**?
114
- - **Pause →** After the last edit, does the user still owe an **explicit** approval token, or did I assume silence means yes?
115
-
116
- ### 5) Backfill after implementation
117
-
118
- When implementation exists: mark `tasks.md`; sync `checklist.md` outcomes/`N/A`; fix `contract.md` / `design.md` if reality diverged; update `coordination.md` / `preparation.md` if ownership or prep status changed. Checklist complete **only** for work actually done or decisions actually taken; separate rows for divergent flows; remove stale placeholders.
119
- - **Pause →** For each checked item, what **evidence** (commit, test log) would a reviewer use to agree it is true?
120
- - **Pause →** Did implementation reality change **shared** ownership or prep assumptions—if so, which batch file records that?
121
-
122
- ## Sample hints
123
-
124
- - **`tasks.md` line — bad**: `- [ ] Add tests` → **reject** (no path, change, verifier).
125
- - **`tasks.md` line — ok (with ledger wiring)**:
126
- `- [ ] 2 src/api/handlers/oauth.rs — implement handler path for POST /oauth/token satisfying INT-003, INT-004 · EXT-001 client config loaded from env per contract · Verify: cargo test oauth::handlers::token_exchange`
127
- - **Batch scaffold** (three member specs): `WORKSPACE_ROOT=... apltk create-specs "OAuth batch" --change-name oauth-api --batch-name oauth-may-batch --with-coordination --output-dir "$WORKSPACE_ROOT/docs/plans"` (then repeat or use generator rules for additional `change-name` dirs as your tooling permits).
128
- - **`checklist.md` behavior row sketch**: `[CL-01]: invalid token rejected — R2.1 → TU-Scope-01,TU-Scope-02 — Result: pending`
129
- - **Split-trigger**: change touches `src/auth/*`, `src/cli/*`, `src/db/*`, `infra/terraform/*` (four modules) ⇒ **minimum two spec sets**, not one.
130
-
131
- ## References
132
-
133
- - `test-case-strategy`: test design and drift checks
134
- - `scripts/create-specs` / `apltk create-specs`: generator
135
- - `references/templates/spec.md`, `tasks.md`, `checklist.md`, `contract.md`, `design.md`, `coordination.md`, `preparation.md`: binding templates
9
+ ## 目標
10
+ 將用戶需求轉化為明確、有清晰完成條件的spec。
11
+
12
+ ## 驗收條件
13
+ - 已經產出了嚴格遵循模板格式的spec。
14
+ - 為spec當中的需求制定了明確的驗收條件及測試策略
15
+
16
+ ## 工作流程
17
+ 1. 理解用戶需求並閱讀repo
18
+ 分析用戶需求,並在repo之中搜索、列出可能相關的內容。完成搜索之後,深入閱讀相關代碼,識別變更範圍。
19
+ 如果外部環境存在subagents功能,建議通過調度subagents來完成深入閱讀repo的任務。
20
+
21
+ 2. 拆分用戶需求及設計業務架構
22
+ 將用戶需求轉化、拆分為明確、存在邊界的工程需求。結合現有代碼,設計業務架構。在設計的過程中,你需要考慮包括但不限於以下設計事項:
23
+ - 錯誤處理
24
+ - 測試策略
25
+ - 模塊之間的呼叫、回傳
26
+ - 資料流
27
+ 在這個階段,如果用戶有任何不清晰的需求,且該需求會影響你的設計方案,你需要紀錄並在稍後填入spec,等待用戶的回答。
28
+
29
+ 3. 將整個設計方案拆分成可執行任務
30
+ 將上一步之中你構思的完整設計方案拆分為精確到函式或檔案級別的任務。你必須確保每一個任務都是可以直接執行,且沒有歧義的。以此確保執行設計方案的開發者不會偏離設計方案。
31
+
32
+ 4. 制定驗收條件
33
+ 為任務制定基於測試的驗收條件,確保每一個任務在完成之後都能夠被驗證。
34
+ 同時,為需求制定驗收條件,確保用戶需求能夠被測試清晰地驗收、檢驗成果。
35
+
36
+ 5. 使用 `apltk` cli工具協助完成spec
37
+ 使用cli工具,產生spec的模板。將你的完整計劃填入到模板之中,並通過cli工具生成完整架構圖讓用戶審閱。
38
+ 如果該spec設計超過三個模塊,則需要創建batch spec。
39
+
40
+ ## 範例
41
+ - "製作一個網頁德州撲克小遊戲" -> "拆分成多個模塊:遊戲本體邏輯、前端頁面渲染、前端頁面交互邏輯;制定單元測試、整合測試等策略,並製作一份單一的spec指導實作工作。"
42
+ - "提升現有系統的性能" -> "識別目前repo之中拖累性能的代碼。製作batch spec文檔,將repo的全量優化拆分為以三個模塊為一組的優化。對於必須改動業務邏輯才可以做到的性能提升,填寫clarification questions,並等待用戶回答之後更新spec。"
43
+
44
+ ## 參考資料
45
+ - `scripts/create-specs` - `apltk create-specs` 背後使用的模板產生器。
46
+ - `references/templates/spec.md` - `spec.md` 的綁定模板。
47
+ - `references/templates/tasks.md` - `tasks.md` 的綁定模板。
48
+ - `references/templates/checklist.md` - `checklist.md` 的綁定模板。
49
+ - `references/templates/contract.md` - `contract.md` 的綁定模板。
50
+ - `references/templates/design.md` - `design.md` 的綁定模板。
51
+ - `references/templates/coordination.md` - batch root 的 coordination 模板。
52
+ - `references/templates/preparation.md` - batch root 的前置工作模板。
53
+ - `references/TEMPLATE_SPEC.md` - `apltk` cli工具相關格式指引。
54
+ - `test-case-strategy/SKILL.md` - 測試策略選擇技能。
55
+ - `apltk create-specs --help` - spec生成相關cli工具的指引命令
56
+ - `apltk architecture --help` - 架構圖生成相關cli工具的指引命令
@@ -9,7 +9,6 @@
9
9
 
10
10
  - Batch members: [[spec-name-1], [spec-name-2]]
11
11
  - Shared outcome: [what the batch delivers when all spec sets land]
12
- - Parallel readiness: [Yes / No; if No, list blocking items or link to preparation.md]
13
12
  - Out of scope: [shared exclusions for the batch]
14
13
 
15
14
  ## Design Principles