Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Extract reusable patterns from recent sessions, propose framework improvements, and (with approval) update the framework docs. This is the dogfooding meta-loop — the project learns from its own usage. Use when the user says "learn from this", "what did we learn", "extract lessons", "update the framework", "add this to steering rules", or after completing any substantial feature or debugging session.
.claude/skills/pratiyush-self-learn/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 89% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 31% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 9% | 0% |
Closes the Dogfooding Meta-Loop from the Open Source Framework v4.1.
Every non-trivial session on a framework-driven project produces lessons: patterns that worked, patterns that failed, gotchas hit, decisions made. Most tools let those lessons evaporate. This skill captures them, runs a quality gate, and proposes framework updates.
It is the reason the framework evolves. Framework v4.0 → v4.1 was a self-learn pass that folded llmwiki's learnings back into the parent Open Source Framework.
Do NOT invoke when:
raw/sessions/<project>/<latest>.md or Obsidian session notes)_progress.md to know the current phasetasks.md to see what shippeddocs/framework.md to know the current framework stateCHANGELOG.md for what's already been logged| Destination | When to update it | |---|---| | .kiro/steering/<rule>.md (project-specific) | 2+ data points in this one project | | docs/framework.md in the project repo | Learning applies to all projects of this type | | .framework/Framework.md (personal Obsidian copy) | Cross-cutting rule that applies to all open-source projects | | CHANGELOG.md | Every update gets logged as framework version bump | | New skill under .claude/skills/ | Repeatable workflow that warrants its own invocation | | New phase in the pipeline | If the learning is about a missing step |
CHANGELOG.md with a ## vX.Y entry describing what was learned_progress.md in the Learning Log section## Self-learn report: <project> / <date>
### Sources consulted
- <file 1>
- <file 2>
### Candidate lessons (scored)
| # | Lesson | Generality | Confidence | Destination |
|---|---|---|---|---|
| 1 | <lesson> | project \| type \| framework | 1 \| 2 \| 3+ | <file> |
| 2 | ... | ... | ... | ... |
### Proposed updates
**1. .kiro/steering/page-format.md — add rule**+ ## New rule from self-learn + <content>
**2. docs/framework.md — new section under Phase 5.5**+ ### New QA check from self-learn + <content>
### Approval needed
Apply all proposed updates? (y/n)docs/framework.md. Update CHANGELOG.md in sync..llmwikiignore rule after hitting sessions containing contract data that shouldn't enter the wiki.<60 min) after the converter read a file mid-write and produced a truncated markdown..kiro/steering/contributing-rules.md after a first-run slip.Each of these started as a single session observation and got promoted to a framework rule after the second or third occurrence.
project-maintainer — runs the phase gates that surface the "we hit this 3 times" patterns.llmwiki-query — to look back at past sessions and count occurrences of a pattern.llmwiki-sync — to make sure the latest session is available before running self-learn.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | fail→pass | 9,784 | 5,500 | -44% | 1 | 1 | 0% | 1,424 | 2,413 | +69% | 0 | 0 | — |
case-22 | pass→pass | 11,781 | 4,497 | -62% | 1 | 1 | 0% | 1,675 | 2,276 | +36% | 0 | 0 | — |
case-01 | fail→fail | 15,894 | 29,664 | +87% | 1 | 1 | 0% | 2,401 | 1,821 | -24% | 0 | 0 | — |
case-02 | fail→fail | 13,334 | 2,466 | -82% | 1 | 1 | 0% | 2,014 | 1,930 | -4% | 0 | 0 | — |
case-03 | fail→fail | 20,981 | 4,835 | -77% | 1 | 1 | 0% | 2,721 | 1,789 | -34% | 0 | 0 | — |
case-04 | fail→pass | 7,262 | 3,196 | -56% | 1 | 1 | 0% | 1,067 | 2,021 | +89% | 0 | 0 | — |
case-05 | fail→fail | 6,911 | 3,397 | -51% | 1 | 1 | 0% | 1,001 | 1,942 | +94% | 0 | 0 | — |
case-06 | pass→pass | 11,164 | 9,099 | -18% | 1 | 1 | 0% | 2,092 | 2,973 | +42% | 0 | 0 | — |
case-08 | pass→pass | 7,464 | 4,463 | -40% | 1 | 1 | 0% | 1,123 | 2,360 | +110% | 0 | 0 | — |
case-09 | pass→pass | 8,633 | 4,679 | -46% | 1 | 1 | 0% | 1,396 | 2,372 | +70% | 0 | 0 | — |
case-10 | fail→pass | 13,805 | 3,289 | -76% | 1 | 1 | 0% | 2,118 | 2,123 | +0% | 0 | 0 | — |
case-11 | pass→pass | 10,068 | 6,298 | -37% | 1 | 1 | 0% | 1,430 | 2,417 | +69% | 0 | 0 | — |
case-12 | fail→pass | 15,235 | 8,067 | -47% | 1 | 1 | 0% | 2,111 | 2,757 | +31% | 0 | 0 | — |
case-13 | fail→pass | 15,284 | 5,332 | -65% | 1 | 1 | 0% | 2,300 | 2,496 | +9% | 0 | 0 | — |
case-14 | fail→pass | 7,629 | 3,734 | -51% | 1 | 1 | 0% | 1,259 | 2,218 | +76% | 0 | 0 | — |
case-15 | fail→fail | 10,788 | 3,112 | -71% | 1 | 1 | 0% | 1,645 | 2,039 | +24% | 0 | 0 | — |
case-16 | pass→pass | 11,127 | 8,042 | -28% | 1 | 1 | 0% | 1,711 | 2,929 | +71% | 0 | 0 | — |
case-17 | fail→fail | 10,161 | 3,355 | -67% | 1 | 1 | 0% | 1,583 | 2,060 | +30% | 0 | 0 | — |
case-18 | fail→pass | 11,753 | 3,004 | -74% | 1 | 1 | 0% | 1,717 | 2,028 | +18% | 0 | 0 | — |
case-19 | fail→pass | 12,656 | 4,777 | -62% | 1 | 1 | 0% | 1,884 | 2,275 | +21% | 0 | 0 | — |
case-20 | fail→pass | 12,807 | 5,604 | -56% | 1 | 1 | 0% | 1,785 | 2,457 | +38% | 0 | 0 | — |
case-21 | fail→pass | 6,556 | 2,339 | -64% | 1 | 1 | 0% | 894 | 1,811 | +103% | 0 | 0 | — |
case-23 | pass→pass | 8,499 | 5,357 | -37% | 1 | 1 | 0% | 1,157 | 2,324 | +101% | 0 | 0 | — |
case-24 | pass→pass | 9,259 | 3,840 | -59% | 1 | 1 | 0% | 1,227 | 2,117 | +73% | 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. 24 cases were attempted, and 22 counted toward the lift figure. The other 2 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 +42 percentage points is the difference between those two pass rates over the 22 comparable cases. 2 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.