Capture durable lessons from debugging, user corrections, missing capabilities, and repeated workflow friction so future sessions avoid the same mistakes. Use this skill when a non-obvious failure is diagnosed, the user corrects or updates the agent, a workaround or project convention is discovered, a capability is missing, a solved issue should be promoted into shared memory, or you should review prior learnings before changing a known-problem area. Do not use for trivial typos, expected failures, straightforward retries, or one-off noise with no reusable lesson.
Capture, review, promote, and extract durable lessons so future sessions avoid repeating the same mistakes.
Use this skill for reusable learning, not for every bump in the road.
A good entry usually has at least one of these properties:
Do not log routine noise such as obvious typos, expected validation failures, or errors that were solved immediately with no transferable lesson.
There are two different roots in this skill:
Skill root — where bundled resources live:
scripts/...references/...assets/...Workspace root — where the project or active workspace lives:
.learnings/LEARNINGS.md.learnings/ERRORS.md.learnings/FEATURE_REQUESTS.mdCLAUDE.md, AGENTS.md, .github/copilot-instructions.md, SOUL.md, TOOLS.mdNever write learnings into the installed skill directory. Always target the workspace root.
| Situation | What to do |
|---|---|
| User corrects you or updates a fact | Log a learning |
| Non-obvious command / API / tool failure | Log an error |
| User asks for a missing capability | Log a feature request |
| You discover a reusable workaround or convention | Log a learning |
| A pattern keeps recurring | Search related entries, link with See Also, and consider promotion |
| A lesson is broadly applicable or repeated | Promote it into project memory |
| A resolved, general pattern could help other projects | Extract a new skill |
Before reading or writing .learnings/, determine WORKSPACE_ROOT.
Good defaults:
If unsure, prefer the directory containing .git, AGENTS.md, CLAUDE.md, or the user's active project files.
.learnings/ if neededUse the helper instead of creating files manually:
python3 scripts/learnings.py init --root /absolute/path/to/workspace
This creates:
.learnings/LEARNINGS.md.learnings/ERRORS.md.learnings/FEATURE_REQUESTS.mdReview first when:
Use the helper:
python3 scripts/learnings.py status --root /absolute/path/to/workspace
python3 scripts/learnings.py search --root /absolute/path/to/workspace --query "pnpm" --limit 5
Always search for related entries before creating a new one.
python3 scripts/learnings.py search --root /absolute/path/to/workspace --query "keyword or pattern" --limit 10
If a similar entry already exists:
See AlsoPattern-Key for recurring issuesUse for corrections, knowledge gaps, best practices, and durable conventions.
python3 scripts/learnings.py log-learning \
--root /absolute/path/to/workspace \
--category correction \
--priority high \
--area backend \
--summary "Project uses pnpm workspaces, not npm" \
--details "Attempted npm install. Lockfile and workspace config showed pnpm." \
--suggested-action "Check for pnpm-lock.yaml before assuming npm." \
--source error \
--related-files pnpm-lock.yaml pnpm-workspace.yaml \
--tags package-manager,pnpm
Use for non-obvious failures, exceptions, or tool/API issues worth remembering.
python3 scripts/learnings.py log-error \
--root /absolute/path/to/workspace \
--name docker-build \
--priority high \
--area infra \
--summary "Docker build failed on Apple Silicon due to platform mismatch" \
--error-text "error: failed to solve: no match for platform linux/arm64" \
--context "docker build -t myapp . on Apple Silicon" \
--suggested-fix "Retry with --platform linux/amd64 or update base image" \
--reproducible yes \
--related-files Dockerfile
Use when the user wants a missing capability or a recurring friction point should become a feature.
python3 scripts/learnings.py log-feature \
--root /absolute/path/to/workspace \
--capability export-to-csv \
--priority medium \
--area backend \
--summary "User needs report export to CSV" \
--user-context "Needed for sharing weekly reports with non-technical stakeholders" \
--complexity-estimate simple \
--suggested-implementation "Add --output csv alongside existing JSON output" \
--frequency recurring \
--related-features analyze-command,json-output
Promote when the learning is broad, repeated, or something any future contributor should know.
Common targets:
CLAUDE.md — durable project facts and conventionsAGENTS.md — workflow rules and automation guidance.github/copilot-instructions.md — shared Copilot contextSOUL.md — behavioural principles in OpenClaw workspacesTOOLS.md — tool-specific gotchas in OpenClaw workspacesWrite promotions as short prevention rules, not long incident write-ups.
Example:
pnpm install in this repo; it is a pnpm workspace.”When a learning is promoted, update the original entry’s status to promoted or promoted_to_skill and record the destination.
Extract a new skill when the solution is:
Use the helper:
python3 scripts/extract_skill.py \
--root /absolute/path/to/workspace \
docker-build-fixes \
--description "Fix recurring Docker build and platform mismatch issues. Use when Docker builds fail due to architecture, base image, or runtime packaging problems." \
--from-learning-id LRN-20260313-001 \
--scaffold-evals
Or keep the old entry point if existing automation already calls it:
bash scripts/extract-skill.sh docker-build-fixes --root /absolute/path/to/workspace --dry-run
Use these only when needed:
references/entry-formats.md — full field schemas and manual templatesreferences/examples.md — concrete examples of good entries and promotionsreferences/promotion-and-extraction.md — promotion rules and skill extraction criteriareferences/platform-setup.md — Claude Code, Codex, Copilot, and OpenClaw setup notesreferences/evaluation.md — trigger/output eval plan for this skillreferences/openclaw-integration.md — deeper OpenClaw workflow guidanceHook helpers are intentionally optional.
Available hook scripts:
scripts/activator.sh — lightweight reminder at prompt startscripts/error-detector.sh — lightweight error reminder after failed Bash-like commandsHook configuration examples live in references/platform-setup.md.
A mature use of this skill has a loop:
capture → dedupe → promote → extract → evaluate
That means:
evals/