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:
scripts/...references/...assets/....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/共 1 个版本