Skip to content
Back to skills

Spm

ASecurity

Use spm (Skill and Plugin Manager) to find, install, update, and tidy agent skills for the user's coding agents. Reach for it when the user asks "is there a skill for X", "how do I do X" in a specialised domain, wants a capability the agent lacks, mentions spm, catalogs, SKILL.md folders, or .agents/skills, or when a task would clearly go better with domain knowledge that a skill could supply.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsgoshellbashreacttestinggitperformance

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 23, 2026

npx -y skills add hiadamhere/spm --skill spm --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Spm?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Spm
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/hiadamhere-spm/badge)](https://www.skillsdirectory.com/skills/hiadamhere-spm)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: spm
description: Use spm (Skill and Plugin Manager) to find, install, update, and tidy agent skills for the user's coding agents. Reach for it when the user asks "is there a skill for X", "how do I do X" in a specialised domain, wants a capability the agent lacks, mentions spm, catalogs, SKILL.md folders, or .agents/skills, or when a task would clearly go better with domain knowledge that a skill could supply.
---

# spm — Skill and Plugin Manager

spm installs reusable **skills** (a folder with a `SKILL.md` and optional `references/`) from Git-based
**catalogs** into every coding agent on the machine. It follows the open agent-skills conventions: one
shared copy in `.agents/skills/<skill>/` (project) or `~/.agents/skills/<skill>/` (global), plus a link from
each other agent's own skills folder to that copy. `spm agents` lists every
supported agent with its key, folders, and whether it is detected on this machine — use it instead of
remembering names.

Full detail lives in `references/`: [commands](references/commands.md) (every command and flag),
[concepts](references/concepts.md) (catalogs, scopes, the install model, doctor/cleanup, config),
[mcp](references/mcp.md) (spm as an MCP server). Read the one you need; do not load them all.

## When to use spm

- The user asks for something that is probably a packaged skill: "find a skill for X", "is there a
  skill that…", "how do I do X" for a framework, platform, or workflow (React performance, PDF handling,
  Cloudflare Workers, Uno Platform, Stripe, testing, deploys, …).
- You are about to work in a domain where you lack specifics and a well-known vendor skill exists.
- The user mentions skills, catalogs, `SKILL.md`, `.agents/skills`, or spm itself.
- Skills stopped working, folders look stale, or the user asks to clean up: `spm doctor`.

Do not use spm to install arbitrary code. A skill is instructions and reference files, never executables.

## MCP or command line?

spm is both a CLI and an MCP server (`spm mcp serve`). Pick one per task:

1. **spm's MCP tools are in your tool list** (a server named `spm` offering `search`, `info`, `install`,
   `list`, `catalog_sync`, `doctor`, …) → **use the tools**. They are structured, annotated (read-only vs
   destructive, so the host asks before `uninstall`, `catalog_remove`, `cleanup`), and need no shell.
2. **No spm tools available** → **run the CLI** through your shell tool. This is the common case.
3. **Always the CLI** for interactive pickers (`spm update` / `spm uninstall` with no name), fine control
   (`--agents`, `--copy`, `--project`/`--global`), scripting, and `spm cleanup --apply`.

Never start `spm mcp serve` yourself: the host launches it. Never mix both in one flow.

## Core flow: find → inspect → install

```bash
spm search "seo website"        # ranked, typo-tolerant search across the user's catalogs
spm info <skill>                # description, catalog, install status, reference-file count
spm install <skill>             # from a catalog by name
spm install org/repo            # or straight from a GitHub repo (pick one or more skills)
spm install org/repo/<skill>    # one skill from a repo, no picker
```

If `search` finds nothing, the user may have no catalogs: `spm catalog list`. Offer
`spm catalog import && spm catalog sync` (a curated index of well-known skill repositories), or
`spm catalog add <name> org/repo` for a specific library.

## Rules of engagement

- **Scope.** Inside a project (a folder with `.git` or `package.json`) install to the **project** unless
  the user wants it everywhere; pass `--project` explicitly in non-interactive runs. Use `--global` only
  when asked or when the skill is general-purpose and the user agrees.
- **Which agents.** By default spm writes the shared `.agents/skills` copy plus every agent it detects.
  To target a set: `--agents claude-code,windsurf`. `spm agents` lists keys and what is detected.
- **Ask before global installs, uninstalls, catalog removals, and `cleanup --apply`.** Read-only commands
  (`search`, `list`, `info`, `agents`, `doctor`, `catalog list`) need no confirmation.
- **Non-interactive.** In scripts and MCP, spm never prompts: inside a project it defaults to project
  scope (or pre-answer with `--answer:scope=0|1|2`), agents default to the detected ones, and `spm update`
  / `spm uninstall` with no name act on all / refuse. Pass flags instead of relying on prompts.
- **After installing**, tell the user which agents received it and where (spm prints each path). A newly
  installed skill is available to the agent on its next turn or session, depending on the agent.
- **Keep things current.** `spm update` refreshes what is installed; `spm doctor` explains anything odd;
  `spm cleanup` previews fixes and only changes things with `--apply`.

## Quick reference

| Task | Command |
|---|---|
| Find a skill | `spm search <text>` · `spm list` · `spm info <skill>` |
| Install | `spm install <skill>` · `spm install org/repo[/<skill>]` · flags `--project` `--global` `--all` `--agents a,b` `--copy` |
| Keep current | `spm update [<skill>] [--force]` · `spm resurrect` |
| Remove | `spm uninstall <skill> [--project\|--global\|--all]` |
| Catalogs | `spm catalog add <name> <url\|org/repo>` · `spm catalog import [source]` · `spm catalog sync` · `spm catalog list` · `spm catalog remove <name>` · `spm catalog root [path]` |
| Agents | `spm agents [--detected]` |
| Health | `spm doctor [--all] [--untracked]` · `spm cleanup [--apply] [--yes]` |
| Misc | `spm version` · `spm config prompts on\|off` · `spm --help` · `spm <command> --help` |

Everything else — exact flags, output, edge cases — is in [references/commands.md](references/commands.md).

Files in this skill

  • SKILL.md5.6 KB
  • references/commands.md8.8 KB
  • references/concepts.md5.7 KB
  • references/mcp.md2.9 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…