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.
Quick Reference
| Situation | Action |
|---|
| Command/operation fails | Log to INLINECODE0 |
| 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):
CODEBLOCK0
Manual:
CODEBLOCK1
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:
CODEBLOCK2
Create Learning Files
CODEBLOCK3
Then create the log files (or copy from assets/):
- -
LEARNINGS.md — corrections, knowledge gaps, best practices - INLINECODE21 — command failures, exceptions
- INLINECODE22 — user-requested capabilities
Promotion Targets
When learnings prove broadly applicable, promote them to workspace files:
| Learning Type | Promote To | Example |
|---|
| Behavioral patterns | INLINECODE23 | "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
Optional: Enable Hook
For automatic reminders at session start:
CODEBLOCK4
See references/openclaw-integration.md for complete details.
Generic Setup (Other Agents)
For Claude Code, Codex, Copilot, or other agents, create .learnings/ in your project:
CODEBLOCK5
Copy templates from assets/ or create files with headers.
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 INLINECODE31 - 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:
CODEBLOCK6
Error Entry
Append to .learnings/ERRORS.md:
CODEBLOCK7
Actual error message or output
CODEBLOCK8
Feature Request Entry
Append to .learnings/FEATURE_REQUESTS.md:
CODEBLOCK9
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, INLINECODE46
Resolving Entries
When an issue is fixed, update the entry:
- 1. Change
**Status**: pending → INLINECODE48 - Add resolution block after Metadata:
CODEBLOCK10
Other status values:
- -
in_progress - Actively being worked on - INLINECODE50 - Decided not to address (add reason in Resolution notes)
- INLINECODE51 - 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 |
|---|
| INLINECODE52 | Project facts, conventions, gotchas for all Claude interactions |
| INLINECODE53 |
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 INLINECODE61
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):
CODEBLOCK11
Learning (verbose):
When modifying API endpoints, must regenerate TypeScript client.
Forgetting this causes type mismatches at runtime.
In AGENTS.md (actionable):
CODEBLOCK12
Recurring Pattern Detection
If logging something similar to an existing entry:
- 1. Search first: INLINECODE65
- 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/ INLINECODE80
Promotion Rule (System Prompt Feedback)
Promote recurring patterns into agent context/system prompt files when all are true:
- - INLINECODE81
- Seen across at least 2 distinct tasks
- Occurred within a 30-day window
Promotion targets:
- - INLINECODE82
- INLINECODE83
- INLINECODE84
- INLINECODE85 /
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
CODEBLOCK13
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 |
|---|
| INLINECODE90 | Blocks core functionality, data loss risk, security issue |
| INLINECODE91 |
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 |
|---|
| INLINECODE94 | UI, components, client-side code |
| INLINECODE95 |
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):
CODEBLOCK14
Track learnings in repo (team-wide):
Don't add to .gitignore - learnings become shared knowledge.
Hybrid (track templates, ignore entries):
CODEBLOCK15
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:
CODEBLOCK16
This injects a learning evaluation reminder after each prompt (~50-100 tokens overhead).
Full Setup (With Error Detection)
CODEBLOCK17
Available Hook Scripts
| Script | Hook Type | Purpose |
|---|
| INLINECODE101 | UserPromptSubmit | Reminds to evaluate learnings after tasks |
| INLINECODE102 |
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 INLINECODE107 - Verify: Read skill in fresh session to ensure it's self-contained
Manual Extraction
If you prefer manual creation:
- 1. Create INLINECODE108
- Use template from INLINECODE109
- 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:
CODEBLOCK19
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/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 |
| 与现有条目相似 | 使用
See Also 链接,考虑提升优先级 |
| 广泛适用的学习内容 | 提升到 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
从 assets/ 复制模板或创建带有标题的文件。
向代理文件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(如果重复出现)
功能请求条目
追加到 .learnings/FEATURE_REQUESTS.md:
markdown
[FEAT-YYYYMMDD-XXX] 功能名称
记录时间: ISO-8601时间戳
优先级: medium
状态: pending
领域: frontend | backend | infra | tests | docs | config
请求的功能
用户想要做什么
用户上下文
他们为什么需要它,他们在解决什么问题
复杂度评估
simple | medium | complex
建议实现
如何构建这个功能,它可能扩展什么
元数据
- - 频率: firsttime | recurring
- 相关功能: existingfeature_name
ID生成
格式:TYPE-YYYYMMDD-XXX
- - TYPE: LRN(学习)、ERR(错误)、FEAT(功能)
- YYYYMMDD: 当前日期
- XXX: 序号或随机3个字符(例如 001、A7B)
示例:LRN-20250115-001、ERR-20250115-A3F、FEAT-20250115-002
解决条目
当问题被修复时,更新条目:
- 1. 将 Status: pending 改为 Status: resolved
- 在元数据后添加解决块:
markdown
解决
- - 解决时间: 2025-01-16T09:00:00Z
- 提交/PR: abc123 或 #42
- 备注: 所做操作的简要描述
其他状态值:
-