Claudeしたい(claude-code

$ claude [options] [command] [prompt]
$ claude                   # セッションを開始
$ claude --continue        # 最近のセッションを再開
$ claude --resume <id>     # セッションIDを指定して再開
$ claude --print           # 結果をターミナルに表示して終了(パイプ利用)
$ claude config list       # 設定を確認

claudeコマンドで、Claudeのセッションを開始できます。 セッションの内容は~/.claude/の中に保存されるようで、 --resumeオプションで、過去のセッションから再開することもできます。

インストールしたい(claude-code

$ brew install --cask claude-code
$ claude --version
1.0.98 (Claude Code)

// 自動更新をOFFにする
$ claude config set -g autoUpdates false
$ claude config get -g autoUpdates

// 手動で更新する
$ brew upgrade --cask claude-code

Homebrewでclaude-codeをインストールできます。 Homebrewで管理する場合は、Claudeの自動更新はOFFにして、手動で更新するほうがよいそうです。

注釈

claudeはデスクトップアプリ用、 claude-codeはCLI用のcaskのようです。

ターミナル入力で改行したい(/terminal-setup

> /terminal-setup
  ⎿  Configured Terminal.app settings:
     - Enabled "Use Option as Meta key"
     - Switched to visual bell
     Option+Enter will now enter a newline.
     You must restart Terminal.app for changes to take effect. dark-ansi

/terminal-setupでClaudeセッション内で 改行(Option+Enter)できるようになります。

リポジトリの初期設定したい(/init

> /init

/initで、プロジェクト内のファイルを確認し、適切なCLAUDE.mdを生成します。 既存のリポジトリで、すぐにClaudeによるサポート体制を組むことできます。

注釈

ある程度、形が整っているリポジトリだと非常にうまく移行できます。 まだ、整っていない場合でも README.md に、やりたいことなどを書きだしておくと、 それらを読み込み、より目的に近づいた設定ファイルを生成してくれます。

vimモードしたい(/vim

> /vim

/vimで、Claudeセッションをnormalモードとvimモードに変更できます。 vimモードにすると、vimエディターのようにモーダル(NORMAL/INSERT)切り替えが有効になります。

権限管理したい(/permissions

> /permissions
╭───────────────────────────────────────────────────────────────────────╮
│ Permissions:  Allow   Ask   Deny   Workspace                          │
│                                                                       │
│ Claude Code won't ask before using allowed tools.                     │
│                                                                       │
│ ❯ 1. Add a new rule…                                                  │
│                                                                       │
╰───────────────────────────────────────────────────────────────────────╯
   Tab to select tab · Enter to confirm · Esc to cancel

セッション内で/permissionsコマンドを実行すると、Claudeの権限を設定できます。 AllowAskDenyWorkspaceをTABもしくは矢印キーで選択し、 表示されたダイアログにしたがって、操作対象を入力して設定します。

設定した内容は プロジェクトのローカル設定(.claude/settings.local.json)、 プロジェクト設定(.claude/settings.json)、 ユーザー設定(~/.claude/settings.json)のいずれかに保存できます。

注釈

.claude/settings.jsonは、開発チーム全体で共有したいプロジェクト設定を記述するファイルです。 一方、.claude/settings.local.jsonは、チームには共有しない個人用設定です。

サブエージェントしたい(/agents

> /agents
╭───────────────────────────────────────────────────────────────────────╮
│ Agents                                                                │
│ No agents found                                                       │
│                                                                       │
│ ❯ Create new agent                                                    │
│                                                                       │
│ No agents found. Create specialized subagents that Claude can         │
│ delegate to.                                                          │
│ Each subagent has its own context window, custom system prompt, and   │
│ specific tools.                                                       │
│ Try creating: Code Reviewer, Code Simplifier, Security Reviewer, Tech │
│  Lead, or UX Reviewer.                                                │
│                                                                       │
│                                                                       │
│   Built-in (always available):                                        │
│   general-purpose · sonnet                                            │
│   statusline-setup · sonnet                                           │
│   output-style-setup · sonnet                                         │
│                                                                       │
╰───────────────────────────────────────────────────────────────────────╯
   Press ↑↓ to navigate · Enter to select · Esc to go back

/agentsコマンドで、サブエージェントを追加できます。

サブエージェントの設定は プロジェクト設定(.claude/agents/)、 ユーザー設定(~/.claude/agents/)のいずれかの中に保存できます。

ビルトインのサブエージェントとして、 general-purposestatusline-setupoutput-stype-setupが用意されているようです。

新規サブエージェントもダイアログにしたがって進めると、Claude自身が生成してくれます。 生成された内容をカスタマイズするのが推奨されています。

フックしたい(/hooks

> /hooks
╭───────────────────────────────────────────────────────────────────────╮
│ Hook Configuration                                                    │
│                                                                       │
│ Hooks are shell commands you can register to run during Claude Code   │
│ processing. Docs                                                      │
│                                                                       │
│ Select hook event:                                                    │
│ ❯ 1. PreToolUse - Before tool execution                               │
│   2. PostToolUse - After tool execution                               │
│   3. Notification - When notifications are sent                       │
│   4. UserPromptSubmit - When the user submits a prompt                │
│ ↓ 5. SessionStart - When a new session is started                     │
╰───────────────────────────────────────────────────────────────────────╯
   Enter to acknowledge risks and continue · Esc to exit

/hooksコマンドで、Claudeの処理に合わせたフックを設定できます。 PreToolUsePostToolUseUserPromptSubmit, NotificationStopSubagentStopPreCompactSessionStart, SessionEndに対してフックを設定できます。

設定したい(.claude/settings.json

{
  "permissions": {
    "allow": [
      "Bash(git:*)",
      "Bash(uv:*)",
      "Bash(task:*)",
      "Bash(pytest:*)",
      "Bash(ruff:*)",
      "Bash(mkdocs:*)",
      "Bash(glab:*)",
      "Read",
      "Glob",
      "Grep",
      "LS",
      "Task",
      "TodoWrite"
    ],
    "ask": [
      "Edit",
      "Write",
      "MultiEdit",
      "Bash(git commit:*)"
    ]
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./**/.env)",
      "Read(./**/.env.*)",
      "Read(./secrets/**)",
      "Bash(rm -rf:*)",
      "Bash(git push -f:*)",
      "Bash(git push --force:*)",
      "Bash(sudo:*)",
      "Bash(curl:*)"
    ],
    "defaultMode": "default",
    "additionalDirectories": [
      "./docs/",
      "./examples/"
    ]
  },
  "env": {
    "PYTHONPATH": "src"
  },
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write|MultiEdit",
        "hooks": [
          {
            "type": "command",
            "command": "task lint 2>/dev/null || true"
          }
        ]
      }
    ]
  },
  "includeCoAuthoredBy": false
}

Claudeの設定は ~/.claude/settings.jsonもしくは、 プロジェクトごとの(project_root)/.claude/settings.jsonで変更できます。

権限を管理したい(permissions

{
  "permissions": {
    "allow": ["..."],
    "deny": ["..."],
    "defaultMode": "...",
    "additionalDirectories": ["..."],
    "disableBypassPermissionsMode": "..."
  }
}

permissionsキーでClaudeが操作できる権限を設定できます。 サブキーとして allowaskdenyadditionalDirectoriesdefaultModedisableBypassPermissionsModeを設定できます。

許可したい(permissions.allow

"allow": [
  "Bash",                    // 全てのBashコマンド
  "Bash(git:*)",            // git関連コマンドのみ
  "Read",                   // ファイル読み取り
  "Glob",                   // パターン検索
  "Grep",                   // 文字列検索
  "LS",                     // ディレクトリ一覧
  "Task",                   // タスク実行
  "WebSearch",              // Web検索
  "TodoWrite"               // TODO作成
]

allowキーにはClaudeによる使用を許可する操作をリスト形式で指定します。 Bashはすべてのbashコマンドを許可してしまうので、 askキーやdenyキーを適切に設定するか、 Bash(git:*)のようにコマンド名を限定するようにします。

注釈

Bash(uv:*)Bash(glab:*)Bash(task:*)のように、 プロジェクトごとに利用するコマンドを追加します。

確認したい(permissions.ask

"ask": [
  "Edit",                   // ファイル編集
  "Write",                  // ファイル作成
  "MultiEdit",              // 複数ファイル編集
  "WebFetch",               // Web取得
]

askキーには、Claudeによる使用に確認を求める操作をリスト形式で指定します。 EditWriteMultiEditのようなファイルを編集する操作を追加しました WebFetchも、意図しないサイトに勝手にアクセスしないように追加しています。

拒否したい(permissions.deny

"deny": [
  "Bash(curl:*)",           // curl系コマンド拒否
  "Bash(rm -rf:*)",         // 危険な削除コマンド拒否
  "Bash(git push -f:*)",         // 危険な削除コマンド拒否
  "Bash(git push --force:*)",         // 危険な削除コマンド拒否
  "Read(./.env)",           // ルートの環境変数ファイル読み取り拒否
  "Read(./.env.*)",         // ルートの環境変数系ファイル拒否
  "Read(./**/.env)",        // サブディレクトリの環境変数ファイル読み取り拒否
  "Read(./**/.env.*)",      // サブディレクトリの環境変数系ファイル拒否
  "Read(./secrets/**)",     // secretsディレクトリ拒否
  "Read(./config/credentials.json)", // 認証情報拒否
  "WebFetch"                // Web機能全体拒否
]

denyキーには、Claudeによる使用を拒否する操作をリスト形式で指定します。 rm -rfgit push --forceのようにClaudeに実行されると困るコマンドを追加します。 また、.envにパスワードやAPIトークンなどの機密情報が含まれる場合は、Readできないようにしておきます。

注釈

Readできないようにすると、EditもWriteもできなくなります。

初回モード(permissions.defaultMode

"defaultMode": "default"     // 標準モード(初回確認)
"defaultMode": "acceptEdits" // 編集自動承認
"defaultMode": "plan"        // 読み取り専用モード

defaultModeキーでClaudeを起動した時の権限モードを指定できます。 デフォルト値はacceptEditsになっているので、defaultを設定しておくとよいと思います。 読み取り専用で動作させたいプロジェクトではplanにします。

追加ディレクトリ(permissions.additionalDirectories

"additionalDirectories": [
  "./docs/",               // ドキュメントディレクトリ
  "~/shared/libraries/",   // 共有ライブラリ
  "/usr/local/bin/"        // システムディレクトリ
]

additionalDirectoriesキーで、Claudeがアクセスできる場所を追加できます。 プロジェクトルートからの相対パス、もしくは絶対パスで指定します。

バイパスモード(permissions.disableBypassPermissionsMode

"disableBypassPermissionsMode": "disable" // バイパスモード無効化

disableBypassPermissionsModeキーでバイパスモードを変更できます。 デフォルト値のdisableのままにしておくのがよいです。

フックしたい(hooks

{
    "hooks": {
        "PreToolUse": [...],    // ツール呼び出し前に実行
        "PostToolUse": [...],   // ツール呼び出し後に実行
        "UserPromptSubmit": [...],    // プロンプト送信後に実行(Claudeの処理前)
        "Notification": [...],    // Claudeの通知送信時に実行
        "Stop": [...],    // 応答終了時に実行
        "SubagentStop": [...],    // サブエージェントのタスク完了時に実行
        "PreCompact": [...],    // コンパクト操作する前に実行
        "SessionStart": [...],    // セッションを開始/再開するときに実行
        "SessionEnd": [...],    // セッション終了するときに実行
    }
}