--- description: "auto-sync launchd管理。dotfiles自動同期の状態確認・起動・停止・ログ確認。トリガー: launchd, auto-sync, 自動同期, 同期, sync agent" allowed-tools: - Bash - Read - Grep --- # launchd-manage スキル dotfiles自動同期のlaunchdエージェント管理を行う。 ## 概要 auto-syncは毎時dotfilesの変更をGitHubに自動同期するlaunchdエージェント。 - **plistファイル**: `~/Library/LaunchAgents/com.user.dotfiles-sync.plist` - **実行スクリプト**: `/Users/snkrheadz/ghq/github.com/snkrheadz/laptop/scripts/auto-sync.sh` - **ログファイル**: `~/Library/Logs/dotfiles-sync.log` - **実行間隔**: 3600秒(1時間) ## コマンド ### エージェント状態確認 ```bash launchctl list | grep dotfiles ``` ### plistファイル確認 ```bash cat ~/Library/LaunchAgents/com.user.dotfiles-sync.plist ``` ### 自動同期スクリプト確認 ```bash cat /Users/snkrheadz/ghq/github.com/snkrheadz/laptop/scripts/auto-sync.sh ``` ### ログ確認 ```bash cat ~/Library/Logs/dotfiles-sync.log | tail -50 ``` ### 最新のログエントリ ```bash tail -20 ~/Library/Logs/dotfiles-sync.log ``` ### エージェント停止 ```bash launchctl unload ~/Library/LaunchAgents/com.user.dotfiles-sync.plist ``` ### エージェント起動 ```bash launchctl load ~/Library/LaunchAgents/com.user.dotfiles-sync.plist ``` ### エージェント再起動 ```bash launchctl unload ~/Library/LaunchAgents/com.user.dotfiles-sync.plist && \ launchctl load ~/Library/LaunchAgents/com.user.dotfiles-sync.plist ``` ### 手動で同期実行 ```bash /Users/snkrheadz/ghq/github.com/snkrheadz/laptop/scripts/auto-sync.sh ``` ### plistのシンタックスチェック ```bash plutil -lint ~/Library/LaunchAgents/com.user.dotfiles-sync.plist ``` ## plistファイル構造 ```xml Label com.user.dotfiles-sync ProgramArguments /path/to/auto-sync.sh StartInterval 3600 StandardOutPath ~/Library/Logs/dotfiles-sync.log StandardErrorPath ~/Library/Logs/dotfiles-sync.log ``` ## 実行フロー ### 状態確認 1. launchdエージェントの稼働状態確認 2. plistファイルの存在確認 3. 最新のログエントリを表示 ### トラブルシューティング 1. エージェント状態確認 2. ログを確認して最後の実行結果を調査 3. 手動実行でスクリプトの動作確認 4. 必要に応じてエージェント再起動 ## 使用例 - "auto-syncの状態を確認" - "自動同期のログを見せて" - "auto-syncを再起動" - "自動同期を一時停止" - "手動で同期を実行" ## auto-sync.shの動作 1. dotfilesディレクトリに移動 2. `brew bundle dump --force` でBrewfile更新 3. `git add -A` で変更をステージ 4. 変更がある場合のみコミット 5. リモートにプッシュ ## 注意事項 - エージェント停止中は自動同期されない - 手動同期は `scripts/auto-sync.sh` で実行可能 - ログが肥大化したら手動で削除可能 - ネットワーク接続がない場合、プッシュは失敗する(次回実行時に再試行)