coding-agent-work-loop
English · 中文
GitHubのIssue/PRコメントをローカルAIへの入力と出力に変換します。systemdタイマー+いくつかのシェルスクリプト+2つのGitHubラベルを使って、GitHubのWeb UI(またはiOS ghアプリ)を通じて直接AIと対話できます。
このスキルはエージェント非依存の設計です。ワーカーCLIは
coding-agent.config内のWORKER_AGENT=<name>で選択します。デーモン/ディスパッチスクリプトは薄いドライバ層を介してさまざまなエージェントCLIをプラグインします。ビルトインドライバ:claude(デフォルト、Claude Code)、opencode(sst/opencode)、codex(OpenAI Codex CLI)、cursor(Cursor Agent CLI)。scripts/drivers/<name>.shで独自のドライバを追加できます。詳細はdocs/drivers.mdを参照してください。
呼び出しタイミング
ユーザーはホストエージェントランタイムから/coding-agent-work-loop <command>または自然言語リクエスト経由でこのスキルを呼び出します。一般的な形式:
- 「プロジェクトXにこのデーモンをインストールして」→
setupフローを実行 - 「コーディングエージェントの状態は?」→
statusフローを実行 - 「プロジェクトXのコーディングエージェントを無効にして」→
disableフローを実行
呼び出されたときにエージェントが実行すべきこと
setup(ホストプロジェクトへのデプロイ)
ユーザーからホストプロジェクトのパス(例:~/github/myproject)が与えられます。手順:
- パスが存在し、Gitリポジトリ(
.gitがある)であることを確認する - 依存関係を確認:
git、gh(gh auth loginでログイン済み必須)、tmux、jq、flock、systemctl、およびWORKER_AGENTで選択されたワーカーCLI(デフォルトclaude、その他のビルトイン:opencode、codex、cursor)。それぞれがcommand -vで解決可能であること。 - 実行:
bash "${CLAUDE_PLUGIN_ROOT:-$HOME/.agents/skills/coding-agent-work-loop}/setup.sh" <host-project-path>$CLAUDE_PLUGIN_ROOTはClaude Codeが注入するスキルルート環境変数です。存在しない場合は正規の~/.agents/skills/coding-agent-work-loopにフォールバックします。 setup.shが完了時に次の手順のガイダンスを出力するので、そのままユーザーに伝えてください。
status
ユーザーが状態を求めています。手順:
systemctl --user list-timers 'coding-agent-poll@*' --no-pager— タイマーの健全性systemctl --user list-units 'coding-agent-poll@*.service' --no-pager— 最後の実行- 登録済みの各
~/.config/coding-agent-work-loop/*.confに対して:tail -20 $STATE_DIR/poll.log(STATE_DIRはconfファイルから読み取る)gh issue list --repo $REPO --label pending/agent+gh pr list --repo $REPO --label pending/agent
- ユーザー向けにまとめる
cleanup(PRが承認/却下された後)
ユーザーがPRをマージしたか、Issueの作業を中止したい場合。手順:
- Issueが完了したことを確認する(PRがマージまたはクローズされた)
- 実行:
オプションフラグ:bash "$CLAUDE_PLUGIN_ROOT/scripts/cleanup-issue.sh" <issue-number>--force(ワーカーがビジーでもクリーンアップ)、--keep-worktree(セッションのみを強制終了)、--delete-branch(ローカルブランチも削除)
cleanup-issue.shの処理内容:
- ビジーチェック(デフォルトでは拒否、
--forceで回避) - プロジェクトレベルの
CLEANUP_HOOKを実行(coding-agent.configで設定、例:tailscaleポートの開放、開発サーバーの停止) - ワーカーのtmuxセッションを強制終了
- ワークツリーを削除(デフォルト)
- オプションでローカルブランチを削除
disable
ユーザーが1つのプロジェクトを停止したい場合。手順:
- インスタンス名を確認(
systemctl --user list-timers 'coding-agent-poll@*') systemctl --user disable --now coding-agent-poll@<key>.timer- オプション:
~/.config/systemd/user/coding-agent-poll@<key>.{service,timer}のインスタンスシンボリックリンクを削除(テンプレート自体はそのまま) - オプション:
~/.config/coding-agent-work-loop/<key>.confを削除 - 結果を報告
ホストプロジェクトに配置されるもの
setup後、ホストプロジェクトのワークツリーに追加されるのは以下の2つだけです:
.gitignoreの1行(coding-agent.configを除外)coding-agent.config(gitignore対象、設定ファイル)
スクリプト、systemdユニット、状態、ログはすべてホストプロジェクトの外部(スキルディレクトリ+~/.config/+~/.local/state/)に保持されます。
全体アーキテクチャ
関連README.mdを参照してください。
ファイル一覧
setup.sh— ホストプロジェクトのブートストラップscripts/— デーモン+ディスパッチスクリプト(ホストプロジェクトにはコピーされません)prompts/— 初期ワーカープロンプトテンプレート(ホストプロジェクトの.agents/skills/coding-agent-work-loop/prompts/で上書き可能)systemd/—[email protected]/.timerテンプレートユニット。セットアップ時に~/.config/systemd/user/にコピーされますcoding-agent.config.example— 設定テンプレート