with one click
sync-dotfiles
dotfiles(Zsh・Git設定)をGitHubリポジトリとローカル間で双方向同期する。新しい方を自動判定して取り込む
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
dotfiles(Zsh・Git設定)をGitHubリポジトリとローカル間で双方向同期する。新しい方を自動判定して取り込む
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | sync-dotfiles |
| description | dotfiles(Zsh・Git設定)をGitHubリポジトリとローカル間で双方向同期する。新しい方を自動判定して取り込む |
| user-invocable | true |
| model | sonnet |
dotfilesリポジトリ(GitHub)とローカルのZsh・Git設定ファイルを双方向同期します。 各ファイルについて新しい方を自動判定し、取り込みます。
~/git/dotfiles/
| リポジトリ | ローカル | 種別 |
|---|---|---|
zshrc | ~/.zshrc | Zsh |
zshenv | ~/.zshenv | Zsh |
zprofile | ~/.zprofile | Zsh |
gitconfig | ~/.gitconfig | Git |
gitconfig-personal | ~/.gitconfig-personal | Git |
cd ~/git/dotfiles && git pull
各ファイルについて、ローカルがシンボリックリンクか通常ファイルかを確認する。
# Zsh・Git設定(~/.<ファイル名> パターン)
for f in zshrc zshenv zprofile gitconfig gitconfig-personal; do
target="$HOME/.$f"
if [ -L "$target" ]; then
echo "✅ $target → $(readlink "$target") (symlink)"
elif [ -f "$target" ]; then
echo "⚠️ $target は通常ファイル(symlinkではない)"
else
echo "❌ $target が存在しない"
fi
done
シンボリックリンクが ~/git/dotfiles/ を指している場合、git pull で既にローカルも最新化されている。
各ファイルについて内容を比較し、新しい方を採用する。
DOTFILES_DIR="$HOME/git/dotfiles"
# Zsh・Git設定(~/.<ファイル名> パターン)
for f in zshrc zshenv zprofile gitconfig gitconfig-personal; do
repo="$DOTFILES_DIR/$f"
local="$HOME/.$f"
if [ ! -f "$local" ]; then
echo "📥 $f: ローカルに存在しない → リポジトリからコピー"
continue
fi
if diff -q "$repo" "$local" > /dev/null 2>&1; then
echo "✅ $f: 内容が同一"
continue
fi
# 内容が異なる場合、タイムスタンプで比較
repo_time=$(stat -f %m "$repo" 2>/dev/null || stat -c %Y "$repo")
local_time=$(stat -f %m "$local" 2>/dev/null || stat -c %Y "$local")
if [ "$local_time" -gt "$repo_time" ]; then
echo "📤 $f: ローカルが新しい → リポジトリに反映"
else
echo "📥 $f: リポジトリが新しい → ローカルに反映"
fi
done
判定結果をユーザーに提示し、確認を取ってから以下を実行する:
ローカルが新しい場合: ローカルの内容をリポジトリにコピー
cp ~/.$f ~/git/dotfiles/$f
リポジトリが新しい場合: ローカルをバックアップしてリポジトリの内容で上書き
cp ~/.$f ~/.$f.backup.$(date +%Y%m%d)
cp ~/git/dotfiles/$f ~/.$f
同期後、シンボリックリンクの再設定を提案する
cd ~/git/dotfiles && ./install.sh
install.sh を実行してシンボリックリンクを作成する。
cd ~/git/dotfiles && ./install.sh
ローカルで変更があった場合(パターンA で編集済み、またはパターンB でローカルが新しかった場合):
差分確認なしで自動コミット&プッシュする(同期による変更は想定内のため)。
⚠️
git add -Aは絶対に使わない。~/git/dotfiles/を含むリポジトリで、dotfiles/はその中のサブディレクトリ(兄弟にdocs/notes/marp/qiita/等がある)。git add -Aはリポジトリ全体を対象にするため、dotfiles/外の未コミット変更まで巻き込む(過去にこの事故が発生)。cd済みなのでgit add -- .(=カレントdotfiles/以下のみ)を使うこと。
cd ~/git/dotfiles
git add -- . # dotfiles/ 配下のみ。git add -A は禁止(モノレポの兄弟ディレクトリを巻き込む)
git commit -m "dotfiles同期"
git push
ユーザーに以下を確認する:
Claude Code設定(skills、CLAUDE.md、mcpServers等)も同期しますか?
/sync-claude-code-settings スキルの手順に従って実行するCodex設定(AGENTS.md、config.toml、agents、skills)も同期しますか?
/sync-codex-settings スキルの手順に従って実行するinstall.sh は既存の通常ファイルをタイムスタンプ付きでバックアップしてからシンボリックリンクを作成するTavily APIキーの残りクレジットを確認(.envから取得)。※アプリの利用統計は /check-app-stats を使用
ローカルのマージ済みGitブランチを整理・削除する
リポジトリ内の未プッシュの変更をすべて確認し、適切なコミットに分割してコミット&プッシュする
1Password CLI(op コマンド)のナレッジ。.env.op テンプレートから .env 生成、op-sync、Touch ID最小化、Vault構成、アカウント切替等
AgentCore CDK・デプロイ・ランタイム統合のナレッジ。Runtime作成、JWT認証、SSE、Dockerfile、コンテナ管理、Browser Tool等
AgentCore Identity(アウトバウンド認証)のナレッジ。3LO/M2M/デコレータ分離/callback等