You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
skills is a zero-dependency Go binary that installs agent skills from
GitHub subdirectories. It replaces gh skill install with something
that actually works.
State model
skills manages four layers of state — from declarative config to what is
actually on disk:
flowchart LR
subgraph Manifest["📄 .manifest.json"]
M[Declared intent:<br/>which skills, where,<br/>from what source]
end
subgraph Lock["🔒 .lock.json"]
L[Resolved versions:<br/>pinned commit per skill]
end
subgraph Disk["💾 disk"]
D[Actual files:<br/>~/.agents/skills/<br/>~/.codex/skills/<br/>~/.claude/skills/]
end
subgraph Mirrors["🔗 mirrors"]
MR[Derived symlinks:<br/>shared→claude<br/>shared→opencode]
end
Manifest -->|skills install| Lock
Lock -->|download| Disk
Manifest -->|install/update| Mirrors
Disk -.->|verify| Mirrors
style Manifest fill:#1a1a2e,stroke:#e94560
style Lock fill:#16213e,stroke:#0f3460
style Disk fill:#0f3460,stroke:#53d769
style Mirrors fill:#533483,stroke:#e94560
Loading
Layer
File / Dir
Role
manifest
.manifest.json
期望状态 — what you want
lock
.lock.json
已解析版本 — what you pinned
disk
~/.agents/skills/, etc.
实际安装结果 — what you have
mirrors
(manifest field)
namespace 派生关系 — cross-agent sharing
Install
Homebrew(推荐)
brew install cagedbird043/tap/skills-cli
Go (if you have Go installed)
go install github.com/cagedbird043/skills@latest
curl
curl -sfL https://cagedbird.cn/skills/install.sh | sh
Build from source
git clone https://github.com/cagedbird043/skills.git
cd skills
make install
Quick start
# List all skills defined in the manifest
skills list
# Install all skills
skills install
# Install a single skill
skills install drawio
# Check skill directory integrity
skills verify
# Show skill details
skills info drawio
Manifest format
Create a .manifest.json that declares directories, mirrors, and skills.
A complete example lives at examples/manifest.json: