coding-agent-work-loop
English · 中文
GitHub 이슈/PR 코멘트를 로컬 AI의 입력과 출력으로 전환합니다. systemd 타이머 + 몇 개의 셸 스크립트 + 두 개의 GitHub 레이블만 있으면 GitHub 웹 UI(또는 iOS gh 앱)를 통해 AI와 직접 대화할 수 있습니다.
이 스킬은 설계상 에이전트에 구속되지 않습니다(agent-agnostic). 워커 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(기본값claude, 기타 내장:opencode,codex,cursor)가 선택한 워커 CLI. 각각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을 병합했거나 이슈 작업을 중단하려고 합니다. 단계:
- 이슈가 완료되었는지 확인(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 포트 해제, dev 서버 중지) - 워커의 tmux 세션 종료
- 워크트리 제거(기본값)
- 선택적으로 로컬 브랜치 제거
disable
사용자가 한 프로젝트를 중지하려고 합니다. 단계:
- 인스턴스 이름 확인(
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 후 호스트 프로젝트의 워크트리에는 두 가지만 추가됩니다:
.gitignore한 줄(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템플릿 유닛; setup이~/.config/systemd/user/로 복사coding-agent.config.example— 설정 템플릿