improve-claude-md
Skill321 starsChanged 54 days agoApache-2.0View on GitHub
Audit and improve the CLAUDE.md files listed in the run worklist: apply only high/medium priority fixes, create the ones that are missing, and delete instructions already fully covered by a repository skill. Driven non-interactively by a GitHub workflow (.github/workflows/weekly-claude-md-improver.yml owns the schedule and resolves the worklist, which differs per repository); not intended for interactive use.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- zhangliang0115/ai-plugintheir own version, first seen Sep 6, 2026
- CrystalPlatforms/ADM-CLItheir own version, first seen May 31, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- CrystalPlatforms/ADM-CLI★ 1same name
- zhangliang0115/ai-plugin★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository92 other files it gives its agents.
- AGENTS.mdAGENTS.md
- apps/AGENTS.mdAGENTS.md
- packages/AGENTS.mdAGENTS.md
- apps/CLAUDE.mdCLAUDE.md
- CLAUDE.mdCLAUDE.md
- packages/CLAUDE.mdCLAUDE.md
- .cursor/rules/packmind/standard-backend-tests-redaction.mdcCursor rule
- .cursor/rules/packmind/standard-changelog.mdcCursor rule
- .cursor/rules/packmind/standard-code-comments.mdcCursor rule
- .cursor/rules/packmind/standard-compliance-logging-personal-information.mdcCursor rule
- .cursor/rules/packmind/standard-typescript-good-practices.mdcCursor rule
- agent-skill-frontmatter-auditSkill
- amplitude-listener-events-adoptionSkill
- cli-e2e-test-authoringSkill
- datadog-analysisSkill
- doc-auditSkill
- feature-specSkill
- feature-sprintSkill
- packmind-onboardSkill
- packmind-update-playbookSkill
- playbook-cli-auditSkill
- product-mapSkill
- qa-reviewSkill
- release-proprietarySkill
- upgrade-runtime-stackSkill
- working-with-playground-appSkill
- working-with-pm-design-kitSkill
- agentic-design-sessionSkill
- agentic-doc-ingestSkill
- agentic-feature-framingSkill
- agentic-orchestratorSkill
- agent-skill-frontmatter-auditSkill
- amplitude-listener-events-adoptionSkill
- cli-e2e-test-authoringSkill
- create-run-e2e-testsSkill
- creating-end-user-documentation-for-packmindSkill
- datadog-analysisSkill
- doc-auditSkill
- feature-flags-auditSkill
- feature-flags-authoringSkill
- feature-specSkill
- feature-sprintSkill
- how-to-write-typeorm-migrations-in-packmindSkill
- packmind-onboardSkill
- packmind-update-playbookSkill
- playbook-cli-auditSkill
- product-mapSkill
- qa-reviewSkill
- release-proprietarySkill
- upgrade-runtime-stackSkill
- working-with-playground-appSkill
- working-with-pm-design-kitSkill
- agent-skill-frontmatter-auditSkill
- amplitude-listener-events-adoptionSkill
- cli-e2e-test-authoringSkill
- creating-end-user-documentation-for-packmindSkill
- datadog-analysisSkill
- doc-auditSkill
- feature-flags-auditSkill
- feature-flags-authoringSkill
- The first 60 shown.
The file
Show its rules and text
We split this skill into the rules it gives an agent
14 rules. About 0 are common, 10 are distinctive, and 4 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
Before touching any CLAUDE.md, list every skill available in this repository.
- Very specific: line 24
Use Glob with the pattern /.claude/skills//SKILL.md.
- Distinctive: line 37
If the inventory is empty, say so explicitly and skip Step 5 (deduplication) entirely for the whole run.
- Distinctive: line 64
Never narrow the worklist on your own: no sampling, no "the rest look fine", no stopping once the edits feel sufficient.
- Very specific: line 69
When a worklist path does not exist, author it.
- Distinctive: line 90
Only sections that earn their place: what is non-obvious, what surprises a newcomer, what to reuse instead of rewriting, how to add a new …
- Distinctive: line 120
Do not make low-priority, subjective, or stylistic changes, and skip anything ambiguous.
- Distinctive: line 131
Delete only when the skill clearly and fully owns that topic.
- Distinctive: line 135
Never delete content that no skill covers.
- Distinctive: line 136
If the Step 1 inventory was empty, skip this step entirely.
- Very specific: line 140
Packmind standards regions are untouchable: Never modify content inside sections delimited by the markers <!-- start: Packmind standards …
- Distinctive: line 158
every deletion made for deduplication, naming the skill that justified it, so a reviewer can check none of them went too far.
- Very specific: line 160
every package skipped as too thin to document, with its src/ file count.
- Distinctive: line 165
Reconcile against the worklist: Every path printed in Step 2 must appear in this summary, as created, edited, unchanged, or skipped — the …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill 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 Improver
Audit and improve the CLAUDE.md files this run owns, create the ones that are missing, then report
what changed.
You are running NON-INTERACTIVELY in CI: no human is available to confirm anything. Never ask a question — either apply a change that is clearly correct, or skip it and say so in the final summary. Apply fixes directly to the files as you go.
These are standing instructions for the whole run, not a one-time checklist.
Step 1 — Build the skill inventory
Before touching any CLAUDE.md, list every skill available in this repository.
Use Glob with the pattern **/.claude/skills/**/SKILL.md. Match at any depth: a .claude/skills
directory can itself live in a sub-directory, and skills may be nested. Ignore any hit under
node_modules. Ignore this skill (improve-claude-md) — it is CI tooling, not a
developer convention, so it never justifies deleting anything.
For each remaining SKILL.md, collect only the YAML frontmatter name and description. Do not
read skill bodies at this stage — inlining them wastes the context you need for the audit itself.
Then state the count out loud, for example Loaded frontmatter for 10 skill(s), and list the paths.
This line matters: a regression that silently empties the inventory (a gitignored .claude/skills, a
narrowed checkout, a changed glob) must be visible in the run log instead of quietly degrading into
"skip deduplication".
If the inventory is empty, say so explicitly and skip Step 5 (deduplication) entirely for the whole run.
Step 2 — Read the worklist
Read tmp/claude-md-worklist.txt. It holds one repository-relative CLAUDE.md path per line, and
it is authoritative: the workflow resolved it for this repository, and the scope differs between
repositories on purpose. In the open-source repository it is every CLAUDE.md in the tree; in the
proprietary fork it is only the packages that do not exist upstream, because every shared file is
owned by the other repository's run of this same workflow. Editing a file outside the worklist
diverges it between the two repositories and conflicts on the next sync.
So: do not glob for CLAUDE.md files, and never add a path of your own. If the worklist is
missing or empty, stop immediately — do not fall back to a glob — and end the run with a single line
starting INCOMPLETE RUN: that says the worklist could not be read. A silent full-tree fallback is
exactly the failure this file exists to prevent.
Print the paths, numbered, followed by the count — for example Worklist: 8 file(s). This printed
list is the only record of what the run was supposed to cover, so print it in full before editing
anything.
Some paths may not exist yet. That is intentional: a listed path with no file behind it is a package
whose CLAUDE.md has to be created (Step 3).
Process the files one at a time, in worklist order. Announce each path as [n/total] <path>
before you start on it, so the CI log shows progress and a run that stops early is visible at a glance.
Never narrow the worklist on your own: no sampling, no "the rest look fine", no stopping once the edits feel sufficient. Every file in the list gets its own pass through Steps 3-5.
Step 3 — Create a missing CLAUDE.md
When a worklist path does not exist, author it. Its directory is a package root — call it
packages/<pkg>/.
First, check the package is worth documenting. Glob packages/<pkg>/src/**/*. If it holds two
files or fewer, the package is a stub barrel with nothing to say: skip it, create nothing, and
record it in the Step 6 report as deliberately skipped with its file count. A CLAUDE.md that only
restates the package name is worse than no file at all.
Otherwise read enough of the package to describe it honestly — never guess:
project.json(the Nx project name, and theenv:*tag) andpackage.jsonREADME.md, if there is onesrc/index.ts(the public barrel) andsrc/<Name>Hexa.ts(the entry point)- the shape of
src/application/,src/domain/,src/infra/,src/nest-api/,test/— whichever are present
Then Write the file, matching the house style of the packages that already have one.
packages/git/CLAUDE.md and packages/llm/CLAUDE.md are the two best models — read one before you
start writing:
# <Name> Packageheading, then one or two sentences on what the package owns.- Only sections that earn their place: what is non-obvious, what surprises a newcomer, what to reuse instead of rewriting, how to add a new case to an existing switch or factory. Concrete file paths and type names, not adjectives.
- Do not restate the shared conventions. The generic package layout, the
env:*tags and import boundaries, the/testsubpath rule and branded IDs are all inpackages/CLAUDE.md— a package file that repeats them is duplicate content, which Step 5 would delete anyway. - Aim for 30-70 lines, in line with the existing package docs.
Close with the pointer line every sibling uses, verbatim:
Shared package conventions (env tags, layout, /test subpath, branded IDs): [../CLAUDE.md](../CLAUDE.md)- Respect the repository's own standards. In the proprietary fork,
.claude/rules/packmind/standard-packmind-proprietary.mdforbids importing from@packmind/editions— never write an example that does.
Then put the new file through Steps 4 and 5 like any other, so bootstrapped and pre-existing files meet the same bar.
Step 4 — Audit each file
For each CLAUDE.md, use the claude-md-improver skill (from the claude-md-management plugin,
installed by the workflow) to audit and improve that file.
Apply only HIGH and MEDIUM priority fixes that have a clear, unambiguous positive impact — for example:
- outdated or incorrect commands
- broken links or wrong file paths
- stale structure or architecture references
Do not make low-priority, subjective, or stylistic changes, and skip anything ambiguous. When in doubt, leave the text alone and note it in the summary.
Step 5 — Deduplicate against skills
CLAUDE.md must not restate what a skill already carries. Any instruction, procedure, convention, or
example in the file that is already covered by one of the skills from Step 1 is duplicate content:
delete it outright, leaving no pointer or cross-reference in its place.
Rules:
- Delete only when the skill clearly and fully owns that topic. If a skill covers the topic only
partially, or you are in any doubt, leave the
CLAUDE.mdtext untouched. - You may read a
SKILL.mdbody when its frontmatter description alone cannot settle whether coverage is full. Read it only for that decision. - Never delete content that no skill covers.
- If the Step 1 inventory was empty, skip this step entirely.
Guardrails
Packmind standards regions are untouchable. Never modify content inside sections delimited by the
markers <!-- start: Packmind standards --> and <!-- end: Packmind standards -->. Leave those
regions byte-for-byte unchanged and only edit content outside them. This outranks the deduplication
rules above, even if a skill appears to cover that content.
The worklist bounds every write. The only permitted writes are Edit on a CLAUDE.md that is on
the worklist, and Write to create a CLAUDE.md at a path that is on the worklist. Never delete
or rename any file, never write anywhere else — not to a CLAUDE.md outside the worklist, not to any
other file — and never move content from a CLAUDE.md into a new skill or doc.
Step 6 — Report
End the run with a summary the pull-request reviewer can scan:
- the skill count and the worklist count from Steps 1-2;
- one line per file you created, saying in a sentence what the package does — these are new files with no diff to compare against, so this is the reviewer's only summary of them;
- one line per file you edited, with what you fixed;
- every deletion made for deduplication, naming the skill that justified it, so a reviewer can check none of them went too far;
- every package skipped as too thin to document, with its
src/file count; - anything you deliberately skipped as ambiguous.
Files you left unchanged need no more than a single closing line listing them.
Reconcile against the worklist. Every path printed in Step 2 must appear in this summary, as
created, edited, unchanged, or skipped — the counts have to add up. If any file went unaudited for
any reason (you ran out of room, a read failed, you lost track), do not paper over it: end the
report with a line
that starts INCOMPLETE RUN: and names every file you did not audit. A silently partial run is worse
than a loudly partial one, because the pull request it produces looks like a full audit.
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.

