CoDev CLI

Tìm, cài và phát hành Skill từ terminal với codevhub

Tổng quan

Các lệnh codevhub skill nằm trong CLI codevhub (package codev-ai) — giúp bạn tìm, cài Skill từ Hub vào máy local và phát hành Skill lên Hub, ngay trong terminal. Phù hợp cho developer và AI agent.

🔍
codevhub skill search
Tìm Skill PUBLIC theo từ khóa, không cần đăng nhập
📥
codevhub skill pull
Tải & cài Skill vào ./.claude/skills hoặc ~/.claude/skills
📤
codevhub skill push
Đóng gói thư mục Skill và đẩy lên Hub để admin duyệt
🔐
SSO & Admin
Đăng nhập Viettel SSO hoặc tài khoản admin
Yêu cầu: Node.js ≥ 22. URL của Hub được cấu hình sẵn trong CLI (https://netmind.viettel.vn/netmindhub) — bạn không cần khai báo registry. CLI dùng session cookie (admin) hoặc SSO bearer token.

Cài đặt

Cài CLI codevhub qua npm. Yêu cầu Node.js ≥ 22.

Bước 1 — Cài CLI

npm — recommended
npm install -g codev-ai

Package manager khác:

pnpm / yarn / bun
pnpm add -g codev-ai
# hoặc:
yarn global add codev-ai
# hoặc:
bun add -g codev-ai

Bước 2 — Xác nhận

codevhub --version
codevhub --help
Để dùng các lệnh codevhub skill bạn chỉ cần đăng nhập (xem mục dưới). Chạy codevhub install nếu muốn cài & cấu hình đầy đủ các agent (Claude Code, Codex, OpenCode…) và CodeGraph.

Đăng nhập (SSO & admin)

Lệnh codevhub skill search codevhub skill pull (với Skill PUBLIC) không cần đăng nhập; codevhub skill push thì bắt buộc.

1) Viettel SSO — trình duyệt loopback (khuyến nghị)

CLI mở một HTTP server tạm ngay trên máy bạn rồi mở trình duyệt tới trang xác nhận của SkillHub — tương tự cách claude hay gh auth login hoạt động. Đăng nhập SSO xong là CLI tự nhận được phiên, không cần copy/paste cookie. User thường vẫn publish được qua SSO.

sso login
codevhub login

# --force để bỏ qua phiên đã cache và đăng nhập lại từ đầu
codevhub login --force

2) Local — tài khoản admin

Chỉ tài khoản ADMIN / SUPERADMIN đăng nhập được bằng username/password (user thường phải dùng SSO). Cần cho thao tác --auto-approve.

admin login
# Tương tác (sẽ hỏi user/pass)
codevhub login --admin

# Hoặc không tương tác (cho CI)
codevhub login --admin --username admin --password "$ADMIN_PWD"

Đăng xuất

codevhub logout       # đăng xuất cả SSO và phiên admin
Tip: nếu phiên hết hạn, các lệnh cần auth sẽ báo SkillHub session expired or invalid (401). Chạy lại codevhub login.

Lệnh tham khảo

LệnhMục đíchCần đăng nhập?
login [--admin]Đăng nhập SSO (mặc định) hoặc admin
logoutĐăng xuất SSO & phiên adminKhông
skill search <query>Tìm Skill PUBLIC trên Hub (query bắt buộc)Không
skill pull <name|id>Tải Skill và giải nén vào thư mụcKhông (cho Skill PUBLIC)
skill push <path>Upload → DRAFT → SUBMITTED (admin duyệt)

Flag theo lệnh

  • --json — in kết quả dạng JSON cho script (có ở search / pull / push)
  • search: --limit <n> — giới hạn số kết quả (mặc định 20)
  • pull: --dir <path> — chọn thẳng thư mục cài, --force / -f — ghi đè nếu đã tồn tại
  • push: --draft-only — dừng ở DRAFT, --auto-approve — admin publish thẳng lên PUBLIC
  • --help — hiển thị help chung

Workflow: pull (cài Skill)

