Skip to main content

Project-scoped declarative skill manager for agent skills

Project description

Skill Manager

Project-scoped declarative skill manager for coding agents that load skills from ./.agents/skills/ (and optionally ~/.agents/skills/).

One source, many projects, slim globals. Each skill lives once in a cached Source. Projects get symlinks (Links), not copies. Keep agent-global skills minimal; declare per project what you actually need.

Compatible with any agent that discovers skill directories containing SKILL.md under those paths (pi is one example).

Today skill-manager only writes project Links under ./.agents/skills/. Managing ~/.agents/skills/ is on the roadmap.

Features

  • Declare and sync project skills — write .skill-manager.json, run skill-manager sync
  • Inspect source and link statusskill-manager list (linked / external / broken / unlinked)
  • Enable / disable — interactive menus, or non-interactive enable <repo> <name> / disable <name>
  • Manage source cacheskill-manager source list|add|remove|update|available-skills
  • Scripting / CI — root --json on every command (skill-manager --json <cmd> ...)

Install

uv tool install cnife-skill-manager
# or: pipx install cnife-skill-manager

# from source (dev):
uv tool install .
# or run in-place:
uv run skill-manager

Configure

Create ./.skill-manager.json in your project:

{
  "skills": [
    {"name": "read", "repo": "tw93/Waza", "path": "skills/read"},
    {"name": "kami", "repo": "tw93/Kami", "path": "."}
  ]
}
  • name: symlink name under ./.agents/skills/ (single path component; duplicates error)
  • repo: GitHub owner/repo (both parts must be safe slug components)
  • path: skill directory inside the repo (. for repo-root skills; must contain SKILL.md; path traversal is rejected)

Usage

skill-manager sync                     # clone/fetch sources, link declared skills
skill-manager list                     # show sources and skill status
skill-manager enable                   # interactive: pick cached repo + skill, then sync
skill-manager enable <repo> <name>     # non-interactive enable (path derived from cache)
skill-manager disable                  # interactive: pick an enabled skill
skill-manager disable <name>           # non-interactive disable
skill-manager --json sync              # single JSON object on stdout (all commands)

Source repository management

skill-manager source list                    # list registered sources and HEAD status
skill-manager source add <owner/repo>        # add and clone a new source
skill-manager source remove <repo>           # remove source (cache + config)
skill-manager source update [repo]           # update one or all sources
skill-manager source available-skills [repo] # list skills in the cache (no project config)

sync is idempotent and never overwrites an existing non-tool symlink (it skips with a notice). Sources are derived from the declared skills' repo fields.

With --json, success is {"ok": true, "data": ...} and failure is {"ok": false, "error": {"code", "message"}} (exit 0 / 1 / 2 for success / business error / usage error). Place --json before the subcommand: skill-manager --json list, not skill-manager list --json.

Paths (XDG)

What Path
Global config $XDG_CONFIG_HOME/skill-manager/config.json (default ~/.config/skill-manager/config.json)
Source cache $XDG_CACHE_HOME/skill-manager/repos/ (default ~/.cache/skill-manager/repos/)
Project skills ./.agents/skills/

Roadmap

The What — actionable tickets — lives in the issue tracker. This section is the Why: the shape skill-manager is growing toward.

Dual-user design

skill-manager has two users, and every surface must serve both:

  • Humans — an interactive CLI, and a project config (.skill-manager.json) simple enough to read and edit by hand.
  • Agents — batch-friendly flags and machine-readable output for scripts, CI, and AFK coding agents.

Any source

A Source shouldn't be locked to owner/repo on GitHub. Arbitrary Git URLs and local directories should qualify too. Pinning a Source to a specific commit or tag for reproducibility is a lower-priority future direction.

One model, project and global

Project Links and user-global Links (~/.agents/skills/) should share one declaration-and-sync model: keep globals slim, declare per project what you actually need.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cnife_skill_manager-0.2.0.tar.gz (45.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cnife_skill_manager-0.2.0-py3-none-any.whl (17.9 kB view details)

Uploaded Python 3

File details

Details for the file cnife_skill_manager-0.2.0.tar.gz.

File metadata

  • Download URL: cnife_skill_manager-0.2.0.tar.gz
  • Upload date:
  • Size: 45.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for cnife_skill_manager-0.2.0.tar.gz
Algorithm Hash digest
SHA256 441abb2f392740b36808309a97352757553927d1abd9fe291223a8d6136cc669
MD5 c2238a7b44e5a31ab27148fe81e12cfe
BLAKE2b-256 7fa63b5dac18454fc1b82ee9810673f0d490c436c43f97a760e4bf940b97baa7

See more details on using hashes here.

Provenance

The following attestation bundles were made for cnife_skill_manager-0.2.0.tar.gz:

Publisher: publish.yml on CNife/skill-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cnife_skill_manager-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for cnife_skill_manager-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4331cbc90a2fc73991ebb1cb83502411fac3a7f1732d263c69d39abe0621f158
MD5 30b39544ecf10910049810d05765fa8b
BLAKE2b-256 168030588ba0d33babe48ce5579c9d1be1e638054698477d999e33da496bc30e

See more details on using hashes here.

Provenance

The following attestation bundles were made for cnife_skill_manager-0.2.0-py3-none-any.whl:

Publisher: publish.yml on CNife/skill-manager

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page