learn
Skill7 starsChanged 22 days agoMITView on GitHub
Run when doctor prints `NOTE learn`: turns gaps recurring across /verify-ddd-tdd verdicts into a rule, audit criterion or mechanical check. `memory` audits the auto-memory instead.
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 repository10 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- askSkill
- business-specSkill
- implement-tddSkill
- kit-initSkill
- knowledge-mergeSkill
- knowledge-syncSkill
- plan-implementationSkill
- quality-reportSkill
- verify-ddd-tddSkill
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 18
Run after /clear, outside a batch: one axis at a time keeps context small.
- Distinctive: line 34
Keep about 3 motifs per axis, most batches first.
- Distinctive: line 48
Prefer a mechanical check when both fit: prose is read, a check fails.
- Distinctive: line 54
Read where the motif lands: grep the key term in the destination, then that section.
- Very specific: line 63
Every kept motif also retires what it makes useless.
“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
Learn from audit verdicts
Gap fixed inside its batch leaves no trace: next batch repeats it, auditor finds it again. Turn recurring gaps into what prevents them. Writes only what user confirms, only in repo — never memory, except in memory mode, which writes memory only.
Argument memory (mémoire when language.docs is fr) → skip §1-6, follow Memory mode below.
Few motifs, each proven, and destinations that do not only grow: a line no one can check is read by every later agent for nothing.
$ARGUMENTS
Run after /clear, outside a batch: one axis at a time keeps context small.
1. Backlog
cctoolkit learn-candidates — pending gaps per axis, batch count, already refused motifs. Argument names an axis → that one only. Otherwise take axes with ≥ 3 batches, most batches first. The end-of-batch nudge (--count) fires at 2 batches, one early: an axis it names may still hold no motif — say so, stop.
2. One axis
cctoolkit learn-candidates --axis <Axis> — pending rows, oldest first.
Group rows into motifs: same root cause, whatever wording. Keep a motif only if it passes all three filters; otherwise drop it, say which filter in one line:
- Recurrence — spans ≥ 3 distinct batches (session ids).
- Prevention — the line you would write names something an agent or a check can apply, and would have flagged each row of the motif before audit. Generic advice ("handle null", "check the boundary") prevents nothing:
Correctnessrows are bugs, each its own, and rarely form a motif. - New — not listed as refused, not already prevented by an existing rule, gate or test.
Keep about 3 motifs per axis, most batches first; the rest wait — a real motif comes back with the next batches.
3. Destination
Pick the narrowest owner. One motif → one destination.
| Motif | Destination |
| Layer convention (naming, placement, base class, pitfall) | .claude/rules/<layer>.md — domain, application-cqrs, infrastructure-ef, webapi-endpoints, tests, csharp |
| Sheet written incomplete (ids unclassified, anchors missing, assumptions untraced) | kit: skills/plan-implementation/ template or checklist |
| Mistake the coding agents keep making | kit: skills/implement-tdd/references/common-rules.md |
| Auditor misses or misjudges it | kit: axis table of skills/verify-ddd-tdd/SKILL.md |
| Checkable without judgement | ArchitectureTests, or kit: cctoolkit pre-audit gate, hook + case under evals/cases/ |
Prefer a mechanical check when both fit: prose is read, a check fails.
Kit destinations are never edited in place. cctoolkit root is the plugin cache, replaced on every update. A kit change is written in a checkout of the toolkit repo — its path asked once with AskUserQuestion — then flows back through the plugin update (INSTALL.md § Updating). No checkout → hand the user the exact patch (file, old line, new line) instead of writing.
4. Reconcile
Read where the motif lands: grep the key term in the destination, then that section. One status per motif:
| Status | When | Write |
covered | Destination already says it | Line read, not applied: mechanical check if one fits, else drop |
refines | A close line exists | Rewrite that line, never add a second |
replaces | An existing line caused the gaps, or contradicts the motif | Replace that line |
new | Nothing close | Add one line |
Every kept motif also retires what it makes useless. In the section just read, flag as retire:
- prose line a check now enforces — the motif's own check, or an existing one (
cctoolkit pre-audit, hook,ArchitectureTests); - line the motif's
refinesorreplacesleaves duplicated or contradicted.
Quote the exact line. retire comes only from these two cases, not from sweeping a file for lines that merely look old.
5. Confirm
One AskUserQuestion per axis, multiSelect: true, one option per motif and per retire: label ≤ 5 words; description = batch count + status + destination + exact line added, and exact line removed for replaces / retire. Unselected option = refused.
6. Write and mark
- Accepted options: apply the status — add, rewrite, replace or delete the line. Frozen literals verbatim (
.claude/rules/markdown-output.md). Hook or tool touched → add its eval case, runcctoolkit evals. - Each refused motif:
cctoolkit learn-candidates --refuse "<motif>". Refusedretire:--refuse "keep: <line>". - Axis done:
cctoolkit learn-candidates --treat-axis <Axis>— every pending row of the axis, kept, refused or dropped.
Output
Prose in the language.docs of .claude/kit.config.json. Per axis, one table, nothing else:
| Motif | Batches | Status | Decision | Destination | Δ lines |
|-------|---------|--------|----------|-------------|---------|
| DDD ids left unclassified in the sheet | 9 | new | added | `cctoolkit pre-audit` | +1 |
| Classify the DDD ids (prose) | — | retire | deleted | `skills/plan-implementation/SKILL.md` | −1 |
| … | 3 | refines | refused | — | 0 |End with net Δ lines of the axis, then remaining backlog line from --count, or Backlog empty.
Memory mode
A stale entry is worse than none: recalled, then followed. Only the description and the index line are read at recall — those are what must stay true.
- Mechanical —
cctoolkit learn-candidates --memory: memory folder path, file indexed twice, not indexed, indexed but gone, frontmatter incomplete, cited repo path missing. Each line is a lead, not a verdict: a path from another repository, or a plan removed once its feature shipped, can leave a still-true decision. - Judgement —
MEMORY.mdis already in context: compare index lines for entries on one subject stating different states (frozen then unfrozen, rule then reversal). Read whole only the entries a step-1 line or such a pair names. Symbol or decision cited →graphify explainor onegrep -n, not a sweep.userandfeedbackentries are preferences: retire one only on contradiction with a later entry, never because code moved. - Status per entry, same spirit as §4:
refines(description or index line no longer matches the body or the code),merges(two entries, one subject — keep the later state),retire(decision reversed, subject gone),index(mechanical fix: index line added, doubled or dead one removed). Untouched entries: not listed. - Confirm — one
AskUserQuestion,multiSelect: true, one option per entry; description = defect + evidence (path:line, command output) + exact new description ordeleted. Mechanicalindexfixes grouped in one option. - Write — memory folder only: edit or delete the file, then its
MEMORY.mdline in the same message. Refused option:cctoolkit learn-candidates --refuse "keep: <file>", and never propose it again while the refusal stands.
Output, prose in the language.docs of .claude/kit.config.json, one table:
| Entry | Defect | Status | Decision |
|-------|--------|--------|----------|
| `project_sdk_no_key_value_read.md` | indexed twice, description on the frozen state | refines | applied |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.