cài Skill về máy local
# 1. Tìm Skill (query bắt buộc)
codevhub skill search reviewer

# 2. Cài Skill — CLI hỏi vị trí:
#    • current  -> ./.claude/skills/<name>
#    • global   -> ~/.claude/skills/<name>
codevhub skill pull code-reviewer

# 3. Bỏ qua prompt, chỉ định thẳng thư mục
#    (bắt buộc khi chạy trong CI / no-TTY)
codevhub skill pull code-reviewer --dir ./.claude/skills

# 4. Ghi đè nếu đã tồn tại
codevhub skill pull code-reviewer --force

# 5. Cài theo id + output JSON
codevhub skill pull 687d60b6-... --dir ~/.claude/skills --json
pull nhận cả tên (kebab-case) lẫn id. CLI tự strip top-level folder trong ZIP, nên nội dung được giải nén thẳng vào <dir>/<name>/SKILL.md — không bị lồng thêm một lớp thư mục thừa.

Workflow: push (phát hành Skill)

Thư mục Skill phải chứa SKILL.md ở root, đúng chuẩn Anthropic ( xem cấu trúc). Bạn cũng có thể push một file .zip dựng sẵn.

luồng publish chuẩn (user thường)
# 1. Đăng nhập trước
codevhub login              # SSO — user thường vẫn publish được

# 2. Publish thư mục Skill (xem preview & xác nhận trước khi upload)
codevhub skill push ./my-skill

# Kết quả ví dụ:
#   Published skill 687d60b6-...
#     uploaded
#     metadata saved (DRAFT)
#     submitted for review (SUBMITTED)
#
#   Status: SUBMITTED — admin cần duyệt trước khi Skill xuất hiện công khai.

Các tuỳ chọn nâng cao

# Chỉ dừng ở DRAFT (không submit để review)
codevhub skill push ./my-skill --draft-only

# Admin: submit + auto-approve -> PUBLIC ngay
codevhub skill push ./my-skill --auto-approve

# Publish file .zip có sẵn
codevhub skill push ./my-skill.zip

# Output JSON cho script tự động (bỏ qua bước preview/confirm)
codevhub skill push ./my-skill --json
Quy trình duyệt: Sau khi SUBMITTED, Skill sẽ xuất hiện trong Admin Review queue . Admin có thể APPROVE → PUBLIC hoặc REJECT với feedback.

Khắc phục sự cố

Not logged in to SkillHubChưa đăng nhập. Chạy: codevhub login (SSO) hoặc codevhub login --admin.
SkillHub session expired or invalid (401)Phiên hết hạn. Chạy lại codevhub login.
Skill "X" not found or not public.Tên/id sai hoặc Skill chưa PUBLIC. Dùng codevhub skill search để xác nhận tên chính xác.
Usage: codevhub skill search <query> ...Lệnh search bắt buộc có query. Truyền từ khóa cần tìm.
Already installed at <path>. Pass --force to overwrite.Đã có Skill cùng tên trong thư mục đích. Thêm --force để ghi đè.
Not a terminal — pass --dir <path> ...Trong CI / no-TTY không có prompt chọn vị trí — truyền --dir <path> khi pull.
Refusing to install skill with unsafe name "..."Tên Skill do Hub trả về không an toàn (chứa .. hoặc dấu phân cách). Báo cho admin — CLI từ chối để tránh ghi ra ngoài thư mục skills.
Directory must contain a SKILL.md at its root.File SKILL.md phải nằm trực tiếp trong thư mục Skill, đúng tên (case-sensitive).
File must be a .zip archive.Khi push một file, file đó phải có đuôi .zip. Hoặc push cả thư mục Skill.
Review failed (403)--auto-approve chỉ dành cho admin. Đăng nhập bằng codevhub login --admin.

Exit codes

  • 0 — thành công
  • 1 — lỗi (chưa login, không tìm thấy, sai tham số, filesystem…)
Xem log chẩn đoán của CLI bằng codevhub logs (thêm --verbose để có chi tiết).