Bỏ qua điều hướng

Công khaiKèm bộ fileTutorial

Để agent tự cài và cập nhật AgentKit cùng bộ skill cho nhiều dự án qua MCP

Cài và nâng cấp AgentKit rối, skill trong dự án cũ đi mà không biết? Nối MCP modernEngineer, cài skill agent-control-plane, rồi để chính agent của bạn kiểm, cài và cập nhật cho các dự án, hỏi bạn trước khi ghi.

21 phút đọc · v1.0.2 · Cập nhật 02/11/2026

EN · Let your agent install and update AgentKit and skill packs through MCP · Đọc bản tiếng Anh

Bài có bộ file kèm để chạy ngay.Xem bộ file

Tóm tắt nhanh: Mua AgentKit rồi mà không biết cài thế nào, nâng cấp ra sao, hay dự án nào đang dùng skill cũ? Bạn không cần tự nhớ các lệnh đó. Bài này hướng dẫn để chính Claude Code hoặc Codex của bạn kiểm tra máy, lập kế hoạch, cài và cập nhật. Bạn chuẩn bị kết nối một lần, nói muốn làm gì và đồng ý trước khi agent ghi file.

Cài AgentKit lần đầu đã dễ rối: chạy lệnh nào, ở thư mục nào, cài cho cả máy hay cho riêng từng dự án. Đến lúc nâng cấp lại thêm một chuyện: cập nhật công cụ dòng lệnh ak không kéo các skill đã cài trong dự án lên theo. Dự án lâu không mở có thể vẫn chạy skill cũ mà bạn không biết. Khi có thêm nhiều dự án hoặc worktree (thư mục làm việc thứ hai của cùng một repo), bạn càng khó nhớ nơi nào đã cập nhật, nơi nào chưa.

Cách bài này chọn: modernEngineer không cài hộ trên máy bạn, mà hướng dẫn chính agent của bạn hiểu và làm thay. Skill agent-control-plane là bản hướng dẫn agent làm theo. MCP (Model Context Protocol) của modernEngineer cho agent biết bộ skill nào có bản mới và cấp link tải. MCP không nhìn được vào máy bạn, nên phần trên máy, như AgentKit đang ở bản nào, agent tự kiểm bằng lệnh ak. Bạn chỉ nói muốn gì, đọc kế hoạch và trả lời "đồng ý". Mình đi lần lượt: chuẩn bị, lần chạy đầu, worktree, cập nhật, rồi những lúc agent dừng lại hỏi bạn.

Công khai: mình là maintainer của AgentKit. Link AgentKit trong bài là link affiliate, mua qua link này bạn được giảm 30%.

Thư mục ~/agent-control-plane giữ bản gốc bộ skill orca-cook-plan, các file khóa phiên bản, file dự án, script cpl.sh và bản sao lưu. MCP modernEngineer cho agent tải bộ skill, agent ghi lại SHA-256; trong shop-app, .claude/skills/orca-cook-plan chỉ là symlink về bản gốc, AgentKit do CLI ak cài thật theo bản ghim, skill tự viết giữ nguyên; worktree feature nhận symlink bằng thao tác mirror.
Bộ skill tải từ modernEngineer có một bản gốc, dự án và worktree chỉ trỏ về đó; AgentKit vẫn được ak cài thật vào từng dự án.

Quản lý skill tập trung nghĩa là gì?

Với bộ skill tải từ modernEngineer, thay vì chép một bản vào từng dự án, bạn giữ một bản gốc trong thư mục control plane (thư mục quản lý chung). Các dự án dùng symlink, tức một đường dẫn trỏ tới bản gốc đó. Riêng AgentKit vẫn được ak cài thật vào từng dự án.

Ví dụ minh họa xuyên bài: dự án shop-app và bộ skill orca-cook-plan (skill chạy một plan AgentKit qua Orca, mỗi giai đoạn một phiên làm việc riêng). File của orca-cook-plan nằm ở ~/agent-control-plane/skills/orca-cook-plan, còn .claude/skills/orca-cook-plan trong shop-app chỉ trỏ về đó. Bài dùng hai repo thử: phần worktree đo trên shop-app; lần chạy đầu, hook tự mirror và lần cập nhật qua agent chạy trên blog.

