My agent skills. Every skill is committed here — under skills/ when it is
enabled and disabled/ when it is not — whether hand-written or fetched with
skills.sh.
Upstream sources include forks of sbp, osmani, pocock, and superpowers.
Wiring skills into a particular coding agent's configuration (symlinking
into ~/.claude/skills, ~/.agents/skills, and friends) is the job of
whatever consumes this repository. See
lsimons-dotfiles/agents
for an example.
skills/ # Skills whose `enabled` flag is true, one per directory
disabled/ # Skills whose `enabled` flag is false — vendored and
# hand-maintained skills alike land here when disabled
scripts/ # Python tooling that maintains skills/ and disabled/
tests/ # Tests for scripts/
docs/agents/ # Conventions an agent needs: issue tracker, labels
upstream-skills.toml # Which skills to fetch, and what to call them here
skill-rewrites.toml # Cross-reference fixes replayed after each fetch
placeholder-tokens.toml # Template tokens that are *not* placeholders
Skills declared in upstream-skills.toml are
fetched with the skills.sh CLI. Skills listed there under local are
maintained by hand and the fetcher leaves them alone; that list lives in the
manifest rather than here, so it cannot go stale in two places.
Every skill also carries an enabled flag defaulting to false: enabled
skills live at skills/<name>, everything else at disabled/<name>, and
mise run skills-update moves directories to match. Never mv one by hand.
auto is the router: it dispatches by intent to the phase skills — setup,
research, spike, spec, build, review, complete, flow, triage,
bump. complete is the finishing move once code changes exist: quality
gates, commit, push, and CI verification via gh, glab, or plain git
depending on the remote. leo-bot is an older cross-pack router over the
vendored packs, currently disabled.
mise run skills-install # fetch only what is missing
mise run skills-update # re-fetch everything, replay rewrites, prune strays
mise run skills-refs # list references to renamed skills' upstream namesskills-update accepts --dry-run when invoked directly:
uv run python -m scripts.update_skills --dry-run --updateBrowse and search the catalog with the CLI (skills find, skills list).
Skill names are one flat namespace, and packs collide — superpowers and
osmani-agent-skills both ship a test-driven-development. So each source
declares a prefix, and every skill it provides is vendored under it:
| Prefix | Source |
|---|---|
ao- |
Addy Osmani's collection |
mp- |
Matt Pocock's collection |
s- |
superpowers |
sbp- |
Schuberg Philis |
memex- |
memex CLI |
vercel- |
vercel-labs |
an- |
Anthropic |
A name that already carries its prefix keeps it, so sbp-threat-model and
memex-search are not double-prefixed.
This repo is compatible with OpenSpec:
running openspec init in a project installs its own project-local skills and
/opsx:* slash commands alongside whatever is wired in from here, with no
conflicts. Projects that use both should note the preference in their own
CLAUDE.md/AGENTS.md — e.g. prefer OpenSpec's /opsx:* workflow over
ao-spec-driven-development when an openspec/ directory is present — since
both are model-invocable on similar trigger language and this repo has no way
to know which projects consume it alongside OpenSpec.
mise run skills-update does the deterministic half — fetch, rename the
directory, rewrite the name: frontmatter field, replay
skill-rewrites.toml. It cannot do the other half:
skills refer to each other in prose, and many upstream names are also
ordinary words (research, implement, terraform, triage), so no
find-and-replace can tell "the research skill" from "do some research".
So the flow is not a script but a prompt: edit upstream-skills.toml, then
ask a coding agent to do the download and the intelligent rename. The
procedure it follows is in AGENTS.md; the judgement it reaches
is recorded in skill-rewrites.toml and replayed deterministically on every
later fetch, so routine updates stay a single command.
mise install # one-time: install the pinned toolchain
mise run install # install project deps
mise run test # pytest with coverage
mise run lint # ruff check + format --check + actionlint
mise run typecheck # basedpyright
mise run format # ruff format + --fix + regenerate placeholder lists
mise run placeholders # check skills' inlined placeholder token lists
mise run placeholders-fix # regenerate them from the templates
mise run ci # full CI gate: lint + placeholders + typecheck + test
mise run audit # zizmor audit of workflows + dependabot config
mise run ci-watch # watch GitHub Actions for the current branchaudit is separate from ci because it needs network access and a GitHub
token; CI runs the same audit on every push and pull request.
Vendored skills keep their upstream license, whether they are currently
enabled (skills/) or not (disabled/). Every [[source]] in
upstream-skills.toml records its license and copyright; this table mirrors
them.
Apache License 2.0 — see APACHE-LICENSE:
| Skills | Upstream | Copyright |
|---|---|---|
vercel-agent-browser |
vercel-labs/agent-browser | Copyright 2025 Vercel Inc. |
an-frontend-design |
anthropics/skills | Copyright Anthropic PBC |
sbp-* |
lsimons/sbp-skills | Copyright Schuberg Philis |
MIT — everything else:
| Skills | Upstream | Copyright |
|---|---|---|
ao-* |
lsimons/osmani-agent-skills | Copyright (c) 2025 Addy Osmani |
mp-* |
lsimons/pocock-skills | Copyright (c) 2026 Matt Pocock |
s-* |
lsimons/superpowers | Copyright (c) 2025 Jesse Vincent |
memex-* |
nicosuave/memex | Copyright (c) 2026 Nico Ritschel |
vercel-find-skills, vercel-web-design-guidelines |
vercel-labs | Copyright (c) 2026 Vercel, Inc. |
claude-history |
hand-maintained here | Copyright (c) 2024 Raine |
python-knowledge-patch |
hand-maintained here | Copyright (c) 2026 Nevaberry |
every other skill declared under local in upstream-skills.toml |
hand-maintained here | Copyright (c) 2026 Leo Simons |
Upstream copyright holders are collected in LICENSE.
sbp-brandbook from lsimons/sbp-skills
is deliberately absent from upstream-skills.toml. It is proprietary Schuberg
Philis content under its own license, which forbids redistribution outside that
repository, and it bundles commercially licensed TypeType fonts. Point an agent
at a local sbp-skills checkout if you need it.
lab271-design from the private
Lab271/labs-branding repository is
in the same position: proprietary Schuberg Philis brand content bundling the
same licensed fonts. It is consumed as a gitignored symlink at
skills/lab271-design pointing into a local labs-branding checkout.
See CONTRIBUTING.md. Issues are GitHub issues — the labels and triage flow are in docs/agents/issue-tracker.md.
This is a personal project; do not depend on it. Vulnerability reports go through GitHub's private vulnerability reporting — see SECURITY.md.