alp-code 0.9.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 (204) hide show
  1. package/CHANGELOG.md +770 -0
  2. package/LICENSE +21 -0
  3. package/README.md +295 -0
  4. package/alp.config.yaml +5 -0
  5. package/dist/src/agents/agent-definition.js +28 -0
  6. package/dist/src/agents/capability-catalog.js +33 -0
  7. package/dist/src/agents/compaction.js +36 -0
  8. package/dist/src/agents/errors.js +12 -0
  9. package/dist/src/agents/librarian.js +38 -0
  10. package/dist/src/agents/main.js +37 -0
  11. package/dist/src/agents/memory-grant.js +29 -0
  12. package/dist/src/agents/model-context.js +70 -0
  13. package/dist/src/agents/modes.js +134 -0
  14. package/dist/src/agents/oracle.js +36 -0
  15. package/dist/src/agents/read-thread.js +38 -0
  16. package/dist/src/agents/registry.js +238 -0
  17. package/dist/src/agents/render-identity.js +38 -0
  18. package/dist/src/agents/review.js +37 -0
  19. package/dist/src/agents/search.js +37 -0
  20. package/dist/src/agents/shared/house-rules.js +33 -0
  21. package/dist/src/agents/shared/principal.js +18 -0
  22. package/dist/src/agents/shared/voice.js +29 -0
  23. package/dist/src/agents/titling.js +32 -0
  24. package/dist/src/agents/types.js +15 -0
  25. package/dist/src/backend/execution-backend.js +2 -0
  26. package/dist/src/backend/local-execution-store.js +144 -0
  27. package/dist/src/backend/local-process-backend.js +533 -0
  28. package/dist/src/backend/local-supervisor.js +104 -0
  29. package/dist/src/cli/alp.js +380 -0
  30. package/dist/src/cli/commands/context.js +203 -0
  31. package/dist/src/cli/commands/delegate.js +136 -0
  32. package/dist/src/cli/commands/identity-sync.js +31 -0
  33. package/dist/src/cli/commands/init.js +184 -0
  34. package/dist/src/cli/commands/mode.js +22 -0
  35. package/dist/src/cli/commands/principal.js +114 -0
  36. package/dist/src/cli/commands/run-main.js +90 -0
  37. package/dist/src/cli/commands/runtime.js +21 -0
  38. package/dist/src/cli/mode-preference-store.js +62 -0
  39. package/dist/src/cli/mode-selector.js +178 -0
  40. package/dist/src/cli/update-check.js +77 -0
  41. package/dist/src/context/checkpoint.js +134 -0
  42. package/dist/src/context/compact-journal.js +153 -0
  43. package/dist/src/context/compact-payload.js +121 -0
  44. package/dist/src/context/continuity.js +70 -0
  45. package/dist/src/context/types.js +2 -0
  46. package/dist/src/delegation/backend-registry.js +40 -0
  47. package/dist/src/delegation/delegation-service.js +300 -0
  48. package/dist/src/delegation/types.js +12 -0
  49. package/dist/src/execution/execution-policy.js +96 -0
  50. package/dist/src/execution/execution-service.js +115 -0
  51. package/dist/src/execution/execution-store.js +78 -0
  52. package/dist/src/execution/identity-capsule.js +65 -0
  53. package/dist/src/execution/types.js +12 -0
  54. package/dist/src/hooks/execution-bridge.js +84 -0
  55. package/dist/src/index.js +4 -0
  56. package/dist/src/memory/adapters/markdown-file-store.js +257 -0
  57. package/dist/src/memory/adapters/memory-api-client.js +2 -0
  58. package/dist/src/memory/adapters/memory-path-mapper.js +76 -0
  59. package/dist/src/memory/adapters/remote-api-store.js +25 -0
  60. package/dist/src/memory/context-ranker.js +21 -0
  61. package/dist/src/memory/errors.js +58 -0
  62. package/dist/src/memory/memory-service.js +149 -0
  63. package/dist/src/memory/memory-store.js +2 -0
  64. package/dist/src/memory/types.js +2 -0
  65. package/dist/src/policy/capability-policy.js +29 -0
  66. package/dist/src/policy/delegation-policy.js +25 -0
  67. package/dist/src/policy/errors.js +10 -0
  68. package/dist/src/policy/invariants.js +31 -0
  69. package/dist/src/policy/memory-policy.js +22 -0
  70. package/dist/src/policy/policy-engine.js +85 -0
  71. package/dist/src/policy/types.js +8 -0
  72. package/dist/src/policy/workspace-policy.js +77 -0
  73. package/dist/src/principal/principal-profile-store.js +89 -0
  74. package/dist/src/runtime/adapter-files.js +147 -0
  75. package/dist/src/runtime/claude-adapter.js +177 -0
  76. package/dist/src/runtime/codex-adapter.js +169 -0
  77. package/dist/src/runtime/permission-rules.js +156 -0
  78. package/dist/src/runtime/render-session-context.js +124 -0
  79. package/dist/src/runtime/render-task-input.js +33 -0
  80. package/dist/src/runtime/runtime-adapter.js +2 -0
  81. package/dist/src/runtime/runtime-preference-store.js +66 -0
  82. package/dist/src/runtime/runtime-selector.js +178 -0
  83. package/dist/src/runtime/types.js +2 -0
  84. package/dist/src/runtime/windows-shim.js +57 -0
  85. package/dist/src/state-paths.js +49 -0
  86. package/dist/src/workflow/output-validator.js +27 -0
  87. package/dist/src/workflow/repair-policy.js +8 -0
  88. package/dist/src/workflow/types.js +22 -0
  89. package/dist/src/workflow/workflow-runner.js +81 -0
  90. package/hooks/compact-record.cjs +109 -0
  91. package/hooks/session-boot.cjs +112 -0
  92. package/hooks/session-end.cjs +34 -0
  93. package/package.json +48 -0
  94. package/scaffold/memory/INDEX.md +27 -0
  95. package/scaffold/memory/README.md +76 -0
  96. package/scaffold/memory/projects/INDEX.md +22 -0
  97. package/scaffold/memory/projects/PROTOCOL.md +128 -0
  98. package/scaffold/memory/projects/_template/PROJECT.md +45 -0
  99. package/scripts/alp.cjs +126 -0
  100. package/scripts/alp.ps1 +4 -0
  101. package/scripts/alp.sh +3 -0
  102. package/scripts/bootstrap.cjs +144 -0
  103. package/scripts/checkout-release.cjs +30 -0
  104. package/scripts/delegate.cjs +19 -0
  105. package/scripts/doctor.cjs +158 -0
  106. package/scripts/doctor.sh +3 -0
  107. package/scripts/ensure-state.cjs +22 -0
  108. package/scripts/lib/cli-link.cjs +375 -0
  109. package/scripts/lib/codex-role.cjs +18 -0
  110. package/scripts/lib/delegation/command-runner.cjs +108 -0
  111. package/scripts/lib/delegation/config.cjs +81 -0
  112. package/scripts/lib/install-paths.cjs +154 -0
  113. package/scripts/lib/release-manifest.cjs +42 -0
  114. package/scripts/lib/semver-lite.cjs +20 -0
  115. package/scripts/lib/state.cjs +274 -0
  116. package/scripts/lib/uninstall.cjs +252 -0
  117. package/scripts/lib/update-check-worker.cjs +21 -0
  118. package/scripts/lib/update.cjs +395 -0
  119. package/scripts/run-role.cjs +42 -0
  120. package/scripts/run-role.ps1 +4 -0
  121. package/scripts/run-role.sh +3 -0
  122. package/scripts/sync-project-index.sh +167 -0
  123. package/skills/agent-memory/SKILL.md +109 -0
  124. package/skills/alp-debug/SKILL.md +90 -0
  125. package/skills/alp-debug/references/defense-in-depth.md +118 -0
  126. package/skills/alp-debug/references/investigation-methodology.md +106 -0
  127. package/skills/alp-debug/references/log-and-ci-analysis.md +96 -0
  128. package/skills/alp-debug/references/performance-diagnostics.md +112 -0
  129. package/skills/alp-debug/references/reporting-standards.md +120 -0
  130. package/skills/alp-debug/references/root-cause-tracing.md +134 -0
  131. package/skills/alp-debug/references/systematic-debugging.md +93 -0
  132. package/skills/alp-debug/references/verification.md +86 -0
  133. package/skills/alp-debug/scripts/find-polluter.sh +63 -0
  134. package/skills/alp-debug/scripts/find-polluter.test.md +102 -0
  135. package/skills/alp-plan/SKILL.md +128 -0
  136. package/skills/alp-plan/references/archive-workflow.md +77 -0
  137. package/skills/alp-plan/references/codebase-understanding.md +55 -0
  138. package/skills/alp-plan/references/output-standards.md +96 -0
  139. package/skills/alp-plan/references/plan-organization.md +129 -0
  140. package/skills/alp-plan/references/red-team-personas.md +76 -0
  141. package/skills/alp-plan/references/red-team-workflow.md +81 -0
  142. package/skills/alp-plan/references/research-phase.md +57 -0
  143. package/skills/alp-plan/references/scope-challenge.md +82 -0
  144. package/skills/alp-plan/references/solution-design.md +76 -0
  145. package/skills/alp-plan/references/validate-question-framework.md +89 -0
  146. package/skills/alp-plan/references/validate-workflow.md +83 -0
  147. package/skills/alp-predict/SKILL.md +98 -0
  148. package/skills/alp-scenario/SKILL.md +86 -0
  149. package/skills/code-review/SKILL.md +111 -0
  150. package/skills/code-review/references/code-review-reception.md +114 -0
  151. package/skills/code-review/references/edge-case-scouting.md +78 -0
  152. package/skills/code-review/references/verification-before-completion.md +117 -0
  153. package/skills/delegation/SKILL.md +46 -0
  154. package/skills/docs-seeker/.env.example +15 -0
  155. package/skills/docs-seeker/SKILL.md +87 -0
  156. package/skills/docs-seeker/package.json +25 -0
  157. package/skills/docs-seeker/references/advanced.md +82 -0
  158. package/skills/docs-seeker/references/context7-patterns.md +68 -0
  159. package/skills/docs-seeker/references/errors.md +72 -0
  160. package/skills/docs-seeker/scripts/analyze-llms-txt.js +211 -0
  161. package/skills/docs-seeker/scripts/detect-topic.js +172 -0
  162. package/skills/docs-seeker/scripts/fetch-docs.js +213 -0
  163. package/skills/docs-seeker/scripts/tests/run-tests.js +72 -0
  164. package/skills/docs-seeker/scripts/tests/test-analyze-llms.js +119 -0
  165. package/skills/docs-seeker/scripts/tests/test-detect-topic.js +112 -0
  166. package/skills/docs-seeker/scripts/tests/test-fetch-docs.js +84 -0
  167. package/skills/docs-seeker/scripts/utils/env-loader.js +94 -0
  168. package/skills/docs-seeker/workflows/library-search.md +73 -0
  169. package/skills/docs-seeker/workflows/repo-analysis.md +90 -0
  170. package/skills/docs-seeker/workflows/topic-search.md +69 -0
  171. package/skills/git/SKILL.md +121 -0
  172. package/skills/git/references/branch-management.md +90 -0
  173. package/skills/git/references/commit-standards.md +82 -0
  174. package/skills/git/references/gh-cli-guide.md +132 -0
  175. package/skills/git/references/safety-protocols.md +86 -0
  176. package/skills/git/references/workflow-commit.md +89 -0
  177. package/skills/git/references/workflow-merge.md +63 -0
  178. package/skills/git/references/workflow-pr.md +70 -0
  179. package/skills/git/references/workflow-push.md +62 -0
  180. package/skills/gkg/SKILL.md +87 -0
  181. package/skills/gkg/references/cli-commands.md +92 -0
  182. package/skills/gkg/references/http-api.md +99 -0
  183. package/skills/gkg/references/language-support.md +54 -0
  184. package/skills/problem-solving/SKILL.md +86 -0
  185. package/skills/problem-solving/references/attribution.md +48 -0
  186. package/skills/problem-solving/references/collision-zone-thinking.md +71 -0
  187. package/skills/problem-solving/references/inversion-exercise.md +88 -0
  188. package/skills/problem-solving/references/meta-pattern-recognition.md +80 -0
  189. package/skills/problem-solving/references/scale-game.md +82 -0
  190. package/skills/problem-solving/references/simplification-cascades.md +83 -0
  191. package/skills/problem-solving/references/when-stuck.md +76 -0
  192. package/skills/repomix/SKILL.md +94 -0
  193. package/skills/repomix/references/configuration.md +134 -0
  194. package/skills/repomix/references/usage-patterns.md +106 -0
  195. package/skills/repomix/scripts/.coverage +0 -0
  196. package/skills/repomix/scripts/README.md +179 -0
  197. package/skills/repomix/scripts/repomix_batch.py +455 -0
  198. package/skills/repomix/scripts/repos.example.json +15 -0
  199. package/skills/repomix/scripts/requirements.txt +15 -0
  200. package/skills/repomix/scripts/tests/test_repomix_batch.py +531 -0
  201. package/skills/research/SKILL.md +107 -0
  202. package/skills/security-scan/SKILL.md +101 -0
  203. package/skills/security-scan/references/secret-patterns.md +75 -0
  204. package/skills/security-scan/references/vulnerability-patterns.md +136 -0