Một dự án thường có ba loại skill, mỗi loại xử lý một kiểu:

  • Bộ skill tải từ modernEngineer (như orca-cook-plan): một bản gốc trong thư mục control plane, các dự án tạo symlink trỏ về. Cập nhật bản gốc là mọi nơi đang link dùng nội dung mới.
  • Skill và cấu hình AgentKit (các skill ak-*): CLI ak cài thật vào từng dự án theo bản đã ghim (bản được chốt cố định, không tự lên bản mới), không dùng symlink. Theo phần trợ giúp của ak kit init, ak từ chối ghi qua thư mục skill là symlink. Nó cũng cần tự quản lý file của mình (snapshot trước khi ghi, phát hiện file bạn sửa tay).
  • Skill bạn tự viết hoặc tải từ nơi khác: skill agent-control-plane 1.0.0 không đụng tới. Chúng nằm nguyên chỗ cũ.

Agent làm gì, bạn làm gì?

Bạn chuẩn bị quyền truy cập một lần và quyết định có cho ghi hay không. Agent làm phần còn lại.

Hai làn việc. Bạn chuẩn bị một lần (nối MCP, đăng nhập ak, cài skill quản lý), nói muốn làm gì, rồi trả lời đồng ý sau khi đọc kế hoạch. Agent kiểm quyền truy cập, kiểm và lập kế hoạch mà chưa ghi gì, rồi chỉ ghi phần được duyệt và kiểm lại. Skill dặn agent không xin API key, mật khẩu hay mã đăng nhập trong chat, không ghi đè file git đang theo dõi, không xóa hẳn dữ liệu và không commit hay push.
Bạn giữ quyền truy cập và quyết định ghi; agent kiểm, lập kế hoạch và chỉ làm phần được duyệt.

MCP là giao thức để agent gọi công cụ bên ngoài. MCP modernEngineer giúp agent tìm, kiểm phiên bản và tải bộ skill; agent dùng công cụ chạy lệnh có sẵn của Claude Code hoặc Codex để thao tác trên máy bạn. Skill agent-control-plane 1.0.0 là quy trình agent làm theo, không phải dịch vụ chạy nền: nó không tự làm gì khi bạn chưa yêu cầu.

Skill agent-control-plane 1.0.0 đặt ranh giới cứng: agent không xin bạn dán API key (khóa truy cập do dịch vụ cấp), mật khẩu hay mã đăng nhập vào chat. Agent cũng không tự ghi đè file git đang theo dõi, không xóa hẳn dữ liệu (chỉ chuyển vào thư mục sao lưu khi bạn đồng ý) và không commit hay push. Gặp xung đột thì agent dừng và hỏi; bạn vẫn nên đọc kế hoạch trước khi đồng ý.

Cần chuẩn bị gì trước lần chạy đầu?

Ba bước, làm một lần, mỗi bước có một cách mặc định: nối MCP modernEngineer, đăng nhập AgentKit, cài skill agent-control-plane cho mọi dự án. Xong ba bước này, phần còn lại của bài bạn không phải tự gõ lệnh cài hay cập nhật. Phần symlink chạy trên macOS, Linux và WSL2.

Ba việc chuẩn bị. Một: nối MCP modernEngineer từ trang /vi/mcp, key nhập vào cấu hình MCP của ứng dụng chứ không vào chat; agent dùng pack-versions_get và packs_download, tải bộ skill qua MCP cần quyền subscriber. Hai: tự đăng nhập AgentKit trong terminal bằng ak login --email, hoặc ak gui, hoặc --api-key-stdin; mã OTP bạn tự gõ. Ba: cài skill quản lý từ phần Bộ file kèm bài, chọn cho mọi dự án, skill vào ~/.claude/skills/ hoặc ~/.agents/skills/.
Ba việc bạn tự làm một lần; sau đó chỉ cần nói với agent muốn làm gì.

1. Nối MCP modernEngineer

Mở trang kết nối MCP modernEngineer và làm theo hướng dẫn cho ứng dụng của bạn. Bài đọc miễn phí, nhưng bộ skill cần quyền subscriber, cả khi tải qua MCP lẫn skill agent-control-plane ở phần Bộ file kèm bài: xem gói Subscriber. Nếu dùng API key, nhập key vào phần cấu hình MCP của ứng dụng, không gửi trong hội thoại.

