🐟

Claude Codeと学習して賢くなるCLIツール「claude-pattern-lang」を作ってnpmに公開した

に公開

普段はAIツール、特にClaude Codeで遊んでいます。

先日、自分で作ったCLIツールをnpmに公開しました。その名も「claude-pattern-lang」。

Claude Codeを使って開発していると、毎回同じようなやり取りをしていることに気づきませんか?

  • 「ファイル編集する前にReadツール使ってね」
  • 「ESMでモジュールエラーが出たら.js拡張子をつけてね」
  • 「エラーが出たらまずログを見せてね」

こういう「うまくいくパターン」を自動で抽出して、次回からのセッションで使えるようにするツールを作りました。

claude-pattern-langって何?

claude-pattern-langは、Claude Codeのセッションログを分析して、再利用可能なパターンを自動抽出・カタログ化するCLIツールです。

ざっくり言うと:

  • セッションログを分析 → LLMが自動でパターンを抽出
  • パターンをカタログ化 → YAML形式で保存・管理
  • CLAUDE.mdに同期 → 次回のセッションから自動的に参照

これにより、Claudeが過去の成功パターンを学習して、より効率的にタスクをこなせるようになります。

なぜ作ったのか

Claude Codeを使い始めて、すごく便利だな〜と思いつつ、一つ課題を感じていました。

「毎回同じような指示を出している」

例えば、TypeScript + ESM環境で開発していると、インポートエラーがよく出るんですよね。で、いちいち「.js拡張子をつけてね」と指示する。これが1回や2回ならいいけど、10回も20回もやると正直面倒くさい。

で、ふと思ったんです。

「これ、CLAUDE.mdに書いておけばいいんじゃない?」

でも、手動で書くのめんどくさいし、何より「どんなパターンがあるか」自分でも把握しきれてない。

じゃあ「自動で抽出すればいいんじゃない?」という発想になりました。

驚きの検証結果:開発効率35%アップ

ツールを作って、実際に効果を測ってみたら、結構な結果が出ました。

検証方法

同じタスク(API実装)を2つの条件で実行:

条件 会話ターン数 コード行数
パターンなし 14ターン 69行
パターンあり 9ターン 39行
削減率 35%削減 44%削減

つまり:

  • 会話ターンが約5回減少
  • コード量が約3割減少

パターンがあると、Claudeが「あ、このパターン使えばいいんだな」とすぐに最適解にたどり着けるんですよね。

検証の詳細

検証には以下のタスクを使用:

  • REST APIエンドポイントの実装
  • TypeScript + Express環境
  • エラーハンドリングとバリデーション含む

パターンなしの場合:

  • まず基本的な実装
  • エラーハンドリングの指摘
  • リファクタリングの提案
  • というように、試行錯誤のやり取りが発生

パターンありの場合:

  • 最初からパターン通りの実装
  • エラーハンドリングも含めて一発で完了

主な機能

1. 自動パターン抽出

セッションログをLLMが分析して、以下の3種類のパターンを抽出:

パターン種類 説明
prompt 効果的なプロンプト構造 「エラーログ先行確認」
solution 問題解決アプローチ 「ESMインポートパス解決」
code コーディングイディオム 「react-form-controlled-components」

2. パターンカタログ管理

抽出したパターンはYAML形式で保存:

patterns:
  - name: read-before-edit
    type: solution
    context: コードの修正を依頼されたとき
    problem: ファイルの現状を確認せずに編集すると、意図しない変更や失敗が発生する
    solution: Editツールを使う前に必ずReadツールでファイル内容を確認する
    tags: [ファイル編集, 基本原則, 安全性]

3. CLAUDE.md自動同期

cpl syncコマンド一発で、パターンをプロジェクトのCLAUDE.mdに反映:

<!-- CPL:PATTERNS:START -->
@.claude/patterns.md
<!-- CPL:PATTERNS:END -->

この@インポート機能は、Claude Codeの標準機能で、自動的にパターンを読み込んでくれます。

4. 便利な管理コマンド

# パターン一覧
cpl list

# 特定のパターンを表示
cpl show <pattern-name>

# 手動でパターン追加
cpl add

# パターン削除
cpl remove <pattern-name>

5. アナリティクス機能

# Claude Codeのセッション分析
cpl session

# CPLツールの使用メトリクス
cpl metrics

開発中のハマりどころ

実際に開発していて、いくつかハマったポイントがありました。

LLMプロンプトの調整が難しい
最初は「パターンを抽出して」とだけ頼んでいたんですが、抽出されるパターンの品質にばらつきがあって。何度かプロンプトを調整して、「コンテキスト」「問題」「解決策」の構造を明示するようにしたら、品質が安定しました。

重複排除の処理
似たようなパターンが何回も抽出される問題があったんですね。そこで、既存のパターンと比較して、類似度が高い場合はマージする処理を入れました。ここは結構悩んで、結局簡単な文字列ベースのマッチングに落ち着きました。

セキュリティ配慮
セッションログにはAPIキーやパスワードが含まれる可能性があるので、自動マスキング処理を入れました。正規表現でパターンマッチして、機密情報を***で置き換えています。

使い方

インストール

npm install -g @gonzui/claude-pattern-lang

初期化

cpl init

これで設定ディレクトリが作成されます。

パターン抽出

# 最近のセッションを分析
cpl analyze

# 特定のセッションを分析
cpl analyze --session <session-id>

# 特定のプロジェクトのセッションを分析
cpl analyze --project /path/to/project

CLAUDE.mdに同期

# 現在のプロジェクトに同期
cpl sync

# グローバルのCLAUDE.mdに同期
cpl sync --global

パターンの確認

# パターン一覧
cpl list

# 種類でフィルタ
cpl list --type solution

# キーワード検索
cpl list --search "error"

# JSON出力
cpl list --json

サンプルパターン

ツールには、あらかじめいくつかのサンプルパターンが含まれています:

  • コーディングパターン: Reactのフォーム、エラーハンドリングなど
  • デバッグパターン: モジュールエラー段階的調査、エラーログ先行確認など
  • プロンプトパターン: 効果的な指示の出し方
  • アーキテクチャパターン: 設計に関するパターン

これらをベースに、自分のプロジェクト固有のパターンを追加していくことができます。

まとめ

改めて、claude-pattern-langの要点をまとめます。

claude-pattern-langでできること:

  1. 自動パターン抽出: Claude Codeのセッションログから、再利用可能なパターンをLLMが自動抽出
  2. パターンカタログ管理: YAML形式でパターンを保存・管理
  3. CLAUDE.md自動同期: ワンコマンドでパターンをプロジェクトに反映
  4. 効果の実証: 検証では会話ターン35%削減、コード量44%削減を達成

向いている人:

  • Claude Codeをガッツリ使っている人
  • チーム開発でClaudeの指示を統一したい人
  • 過去のセッションから学習させたい人
  • CLAUDE.mdを手動でメンテするのが面倒な人

個人的には、このツールを導入してからClaudeとのやり取りがスムーズになったと感じています。特に、チームメンバーと同じパターンを共有できるのは大きいですね。

まだv1.0.1なので、これから機能を追加していく予定です。GitHubのスターも待ってます!

https://github.com/devgonzui-ai/claude-pattern-lang

参考文献

https://www.npmjs.com/package/@gonzui/claude-pattern-lang

https://github.com/devgonzui-ai/claude-pattern-lang

https://docs.anthropic.com/en/docs/build-with-claude/claude-for-developers

Discussion