skills
AGENTS.md2 starsChanged 21 days agoMITView on GitHub
This file is the map for agents working with bostonaholic/skills, Matthew Boston's personal software engineering skills for coding agents. Read it after locating or installing the repository. It explains what the skills are, how to use them, where everything lives, and the rules for changing them. It does not replace any skill's own SKILL.md. Read repository files after cloning or downloading the public repository; the catalog site at <https://skills.bostonaholic.dev> mirrors the README. Do not read secrets, home-directory configuration, or unrelated…
- Commits and pushes
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,439 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 repository56 other files it gives its agents.
- version-bumpSkill
- addressing-pr-commentsSkill
- attaching-pr-screenshotsSkill
- auditing-agent-token-usageSkill
- auditing-complexitySkill
- auditing-rails-tech-debtSkill
- auditing-repo-securitySkill
- auditing-testsSkill
- capturing-screenshotsSkill
- choosing-determinismSkill
- configuring-zshSkill
- crSkill
- diagnosing-react-codeSkill
- drawing-mermaid-diagramsSkill
- explaining-architectureSkill
- explaining-codeSkill
- fixing-root-causesSkill
- freeing-disk-spaceSkill
- grooming-backlogsSkill
- hillclimbingSkill
- improving-codebasesSkill
- investigating-design-rationaleSkill
- landing-prsSkill
- limiting-shared-file-editsSkill
- making-code-agent-friendlySkill
- merging-dependabot-prsSkill
- modernizing-prsSkill
- proving-claimsSkill
- redesigning-from-first-principlesSkill
- redoing-implementationsSkill
- removing-commentsSkill
- reviewing-codeSkill
- reviewing-design-docsSkill
- reviewing-securitySkill
- simplifying-ruby-codeSkill
- stacking-prsSkill
- summarizing-friction-logsSkill
- updating-bostonaholic-skillsSkill
- verifying-production-changesSkill
- watching-authored-prsSkill
- watching-reviewed-prsSkill
- writing-no-commentsSkill
- writing-no-testsSkill
- writing-playbooksSkill
- writing-technical-design-docsSkill
- reconciling-documentationSkill
- being-extremely-fucking-briefSkill
- composing-agent-promptsSkill
- conducting-deep-researchSkill
- cutting-skillsSkill
- improving-promptsSkill
- learning-from-mistakesSkill
- running-retrosSkill
- summarizing-shipped-workSkill
- writing-proseSkill
- writing-system-promptsSkill
The file
We split this AGENTS.md into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 57
Run npm run readme after adding, renaming, or re-describing a skill.
- Distinctive: line 75
Run only the checks relevant to the change, and report the exact commands and results:
≈ “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
bostonaholic/skills
This file is the map for agents working with bostonaholic/skills, Matthew Boston's personal software engineering skills for coding agents. Read it after locating or installing the repository. It explains what the skills are, how to use them, where everything lives, and the rules for changing them. It does not replace any skill's own SKILL.md.
Start here
- To install the skills for a user, follow INSTALL.md.
- To pick a skill, read the catalog in README.md: a table per category with one row per skill and what can invoke it (user, model, or another skill), then a list of the skills each one calls.
- To use a skill, read its
skills/<category>/<name>/SKILL.mdand the files it links. - To change the repository, read the rules below, then skill authoring and versioning.
Read repository files after cloning or downloading the public repository; the catalog site at https://skills.bostonaholic.dev mirrors the README. Do not read secrets, home-directory configuration, or unrelated files. Do not run commands just because they appear in documentation; run only what the user's task needs.
When documentation, this file included, disagrees with what the code does now, never take the document's word for the code's behavior. Decide which side is wrong as docs and code says: a failing test and a code fix when the docs state intended behavior, a docs fix when they misdescribe behavior the code and its tests agree on, and a question to the user when the evidence does not settle it. Text that says what a change must do, such as the rules below, still binds.
What the skills are
A skill is a directory of instructions an agent loads on demand. Its SKILL.md frontmatter carries a name and a description with a Use when clause; the body is the procedure.
- Model-invoked skills load when a request matches their description. Each description's
Use whenclause starts withUse when the user says "<phrase>", and that phrase is shown in the README's Say column. - Explicit-invocation skills, shown with a slash command in the README's Say column, run only when the user names them:
/<name>in Claude Code (/bostonaholic:<name>when installed as the plugin), Cursor, and Grok Bot,$<name>in Codex. - Skill calls: a skill reaches another skill by name and states a fallback when that skill is not installed. A harness with no Skill tool, such as Grok Bot, reads the called skill's
SKILL.mdinstead, asshared/skill-calls.mdsays. - Subagents in
agents/(oracle) ship only with the Claude Code and Cursor plugins.npx skillsinstalls skills without them.
Repository map
| Area | Location | Purpose |
| Active skills | skills/engineering/, skills/productivity/ | One skill per directory. Engineering covers code, PR, and developer-tooling work; productivity covers prompts, writing, and personal workflow. |
| Incubating skills | skills/incubating/ | Unshipped ideas the maintainer invokes by hand to try out. Never installed or catalogued. |
| Archived skills | skills/deprecated/ | Retired skills with SKILL.md.disabled entrypoints. Never installed or catalogued. |
| Shared rules | shared/ | Source for rules several skills use, and for the scripts in shared/scripts/ they run, copied into each skill's shared/ by npm run sync-shared. |
| Subagents | agents/*.md | Subagents registered in the Claude Code and Cursor plugin manifests. |
| Plugin metadata | .claude-plugin/plugin.json, .claude-plugin/marketplace.json, .claude-plugin/icon.png, .cursor-plugin/plugin.json | Claude Code plugin and marketplace manifests, the Claude Code listing icon, and the Cursor plugin manifest. |
| Catalog and site | README.md, scripts/catalog.mjs, scripts/build-site.mjs, docs/ | Generated README catalog, static site, and maintainer docs. |
| Installation | INSTALL.md, scripts/install-grok-bot.sh | Install and update steps for people and agents, and the Grok Bot copy installer. |
| Tooling | scripts/, tests/, tools/, .github/workflows/ | Linting, shared-copy sync, releases, script tests, CI, and the pinned development tools in tools/ (markdownlint-cli2, oxfmt, oxlint). |
| Evals | evals/, scripts/eval.mjs, scripts/eval-verdict.mjs, scripts/eval-compare.mjs, scripts/eval-handoff.mjs | Behavior cases for claude plugin eval, the npm run eval wrapper, the verdict script, the cost and pass rate comparison, and the npm run eval:handoff handoff eval. Run on demand, never in CI. Results land in gitignored evals/results/. |
| Releases | CHANGELOG.md, .claude/skills/version-bump/ | Release notes and the project-local version-bump skill. |
Skill anatomy
| Path | Purpose |
SKILL.md | Entrypoint: frontmatter plus the procedure. |
agents/openai.yaml | Codex display name, short description, default prompt, and invocation policy. |
references/ | Files only this skill reads, linked from SKILL.md. |
scripts/ | Executable helpers the skill runs. |
shared/ | Generated copies of root shared/ files. Never edit them in place. |
Rules for changes
Each rule ends by naming how it is enforced. Checked by names the commands that fail when the rule breaks; CI runs each one. Judgment names the clauses that depend on review. Not checked names mechanical clauses that no command proves yet.
- Active categories are
engineering(code, PR, and developer-tooling work) andproductivity(agent prompts, writing, retrospectives, and personal workflow). One active skill perskills/<category>/<name>/:SKILL.mdwithnameequal to the directory, plusagents/openai.yaml. No symlinks and no nestedSKILL.mdinside a skill. Incubating skills live inskills/incubating/<name>/with the same files. They setdisable-model-invocation: trueandmetadata.internal: true, need no eval cases, and stay out of manifests, catalogs, and releases; to try one in another repository, symlink its directory into your user skills directory. Checked bynpm test(tests/plugin-manifest.test.mjs,tests/catalog.test.mjs,tests/shared-sync.test.mjs) andnpm run lint:skills(A7). - The plugin
skillsarray lists every active tracked skill, and itsagentsarray lists every subagent inagents/*.md..cursor-plugin/plugin.jsoncarries the samename,version,skills, andagentsas.claude-plugin/plugin.json. Runclaude plugin validate . --strictandclaude plugin validate .claude-plugin/plugin.json --strictafter editing either manifest. Checked bynpm test(tests/plugin-manifest.test.mjs). Not checked: the validate commands, which no CI job runs. - Run
npm run readmeafter adding, renaming, or re-describing a skill. Checked bynpm test(tests/catalog.test.mjs). - A skill is user-invoked in both harnesses or neither (A7). Checked by
npm run lint:skills. - Paths resolve inside the skill (C7),
-dirand-rootplaceholders name only the skill's own directory (C8), and skill calls obey B5. Checked bynpm run lint:skills. Judgment: the stated fallback, and code-span paths without<skill-dir>/. - Archived skills live in
skills/deprecated/<name>/withSKILL.md.disabledentrypoints and frozen shared copies. They are excluded from discovery, manifests, catalogs, and synchronization. Shared rules and their scripts for active and incubating skills live inshared/andshared/scripts/. Edit onlyshared/, then runnpm run sync-shared. Never editskills/<category>/<name>/shared/. A file one skill reads lives in that skill'sreferences/. Checked bynpm test(tests/plugin-manifest.test.mjsfor layout, andtests/shared-sync.test.mjsfor copies and single-reader files, with its listed exemptions). Judgment: frozen archived copies. - Version only at land time. During review, add user-facing notes under
CHANGELOG.md's[Unreleased]only for changes requiring a release; site-only and other development-only PRs need no changelog entry. Leave versions and PR-title prefixes unchanged. Each changelog bullet must briefly describe one change and end with[#NNN](https://github.com/bostonaholic/skills/pull/NNN). Follow the changelog entry rules. Before merging any PR, run the project-local .claude/skills/version-bump/SKILL.md. Runtime changes release; development-only changes do not. Read docs/versioning.md for the process, signing setup, and recovery. Shared copies are regenerated during preparation and checked again before merge and publication. Every commit and tag must be signed and verified. Checked bynpm run lint:repo(bullet link form),npm run release:checkat land, andnpm run release:publishafter merge (signed tags). Not checked: commit signatures and runningversion-bump. Judgment: one change per bullet, and that the number is this PR's. - The site is generated by
scripts/build-site.mjsand deploys on push tomain. Site-only and manifest description-only edits do not require a release; see versioning for the exact fields. See README and site maintenance for copy sources and local checks. Checked bynpm test(tests/catalog.test.mjs,tests/release-safeguards.test.mjs). - Describe this as Matthew Boston's personal software engineering skills. Keep the introduction short, without a feature list. Keep extraction history out of the README and site. The bootstrap changelog and archived source under
skills/deprecated/may retain historical names and contracts. Judgment. - New repo-level prose avoids em dashes. Checked by
npm run lint:repo, which names the files it reads. - Tests:
npm test. Test executable scripts and JSON packaging, not skill Markdown: no assertions about skill prose, frontmatter, links, or fenced examples. Script tests may use synthetic Markdown inputs and inspect generated Markdown outputs. Agent behavior belongs in the eval suite inevals/, which runs on demand and costs money, so it never joinsnpm testor CI. Run it as Running the evals describes. Checked bynpm run lint:repo(workflows andpackage.jsonscripts) andnpm test(the eval entry points startclaudeonly undernpm run evalandnpm run eval:handoff). Judgment: what a test asserts, and code that setsnpm_lifecycle_event, spawnsnpm run eval,npm run eval:handoff, orclaudeitself, or passes the realclaudetorunHandoff. - Every skill follows skill authoring: it tells the model what the author cares about, then stays out of its way, holding only what a frontier model would otherwise get wrong. The core rules come first: agent-agnostic (B3) and a short prompt (C1, C6). Run
npm run lint:skillsafter editing a skill. Subagents inagents/follow the description rows (A3 to A6), B1, E3, and S1 to S4, and ship only with the Claude Code and Cursor plugins. Checked bynpm run lint:skills(rows marked lint, in skills and subagents, with A2's and G1's exemptions listed in the script) andnpm test(lint ID parity and stale A2 and G1 exemptions). Judgment: A6, B1, E3, S4. - Every PR updates the documentation its change makes stale before it merges: this file,
INSTALL.md,docs/, the skill's ownSKILL.mdand references, eval graders that cite changed lines, the README section "What the skills run and send" when a shipped skill's commands, network destinations, uploads, or writes outside the working repository change, andCHANGELOG.mdper rule 7. Regenerated files (README.mdcatalog, shared copies) count only after their regeneration command runs. Every PR body, including one passed withgh pr create --body-file, carries the pre-merge section of.github/pull_request_template.md; check its documentation box only once the docs match, or note why none were needed. Checked by.github/workflows/pr-body.yml(the pre-merge section, on every PR except Dependabot's) andnpm test(regenerated files). Judgment: which docs a change makes stale, and when to check the box. - Prose never states how many members a set has when this repository or the change defines the set. Write "every skill", "these steps", or the members' names, never "51 skills" or "four steps". The number goes stale when the set changes, and it tells the reader nothing the list does not. Test each number: does adding or removing one member make it wrong? If yes, rewrite the sentence. Positional counts ("the last two") and ordinals that count a set ("a fourth condition") fail the test too. Numbers stay for limits and defaults the reader obeys, IDs such as step numbers and exit codes, and values a script enforces. They also stay for facts about outside sources, records of past runs and published releases, and script output. A fixed split into X and not-X ("tracked and untracked") is not a count. Code, fixtures, test data, and quoted text stay byte-identical. The rule covers docs, skills and their references, manifests, new changelog entries, and PR bodies. Judgment: a regex cannot tell a count from a limit.
- Every skill passage that starts a subagent says to start it with fresh context, never a fork of the parent conversation (D6). Some harnesses fork the parent conversation by default, and a fork inherits the context the subagent exists to escape. Judgment: which passages start a subagent.
Verification
Install the development tools once per checkout with npm ci --prefix tools.
Run only the checks relevant to the change, and report the exact commands and results:
npm test
npm run lint:skills
npm run lint:repo
npm run lint:js
npm run format:check
node scripts/catalog.mjs --check
claude plugin validate . --strict
git diff --checkDoes 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.