Bài này dùng hai công cụ MCP:

  • pack-versions_get: cho biết bản mới nhất của một bộ skill, không cần key.
  • packs_download: cấp link tải ngắn hạn (15 phút) cho bộ skill tài khoản bạn có quyền.

Trên modernEngineer, mỗi bộ skill tải về còn gọi là một pack. Nếu agent không thấy công cụ nào, hãy kiểm tra lại kết nối trước; cài skill agent-control-plane không thay được bước này.

2. Đăng nhập AgentKit

Chưa có AgentKit thì bắt đầu từ Bắt đầu với AgentKit cho Claude Code: cài đặt và các lệnh đầu tiên. Có CLI rồi, bạn tự đăng nhập trong terminal:

~~~bash ak login --email <email của bạn> ~~~

Lệnh gửi mã OTP qua email để bạn gõ vào terminal. Đừng đưa mã OTP cho agent; đăng nhập xong rồi nhờ agent kiểm tra. Đã quen AgentKit thì bạn cũng có thể đăng nhập qua app desktop (ak gui) hoặc bằng API key (ak login --api-key-stdin).

Nếu máy đã cài AgentKit chung cho mọi dự án trong ~/.claude, đừng vội gỡ. Agent sẽ phát hiện và hỏi bạn trước lần cài vào dự án đầu tiên.

3. Cài skill agent-control-plane

Kéo xuống phần Bộ file kèm bài trên trang này, sao chép prompt cài đặt rồi dán vào cuộc trò chuyện với Claude Code hoặc Codex. Prompt dặn agent tự lấy bộ file, bạn không cần tải zip. Khi agent hỏi cài "cho dự án này hay cho mọi dự án", chọn mọi dự án: skill vào ~/.claude/skills/agent-control-plane/ (Claude Code) hoặc ~/.agents/skills/agent-control-plane/ (Codex), nên dùng được ở dự án nào cũng được. Cài xong, mở một phiên mới để agent thấy skill.

Từ đây, bạn chỉ cần nói muốn làm gì.

Giao việc lần đầu thế nào và agent làm gì?

Bắt đầu bằng một yêu cầu cụ thể: dự án nào và bộ skill nào. Ví dụ, mở Claude Code trong shop-app và nói:

Thiết lập control plane cho dự án shop-app này. Mình muốn cài AgentKit và bộ skill orca-cook-plan của modernEngineer. Hãy kiểm tra máy, đề xuất bản AgentKit phù hợp, cho mình xem kế hoạch trước khi ghi và chỉ làm sau khi mình đồng ý.

Máy có cả Claude Code lẫn Codex mà bạn chỉ dùng một thì nói luôn trong yêu cầu, agent khỏi phải hỏi.

Sáu bước của lần chạy đầu: bạn nói yêu cầu; agent kiểm hiện trạng mà chưa ghi gì; agent trả kế hoạch sáu bước kèm hai câu hỏi; bạn trả lời đồng ý; agent ghi rồi kiểm lại; agent báo cáo. Bước nào lỗi thì agent dừng, dọn file tạm và báo phần chưa xong. Lần thử trên repo blog: lượt đầu 16 lần gọi công cụ khoảng 43 giây, lượt hai 12 lần gọi công cụ khoảng 84 giây, cài xong cả AgentKit lẫn orca-cook-plan.
Agent kiểm trước, hỏi điều cần quyết, chỉ ghi sau khi bạn đồng ý; bước nào lỗi thì dừng và báo lại.

Lượt đầu: kiểm tra, chưa ghi gì

Mình cho agent chạy thử trên repo blog ngày 1/11/2026, bằng Claude Code 2.1.316. Ở lượt đầu, agent dùng 16 lần gọi công cụ trong khoảng 43 giây để kiểm git, Claude Code, CLI ak, trạng thái đăng nhập, quyền tải orca-cook-plan và các đường dẫn sẽ bị ảnh hưởng. Chưa có file nào bị thay đổi.

Báo cáo mở đầu:

Mình đang kiểm tra máy và đã xong phần chỉ đọc. Mình chưa ghi gì cả, và đang dừng để chờ bạn đồng ý.

