A skills manager for Claude
SaferSkills independently audited skillman (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Python CLI for managing Claude skills from GitHub repositories. Handles installation, versioning, and synchronisation of skills across user and project scopes -- mostly gracefully.
Once published to PyPI:
pip install skillmanThe uv tool is a fast, all-in-one Python package installer and tool runner:
uv tool install skillmanOr run directly without installing:
uv run --with skillman skillman initpipx install skillmanClone the repository and install in development mode:
git clone https://github.com/chrisvoncsefalvay/skillman.git
cd skillman
pip install -e .Or with development dependencies:
pip install -e ".[dev]"Create an empty manifest in your project:
skillman initList installed skills:
skillman listCreate empty skills.toml in current directory.
Add and install a skill from GitHub.
By default, the tool displays a security warning before installation to help you make informed decisions about which skills to install.
Options:
-s, --scope <local|user>: Installation scope (default: local)--no-verify: Skip skill validation--force: Overwrite existing skill--dangerously-skip-permissions: Skip security warning (not recommended)Skill specification format:
username/reponame[@version]username/reponame/foldername[@version]username/reponame/folder1/folder2/...[@version]@1.2.3 (tag), @abc1234 (SHA), @latest or omitted (latest)Supports arbitrary nesting levels. The tool will look for SKILL.md in the specified path.
Example:
skillman add anthropics/skills/canvas-design
skillman add anthropics/skills/document-skills/docx
skillman add myorg/repo/[email protected]Remove skill from manifest and filesystem.
Options:
-s, --scope <local|user>: Only remove from specified scope--keep-files: Remove only from manifest, keep installed filesCheck if skill exists at source and has valid structure.
List installed skills with status.
Options:
-s, --scope <local|user>: Show only specified scopeStatus values:
Display detailed skill information.
Update installed skills to versions specified in manifest.
Options:
--all: Update all skills--dry-run: Show what would happenExamples:
skillman update canvas-design
skillman update --all
skillman update --dry-runFetch and update all skills (alias for update --all).
Synchronise skills between manifest and installed.
Options:
--up: Update skills to latest matching manifest constraints--down: Add installed-but-unlisted skills to manifest-y, --yes: Don't prompt for confirmation--dry-run: Show what would happenRemove orphaned skills (installed but not in manifest).
Options:
-s, --scope <local|user>: Clean only specified scope--dry-run: Show what would happen-y, --yes: Don't prompt for confirmationManage configuration.
Subcommands:
get <key>: Get configuration valueset <key> <value>: Set configuration valuelist: List all configuration valuesConfiguration keys:
default-scope: Default installation scope (local or user)github-token: GitHub token for private repositoriesConfiguration file location: ~/.skillman/config.toml
Example:
skillman config set github-token your-token-here
skillman config get default-scope
skillman config listSkills are installed to:
~/.claude/skills/user/./.claude/skills/Skills are declared in skills.toml:
[tool.skillman]
version = "1.0.0"
[[skills]]
name = "canvas"
source = "anthropics/skills/canvas-design"
version = "latest"
scope = "user"
aliases = ["design"]
[[skills]]
name = "custom"
source = "myorg/repo/custom-skill"
version = "1.0.0"
scope = "local"Skills can execute code and access system resources. Before installing a skill, you should:
skillman verify to examine what a skill does before installing it.--dangerously-skip-permissions flag allows skipping the security warning. This is not recommended except for trusted, well-known skills.For detailed information about skill security and permissions, see: Using Skills in Claude - Security
Skillman automatically extracts metadata from SKILL.md front matter in YAML format:
---
title: My Skill
description: What this skill does
license: MIT
author: Author Name
version: 1.0.0
tags:
- documentation
- productivity
---
# Skill content...Extracted metadata is displayed when:
skillman verify username/repo/skillskillman show skillnameIf no YAML front matter is present, the first non-header paragraph from the markdown is used as the description.
skills.lock is automatically generated and maintains exact commit SHAs for reproducible installations. This file should be committed to version control.
Create ~/.skillman/config.toml for global configuration:
default-scope = "local"
github-token = "your-github-token"Or use the skillman config command:
skillman config set github-token your-tokenInstall development dependencies:
pip install -e ".[dev]"Run tests:
pytestFormat code:
black skillmanType check:
mypy skillmanThe tool is structured as follows:
cli.py: Click-based CLI commandsmodels.py: Data models (Skill, Manifest, LockFile)config.py: Configuration managementgithub.py: GitHub operations and skill validationinstaller.py: Skill installation and managementutils.py: Utility functions for manifest and lock file handlingAll output uses the Rich library for ASCII-compatible formatting (no Unicode box-drawing or emoji).
The tool provides (mostly) clear error messages for:
MIT
Made with ❤️ in the Mile High City 🏔️ by Chris von Csefalvay and 🐶 Oliver.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.