10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeに自分でスキルを書かせて育てる ― 自己増殖するエージェント環境

10
Last updated at Posted at 2026-06-21

前回、Claude Codeの記憶を4層に分けた話を書きました。今回はその続きで、Claude Code自身に「再利用できる手順」を見つけさせて、スキルとして書き溜めていく仕組みの話です。

数ヶ月運用した結果、いま ~/.claude/skills/auto/ には自動生成されたスキルが64個たまっています。この記事では、その自己増殖の設計・乱造を防ぐ仕掛け・運用して分かった生成曲線を書きます。

困りごと:同じ手順を毎回ゼロから組み直す

Claude Codeは優秀ですが、セッションを跨ぐと「前にこのエラーをどう回避したか」を忘れます。launchdのexit 78の直し方、png-to-icoでfaviconを焼く手順、Next.jsのRSCペイロードを削る方法 ―― こういう一度解いたはずの手順を、毎回ゼロから組み直していました。

CLAUDE.mdに手で書き足す手もありますが、それだと「気づいた自分が書く」運用になり、続きません。そこで発想を変えて、手順を見つける作業ごとClaudeにやらせることにしました。

設計:2層生成 + Curator

スキルの生成を2つの層に分けています。

タイミング コスト 担当
セッション中生成 作業の途中で随時 無料・即時 CLAUDE.mdの指示に従いClaude本体
夜間バッチ生成 毎日3:30のcron Max枠を消費 skill-harvest.shclaude -pヘッドレス)

そして溜まったスキルを定期的に整理する Curatorskill-curate.sh)が週次で回ります。生成と整理を別プロセスに分けるのがポイントです。

層1:セッション中生成(無料・即時)

CLAUDE.mdにこう書いてあります(抜粋)。

## スキル自己生成(auto-skills)

作業の中で再利用価値のある手順を見つけたら、頼まれなくても自分でスキル化する。
ただし乱造はしない。

### 生成トリガー(いずれか該当時のみ)
- 5回以上ツールを使う非自明なタスクを最後までやり切った
- エラー・行き止まりにぶつかった後、動く回避策を見つけた
- ユーザーにアプローチを修正された(同じ修正を繰り返さないため)
- 再利用できる手順・コマンド列・ワークフローを発見した

肝は「ただし乱造はしない」と、トリガーを4つに絞っていることです。これを書かないと、Claudeは何でもかんでもスキル化して、すぐにノイズだらけになります。

層2:夜間バッチ生成(取りこぼし回収)