Agent hỏi hai điều. Điều đầu là AgentKit cài chung: máy thử đã có AgentKit trong ~/.claude. Cài thêm một bản vào dự án thì mỗi lần mở Claude Code ở dự án đó, hook và quy tắc của cả hai bản đều được nạp. Agent không đụng vào ~/.claude, chỉ hỏi bạn có muốn cài vào dự án không. Điều thứ hai: máy có cả Claude Code lẫn Codex, cài cho một hay cả hai.

Kèm theo là kế hoạch sáu bước (tạo thư mục control plane, đăng ký dự án, ghim AgentKit, cài kit, tải và link orca-cook-plan, kiểm tra lại) cùng hiện trạng: ak 3.0.0 đã đăng nhập, kênh stable mới nhất là 3.0.0, orca-cook-plan ở bản 1.2.3. Đó là trạng thái ngày chạy thử, không phải phiên bản luôn mới nhất. Agent cũng nói trước sẽ không commit, không push.

Bạn trả lời ngắn, như câu đã dùng trong lần thử:

Đồng ý, cứ cài vào dự án và làm theo kế hoạch. Chỉ Claude Code thôi.

Lượt hai: AgentKit cài vào dự án, bộ skill vào thư mục chung

Sau câu đồng ý, agent tạo thư mục control plane và ghi lại ba thứ: dự án nào đang được quản lý, bản AgentKit đã chọn và bản các bộ skill đã tải. Nhờ đó lần cập nhật sau agent biết dự án theo kênh nào, bản nào, thay vì lấy bản mới nhất. Agent tự chạy lệnh cài AgentKit, bạn không cần gõ. Trong lần thử, lệnh là:

~~~bash ak kit init engineer \ --channel stable \ --version 3.0.0 \ --target claude-code \ --yes \ --no-interactive ~~~

Trước khi ghi, ak lưu lại trạng thái cũ (snapshot); gặp file bạn đã sửa tay thì nó dừng thay vì ghi đè. Trên repo blog, lệnh này mất khoảng 18 giây. Muốn hiểu thêm về chạy lệnh ak an toàn, xem ak-agentkit: chọn skill, nối chuỗi việc, chạy lệnh ak an toàn.

Bộ skill thì khác: agent gọi packs_download, tải zip về thư mục tạm, tính SHA-256 (mã băm giúp nhận ra file đã đổi), đọc pack.json rồi chép vào thư mục chung và tạo symlink vào dự án. Với shop-app, cấu trúc sau khi cài trông như sau (cây rút gọn để minh họa):

~~~text ~/agent-control-plane/ ├── skills/ │ └── orca-cook-plan/ ├── projects/ │ └── shop-app.json ├── projects.local.json ├── agentkit-releases.lock.json ├── packs.lock.json ├── runtime/ │ ├── backups/ │ └── downloads/ └── bin/ └── cpl.sh

shop-app/ ├── .agentkit/ └── .claude/ └── skills/ └── orca-cook-plan -> ~/agent-control-plane/skills/orca-cook-plan ~~~

Trong cây trên, projects/ và projects.local.json ghi dự án nào được quản lý và nằm ở đâu trên máy, agentkit-releases.lock.json ghi bản AgentKit đã ghim, còn packs.lock.json ghi bộ skill, phiên bản và SHA-256 của file zip đã cài. Script cpl.sh tạo, gỡ và kiểm symlink, ghi sổ những link do chính nó tạo rồi thêm chúng vào .git/info/exclude (danh sách bỏ qua riêng trên máy, dùng chung cho mọi worktree) để git status không báo file mới. Claude Code và Codex đều đọc được thư mục skill là symlink, theo tài liệu skill của Claude Code và tài liệu Codex Skills.

Báo cáo cuối: xong cả hai phần, kèm những điều cần biết

Trong lần thử, agent dùng 12 lần gọi công cụ trong khoảng 84 giây và làm xong cả hai phần. AgentKit engineer 3.0.0 vào dự án, chỉ cho Claude Code. orca-cook-plan 1.2.3 vào skills/ của thư mục control plane, còn dự án chỉ giữ symlink. Bước kiểm tra cuối báo link đúng, đã đăng nhập, bản cài khớp bản ghim.

Cài xong, mở một phiên Claude Code mới (hoặc gõ /reload-skills), vì phiên đang chạy chưa thấy skill mới. Agent nói rõ trong báo cáo:

