变更摘要: - 重构 cli/README.md 大纲结构,参考 guide 文档重新组织章节逻辑 - 补充 Windows PowerShell/CMD 环境变量设置方式到三份文档 - Command Reference 表格补全 --json、--registry、--token 等选项 - 英文 guide Registry 优先级第3条补充文件路径与中文版对齐 - 两份 guide 末尾补充 License 章节,Local Development 补 Windows 说明 - README 各章节标题添加语义化 emoji icon 关键文件: - cli/README.md - docs/skillhub/en/guide/cli.md - docs/skillhub/guide/cli.md
11 KiB
SkillHub CLI
SkillHub CLI is the official command-line tool for SkillHub, designed for searching, installing, managing, and publishing Agent skill packages.
📦 Installation
# Install globally via npm
npm install -g @astron-team/skillhub
# Or run directly with npx
npx @astron-team/skillhub@latest version
# Or install globally via Bun
bun add -g @astron-team/skillhub
🚀 Quick Start
# Login
skillhub login --token sk_xxx
# Search skills
skillhub search pdf
# Install skill to Agent directory
skillhub install pdf-parser --agent codex
# List installed skills
skillhub list
# Publish skill
skillhub publish ./my-skill --namespace myspace
🌐 Registry Configuration
The active registry is resolved in the following priority order:
--registry <url>command-line argumentSKILLHUB_REGISTRYenvironment variableregistryin~/.skillhub/config.json- Default value
https://skill.xfyun.cn
# Temporarily use another registry
skillhub search pdf --registry https://skillhub.example.com
# Set via environment variable (Linux/macOS)
export SKILLHUB_REGISTRY=https://skillhub.example.com
Windows PowerShell:
$env:SKILLHUB_REGISTRY="https://skillhub.example.com"
Windows CMD:
set SKILLHUB_REGISTRY=https://skillhub.example.com
🔐 Authentication
Token resolution priority:
--token <token>command-line argumentSKILLHUB_TOKENenvironment variable- Token stored in
~/.skillhub/credentials.json(per registry)
Login
# Login with API token
skillhub login --token sk_xxx
# Login to specific registry
skillhub login --token sk_xxx --registry https://skillhub.example.com
login validates the token, stores it in ~/.skillhub/credentials.json, and writes the registry to ~/.skillhub/config.json.
Check Current Identity
skillhub whoami
# Check specific registry
skillhub whoami --registry https://skillhub.example.com
# Temporarily use different token
skillhub whoami --token sk_other
Logout
skillhub logout
# Logout from specific registry
skillhub logout --registry https://skillhub.example.com
Logout only removes the token for the specified registry, preserving registry configuration and installation records.
🔍 Search
# Keyword search
skillhub search pdf
# List all skills (empty query)
skillhub search "" --limit 50
# JSON output
skillhub search pdf --json
Output format: namespace/slug version summary
📥 Install Skills
# Install to auto-detected Agent directory
skillhub install pdf-parser
# Specify namespace (default: global)
skillhub install pdf-parser --namespace myspace
# Specify version
skillhub install pdf-parser --version 1.2.0
# Install to specific Agent
skillhub install pdf-parser --agent codex
# Install to multiple Agents
skillhub install pdf-parser --agent codex --agent claude-code
# Install to custom directory
skillhub install pdf-parser --dir ~/.claude/skills
# Force overwrite existing installation
skillhub install pdf-parser --force
Install Target Resolution
The CLI determines the installation location using the following logic:
- If
--diris specified: Install to that directory, agent marked ascustom - If
--agentis specified: Install to the corresponding Agent's skills directory - If neither is specified: Auto-scan current directory to detect existing Agent config directories
- 1 Agent detected → Install directly
- Multiple Agents detected → Interactive selection (TTY mode) or error (non-interactive mode)
- No Agent detected → Fallback to
<cwd>/.agents/skills/
--dirand--agentcannot be used together.
Install Paths
Each Agent has both project-level and user-level skills directories:
| Agent | Project-level Path | User-level Path |
|---|---|---|
claude-code |
<project>/.claude/skills/ |
~/.claude/skills/ |
codex |
<project>/.codex/skills/ |
~/.codex/skills/ |
cursor |
<project>/.cursor/skills/ |
~/.cursor/skills/ |
github-copilot |
<project>/.github-copilot/skills/ |
~/.github-copilot/skills/ |
gemini-cli |
<project>/.gemini-cli/skills/ |
~/.gemini-cli/skills/ |
windsurf |
<project>/.windsurf/skills/ |
~/.windsurf/skills/ |
kiro-cli |
<project>/.kiro-cli/skills/ |
~/.kiro-cli/skills/ |
roo |
<project>/.roo/skills/ |
~/.roo/skills/ |
trae |
<project>/.trae/skills/ |
~/.trae/skills/ |
trae-cn |
<project>/.trae-cn/skills/ |
~/.trae-cn/skills/ |
openhands |
<project>/.openhands/skills/ |
~/.openhands/skills/ |
openclaw |
<project>/.openclaw/skills/ |
~/.openclaw/skills/ |
opencode |
<project>/.opencode/skills/ |
~/.opencode/skills/ |
kilo |
<project>/.kilo/skills/ |
~/.kilo/skills/ |
For Agents not in the list, use --dir to specify the installation path.
File Structure After Installation
.codex/skills/pdf-parser/
├── ... # Extracted skill package files
└── .skillhub/
└── metadata.json # Installation metadata
metadata.json example:
{
"registry": "https://skill.xfyun.cn",
"namespace": "global",
"slug": "pdf-parser",
"version": "1.0.0",
"agent": "codex",
"installedAt": "2026-04-28T06:00:00.000Z"
}
📋 Local Management
List Installed Skills
# List all installed skills
skillhub list
# Filter by Agent
skillhub list --agent codex
# Filter by multiple Agents
skillhub list --agent codex --agent claude-code
# Filter by directory
skillhub list --dir ~/.codex/skills
# JSON output
skillhub list --json
Remove Skills
# Remove all local installation targets
skillhub remove pdf-parser
# Remove only specific Agent's installation
skillhub remove pdf-parser --agent codex
# Remove all targets (skip interactive confirmation)
skillhub remove pdf-parser --all
# Remove remote skill (requires authentication, prompts for confirmation)
skillhub remove pdf-parser --remote --namespace myspace
# Skip remote deletion confirmation
skillhub remove pdf-parser --remote --hard --namespace myspace
Parameter exclusivity rules:
--allcannot be used with--agent--remotecannot be used with--agentor--all- Remote deletion in non-interactive environments requires
--hard
Rebuild Local Inventory
skillhub doctor
doctor performs the following operations:
- Scans
<cwd>/.<agent>/skills/<slug>/.skillhub/metadata.json - Groups by
registry + namespace + slug - Backs up old
inventory.json(if exists) - Writes new
inventory.json
If the same skill has version conflicts across different targets, that skill will be skipped and reported.
🚢 Publishing
# Publish directory (auto-packaged as zip)
skillhub publish ./my-skill --namespace myspace
# Publish existing zip file
skillhub publish ./my-skill.zip --namespace myspace
# Specify visibility
skillhub publish ./my-skill --namespace myspace --visibility private
Visibility options:
public(default) — Visible to everyonenamespace-only— Visible to namespace members onlyprivate— Visible to yourself only
After successful publication, the skill detail page URL will be displayed.
⬆️ Self-Update
# Check for new version
skillhub update --check
# Execute update
skillhub update
Update mechanism:
- Installed via npm globally: Auto-executes
npm install -g @astron-team/skillhub@latest - Installed via Bun globally: Auto-executes
bun add -g @astron-team/skillhub@latest - Run via npx: Prompts manual update command
- Unknown installation method: Prompts manual update
🔧 Environment Variables
| Variable | Description | Priority |
|---|---|---|
SKILLHUB_REGISTRY |
Default registry URL | Lower than --registry parameter |
SKILLHUB_TOKEN |
API token | Lower than --token parameter, higher than stored token |
📂 Local File Structure
~/.skillhub/
├── config.json # User configuration (registry, defaultAgent, etc.)
├── credentials.json # API tokens (stored per registry, permissions 0600)
└── inventory.json # Installed skills inventory
📖 Command Reference
| Command | Description |
|---|---|
skillhub help [command] |
Display help information |
skillhub version [--json] |
Display CLI version |
skillhub login --token <token> [--registry <url>] [--json] |
Save token and registry configuration |
skillhub logout [--registry <url>] [--json] |
Remove token for specified registry |
skillhub whoami [--registry <url>] [--token <token>] [--json] |
Validate current token and display user information |
skillhub search <query> [--registry <url>] [--limit <n>] [--json] |
Search published skills |
skillhub install <slug> [--namespace <slug>] [--version <v>] [--agent <profile>] [--dir <path>] [--force] [--registry <url>] [--token <token>] [--json] |
Install a skill |
skillhub list [--agent <profile>] [--dir <path>] [--registry <url>] [--json] |
List installed skills |
skillhub remove <slug> [--agent <profile>] [--all] [--remote] [--hard] [--namespace <slug>] [--registry <url>] [--token <token>] [--json] |
Remove a skill |
skillhub doctor [--json] |
Scan project directory and rebuild local inventory |
skillhub publish <path> [--namespace <slug>] [--visibility <v>] [--registry <url>] [--token <token>] [--json] |
Publish a skill |
skillhub update [--check] [--json] |
Check or execute CLI self-update |
🔒 Security Notes
- Tokens are stored only in user directory
~/.skillhub/credentials.json - On Linux/macOS, credential file permissions are automatically set to
0600 - Tokens are never written to any project-local files
- Remote delete operations require explicit confirmation or
--hardparameter removecommand validates path safety to prevent deletion of non-skill directories
🐛 Troubleshooting
Authentication Failure
# Verify token validity
skillhub whoami
# Re-login
skillhub login --token sk_xxx
Network Error
# Check if registry is accessible
curl https://skill.xfyun.cn/api/cli/v1/skills/search?q=test&limit=1
# Use alternative registry
skillhub search test --registry https://skillhub.example.com
Installation Directory Conflict
# Use --force to overwrite
skillhub install pdf-parser --force
# Or remove first then install
skillhub remove pdf-parser
skillhub install pdf-parser
Corrupted Inventory
# Rebuild inventory
skillhub doctor
📚 Documentation
📄 License
Apache-2.0
Copyright 2026 iFlytek Co., Ltd.