🍣

claude commandのスラッシュコマンドでコーディングの癖を検知させてみた

に公開

今回はclaude codeのスラッシュコマンドを実装して、指定したファイルからコーディングの癖を見抜く仕組みを入れてみました。

※ 出張中につき超短編です

スラッシュコマンドの実装

以下のようなスラッシュコマンドを作りました。ファイルは~/.claude/commands/kuse.mdです。内容は極めてシンプルで、指定されたファイルをよんでただただ癖を見抜かせるだけです。

- 指定されたファイルから、私のコーディングの癖を見出してください
- 癖の中でベストプラクティスに沿っていないコーディングがあれば指摘してください

使ってみた

例えば以下のようなmain.pyを作ってみました。変数定義の真下に関数を定義したりとフォーマットはアンチパタンにして、グローバルの変数を操作するようなものを作ってみました。

main.py
import numpy as np

x = np.random.randint(0, 256, (100, 100, 3))
def print_x():
    print(x)
def add_1():
    return x + 1

print_x()
x = add_1()

これを利用してclaude codeの/kuseコマンドを実行すると、以下のような結果になりました。

コマンド:/kuse main.py
結果

コーディング分析結果

あなたのコーディングの癖

  1. グローバル変数の使用 - 変数 x がモジュールレベルで定義
  2. 簡潔すぎる変数名 - x という1文字変数
  3. 関数名が動詞形 - print_x(), add_1()
  4. 暗黙的な副作用 - 関数がグローバル変数に依存

ベストプラクティスに反する点

1. グローバル変数の多用

  • x がグローバルスコープで定義され、関数内で直接参照
  • 問題: テストが困難、予期しない変更のリスク、コードの再利用性低下
  • 改善案: 引数として渡すか、クラスのメンバー変数として管理

2. 意味不明な変数名

  • x は何を表すか不明
  • 改善案: image_data, pixel_array など説明的な名前を使用

3. 副作用のある関数設計

  • add_1() が暗黙的にグローバル変数を参照
  • 改善案: 純粋関数にして引数を受け取る形に
def add_one(array):
    return array + 1

4. 型ヒントの欠如

  • 関数の引数・戻り値の型が不明
  • 改善案: 型ヒントを追加
def add_one(array: np.ndarray) -> np.ndarray:
    return array + 1

5. docstringの不在

  • 関数の目的が不明確
  • 改善案: 各関数にdocstringを追加

事前に想定していたような内容を返してくれたのでわずかなプロンプトですが良さそうです。

まとめ

今回は超短編でしたが、スラッシュコマンドを使ってソースコードのよくないところを検知してくれる機能を作ってみました。わざわざこのようなコマンドを作らなくてもコードを指定すればみてくれますが、スラッシュコマンドのようなものを作るのが好きな人はぜひ作ってみてください。

Discussion