Cài xong cần restart: phiên Claude Code này chưa thấy skill mới. Bạn mở phiên mới hoặc gõ /reload-skills là dùng được.

Mình kiểm tra lại các file thực tế trên máy, khớp với báo cáo: packs.lock.json ghi orca-cook-plan 1.2.3, thư mục tải tạm đã dọn, ~/.claude/settings.json không đổi. Báo cáo còn nêu hai điều: orca-cook-plan cần Orca và skill orchestration trên máy mới chạy được; ak doctor có vài cảnh báo cũ không do lần cài này gây ra. Agent nêu ra nhưng không tự sửa, vì chúng nằm ngoài yêu cầu.

Một điều nên biết: cài AgentKit xong, git status hiện .agentkit/ và .claude/ là file mới, khoảng 1.870 file trong repo thử. Control plane không làm dự án hết file AgentKit. Có đưa chúng vào git hay không là quyết định của bạn.

Mở worktree mới thì có đủ skill và hook không?

Không nhất thiết. Worktree mới có thể thấy skill nhưng thiếu hook và cấu hình AgentKit của dự án gốc. Skill agent-control-plane dùng thao tác mirror để link nốt phần còn thiếu: agent cho bạn xem trước danh sách, bạn đồng ý rồi mới ghi.

So sánh hai worktree trên repo thử shop-app: chưa mirror thì vẫn thấy skill nhờ dùng skill của main checkout nhưng thiếu hook dự án AgentKit, lúc mở phiên có 12 sự kiện hook; đã mirror thì có cả skill lẫn hook, 16 sự kiện hook, 268 mục được link và git status vẫn sạch. Agent chạy cpl.sh mirror với --dry-run để xem trước.
Thấy skill trong worktree chưa có nghĩa là hook của dự án đã được nạp; mirror link nốt phần còn thiếu.

Gọi main checkout là thư mục dự án gốc, nơi bạn mở worktree. Nếu bạn không commit chúng vào repo, skill, hook và cấu hình AgentKit là những thứ git không theo dõi, nên chỉ có ở main checkout. Theo tài liệu Claude Code, worktree không có .claude/skills riêng thì dùng skill của main checkout. Mình đã kiểm trên worktree feature của shop-app: chưa tạo symlink vẫn nhận được bộ skill và 103 skill ak-*.

Nhưng cơ chế đó không áp cho settings và hook (lệnh tự chạy tại một thời điểm, ví dụ lúc bắt đầu phiên). Mình đếm sự kiện hook lúc bắt đầu phiên trên worktree đó bằng claude -p --include-hook-events, cùng máy, cùng phiên bản:

Trạng thái worktreeSố sự kiện hook lúc bắt đầu phiên
Chưa link từ main checkout12
Đã link từ main checkout16

Bốn sự kiện chênh lệch là hook dự án của AgentKit. Thấy skill chưa có nghĩa là hook đã nạp.

Cách xử lý là thao tác mirror: link sang worktree những mục git không theo dõi mà worktree còn thiếu. Ví dụ, mở agent trong worktree feature của shop-app và nói:

Link worktree feature này theo cấu hình của shop-app. Cho mình xem những gì sẽ được thêm trước khi ghi.

Agent chạy bản xem trước trong thư mục worktree, chưa ghi gì:

~~~bash ~/agent-control-plane/bin/cpl.sh mirror . --dry-run ~~~

Bạn đồng ý thì agent mới link và kiểm lại. Trên worktree feature của shop-app, script link 268 mục và git status vẫn sạch. Lần thử đó cũng lộ một lỗi thật: git từ chối đọc .gitignore là symlink, nên script giờ bỏ qua .gitignore và .gitattributes.

Codex không có cơ chế dùng skill của main checkout được ghi trong tài liệu, nên với Codex hãy luôn để agent mirror.

Hay tạo worktree thì bạn có thể cho agent thêm một hook tự mirror mỗi khi mở phiên Claude Code. Bước này tùy chọn: agent đề nghị sau lần mirror đầu và chỉ thêm khi bạn đồng ý. Mình thử hook này trên một worktree mới của repo blog: ngay phiên đầu, hook link 136 mục và git status vẫn sạch. Số mục ít hơn ở shop-app vì mỗi repo có số file cần link khác nhau. Hook AgentKit của dự án được nạp từ phiên thứ hai, vì Claude Code đọc cấu hình trước khi hook chạy, nên với worktree mới bạn mở lại phiên một lần.

