Open3

Claude Code関連 - 自分用抜粋

Shuichi TsutsumiShuichi Tsutsumi

https://zenn.dev/medicalforce/articles/8bc0b6afbbb8a7

CLAUDE.md を充実させるためのプロンプト例

CLAUDE.md にコンテキストをゼロから記述するのは大変なので、公式のサンプルプロンプトを活用し効率的に CLAUDE.md を充実させる。以下は、日本語で出力するように少しチューニングを加えたプロンプト例:

> what does this project do?, and write it in Japanse in CLAUDE.md
> give me an overview of this codebase, and write it in Japanse in CLAUDE.md
> what technologies does this project use?, and write it in Japanse in CLAUDE.md
> explain the main architecture patterns used here, and write it in Japanse in CLAUDE.md
> where is the main entry point?, and write it in Japanse in CLAUDE.md
> explain the folder structure, and write it in Japanse in CLAUDE.md
> analyze the database schema, and write it in Japanse in CLAUDE.md
> what are the key data models?, and write it in Japanse in CLAUDE.md
> how does error handling work in this app?, and write it in Japanse in CLAUDE.md
> how is authentication handled?, and write it in Japanse in CLAUDE.md

(翻訳)

> このプロジェクトは何をするものですか?それをCLAUDE.mdに日本語で書いてください。
> このコードベースの概要を説明し、CLAUDE.mdに日本語で記述してください
> このプロジェクトで使用されている技術は何ですか?、とCLAUDE.mdに日本語で記述してください
> ここで使用されている主なアーキテクチャパターンを説明し、CLAUDE.mdに日本語で記述してください
> メインのエントリポイントはどこですか?、とCLAUDE.mdに日本語で記述してください
> フォルダー構造を説明し、CLAUDE.mdに日本語で記入してください
> データベーススキーマを分析し、CLAUDE.mdに日本語で記入してください
> 主要なデータモデルは何ですか?、とCLAUDE.mdに日本語で記入してください
> このアプリでのエラー処理はどのように機能していますか?、とCLAUDE.mdに日本語で記入してください
> 認証はどのように処理されていますか?を日本語でCLAUDE.mdに記述してください

ultrathink

特定の単語を使用することで、消費トークンは増えますが、より深く思考し、回答の精度を高めることができる
Maxプランならどれだけトークンを消費しても値段は変わらないので常に ultrathink がおすすめ

  • think (上限4,000トークン)
  • think hard (上限10,000トークン)
  • think harder (上限31,999トークン)
  • ultrathink (上限31,999トークン)

上記のように、思考深度は ultrathink が最も深く、複雑な問題に対してより質の高い回答を得たい場合に有効

これは公式ドキュメントには記載されていない。@anthropic-ai/claude-codecli.js に直接記述されている。

Explore, Plan, Code, Commit

コード理解、設計、実装、コミットの順番で命令を実行することがベストプラクティスとされている

1. Explore

まずはコードベースや関連ファイルなどを理解させるフェーズ。

> find the files that handle user authentication

2. Plan

実装の計画や設計について深く考えさせるフェーズ。

ここで

ultrathink

を使うと効果的

> ultrathink how to implement Role Based User Authentication

3. Code

計画に基づき、具体的なコード実装を依頼するフェーズ。

> implement its solution

4. Commit

実装された変更内容をコミットさせるフェーズ。

> commit this

参照:Explore, Plan, Code, Commit - Anthropic Engineering

処理完了を通知させる

claude config set --global preferredNotifChannel terminal_bell
Shuichi TsutsumiShuichi Tsutsumi

https://zenn.dev/hokuto_tech/articles/86d1edb33da61a

セッション内コマンド

  • /init - プロジェクト用のCLAUDE.mdを生成
  • /clear - コンテキストをリセット(タスクが変わったら即実行)
  • /compact - 会話を要約してトークンを節約
  • /review - Pull Request などを指定するとレビューしてくれます

音声入力で効率化

音声入力には明確な利点があります:

  • 入力速度: 平均的な話速は150-200語/分、タイピングは40-60語/分
  • 情報量: 音声では背景・理由・期待結果を自然に含めて話す傾向がある
  • 認知負荷: キーボード操作を考えずに、問題解決に集中できる

タイピングでは「バグ修正」と書くところを、音声では「2ページ目でデータが表示されないバグを修正」のように具体的に伝えやすくなる。結果として、Claude Codeはより正確な解決策を提示できる。

CLAUDE.md, settings.json

メモリファイルの種類

ファイル 場所 用途
CLAUDE.md プロジェクトルート チーム共有のルール
CLAUDE.md .claude/ 個人のプロジェクトのルール
CLAUDE.md ~/.claude/ 全プロジェクト共通の個人のルール
settings.json .claude/ プロジェクトでのClaude Codeの設定
settings.local.json .claude/ 個人&プロジェクトでのClaude Codeの設定
settings.json ~/.claude/ 全プロジェクト共通のClaude Codeの設定

事前許可

頻繁に使う安全なコマンドは事前に許可しておくと、作業が中断されない。

