Skip to content

fideguch/my_dotfiles

Repository files navigation

my_dotfiles

macOS (Apple Silicon) 用の個人dotfiles。zsh, Neovim (LazyVim), Starship を中心としたターミナル環境。

セットアップ

git clone https://github.com/fideguch/my_dotfiles.git ~/my_dotfiles
cd ~/my_dotfiles
chmod +x set_up.sh
./set_up.sh

スクリプトが Homebrew, Brewfile パッケージ, シンボリックリンク, LazyVim, vim-plug を自動セットアップ。

セットアップ後:

nvim                                      # LazyVim 初回起動 (プラグイン自動インストール)
$(brew --prefix)/opt/fzf/install          # fzfキーバインド (初回のみ)

ファイル構成

ファイル 説明
.zshrc Zsh設定 (ヒストリ, 補完, エイリアス, PATH)
nvim/ Neovim (LazyVim) 設定 (メインエディタ)
.vimrc Vim設定 (レガシーフォールバック)
starship.toml Starshipプロンプト
Brewfile Homebrewパッケージ一覧
.my_commands/ 自作コマンド
.vim/ Vimカラースキーム, vim-plug
ghostty/ Ghostty/cmux 設定 (Japanesque テーマ, フォント, キーバインド)
cmux/ cmux macOS defaults スクリプト
iterm2/ iTerm2 Pokemon プロファイル
LaunchAgents/ macOS launchd plist(bochi S3 セーフティネット & 週次ヘルスチェック)
set_up.sh セットアップスクリプト

自作コマンド (.my_commands/)

コマンド 説明
pokels [-n name] [-t type] [-r region] [-e] ポケモン一覧 (種族値付き)
pokefind <name> [-t type] [-r region] [-s stats] ポケモン逆引き検索 (日本語/英語, 種族値)
poke [args] 壁紙変更+図鑑情報表示。poke 150 poke -n gengar
mka <name> <cmd> エイリアスを .zshrc に追加。mka gs 'git status'
gccw <file> gcc -Wall -Wextra -Werror のラッパー

主なエイリアス

エイリアス コマンド 備考
v, vi nvim メインエディタ
vz nvim ~/.zshrc 設定編集用
vv nvim ~/.vimrc 設定編集用
vn nvim ~/my_dotfiles/nvim/ LazyVim設定編集
oldvim command vim 旧Vimフォールバック
sovz source ~/.zshrc 設定反映
g git
d / dc docker / docker-compose
cc claude Claude Code
ccc claude --continue 前回セッション継続
ccr claude --resume セッション再開
ccf claude --dangerously-skip-permissions 権限スキップ
ccp claude --print 非対話モード
mkcd <dir> mkdir + cd ディレクトリ作成&移動

エディタキーマップ

Neovim (LazyVim) と旧Vimで同じキーバインドが使える(筋肉記憶移行済み)。

キー 動作 Neovim 旧Vim
Ctrl+e ファイルツリー開閉 Neo-tree NERDTree
Ctrl+n ファイル検索 Telescope fzf
Ctrl+p バッファ一覧 Telescope fzf
Ctrl+z 最近開いたファイル Telescope fzf
Ctrl+g grep検索 Telescope (live_grep) fzf (ripgrep)
Tab+l/h タブ移動 共通 共通

LazyVim 固有キー

キー 動作
Space which-key メニュー (全操作の入口)
<leader>gg lazygit 起動
<leader>ha / <leader>1-4 Harpoon (ファイル高速ジャンプ)
<leader>pk ポケモン背景変更
gd / gr / K 定義ジャンプ / 参照一覧 / ホバードキュメント (LSP)
<leader>cf ファイルフォーマット

ポケモン背景 (iTerm2 / cmux / Neovim)

Pokemon-Terminal でターミナル背景にポケモンを表示。 ターミナル起動時に厳選22匹からランダムで1匹を設定。

poke -n gliscor  # グライオンに変更
poke 150         # ミュウツー
poke             # 全ポケモンからランダム
poke --clear     # 背景クリア (cmux のみ)

poke$TERM_PROGRAM でバックエンドを自動判別:

ターミナル バックエンド
iTerm2 AppleScript (pokemon-terminal)
cmux (Ghostty) Kitty graphics protocol (z=-1, テキストの後ろに表示)

cmux ではウィンドウリサイズ時に .zshrcTRAPWINCH が自動的に再描画する。

Neovim 統合

