Skip to content

lsimons-skills

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.

Layout

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

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 names

skills-update accepts --dry-run when invoked directly:

uv run python -m scripts.update_skills --dry-run --update

Browse and search the catalog with the CLI (skills find, skills list).

Prefixes

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.

Compatibility with OpenSpec

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.

Adding or re-prefixing a source

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.

Development Commands

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 branch

audit is separate from ci because it needs network access and a GitHub token; CI runs the same audit on every push and pull request.

Licensing

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.

Not vendored

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.

Contributing

See CONTRIBUTING.md. Issues are GitHub issues — the labels and triage flow are in docs/agents/issue-tracker.md.

Security

This is a personal project; do not depend on it. Vulnerability reports go through GitHub's private vulnerability reporting — see SECURITY.md.

About

My agent skills, vendored and namespaced

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages