スキル一覧に戻る

launchd-manage

snkrheadz / laptop

0🍴 0📅 2026年1月19日

auto-sync launchd管理。dotfiles自動同期の状態確認・起動・停止・ログ確認。トリガー: launchd, auto-sync, 自動同期, 同期, sync agent

SKILL.md

---
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
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "...">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>com.user.dotfiles-sync</string>
  <key>ProgramArguments</key>
  <array>
    <string>/path/to/auto-sync.sh</string>
  </array>
  <key>StartInterval</key>
  <integer>3600</integer>
  <key>StandardOutPath</key>
  <string>~/Library/Logs/dotfiles-sync.log</string>
  <key>StandardErrorPath</key>
  <string>~/Library/Logs/dotfiles-sync.log</string>
</dict>
</plist>
```

## 実行フロー

### 状態確認

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` で実行可能
- ログが肥大化したら手動で削除可能
- ネットワーク接続がない場合、プッシュは失敗する(次回実行時に再試行)