動かざることバグの如し

近づきたいよ 君の理想に

Claude Pro1年契約ユーザーのClaude Code設定

環境

  • Claude Code 2.1.92

設定

今までCodexを使っていたが、最近ではClaude Codeがメインになった。 定額プランなのでトークンを気にする必要がなく、年額プランを契約してしまったので当分はClaude Codeを使い続けることになる。 Claude Codeは雑な要求に対してもいい感じに実装してくれるので重宝している。

そんな俺が普段使ってるClaudeCodeの ~/.claude/settings.json の設定は以下。

{
  "permissions": {
    "defaultMode": "bypassPermissions"
  },
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.py"
  },
  "enabledPlugins": {
    "typescript-lsp@claude-plugins-official": true
  },
  "language": "日本語",
  "spinnerTipsEnabled": false,
  "autoMemoryEnabled": false,
  "skipDangerousModePermissionPrompt": true
}
  • permissions.defaultMode: bypassPermissions に設定することで毎回の許可確認を省略できる 個人開発でいちいち待ってられるか
  • statusLine: カスタムスクリプトを指定してステータスラインを表示
  • enabledPlugins: TypeScript LSPを有効化
  • language: インターフェース言語を日本語に設定
  • spinnerTipsEnabled: スピナーのヒント表示を無効化
  • autoMemoryEnabled: 自動メモリ機能を無効化 必要があればAGENTS.mdに書きたい
  • skipDangerousModePermissionPrompt: 危険なモードでの許可プロンプトをスキップ

~/.claude/statusline.pyの中身は以下 作成後に chmod +x ~/.claude/statusline.py 忘れずに。

#!/usr/bin/env python3
import json
import sys

data = json.load(sys.stdin)

R = '\033[0m'
DIM = '\033[2m'
BOLD = '\033[1m'

RINGS = ['○', '◔', '◑', '◕', '●']

def gradient(pct):
    if pct < 50:
        r = int(pct * 5.1)
        return f'\033[38;2;{r};200;80m'
    else:
        g = int(200 - (pct - 50) * 4)
        return f'\033[38;2;255;{max(g, 0)};60m'

def ring(pct):
    idx = min(int(pct / 25), 4)
    return RINGS[idx]

def fmt(label, pct):
    p = round(pct)
    return f'{DIM}{label}{R} {gradient(pct)}{ring(pct)} {p}%{R}'

model = data.get('model', {}).get('display_name', 'Claude')
parts = [f'{BOLD}{model}{R}']

ctx = data.get('context_window', {}).get('used_percentage')
if ctx is not None:
    parts.append(fmt('ctx', ctx))

five = data.get('rate_limits', {}).get('five_hour', {}).get('used_percentage')
if five is not None:
    parts.append(fmt('5h', five))

week = data.get('rate_limits', {}).get('seven_day', {}).get('used_percentage')
if week is not None:
    parts.append(fmt('7d', week))

print('  '.join(parts), end='')

以下の記事のスクリプトを拝借した。

nyosegawa.com