Nếu hay tạo worktree bằng AgentKit, xem thêm ak-worktree: mở worktree riêng cho mỗi việc.

Khi có bản mới thì cập nhật thế nào?

Có ba thứ cập nhật riêng: CLI ak trên máy, AgentKit trong từng dự án và bộ skill tải từ modernEngineer. Cập nhật ak không tự cập nhật hai thứ còn lại. Bạn nhờ agent kiểm cả ba một lượt, xem một kế hoạch chung rồi mới đồng ý.

Cập nhật theo bốn bước: agent kiểm mà chỉ đọc, so pack-versions_get với packs.lock.json và AgentKit đã cài với bản ghim; đưa một bản xem trước chung; bạn đồng ý; agent áp dụng rồi kiểm lại. Với bộ skill, bản mới tải qua packs_download thay bản gốc trong skills/, bản cũ chuyển vào runtime/backups để rollback, packs.lock.json ghi bản mới và SHA-256. Symlink của shop-app, dự án khác và worktree không đổi nên thấy ngay nội dung mới.
Thay bản gốc một lần, mọi dự án đang link thấy bản mới; bản cũ được giữ lại để rollback.

Kiểm tra tất cả dự án trong thư mục control plane. Có bản mới của AgentKit hoặc bộ skill modernEngineer thì liệt kê giúp mình. Chỉ cập nhật sau khi mình đồng ý.

Thành phầnCách kiểmCách cập nhật
CLI akak self-update --check --jsonAgent hỏi trước rồi mới chạy ak self-update
AgentKit trong dự ánBản đã cài so với bản ghim và bản mới nhất của kênhĐổi bản ghim, rồi ak kit refresh từng dự án
Bộ skill tải từ modernEngineerpack-versions_get so với packs.lock.jsonTải, chuyển bản cũ vào runtime/backups/, thay bản gốc, ghi bản mới và SHA-256

Với bộ skill, mỗi lần cập nhật agent chỉ thay bản gốc trong thư mục chung, mọi dự án đang trỏ về đó dùng nội dung mới; phiên agent đang mở có thể cần mở lại để nạp skill. Lúc thử chưa có bộ skill nào ra bản mới, nên mình cố ý đưa bản gốc orca-cook-plan của lần thử trên blog về 1.2.2 để giả lập bản cũ. Ở lượt kiểm, agent dùng 14 lần gọi công cụ trong khoảng 28 giây, liệt kê AgentKit đã ở bản mới nhất và orca-cook-plan có bản 1.2.3, rồi hỏi:

Bạn có muốn mình cập nhật không?

Sau câu đồng ý, agent dùng 10 lần gọi công cụ trong khoảng 37 giây: chuyển bản 1.2.2 vào runtime/backups/<giờ>/, chép bản 1.2.3 vào chỗ cũ, ghi bản mới vào packs.lock.json và kiểm lại link. Dự án không phải sửa gì, vì symlink vẫn trỏ về bản gốc. Với AgentKit, lệnh ak kit refresh đã chạy thử thành công trên cùng bản 3.0.0.

Nếu ak self-update --check không liên hệ được máy chủ phát hành, agent đối chiếu bản đang cài với ak changelog. Lần thử gặp đúng trường hợp này: changelog không có bản nào mới hơn 3.0.0, nên agent không đề xuất nâng AgentKit. Kết quả đó dựa trên changelog, chưa được máy chủ phát hành xác nhận.

Cập nhật xong mà dự án lỗi, bạn nhờ agent rollback (khôi phục bản trước), chẳng hạn: "Khôi phục orca-cook-plan về bản trong runtime/backups." Với bộ skill, agent đưa bản sao lưu về chỗ cũ và sửa lại packs.lock.json; với AgentKit, agent ghim lại bản cũ rồi refresh. Agent vẫn cho bạn xem trước và chờ bạn đồng ý.

Khi nào agent dừng lại chờ bạn quyết định?

