世界を動かす技術を、日本語で。

クロードコード – ドキュメントに書かれていない設定可能なすべてのこと

概要

  • Claude Code の内部許可システム「YOLO Classifier」の詳細解説
  • ドキュメント未記載の 設定・フック・スキル・エージェント の拡張機能
  • hooks によるリアルタイム動作変更と自動化例
  • frontmatter やmemoryなど、公式未公開のパラメータ紹介
  • バージョン依存性 と実装時の注意点

Claude CodeのYOLO Classifierと未公開機能

  • 内部で YOLO Classifier と呼ばれる自動許可判定システム(yoloClassifier.ts
  • 設定ファイルで 英語の説明文 を記述するだけで、環境や許容操作を柔軟に指定可能
    • 例:「this is a staging server, destructive operations are acceptable」
  • npmパッケージ としてnode_modulesにソースが含まれ、誰でも中身を確認可能
  • 公式ドキュメント未掲載の フィールド・レスポンス形式・設定項目 が多数存在

バージョン注意

  • 本内容は @anthropic-ai/claude-code@2.1.87 時点の情報
  • 未公開機能は 将来のバージョンで変更・削除される可能性 あり
  • EXPERIMENTAL付きフィールドは特に不安定扱い

設定ファイル配置・構成

  • 個人設定~/.claude/settings.json
  • プロジェクト設定.claude/settings.json(git共有可)
  • スキル~/.claude/skills/<name>/SKILL.md または .claude/skills/
  • エージェント~/.claude/agents/<name>.md
  • フックスクリプト~/.claude/hooks/
    • スクリプトはchmod +xで実行権限付与

フック(hooks)による高度な自動化

  • 公式ドキュメント未記載 のフックレスポンスフィールド多数
  • PreToolUse フックでコマンド入力書き換え・自動許可判定などが可能
    • 例:updatedInputでgit pushコマンドに--dry-run自動付与
  • SessionStart フックでファイル監視や初期文脈注入
    • 例:現在のgitブランチ・未コミットファイル数を自動取得
  • PostToolUse フックでツール実行後の出力加工や追加文脈注入
  • PermissionRequest フックでプログラム的な許可・拒否判定

hooks設定例

  • PreToolUseでgit pushをdry-run化

    {
      "hooks": {
        "PreToolUse": [{
          "matcher": "Bash",
          "hooks": [{
            "type": "command",
            "command": "~/.claude/hooks/dry-run-pushes.sh"
          }]
        }]
      }
    }
    
    • シェルスクリプト例(dry-run-pushes.sh):
      #!/bin/bash
      INPUT=$(jq -r '.tool_input.command' < /dev/stdin)
      if echo "$INPUT" | grep -q 'git push'; then
        jq -n --arg cmd "$INPUT --dry-run" '{"updatedInput": {"command": $cmd}}'
      fi
      
  • SessionStartでgit情報・ファイル監視を注入

    {
      "hooks": {
        "SessionStart": [{
          "hooks": [{
            "type": "command",
            "command": "~/.claude/hooks/session-context.sh",
            "statusMessage": "Loading project context..."
          }]
        }]
      }
    }
    
    • シェルスクリプト例(session-context.sh):
      #!/bin/bash
      BRANCH=$(git branch --show-current 2>/dev/null)
      CHANGES=$(git status --porcelain 2>/dev/null | wc -l | tr -d ' ')
      jq -n \
        --arg branch "$BRANCH" \
        --arg changes "$CHANGES" \
        '{ "watchPaths": ["package.json", ".env", "tsconfig.json"], "additionalContext": "Current branch: \($branch). Uncommitted changes: \($changes) files." }'
      
  • PreToolUseで読み取り専用コマンドを自動許可

    {
      "hooks": {
        "PreToolUse": [{
          "matcher": "Bash",
          "hooks": [{
            "type": "command",
            "command": "~/.claude/hooks/auto-approve-readonly.sh"
          }]
        }]
      }
    }
    
    • シェルスクリプト例(auto-approve-readonly.sh):
      #!/bin/bash
      CMD=$(jq -r '.tool_input.command' < /dev/stdin)
      if echo "$CMD" | grep -qE '^(ls|cat|echo|pwd|whoami|date|git status|git log|git diff)'; then
        echo '{"permissionDecision": "allow", "permissionDecisionReason": "Safe read-only command"}'
      fi
      

hooks追加プロパティ

  • once :一度だけ実行し自動解除(初回セットアップ等に最適)
  • async :バックグラウンド実行で処理をブロックしない
  • asyncRewake :通常は非同期だが、exit code 2時のみ処理をブロック

スキル・エージェントの未公開frontmatterパラメータ

  • model :利用モデル(例:haiku, opus)を指定
  • effort :推論深度(low, medium, high, max)
  • hooks :スキル有効時のみ作用するフック
  • agent :カスタムエージェントへの委譲
  • disable-model-invocation :自動起動禁止(/skill-nameのみ有効)
  • shell :実行シェル指定(例:bash)

agent用frontmatter追加項目

  • color :UIでの色分け(red, orange, yellow, green, blue, purple, pink, gray)
  • memory :永続メモリ(user, project, local)
    • 例:プロジェクトごとの知識ベース構築
  • omitClaudeMd :CLAUDE.mdの指示階層を読み込まない
  • criticalSystemReminder_EXPERIMENTAL :毎ターン注入されるシステムリマインダー(実験的)
  • requiredMcpServers :必須MCPサーバーパターン指定

まとめ

  • Claude Code公式ドキュメント未掲載 の強力な拡張機能を多数搭載
  • ソースコード解析 で新たな設定や自動化が可能
  • hooks・frontmatter を活用することで、 独自のワークフローや安全対策 を実装可能
  • バージョンアップ時の互換性 に注意しつつ、積極的な活用で開発効率と安全性を大幅向上

Hackerたちの意見

claudeパッケージは毎週10個の新しいバージョンが出て、数ヶ月ごとに新しいモデルが登場するから、ドキュメントに載ってないトリックに頼るのは絶対にやめた方がいいよ。すぐに変わるし、超特化した設定が壊れちゃうから。

私の経験では、「ドキュメントに載ってないトリック」って、ドキュメントにある機能と同じくらい壊れることが多いよ。例えば、1M opusをリリースした後に「コンテキストをクリアして計画を実行」オプションが削除されたのは、「コンテキストウィンドウはもう問題じゃないから」って理由だったし。

それは本当だけど、「一時的なハック」は「最先端」のワークフローを左右することもあるよね。毎回のリリースでclaudeの指示を再設計するわけじゃないけど、いくつかのリリースでは既存の指示を見直して、今のモデルに合っているか確認する価値があるよ。それで明らかな違いが出た。

新しいバージョンが出るたびに、効率的に低レベルのカスタマイズを扱う自動化を構築することは可能だよ。

Claude Codeの機能の多様性はすごいね。この調子だと、次の教皇はAnthropicから出るかも。

浅いコメントでごめんだけど、これは本当に素晴らしいジョークだね、マジで。よくやった。

最近のスピーチを考えると、彼らは頑張ってるんだろうね。

あの「マジックドキュメント」機能について興味があるんだけど、それはCLAUDE.mdに入れるものなの?それともプロジェクトファイルに?セッション中にそのファイルを言及する必要があるのか、それともClaudeがプロジェクト内の「マジックドキュメント」ヘッダーのすべての言及を自動で探すの?

正直な状況 > 100%ではない - それが長い道のりになる理由を正直に言いたい... https://github.com/user-attachments/assets/961eff6c-0060-45d... 私はClaude Codeにタスクの達成を諦めてほしくないんだ。ほんとにイライラする。/goalや新しいultracodeを使っても、常に諦めちゃう。私のプロジェクトはすごく複雑なんだけど(https://github.com/mohsen1/tsz)、Codexはそんな風に止まらずにずっと頑張ってくれるから。

うん、クロードにタスクリストを埋めてもらったんだけど、タスクリストの最後に行く前に、続けるか、いくつか終わらせるだけでいいか聞いてくるんだよね。

今は/loopを使ってて、やる気を出すためのプロンプトを与えてくれるんだ。Goalも使えるけど、いくつかのことにはシンプルなループの方がいいね。

AIコーディングエージェントのアプリケーション構造って、llmモデル全体でほぼ普遍的なものが出てきてるのかな?誰かこのアーキテクチャスタイルを理解するために集めたり書いたりしてる人いる?

Hacker Newsで議論の続きを見る