settings.jsonのpermissionについて

  • permission.allow: 設定した操作・ファイルは、原則として実行される
  • permission.deny: 設定した操作やファイルは、原則としてClaude Codeは実行しない (allow よりも優先)
  • どちらにもない操作・ファイル: 実行する前に人間に確認を取る

自動承認をするコマンドの設定

.claude/settings.jsonに追加:

{
  "permissions": {
    "allow": [
      "Bash(pnpm test)" // pnpm testを常に許可
      "Bash(gh pr view:*)", // gh pr view 系を常に許可
    ]
  }
}

自動承認を避けるべきコマンド

  • npm install 等のパッケージの追加(セキュリティリスク)
  • git commit / push など(破壊的変更を防ぐために、人の確認が必要)
  • env ファイルの読み込み (重要なキーが含まれる場合があるため)
  • rm など (致命的なファイルの削除を防ぐ)

permissions.denyの設定

.claude/settings.jsonに以下のように設定すると自動承認を避けられる:

{
  "permissions": {
    "deny": [
      "Bash(git commit:*)", // git commitをブロック
      "Bash(git push:*)" // git pushをブロック
      "Bash(rm:*)", // 予期せぬファイル削除を防ぐ
      "Bash(sudo:*)", // sudo系コマンドをブロック
      "Read(.env.*)" // 環境変数の読み込みを防ぐ
    ]
  }
}

画像・スクリーンショットの活用

ターミナルに画像を Shift を押しながらドラッグ&ドロップ、もしくは Control + V (macOS)で貼り付けできる。デザインしたものを画像で渡すと、コンテキストに含めてくれる。

中断と修正

  • Esc×2で前のメッセージを編集して再実行

思考モード

プロンプトに以下のような言葉を付け加えるとより熟考してくれるようになる。

思考レベル

  • think - 基本的な思考
  • think hard - より深い思考
  • think harder - さらに深い思考
  • ultrathink - 最大限の思考時間

1-2回実行してうまくいかない場合は、ultrathink をつけて依頼すると解決することが多い。

Taskツール(サブエージェント)で多角的分析

Taskツールは、メインのClaude Codeとは別のサブエージェントを起動し、並列で作業させる機能。複雑な問題の調査や、複数の観点からの分析に有効。

メリット

  • メインタスクのコンテキストを保護(トークン節約)
  • 複数の観点から並列で分析できる
  • 各サブエージェントが独立して深い調査を実行

使用例

> Taskツールを使って、このコンポーネントを4つの観点(パフォーマンス、アクセシビリティ、保守性、UX)から分析して

コスト確認

npx ccusage@latest          # 日次の使用量とコストを表示
npx ccusage@latest blocks   # 現在のセッションブロックを確認

タスク完了通知の設定例

.claude/settings.local.json または .claude/settings.json に以下のような設定を追加すると通知音が鳴るそうです。

{
  "preferredNotifChannel": "terminal_bell"
}

ただ、なぜか僕の環境ではうまくいきません😭

なので、代わりに~/.claude/settings.json(全プロジェクト共通の個人設定)に以下を追加しています。

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "say \"Confirm, please!\""
          }
        ]
      }
    ],
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.stop_hook_active' | grep -q false && say \"Task completed!\""
          }
        ]
      }
    ]
  },
}

display notification や、良いコマンドを使ったり、project/path/.claude/settings.local.json でプロジェクトごとの専用メッセージを設定するなど使いやすい形にカスタマイズしてください。

reviewit で完成時にレビュー

こちらを使うとタスクの完了時に reviewit を起動できます。 reviewit を使うと AI の変更内容をレビューできて、指摘事項をまとめてコピペすることができます。

.claude/settings.local.json (プロジェクト限定) or ~/.claude/settings.json (プロジェクト共通) に以下を追加。

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "~/.claude/scripts/launch-reviewit.sh /path/to/project"
          }
        ]
      }
    ]
  },
}

~/.claude/scripts/launch-reviewit.sh に以下を追加。

#!/bin/bash

# Get the repository path (default to current directory if not provided)
REPO_PATH="${1:-$(pwd)}"

# Change to the repository directory
cd "$REPO_PATH" || exit 1

# Launch ReviewIt if there are git changes
if [[ -n $(git diff --name-only) || -n $(git diff --cached --name-only) || -n $(git ls-files --others --exclude-standard) ]]; then
  # Find an available port in the 4000-9999 range
  for port in $(seq 4000 9999); do
    if ! lsof -Pi :$port -sTCP:LISTEN -t >/dev/null 2>&1; then
      reviewit . --port $port &
      break
    fi
  done
fi

launch-reviewit.sh に実行権限を付与。

chmod a+x ~/.claude/scripts/launch-reviewit.sh

git の差分があるときだけ実行してます。
(スクリプトはポートのところ適当なのすんません😹)

Shuichi TsutsumiShuichi Tsutsumi

CLAUDE.md を出力させるためにClaudeにヒアリングしてもらう

https://x.com/naoya_ito/status/1929073291970363545

作りたいコマンドラインツールがあるんですが、要求仕様を自分で書き出すのが面倒くさいです
Claude さんに色々質問いただいたら答えていくので、その結果をまとめて Claude Code に開発させるための CLAUDE.mdにまとめてください

3つ一気に質問されるとめんどうなので一間一答で