Agent dừng khi cần bạn quyết, thay vì tự tìm cách vượt qua. Agent giải thích tình huống, các lựa chọn và file có thể bị ảnh hưởng. Một kế hoạch có thể có vài câu hỏi, nhưng agent chỉ đi tiếp khi bạn trả lời rõ.

Tình huốngAgent nói gìBạn làm gì
AgentKit đã cài chungMáy đã có AgentKit trong ~/.claude; cài thêm vào dự án thì hook và quy tắc của cả hai bản đều được nạpChọn dùng bản chung hay cài vào dự án; agent không sửa bản chung
File AgentKit đã sửa tayak dừng và liệt kê file bạn đã sửaGiữ bản đang có, hoặc nhờ agent giải thích phần sẽ bị ghi đè rồi mới đồng ý
Đường dẫn git đang theo dõiScript từ chối ghi vào đóBỏ link skill đó cho dự án này, hoặc đổi tên một trong hai skill
Thư mục thật chắn chỗ symlinkKhông link được nếu không dời thư mụcXem nội dung, đồng ý chuyển vào runtime/backups/ nếu hợp
MCP trả lỗi 403Tài khoản chưa có quyền tải bộ skill nàyKiểm quyền subscriber; agent không xin key trong chat
Link tải lỗiChưa chép, chưa link gì, thư mục tạm đã dọnBáo modernEngineer, rồi nhờ agent cài tiếp
Codex chưa tin cậy dự ánCodex chưa nạp .codex/ của dự ánMở Codex trong dự án, chấp nhận câu hỏi tin cậy
Skill mới chưa hiệnPhiên bắt đầu trước khi có linkGõ /reload-skills hoặc mở phiên mới
Windows không có WSL2Cách dùng symlink này không chạy đượcDùng WSL2, hoặc cài skill trực tiếp theo bài của từng bộ skill

Cuối mỗi việc, agent kiểm tra lại toàn bộ. Nếu kiểm tra không đạt, agent báo rõ phần chưa hoàn tất, không tự sửa thêm ngoài phạm vi bạn đã đồng ý.

Muốn hiểu vì sao cài AgentKit ở cả cấp máy lẫn cấp dự án khiến cùng một hook chạy hai lần, xem Guardrail trong Claude Code và AgentKit (1/2): cơ chế hook và các lớp cấu hình.

Câu hỏi thường gặp

Ba câu hay gặp khi bạn đã tự quản lý skill từ trước.

Đã chép skill vào .claude/skills từ trước thì sao?

Agent không ghi đè. Ví dụ shop-app/.claude/skills/orca-cook-plan đang là bản bạn tự chép: agent báo có thư mục thật ở đó và hỏi có chuyển nó vào runtime/backups/ để thay bằng symlink không. Chỉ một dự án và muốn cài thẳng thì xem Orca Cook Plan: chạy AgentKit plan qua Orca, mỗi phase một worker session mới.

Có cần commit gì vào repo không?

Symlink do cpl.sh tạo thì không, chúng đã được ẩn khỏi git status. File AgentKit thì có thể, vì ak cài thật vào dự án. Đưa phần nào vào git là việc của bạn hoặc nhóm bạn; agent không commit.

Có dùng được cho Cursor hay agent khác không?

Chưa nên. Skill 1.0.0 viết cho Claude Code và Codex, mình chưa thử ứng dụng agent khác. Script cpl.sh chỉ biết hai chỗ đặt skill: .claude/skills của Claude Code và .agents/skills của Codex. Ứng dụng khác đọc skill và hook ở thư mục riêng, nên link tạo ra nằm ở chỗ nó không tìm. Theo phần trợ giúp của ak kit init, ak cũng mới kiểm được việc trùng tên skill cho Claude Code và Codex. Đừng áp nguyên kết quả bài này sang ứng dụng khác.

Khi nào nên để agent quản lý tập trung?

Nếu quản lý nhiều dự án, hay dùng worktree hoặc không muốn tự nhớ lệnh cài và cập nhật, cách này đáng thử. Một dự án ít thay đổi, không dùng worktree thì cài skill trực tiếp là đủ.

Không dùng control plane, bạn vẫn cập nhật được: nhờ agent gọi pack-versions_get để xem có bản mới, rồi packs_download để tải và thay bộ skill trong từng dự án. Skill agent-control-plane dùng đúng hai công cụ đó, chỉ thêm phần một bản gốc cho nhiều dự án, file khóa và sao lưu bản cũ.

