Self-Improvement Skill
Log learnings and errors to markdown files for continuous improvement. Coding agents can later process these into fixes, and important learnings get promoted to project memory.
First-Use Initialisation
Before logging anything, ensure the .learnings/ directory and files exist in the project or workspace root. If any are missing, create them:
CODEBLOCK0
Never overwrite existing files. This is a no-op if .learnings/ is already initialised.
Do not log secrets, tokens, private keys, environment variables, or full source/config files unless the user explicitly asks for that level of detail. Prefer short summaries or redacted excerpts over raw command output or full transcripts.
If you want automatic reminders or setup assistance, use the opt-in hook workflow described in Hook Integration.
Quick Reference
| Situation | Action |
|---|
| Command/operation fails | Log to INLINECODE2 |
| User corrects you |
Log to
.learnings/LEARNINGS.md with category
correction |
| User wants missing feature | Log to
.learnings/FEATURE_REQUESTS.md |
| API/external tool fails | Log to
.learnings/ERRORS.md with integration details |
| Knowledge was outdated | Log to
.learnings/LEARNINGS.md with category
knowledge_gap |
| Found better approach | Log to
.learnings/LEARNINGS.md with category
best_practice |
| Simplify/Harden recurring patterns | Log/update
.learnings/LEARNINGS.md with
Source: simplify-and-harden and a stable
Pattern-Key |
| Similar to existing entry | Link with
**See Also**, consider priority bump |
| Broadly applicable learning | Promote to
CLAUDE.md,
AGENTS.md, and/or
.github/copilot-instructions.md |
| Workflow improvements | Promote to
AGENTS.md (OpenClaw workspace) |
| Tool gotchas | Promote to
TOOLS.md (OpenClaw workspace) |
| Behavioral patterns | Promote to
SOUL.md (OpenClaw workspace) |
OpenClaw Setup (Recommended)
OpenClaw is the primary platform for this skill. It uses workspace-based prompt injection with automatic skill loading.
Installation
Via ClawdHub (recommended):
CODEBLOCK1
Manual:
CODEBLOCK2
Remade for openclaw from original repo : https://github.com/pskoett/pskoett-ai-skills - https://github.com/pskoett/pskoett-ai-skills/tree/main/skills/self-improvement
Workspace Structure
OpenClaw injects these files into every session:
CODEBLOCK3
Create Learning Files
CODEBLOCK4
Then create the log files (or copy from assets/):
- -
LEARNINGS.md — corrections, knowledge gaps, best practices - INLINECODE23 — command failures, exceptions
- INLINECODE24 — user-requested capabilities
Promotion Targets
When learnings prove broadly applicable, promote them to workspace files:
| Learning Type | Promote To | Example |
|---|
| Behavioral patterns | INLINECODE25 | "Be concise, avoid disclaimers" |
| Workflow improvements |
AGENTS.md | "Spawn sub-agents for long tasks" |
| Tool gotchas |
TOOLS.md | "Git push needs auth configured first" |
Inter-Session Communication
OpenClaw provides tools to share learnings across sessions:
- - sessionslist — View active/recent sessions
- sessionshistory — Read another session's transcript
- sessionssend — Send a learning to another session
- sessionsspawn — Spawn a sub-agent for background work
Use these only in trusted environments and only when the user explicitly wants cross-session sharing. Prefer sending a short sanitized summary and relevant file paths, not raw transcripts, secrets, or full command output.
Optional: Enable Hook
For automatic reminders at session start:
CODEBLOCK5
See references/openclaw-integration.md for complete details.
Generic Setup (Other Agents)
For Claude Code, Codex, Copilot, or other agents, create .learnings/ in the project or workspace root:
CODEBLOCK6
Create the files inline using the headers shown above. Avoid reading templates from the current repo or workspace unless you explicitly trust that path.
Add reference to agent files AGENTS.md, CLAUDE.md, or .github/copilot-instructions.md to remind yourself to log learnings. (this is an alternative to hook-based reminders)
Self-Improvement Workflow
When errors or corrections occur:
- 1. Log to
.learnings/ERRORS.md, LEARNINGS.md, or INLINECODE32 - Review and promote broadly applicable learnings to:
-
CLAUDE.md - project facts and conventions
-
AGENTS.md - workflows and automation
-
.github/copilot-instructions.md - Copilot context
Logging Format
Learning Entry
Append to .learnings/LEARNINGS.md:
CODEBLOCK7
Error Entry
Append to .learnings/ERRORS.md:
CODEBLOCK8
Actual error message or output
CODEBLOCK9
Feature Request Entry
Append to .learnings/FEATURE_REQUESTS.md:
CODEBLOCK10
ID Generation
Format: TYPE-YYYYMMDD-XXX
- - TYPE:
LRN (learning), ERR (error), FEAT (feature) - YYYYMMDD: Current date
- XXX: Sequential number or random 3 chars (e.g.,
001, A7B)
Examples: LRN-20250115-001, ERR-20250115-A3F, INLINECODE47
Resolving Entries
When an issue is fixed, update the entry:
- 1. Change
**Status**: pending → INLINECODE49 - Add resolution block after Metadata:
CODEBLOCK11
Other status values:
- -
in_progress - Actively being worked on - INLINECODE51 - Decided not to address (add reason in Resolution notes)
- INLINECODE52 - Elevated to CLAUDE.md, AGENTS.md, or .github/copilot-instructions.md
Promoting to Project Memory
When a learning is broadly applicable (not a one-off fix), promote it to permanent project memory.
When to Promote
- - Learning applies across multiple files/features
- Knowledge any contributor (human or AI) should know
- Prevents recurring mistakes
- Documents project-specific conventions
Promotion Targets
| Target | What Belongs There |
|---|
| INLINECODE53 | Project facts, conventions, gotchas for all Claude interactions |
| INLINECODE54 |
Agent-specific workflows, tool usage patterns, automation rules |
|
.github/copilot-instructions.md | Project context and conventions for GitHub Copilot |
|
SOUL.md | Behavioral guidelines, communication style, principles (OpenClaw workspace) |
|
TOOLS.md | Tool capabilities, usage patterns, integration gotchas (OpenClaw workspace) |
How to Promote
- 1. Distill the learning into a concise rule or fact
- Add to appropriate section in target file (create file if needed)
- Update original entry:
- Change
**Status**: pending →
**Status**: promoted
- Add
**Promoted**: CLAUDE.md,
AGENTS.md, or INLINECODE62
Promotion Examples
Learning (verbose):
Project uses pnpm workspaces. Attempted npm install but failed.
Lock file is pnpm-lock.yaml. Must use pnpm install.
In CLAUDE.md (concise):
CODEBLOCK12
Learning (verbose):
When modifying API endpoints, must regenerate TypeScript client.
Forgetting this causes type mismatches at runtime.
In AGENTS.md (actionable):
CODEBLOCK13
Recurring Pattern Detection
If logging something similar to an existing entry:
- 1. Search first: INLINECODE66
- Link entries: Add
**See Also**: ERR-20250110-001 in Metadata - Bump priority if issue keeps recurring
- Consider systemic fix: Recurring issues often indicate:
- Missing documentation (→ promote to CLAUDE.md or .github/copilot-instructions.md)
- Missing automation (→ add to AGENTS.md)
- Architectural problem (→ create tech debt ticket)
Simplify & Harden Feed
Use this workflow to ingest recurring patterns from the simplify-and-harden
skill and turn them into durable prompt guidance.
Ingestion Workflow
- 1. Read
simplify_and_harden.learning_loop.candidates from the task summary. - For each candidate, use
pattern_key as the stable dedupe key. - Search
.learnings/LEARNINGS.md for an existing entry with that key:
-
grep -n "Pattern-Key: <pattern_key>" .learnings/LEARNINGS.md
- 4. If found:
- Increment
Recurrence-Count
- Update
Last-Seen
- Add
See Also links to related entries/tasks
- 5. If not found:
- Create a new
LRN-... entry
- Set
Source: simplify-and-harden
- Set
Pattern-Key,
Recurrence-Count: 1, and
First-Seen/ INLINECODE81
Promotion Rule (System Prompt Feedback)
Promote recurring patterns into agent context/system prompt files when all are true:
- - INLINECODE82
- Seen across at least 2 distinct tasks
- Occurred within a 30-day window
Promotion targets:
- - INLINECODE83
- INLINECODE84
- INLINECODE85
- INLINECODE86 /
TOOLS.md for OpenClaw workspace-level guidance when applicable
Write promoted rules as short prevention rules (what to do before/while coding),
not long incident write-ups.
Periodic Review
Review .learnings/ at natural breakpoints:
When to Review
- - Before starting a new major task
- After completing a feature
- When working in an area with past learnings
- Weekly during active development
Quick Status Check
CODEBLOCK14
Review Actions
- - Resolve fixed items
- Promote applicable learnings
- Link related entries
- Escalate recurring issues
Detection Triggers
Automatically log when you notice:
Corrections (→ learning with correction category):
- - "No, that's not right..."
- "Actually, it should be..."
- "You're wrong about..."
- "That's outdated..."
Feature Requests (→ feature request):
- - "Can you also..."
- "I wish you could..."
- "Is there a way to..."
- "Why can't you..."
Knowledge Gaps (→ learning with knowledge_gap category):
- - User provides information you didn't know
- Documentation you referenced is outdated
- API behavior differs from your understanding
Errors (→ error entry):
- - Command returns non-zero exit code
- Exception or stack trace
- Unexpected output or behavior
- Timeout or connection failure
Priority Guidelines
| Priority | When to Use |
|---|
| INLINECODE91 | Blocks core functionality, data loss risk, security issue |
| INLINECODE92 |
Significant impact, affects common workflows, recurring issue |
|
medium | Moderate impact, workaround exists |
|
low | Minor inconvenience, edge case, nice-to-have |
Area Tags
Use to filter learnings by codebase region:
| Area | Scope |
|---|
| INLINECODE95 | UI, components, client-side code |
| INLINECODE96 |
API, services, server-side code |
|
infra | CI/CD, deployment, Docker, cloud |
|
tests | Test files, testing utilities, coverage |
|
docs | Documentation, comments, READMEs |
|
config | Configuration files, environment, settings |
Best Practices
- 1. Log immediately - context is freshest right after the issue
- Be specific - future agents need to understand quickly
- Include reproduction steps - especially for errors
- Link related files - makes fixes easier
- Suggest concrete fixes - not just "investigate"
- Use consistent categories - enables filtering
- Promote aggressively - if in doubt, add to CLAUDE.md or .github/copilot-instructions.md
- Review regularly - stale learnings lose value
Gitignore Options
Keep learnings local (per-developer):
CODEBLOCK15
This repo uses that default to avoid committing sensitive or noisy local logs by accident.
Track learnings in repo (team-wide):
Don't add to .gitignore - learnings become shared knowledge.
Hybrid (track templates, ignore entries):
CODEBLOCK16
Hook Integration
Enable automatic reminders through agent hooks. This is opt-in - you must explicitly configure hooks.
Quick Setup (Claude Code / Codex)
Create .claude/settings.json in your project:
CODEBLOCK17
This injects a learning evaluation reminder after each prompt (~50-100 tokens overhead).
Advanced Setup (With Error Detection)
CODEBLOCK18
This is optional. The recommended default is activator-only setup; enable PostToolUse only if you are comfortable with hook scripts inspecting command output for error patterns.
Available Hook Scripts
| Script | Hook Type | Purpose |
|---|
| INLINECODE103 | UserPromptSubmit | Reminds to evaluate learnings after tasks |
| INLINECODE104 |
PostToolUse (Bash) | Triggers on command errors |
See references/hooks-setup.md for detailed configuration and troubleshooting.
Automatic Skill Extraction
When a learning is valuable enough to become a reusable skill, extract it using the provided helper.
Skill Extraction Criteria
A learning qualifies for skill extraction when ANY of these apply:
| Criterion | Description |
|---|
| Recurring | Has See Also links to 2+ similar issues |
| Verified |
Status is
resolved with working fix |
|
Non-obvious | Required actual debugging/investigation to discover |
|
Broadly applicable | Not project-specific; useful across codebases |
|
User-flagged | User says "save this as a skill" or similar |
Extraction Workflow
- 1. Identify candidate: Learning meets extraction criteria
- Run helper (or create manually):
./skills/self-improvement/scripts/extract-skill.sh skill-name --dry-run
./skills/self-improvement/scripts/extract-skill.sh skill-name
- 3. Customize SKILL.md: Fill in template with learning content
- Update learning: Set status to
promoted_to_skill, add INLINECODE109 - Verify: Read skill in fresh session to ensure it's self-contained
Manual Extraction
If you prefer manual creation:
- 1. Create INLINECODE110
- Use template from INLINECODE111
- Follow Agent Skills spec:
- YAML frontmatter with
name and
description
- Name must match folder name
- No README.md inside skill folder
Extraction Detection Triggers
Watch for these signals that a learning should become a skill:
In conversation:
- - "Save this as a skill"
- "I keep running into this"
- "This would be useful for other projects"
- "Remember this pattern"
In learning entries:
- - Multiple
See Also links (recurring issue) - High priority + resolved status
- Category:
best_practice with broad applicability - User feedback praising the solution
Skill Quality Gates
Before extraction, verify:
- - [ ] Solution is tested and working
- [ ] Description is clear without original context
- [ ] Code examples are self-contained
- [ ] No project-specific hardcoded values
- [ ] Follows skill naming conventions (lowercase, hyphens)
Multi-Agent Support
This skill works across different AI coding agents with agent-specific activation.
Claude Code
Activation: Hooks (UserPromptSubmit, PostToolUse)
Setup: .claude/settings.json with hook configuration
Detection: Automatic via hook scripts
Codex CLI
Activation: Hooks (same pattern as Claude Code)
Setup: .codex/settings.json with hook configuration
Detection: Automatic via hook scripts
GitHub Copilot
Activation: Manual (no hook support)
Setup: Add to .github/copilot-instructions.md:
CODEBLOCK20
Detection: Manual review at session end
OpenClaw
Activation: Workspace injection + inter-agent messaging
Setup: See "OpenClaw Setup" section above
Detection: Via session tools and workspace files
Agent-Agnostic Guidance
Regardless of agent, apply self-improvement when you:
- 1. Discover something non-obvious - solution wasn't immediate
- Correct yourself - initial approach was wrong
- Learn project conventions - discovered undocumented patterns
- Hit unexpected errors - especially if diagnosis was difficult
- Find better approaches - improved on your original solution
Copilot Chat Integration
For Copilot users, add this to your prompts when relevant:
After completing this task, evaluate if any learnings should be logged to .learnings/ using the self-improvement skill format.
Or use quick prompts:
- - "Log this to learnings"
- "Create a skill from this solution"
- "Check .learnings/ for related issues"
自我提升技能
将学习内容和错误记录到markdown文件中以实现持续改进。编码代理后续可以将其处理为修复方案,重要的学习内容会被提升到项目记忆中。
首次使用初始化
在记录任何内容之前,确保项目或工作区根目录中存在.learnings/目录和文件。如果缺少任何内容,请创建它们:
bash
mkdir -p .learnings
[ -f .learnings/LEARNINGS.md ] || printf # 学习记录\n\n开发过程中捕获的修正、洞察和知识盲区。\n\n分类: correction | insight | knowledgegap | bestpractice\n\n---\n > .learnings/LEARNINGS.md
[ -f .learnings/ERRORS.md ] || printf # 错误记录\n\n命令失败和集成错误。\n\n---\n > .learnings/ERRORS.md
[ -f .learnings/FEATUREREQUESTS.md ] || printf # 功能请求\n\n用户请求的能力。\n\n---\n > .learnings/FEATUREREQUESTS.md
切勿覆盖现有文件。如果.learnings/已经初始化,此操作将不执行任何操作。
不要记录密钥、令牌、私钥、环境变量或完整的源代码/配置文件,除非用户明确要求这种详细程度。优先使用简短摘要或经过编辑的摘录,而不是原始命令输出或完整记录。
如果您想要自动提醒或设置帮助,请使用Hook集成中描述的选择性加入钩子工作流。
快速参考
| 情况 | 操作 |
|---|
| 命令/操作失败 | 记录到.learnings/ERRORS.md |
| 用户纠正你 |
记录到.learnings/LEARNINGS.md,分类为correction |
| 用户想要缺失功能 | 记录到.learnings/FEATURE_REQUESTS.md |
| API/外部工具失败 | 记录到.learnings/ERRORS.md,包含集成详情 |
| 知识已过时 | 记录到.learnings/LEARNINGS.md,分类为knowledge_gap |
| 发现更好的方法 | 记录到.learnings/LEARNINGS.md,分类为best_practice |
| 简化/强化重复模式 | 记录/更新.learnings/LEARNINGS.md,使用Source: simplify-and-harden和稳定的Pattern-Key |
| 与现有条目类似 | 使用
另见链接,考虑提升优先级 |
| 广泛适用的学习内容 | 提升到CLAUDE.md、AGENTS.md和/或.github/copilot-instructions.md |
| 工作流改进 | 提升到AGENTS.md(OpenClaw工作区) |
| 工具陷阱 | 提升到TOOLS.md(OpenClaw工作区) |
| 行为模式 | 提升到SOUL.md(OpenClaw工作区) |
OpenClaw设置(推荐)
OpenClaw是此技能的主要平台。它使用基于工作区的提示注入,自动加载技能。
安装
通过ClawdHub(推荐):
bash
clawdhub install self-improving-agent
手动:
bash
git clone https://github.com/peterskoett/self-improving-agent.git ~/.openclaw/skills/self-improving-agent
从原始仓库重新制作用于openclaw:https://github.com/pskoett/pskoett-ai-skills - https://github.com/pskoett/pskoett-ai-skills/tree/main/skills/self-improvement
工作区结构
OpenClaw将以下文件注入到每个会话中:
~/.openclaw/workspace/
├── AGENTS.md # 多代理工作流,委派模式
├── SOUL.md # 行为指南,个性,原则
├── TOOLS.md # 工具能力,集成陷阱
├── MEMORY.md # 长期记忆(仅主会话)
├── memory/ # 每日记忆文件
│ └── YYYY-MM-DD.md
└── .learnings/ # 此技能的日志文件
├── LEARNINGS.md
├── ERRORS.md
└── FEATURE_REQUESTS.md
创建学习文件
bash
mkdir -p ~/.openclaw/workspace/.learnings
然后创建日志文件(或从assets/复制):
- - LEARNINGS.md — 修正、知识盲区、最佳实践
- ERRORS.md — 命令失败、异常
- FEATURE_REQUESTS.md — 用户请求的能力
提升目标
当学习内容被证明广泛适用时,将其提升到工作区文件:
| 学习类型 | 提升到 | 示例 |
|---|
| 行为模式 | SOUL.md | 简洁明了,避免免责声明 |
| 工作流改进 |
AGENTS.md | 为长任务生成子代理 |
| 工具陷阱 | TOOLS.md | Git推送需要先配置认证 |
会话间通信
OpenClaw提供跨会话共享学习内容的工具:
- - sessionslist — 查看活动/最近的会话
- sessionshistory — 读取另一个会话的记录
- sessionssend — 向另一个会话发送学习内容
- sessionsspawn — 生成子代理进行后台工作
仅在可信环境中使用这些工具,并且仅在用户明确希望跨会话共享时使用。优先发送简短的经过清理的摘要和相关文件路径,而不是原始记录、密钥或完整的命令输出。
可选:启用钩子
用于在会话开始时自动提醒:
bash
将钩子复制到OpenClaw钩子目录
cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
启用它
openclaw hooks enable self-improvement
有关完整详情,请参见references/openclaw-integration.md。
通用设置(其他代理)
对于Claude Code、Codex、Copilot或其他代理,在项目或工作区根目录中创建.learnings/:
bash
mkdir -p .learnings
使用上面显示的标题内联创建文件。避免从当前仓库或工作区读取模板,除非你明确信任该路径。
在代理文件AGENTS.md、CLAUDE.md或.github/copilot-instructions.md中添加引用,以提醒自己记录学习内容。(这是基于钩子的提醒的替代方案)
自我提升工作流
当出现错误或修正时:
- 1. 记录到.learnings/ERRORS.md、LEARNINGS.md或FEATURE_REQUESTS.md
- 审查并提升广泛适用的学习内容到:
- CLAUDE.md - 项目事实和约定
- AGENTS.md - 工作流和自动化
- .github/copilot-instructions.md - Copilot上下文
记录格式
学习条目
追加到.learnings/LEARNINGS.md:
markdown
[LRN-YYYYMMDD-XXX] 分类
记录时间: ISO-8601时间戳
优先级: low | medium | high | critical
状态: pending
领域: frontend | backend | infra | tests | docs | config
摘要
所学内容的一行描述
详情
完整上下文:发生了什么,什么错了,什么是对的
建议操作
要做的具体修复或改进
元数据
- - 来源: conversation | error | userfeedback
- 相关文件: path/to/file.ext
- 标签: tag1, tag2
- 另见: LRN-20250110-001(如果与现有条目相关)
- 模式键: simplify.deadcode | harden.input_validation(可选,用于重复模式跟踪)
- 重复计数: 1(可选)
- 首次出现: 2025-01-15(可选)
- 最后出现: 2025-01-15(可选)
错误条目
追加到.learnings/ERRORS.md:
markdown
[ERR-YYYYMMDD-XXX] 技能或命令名称
记录时间: ISO-8601时间戳
优先级: high
状态: pending
领域: frontend | backend | infra | tests | docs | config
摘要
失败内容的简要描述
错误
实际的错误消息或输出
上下文
- - 尝试的命令/操作
- 使用的输入或参数
- 环境详情(如果相关)
- 相关输出的摘要或编辑后的摘录(默认避免完整记录和包含密钥的数据)
建议修复
如果可以确定,可能解决此问题的方法
元数据
- - 可重现: yes | no | unknown
- 相关文件: path/to/file.ext
- 另见: ERR-20250110-001(如果重复出现)