| name | context-pack |
| description | Assemble accumulated project knowledge + context into a compact, reusable context-pack — for the orchestrator to hand to subagents on fan-out (so each subagent does NOT re-gather), or for any agent/member to re-establish context fast on resume. Complements `harvest` (harvest distils NEW tacit facts into knowledge/; context-pack packages EXISTING context — code, knowledge, glossary, structure). Reads knowledge/INDEX.md + glossary + structural signals; never invents new knowledge. |
| license | MIT |
| allowed-tools | ["file-search","bash"] |
Context-Pack Skill
Đóng gói tri thức + context của một dự án thành một context-pack gọn, có thể tái dùng — để orchestrator phát ngay cho subagent khi fan-out (subagent KHÔNG tự gom lại), hoặc để bất kỳ agent/member nào resume nhanh mà không phải đọc lại toàn bộ codebase.
Phân biệt với harvest: harvest = chắt lọc fact nghiệp vụ NGẦM (trong đầu người, chưa được ghi) thành knowledge/*.md. context-pack = ĐÓNG GÓI context ĐÃ CÓ SẴN (code, knowledge, glossary, structure) thành 1 tài liệu phát đi. Không tự chế tri thức mới.
Không có engine. Không daemon. Không scheduler. Chỉ là bash + file-search + tổng hợp — Article IV và Article VII.
Trigger
- "đóng gói context cho task này"
- "tạo context-pack cho subagent"
- "chuẩn bị context trước khi fan-out"
- "snapshot context dự án để resume"
- Orchestrator chuẩn bị fan-out nhiều subagent song song
- Agent/member resume sau gián đoạn và cần nhanh chóng tái lập context
Khi KHÔNG dùng
- Task chỉ cần 1 agent, không fan-out → đọc thẳng file cần thiết, không cần pack.
- Task quá hẹp (fix 1 bug nhỏ) → overhead tạo pack không xứng.
- Đã có context-pack còn hiệu lực trong
artifacts/context-pack-<project>.md (xem Bước 0).
Quy trình
Bước 0 KIỂM TRA CACHE → Bước 1 RECALL knowledge/ → Bước 2 GOM TÍN HIỆU CẤU TRÚC
→ Bước 3 LỌC THEO TASK → Bước 4 TỔNG HỢP PACK → Bước 5 LƯU + PHÁT
Bước 0 — Kiểm tra cache (luôn làm trước)
Trước khi tạo mới, kiểm tra:
artifacts/context-pack-<project-slug>.md
Nếu tồn tại và generated_at trong 24 giờ qua → tái dùng ngay, bỏ qua Bước 1–4.
Nếu stale hoặc không tồn tại → tiếp tục.
Bước 1 — Recall knowledge/
- Đọc
knowledge/INDEX.md để nắm map.
- Grep
knowledge/ theo scope liên quan đến project/task, lọc status: active.
- Đọc
glossary/core-terms.yaml và glossary/ui-patterns.yaml — lấy chỉ các term liên quan.
- Ghi nhớ kết quả; KHÔNG copy toàn bộ vào pack — chỉ trích dẫn cái task cần.
Bước 2 — Gom tín hiệu cấu trúc (bash)
Chạy tuần tự các lệnh sau; ghi kết quả vào bộ nhớ tạm:
head -120 README.md 2>/dev/null || true
head -80 docs/SRS.md 2>/dev/null || true
find . -maxdepth 3 -not -path '*/node_modules/*' \
-not -path '*/.git/*' -not -path '*/dist/*' \
| head -120
find . -name '*.ts' -o -name '*.vue' -o -name '*.php' \
| grep -v node_modules | grep -v dist \
| sed 's|/[^/]*$||' | sort | uniq -c | sort -rn | head -15
grep -r "router\.\|defineEventHandler\|@Get\|@Post\|Route::get\|Route::post" \
--include="*.ts" --include="*.php" --include="*.vue" -l \
| head -20
git --no-pager log --oneline -7 2>/dev/null || true
cat .kopi/stack.yml 2>/dev/null || true
LEAN rule: Đừng đổ toàn bộ output thô vào pack. Tóm tắt — 1–3 dòng mỗi mục; đính kèm đường dẫn file để subagent đọc thêm nếu cần.
Bước 3 — Lọc theo task
Trước khi tổng hợp, xác định scope của task hiện tại:
- Module nào liên quan? → chỉ giữ knowledge/glossary/route của module đó.
- Ngôn ngữ nào? FE hay BE? → loại bỏ phần không liên quan.
- Subagent sẽ làm gì (implement / review / validate)? → ưu tiên thông tin phù hợp vai đó.
Bước 4 — Tổng hợp context-pack
Tạo markdown theo cấu trúc chuẩn dưới đây. Không vượt 400 dòng.
# Context Pack — <project-slug>
generated_at: <ISO timestamp>
generated_by: context-pack skill
task_scope: <mô tả ngắn task đang dùng pack này>
## 1. Stack
<!-- trích từ .kopi/stack.yml — chỉ field liên quan -->
## 2. Cấu trúc dự án
<!-- cây thư mục rút gọn; LOC top module; link đọc thêm -->
## 3. Tri thức nghiệp vụ (knowledge/)
<!-- facts active liên quan đến task; cite kf-id + 1 dòng fact -->
<!-- Nếu không có → ghi "Chưa có knowledge file liên quan" -->
## 4. Glossary (liên quan)
<!-- chỉ term liên quan đến task; JP/VI/EN -->
## 5. Route / Endpoint liên quan
<!-- file path + method + mô tả ngắn; tối đa 10 entry -->
## 6. Commit gần đây
<!-- 7 commit gần nhất (hash + message) -->
## 7. Artifact đang active (nếu có)
<!-- tên file + task_id của intent-package / eng-plan đang dở -->
## 8. Ghi chú cho subagent
<!-- bất kỳ ngữ cảnh đặc biệt nào orchestrator muốn subagent biết -->
Bước 5 — Lưu cache và phát
Lưu cache:
artifacts/context-pack-<project-slug>.md
Phát cho subagent: truyền nội dung markdown trực tiếp vào prompt của subagent — KHÔNG bảo subagent tự đọc file từ đĩa. Ví dụ trong prompt orchestrator:
<context_pack>
{nội dung context-pack đầy đủ}
</context_pack>
Subagent nhận <context_pack> → dùng ngay, không cần gom lại.
Nguyên tắc (Article IV / VII)
| Nguyên tắc | Áp dụng |
|---|
| Không engine/daemon | Skill chạy on-demand bằng bash + file-search; không background process |
| Simplicity Gate | Pack tối đa 400 dòng; nếu vượt, cắt bớt phần ít liên quan nhất đến task |
| Cache ở vị trí biết trước | artifacts/context-pack-<slug>.md — mọi agent đều biết tìm ở đâu |
| Không tự chế tri thức mới | Nếu gặp fact chưa có trong knowledge/ → gọi skill harvest, không tự điền |
Output
artifacts/context-pack-<project-slug>.md (cached, có thể tái dùng)
- Nội dung pack được truyền trực tiếp vào prompt subagent (không bắt subagent đọc đĩa)