Neovim (LazyVim) はカラースキーム (catppuccin-mocha) の transparent_background = true 設定により、ターミナルのポケモン背景がエディタ内で透けて見える。起動時のダッシュボードに現在のポケモン名を表示。<leader>pk でNeovim内からポケモン変更も可能。

Claude Code セッション中も poke コマンドで随時変更可能。

Pokemon Terminal v2.0 (pokemon-terminal/)

ピカチュウテーマで iTerm2 / Ghostty / tmux / LazyVim / Claude Code を統合するスキン。

Phase 役割
α (Skin) starship pokemon palette + ◉ モンスターボールプロンプト
β (MOTD) 起動時の今日のパートナー (15体ローテ、date +%j シード)
γ (Living Prompt) starship right_formatkrabby silhouette
δ (LazyVim) dashboard ヘッダー + ⚡ 時計 lualine + :PokemonRandom
Claude cc alias で pokeclaude wrapper、statusLine + SessionStart hook

詳細は pokemon-terminal/README.md を参照。

Claude Code (claude/)

Claude Code の設定一式。set_up.sh~/.claude/ にシンボリックリンクが張られる。

ディレクトリ 説明
claude/CLAUDE.md グローバル設定(言語・スタック・ワークフロー)
claude/rules/ コーディング規約(共通 + 10言語)
claude/agents/ 専門サブエージェント (28個)
claude/skills/ タスク別リファレンス (48個)
claude/hooks/ 自動化フック (pre/post-tool)
claude/commands/ カスタムコマンド

機密ファイル (settings.local.json, mcp-configs/) は .gitignore で除外済み。 テンプレートは claude/settings.local.template.json を参照。

3層構成

Claude Code 環境は以下の3層で管理される。新しいマシンでは set_up.sh 実行後、Layer 3 の手動インストールが必要。

Layer 1: dotfiles (このリポジトリ) -- set_up.sh でシンボリックリンク

ECC (Everything Claude Code) 由来スキル、rules、agents、commands、hooks を含む。このリポジトリには 28 agents と 48 skills が直接含まれている。

Layer 2: 自作 GitHub リポジトリ -- set_up.sh で自動 clone

set_up.shfideguch/ 配下の自作スキルリポジトリを clone し、~/.claude/skills/ に配置する。

スキル リポジトリ 配置先
bochi fideguch/bochi ~/.claude/skills/bochi (直接 clone)
pm-data-analysis fideguch/pm_data_analysis ~/.claude/skills/pm-data-analysis (直接 clone)
pm-ad-analysis fideguch/pm_ad_analysis ~/pm_ad_analysis → symlink
speckit-bridge fideguch/speckit-bridge ~/.claude/skills/speckit-bridge (直接 clone)
requirements_designer fideguch/requirements_designer ~/.agents/skills/ → npx skills 経由
google-workspace fideguch/google-workspace ~/google_mcps → symlink

注: pm-ad-operationspm-ad-analysis に統合済み。単独スキルとしては存在しない。

Layer 3: 外部スキル -- 手動インストール (INSTALL_SKILLS.md 参照)

npx skills add でインストールする PM スキル群 (45+)、Vercel Labs スキル、公式プラグイン (skill-creator, discord) 等。詳細は claude/INSTALL_SKILLS.md を参照。

配置方式

set_up.sh は以下のルールで ~/.claude/ にファイルを配置する:

対象 方式 理由
CLAUDE.md, settings.json ファイル単位シンボリックリンク 個別管理
rules/, agents/, hooks/, commands/ ディレクトリ単位シンボリックリンク 一括管理
skills/ スキル単位でマージ Layer 2/3 のスキルを壊さない

bochi-data 双方向同期 (Mac ↔ S3 ↔ Discord/Lightsail)

bochi スキルが生成するメモ・トピック・ニュースペーパー (~/.claude/bochi-data/) を、Mac CLI と Discord bot (Lightsail) で双方向同期する。S3 (bochi-sync-fumito, ap-northeast-1) を中継。

同期スクリプト構成

claude/scripts/hooks/bochi-s3-*.sh の6本 + launchd 2基でカバー:

Script 役割 起動契機
bochi-s3-push.sh bochi-data の Write/Edit を S3 へ即時 push (async)。失敗時はログ追記+3+/h で macOS 通知 PostToolUse(Write|Edit) hook
bochi-s3-pull.sh セッション開始時に S3 から pull SessionStart hook
bochi-s3-pull-on-read.sh Read/Grep 前に S3 から pull (5秒 debounce) PreToolUse(Read|Grep) hook
bochi-s3-safety-push.sh 10分毎の冗長 push (bash redirect 等 hook バイパスの救済) launchd StartInterval=600
bochi-s3-safety-pull.sh 5分毎の冗長 pull (cron, 1分オフセット) cron 1-56/5 * * * *
bochi-s3-healthcheck.sh 月曜 09:00 JST に Lightsail へ SSH してラウンドトリップテスト launchd StartCalendarInterval

