Twenty-seven Agent Skills and nine subagents I build and maintain,
kept public so they can be versioned and shared. A skill is a directory with a SKILL.md;
some bundle scripts, evals or reference files. Subagents live under agents/.
The name says Claude because that is where they started and where the subagents run. The skills themselves are the open Agent Skills format and load unchanged in Claude Code, Codex and OpenCode — this repo ships a plugin manifest for the first two.
All MIT (see LICENSE). Skills wrapping an external tool carry a Provenance
note crediting the upstream project and its licence — MIT covers the skill content, not the
wrapped tools. CHANGELOG.md records each addition: what it does, when to
reach for it, and what it deliberately won't do.
Three ways in. Pick by whether you want all of them or one, and a snapshot or a live link.
| you get | updates | |
|---|---|---|
| Claude Code plugin | all 27 skills + 9 subagents | /plugin marketplace update, deliberate |
| Codex plugin | all 27 skills | codex plugin marketplace update, deliberate |
| Symlink | whichever you pick | instant — it is a live link to this repo |
/plugin marketplace add kevin-burns/claude-skills
/plugin install claude-skills@kevin-burnsSkills arrive namespaced claude-skills:<name>.
codex plugin marketplace add https://github.com/kevin-burns/claude-skills
codex plugin add claude-skills@kevin-burnsSame namespacing. Subagents are the part that doesn't port: agents/*.md uses Claude Code's
frontmatter (tools, model), which Codex doesn't read. The skills travel, the fleet doesn't.
ln -s "$(pwd)/clear-and-human" ~/.claude/skills/clear-and-human # Claude Code, OpenCode
ln -s "$(pwd)/clear-and-human" ~/.agents/skills/clear-and-human # Codex, OpenCode
ln -s "$(pwd)/agents/fact-verifier.md" ~/.claude/agents/fact-verifier.mdSymlinking keeps this repo the single source of truth — edits here are picked up immediately. Take this path if you're editing the skills as well as using them, or if you want two of them rather than twenty-seven.
OpenCode needs no separate step: it already scans
~/.claude/skills/ and ~/.agents/skills/, so a symlink made for either of the others is
picked up with no second install.
- It copies. A plugin install is a snapshot in the harness's cache, not a live link. Editing this repo afterwards changes nothing until you update.
- It costs context. Every skill's description loads in every session so the model can
decide when to reach for one — about 7.2k tokens always-on for the full set, before any
skill fires.
claude plugin details claude-skillsprints the per-skill breakdown. If you want two or three of these, symlink those instead.
Three of these skills also live in a repo of their own, published from here on every merge. The reason is audience: someone looking for a Ghost publishing tool or a Terragrunt reference is not going to find it inside one person's collection of twenty-odd skills, and the competing tools for both are standalone. Each mirror is a working plugin in its own right.
| skill | repo | who it is for |
|---|---|---|
| ghost-publish | kevin-burns/ghost-publish | Ghost users |
| terragrunt-skill | kevin-burns/terragrunt-skill | Terragrunt users |
| transcribe-summarize | kevin-burns/transcribe-summarize | anyone with recorded meetings who would rather not upload them |
claude plugin marketplace add kevin-burns/ghost-publish
claude plugin install ghost-publish@ghost-publishThe mirrors are generated. Edit the skill here; never edit a mirror directly, or the next merge overwrites it.
| Skill | What it does | Wraps |
|---|---|---|
| clear-and-human | Construct, review, score, and rewrite prose so it reads human, not AI — with two optional stdlib scripts that measure register and check a rewrite invented nothing | — |
| readability | Find where a reader falls off a draft — weak paragraph junctions, back-references with no antecedent nearby, terms used before they are explained — then dispatch a fresh-context second reader for the contradictions no script can see. Reports locations, never a grade level: the formulas were validated on schoolchildren and Navy trainees, and Redish (2000) reports their validity for adult technical readers is unknown | — |
| hook-and-human | Write, punch up, and review persuasive marketing copy without fabricating | — |
| cv-and-human | Tailor a CV — or a LinkedIn profile (job-seeker lens) — to pass automated HR/ATS screening and Recruiter search while staying truthful and human — keyword/JD matching, parseability, de-slop, optional red-team | — |
| cv-cover-letter | Draft a cover letter from a job posting and your own CV: every claim traces to something you actually said, arithmetic-derived claims are flagged rather than asserted, and it stops when the evidence stops instead of filling a word count. Triages the posting's stated hard requirements first, so it can tell you not to apply before you spend the hour. Works standalone; markedly better after cv-evidence-base, which holds the facts a CV compresses away |
— |
| cv-evidence-base | Interrogate a CV to recover the evidence that never made it onto the page, and grade which roles you are genuinely credible for — including the ones you are not. Runs before cv-and-human, when there is no target role yet |
— |
| frontier-rounds | Interview you in breadth-first rounds until a design is settled — the whole frontier per round with a recommended answer on every question, rather than one question at a time. Produces decisions, not deliverables | — |
| c7search | Fetch up-to-date library docs via the c7search CLI |
Context7 API |
| markdown-converter | Convert PDF/Office/HTML/media files to Markdown | markitdown (MS, MIT) |
| ghost-publish | Publish, update, schedule and verify Ghost posts from a markdown file — strips front matter Ghost would render as prose, and diffs what Ghost holds against the source in both directions | ghst (TryGhost, MIT) |
| nano-banana-pro-json | Generate/edit images (Gemini 3 Pro Image) with structured JSON control + photographic style presets, plus recipes for logos (with a free raster→SVG trace), product/e-commerce shots, and infographics — each with honest boundaries | Google Gemini image API |
| convert-to-webp | Convert images to WebP for web projects | libwebp cwebp / macOS sips |
| social-image-prep | Resize and format images for social platforms | sips / ImageMagick / Pillow |
| terragrunt-skill | Generate, validate, review, and debug Terragrunt 1.x configs (units, stacks, autoinclude, CAS, dependencies, AWS/Azure/GCP backends) — tracks current stable v1.1.0, incl. Azure backend gotchas and running only changed units at scale |
— |
| terraform-registry | Provider-agnostic CLI to search/inspect the Terraform Registry via its JSON API (no scraping) | Terraform Registry API |
| transcribe-summarize | Transcribe audio on-device (macOS/Windows/Linux), filter the segments Whisper invents over silence, and write it up as factual meeting notes + PDF; ffmpeg normalise/silence-trim beats model choice, and timestamps map back to the original recording. Groq/OpenAI/ElevenLabs are opt-in and disclosed before anything is sent | mlx-whisper / faster-whisper / ffmpeg |
| source-snapshot | Fetch external data once into pinned, provenance-stamped artifacts; resilient extractor fallback | markitdown / Defuddle / Readability |
| dev-fleet | Orchestration playbook driving the agent fleet through build → verify → review → commit | — |
| report-builder | Build self-contained single-page HTML reports/dashboards from data | Jinja2 / Bootstrap 5 / Chart.js / Plotly |
| ux-audit | Heuristic usability + accessibility audit of rendered web pages (Nielsen + WCAG 2.2) | — |
| job-feeds | Aggregate nine sanctioned public job feeds from eight publishers (JSON APIs + RSS) into one deduplicated SQLite store, match them against your career lanes, and render a filterable self-contained HTML report — no scraping, no auth, no LinkedIn | Arbeitnow / Jobicy / Remotive / Remote OK / Working Nomads / 4 Day Week / We Work Remotely / Python.org Jobs |
| azadvertizer | Offline lookups over Azure Policy / Initiative / RBAC-Role metadata + cross-references | AzAdvertizer CSV exports |
| use-linearis | Drive Linear.app from the CLI — issues, milestones, blocked-by relations, release filtering — plus the Linear↔Ogham dogfooding loop | linearis CLI |
| excalidraw-diagram | Generate Excalidraw diagrams that argue visually, with a render→view→fix loop (engine fetched once from a pinned, sha256-verified release, then offline) and optional cloud-icon (AWS/Azure/GCP) ingestion | Excalidraw (MIT; engine fetched at first render, fonts vendored); design forked from coleam00; icon approach from awesome-copilot (MIT) |
| trilium-capture | File findings, clipped material and long-form documents into a self-hosted Trilium Notes instance — per project, one closed label vocabulary, documents revised in place so Trilium's own revision history replaces keeping .bak copies. Searches before writing; decides what does not belong there; never retrieves, and never touches a note it didn't write |
Trilium Notes — its built-in MCP server |
| travel-planning | Turn a trip into a paced day-by-day itinerary + a reconciled budget (Markdown); grounds cost estimates in typical/seasonal prices (labeled, sourced) — no booking, no live fares | — |
| business-plan | Build a realistic business plan (full plan + one-pager + investor summary) where every number is researched-and-cited, user-supplied, or computed from your assumptions — never invented; ends with an honest go/no-go/reshape verdict | — |
Every skill directory has its own README.md — a plain-English guide to what it does, how to use it well, and, just as importantly, what it does not do. Read that first; a skill's boundaries matter as much as its capabilities, and knowing what a skill deliberately refuses (invent a price, book a trip, predict a fare) is what keeps its output trustworthy.
A skill triggers automatically when your request matches its description — in Claude Code, claude.ai, Codex and OpenCode alike. You don't call it by name, you describe the task. Take the whole set or one directory (see Install). This "what it does / what it doesn't do" README is the standard shape for every skill here — new skills ship one too (see CONTRIBUTING.md).
Subagents for software-development work, coordinated by the dev-fleet skill. Each is a *.md with frontmatter (name, description, tools, model) and a system-prompt body. Architecture and rationale: docs/agent-fleet-architecture.md.
| Agent | Role | Model |
|---|---|---|
| azure-architect | Enterprise-scale Azure / Cloud Adoption Framework design — governance, subscriptions, networking, IaC review | opus |
| fact-verifier | Verify claims/code against authoritative sources — cite, refute, or return the lookup; never assert from memory | sonnet |
| code-builder | Implement scoped changes TDD-style in an isolated worktree; commit on a branch, never push/merge/apply | sonnet |
| coherence-checker | Structural fit of the implementation vs the plan/spec/verified facts — spec/plan traceability, inverse-pair round-trip (no normalization tricks), cross-impl parity, contract-docstring fidelity; read-only, gated on change complexity | sonnet |
| code-reviewer | Advisory review for correctness, edge cases, contracts, security, tests — findings ranked by confidence (uncertain ones surfaced, not suppressed), not a gate | sonnet |
| docs-reviewer | Review docs (READMEs, ADRs, runbooks) for completeness, clarity, correctness, and audience fit | sonnet |
| ux-auditor | Audit a rendered web page for usability/accessibility; renders via agent-browser/playwright-cli, fans out one per page (reads ux-audit) |
sonnet |
| commit-pr | Write commit and PR/MR messages (reads commit-style) |
haiku |
| commit-style | Commit/PR style playbook used by commit-pr |
— |
Several agents ship a deterministic behavioral eval under agents/<name>/evals/ (run with uv run python grade.py).
fact-verifier and cv-and-human's red-team Truth lens share one portable verifier contract — never-assert-from-memory, cite/refute/return-the-lookup, read-only — with a per-domain source profile. Write a profile to get a verifier for a new domain without re-deriving the discipline.
-
c7search — the
c7searchbinary (go install github.com/kevin-burns/c7search@latest). ACONTEXT7_API_KEYis optional. -
clear-and-human — nothing for the writing itself; the skill is prose all the way down. Two optional scripts add measurement:
scripts/register_report.pyreports where a draft sits on the person and stiffness axes (each feature printed with the paper behind it, no score and no verdict), andscripts/fidelity_check.pydiffs a draft against its rewrite and flags any number, quote, URL or code span that appeared, vanished or changed — a number present only in the rewrite is the shape of a fabricated statistic — plus the ranking, scope, comparison and requirement words the rewrite dropped, which is how an edit deletes a claim while looking like it deleted only style. Both are standard library only:uv runorpython3. -
frontier-rounds — nothing. Prose all the way down. Two optional integrations, both degrading cleanly if absent: it reads the
nanofiles fromsoftware-design-ruleswhen a question turns on a design decision, and it can dispatch a sub-agent for read-only environment lookups. -
job-feeds — nothing. Standard library only, so
python3works as a runner alongsideuv. Verified running on Python 3.9 as recently as 2026-08-13, though CI now tests 3.12 and 3.13 only, so treat older interpreters as working-but-unwatched. No API keys, no accounts, no authentication — every source is a public feed. macOS, Linux, or WSL. -
markdown-converter —
uv(usesuvx markitdown, no install needed). -
nano-banana-pro-json —
uvand aGEMINI_API_KEYenvironment variable. No key is bundled. -
convert-to-webp —
cwebp(brew install webp) or macOSsips. No install needed on macOS. -
social-image-prep —
sips(macOS), ImageMagick, oruv(for the Pillow fallback). Uses whichever is present. -
terragrunt-skill — works as static review with no tooling; the bundled
scripts/validate.shusesterragrunt(1.x), plus optionaltflintandtrivyif present.scripts/detect_custom_resources.pyruns on Python 3. -
terraform-registry — Python 3 (stdlib only).
search/inspect-moduleneed only network access;inspect-resource/refresh-schemaadditionally need theterraformCLI. -
source-snapshot — Python 3 (stdlib only). Uses whichever extractor is present:
markitdown(viauv, the reliable fallback for docs/tables), and optionally Defuddle for prose articles (it strips page chrome). The producer auto-resolves the Defuddle runner — an installeddefuddlebinary, elsepnpm dlx/bunx/npx defuddle(thedefuddlepackage;defuddle-cliis deprecated/merged into it) — never pinning@latest, so caches are reused. Install once withpnpm add -g defuddleto avoid per-run fetches, or setSNAPSHOT_DEFUDDLE_CMDfor a custom path. Degrades gracefully when one is missing. -
cv-and-human — no tooling for the core CV workflow (review, tailoring, de-slop). The optional red-team's measured ATS lens uses
scripts/ats_adversarial_loop.py—uv/Python 3 (itsselftestruns without a model backend). The LinkedIn profile mode usesscripts/li_profile_check.pyand needsuv/Python 3. -
dev-fleet — no tooling; it's an orchestration playbook for the agents above.
-
report-builder —
uv(the bundledscripts/render.pydeclares its deps via PEP 723 inline metadata; run withuv run). Bootstrap/Chart.js/Plotly load from CDN, or vendor them for offline reports. -
ux-audit / ux-auditor — a browser driver to render pages: prefers
agent-browser, falls back toplaywright-cli; uses whichever is installed. Degrades to a static-HTML audit (clearly flagged) if neither is present. -
use-linearis — the
linearisCLI (npm i -g linearis, Node; shipslinearandlinearisbinaries) and a Linear API token vialinear auth login. The Ogham dogfooding loop additionally uses theoghamCLI (a local Go binary; hybrid search viaogham search). -
excalidraw-diagram —
uvplus a one-timeuv run playwright install chromium. Fonts are vendored underreferences/vendor/; the Excalidraw render engine is fetched once on first render from a pinned, sha256-verified GitHub Release (seereferences/vendor/bundle.lock.json), then cached and served locally — so the first render needs network, subsequent renders are offline. No Node needed at render time; Node + npm are needed only to re-vendor and republish a newer Excalidraw version viareferences/scripts/vendor.sh. Optional cloud/architecture icons (AWS/Azure/GCP/K8s) use user-supplied.excalidrawlibfiles ingested by stdlib scripts — no extra tooling; sets aren't bundled (own licenses). -
azadvertizer —
uv(stdlib-only script viauv run); network only for the one-timefetch. Caches to$XDG_CACHE_HOME/azadvertizer; all queries run offline. Data © Julian Hayward / AzAdvertizer — cache, don't hammer; not republished here. -
trilium-capture — a reachable Trilium instance (v0.93.0+) with its built-in MCP server at
/mcp, authenticated with an ETAPI token asAuthorization: Bearer <token>. Nothing to install: the server ships inside Trilium and shares its tool definitions with Trilium's own LLM chat — do not add a third-party Trilium MCP server. No scripts, no Python: the skill is conventions over tools Trilium already exposes. Optional: a short-memory store (e.g. Ogham) for the recall half of the split — without one, everything goes to Trilium. -
cv-cover-letter — none to install. You supply the posting (any source, not just LinkedIn), the CV you are sending, and optionally
evidence-base.mdfromcv-evidence-base. Usesclear-and-humanfor register where available, and web search to read a posting from a URL — otherwise paste the text. It never invents a metric and never diagnoses the employer; see its README. -
cv-evidence-base — nothing to install.
pyproject.tomldeclaresdependencies = []; the only dev dependency ispytest, for this repo's own tests. You supply the CV and the material it was compressed from. Pairs withcv-and-humanandcv-cover-letter, which read the evidence base it produces. -
hook-and-human — nothing to install. No scripts at all — the skill is prose. It leans on
clear-and-humanfor register where that skill is present, and degrades to its own judgement where it is not. -
readability — nothing to install beyond a Python you already have.
scripts/cohesion_report.pyis standard library only (argparse,json,re,sys,pathlib), souv runorpython3both work. The second half of the skill dispatches a fresh-context sub-agent to read the draft, which needs no package either. Runs afterclear-and-human, not before. -
ghost-publish — the
ghstCLI installed separately and already authenticating (npm i -g @tryghost/ghst, thenGHOST_URLandGHOST_STAFF_ACCESS_TOKENin the environment). The skill's own scripts are standard library only, Python 3.12+, and never call Ghost — they read files and compare them.ghstis beta and the behaviour here was verified against 0.16.6;scripts/preflight.pywarns on version drift and names what to re-verify, with--strictfor CI. -
travel-planning — none to plan (pure instructions). Uses web search, if available, to ground cost estimates in typical/seasonal prices; degrades to a labeled estimate if a lookup fails. Optional:
report-builderfor an HTML version. It never books or reads live fares — see its README. -
business-plan —
uvfor the stdlib financials helper (scripts/financials.py, no runtime deps, run viauv run). Uses web search, if available, to research and cite market/competitor facts; where research fails it falls back to labeled placeholders rather than inventing. Optional:report-builderfor an HTML version. It never invents a market size, competitor price, or revenue figure — see its README. -
transcribe-summarize —
ffmpegandffprobeon PATH (brew install ffmpeg,winget install Gyan.FFmpeg,sudo apt install ffmpeg). Everything else is standard library. Each backend brings its own dependency and only when you pick it, so installing the skill does not drag in every engine:'mlx-whisper>=0.4.2'(Apple Silicon, the default there),'faster-whisper>=1.2'(the default everywhere else),'parakeet-mlx'(opt-in). The network backends — Groq, OpenAI and ElevenLabs Scribe — need no package at all (stdlib HTTPS) and read their key fromGROQ_API_KEY/OPENAI_API_KEY/ELEVENLABS_API_KEY, never from a flag. They are never selected automatically and state the provider, size, duration and cost before sending. Optional: a Chrome, Chromium or Edge binary for the notes PDF — without one you get the HTML and a plain message, not a failure.
Authoring or editing a skill? See CONTRIBUTING.md — in particular the
absolute-path + uv convention for invoking a skill's bundled scripts, so they work from any
working directory rather than only this repo's root.
