Communitygithub.com

xFurti/skillctl

Universal package manager CLI for Agent Skills — manifest, lockfile, multi-agent sync (Cursor, Claude, Codex, Gemini). Node ≥22.13.

What is skillctl?

skillctl is a Claude Code agent skill that universal package manager CLI for Agent Skills — manifest, lockfile, multi-agent sync (Cursor, Claude, Codex, Gemini). Node ≥22.13.

Works withClaude CodeCodex CLICursorGemini CLIOpenCode
npx skills add xFurti/skillctl

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

What does skillctl do?

Operational playbook for managing Agent Skills with the skillctl CLI. Run real commands; do not simulate output or copy SKILL.md files between agent directories by hand.

Golden rules

  1. One canonical store — skills live in ~/.skillctl/skills/<name>/; agents get symlinks via sync.
  2. Commit manifest + lock — track agent-skills.json and agent-skills.lock in git for team reproducibility.
  3. Portable specifiers only — use file:./<path>, local:imported/<name>, github:, npm:, or skills.sh/; never commit absolute homedir paths.
  4. Install before syncinstall materializes the store; sync only re-links agents.
  5. Verify after changes — run skillctl doctor (and skillctl audit in CI).
  6. Prefer import over manual copy — use import from-project or import from-npx instead of duplicating skill folders.

Decision tree

SituationCommand
New project, no manifestskillctl init or skillctl init --with-skill
Add a remote or local skillskillctl add <specifier> then skillctl install
Skills already in .claude/skills, .codex/skills, etc.skillctl import from-project
Migrating from npx skillsskillctl import from-npx
Re-link only (lock unchanged)skillctl sync
Re-fetch from upstreamskillctl update or skillctl update <name>
CI reproducible installskillctl install --frozen then skillctl audit --strict
Non-portable paths in lockskillctl install to rewrite; check skillctl doctor warnings

Quick recipes

# Bootstrap
skillctl init --with-skill
skillctl add github:vercel-labs/agent-skills#web-design-guidelines
skillctl install

# Project-local skill
skillctl add file:./my-skill
skillctl install
skillctl sync

# Import existing agent dirs
skillctl import from-project --dry-run
skillctl import from-project

# Inspect
skillctl list
skillctl doctor
skillctl audit --json

Expected after add file:./my-skill + install: manifest specifier file:./my-skill, lock canonicalPath like ~/.skillctl/skills/my-skill.

Portability (0.3.1+)

  • Portable: file:./rel, local:imported/<name>, remote specifiers, canonicalPath: ~/.skillctl/skills/<name>.
  • Not portable: absolute file:/Users/..., local:/abs/path, absolute canonicalPath from another machine.
  • If doctor warns about non-portable paths, run skillctl install to rewrite lock from manifest.

Failure modes

SymptomAction
canonical path missingskillctl install
Integrity mismatchskillctl update <name> or skillctl install
Symlink fails (Windows)doctor notes; config defaultMode: copy
No agents linkedskillctl sync; enable agents in ~/.skillctl/config.json
Frozen install failedStore out of sync; run install without --frozen

References

Related Skills