@@ -0,0 +1,73 @@
1
+ # Tìm tài liệu cả thư viện
2
+
3
+ **Dùng khi:** câu hỏi rộng về cả một thư viện/framework, hoặc khi tìm theo chủ đề trả 404.
4
+
5
+ Chậm hơn và tốn context hơn `topic-search.md`. **Thử đường chủ đề trước.**
6
+
7
+ ## Nhận dạng
8
+
9
+ - "tài liệu {thư viện}"
10
+ - "bắt đầu với {thư viện}"
11
+ - "{thư viện} dùng thế nào"
12
+ - "API reference của {thư viện}"
13
+
14
+ ## Quy trình
15
+
16
+ ```bash
17
+ # 1. Phân loại
18
+ node .claude/skills/docs-seeker/scripts/detect-topic.js "<câu hỏi>"
19
+ # → {"isTopicSpecific": false}
20
+
21
+ # 2. Lấy llms.txt
22
+ node .claude/skills/docs-seeker/scripts/fetch-docs.js "<câu hỏi>"
23
+ # → nội dung llms.txt, thường 5–20+ URL
24
+
25
+ # 3. Xếp hạng URL — BƯỚC KHÔNG ĐƯỢC BỎ
26
+ cat llms.txt | node .claude/skills/docs-seeker/scripts/analyze-llms-txt.js -
27
+ # → {totalUrls, grouped: {critical, important, supplementary}, distribution}
28
+ ```
29
+
30
+ Bước 3 là bước quyết định. 20 URL mà đọc hết thì phá ngân sách context của cả phiên. Script
31
+ xếp chúng thành ba nhóm — đọc `critical` trước, `important` nếu còn ngân sách, bỏ qua
32
+ `supplementary` trừ khi câu hỏi cần đúng phần đó.
33
+
34
+ ## Đọc bao nhiêu
35
+
36
+ Script có trường `distribution` gợi ý chia việc cho nhiều agent song song. **Bỏ qua trường
37
+ đó** nếu loadout không cho giao việc.
38
+
39
+ Dùng thứ tự đọc thay cho chia agent:
40
+
41
+ | Số URL | Cách làm |
42
+ |---|---|
43
+ | 1–3 | đọc hết bằng `WebFetch` |
44
+ | 4–10 | đọc nhóm `critical`, rồi `important` nếu còn ngân sách |
45
+ | 11+ | **chỉ** nhóm `critical`; nói rõ là đã cắt và cắt theo tiêu chí nào |
46
+
47
+ Cắt bớt thì phải nói rõ đã cắt gì. Im lặng cắt rồi trình bày như đã đọc hết là báo cáo sai.
48
+
49
+ ## Ví dụ — Astro
50
+
51
+ ```bash
52
+ node .claude/skills/docs-seeker/scripts/detect-topic.js "tài liệu Astro"
53
+ # {"isTopicSpecific": false}
54
+
55
+ node .claude/skills/docs-seeker/scripts/fetch-docs.js "tài liệu Astro"
56
+ # script gọi: context7.com/withastro/astro/llms.txt → 8 URL
57
+
58
+ node .claude/skills/docs-seeker/scripts/analyze-llms-txt.js < llms.txt
59
+ # {totalUrls: 8, grouped: {critical: [...], important: [...], ...}}
60
+ ```
61
+
62
+ Đọc `critical` (bắt đầu, cài đặt), rồi `important` (khái niệm lõi, component) nếu ngân
63
+ sách còn.
64
+
65
+ ## Khi không ra
66
+
67
+ Script tự fallback theo thứ tự:
68
+
69
+ 1. `fetch-docs.js` thử context7.com.
70
+ 2. 404 → gợi ý dùng `WebSearch` tìm `llms.txt` của dự án.
71
+ 3. Vẫn không có → `repo-analysis.md` (đọc thẳng repo GitHub).
72
+
73
+ Script lỗi thì **sửa rồi chạy lại cho tới khi được**, đừng bỏ script rồi tự đoán URL.
@@ -0,0 +1,90 @@
1
+ # Đọc thẳng repo — khi không có llms.txt
2
+
3
+ **Đường cuối cùng.** Chậm (5–10 phút), tốn context nhất. Chỉ dùng khi
4
+ `topic-search.md` và `library-search.md` đều không ra.
5
+
6
+ ## Khi nào
7
+
8
+ - Thư viện không có trên context7.com.
9
+ - Site chính thức không có `llms.txt`.
10
+ - Tài liệu tồn tại nhưng thiếu, phải đọc code mới rõ.
11
+
12
+ ## Quy trình
13
+
14
+ ### 1. Tìm repo
15
+
16
+ `WebSearch`: `"{thư viện} github repository"`
17
+
18
+ **Xác minh trước khi clone:** đúng repo chính thức chưa (không phải fork), còn hoạt động
19
+ không (commit gần đây), có `docs/` không. Clone nhầm một fork bỏ hoang rồi kết luận theo nó
20
+ là sai nguồn.
21
+
22
+ ### 2. Clone
23
+
24
+ ```bash
25
+ git clone <repo-url> /tmp/docs-analysis
26
+ ```
27
+
28
+ Cần đúng một phiên bản thì `git checkout <tag>`. **Luôn ghi lại tag/commit đã đọc** —
29
+ `research` yêu cầu ghi phiên bản kèm ngày cho mọi nguồn.
30
+
31
+ Clone về máy là tải mã nguồn lạ. Repo lớn hoặc không rõ nguồn gốc → **báo lại trước**.
32
+
33
+ ### 3. Đóng gói
34
+
35
+ ```bash
36
+ repomix --version || echo "chưa cài"
37
+ cd /tmp/docs-analysis
38
+ repomix --token-count-tree # XEM TRƯỚC token nằm ở đâu
39
+ repomix --include "README.md,docs/**,examples/**" -o repomix-output.xml
40
+ ```
41
+
42
+ Chưa cài `repomix` thì báo lại, đừng tự `npm install -g` (HOUSE-RULES §1.2).
43
+
44
+ **Chạy `--token-count-tree` trước và lọc bằng `--include`.** Gói cả repo rồi mới phát hiện
45
+ nó 200k token là hỏng cả phiên. Thứ bạn cần gần như luôn nằm ở `README.md`, `docs/`,
46
+ `examples/` — không phải toàn bộ `src/`.
47
+
48
+ ### 4. Đọc và rút
49
+
50
+ Đọc file đã gói, rút theo thứ tự:
51
+
52
+ | Nguồn trong repo | Cho biết |
53
+ |---|---|
54
+ | `README.md` | cài đặt, tổng quan, ví dụ tối thiểu |
55
+ | `docs/` | hướng dẫn dùng, API reference |
56
+ | `examples/` | mẫu code thật |
57
+ | `CHANGELOG.md` | breaking change, phiên bản |
58
+ | `src/` | chỉ khi tài liệu không trả lời được |
59
+
60
+ `CHANGELOG.md` hay bị bỏ qua mà nó là nguồn tốt nhất cho câu hỏi "bản này có gì đổi".
61
+
62
+ ### 5. Dọn
63
+
64
+ ```bash
65
+ rm -rf /tmp/docs-analysis
66
+ ```
67
+
68
+ Bỏ bước này thì lần sau clone đè lên bản cũ và bạn đọc nhầm phiên bản.
69
+
70
+ ## Ghi rõ khi báo cáo
71
+
72
+ Kết quả từ đường này **không phải tài liệu chính thức**. Bắt buộc ghi:
73
+
74
+ ```
75
+ Nguồn: đọc repo <org/repo> tại <tag hoặc commit>, ngày <…>
76
+ Lưu ý: rút từ code và README, không phải tài liệu chính thức
77
+ Sức khoẻ repo: <số sao, commit gần nhất>
78
+ ```
79
+
80
+ Dòng "sức khoẻ repo" quan trọng cho việc đánh giá của `research`: một thư viện không có
81
+ commit nào 18 tháng là thông tin, kể cả khi code của nó tốt.
82
+
83
+ ## Không có repo nào
84
+
85
+ Không tìm được repo thì nói thẳng: không có nguồn sơ cấp. Những gì gom được từ
86
+ blog, tutorial, Stack Overflow là **nguồn thứ cấp** — chất lượng không đều, phải đối chiếu
87
+ ít nhất hai nguồn độc lập, và phải ghi rõ là thứ cấp trong báo cáo.
88
+
89
+ Bản gốc của workflow này gợi ý "chia cho nhiều Researcher agent" — bỏ qua nếu loadout
90
+ không cho giao việc.
@@ -0,0 +1,69 @@
1
+ # Tìm tài liệu theo chủ đề cụ thể
2
+
3
+ **Dùng khi:** cần tài liệu về một tính năng / component / khái niệm cụ thể.
4
+
5
+ Nhanh nhất (10–15s), tốn ít token nhất, kết quả trúng đích nhất. **Đây là đường mặc định** —
6
+ chỉ chuyển sang tìm cả thư viện khi đường này không ra.
7
+
8
+ ## Nhận dạng
9
+
10
+ - "dùng {tính năng} trong {thư viện} thế nào?"
11
+ - "tài liệu {component} của {thư viện}"
12
+ - "triển khai {tính năng} bằng {thư viện}"
13
+
14
+ ## Quy trình
15
+
16
+ Đường dẫn tính từ CWD của phiên (`active workspace`), qua symlink skill.
17
+
18
+ ```bash
19
+ # 1. Phân loại truy vấn
20
+ node .claude/skills/docs-seeker/scripts/detect-topic.js "<câu hỏi>"
21
+ # → {"topic": "X", "library": "Y", "isTopicSpecific": true}
22
+
23
+ # 2. Lấy tài liệu — script tự dựng URL và tự fallback
24
+ node .claude/skills/docs-seeker/scripts/fetch-docs.js "<câu hỏi>"
25
+ # script gọi: context7.com/{library}/llms.txt?topic={topic}
26
+ # → nội dung llms.txt, thường 1–5 URL
27
+ ```
28
+
29
+ Rồi đọc URL bằng `WebFetch`.
30
+
31
+ **1–5 URL thì đọc thẳng.** Bản gốc của workflow này có bước "chia cho 2–3 Explorer agent
32
+ song song" — bỏ qua nếu loadout không cho giao việc. Đọc tuần tự, trong ngân sách 5 lượt
33
+ của `research`.
34
+
35
+ ## Ví dụ
36
+
37
+ **Date picker của shadcn**
38
+
39
+ ```bash
40
+ node .claude/skills/docs-seeker/scripts/detect-topic.js "dùng date picker trong shadcn thế nào?"
41
+ # {"topic": "date", "library": "shadcn/ui", "isTopicSpecific": true}
42
+
43
+ node .claude/skills/docs-seeker/scripts/fetch-docs.js "dùng date picker trong shadcn thế nào?"
44
+ # script gọi: context7.com/shadcn-ui/ui/llms.txt?topic=date
45
+ # → 2–3 URL về date
46
+ ```
47
+
48
+ **Cache của Next.js**
49
+
50
+ ```bash
51
+ node .claude/skills/docs-seeker/scripts/detect-topic.js "Next.js caching strategies"
52
+ # {"topic": "cache", "library": "next.js", "isTopicSpecific": true}
53
+ # script gọi: context7.com/vercel/next.js/llms.txt?topic=cache
54
+ ```
55
+
56
+ ## Vì sao đường này đáng ưu tiên
57
+
58
+ Trả về **chỉ tài liệu liên quan**, không phải toàn bộ thư viện. Nhanh hơn nhiều lần và
59
+ không phải lọc — quan trọng vì lý do một lượt tra cứu tồn tại là giữ context của bên giao
60
+ việc sạch.
61
+
62
+ ## Khi không ra
63
+
64
+ URL theo chủ đề trả 404 → chuyển sang `library-search.md` (tìm cả thư viện).
65
+
66
+ context7 không có thư viện đó → `repo-analysis.md` (đọc thẳng repo GitHub).
67
+
68
+ Cả ba đều không ra → nói thẳng là không tìm được tài liệu sơ cấp, và những gì tìm
69
+ được là nguồn thứ cấp. Đừng lấp bằng blog rồi trình bày như tài liệu chính thức.
@@ -0,0 +1,121 @@
1
+ ---
2
+ name: git
3
+ description: Thao tác git với conventional commit — stage, quét secret, tách commit theo type/scope, push, PR, merge. Kích hoạt khi principal yêu cầu commit/push/mở PR, hoặc khi cần đọc trạng thái repo trước lúc bàn giao.
4
+ ---
5
+
6
+ # git — commit có kỷ luật
7
+
8
+ Skill này cần `Write`/`Edit` và `Bash`. Execution policy không cấp đủ thì chỉ đọc được trạng thái
9
+ repo, không commit được.
10
+
11
+ ## Cổng chặn — đọc trước mọi thứ khác
12
+
13
+ **Không commit, không push, trừ khi principal yêu cầu** (HOUSE-RULES §1.3).
14
+
15
+ Không có ngoại lệ nào kiểu "làm xong rồi commit luôn cho gọn". Viết code xong thì báo cáo
16
+ và dừng; principal quyết định có commit không.
17
+
18
+ Bốn hành động **luôn phải hỏi lại từng lần**, kể cả khi lần trước đã được duyệt
19
+ (HOUSE-RULES §1.2):
20
+
21
+ | Hành động | Vì sao |
22
+ |---|---|
23
+ | `git push` | ra ngoài máy, người khác thấy ngay |
24
+ | `--force`, `--force-with-lease` | ghi đè lịch sử của người khác |
25
+ | `merge` vào nhánh chính | khó đảo ngược, ảnh hưởng mọi người |
26
+ | `git reset --hard`, xoá nhánh | mất việc chưa lưu |
27
+
28
+ ## Quy trình commit
29
+
30
+ ### 1. Stage và nhìn
31
+
32
+ ```bash
33
+ git add -A && git diff --cached --stat && git diff --cached --name-only
34
+ ```
35
+
36
+ Đọc `--stat` trước khi viết message. Commit mà không biết mình đang commit gì là cách
37
+ nhanh nhất để kéo nhầm file sinh ra vào lịch sử.
38
+
39
+ ### 2. Quét secret — bắt buộc, không bỏ
40
+
41
+ ```bash
42
+ git diff --cached | grep -iE '(api[_-]?key|token|password|secret|credential)'
43
+ ```
44
+
45
+ Có khớp → **DỪNG**, báo principal, đề xuất `.gitignore`. Không tự quyết định là "chắc chỉ
46
+ là tên biến".
47
+
48
+ Với alp-code còn hai thứ **không bao giờ được vào commit**:
49
+
50
+ - `memory/` — trí nhớ là dữ liệu cục bộ từng máy, đã có trong `.gitignore`.
51
+ - `dist/` và `~/.alp/executions/` — compiled output và machine-local execution state.
52
+
53
+ Thấy chúng trong `--cached` nghĩa là `.gitignore` hỏng. Báo principal, đừng tự `git rm`.
54
+
55
+ ### 3. Quyết định tách commit
56
+
57
+ **Tách khi:** trộn nhiều type (`feat` + `fix`, code + docs) · nhiều scope (`agents` +
58
+ `runtime`) · trộn config/deps với code · trên 10 file không liên quan nhau.
59
+
60
+ **Một commit khi:** cùng type và scope, ≤ 3 file, ≤ 50 dòng.
61
+
62
+ ### 4. Viết message
63
+
64
+ Conventional commit, **tiếng Việt** cho phần mô tả — khớp lịch sử repo:
65
+
66
+ ```
67
+ fix: repoRoot của phiên + workspaces không còn path tuyệt đối
68
+ feat(acl): register alp-plugin workspace
69
+ docs: báo cáo chẩn đoán repoRoot
70
+ ```
71
+
72
+ Thân commit trả lời **vì sao**, không phải **làm gì** — `git diff` đã nói làm gì rồi.
73
+ Có issue liên quan thì dẫn số.
74
+
75
+ Chuẩn đầy đủ: `references/commit-standards.md`.
76
+
77
+ ## Mẫu báo cáo về principal
78
+
79
+ ```
80
+ ✓ staged: N file (+X/−Y dòng)
81
+ ✓ secret: sạch
82
+ ✓ commit: <hash> type(scope): mô tả
83
+ ✗ push: CHƯA — chờ principal duyệt
84
+ ```
85
+
86
+ Chưa push thì ghi rõ chưa push. Không viết mập mờ để principal tự hiểu là xong.
87
+
88
+ ## Xử lý lỗi
89
+
90
+ | Lỗi | Làm gì |
91
+ |---|---|
92
+ | phát hiện secret | chặn commit, liệt kê file, báo principal |
93
+ | không có thay đổi | dừng, nói rõ, không tạo commit rỗng |
94
+ | push bị từ chối | đề xuất `git pull --rebase`, **hỏi trước khi chạy** |
95
+ | xung đột merge | báo principal, không tự chọn bên |
96
+
97
+ ## Worktree
98
+
99
+ alp-code dùng worktree cho nhánh triển khai cô lập (`.worktrees/` đã trong `.gitignore`).
100
+ Stash stack **dùng chung** giữa mọi worktree — `git stash pop` trần có thể lấy nhầm việc
101
+ của phiên khác. Cần cất việc tạm thì tạo commit WIP, đừng stash.
102
+
103
+ ## Tham chiếu
104
+
105
+ | File | Nội dung |
106
+ |---|---|
107
+ | `references/workflow-commit.md` | quy trình commit, logic tách |
108
+ | `references/workflow-push.md` | push và xử lý lỗi |
109
+ | `references/workflow-pr.md` | tạo PR, phân tích diff với remote |
110
+ | `references/workflow-merge.md` | merge nhánh |
111
+ | `references/commit-standards.md` | chuẩn conventional commit |
112
+ | `references/safety-protocols.md` | phát hiện secret, bảo vệ nhánh |
113
+ | `references/branch-management.md` | đặt tên, vòng đời nhánh |
114
+ | `references/gh-cli-guide.md` | lệnh `gh` |
115
+
116
+ ## Ranh giới
117
+
118
+ - Không có subagent nào để đẩy output dài sang. Output git dài thì lọc bằng `--stat`,
119
+ `--oneline`, `-n`, đừng đổ nguyên vào context.
120
+ - Không push lên `main`/`master`, không force-push, không merge — trừ khi principal nói
121
+ thẳng, trong phiên này.
@@ -0,0 +1,90 @@
1
+ # Quản lý nhánh
2
+
3
+ ## Đặt tên
4
+
5
+ **Dạng:** `<type>/<mô-tả-kebab>`
6
+
7
+ | Type | Dùng cho | Ví dụ |
8
+ |---|---|---|
9
+ | `feature/` | tính năng mới | `feature/oauth-login` |
10
+ | `fix/` | sửa lỗi | `fix/session-repo-root` |
11
+ | `refactor/` | đổi cấu trúc | `refactor/api-cleanup` |
12
+ | `docs/` | tài liệu | `docs/api-reference` |
13
+ | `test/` | test | `test/integration-suite` |
14
+ | `chore/` | bảo trì | `chore/deps-update` |
15
+ | `hotfix/` | sửa gấp trên production | `hotfix/payment-crash` |
16
+
17
+ Xem `git branch -a` trước khi đặt tên mới — theo mẫu đang có, đừng tự nghĩ dạng mới.
18
+
19
+ ## Vòng đời
20
+
21
+ ### Tạo
22
+
23
+ ```bash
24
+ git checkout main
25
+ git pull origin main
26
+ git checkout -b feature/ten-nhanh
27
+ ```
28
+
29
+ Luôn tạo từ `main` **đã pull mới**. Tạo từ một nhánh cũ thì diff sẽ dính cả thay đổi của
30
+ người khác, và PR sau đó không đọc được.
31
+
32
+ ### Trong lúc làm
33
+
34
+ ```bash
35
+ git add <file> && git commit -m "type(scope): mô tả"
36
+
37
+ git fetch origin
38
+ git rebase origin/main # HỎI TRƯỚC — rebase viết lại commit của bạn
39
+ ```
40
+
41
+ ### Trước khi merge
42
+
43
+ ```bash
44
+ git push origin feature/ten-nhanh
45
+ ```
46
+
47
+ Sau rebase thì phải force — **chỉ trên nhánh feature của mình**, và dùng
48
+ `--force-with-lease`:
49
+
50
+ ```bash
51
+ git push --force-with-lease origin feature/ten-nhanh
52
+ ```
53
+
54
+ ### Sau khi merge
55
+
56
+ ```bash
57
+ git branch -d feature/ten-nhanh # xoá local (an toàn: -d từ chối nếu chưa merge)
58
+ git push origin --delete feature/ten-nhanh # xoá remote — HỎI TRƯỚC
59
+ ```
60
+
61
+ Dùng `-d`, **không** dùng `-D`. `-d` từ chối xoá nhánh chưa merge; `-D` xoá bất chấp và đó
62
+ là cách mất việc.
63
+
64
+ ## Worktree trong alp-code
65
+
66
+ Repo này dùng worktree cho nhánh triển khai cô lập (`.worktrees/` đã trong `.gitignore`).
67
+
68
+ Điều dễ nhầm: **nhánh là dùng chung giữa mọi worktree, chỉ working tree là riêng.** Một
69
+ nhánh đang được checkout ở worktree khác thì không checkout lại được ở đây — đó là tính
70
+ năng, không phải lỗi.
71
+
72
+ Stash stack cũng dùng chung. Xem phần cuối `safety-protocols.md`.
73
+
74
+ ## Nhánh trong alp-code
75
+
76
+ `main` là nhánh chính. **Không push thẳng lên `main`** — làm trên nhánh, mở PR, principal
77
+ quyết định merge.
78
+
79
+ ## Lệnh nhanh
80
+
81
+ | Việc | Lệnh |
82
+ |---|---|
83
+ | liệt kê nhánh | `git branch -a` |
84
+ | nhánh hiện tại | `git rev-parse --abbrev-ref HEAD` |
85
+ | chuyển nhánh | `git checkout <nhánh>` |
86
+ | tạo và chuyển | `git checkout -b <nhánh>` |
87
+ | xoá local | `git branch -d <nhánh>` |
88
+ | xoá remote | `git push origin --delete <nhánh>` |
89
+ | đổi tên | `git branch -m <cũ> <mới>` |
90
+ | liệt kê worktree | `git worktree list` |
@@ -0,0 +1,82 @@
1
+ # Chuẩn commit message
2
+
3
+ ## Dạng
4
+
5
+ ```
6
+ type(scope): mô tả
7
+ ```
8
+
9
+ Mô tả viết **tiếng Việt** — khớp lịch sử repo. Xem `git log --oneline -20` trước khi viết
10
+ cái đầu tiên.
11
+
12
+ ## Type
13
+
14
+ | Type | Dùng khi |
15
+ |---|---|
16
+ | `feat` | tính năng mới |
17
+ | `fix` | sửa lỗi |
18
+ | `refactor` | đổi cấu trúc, không đổi hành vi |
19
+ | `docs` | chỉ tài liệu |
20
+ | `test` | test |
21
+ | `chore` | bảo trì, deps, config |
22
+ | `perf` | hiệu năng |
23
+ | `style` | định dạng, không đổi logic |
24
+ | `ci` | CI/CD |
25
+
26
+ ## Scope trong alp-code
27
+
28
+ Lấy theo vùng thật của repo, không tự đặt mới:
29
+
30
+ `agents` · `delegation` · `runtime` · `hooks` · `installer` · `skills` · `scripts` · `memory`
31
+
32
+ Scope là tuỳ chọn. Thay đổi trải rộng nhiều vùng thì bỏ scope, đừng liệt kê ba scope một lúc.
33
+
34
+ ## Luật
35
+
36
+ - **Dòng đầu ≈72 ký tự.** Rõ quan trọng hơn ngắn — thà 76 ký tự mà đọc hiểu ngay.
37
+ - Không có dấu chấm cuối dòng đầu.
38
+ - Dòng đầu nói **cái gì**. Thân commit nói **vì sao**.
39
+ - `git diff` đã kể *làm gì*, nên thân commit đừng kể lại. Nó tồn tại để trả lời câu hỏi
40
+ người đọc `git log` sáu tháng sau sẽ hỏi: *tại sao lại làm thế này?*
41
+ - Có issue liên quan thì dẫn số.
42
+
43
+ ## Thân commit
44
+
45
+ Thay đổi không hiển nhiên thì **phải** có thân. Mẫu theo repo:
46
+
47
+ ```
48
+ fix: repoRoot của phiên + workspaces không còn path tuyệt đối
49
+
50
+ <vì sao cách cũ hỏng — mô tả triệu chứng thật, không mô tả code>
51
+
52
+ - <thay đổi 1 — và vì sao chọn cách này>
53
+ - <thay đổi 2>
54
+ ```
55
+
56
+ ## Attribution
57
+
58
+ Repo này **có** dùng trailer attribution — 5/8 commit gần nhất có. Giữ nguyên thói quen đó:
59
+
60
+ ```
61
+ Co-Authored-By: <model> <noreply@anthropic.com>
62
+ ```
63
+
64
+ Đây là khác biệt so với bản gốc của skill (cấm attribution). alp-code làm ngược lại, và
65
+ lịch sử repo là nguồn sự thật, không phải tài liệu skill.
66
+
67
+ ## Ví dụ đúng
68
+
69
+ ```
70
+ feat(agents): register alp-plugin workspace
71
+ fix(runtime): resolve claude/codex command via PATHEXT
72
+ docs: báo cáo chẩn đoán repoRoot + gitignore session-state ở gốc repo
73
+ ```
74
+
75
+ ## Ví dụ sai
76
+
77
+ | Sai | Vì sao |
78
+ |---|---|
79
+ | `Updated files` | không nói gì |
80
+ | `Fix bug` | bug nào? |
81
+ | `feat(auth): thêm login dùng bcrypt với salt 12 vòng` | kể *làm thế nào*, thuộc về thân commit |
82
+ | `feat(acl,hooks,skills): …` | ba scope một lúc — tách commit ra |
@@ -0,0 +1,132 @@
1
+ # Hướng dẫn `gh`
2
+
3
+ Lệnh `gh` chia làm hai loại. Đọc bảng này trước khi chạy bất cứ lệnh nào bên dưới.
4
+
5
+ | Loại | Lệnh | Quy tắc |
6
+ |---|---|---|
7
+ | **Đọc** | `list`, `view`, `diff`, `status`, `browse` | chạy tự do |
8
+ | **Tác động ra ngoài** | `create`, `merge`, `comment`, `close`, `rerun`, `auth` | **hỏi principal từng lần** (HOUSE-RULES §1.2) |
9
+
10
+ ## Xác thực
11
+
12
+ ```bash
13
+ gh auth status # kiểm trạng thái — đọc, chạy được
14
+ gh auth login # tương tác — KHÔNG tự chạy, báo principal
15
+ gh auth logout # KHÔNG tự chạy
16
+ ```
17
+
18
+ Chưa đăng nhập thì báo principal chạy `gh auth login` — nó cần tương tác, agent chạy sẽ treo.
19
+
20
+ ## Pull Request
21
+
22
+ ### Tạo — cần duyệt
23
+
24
+ ```bash
25
+ gh pr create --base main --head <nhánh> --title "feat: …" --body "…"
26
+ ```
27
+
28
+ Thân dài dùng heredoc:
29
+
30
+ ```bash
31
+ gh pr create --base main --title "feat(acl): …" --body "$(cat <<'EOF'
32
+ ## Tóm tắt
33
+ - …
34
+
35
+ ## Kiểm chứng
36
+ - [ ] …
37
+ EOF
38
+ )"
39
+ ```
40
+
41
+ ```bash
42
+ gh pr create --draft --title "WIP: …" # nháp — rẻ hơn mở PR thật rồi phải đóng
43
+ gh pr create --reviewer @user1,@user2
44
+ gh pr create --label "bug,priority:high"
45
+ ```
46
+
47
+ Việc chưa xong hẳn thì mở **draft**. Xem `workflow-pr.md`.
48
+
49
+ ### Đọc — chạy tự do
50
+
51
+ ```bash
52
+ gh pr list
53
+ gh pr view 123
54
+ gh pr view 123 --web
55
+ gh pr checkout 123 # đổi nhánh làm việc — báo principal trước
56
+ gh pr diff 123
57
+ gh pr status
58
+ ```
59
+
60
+ ### Merge — cần duyệt
61
+
62
+ ```bash
63
+ gh pr merge 123 # merge commit
64
+ gh pr merge 123 --squash
65
+ gh pr merge 123 --rebase
66
+ gh pr merge 123 --auto # tự merge khi check xanh
67
+ gh pr merge 123 --delete-branch
68
+ ```
69
+
70
+ **`--auto` đặc biệt nguy hiểm với agent:** nó merge *sau này*, không phải bây giờ. Chạy
71
+ xong rồi mà principal đổi ý thì merge vẫn xảy ra. Không dùng trừ khi principal nói thẳng.
72
+
73
+ ### Bình luận — cần duyệt
74
+
75
+ ```bash
76
+ gh pr comment 123 --body "…" # ra ngoài, người khác thấy
77
+ gh api repos/{owner}/{repo}/pulls/123/comments # đọc, tự do
78
+ ```
79
+
80
+ ## Issue
81
+
82
+ ```bash
83
+ gh issue list # đọc
84
+ gh issue view 42 # đọc
85
+ gh issue create --title "…" --body "…" # cần duyệt
86
+ gh issue develop 42 -c # tạo nhánh từ issue — cần duyệt
87
+ ```
88
+
89
+ ## Repo
90
+
91
+ ```bash
92
+ gh repo view
93
+ gh browse
94
+ gh browse path/to/file:42 # mở file đúng dòng
95
+ gh repo clone owner/repo # tải về máy — báo principal
96
+ ```
97
+
98
+ ## Workflow
99
+
100
+ ```bash
101
+ gh run list # đọc
102
+ gh run view <run-id> # đọc
103
+ gh run watch # đọc, nhưng CHẶN cho tới khi workflow xong — cân nhắc
104
+ gh run rerun <run-id> # tốn tài nguyên CI — cần duyệt
105
+ ```
106
+
107
+ Đọc log CI hỏng: xem `alp-debug` nếu vai đó được giao, hoặc `gh run view <id> --log-failed`.
108
+
109
+ ## Xuất JSON — để lọc, không để đọc
110
+
111
+ ```bash
112
+ gh pr list --json number,title,author
113
+ gh pr view 123 --json commits,reviews
114
+ gh issue list --json number,title --jq '.[].title'
115
+ ```
116
+
117
+ Dùng `--json` + `--jq` để **cắt output trước khi nó vào context**. Không có subagent để
118
+ đẩy output dài sang, nên lọc là việc của bạn.
119
+
120
+ ## Mẫu KHÔNG dùng
121
+
122
+ ```bash
123
+ # ❌ tạo PR rồi tự merge — hai thao tác cần duyệt, gộp thành một dòng
124
+ gh pr create --fill && gh pr merge --auto --squash
125
+
126
+ # ❌ đóng hàng loạt PR
127
+ gh pr list --state open --json number -q '.[].number' | xargs -I {} gh pr close {}
128
+ ```
129
+
130
+ Hai mẫu này có trong bản gốc của skill. Chúng vi phạm HOUSE-RULES §1.2 — thao tác khó đảo
131
+ ngược, hàng loạt, không có bước dừng để principal xem. Cần làm thì làm từng cái, mỗi cái
132
+ một lần duyệt.