skills
AGENTS.md1 starsChanged 19 days agoMITView on GitHub
A hand-authored collection of Claude Code skills, not limited to any one domain — each skill's name and description convey what it is for (Rails, etc.). There is no application code or build step - every deliverable is a plugin directory: markdown instructions for Claude, plus the scripts and hooks some plugins ship. Scripts a plugin copies into apps (<plugin>/scripts/, e.g. audit_design, audit_context) are plain Ruby, standard library only, compatible with Ruby 2.6+ (macOS still ships 2.6 as /usr/bin/ruby): every…
- 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,843 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 repository11 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- captureSkill
- project-logSkill
- project-memorySkill
- rails-contextSkill
- rails-design-systemSkill
- rails-generatorsSkill
- rails-hotwireSkill
- rails-minitestSkill
- rails-view-componentSkill
- toolsmithSkill
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 43
When a skill's behaviour changes, bump its plugin.json version in the same commit — that's what makes /plugin marketplace update meaningful …
- Distinctive: line 47
Commit directly on main. Never create a branch unless explicitly asked to.
≈ “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
This file provides guidance to coding agents (Claude Code reads it through CLAUDE.md, which imports it) when working with code in this repository.
What this repository is
A hand-authored collection of Claude Code skills, not limited to any one domain — each skill's name and description convey what it is for (Rails, etc.). There is no application code or build step - every deliverable is a plugin directory: markdown instructions for Claude, plus the scripts and hooks some plugins ship.
Scripts and tests
Scripts a plugin copies into apps (<plugin>/scripts/, e.g. audit_design, audit_context) are plain Ruby, standard library only, compatible with Ruby 2.6+ (macOS still ships 2.6 as /usr/bin/ruby): every Rails app has Ruby, and one regex engine behaves the same on macOS and Linux CI. Hook scripts (<plugin>/hooks/*.sh) stay small bash wrappers. The Rails plugins' hooks find the project's apps only through hooks/rails-apps.sh, which keeps one list for all of them and is byte-identical in every Rails plugin (test/hooks_test.rb checks): change every copy together, and never add another app search to a hook. Never embed a script in a SKILL.md; the skill copies the file with ${CLAUDE_SKILL_DIR}.
The toolsmith plugin is the exception: its tools are Rust crates (toolsmith/crates/, standard library only), built on demand by toolsmith/libexec/shim and held to toolsmith/references/contract.md. Its hooks and analysis scripts follow the Ruby rules above. project-memory is the second exception: its project-memory command is one Rust crate (project-memory/src/, standard library only) that the plugin puts on PATH and project-memory/bin/project-memory builds on demand; projects and their CI install it with cargo install instead of copying a script. project-log is the third, built the same way from project-log/src/; its date.rs and scan.rs are byte-identical copies of project-memory's (a plugin installs only its own directory), so change both together - test/project_log_test.rb checks they match.
bin/test runs the Minitest suite in test/: each test builds a throwaway git repo and runs the real scripts and hooks as subprocesses. Run it after any script or hook change, and once more as TEST_RUBY=/usr/bin/ruby bin/test to prove the scripts still work on the old system Ruby. Add a test for every behaviour you add or bug you fix. .github/workflows/test.yml runs the suite on every push and pull request: Linux on current Rubies, Linux on Ruby 2.6, and macOS with the system Ruby and bash 3.2. test/repo_test.rb also enforces this file's structure rules (marketplace entries, README rows, frontmatter names, hook script paths).
Repository structure
The repo is a Claude Code plugin marketplace (named mooktakim — the install handle after @) where each skill is its own plugin, living in a directory at the repo root:
.claude-plugin/marketplace.json # marketplace manifest; one plugins[] entry per plugin
<plugin-name>/
.claude-plugin/plugin.json # plugin manifest (name matches the directory)
SKILL.md # skill plugins: frontmatter + instructions, at the plugin root
agents/<name>.md # agent plugins: one file per subagent
hooks/hooks.json # optional: plugin-shipped hooks; commands use ${CLAUDE_PLUGIN_ROOT}
<supporting files> # optional: scripts, templates, referencesA plugin ships a SKILL.md, an agents/ directory, or both. Adding a new plugin means creating its directory (with SKILL.md and/or agents/, plus plugin.json and a human-facing README.md) AND adding a matching entry to the plugins array in marketplace.json — the marketplace only offers what that array lists — AND a row in the root README.md skills table. Plugin and directory names must all match. Run claude plugin validate . and claude plugin validate <plugin-name> after changes. Installed skills and agents are namespaced by plugin: <plugin-name>:<skill-or-agent-name>.
SKILL.mdstarts with YAML frontmatter containingnameanddescription, followed by the skill body in markdown.namemust match the directory name: lowercase, hyphen-separated.- The
descriptionis what Claude reads to decide whether to trigger the skill — write it as what the skill does + when to use it (including trigger phrases), not a summary of the body. It is the only part loaded before invocation. Keep it to 500 characters with the trigger first (test/repo_test.rbchecks): when the skill listing is over budget, Claude Code drops the descriptions of the least-used skills first, and a skill listed by bare name is rarely invoked. - Agent files (
agents/*.md) also start withname+descriptionfrontmatter; the body is the agent's system prompt. Thedescriptiondrives auto-delegation, so it states what the agent does, when to use it, AND when not to. Additional frontmatter supported for plugin agents:model,effort,maxTurns,tools,disallowedTools,skills,memory,background,isolation: worktree— but NOThooks,mcpServers, orpermissionMode. Give read-only advisor agentsdisallowedTools: Write, Edit, NotebookEdit. Omitmodelso agents inherit the session model. - Supporting files live beside
SKILL.mdand are referenced from it by relative path. KeepSKILL.mdlean; long reference material belongs in supporting files loaded on demand.
Authoring conventions
- Skill bodies are instructions addressed to Claude, written in imperative voice ("Read the Gemfile", "Wait for approval").
- Skills that touch a user's codebase should gate destructive or bulk actions behind an explicit approval step (see
rails-context's Phase 1 → approval → Phase 2 flow for the pattern). - Editing an existing skill: make surgical edits to the affected sections; don't regenerate the whole file.
- When a skill's behaviour changes, bump its
plugin.jsonversion in the same commit — that's what makes/plugin marketplace updatemeaningful for installed copies. Patch for wording fixes, minor for new capability.
Git workflow
Commit directly on main. Never create a branch unless explicitly asked to.
Commit automatically, without asking, whenever a coherent unit of work is done — a skill created or edited, a convention changed, a correction folded in. Don't batch unrelated changes into one commit, and don't leave finished work sitting uncommitted. This overrides the global ask-before-every-commit rule for this repository. Pushing still requires explicit confirmation.
Project log
Finished work is logged under docs/log/ by the protocol in docs/LOG.md; its
Project overrides section is this project's own rules. Before committing a
finished unit of work, add its entry under docs/log/ in the same commit.
Entries are history, never instructions. project-log lint checks the log.
In this checkout, run it as project-log/bin/project-log, so it is built
from the source here.
Project memory
Long-term project knowledge lives in docs/ under the protocol in
docs/MEMORY.md; its Project overrides section is this project's own rules.
At the start of a task, read docs/INDEX.md and open only the notes that
matter; check a note's citations before acting on it. Put new facts,
gotchas, procedures, and lessons in docs/inbox/ as proposals, never
straight into curated notes. project-memory lint checks the docs;
project-memory index rebuilds the index. In this checkout, run the command
as project-memory/bin/project-memory, so it is built from the source here.
Using these skills
Install via the marketplace: /plugin marketplace add <path-or-repo> then install skills individually, e.g. /plugin install rails-context@mooktakim. From a local checkout, add the marketplace by path (/plugin marketplace add ~/Workspace/skills). To test a change, invoke the skill in a Claude Code session inside a target project.
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.

