self-improvement について
self-improvementは、コーディングエージェント向けのスキルです。エラーや修正、実践知をMarkdownに記録し、広く役立つ内容をプロジェクトやワークスペースのガイダンスに反映します。OpenClawなどでの設定方法も示します。
主な機能
- 01エラー、学び、機能要望の記録
- 02構造化テンプレートによる分類
- 03エージェント用ガイダンスへの反映
- 04繰り返すパターンと関連項目の追跡
- 05記録項目の確認と解決
活用シーン
- 01コマンドや連携の失敗を後で確認する記録
- 02ユーザーの修正や知識の不足の記録
- 03今後の作業に向けた機能要望の保存
- 04繰り返す学びをプロジェクト指示に反映
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wanikua/ danghuangshang --skill self-improvementインストール後、Claude Code で/self-improvementを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
_meta.jsonpackage.json.clawdhub/origin.json.learnings/ERRORS.mdFEATURE_REQUESTS.mdLEARNINGS.mdassets/LEARNINGS.mdSKILL-TEMPLATE.mdhooks/openclaw/handler.jshandler.tsHOOK.mdreferences/examples.mdhooks-setup.mdopenclaw-integration.mdscripts/activator.sherror-detector.shextract-skill.sh詳細
自己改善スキル
継続的な改善のために、学びやエラーを Markdown ファイルに記録します。コーディングエージェントが後からこれらを処理して修正に反映でき、重要な学びはプロジェクトのメモリに昇格されます。
クイックリファレンス
| 状況 | 対応 |
|---|---|
| コマンド/操作に失敗した | .learnings/ERRORS.md に記録します |
| ユーザーから訂正された | カテゴリを correction として .learnings/LEARNINGS.md に記録します |
| ユーザーが不足している機能を求めた | .learnings/FEATURE_REQUESTS.md に記録します |
| API/外部ツールに失敗した | 統合の詳細とともに .learnings/ERRORS.md に記録します |
| 知識が古くなっていた | カテゴリを knowledge_gap として .learnings/LEARNINGS.md に記録します |
| より良い方法を見つけた | カテゴリを best_practice として .learnings/LEARNINGS.md に記録します |
| 繰り返し発生するパターンを簡素化/強化する | Source: simplify-and-harden と安定した Pattern-Key を付けて .learnings/LEARNINGS.md に記録/更新します |
| 既存のエントリーに類似している | **See Also** でリンクし、優先度の引き上げを検討します |
| 幅広く適用できる学び | CLAUDE.md、AGENTS.md、および/または .github/copilot-instructions.md に昇格します |
| ワークフローの改善 | AGENTS.md(OpenClaw ワークスペース)に昇格します |
| ツールの注意点 | TOOLS.md(OpenClaw ワークスペース)に昇格します |
| 振る舞いのパターン | SOUL.md(OpenClaw ワークスペース)に昇格します |
OpenClaw のセットアップ(推奨)
OpenClaw は、このスキルの主要なプラットフォームです。ワークスペースベースのプロンプトインジェクションを使用し、スキルを自動的に読み込みます。
インストール
ClawdHub 経由(推奨):
clawdhub install self-improving-agent
手動:
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 # Multi-agent workflows, delegation patterns
├── SOUL.md # Behavioral guidelines, personality, principles
├── TOOLS.md # Tool capabilities, integration gotchas
├── MEMORY.md # Long-term memory (main session only)
├── memory/ # Daily memory files
│ └── YYYY-MM-DD.md
└── .learnings/ # This skill's log files
├── LEARNINGS.md
├── ERRORS.md
└── FEATURE_REQUESTS.md
学びのファイルを作成する
mkdir -p ~/.openclaw/workspace/.learnings
次に、ログファイルを作成します(または assets/ からコピーします)。
LEARNINGS.md— 訂正、知識の不足、ベストプラクティスERRORS.md— コマンドの失敗、例外FEATURE_REQUESTS.md— ユーザーが求めた機能
昇格先
学びが幅広く適用できるとわかったら、ワークスペースファイルに昇格します。
| 学びの種類 | 昇格先 | 例 |
|---|---|---|
| 振る舞いのパターン | SOUL.md | 「簡潔にし、免責事項を避ける」 |
| ワークフローの改善 | AGENTS.md | 「長時間のタスクではサブエージェントを起動する」 |
| ツールの注意点 | TOOLS.md | 「Git のプッシュ前に認証を設定する」 |
セッション間のコミュニケーション
OpenClaw には、セッション間で学びを共有するためのツールがあります。
- sessions_list — アクティブなセッション/最近のセッションを表示します
- sessions_history — 別のセッションのトランスクリプトを読み取ります
- sessions_send — 別のセッションに学びを送信します
- sessions_spawn — バックグラウンド作業用のサブエージェントを起動します
任意:フックを有効にする
セッション開始時に自動でリマインダーを表示するには:
# Copy hook to OpenClaw hooks directory
cp -r hooks/openclaw ~/.openclaw/hooks/self-improvement
# Enable it
openclaw hooks enable self-improvement
詳しくは references/openclaw-integration.md を参照してください。
汎用セットアップ(その他のエージェント)
Claude Code、Codex、Copilot、その他のエージェントでは、プロジェクト内に .learnings/ を作成します。
mkdir -p .learnings
assets/ からテンプレートをコピーするか、ヘッダーを付けてファイルを作成します。
学びの記録を促すために、エージェントのファイル AGENTS.md、CLAUDE.md、または .github/copilot-instructions.md に参照を追加します。(これはフックベースのリマインダーの代替手段です)
自己改善ワークフロー
エラーや訂正が発生した場合:
.learnings/ERRORS.md、LEARNINGS.md、またはFEATURE_REQUESTS.mdに記録します- 幅広く適用できる学びを確認し、次のファイルに昇格します。
CLAUDE.md- プロジェクトの事実と規約AGENTS.md- ワークフローと自動化.github/copilot-instructions.md- Copilot のコンテキスト
記録形式
学びのエントリー
.learnings/LEARNINGS.md に追記します。
## [LRN-YYYYMMDD-XXX] category
**Logged**: ISO-8601 timestamp
**Priority**: low | medium | high | critical
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config
### Summary
One-line description of what was learned
### Details
Full context: what happened, what was wrong, what's correct
### Suggested Action
Specific fix or improvement to make
### Metadata
- Source: conversation | error | user_feedback
- Related Files: path/to/file.ext
- Tags: tag1, tag2
- See Also: LRN-20250110-001 (if related to existing entry)
- Pattern-Key: simplify.dead_code | harden.input_validation (optional, for recurring-pattern tracking)
- Recurrence-Count: 1 (optional)
- First-Seen: 2025-01-15 (optional)
- Last-Seen: 2025-01-15 (optional)
---
エラーのエントリー
.learnings/ERRORS.md に追記します。
## [ERR-YYYYMMDD-XXX] skill_or_command_name
**Logged**: ISO-8601 timestamp
**Priority**: high
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config
### Summary
Brief description of what failed
### Error
実際のエラーメッセージまたは出力
### Context
- Command/operation attempted
- Input or parameters used
- Environment details if relevant
### Suggested Fix
If identifiable, what might resolve this
### Metadata
- Reproducible: yes | no | unknown
- Related Files: path/to/file.ext
- See Also: ERR-20250110-001 (if recurring)
---
機能リクエストのエントリー
.learnings/FEATURE_REQUESTS.md に追記します。
## [FEAT-YYYYMMDD-XXX] capability_name
**Logged**: ISO-8601 timestamp
**Priority**: medium
**Status**: pending
**Area**: frontend | backend | infra | tests | docs | config
### Requested Capability
What the user wanted to do
### User Context
Why they needed it, what problem they're solving
### Complexity Estimate
simple | medium | complex
### Suggested Implementation
How this could be built, what it might extend
### Metadata
- Frequency: first_time | recurring
- Related Features: existing_feature_name
---
ID の生成
形式:TYPE-YYYYMMDD-XXX
- TYPE:
LRN(学習)、ERR(エラー)、FEAT(機能) - YYYYMMDD:現在の日付
- XXX:連番またはランダムな 3 文字(例:
001、A7B)
例:LRN-20250115-001、ERR-20250115-A3F、FEAT-20250115-002
エントリーの解決
問題を修正したら、エントリーを更新します。
**Status**: pendingを**Status**: resolvedに変更します- Metadata の後に解決ブロックを追加します。
### Resolution
- **Resolved**: 2025-01-16T09:00:00Z
- **Commit/PR**: abc123 or #42
- **Notes**: Brief description of what was done
その他のステータス値:
in_progress- 対応中wont_fix- 対応しないことを決定(Resolution notes に理由を追加)promoted- CLAUDE.md、AGENTS.md、または .github/copilot-instructions.md に昇格
プロジェクトメモリへの昇格
学習内容が広く適用可能な場合(その場限りの修正ではない場合)、永続的なプロジェクトメモリに昇格させます。
昇格する場合
- 複数のファイルや機能に適用される学習内容
- 人間または AI を問わず、すべてのコントリビューターが知っておくべき知識
- 同じ間違いの再発を防ぐもの
- プロジェクト固有の規約を記録するもの
昇格先
| 対象 | 記載する内容 |
|---|---|
CLAUDE.md | すべての Claude とのやり取りに関するプロジェクト情報、規約、注意点 |
AGENTS.md | エージェント固有のワークフロー、ツールの使用パターン、自動化ルール |
.github/copilot-instructions.md | GitHub Copilot 向けのプロジェクトの背景情報と規約 |
SOUL.md | 行動指針、コミュニケーションスタイル、原則(OpenClaw ワークスペース) |
TOOLS.md | ツールの機能、使用パターン、連携時の注意点(OpenClaw ワークスペース) |
昇格の方法
- 要約:学習内容を簡潔なルールまたは事実にまとめます
- 追加:対象ファイルの適切なセクションに追加します(必要に応じてファイルを作成します)
- 元のエントリーを更新:
**Status**: pendingを**Status**: promotedに変更します**Promoted**: CLAUDE.md、AGENTS.md、または.github/copilot-instructions.mdを追加します
昇格の例
学習内容(詳細):
プロジェクトでは pnpm のワークスペースを使用します。
npm installを試しましたが失敗しました。 ロックファイルはpnpm-lock.yamlです。pnpm installを使用する必要があります。
CLAUDE.md 内(簡潔):
## Build & Dependencies
- Package manager: pnpm (not npm) - use `pnpm install`
学習内容(詳細):
API エンドポイントを変更する際は、TypeScript クライアントを再生成する必要があります。 これを忘れると、実行時に型の不一致が発生します。
AGENTS.md 内(実行可能な指示):
## After API Changes
1. Regenerate client: `pnpm run generate:api`
2. Check for type errors: `pnpm tsc --noEmit`
繰り返しパターンの検出
既存のエントリーと似た内容を記録する場合:
- まず検索:
grep -r "keyword" .learnings/ - エントリーをリンク:Metadata に
**See Also**: ERR-20250110-001を追加します - 問題が繰り返し発生する場合は、優先度を上げます
- システム的な修正を検討:繰り返し発生する問題は、多くの場合、次のことを示しています。
- ドキュメントの不足(→ CLAUDE.md または .github/copilot-instructions.md に昇格)
- 自動化の不足(→ AGENTS.md に追加)
- アーキテクチャ上の問題(→ 技術的負債のチケットを作成)
フィードの簡素化と強化
このワークフローを使用して、simplify-and-harden
スキルから繰り返しパターンを取り込み、永続的なプロンプトガイダンスに変換します。
取り込みワークフロー
- タスクの要約から
simplify_and_harden.learning_loop.candidatesを読み取ります。 - 各候補について、
pattern_keyを安定した重複排除キーとして使用します。 .learnings/LEARNINGS.mdで、そのキーを持つ既存のエントリーを検索します。grep -n "Pattern-Key: <pattern_key>" .learnings/LEARNINGS.md
- 見つかった場合:
Recurrence-Countを増やしますLast-Seenを更新します- 関連するエントリーやタスクへの
See Alsoリンクを追加します
- 見つからなかった場合:
- 新しい
LRN-...エントリーを作成します Source: simplify-and-hardenを設定しますPattern-Key、Recurrence-Count: 1、First-Seen/Last-Seenを設定します
- 新しい
昇格ルール (システムプロンプトへのフィードバック)
以下のすべてに当てはまる場合、繰り返し発生するパターンをエージェントのコンテキスト/システムプロンプトファイルに昇格させます:
Recurrence-Count >= 3- 少なくとも 2 つの異なるタスクにまたがって確認されている
- 30 日以内の期間に発生している
昇格先:
CLAUDE.mdAGENTS.md.github/copilot-instructions.md- 該当する場合は OpenClaw のワークスペースレベルのガイダンス用の
SOUL.md/TOOLS.md
昇格させるルールは、長いインシデント報告ではなく、短い予防ルール (コーディングの前/最中に何をすべきか) として記述します。
定期的なレビュー
自然な区切りで .learnings/ をレビューします:
レビューのタイミング
- 新しい大きなタスクを始める前
- 機能を完成させた後
- 過去の学びがある領域で作業するとき
- 活発に開発している間は毎週
クイックステータス確認
# Count pending items
grep -h "Status\*\*: pending" .learnings/*.md | wc -l
# List pending high-priority items
grep -B5 "Priority\*\*: high" .learnings/*.md | grep "^## \["
# Find learnings for a specific area
grep -l "Area\*\*: backend" .learnings/*.md
レビューのアクション
- 修正済みの項目を解決する
- 該当する学びを昇格させる
- 関連するエントリをリンクする
- 繰り返し発生する問題をエスカレーションする
検出トリガー
以下のことに気づいたら自動的に記録します:
訂正 (→ correction カテゴリの学び):
- 「いや、それは正しくない...」
- 「実は、こうあるべきです...」
- 「〜について間違っています...」
- 「それは古くなっています...」
機能リクエスト (→ 機能リクエスト):
- 「〜もできますか...」
- 「〜できたらいいのに...」
- 「〜する方法はありますか...」
- 「なぜ〜できないのですか...」
知識のギャップ (→ knowledge_gap カテゴリの学び):
- ユーザーがあなたの知らなかった情報を提供する
- 参照したドキュメントが古くなっている
- API の動作があなたの理解と異なる
エラー (→ エラーエントリ):
- コマンドが非ゼロの終了コードを返す
- 例外またはスタックトレース
- 予期しない出力や動作
- タイムアウトまたは接続失敗
優先度のガイドライン
| 優先度 | 使用する場合 |
|---|---|
critical | コア機能をブロックする、データ損失のリスク、セキュリティ問題 |
high | 重大な影響、一般的なワークフローに影響、繰り返し発生する問題 |
medium | 中程度の影響、回避策が存在する |
low | 軽微な不便、エッジケース、あると便利 |
エリアタグ
コードベースの領域で学びを絞り込むために使用します:
| エリア | 範囲 |
|---|---|
frontend | UI、コンポーネント、クライアントサイドのコード |
backend | API、サービス、サーバーサイドのコード |
infra | CI/CD、デプロイ、Docker、クラウド |
tests | テストファイル、テストユーティリティ、カバレッジ |
docs | ドキュメント、コメント、README |
config | 設定ファイル、環境、設定 |
ベストプラクティス
- すぐに記録する - 問題の直後が最もコンテキストが新鮮です
- 具体的にする - 将来のエージェントがすぐに理解できる必要があります
- 再現手順を含める - 特にエラーの場合
- 関連ファイルをリンクする - 修正が容易になります
- 具体的な修正を提案する - 「調査する」だけではなく
- 一貫したカテゴリを使用する - フィルタリングが可能になります
- 積極的に昇格させる - 迷ったら、CLAUDE.md や .github/copilot-instructions.md に追加します
- 定期的にレビューする - 古くなった学びは価値を失います
Gitignore のオプション
学びをローカルに保つ (開発者ごと):
.learnings/
学びをリポジトリで追跡する (チーム全体): .gitignore に追加しないでください - 学びは共有知識になります。
ハイブリッド (テンプレートを追跡し、エントリは無視する):
.learnings/*.md
!.learnings/.gitkeep
フックの統合
エージェントフックを通じて自動リマインダーを有効にします。これはオプトインです - フックを明示的に設定する必要があります。
クイックセットアップ (Claude Code / Codex)
プロジェクトに .claude/settings.json を作成します:
{
"hooks": {
"UserPromptSubmit": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/activator.sh"
}]
}]
}
}
これにより、各プロンプトの後に学習評価のリマインダーが挿入されます (オーバーヘッドは約 50〜100 トークン)。
フルセットアップ (エラー検出あり)
{
"hooks": {
"UserPromptSubmit": [{
"matcher": "",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/activator.sh"
}]
}],
"PostToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "./skills/self-improvement/scripts/error-detector.sh"
}]
}]
}
}
利用可能なフックスクリプト
| スクリプト | フックタイプ | 目的 |
|---|---|---|
scripts/activator.sh | UserPromptSubmit | タスク後に学びを評価するよう促します |
scripts/error-detector.sh | PostToolUse (Bash) | コマンドエラー時にトリガーされます |
詳細な設定とトラブルシューティングについては references/hooks-setup.md を参照してください。
自動スキル抽出
学びが再利用可能なスキルになるほど価値がある場合、提供されているヘルパーを使用して抽出します。
スキル抽出の基準
次のいずれかに該当する学びは、スキル抽出の対象となります。
| 基準 | 説明 |
|---|---|
| 繰り返し発生 | 類似する問題への See Also リンクが 2 件以上ある |
| 検証済み | ステータスが resolved で、修正が機能している |
| 自明ではない | 発見するために実際のデバッグや調査が必要だった |
| 幅広く適用可能 | プロジェクト固有ではなく、さまざまなコードベースで役立つ |
| ユーザーからの指定 | ユーザーが「これをスキルとして保存して」などと伝えている |
抽出ワークフロー
- 候補を特定する:学びが抽出基準を満たしている
- ヘルパーを実行する(または手動で作成する):
./skills/self-improvement/scripts/extract-skill.sh skill-name --dry-run ./skills/self-improvement/scripts/extract-skill.sh skill-name - SKILL.md をカスタマイズする:テンプレートに学びの内容を記入する
- 学びを更新する:ステータスを
promoted_to_skillに設定し、Skill-Pathを追加する - 検証する:新しいセッションでスキルを読み、単独で完結していることを確認する
手動での抽出
手動で作成する場合:
skills/<skill-name>/SKILL.mdを作成するassets/SKILL-TEMPLATE.mdのテンプレートを使用する- Agent Skills spec に従う:
nameとdescriptionを含む YAML フロントマター- 名前はフォルダー名と一致させる
- スキルフォルダー内に README.md を作成しない
抽出を検出するトリガー
学びをスキルにするべき兆候に注意してください。
会話での兆候:
- 「これをスキルとして保存して」
- 「これに何度も遭遇する」
- 「これはほかのプロジェクトでも役立ちそう」
- 「このパターンを覚えておいて」
学習エントリでの兆候:
See Alsoリンクが複数ある(繰り返し発生する問題)- 優先度が高く、ステータスが resolved
- カテゴリーが
best_practiceで、幅広く適用可能 - 解決策を称賛するユーザーからのフィードバック
スキル品質ゲート
抽出する前に、次の点を確認してください。
- 解決策がテスト済みで、機能している
- 説明が元のコンテキストなしで理解できる
- コード例が単独で完結している
- プロジェクト固有の値がハードコードされていない
- スキルの命名規則(小文字、ハイフン)に従っている
マルチエージェント対応
このスキルは、エージェントごとの有効化方法により、さまざまな AI コーディングエージェントで動作します。
Claude Code
有効化:フック(UserPromptSubmit、PostToolUse)
セットアップ:フック設定を含む .claude/settings.json
検出:フックスクリプトによる自動検出
Codex CLI
有効化:フック(Claude Code と同じパターン)
セットアップ:フック設定を含む .codex/settings.json
検出:フックスクリプトによる自動検出
GitHub Copilot
有効化:手動(フック非対応)
セットアップ:.github/copilot-instructions.md に追加します。
## Self-Improvement
After solving non-obvious issues, consider logging to `.learnings/`:
1. Use format from self-improvement skill
2. Link related entries with See Also
3. Promote high-value learnings to skills
Ask in chat: "Should I log this as a learning?"
検出:セッション終了時に手動で確認
OpenClaw
有効化:ワークスペースへの注入+エージェント間メッセージング セットアップ:上記の「OpenClaw Setup」セクションを参照してください 検出:セッションツールとワークスペースファイルを使用
エージェントに依存しないガイダンス
エージェントにかかわらず、次の場合は自己改善を適用してください。
- 自明ではないことを発見したとき — 解決策がすぐには分からなかった
- 自分の誤りを訂正したとき — 最初のアプローチが間違っていた
- プロジェクトの規約を学んだとき — 文書化されていないパターンを発見した
- 予期しないエラーに遭遇したとき — 特に原因の特定が難しかった場合
- より良いアプローチを見つけたとき — 最初の解決策を改善できた
Copilot Chat との統合
Copilot ユーザーは、必要に応じてプロンプトに次の内容を追加してください。
このタスクの完了後、自己改善スキルの形式を使って、
.learnings/に記録すべき学びがあるか評価してください。
または、次のクイックプロンプトを使用してください。
- 「これを学習記録に残して」
- 「この解決策からスキルを作成して」
- 「関連する問題がないか
.learnings/を確認して」