skills
CLAUDE.md2 starsChanged 10 days agoMITView on GitHub
Maintainer notes for this repo (the skills package), not for repos that install it. An add-on collection of Claude Code skills that are original to Ieuan, layered on top of mattpocock/skills. The plugin declares Matt's as a dependency, so installing this one pulls it in — there is no install order for consumers to get right. See README.md for the consumer story and CONTEXT.md for the vocabulary. /plugin install ieuanign-skills@ieuanign (reads .claude-plugin/) is the supported path; it is the only…
In this repository18 other files it gives its agents.
- design-systemSkill
- dev-loop-cleanupSkill
- dev-loopSkill
- grill-prdSkill
- delivery-policySkill
- infra-diagnoseSkill
- infra-reportSkill
- infrastructureSkill
- setup-infraSkill
- mockupSkill
- pr-commentsSkill
- qa-reviewSkill
- qa-verifySkill
- reproduceSkill
- test-casesSkill
- retire-adrSkill
- setup-ieuanign-skillsSkill
- to-prdSkill
The file
We split this CLAUDE.md into the rules it gives an agent
7 rules. About 0 are common, 0 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 30
Do not add an agents field to plugin.json — the default discovery already covers it.
- Very specific: line 37
Create / edit skills/<name>/SKILL.md (+ any supporting files in the same folder).
- Very specific: line 39
If adding a skill, add its path to the skills array in .claude-plugin/plugin.json.
- Very specific: line 41
Add a changeset: npm run changeset (describe the change.
- Very specific: line 42
Keep package.json version and .claude-plugin/plugin.json version in sync — a version bump updates both.
- Very specific: line 66
Every throwaway artifact goes under .scratch/ at the repo root — scratch scripts, intermediate output, working notes, a /dev-loop run's …
- Very specific: line 78
Every skill here must stay repo- and machine-agnostic — no repository name, absolute path, or project-specific fact baked into a SKILL.md …
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.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
CLAUDE.md
Maintainer notes for this repo (the skills package), not for repos that install it.
What this is
An add-on collection of Claude Code skills that are original to Ieuan, layered on top of
mattpocock/skills. The plugin declares Matt's as a
dependency, so installing this one pulls it in — there is no install order for consumers to get right.
See README.md for the consumer story and CONTEXT.md for the vocabulary.
Layout
skills/<skill-name>/SKILL.md # one folder per skill, auto-discovered by `npx skills add`
skills/<skill-name>/... # optional supporting files travel with the skill
skills/qa/<skill-name>/SKILL.md # a grouping folder — each skill inside keeps its own name
skills/infrastructure/<skill-name>/SKILL.md # a grouping folder, likewise
agents/<agent-name>.md # the dev-loop roster, as plugin agents
.claude-plugin/plugin.json # enumerates skill paths + version (for the /plugin install path)
.claude-plugin/marketplace.json # marketplace metadata + the mattpocock-skills dependency/plugin install ieuanign-skills@ieuanign (reads .claude-plugin/) is the supported path; it is the
only one that installs the roster and the only one where the agents' namespaced skill preloads
resolve. npx skills add ieuanign/skills still works for the skills alone — it auto-discovers
SKILL.md folders and nothing else.
The repo root is the plugin root ("source": "./"), so agents/ is the default agent location.
Do not add an agents field to plugin.json — the default discovery already covers it.
The same reason keeps these notes in .claude/CLAUDE.md. A plugin never loads a CLAUDE.md at its
root, and claude plugin validate --strict fails on one there; this path still loads for maintainers.
Adding or changing a skill
- Create / edit
skills/<name>/SKILL.md(+ any supporting files in the same folder). A roster agent isagents/<name>.mdinstead, and needs no manifest entry. - If adding a skill, add its path to the
skillsarray in.claude-plugin/plugin.json. - Link it from
README.md. - Add a changeset:
npm run changeset(describe the change; pick the bump). - Keep
package.jsonversionand.claude-plugin/plugin.jsonversionin sync — a version bump updates both. Validate the plugin withclaude plugin validate . --strict.
Per-layer read budget
/dev-loop re-reads the act files skills/dev-loop/SKILL.md lists under Then per LAYER once per
layer, so a paragraph added to one is paid at every layer of every stacked run — the same paragraph in
a read-once act file is paid once. That per-layer read is capped by npm run check's
per-layer read budget stage, which sums those files and fails over the budget. Run it before adding
to one, to see the current total and the budget.
Dogfooding
scripts/link-skills.sh symlinks every skill into this repo's own .claude/skills/, and every roster
agent into .claude/agents/, so local edits are live here and nowhere else. scripts/list-skills.sh
prints every SKILL.md path.
Project scope on purpose. A half-finished skill under ~/.claude/skills/ would outrank the released
one in every other project on the machine — personal scope overrides project scope, so the in-progress
copy wins wherever you go. Keeping the links here confines that to the repo they belong to. Both
destinations are gitignored and every link is relative, so the checkout stays clean and movable.
Temporary files
Every throwaway artifact goes under .scratch/ at the repo root — scratch scripts, intermediate
output, working notes, a /dev-loop run's plans. Create it if missing; it is gitignored.
This overrides whatever temp directory the harness hands you. Reach for .scratch/ where you
would otherwise reach for /tmp, a system temp dir, or a session- or job-scoped one such as
$CLAUDE_JOB_DIR/tmp or anything under ~/.claude/ — a background job included. Working material
written outside the checkout is invisible to everyone reviewing the repo, survives on one machine
with no rule reaping it, and sits beyond the reach of .claude/rules/scratch-files.md, which is what
says when a scratch file must be committed, pasted onto the issue, or deleted.
Portability rule
Every skill here must stay repo- and machine-agnostic — no repository name, absolute path, or
project-specific fact baked into a SKILL.md or a bundled agent. Repo-specific config belongs in the
consuming repo's docs/agents/ (via the setup skills), never here.
Subagent returns
Be extremely concise. A return is data for its caller, not an essay — verdict first, then bullets that each carry a concrete anchor: file:line, path, command, or exact output. Compress by cutting sentences, never facts; keep every identifier verbatim. No preamble, no restating the task, no closing summary. If a sentence doesn't change what the caller does next, it isn't information.
An agent whose own definition sets a return format follows that instead.
Agent skills
Config for this repo's own use of the engineering skills. (Consistent with the portability rule above:
these are this repo's facts, kept out of skills/.)
Issue tracker
Issues and PRDs live as GitHub issues in ieuanign/skills, managed with the gh CLI.
See docs/agents/issue-tracker.md.
Triage labels
Two families, each label string equal to its role name: the five canonical triage roles a human
applies, and the three workflow roles an unattended /dev-loop run applies to report on itself.
See docs/agents/triage-labels.md.
Domain docs
Single-context — root CONTEXT.md, and no decision records. A decision worth keeping is written where
the code it binds lives, so it goes stale in the same edit that invalidates it. See
docs/agents/domain.md.
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.