全 hook 設定は claude/settings.jsonhooks key に集約。launchd plist は LaunchAgents/com.fideguch.bochi-*.plist に格納し、launchctl load -w で有効化(詳細は claude/scripts/hooks/README-launchd.md)。

Write Ownership 分担

衝突防止のため push 時に uname で判別し排他的にディレクトリを所有:

環境 書き込み権
Mac (Darwin) memos/, index.jsonl, context-seeds/
Lightsail (Linux) topics/, newspaper/, conversations/, reflections/, seen.jsonl, sources/, stats/, user-profile.yaml, cache/

既知の不具合と対策(2026-04-30)

  • BUG-1: find がシンボリックリンクを辿らない → Lightsail の ~/.claude/bochi-data は symlink のため push が3週間以上停止していた。find -L に修正で復旧
  • BUG-2: 同サイズ・別内容ファイルの同期漏れ → pull 系の aws s3 sync--exact-timestamps を追加(mtime 比較で確実検知)
  • ネスト構造 (bochi-data/bochi-data/) の再発防止 → 全 sync script の冒頭に pre-flight check を追加。検出時は stderr に WARNING を出力し、rm -rf を促す(abort はせず sync は継続)
  • BUG-3: cat > file 等 bash redirect は PostToolUse hook をバイパスbochi-s3-safety-push.sh を launchd 10 分間隔で起動し構造的に救済
  • BUG-4: --quiet 起因の silent failurebochi-s3-push.sh で stderr 捕捉し ~/.claude/logs/bochi-s3-push.log に ISO8601 timestamp + exit code + stderr を追記。直近 1 時間で 3 回以上失敗時のみ macOS 通知(1h cooldown)。10MB で .log.1.gz に rotate
  • BUG-5: ラウンドトリップテストの実行漏れbochi-s3-healthcheck.sh を launchd 週次(月曜 09:00 JST)で起動し s3-sync-test.sh を Lightsail に SSH 投入

launchd 有効化(新マシン or 初回のみ)

set_up.sh に未統合のため、以下を手動実行:

mkdir -p ~/Library/LaunchAgents ~/.claude/logs
ln -sf ~/my_dotfiles/LaunchAgents/com.fideguch.bochi-safety-push.plist ~/Library/LaunchAgents/
ln -sf ~/my_dotfiles/LaunchAgents/com.fideguch.bochi-healthcheck.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/com.fideguch.bochi-safety-push.plist
launchctl load -w ~/Library/LaunchAgents/com.fideguch.bochi-healthcheck.plist
launchctl list | grep com.fideguch.bochi   # 2行表示されれば成功

トラブルシュート(aws PATH、SSH 公開鍵、AWS SSO 期限切れ等)は claude/scripts/hooks/README-launchd.md を参照。

再実行の安全性(Idempotency)

set_up.sh は何度実行しても安全です:

  • Homebrew: command -v brew で存在チェック、インストール済みならスキップ
  • Brewfile: brew bundle install は冪等(インストール済みパッケージはスキップ)
  • シンボリックリンク: 既存リンクは削除→再作成、通常ファイルはタイムスタンプ付きバックアップ後にリンク作成
  • ディレクトリ: mkdir -p で既存なら何もしない
  • vim-plug: 存在チェック後にインストール
  • Neovim/LazyVim: nvim/ をシンボリックリンク、ヘッドレスで Lazy! sync 実行(失敗してもスクリプト中断なし)
  • Ghostty/cmux: config はコピー、background はシードコピー(ランタイム状態)、cmux defaults はスクリプト実行
  • iTerm2: アプリ存在チェック後にセットアップ

git pull 後に再実行することで、設定の更新を安全に適用できます。

更新

cd ~/my_dotfiles && git pull
brew bundle install --file=Brewfile
nvim --headless "+Lazy! sync" +qa        # LazyVim プラグイン更新
vim +PlugUpdate +qall                    # 旧Vim プラグイン更新 (任意)

必要環境

  • macOS (Apple Silicon)
  • Nerd Font (アイコン表示用)
  • ターミナル: cmux (推奨) または iTerm2
  • ポケモン背景: pip3 install --user git+https://github.com/LazoCoder/Pokemon-Terminal.git