Tình huốngCách phù hợp
Một dự án, ít skill, không dùng worktreeCài skill trực tiếp
Nhiều dự án dùng chung bộ skill modernEngineerMột bản gốc trong thư mục control plane
Hay mở worktree, cần đủ hookSkill agent-control-plane cùng thao tác mirror
Không rành terminalSkill agent-control-plane, vẫn đọc kỹ bản xem trước
Mỗi dự án cần một bản skill khác nhauCài riêng từng dự án
Ứng dụng agent khác Claude Code và CodexChưa nên áp dụng

Đổi lại, mọi dự án cùng trỏ một bản gốc: bản gốc đổi thì tất cả nhận nội dung mới, skill 1.0.0 chưa cho dự án A giữ bản cũ trong khi dự án B lên bản mới.

Trong các lần thử ngày 1/11/2026, agent làm trọn cả vòng: kiểm trước, hỏi điều cần quyết, cài AgentKit và orca-cook-plan, link worktree, cập nhật bộ skill với bản cũ được giữ lại. Lần nào agent cũng dừng chờ bạn đồng ý trước khi ghi.

Nếu chọn cách này, mở phần Bộ file kèm bài, dán prompt cài skill agent-control-plane và chọn "cho mọi dự án". Sau đó mở một dự án, nhờ agent thiết lập thư mục control plane và chỉ đồng ý khi danh sách thay đổi đúng như bạn muốn.

Bộ file kèm bài

Bộ file

Bộ file là phần đã chạy thử của bài: tải về, sửa vài dòng, chạy được ngay. Chọn cách cài hợp với bạn.

Tải về và tự cài

  1. Bấm Tải bộ file. Link tải tạo mới mỗi lần bấm và hết hạn sau 15 phút.
  2. Giải nén. Bạn có một thư mục ngoài chứa pack.json, bên trong là một hoặc nhiều thư mục skill, mỗi thư mục có file SKILL.md.
  3. Chép mọi thư mục skill đó, đặt cạnh nhau, vào .claude/skills/ (Claude Code) hoặc .agents/skills/ (Codex), trong dự án hoặc trong thư mục home để dùng cho mọi dự án. Đừng chép thư mục ngoài chứa pack.json.
  4. Không có thư mục nào chứa SKILL.md ngay trong thư mục ngoài thì cài theo hướng dẫn trong bài.

Bài đọc miễn phí. Bộ file và cách cài qua MCP dành cho Subscriber, kèm mọi bộ file khác.

Cài qua MCPSubscriber

Dành cho Subscriber: dán một câu lệnh vào agent, agent tự tải, giải nén và cài bộ file, lần cập nhật sau cũng vậy.

Xem gói Subscriber

Dùng bài này trong agent của bạn

Lấy API key

Chép đoạn dưới, dán vào Claude Code, Codex hay agent bạn đang dùng. Agent đọc bài rồi đối chiếu với repo đang mở.

Dán vào agent
Đọc bài "Để agent tự cài và cập nhật AgentKit cùng bộ skill cho nhiều dự án qua MCP" trên modernEngineer rồi áp dụng vào repo này.
1. Gọi tool content_get của MCP server modernengineer với locale "vi", slug "agent-control-plane-mcp-first". Nếu chưa nối MCP hoặc bị từ chối quyền, đọc thẳng trang https://modernengineer.dev/vi/library/agent-control-plane-mcp-first.
2. Tóm tắt các bước chính của bài, chỉ ra bước nào áp dụng được cho repo này.
3. Đề xuất thay đổi cụ thể và hỏi tôi trước khi sửa file.
Nối MCP cho Claude Code (một lần)
terminal
claude mcp add --transport http modernengineer \
  https://api.modernengineer.dev/mcp \
  --header "Authorization: Bearer <API key>"
Cách nối Codex, Cursor và client khác

Bài mở cho mọi người: chưa nối MCP thì agent vẫn đọc được thẳng từ link bài.

Phiên bản
v1.0.2
Cập nhật
02/11/2026
Giấy phép
Bảo lưu mọi quyền
Slug
agent-control-plane-mcp-first