skills
AGENTS.md1 starsChanged 4 months agoMITView on GitHub
Instructions for AI agents working in this repo. Human contributors: see README.md. A collection of standalone Agent Skills following the agentskills.io specification. Each top-level directory is one self-contained skill, installable on its own: There is no build, no stack, no runtime. A skill is a SKILL.md (YAML frontmatter + Markdown body) plus optional references/, assets/, scripts/, and an MIT LICENSE. This is a flat skills collection, not a Claude Code plugin — there is no .claude-plugin/ manifest and no /namespace:command…
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,774 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 repository24 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- architecture-auditSkill
- autodreamSkill
- deep-discoverySkill
- generic-by-designSkill
- gitops-cd-developerSkill
- gitops-pipeline-developerSkill
- golang-script-developerSkill
- humanizerSkill
- information-architectureSkill
- interactive-deck-builderSkill
- javascript-script-developerSkill
- linux-script-developerSkill
- makefile-script-developerSkill
- plan-interviewSkill
- pre-commit-setupSkill
- python-script-developerSkill
- qaSkill
- skill-builderSkill
- teacher-modeSkill
- terraform-module-developerSkill
- typescript-script-developerSkill
- ui-deslopSkill
- xquik-x-dataSkill
The file
We split this AGENTS.md into the rules it gives an agent
7 rules. About 0 are common, 4 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 52
Every SKILL.md declares these keys, in this order:
- Distinctive: line 83
No compiler; validation is one script, and it is the source of truth.
- Distinctive: line 95
Test a change by loading the skill in a client and running a real task, not by any build step.
- Distinctive: line 139
Never reference a sibling skill's files by relative path.
- Very specific: line 140
Self-contained scripts: No package manifest, no install step.
- Distinctive: line 144
Generic by design: No org names, internal hostnames, real vendor stacks asserted as "ours", absolute home paths, or fork-source …
- Very specific: line 165
Bump a skill's
version: when its content changes materially.
≈ “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
AGENTS.md — skills
Instructions for AI agents working in this repo. Human contributors: see README.md.
What this is
A collection of standalone Agent Skills following the agentskills.io specification. Each top-level directory is one self-contained skill, installable on its own:
npx skills@latest add MKAbuMattar/skills/<skill-name>There is no build, no stack, no runtime. A skill is a SKILL.md (YAML frontmatter +
Markdown body) plus optional references/, assets/, scripts/, and an MIT LICENSE.
This is a flat skills collection, not a Claude Code plugin — there is no
.claude-plugin/ manifest and no /namespace:command invocation. Do not add one without
being asked; it changes how every skill installs.
Layout
<skill-name>/SKILL.md— the skill itself: frontmatter contract + body. The only required file besidesLICENSE.<skill-name>/references/*.md— progressive disclosure. Detail the agent loads only when a task needs it. Every file here must be mentioned by path inSKILL.md(its load trigger).<skill-name>/assets/— templates and worked examples. Useassets/templates/, not a top-leveltemplates/.<skill-name>/scripts/— runnable helpers. Self-contained; no install step.<skill-name>/LICENSE— MIT, one per skill, so a single-skill install carries its license.README.md— human-facing index, grouped by category, with an install snippet per skill.__SCRIPTS__/— repo-level tooling: the validation gate, the frontmatter check, and the description eval. Not a skill; the gate skips any directory without aSKILL.md.__SCRIPTS__/fixtures/<skill>.json— eval queries per skill. Kept out of the skill directory on purpose: a single-skill install copies only that directory, and eval data is repo tooling rather than shipped content..github/— CI workflow plus the community health files (contributing guide, code of conduct, security policy, PR template, issue forms).CHANGELOG.md/ROADMAP.md— what changed, and what is queued next.
The skills
23 skills. Scripting: linux- python- javascript- typescript- golang-
makefile-script-developer. Authoring: skill-builder · generic-by-design. Planning:
information-architecture · deep-discovery · plan-interview · architecture-audit.
CI/CD: gitops-pipeline-developer · gitops-cd-developer. IaC:
terraform-module-developer. Hygiene: pre-commit-setup. QA: qa. Presentations:
interactive-deck-builder. Editing: humanizer (prose) · ui-deslop (visual design).
Memory: autodream. Teaching: teacher-mode. Data: xquik-x-data (third-party service).
Frontmatter contract
Every SKILL.md declares these keys, in this order:
---
name: <kebab-case, must equal the directory name>
version: <semver>
description: |
<block scalar. The auto-invoke trigger, so name every domain and the casual
phrasings a user might actually type. Must contain "use this skill" / "use when" /
"whenever". Hard limit 1024 characters.>
license: MIT
compatibility: claude-code opencode
allowed-tools:
- <only what the skill genuinely uses>
metadata:
author: MKAbuMattar
requirements: >- # optional; runtime needs, not client support
<e.g. "Go 1.22+ on Linux, macOS, or Windows">
---Two distinctions worth keeping straight:
compatibilitymeans clients (claude-code opencode). Runtime prerequisites — language versions, required CLIs — go inmetadata.requirements. Conflating them hides the prerequisite from anyone scanning for client support.descriptionis a trigger, not a summary. It is the only thing an agent sees when deciding whether to load the skill. Write the phrasings a user types, not a précis.
Working commands
No compiler; validation is one script, and it is the source of truth.
| Command | What it does |
bash skill-builder/scripts/validate-skill.sh ./<skill> | 14 checks: frontmatter contract, name/folder match, description length + phrasing, LICENSE, body ≤ 200 lines / ≤ 5k tokens, canonical subdirs, referenced files resolve, every references/*.md documented. Aim for 100% before commit. |
bash skill-builder/scripts/new-skill.sh <name> "<description>" | Scaffold a spec-compliant skill. |
bash generic-by-design/scripts/scan-fingerprints.sh <path> | Scan for org-specific leaks before publishing. 5 of its 10 categories need wordlists (scripts/data/*.txt, copied from the committed .example templates); without them those categories report skipped and the clean verdict is withheld. |
bash __SCRIPTS__/validate-all.sh | The gate. Validates every skill and syntax-checks every bundled .sh. Exits non-zero if any skill is below 100%. Run this before pushing. |
uv run __SCRIPTS__/check-frontmatter.py | The repo's own contract: required keys, name matches directory, LICENSE, description length + trigger phrasing, no hyphenated word split across lines. |
uv run __SCRIPTS__/eval-descriptions.py | Score descriptions against __SCRIPTS__/fixtures/<skill>.json. Reports where a skill loses to a sibling. A lexical proxy, not a trigger rate — add --emit and run the queries in a real client for the actual check. |
grep -rnE '(#|//) ?ponytail:' . | Deferred-shortcut ledger. |
Test a change by loading the skill in a client and running a real task, not by any build step.
Automation
Both entry points call the same __SCRIPTS__/validate-all.sh, so a local pass and a
green CI run cannot disagree.
- CI —
.github/workflows/validate.ymlruns on every pull request and on pushes tomain/develop. Theskillsjob is blocking: it runs the gate, then checks the frontmatter contract (required keys,namematches directory, LICENSE present, description under 1024 chars and free of hyphenated words split across lines). Thefingerprintsanddescriptionsjobs are advisory and never block a merge. Local hooks —
.pre-commit-config.yaml. Install with:uv tool install pre-commit pre-commit install --hook-type pre-commit --hook-type commit-msgThe second
--hook-typeis not optional. Without it the Conventional Commits check is installed but never runs, which looks identical to passing.
Two deliberate choices worth knowing before changing them:
- The fingerprint scan is advisory, in both places. The scanner cannot tell a real
leak from a skill that legitimately names vendors, and
generic-by-design's own documentation is full of the latter. A gate that cries wolf trains people to reach for--no-verify, which costs more than the check is worth. - Conventional Commits are enforced with commitizen, not commitlint. commitlint is Node-based, and this repo deliberately ships no package manifest.
- The description eval is a lexical proxy, and advisory for that reason. It measures
whether a skill outranks its 22 siblings on a query, which is computable. It does not
measure whether a model would load it, which is not. Gating on it would invite tuning a
description to satisfy a token scorer, and the guide explicitly warns against overfitting
to failed queries. Fixtures may set
"proxy_blind": truewhere the deciding signal is semantic; those are reported separately rather than counted as failures.
Conventions
- Progressive disclosure is the point.
SKILL.mdstays under 200 lines. When it grows past that, move detail toreferences/and leave a one-line index plus an explicit load trigger (Load references/x.md for ...). A body over ~5k tokens is loaded in full on every invocation — that cost is why the limit exists. - One skill, one directory, no cross-imports. A skill must work when installed alone. Never reference a sibling skill's files by relative path; name the skill in prose instead.
- Self-contained scripts. No package manifest, no install step.
bashand standard Unix tools; for Python, a PEP 723 inline-dependency header souv run <script>.pyresolves deps with nothing to install first. Useuvas the Python package manager, neverpip. - Generic by design. No org names, internal hostnames, real vendor stacks asserted as
"ours", absolute home paths, or fork-source attributions in skill content. Concrete
patterns belong in
generic-by-design/scripts/data/*.txt(gitignored tool data), never in prose. Run the scanner before publishing anything adapted from internal work. - Every
references/file earns its load trigger. An undocumented reference file is dead weight the agent never reads.
Hard rules
validate-skill.shmust report 100% for any skill you touch. A green score with a suspicious number is worse than a red one — if a count looks wrong, verify the checker before trusting it.namemust equal the directory name. Installers resolve by path; a mismatch installs a skill that cannot be invoked.- One
LICENSEper skill directory. Single-skill installs copy only that directory. - Never vendor a third-party skill without its license and explicit attribution — and prefer pointing at the upstream marketplace instead.
- Clean commits. Conventional-commit subject + body. No
Co-Authored-Bytrailer, no "Generated with Claude Code", no Opus/Anthropic/AI mention of any kind. - Don't commit local tooling.
.serena/,.claude/settings.local.json,.DS_Store, and populatedscripts/data/*.txtwordlists are git-ignored — never add them. - Bump a skill's
versionwhen its content changes materially. - Push only when asked.
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.

