skills
AGENTS.md2 starsChanged 44 days agoMITView on GitHub
Personal skill catalog: one directory per reusable, task-oriented skill. See README.md for the full overview. Skills in this repo follow the open Agent Skills format — see agentskills.io for the authoritative specification of SKILL.md, its frontmatter fields, and the progressive disclosure model. The conventions below are this repo's house rules on top of that format; when the two disagree, the spec wins. - skills/<name>/ is the main workspace surface; changes to skills belong there. - Every skill directory must contain…
- Installs packages
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,542 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
In this repository43 other files it gives its agents.
- affinitySkill
- apple-photosSkill
- apple-shortcutsSkill
- blenderSkill
- brl-cadSkill
- cavalrySkill
- code-analyzerSkill
- compressorSkill
- davinci-resolveSkill
- documentation-generatorSkill
- drawioSkill
- duvSkill
- emu-brandingSkill
- error-debuggingSkill
- final-cut-proSkill
- freecadSkill
- gimpSkill
- github-audit-to-issuesSkill
- github-commit-prSkill
- github-do-all-issuesSkill
- github-do-issueSkill
- github-fix-ci-errorSkill
- github-issuesSkill
- godotSkill
- handbrakeSkill
- inkscapeSkill
- keynoteSkill
- kicadSkill
- kritaSkill
- libreofficeSkill
- markitdownSkill
- musescoreSkill
- nukeSkill
- numbersSkill
- obsSkill
- pagesSkill
- pixelmator-proSkill
- qcadSkill
- rebelleSkill
- refactoringSkill
- scribusSkill
- sonic-piSkill
- test-generatorSkill
The file
We split this AGENTS.md into the rules it gives an agent
11 rules. About 0 are common, 2 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Every skill directory must contain exactly one SKILL.md with YAML frontmatter name:, description:, summary: and category:.
- Very specific: line 24
Prefer updating existing skills and documentation over adding new repository conventions.
- Very specific: line 93
Every skill dir must contain exactly one SKILL.md
- Very specific: line 97
No other top-level frontmatter keys — the validator rejects unknown fields so that tooling-generated blocks (e.g.
- Distinctive: line 139
Use an existing skill (e.g.
- Very specific: line 167
Keep SKILL.md short and load detail on demand.
- Distinctive: line 178
Always run before committing:
- Very specific: line 218
Use Anthropic's skill-creator skill to author the skill body — it walks through scaffolding, description writing, and evaluation: …
- Very specific: line 224
Create skills/<kebab-name>/SKILL.md with valid frontmatter, including summary and category
- Very specific: line 225
Run .github/scripts/generate-catalog.sh to render the Available Skills entry into README.md and this file
- Very specific: line 227
Run bash .github/scripts/validate.sh, plus bash .github/scripts/lint.sh if the skill ships anything under scripts/
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
skills
Personal skill catalog: one directory per reusable, task-oriented skill. See README.md for the full overview.
Reference
Skills in this repo follow the open Agent Skills format — see
agentskills.io for the authoritative
specification of SKILL.md, its frontmatter
fields, and the progressive disclosure model. The conventions below are this repo's
house rules on top of that format; when the two disagree, the spec wins.
AI agent guidance
skills/<name>/is the main workspace surface; changes to skills belong there.- Every skill directory must contain exactly one
SKILL.mdwith YAML frontmattername:,description:,summary:andcategory:. - The
name:value must match the directory name. Thedescription:value must explain what the skill does and when to use it. - Validate every change with
bash .github/scripts/validate.sh, and any change underscripts/withbash .github/scripts/lint.shas well. - The Available Skills sections of
README.mdandAGENTS.mdare generated — never hand-edit them. Changesummary:/category:in the skill instead and run.github/scripts/generate-catalog.sh. - Prefer updating existing skills and documentation over adding new repository conventions.
Layout
| Path | Purpose |
skills/<name>/SKILL.md | Skill entry point — one directory per skill |
skills/<name>/references/ | Optional reference docs the skill loads on demand |
skills/<name>/scripts/ | Optional helper scripts shipped with the skill |
skills/<name>/assets/ | Optional templates, fonts, images used by the skill |
.github/scripts/validate.sh | Local validation (run before committing) |
.github/scripts/lint.sh | Static checks for the shipped scripts/ (run before committing) |
.github/scripts/generate-catalog.sh | Renders the Available Skills sections from frontmatter |
.github/scripts/catalog-lib.sh | Helpers shared by the scripts above |
Available Skills
<!-- Generated from the `summary:` and `category:` frontmatter of each skill.
Edit skills/<name>/SKILL.md, then run .github/scripts/generate-catalog.sh --><!-- BEGIN GENERATED SKILLS -->affinity: remote-control Affinity (the unified Affinity by Canva app) with JavaScript via its local automation endpoint — document edits, batch operations, and reusable library scripts, with no MCP client configurationapple-photos: query, export and organise the Apple Photos library with osxphotos and AppleScript — searches by date, place, people and keywords, yearly statistics, original or edited exports with XMP sidecars, albums from a query, and file importapple-shortcuts: list, inspect and run Apple Shortcuts from the CLI — file and text input and output, folder batches, timeout-guarded agent steps, decoding exported .shortcut files, and generating signed shortcuts for one-click importblender: remote-control a running Blender by Python via a local bridge — bmesh/modifier modeling, shader and geometry nodes, animation, rigging, physics, Grease Pencil and the VSE, EEVEE/Cycles stills and video, glTF/FBX/USD/OBJ/STL exportbrl-cad: model CSG solids headless with BRL-CAD — mged command scripts for primitives, boolean regions and materials, rt raytraced views, gqa overlap, volume and mass checks, STL/OBJ/STEP exportcavalry: remote-control Cavalry (Scene Group's 2D motion-design app) via a scriptable bridge — build scenes procedurally, animate with keyframes and per-letter text effects, then render PNG frames or alpha overlay videoscode-analyzer: holistic read-only project audit for bugs, security vulnerabilities, code quality issues, performance risks, missing tests, documentation gaps, and prioritized improvement ideascompressor: batch-transcode with Apple Compressor via its CLI — ProRes, H.264, HEVC and image-sequence deliverables from files or folders, built-in and custom settings lookup, derived custom settings, monitored, stoppable and resumable batches, ffprobe-verified outputsdavinci-resolve: remote-control a running DaVinci Resolve by Python via its scripting API — media import and bins, timeline assembly, markers, titles and lower thirds, subtitles, LUT/CDL grades, render queue deliverables, EDL/FCPXML/OTIO exportdocumentation-generator: generate and refresh documentation from code — doc comments and API reference via Dokka, dartdoc, DocC, rustdoc and Doxygen, OpenAPI-driven REST docs, README scaffolding, conventional-commit changelogs, and architecture diagramsdrawio: remote-control the draw.io desktop app with JavaScript over its DevTools port — live shape building, ELK auto-layout, pages, save — or author .drawio XML directly and export PNG/SVG/PDF or convert Mermaid/CSV with the headless CLIduv: search and retrieve data from the DUV Ultramarathon Statistics website (statistik.d-u-v.org) via its JSON API — runner profiles, event results, rankings, calendars, and national/continental records by distance, gender and age groupemu-branding: brand guidelines and visual identity for EMU (Egyesület a Magyar Ultrafutásért), including logo, color palette, and typographyerror-debugging: analyze a stack trace, crash report, panic or error log down to its root cause, then propose a fix and a way to verify it — Kotlin/Android, KMP/Compose, Flutter/Dart, Swift, Rust and C++, including deobfuscation and symbolication of release tracesfinal-cut-pro: build and inspect Final Cut Pro timelines through FCPXML — rough cuts with gaps, connected clips, transitions, titles, markers and keywords, exact rational-time math, DTD validation, import with AppleScript read-back, FCPXML parsing and Resolve interchangefreecad: remote-control a running FreeCAD (parametric CAD) by Python via a local bridge — primitives and booleans, constrained Sketcher profiles, PartDesign features, metrics and viewport screenshots, STEP/IGES/STL/OBJ exportgimp: remote-control a running GIMP by Python through its built-in Script-Fu server — layer stacks, selections and masks, brush and gradient drawing, text layers, non-destructive GEGL filters, and PNG/JPEG/.xcf export or batch conversion in the live sessiongithub-audit-to-issues: audit a project and file the findings as GitHub issues in one run — scoped severities, duplicate checks, one review table, security findings kept out of public issuesgithub-commit-pr: end-to-end workflow for committing changes, pushing a branch, and opening or updating a GitHub pull requestgithub-do-all-issues: work through every open GitHub issue unattended — confirm the queue once, then implement, verify and open one PR per issue, skipping blocked ones with a reasongithub-do-issue: fetch GitHub issues — the named ones, or every open one when none is named — and implement them one at a time, each reviewed, committed and shipped as its own PRgithub-fix-ci-error: diagnose the latest failing GitHub Actions run on the current branch, apply a targeted fix locally, and — after user approval — commit and push; refuses to run on main/master/develop or the default branchgithub-issues: standardized issue creation (including batch filing from audit reports), labeling, triage, commenting, and issue management through the GitHub CLIgodot: build, run, test and export Godot 4 projects headless from the CLI — author scenes, GDScript and project settings as text, catch script errors from the log, test gameplay and UI signals with headless test scripts, capture Movie Maker frames, export Web and macOS buildshandbrake: transcode and compress video with HandBrakeCLI — file and folder batches, DVD/Blu-ray title selection, built-in and GUI-exported presets, H.265/AV1 quality targets, audio and subtitle track picking with burn-in, ffprobe-verified outputsinkscape: drive Inkscape headless from the CLI — author SVG illustrations directly, run actions such as text to path, boolean path ops, simplify and bitmap trace, then export PNG at any DPI or @2x, PDF, EPS and plain SVG, one file or whole folderskeynote: automate Apple Keynote via AppleScript/JXA — build decks from an outline with themes, layouts and presenter notes, edit .key text without losing formatting, skip or reorder slides, and PDF/PPTX/image export or batch conversionkicad: automate KiCad 10 — DRC/ERC with JSON violation summaries, JLCPCB-ready fabrication zips (Gerbers, drill, CPL, BOM, STEP), board renders, and scripted footprint placement in a running PCB editor via the IPC APIkrita: remote-control a running Krita by Python through a local bridge — layer stacks, brush-engine strokes and QPainter pixels, SVG vector text, filters, masks, animation frames, and PNG/JPEG/.kra export or batch conversion in the running sessionlibreoffice: automate documents with headless LibreOffice and UNO — ODF/OOXML/PDF and PDF/A batch conversion, Calc recalculation with real values, Writer template fill and mail merge, Impress/Draw page exportmarkitdown: convert PDF, Office, HTML, data, notebook, e-book, audio, and ZIP files (or YouTube URLs) to clean Markdown using Microsoft's markitdown tool, via CLI, batch script or Python APImusescore: write, engrave and convert sheet music headless with MuseScore Studio 4 — MusicXML lead sheets and arrangements from a compact spec, PDF/PNG/SVG/MP3/MIDI export, folder batch conversion, transposition and part extraction, score-meta verified outputnuke: build and render Nuke comps headless with Nuke Non-commercial — .nk scripts authored as text, plate-swap templates, slates and burn-ins, Roto via Python hooks, EXR/DPX/PNG or ProRes renders with frame-count checksnumbers: automate Apple Numbers via AppleScript/JXA — build spreadsheets from CSV with formulas and formats, read recalculated values back, and XLSX/CSV/PDF export or batch conversionobs: remote-control a running OBS Studio by Python over obs-websocket v5 — scenes, sources and filters, scene-item transforms, recording, streaming, replay buffer and virtual camera, screenshot verification, and scene collections built from a JSON specpages: automate Apple Pages via AppleScript/JXA — fill templates and {{placeholders}} without losing formatting, swap images, CSV mail merge, and PDF/DOCX/EPUB export or batch conversion of .pages filespixelmator-pro: remote-control Pixelmator Pro via AppleScript — layered compositions with image, text and shape layers, adjustments and effects, ML Super Resolution, Remove Background and Enhance, .pxd template fill, and single-file or folder-batch export to PNG, JPEG, HEIC, WebP and PSDqcad: draft 2D CAD drawings headless with QCAD — ECMAScript scripts for layers, entities, blocks, dimensions and hatches, title blocks on existing DXF, batch DXF/DWG to PDF/PNG, ezdxf-verified outputrebelle: remote-control Rebelle and Rebelle Motion IO with JSON events — live WebSocket painting in Rebelle Pro, batch-rendered painted animation frames, and visual verification through canvas exportsrefactoring: behavior-preserving refactoring — duplication extraction, complexity reduction, dead-code removal, naming and idiom cleanups, driven by each stack's own linter and verified step by step against the testsscribus: lay out print documents headless with Scribus — multi-page layouts with master pages, styles, threaded text and images, CSV-driven badges and catalogues, PDF/X-4 export with bleed and markssonic-pi: live-code music in Sonic Pi 5 via a headless OSC session — run and live re-evaluate live_loops, record exact-length WAV takes, stop jobs, surface runtime and syntax errors with line numberstest-generator: write unit, integration and UI tests for existing code to at least 80% coverage — framework detection from the build files, case selection for boundaries and error paths, correct source-set placement, and measured coverage gap analysis across Kotlin/KMP, Compose, Flutter/Dart, Swift, Rust and C++
<!-- END GENERATED SKILLS -->Conventions
Skill directories (skills/)
- Directory name: kebab-case (e.g.
github-commit-pr) - Every skill dir must contain exactly one
SKILL.md - The frontmatter
name:must equal the directory name - Required YAML frontmatter fields:
name,description,summary,category - Optional fields:
risk,tags,allowed-tools,argument-hint,license - No other top-level frontmatter keys — the validator rejects unknown fields so that
tooling-generated blocks (e.g. the
metadata:block written bygh skill install) don't drift into the catalog
Frontmatter fields
| Field | Required | Value |
name | yes | kebab-case, equal to the directory name — max 64 characters |
description | yes | what the skill does and when to use it (see below) — max 1024 characters |
summary | yes | single line, lowercase start, no trailing period — the catalog entry (see below) |
category | yes | single token grouping the skill (e.g. testing, git, 3d), mapped to a README theme (see below) |
risk | no | one of low, medium, high — see the scale below |
tags | no | YAML list of lowercase keywords |
allowed-tools | no | comma-separated tool names the skill needs |
argument-hint | no | usage string shown for /-invocation |
license | no | SPDX identifier, if the skill ships under its own terms |
Risk scale
risk describes the blast radius of the skill running as intended — not how likely it
is to go wrong:
| Value | Meaning |
low | Reads, analyzes, or makes changes that are cheap to review and undo — local file edits, generated docs, issue comments. |
medium | Drives an external application or mutates shared state: pushes commits, opens or merges pull requests, edits documents in a running app. |
high | Destructive or irreversible: deletes data, force-pushes, publishes, or spends money. |
There is no separate safe level — read-only skills are low.
Writing a description
The description is the only thing an agent sees when deciding whether to load the
skill, so it carries the whole triggering burden:
- state what the skill does and when to use it
- list concrete trigger phrases — the agent matches a description against its understanding of the task, not against the user's literal wording, so a handful of representative phrasings beats an exhaustive list of variants in the one field that is always in context
- say explicitly when not to use it if a neighbouring skill overlaps
Use an existing skill (e.g. code-analyzer) as a template.
The generated catalog (summary and category)
description is written for an agent deciding whether to load the skill; summary is
written for a human scanning the catalog. The Available Skills sections of
README.md and this file are rendered from summary and category, so each
skill is described in exactly one place and CI catches any drift:
.github/scripts/generate-catalog.sh # rewrite both sections
.github/scripts/generate-catalog.sh --check # fail on drift, write nothingsummaryis one line, lowercase start, no trailing period — it is spliced into- `name`: <summary>. Keep it single-line: the generator reads it as plain text, not as folded YAML. Quote it, and avoid quote characters inside.categoryis the fine-grained grouping. README rolls categories up into themes viaCATALOG_SECTIONSin the generator; a category no theme covers is a hard error, so a new grouping means adding it there deliberately rather than a skill quietly vanishing from README.
Everything between the <!-- BEGIN GENERATED SKILLS --> and
<!-- END GENERATED SKILLS --> markers is overwritten — edit the frontmatter, not the
docs.
Progressive disclosure
Keep SKILL.md short and load detail on demand. Anything long — API references, format
specs, lookup tables — belongs in references/ and should be pulled in only when the
task needs it. Ship deterministic work as scripts/ rather than prose instructions.
The validator warns — it does not fail — when a SKILL.md runs past 250 lines and
the skill has no references/ directory, since that combination means detail that
could load on demand is loaded on every invocation instead. Splitting the detail out
clears the warning; so does deciding the skill genuinely has nothing to split.
Validation
Always run before committing:
bash .github/scripts/validate.shChecks: frontmatter completeness, the allowed frontmatter field set and risk
vocabulary, name: and description: length caps, name:↔directory match, skill
directory structure, kebab-case names, README/AGENTS catalog sync (by regenerating both
sections and failing on any difference), and broken relative Markdown links (links
inside fenced code blocks are examples, not targets, and are skipped). It also
warns — without failing — on a SKILL.md over the progressive-disclosure line budget.
Linting the shipped scripts
Whenever a scripts/ file changes, also run:
bash .github/scripts/lint.shChecks every .sh, .py, .js and .mjs under .github/scripts/ and the
scripts/ of each published skill: shellcheck for shell, python3 -m py_compile
for Python, node --check for JavaScript. These are static checks only — the app
bridges need a live Blender, FreeCAD, Cavalry, GIMP, Krita, Rebelle or Affinity on
the other end, so CI cannot execute them, which makes a syntax error the failure
mode most likely to reach a consumer.
python3 and node you already have; shellcheck is the one extra tool:
brew install shellcheckThe same script runs as the lint job in
.github/workflows/validate.yml, where all three
tools are preinstalled on the runner.
Adding a new skill
Use Anthropic's skill-creator skill to author the skill body — it walks through
scaffolding, description writing, and evaluation:
https://github.com/anthropics/skills/blob/main/skills/skill-creator/SKILL.md
(available as the skill-creator skill in Claude Code). Then apply this repo's
conventions on top:
- Create
skills/<kebab-name>/SKILL.mdwith valid frontmatter, includingsummaryandcategory - Run
.github/scripts/generate-catalog.shto render the Available Skills entry into README.md and this file - Run
bash .github/scripts/validate.sh, plusbash .github/scripts/lint.shif the skill ships anything underscripts/
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

