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 |
セットアップスクリプト |
| コマンド | 説明 |
|---|---|
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 |
タブ移動 | 共通 | 共通 |
| キー | 動作 |
|---|---|
Space |
which-key メニュー (全操作の入口) |
<leader>gg |
lazygit 起動 |
<leader>ha / <leader>1-4 |
Harpoon (ファイル高速ジャンプ) |
<leader>pk |
ポケモン背景変更 |
gd / gr / K |
定義ジャンプ / 参照一覧 / ホバードキュメント (LSP) |
<leader>cf |
ファイルフォーマット |
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 ではウィンドウリサイズ時に .zshrc の TRAPWINCH が自動的に再描画する。
Neovim (LazyVim) はカラースキーム (catppuccin-mocha) の transparent_background = true 設定により、ターミナルのポケモン背景がエディタ内で透けて見える。起動時のダッシュボードに現在のポケモン名を表示。<leader>pk でNeovim内からポケモン変更も可能。
Claude Code セッション中も
pokeコマンドで随時変更可能。
ピカチュウテーマで iTerm2 / Ghostty / tmux / LazyVim / Claude Code を統合するスキン。
| Phase | 役割 |
|---|---|
| α (Skin) | starship pokemon palette + ◉ モンスターボールプロンプト |
| β (MOTD) | 起動時の今日のパートナー (15体ローテ、date +%j シード) |
| γ (Living Prompt) | starship right_format で krabby silhouette |
| δ (LazyVim) | dashboard ヘッダー + ⚡ 時計 lualine + :PokemonRandom |
| Claude | cc alias で pokeclaude wrapper、statusLine + SessionStart hook |
詳細は pokemon-terminal/README.md を参照。
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を参照。
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.sh が fideguch/ 配下の自作スキルリポジトリを 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-operationsはpm-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 スキルが生成するメモ・トピック・ニュースペーパー (~/.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.json の hooks key に集約。launchd plist は LaunchAgents/com.fideguch.bochi-*.plist に格納し、launchctl load -w で有効化(詳細は claude/scripts/hooks/README-launchd.md)。
衝突防止のため push 時に uname で判別し排他的にディレクトリを所有:
| 環境 | 書き込み権 |
|---|---|
Mac (Darwin) |
memos/, index.jsonl, context-seeds/ |
Lightsail (Linux) |
topics/, newspaper/, conversations/, reflections/, seen.jsonl, sources/, stats/, user-profile.yaml, cache/ |
- 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 failure →bochi-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 投入
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 を参照。
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 プラグイン更新 (任意)