Recommend, measure token cost, and safely curate meta-skill frameworks for AI coding agents — Superpowers, Agent Skills, Matt Pocock's skills, and pstack — with one CLI.
pick runs a short quiz and prints a primary router (or an honest none), plus a conflict-checked cherry-pick list with token costs. map inventories packs, reports conflicts, and shows context tax. curate builds a minimal phase-grouped skill set and saves named profiles you can switch per project.
Published on npm: @onur45500/skillpack
All four frameworks are trending at once. Install two as active routers and you get colliding slash commands, contradictory session-start hooks, and skills fighting over the same intent. Community feedback is consistent:
- Full packs can burn context before you type anything
- Spec/grill loops can create "process hell" on small tasks
- People mix packs by workflow phase (Matt for specs, Superpowers for debug)
- Many prefer no router at all — just a curated handful of skills
skillpack fills that gap: recommend one primary (or none), show token cost, and install a minimal set.
Frontier models are strong — but every installed skill still injects name + description into the session catalog. skillpack map tokens answers "how much am I paying before I type?" with a chars÷4 estimate (no tokenizer dependency). Process-intensity tags (light / interactive / heavy-process) flag grilling/spec loops that burn more than tokens.
npx @onur45500/skillpack pick
npx @onur45500/skillpack map tokens
npx @onur45500/skillpack map diffOr install globally:
npm i -g @onur45500/skillpack
skillpack pick
skillpack map tokens
skillpack curate# Opinionated recommendation (bundled snapshot — no network required)
npx @onur45500/skillpack pick
# Non-interactive (CI / demos)
npx @onur45500/skillpack pick --yes --answers examples/barrel-through-solo.json
npx @onur45500/skillpack pick --yes --answers examples/none-small-scope.json
# Token / context-tax report
npx @onur45500/skillpack map tokens
npx @onur45500/skillpack map tokens --json
# Structural diff across packs
npx @onur45500/skillpack map diff
npx @onur45500/skillpack map html -o skillpack-map.html
# Refresh live data from GitHub (tarball download, no git binary)
npx @onur45500/skillpack map fetch --refresh
# Fetch any skills repo (forks, niche packs)
npx @onur45500/skillpack map fetch --repo owner/repo
npx @onur45500/skillpack map fetch --repo cursor/plugins/pstack
# Curate a minimal set by workflow phase; save/apply profiles
npx @onur45500/skillpack curate --save-as backend-api
npx @onur45500/skillpack curate --apply backend-api
npx @onur45500/skillpack curate --listskillpack map html writes a single offline HTML file with unique / overlapping / conflicting skills, plus per-pack context tax:
| Command | Description |
|---|---|
skillpack pick |
Interactive quiz → primary router or none + cherry-picks + install snippets |
skillpack pick --yes --answers <file> |
Non-interactive answers JSON |
skillpack pick --json |
Emit recommendation as JSON |
skillpack map fetch [--refresh] |
Download & parse official packs into ~/.cache/skillpack/ |
skillpack map fetch --repo <owner/repo[/path]> |
Parse any SKILL.md repo as a custom pack |
skillpack map diff [--json] [--fail-on-collision] |
Unique / overlapping / conflicts report |
skillpack map tokens [--json] |
Context tax + heaviest skills |
skillpack map html [-o path] |
Self-contained HTML report |
skillpack curate |
Phase-grouped picker → install + optional named profile |
skillpack curate --apply <name|file> |
Re-install a profile (removes previous skillpack-managed skills) |
skillpack curate --list |
List saved profiles |
map does not treat plugin-namespaced commands (e.g. /superpowers:tdd) as collisions with /tdd. Red findings are:
- Router conflict — two packs both injecting session/process ownership
- Flat-install name collision — same skill name when copied into
~/.claude/skills/ - Auto-invocation trigger overlap — similar auto-invoked skills fighting for the same intent
- Un-namespaced slash-command collision — exact
/commandmatches across packs
- A bundled snapshot (
data/inventory.json) ships with the package sopick/map tokenswork immediately offline. skillpack map fetch --refreshdownloads current GitHub tarballs, parses each pack's real layout (includingsubPathfor monorepos like pstack), and updates the local cache.- Every output line that depends on snapshot data includes a timestamp and source (
bundled/cache/live). - Scoring weights live in
src/pick/scoring-rules.ts; pack URLs and install snippets live insrc/config/packs.ts. PRs welcome as the frameworks evolve.
git clone https://github.com/Onur45500/skillpack.git
cd skillpack
npm install
npm test
npm run build
npm run regenerate-snapshot # network requiredSee CONTRIBUTING.md for how to add quiz questions, update pack config, and regenerate the bundled snapshot.
When you configure the repo on GitHub, add: cli, claude-code, agent-skills, cursor, typescript, superpowers, pstack.
MIT © Onur45500