セッション中に書きそびれた手順を、夜間バッチが会話ログから拾います。skill-harvest.sh のパイプラインはこうなっています。

  1. .harvest-watermark(前回処理位置)を読む
  2. 会話ログ(raw/conversations/*.md)からwatermark以降の差分を抽出
  3. claude -p ヘッドレスで頻出パターンを抽出(出現回数5回超のものだけ採用)
  4. 既存スキル全64個とkebab-nameで重複チェック
  5. cost-guard hookでトークン使用量を監視、しきい値超過でabort
  6. 新規候補を <name>/SKILL.mdfrontmatter + Procedure / Pitfalls / Verification の3節で書き出し
  7. 末尾でCuratorをトリガし、古いスキルを退避
  8. watermarkを更新してログに追記

claude -p は前回の記事で触れたヘッドレス起動です。Max枠で回るのでAPIキー課金はゼロ。

隔離名前空間:なぜ auto/ に分けるか

自動生成スキルは、手書きスキルやプラグイン同梱スキルと同じ場所に置きません~/.claude/skills/auto/ という隔離名前空間に押し込めています。理由は2つ。

  • npx skills update -g が管理するのは lock 登録済みスキルだけ。auto/ のものは lock に入れない → 日次更新で消えない
  • Curatorは「auto/ 配下かつ author: auto」のものだけを対象にする → 手書きスキルやバンドルスキルには絶対に触れない

この author: auto がCuratorの対象判定キーで、frontmatterに必須にしています。

---
name: <kebab-case>
description: <発火条件を具体的に>
author: auto          # ← Curatorの対象判定キー。必須
created: <YYYY-MM-DD>
version: 1.0.0
status: active        # active | stale(Curatorが自動設定)
---

整理:Curatorは「消さない・提案だけ」

生成しっぱなしだとスキルは腐ります。Curatorが週次でこう動きます。

  • 実行前に .snapshots/ へ tar.gz スナップショット
  • 30日未使用 → status: stale に降格
  • 90日未使用 → .archive/ へ退避(実削除はしない・コマンドで復元可)
  • 重複・低品質の統合は .curator-proposals.md提案のみ書き出す(自動適用しない)

Curatorに自動削除をさせないのが安全設計の核です。「30日触ってない」はスキルが悪いとは限らない(その作業をしてないだけ)。だから降格と退避に留め、最終判断は人間に残します。

運用して分かったこと

生成は初期に集中し、その後逓減する

created: の分布を見ると、導入直後の3日(5/28〜30)で28個が一気に言語化され、その後は日に数個ペースに落ちました。これは直感に合います ―― 過去に溜めた「言語化されてない手順」が初期に放出され、その後は新しく出会った手順だけが追加されるからです。

12 created: 2026-05-30
 9 created: 2026-05-29
 7 created: 2026-06-09
 6 created: 2026-06-11
 5 created: 2026-06-10
 5 created: 2026-05-28

「乱造しない」は実際に効く

今朝のharvestログがこれです。

会話ログを精査した結果、以下の理由から該当なし。
- Codex CLI のセットアップ → codex-cli-setup が既存
- /insights を CLAUDE.md に反映 → insights-to-claude-md が既存
- カード債務の支払い優先順位 → 個人の財務状況に依存、再利用手順に非該当
該当なし
[2026-06-15 04:11:21] harvest done (exit 0, created=0)

created=0既存スキルとの重複を弾き、個人事情の一回限りの内容も弾いて、0個生成で正常終了しています。乱造しない設計が、空振りを「正しい空振り」として処理できている証拠です。ここでむやみに生成してしまうと、64個がすぐ200個に膨れてノイズ化します。

踏んだ落とし穴

実際のスキルの Pitfalls 節から、効いたものを。

  • claude -p がsystem prompt全ロードでトークンcapに抵触MAX_THINKING_TOKENS=10000 で抑制
  • watermarkを進め忘れて同じログを重複抽出 → ログのlast completed offsetを必ず確認
  • kebab-nameのgrepだけだとファジー重複を見逃す → description embedding比較が改善余地(未実装)
  • launchd 3:30起動だがmac sleep中はジョブがスキップpmset の wake on schedule 推奨
  • ヘッドレスでMCP server全ロードすると起動が遅い → harvest専用のminimal configを別パスで持つ

最小構成:今日始めるなら

フルパイプラインはいりません。CLAUDE.mdに1ブロック足すだけで層1は動きます。

  1. ~/.claude/skills/auto/ を作る
  2. CLAUDE.mdに「再利用価値のある手順を見つけたら自分でスキル化する。ただし乱造しない」+トリガー4条件を書く
  3. frontmatterに author: auto を必須化(後で整理する時の目印)

これだけで、作業のたびにスキルが少しずつ増えます。夜間バッチとCuratorは、スキルが溜まって「整理したい」と感じてから足せば間に合います。

まとめ

  • スキル生成をセッション中(無料)と夜間バッチ(取りこぼし回収)の2層に分ける
  • 乱造しないをプロンプトに明記し、トリガーを絞る。空振り0生成が正常
  • 自動生成は auto/ に隔離し、author: auto をCuratorの対象キーにする
  • Curatorは消さない・降格と退避と提案だけ。最終判断は人間
  • まずはCLAUDE.mdに1ブロックから

次回は、このスキルが増えすぎてClaude Code自体が重くなった話 ―― コンテキスト注入を228KBから48KBに削った監査を書きます。


Lily@bokuwalily)― 個人開発者。Claude Code で自動化基盤を組みながら、iOSアプリやWebサービスを量産しています

皆さんの ❤️ やシェアが励みになります!

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?