@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.
- package/CHANGELOG.md +33 -0
- package/README.md +0 -2
- package/align-project-documents/SKILL.md +20 -69
- package/align-project-documents/references/templates/standardized-docs-template.md +1 -1
- package/analyse-app-logs/scripts/__pycache__/filter_logs_by_time.cpython-312.pyc +0 -0
- package/analyse-app-logs/scripts/__pycache__/log_cli_utils.cpython-312.pyc +0 -0
- package/analyse-app-logs/scripts/__pycache__/search_logs.cpython-312.pyc +0 -0
- package/archive-specs/SKILL.md +18 -70
- package/commit-and-push/SKILL.md +24 -52
- package/develop-new-features/SKILL.md +15 -60
- package/discover-edge-cases/SKILL.md +16 -75
- package/discover-security-issues/SKILL.md +49 -83
- package/docs-to-voice/SKILL.md +3 -30
- package/docs-to-voice/scripts/__pycache__/docs_to_voice.cpython-312.pyc +0 -0
- package/enhance-existing-features/SKILL.md +36 -57
- package/generate-spec/SKILL.md +51 -130
- package/generate-spec/references/templates/coordination.md +0 -1
- package/generate-spec/scripts/__pycache__/create-specscpython-312.pyc +0 -0
- package/implement-specs/SKILL.md +27 -62
- package/implement-specs-with-subagents/SKILL.md +28 -71
- package/implement-specs-with-worktree/SKILL.md +38 -62
- package/init-project-html/SKILL.md +27 -137
- package/init-project-html/lib/atlas/cli.js +897 -43
- package/init-project-html/scripts/architecture.js +4 -25
- package/katex/scripts/__pycache__/render_katex.cpython-312.pyc +0 -0
- package/lib/cli.js +166 -20
- package/lib/tool-runner.js +418 -2
- package/maintain-project-constraints/SKILL.md +24 -78
- package/maintain-project-constraints/references/constraint-file-reference.md +58 -0
- package/merge-changes-from-local-branches/SKILL.md +36 -99
- package/open-github-issue/SKILL.md +7 -98
- package/open-github-issue/scripts/__pycache__/open_github_issue.cpython-312.pyc +0 -0
- package/optimise-skill/SKILL.md +7 -6
- package/optimise-skill/references/definition.md +38 -0
- package/optimise-skill/references/example_skill.md +7 -6
- package/package.json +1 -1
- package/read-github-issue/SKILL.md +6 -46
- package/read-github-issue/scripts/__pycache__/find_issues.cpython-312.pyc +0 -0
- package/read-github-issue/scripts/__pycache__/read_issue.cpython-312.pyc +0 -0
- package/resolve-review-comments/SKILL.md +4 -26
- package/resolve-review-comments/scripts/__pycache__/review_threads.cpython-312.pyc +0 -0
- package/review-change-set/SKILL.md +41 -91
- package/review-codebases/SKILL.md +42 -99
- package/review-spec-related-changes/SKILL.md +42 -77
- package/scripts/validate_openai_agent_config.py +16 -1
- package/scripts/validate_skill_frontmatter.py +16 -1
- package/solve-issues-found-during-review/SKILL.md +38 -66
- package/spec-to-project-html/SKILL.md +27 -88
- package/submission-readiness-check/SKILL.md +35 -55
- package/systematic-debug/SKILL.md +37 -53
- package/test-case-strategy/SKILL.md +38 -85
- package/text-to-short-video/scripts/__pycache__/enforce_video_aspect_ratio.cpython-312.pyc +0 -0
- package/update-project-html/SKILL.md +25 -110
- package/version-release/SKILL.md +39 -74
- package/weekly-financial-event-report/scripts/extract_pdf_text_pdfkit.swift +32 -4
- package/archive-specs/references/templates/architecture.md +0 -21
- package/archive-specs/references/templates/docs-index.md +0 -39
- package/archive-specs/references/templates/features.md +0 -25
- package/archive-specs/references/templates/principles.md +0 -28
- package/maintain-skill-catalog/README.md +0 -18
- package/maintain-skill-catalog/SKILL.md +0 -72
- 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
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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 與測試模板範例,用於補充報告中的攻擊形狀與驗證描述。
|
package/docs-to-voice/SKILL.md
CHANGED
|
@@ -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
|
-
##
|
|
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
|
|
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`.
|
|
Binary file
|
|
@@ -1,77 +1,56 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: enhance-existing-features
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
-
#
|
|
8
|
+
# 增強既有功能
|
|
10
9
|
|
|
11
10
|
## Dependencies
|
|
12
11
|
|
|
13
|
-
- Required: `test-case-strategy`
|
|
14
|
-
- Conditional:
|
|
15
|
-
- Optional:
|
|
16
|
-
- Fallback:
|
|
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
|
-
##
|
|
17
|
+
## Standards
|
|
19
18
|
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
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
|
-
##
|
|
24
|
+
## 技能目標
|
|
29
25
|
|
|
30
|
-
|
|
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
|
-
##
|
|
28
|
+
## 驗收條件
|
|
36
29
|
|
|
37
|
-
|
|
30
|
+
- 在動手前已讀懂受影響模組、入口點、整合邊界與變更爆炸半徑
|
|
31
|
+
- 已正確判斷這次工作是直接實作還是必須先走 `generate-spec` / `recover-missing-plan`
|
|
32
|
+
- 每個非平凡變更都經過 `test-case-strategy`,並留下清楚的 oracle、驗證方式與 `N/A` 理由
|
|
33
|
+
- 若使用了 spec,則批准、實作、回填與真實狀態同步全部完成;若未使用 spec,則最終摘要足以說明風險、測試與限制
|
|
38
34
|
|
|
39
|
-
|
|
35
|
+
## 工作流程
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
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
|
-
|
|
45
|
+
## 使用範例
|
|
45
46
|
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
|
|
47
|
+
- 「新增一套影響 API、資料庫與 UI 的權限模型」-> 先走 `generate-spec`,批准後再實作,並補上跨層測試
|
|
48
|
+
- 「修正分頁 off-by-one,讓行為回到 README 描述」-> 不開 spec,直接修復並加回歸測試
|
|
49
|
+
- 「目前指定的 `docs/plans/...` 不見了,但使用者要沿著它繼續做」-> 先用 `recover-missing-plan` 還原或重建,再繼續
|
|
49
50
|
|
|
50
|
-
|
|
51
|
+
## 參考資料索引
|
|
51
52
|
|
|
52
|
-
-
|
|
53
|
-
|
|
54
|
-
|
|
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`:使用者要求提交或推送時的最終交付流程
|
package/generate-spec/SKILL.md
CHANGED
|
@@ -1,135 +1,56 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: generate-spec
|
|
3
3
|
description: >-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
|
Binary file
|