Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Update project CLAUDE.md with strategic knowledge discovered during this session — or CLAUDE.local.md when the discovery is per-developer/per-checkout and that file already exists. Defers to any project-defined memory-placement guidance instead of overriding it. Use when user says "learn", "save knowledge", "update claude.md", "capture learnings", or at end of significant work sessions. Also used by commit skill for pre-commit knowledge capture.
.claude/skills/umputun-learn/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-18 | ✗→✓ | ▲ Improved | 66% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 73% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 68% | 0% |
Review the current conversation history and identify strategic, reusable project knowledge that should be captured in the project CLAUDE.md file. When the project has opted into Claude Code's three-tier memory convention by creating CLAUDE.local.md, route genuinely personal or environment-specific discoveries there instead.
This skill writes to one of two files in the project root:
CLAUDE.md (project memory, committed, team-shared) — the default destination. Use for architecture, conventions, integration patterns, and any other knowledge useful to the whole team.CLAUDE.local.md (local memory, gitignored personal overrides) — used only when both conditions hold:CLAUDE.local.md already exists in the project (the project has opted into the three-tier memory convention).Counter-example: "We keep credentials in `~/.aws/credentials`" mentions a user-home path but describes a team-wide convention — the path is illustrative, not per-developer state. Such notes belong in project CLAUDE.md. When in doubt about whether a discovery is genuinely personal, default to project CLAUDE.md.
This skill never writes to the user's global ~/.claude/CLAUDE.md (user memory) — only reads it to avoid duplicating cross-project knowledge.
Default for ambiguous cases: project CLAUDE.md. Leaking personal config into a committed file is a loud error that reviewers catch quickly; hiding project-wide knowledge in a gitignored personal file is a silent error that rots over time.
INCLUDE - Strategic discoveries from this session:
EXCLUDE - Session-specific tactical work:
Ask yourself for each discovery:
Before applying the routing rules below, scan the project's root CLAUDE.md, any .claude/rules/*.md files, and the user's global ~/.claude/CLAUDE.md for documented memory-placement guidance — for example, a placement decision tree, an instruction to use a project-specific triage command, or specific destinations beyond CLAUDE.md / CLAUDE.local.md. If such guidance exists, defer to it: follow the documented workflow or place each discovery according to its rules instead of using this skill's defaults. The remaining steps apply only when no such guidance is found.
Read the current content of project CLAUDE.md, CLAUDE.local.md (if present), and the user's global ~/.claude/CLAUDE.md to avoid duplication — including cross-project entries already captured in user memory.
If no new strategic knowledge was discovered during this session:
For each discovery, determine its destination per the Destinations rules: default to project CLAUDE.md, and route to CLAUDE.local.md only when both file-exists and personal-content criteria are met (and the counter-example caveat doesn't apply).
Present discovered knowledge formatted for the chosen destination, tagging each block with its inferred file:
markdown## [Section Name] → project CLAUDE.md - Discovery 1 - Discovery 2
CRITICAL: Use AskUserQuestion tool for granular selection of what to save.
Build options dynamically based on discoveries:
Example with 3 discoveries (2 project, 1 personal):
yamlquestion: "Which knowledge should I save?" options: - label: "All (3 items)" description: "Save all discovered patterns to their inferred destinations" - label: "Service discovery pattern → project CLAUDE.md" description: "Project-wide convention for how modules find each other" - label: "Local toolchain variant → CLAUDE.local.md" description: "Per-checkout build runner override (only relevant on this machine)" - label: "None" description: "Skip saving, nothing worth keeping"
Example with 1 discovery:
yamlquestion: "Save this knowledge?" options: - label: "Yes → project CLAUDE.md" description: "Save: [brief description of the discovery]" - label: "No" description: "Skip saving"
After user selection:
"Other" does NOT redirect a destination to an arbitrary path. To override a routing decision, the user should decline the auto-classification, edit the destination file manually, or re-invoke the skill with explicit instructions.CLAUDE.local.md, or user CLAUDE.md content| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 15,317 | 6,261 | -59% | 1 | 1 | 0% | 2,045 | 2,017 | -1% | 0 | 0 | — |
case-02 | fail→fail | 5,609 | 4,100 | -27% | 1 | 1 | 0% | 305 | 2,036 | +568% | 0 | 0 | — |
case-03 | fail→fail | 11,224 | 4,800 | -57% | 1 | 1 | 0% | 1,728 | 2,018 | +17% | 0 | 0 | — |
case-04 | pass→fail | 11,005 | 6,115 | -44% | 1 | 1 | 0% | 1,669 | 2,710 | +62% | 0 | 0 | — |
case-05 | pass→pass | 4,390 | 4,471 | +2% | 1 | 1 | 0% | 758 | 2,508 | +231% | 0 | 0 | — |
case-06 | pass→fail | 11,149 | 9,852 | -12% | 1 | 1 | 0% | 1,872 | 2,722 | +45% | 0 | 0 | — |
case-07 | pass→pass | 3,169 | 3,377 | +7% | 1 | 1 | 0% | 442 | 2,340 | +429% | 0 | 0 | — |
case-08 | pass→fail | 3,436 | 12,759 | +271% | 1 | 1 | 0% | 463 | 2,727 | +489% | 0 | 0 | — |
case-18 | fail→pass | 9,023 | 3,536 | -61% | 1 | 1 | 0% | 1,408 | 2,341 | +66% | 0 | 0 | — |
case-09 | pass→fail | 4,604 | 2,818 | -39% | 1 | 1 | 0% | 752 | 2,213 | +194% | 0 | 0 | — |
case-10 | pass→pass | 6,839 | 4,591 | -33% | 1 | 1 | 0% | 1,169 | 2,339 | +100% | 0 | 0 | — |
case-11 | fail→fail | 5,499 | 4,961 | -10% | 1 | 1 | 0% | 898 | 2,687 | +199% | 0 | 0 | — |
case-12 | pass→pass | 5,072 | 4,547 | -10% | 1 | 1 | 0% | 884 | 2,546 | +188% | 0 | 0 | — |
case-13 | pass→pass | 3,554 | 2,820 | -21% | 1 | 1 | 0% | 597 | 2,335 | +291% | 0 | 0 | — |
case-14 | fail→pass | 8,718 | 3,497 | -60% | 1 | 1 | 0% | 1,376 | 2,383 | +73% | 0 | 0 | — |
case-15 | fail→fail | 5,683 | 8,215 | +45% | 1 | 1 | 0% | 941 | 2,444 | +160% | 0 | 0 | — |
case-16 | fail→fail | 4,840 | 5,361 | +11% | 1 | 1 | 0% | 783 | 2,668 | +241% | 0 | 0 | — |
case-17 | pass→pass | 8,354 | 2,376 | -72% | 1 | 1 | 0% | 1,311 | 2,124 | +62% | 0 | 0 | — |
case-19 | pass→pass | 9,011 | 9,275 | +3% | 1 | 1 | 0% | 1,429 | 3,408 | +138% | 0 | 0 | — |
case-20 | fail→pass | 7,107 | 8,649 | +22% | 1 | 1 | 0% | 1,034 | 2,572 | +149% | 0 | 0 | — |
case-21 | fail→pass | 8,277 | 3,339 | -60% | 1 | 1 | 0% | 1,228 | 2,344 | +91% | 0 | 0 | — |
case-22 | fail→pass | 9,672 | 2,912 | -70% | 1 | 1 | 0% | 1,331 | 2,235 | +68% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 17 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +5 percentage points is the difference between those two pass rates over the 17 comparable cases. 4 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.