learn
Skill0 starsChanged 41 days agoMITView on GitHub
Self-improvement loop for ClaudeCodeTidy. Learns from recorded tidy runs and concrete CLAUDE.md instances, then applies evidence-backed improvements to the tidy skill itself — bumping the version and CHANGELOG. Use after a tidy run surfaced friction, or when asked to improve/reflect on groom.
- Commits and pushes
195 other projects use a version of this.
Adopted by
Most recently taken up by
- Doist/todoist-aitheir own version, first seen Nov 9, 2026
- Doist/todoist-clitheir own version, first seen Nov 8, 2026
- HughYau/AcademicForgetheir own version, first seen Nov 8, 2026
- dimsedra/skillstheir own version, first seen Nov 8, 2026
- rajanrx/skillstheir own version, first seen Nov 8, 2026
- edwinidrus/dragonhoardtheir own version, first seen Nov 8, 2026
Used with
Projects with it also use add-anydoc, add-clidash and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
TomGranotSkilladd-anydoc
Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when agents need to read attached Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, or text-based PDF files without uploading them to a hosted parser.
Also in 5 projects that use this
TomGranotSkilladd-clidash
Add clidash — a zero-dependency, read-only web dashboard that derives its tabs and tables at runtime from any CLI that lists resources as JSON. Ships pre-wired for NanoClaw's ncl CLI (agent groups, sessions, channels, users, roles), plus message-activity charts, a log tail, and a read-only file viewer for group skills/CLAUDE.md/profiles.
Also in 5 projects that use this
seek888Skillopen-gstack-browser
Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in. Opens a visible browser window where you can watch every action in real time. The sidebar shows a live activity feed and chat. Anti-bot stealth built in. Use when asked to "open gstack browser", "launch browser", "connect chrome", "open chrome", "real browser", "launch chrome", "side panel", or "control my browser". Voice triggers (speech-to-text aliases): "show me the browser".
Also in 11 projects that use this
Saqlain-811Skillios-sync
Regenerate the iOS debug bridge against the latest upstream gstack templates. (gstack)
Also in 6 projects that use this
MicrosoftSkilladd-codex
Use Codex (CLI + AppServer) as the full agent provider — planning, tool orchestration, native compaction, MCP tools, session resume — in place of the Claude Agent SDK. ChatGPT subscription or OPENAI_API_KEY. Per-group via agent_provider. Distinct from using OpenAI as an MCP tool (where Claude remains the planner).
Also in 6 projects that use this
MicrosoftSkilladd-deltachat
Add DeltaChat channel integration via @deltachat/stdio-rpc-server. Native adapter — no Chat SDK bridge. Email-based messaging with end-to-end encryption.
Also in 6 projects that use this
- +5 more from TomGranot
- +1 more from microsoft
Other versions195 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 195
- garrytan/gstack★ 141ksame name
- rohitg00/ai-engineering-from-scratch★ 78ksame name
- gavrielc/nanoclaw★ 31ksame name
- nanocoai/nanoclaw★ 31ksame name
- qwibitai/nanoclaw★ 31ksame name
- tigerless-labs/autoharness★ 11ksame name
- tw93/claude-health★ 7.5ksame name
- tw93/Waza★ 7.5ksame name
- nykooi1/vibe-wise★ 3.5ksame name
- HughYau/AcademicForge★ 2.6ksame name
185 more not listed
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 repositoryOne other file it gives its agents.
- groomSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 170 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 17
Read all of: ${CLAUDE_PLUGIN_ROOT}/skills/groom/SKILL.md, this skill's own SKILL.md, ${CLAUDE_PLUGIN_ROOT}/README.md, …
- Distinctive: line 22
If invoked right after a tidy run in this session: the live experience (user amendments, questions, friction) — even before it's recorded.
- Distinctive: line 23
If given a CLAUDE.md path: dry-run the tidy skill's analyze phase against it and note every point where the current instructions are …
- Distinctive: line 27
If there is no evidence, report that and stop: Never invent improvements from first principles.
- Very specific: line 66
Keep the plugin manifest in sync: Update .claude-plugin/plugin.json's version field to match the bump in sub-step 2, in the same pass.
“Common” is measured: kept by at least 6 in 10 of the 170 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/claudecodetidy:learn
Learn from concrete tidy experience and fold the lessons back into ${CLAUDE_PLUGIN_ROOT}/skills/groom/SKILL.md. Every change must be traceable to evidence from a real run or instance — no evidence, no change.
Argument
Optional: a path to a specific CLAUDE.md to study as a fresh instance (analysis only, no edits to it), or a date, target name, or filename identifying one or more logs in ${CLAUDE_PLUGIN_DATA}/RUNS-archive/ to (re)process. Default: every log in ${CLAUDE_PLUGIN_DATA}/RUNS-archive/ marked **Processed:** no, plus the current session's tidy run if one just happened.
Step 0 — Load the suite
Read all of: ${CLAUDE_PLUGIN_ROOT}/skills/groom/SKILL.md, this skill's own SKILL.md, ${CLAUDE_PLUGIN_ROOT}/README.md, ${CLAUDE_PLUGIN_ROOT}/CHANGELOG.md, every log in ${CLAUDE_PLUGIN_DATA}/RUNS-archive/, and the hygiene rules (~/.claude/rules/claude-md-hygiene.md, or the "CLAUDE.md hygiene" section of ~/.claude/CLAUDE.md on a 1.0.x layout). Note the current suite version.
Step 1 — Gather evidence
- Unprocessed run logs: every file in
${CLAUDE_PLUGIN_DATA}/RUNS-archive/not marked**Processed:** yes. - If invoked right after a tidy run in this session: the live experience (user amendments, questions, friction) — even before it's recorded.
- If given a CLAUDE.md path: dry-run the tidy skill's analyze phase against it and note every point where the current instructions are ambiguous, silent, or force a question.
- An ad-hoc lesson described directly in the invoking conversation — not tied to any recorded run or dry-run, e.g. feedback about CLAUDE.md quality or suite design raised in an ordinary conversation. The conversation itself (and, where one exists, a doc such as a plan/backlog file) stands in as the citation in place of a run log.
- Whether new evidence corroborates or contradicts an existing
provisionallesson (logs markedProcessed: yes (vX.Y.Z, provisional)— see Step 5). A contradiction is itself top-priority evidence to revisit or demote that lesson, cited the same way a fresh lesson would be; a second, independent corroboration promotes it.
If there is no evidence, report that and stop. Never invent improvements from first principles.
Step 2 — Extract lessons
Mine the evidence for signals, strongest first:
- User feedback tagged
[general …]or[general?]in the run log → the tidy run already judged it generalizable while the context was fresh; verify the tag (don't trust it blindly), then treat it as the highest-priority lesson.[repo-specific]items are only suggested to that repo, never folded into the suite. - User overrode a verdict → the classification rules mis-sorted a real block; what distinguishing feature did they see that the rules miss?
- The skill had to ask a question the instructions should have answered → a gap to close.
- Apply-phase friction or error (blocked command, missing destination, sync conflict) → a preflight or apply step to harden.
- Content that fit no verdict or no destination → the taxonomy needs extending.
- An existing instruction in
groom/SKILL.mdnever triggered across the processed run logs — never cited as the reason a CHALLENGE/DELETE/RELOCATE fired, never referenced in feedback — is a pruning candidate. Requires the same evidence discipline as an addition: cite which logs were checked and found the instruction inert before proposing its removal in Step 5. For a class-specific instruction (skills/memory/user-level tests), only runs whose Target classes field covers that class count as evidence either way — a memory test can't be judged inert from CLAUDE.md-only runs.
Each candidate lesson must pass all three tests, or be discarded (and reported as discarded, with the reason):
- Generalizable — would improve tidy runs in other repos, not just this one.
- Traceable — cites the specific run log or instance that motivated it.
- Correctly homed — see Step 3.
Step 3 — Route each lesson to its home
- Tidy mechanics (scanning, verdict tests, apply order, recording) →
groom/SKILL.md. - Reflection mechanics (evidence gathering, lesson tests, this workflow) → this skill's own
SKILL.md— the loop applies to itself. - What "good CLAUDE.md content" means (the hygiene rules themselves) →
~/.claude/rules/claude-md-hygiene.md(on a 1.0.x layout, the "CLAUDE.md hygiene" section of~/.claude/CLAUDE.md). Never fork a private copy of those rules into the skill; propose the global edit and get explicit user confirmation, since that rulebook governs every session. - Repo-specific quirks → that repo's own CLAUDE.md (suggest it to the user); never encode them into the general skill.
Step 4 — Invariant gate
These invariants (documented in docs/reference.md → Invariants) may never be weakened or removed autonomously: the Step-4 reversibility gate (autonomous edits only with per-iteration revertibility; confirm-first otherwise; user-only decisions always stop), the no-loss guarantee, evidence-before-DELETE, the public-repo PRIMARY CHECK, hygiene rules single-sourced at runtime in the global rules file (the plugin's one-time bootstrap template is not an exception — see invariant 5 in docs/reference.md), and no-evidence-no-change (this skill's own). A lesson that would touch one of them is presented to the user with pros/cons and applied only on their explicit approval. Everything else may be applied autonomously.
Step 5 — Apply
- Edit the routed file(s) with minimal diffs — surgical insertions/rewrites, each mapped to one lesson. A pruning lesson (Step 2, signal 6) removes the inert instruction from
groom/SKILL.mdthe same way an addition inserts one — cite the checked logs in the CHANGELOG entry (sub-step 3). - Bump the suite version (one semver for the whole suite, kept identical in both skills' frontmatter):
- PATCH — clarified wording, tightened an existing test, fixed a record format.
- MINOR — new step, new verdict, new signal, new capability.
- MAJOR — changed workflow contract (phases, stop points, this suite's own file layout). Always requires user approval, independent of the invariant gate. What counts as a stop point or as the suite's own file layout is defined in README § Versioning: classify from that definition, not from this line.
- Add a
CHANGELOG.mdentry under the new version: each change on one line, ending with its evidence citation(run: <log filename>), e.g.(run: 20260708-2327-job2026.log). A lesson drawn from a single run log is marked provisional:(provisional, 1 occurrence — run: <log filename>). When a second, independent run corroborates a provisional lesson, promote it: rewrite the original line to drop theprovisionaltag and cite both logs, rather than adding a second line for the same lesson. - Check the README bullet for every SKILL.md step touched this pass — not just "if a documented feature changed" (easy to judge false when the change is subtle). If the edited step has a corresponding README bullet, update it in the same diff: paraphrase behavior and intent, never restate a step's normative test or wording verbatim. Never leave
README.mddescribing superseded behavior. - Mark each consumed log in place, editing its own file in
RUNS-archive/:**Processed:** yes (vX.Y.Z)— or**Processed:** yes (vX.Y.Z, provisional)if any lesson drawn from it was applied provisionally in sub-step 3. When a provisional lesson is later promoted, update the originating log's marker in place to drop, provisional. Logs are never deleted, moved, or batched — each stays permanently at its own path. - Keep the plugin manifest in sync. Update
.claude-plugin/plugin.json'sversionfield to match the bump in sub-step 2, in the same pass. (.claude-plugin/marketplace.jsonhas no per-version field for a same-repo plugin — install always resolves to whateverplugin.jsoncurrently says — so there's nothing there to update.) - Publish the GitHub release, every time — never batch or skip. After the commit lands:
git tag -a vX.Y.Z -m "<one-line summary>" && git push origin vX.Y.Z, thengh release create vX.Y.Z --title "vX.Y.Z — <one-line summary>" --notes-file <the CHANGELOG section just added>. This applies to every version bump this suite makes, not only ones the reflect loop produces — a bump made directly in an ordinary session (executing a plan, answering a user request) still gets its tag and release in the same pass, immediately, not batched up for later. 15 releases went unpublished in a row before this rule existed (v0.10.0–v0.20.1, caught and backfilled 2026-07-09) — the CHANGELOG alone is not a substitute for the release; GitHub's release list is what a repo visitor actually sees.
Step 6 — Report
State: old → new version, each change made with its evidence, lessons discarded (with which test they failed), and any invariant-touching or global-rulebook proposals awaiting the user's decision.
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.

