Borrowing it
Nothing to install: this file belongs to patrickdappollonio/claude-plugins. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/patrickdappollonio/claude-plugins/main/CLAUDE.mdgit clone --depth 1 https://github.com/patrickdappollonio/claude-pluginsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/instructions/patrickdappollonio/claude-plugins/claude-md)<a href="https://agentmods.dev/instructions/patrickdappollonio/claude-plugins/claude-md"><img src="https://agentmods.dev/badge/instructions/patrickdappollonio/claude-plugins/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/patrickdappollonio/claude-plugins/claude-md"><img src="https://agentmods.dev/badge/instructions/patrickdappollonio/claude-plugins/claude-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.04584 | $0.04584 |
| Opus 5.5 | $0.01834 | $0.01834 |
| Sonnet 5.5 | $0.00917 | $0.00917 |
| Haiku 4.5 | $0.00458 | $0.00458 |
Grade A, and why
claude-plugins CLAUDE.md scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- **Agents must never have to write code — not even a small script — to operate visual-docs.** Every operation an agent performs (resolve a directory, serve, read comments, set status, lint, stop) must be a first-class ` How it starts
The opening of the file, as written. The whole thing — 65 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md — patrickdappollonio/claude-plugins
A plugin marketplace for both Claude Code and the Codex CLI. Two root manifests list the plugins under plugins/: .claude-plugin/marketplace.json (Claude Code) and .agents/plugins/marketplace.json (Codex). Each plugin in turn carries two manifests: .claude-plugin/plugin.json and .codex-plugin/plugin.json.
Hard rules
- Never add Claude/AI attribution to commits or PRs — no
Co-Authored-By: Claude, no "Generated with Claude Code". This is a standing, non-negotiable constraint from the repo owner. - Commit/push only when asked. Work on a branch, not
main. - Never hard-wrap Markdown. Every paragraph, heading, list item, and table row sits on one source line, however long; the editor wraps it for display. Do not break prose at 80 columns or any other width, and do not "fix" a long line by splitting it. This keeps diffs to the words that changed, and it keeps a line number pointing at a whole thought.
npm run lint:markdown(scripts/lint-markdown-wrap.mjs) fails on any paragraph or heading that spans more than one line; CI runs it on every.mdchange. Code blocks, front matter, and tables are not checked, and a GitHub admonition may keep its> [!NOTE]marker on its own line above one line of text. - Bump the plugin's version on every meaningful change, in its
plugins/<name>/.claude-plugin/plugin.json, following semver: patch for fixes and doc/wording tweaks, minor for new backwards-compatible capability (a new command, fence, or skill behavior), major for breaking changes (removed/renamed commands, changed file formats or defaults users rely on). Pure repo chores that don't touch a plugin (root README, CI) don't need a bump. The version lives only in thatplugin.json— there are no git tags, GitHub releases, or per-plugin versions inmarketplace.jsonto check or update, so don't go looking. The matchingplugins/<name>/.codex-plugin/plugin.jsonrepeats that version for Codex and must be updated in the same change. - Every plugin ships four files, and a new plugin is not done until all four exist. Codex and Claude Code never read each other's files, so a plugin missing any one of these is silently absent from that tool's marketplace — nothing fails, it just never shows up:
plugins/<name>/.claude-plugin/plugin.json— the Claude Code manifest.plugins/<name>/.codex-plugin/plugin.json— the Codex manifest. Samename,version,description,author,homepage,license, andkeywords, plus"skills": "./skills/"and aninterfaceblock (displayName,shortDescription,longDescription,developerName,category,capabilities,defaultPrompt). Copy a sibling plugin's file and edit it.- An entry in
.claude-plugin/marketplace.json(name,source, description, category, keywords, author, homepage, license). - An entry in
.agents/plugins/marketplace.json(name,source{"source":"local","path":"./plugins/<name>"}, the standardpolicyblock, and acategorymatching the Codex manifest'sinterface.category). Keep the two marketplace files listing the same plugins in the same order. Before finishing any change that adds, renames, or removes a plugin, runnpm run lint:marketplace(scripts/check-marketplaces.mjs, also run in CI) and expectok. This rule exists because the three plugins added right after the Codex marketplace landed (implement-plan,planning-flow,recap) each got a Codex manifest but no Codex marketplace entry, so Codex users never saw them.
- The
allbundle is the one exception to the four-file rule, and every new plugin must be added to it.plugins/all/holds only.claude-plugin/plugin.jsonand a README, and appears only in.claude-plugin/marketplace.json. Its manifest lists every other plugin underdependencies, so/plugin install all@patrickdappollonioinstalls and enables them all. It has no Codex manifest or Codex marketplace entry because Codex has no plugin dependencies (unknown manifest keys are silently ignored, andcodex plugin addtakes one plugin), so a Codex bundle would install nothing; the README tells Codex users to install plugins one by one and other agents to usenpx skills add … --all. Keep the dependencies as bare names: a version range makes Claude Code resolve<plugin>--v<version>git tags, which this repo does not have. When you add, rename, or remove a plugin, update thedependencieslist and bump the bundle's minor (add) or major (remove/rename) version;npm run lint:marketplacefails if the list and the marketplace disagree. Do not bump the bundle when a child plugin's version changes. A dependency with no version range tracks the marketplace's latest version, so users get the child's update through the child itself; the bundle's version changes only when its owndependencieslist or manifest changes. - All install paths must stay equivalent: Claude Code marketplace, Codex marketplace, and
npx skills. Claude Code and Codex install a whole plugin (every skill underplugins/<name>/skills/);npx skills add … --skill <name>installs one skill directory and nothing above it. So a skill must be self-contained: everything it needs lives inside its ownskills/<skill>/directory, and nothing inSKILL.mdmay reach outside it — no../paths, no "see the other skill's file", no reliance on a sibling skill being present, and no symlinks (a symlink out of the directory arrives as a plain text file on a Windows checkout withcore.symlinks=false— a silent, broken install). Duplicating shared prose or code into each skill is the correct trade-off, as visual-docs does with the renderer. A plugin may hold several skills; each must work alone. When you add a skill, also add it to the root README's--skillname table, and phrase cross-skill references so they degrade to a name a reader can install ("the fulladversarial-reviewskill"), never a relative path. - Some skills carry a distilled copy of another skill, and every change to the parent must be checked against each copy. Because a skill must work alone, several of them ship a shortened version of a sibling skill as a companion file, used when the real one is not installed:
implement-plancarriesadversarial-review-fallback.md,appropriate-comments-fallback.md, andcode-simplification-fallback.md;planning-flowcarries the on-the-spot panel inplan-review.mdandcommunication.md;recapcarriescommunication.md;anti-slop-textcarriescommunication.md;effective-gocarriescomments.mdandsimplification.md;planning-flow-quickcarriesquestion-format.md,verification.md, andcommunication.mdfromplanning-flow, and itsplan-check.mdholds a one-subagent digest ofplanning-flow's plan reviews and ofadversarial-review-fast. The too-big signs are written in bothplanning-flow-quick'sSKILL.mdandplanning-flow's When to Use, and the quick plan's marker line and section names are whatplanning-flow(Picking up a quick plan) andimplement-plan(step 0) read, so a change to either side is checked against the other. These copies do not update themselves. When you change what a skill does — its procedure, its thresholds, when it runs, what it asks — grepplugins/*/skills/*/for the skill's name and for the rule you changed, open every digest that hits, and bring it into line in the same PR. The same applies in reverse: a change to a flow that uses a digest (when the review runs, what the pass covers) must be reflected in that digest's own text, not only inSKILL.md. A digest that describes the old behavior is a silent fork: annpx skillsuser of the standalone skill gets the old rule with no error. This bit us when the review cadence changed and the capacity math still budgeted a panel per fix round. - Skills: extract whatever can be read on demand, but always keep the general guideline inline — otherwise the extraction is moot. The whole
SKILL.mdloads into context on every invocation, so keep it under ~500 lines. It holds what steers behavior on every pass — principles, the process outline, decision tables, rationalizations, red flags, the checklist — plus a short, self-sufficient summary of every extracted topic (the rule, the threshold, the one-line procedure). The comprehensive version — full procedures, routing tables, handoff templates, digests of other skills — goes in a.mdfile in the same skill directory, and the summary says exactly when to read it ("readcyclomatic-complexity.mdbefore splitting a function"). An agent that never opens the side file must still do the right thing from the summary alone. Load-bearing discipline rules stay inline in full — an agent under pressure will skip a side file. Reference sibling files by bare filename, never a path, so every install path ships them. And the skill must insist that the agent read every companion file on first use in a session, before any other step — a dedicated section near the top listing the files, plus a red flag and a checklist item — and re-read the named file at its step. Summaries are reminders of text already read, never a substitute.code-simplificationis the worked example. - Every subagent a skill dispatches is one-shot, and more work is always a new subagent. A skill that delegates must say, inline in
SKILL.mdand in every prompt template it ships, that each subagent gets one self-contained task, returns its result, and ends: it never waits for a reply, for the orchestrator's next instruction, or for the user, and the orchestrator never resumes, messages, or continues it (SendMessagein Claude Code, or the equivalent). A send-back, a re-check, a re-validation, or a follow-up question is a new subagent whose prompt carries everything, including the earlier result. Prompt templates end with a line telling the subagent the task is single and nobody will send further instructions. The reason is cost: a subagent's prompt cache expires within minutes of going idle, far sooner than the main session's, so each later message to it re-reads its whole history at full price, and a long-lived orchestrator can burn most of a weekly limit this way. The same cost hits a subagent that sits silent inside its own run: a command it blocks on makes no model requests, so a test suite or build past five minutes expires its cache before it reads the result. Every skill whose subagents run commands must therefore carry the heartbeat rule inline: a command that may run past three minutes starts in the background with output and exit code going to a log, and the subagent checks it with a foreground loop capped at three minutes (for i in $(seq 18); do grep -q '^EXIT=' <log> && break; sleep 10; done) until it finishes, never a baresleep(Claude Code refuses it), never a monitor or notification with no cap, and never by ending its run early; past about 40 minutes of expected wait, one cold restart is cheaper than the checks. The closing line of every prompt template carries the same rule in one sentence. When a skill gains a new subagent role, a loop, or a pause, check it against these rules and carry them into any digest of that skill. - Skill frontmatter must parse as YAML and fit the Agent Skills limits. Keep
nameanddescriptionas non-empty strings.nameis lowercase letters, digits, and single hyphens, at most 64 characters;descriptionis at most 1024 characters (the spec's hard cap — an over-limit skill is silently skipped by some agents) with the key use case in the first sentence, because Claude Code truncates the listing text at 1536 characters. Quote or fold descriptions containing:rather than leaving them as plain YAML scalars. Keep theSKILL.mdbody under 500 lines. After adding or editing a skill, runnpm run lint:skills, which enforces the name and description limits; CI runs the same check for every directory underplugins/*/skills/. - The visual-docs server has no authentication.
--host/0.0.0.0binding must stay opt-in and documented as trusted-network-only. - Agents must never have to write code — not even a small script — to operate visual-docs. Every operation an agent performs (resolve a directory, serve, read comments, set status, lint, stop) must be a first-class
node visual-docs-server.js --<command>/visual-docs-lint.jsinvocation that prints ready-to-read, formatted text (never JSON the agent must parse, and never something it has tocurl/jq/python/node -eto consume). Keep these commands OS-agnostic as much as possible: do the platform-specific work (temp dirs viaos.tmpdir(), backgrounding via detachedspawn, HTTP viafetch) inside the Node CLI, so the skill only ever runsnode <script> <args>— nonohup/&, no/tmppaths, no shell-only constructs. When you add an agent-facing capability, add a--commandfor it; don't make the agent improvise glue.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago Changed · +137 tokens per session 7d2f8dd4f735
- 17d ago Changed · -4 lines · +272 tokens per session e95d0f4b29d5
- 18d ago Changed · +187 tokens per session 9e1f2d726e76
- 28d ago Changed · +1 lines · +251 tokens per session 4ef1a97fb4a1
- 1mo ago Changed · +11 tokens per session fa7e063759f9
- 1mo ago Changed · -163 lines · -83 tokens per session 88cf25044b7a
- 1mo ago Changed · +18 lines · +331 tokens per session 32049725811a
- 1mo ago Changed · +36 lines · +596 tokens per session 6a46cad4bf6a
- 2mo ago Changed · +7 lines · +118 tokens per session 01209ff7fcb1
- 2mo ago First seen · 170 lines · 2,764 tokens per session scan A 46707ce3afb5
claude-plugins CLAUDE.md is an instructions file published in the GitHub repository patrickdappollonio/claude-plugins (9 stars, last pushed yesterday), licensed MIT. It adds 4,584 tokens to every session, about $0.0183 per session on Opus 5.5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
claude-plugins CLAUDE.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| claude-plugins CLAUDE.mdpatrickdappollonio/claude-plugins | Instructions file | 9 | yesterday | MIT | A | 4,584 | Claude Code |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | yesterday | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |