| name | autonomous-loop |
| description | system-agents 턴 안에서 자기 담당 작업을 자율 처리하거나, TODO.md를 위에서부터 처리하는 루프. 사용자 응답이 필요하면 페르소나로 자가 응답해 계속 진행하고, 승인 필요한 위험 작업은 미뤄둔다. |
| user_invocable | true |
자율 루프 (autonomous-loop)
system-agents 프로젝트에서는 tasks/board.yaml과 chatrooms/ 프로토콜을 우선 사용한다.
그 밖의 프로젝트에서는 TODO.md를 goal 파일로 삼아, 멈추지 않고 작업을 이어서 진행한다.
사용자가 자리에 없어도 사용자 페르소나를 시뮬레이션해 응답을 자가 생성하며 계속 굴러간다.
페르소나는 로컬 전용: ~/.claude/persona/PERSONA.md · ~/.claude/persona/PERSONA_POOL.md.
이 스킬에는 개인 발화를 절대 포함하지 않는다(공개 repo 안전).
페르소나가 없으면 bot/build_persona.py로 먼저 생성한다.
절차
-
모드 판단
- 현재 프로젝트에
chatrooms/와 tasks/board.yaml이 있으면 system-agents protocol mode로 동작한다.
- 없으면 TODO mode로 동작한다.
-
페르소나 로드
~/.claude/persona/PERSONA.md(말투·성향·안전경계)와 PERSONA_POOL.md(실제 발화 풀)를 읽는다.
- 프로젝트 루트에
./PERSONA.md가 있으면 그게 공용보다 우선한다.
- 둘 다 없으면
python3 bot/build_persona.py 실행을 안내하고 중단한다.
-
system-agents protocol mode
- 먼저
chatrooms/PROTOCOL.md, tasks/PROTOCOL.md를 읽고 따른다.
- 상태 확인:
python bot/autonomous_turn.py status --agent <agent-name>
- Phase 2(Plan)에서는 실제 코드/문서 작업을 하지 않는다. 선점할 작업이 있으면
task-claim만 보낸다.
- Phase 4(Execute)에서는 자기 담당 작업만 수행한다. 완료/진행/승인대기는 반드시 chatroom 메시지로 남긴다.
- 턴이 끝나면 항상:
python bot/autonomous_turn.py turn-end --agent <agent-name>
- 메시지 작성이 필요하면 helper를 써서 frontmatter/파일명 실수를 줄인다:
python bot/autonomous_turn.py send --agent <agent-name> --type task-claim --ref T-001 --subject "Claim T-001"
python bot/autonomous_turn.py send --agent <agent-name> --type task-done --ref T-001 --subject "T-001 done" --body "tests pass"
python bot/autonomous_turn.py send --agent <agent-name> --type task-update --ref T-001 --subject "approval needed" --field status=대기 --body "public deploy needs real approval"
-
TODO mode goal 확인 — TODO.md의 ## 할 일에서 안 끝난 [ ] 항목을 위에서부터 본다.
-
작업 선택 — 승인 없이 진행 가능한 것 우선
- 안전 경계 기준 = 가역성 + 외부 영향 (작업 종류가 아니라):
- ✅ 자율 OK: 커밋, 비공개 repo push, 로컬 파일 변경, 빌드/테스트
- ⛔ 확인 필요: 공개 push·배포·외부전송·복구불가 삭제·force push·큰 비용
- ✅에 해당하는 항목을 골라 수행한다.
-
판단 지점 — 멈추지 말고 페르소나로 자가 응답
- 사용자 판단이 필요하면 멈추는 대신, "사용자라면 어떻게 답했을지"를 PERSONA/POOL 기준으로 추론해 진행한다.
- 미심쩍으면 승인 대신 "검증 되묻기"(예: "그거 ~문제 없지?")를 생성하고, 그 답을 스스로 점검해 합리적이면 진행한다.
- 별도 페르소나 에이전트나 추가 API 호출은 쓰지 않는다(메인 루프가 직접).
-
승인 필요한 작업은 미루고 계속
- ⛔에 해당하는 작업을 만나면 루프를 멈추지 않는다.
- protocol mode에서는
task-update 또는 일반 message로 승인대기 사유를 남긴다.
- TODO mode에서는
TODO.md의 ## 승인 대기로 옮겨 적는다(이유 한 줄 포함).
- 승인 없이 할 수 있는 다음 작업으로 넘어가 계속 진행한다.
-
기록 후 다음으로
- protocol mode:
task-update/task-done/turn-end 메시지로 기록한다.
- TODO mode: 끝낸 항목은
[ ] → [x] + 결과 한 줄을 적고 이어간다.
종료 조건
[ ] 중 승인 없이 진행 가능한 작업이 하나도 안 남으면 종료한다.
- 종료 시: 완료 요약 +
## 승인 대기 항목을 한꺼번에 보고하고 실제 사용자 확인을 요청한다.
참고
- 권한 팝업 자동 통과는 opt-in이다.
python bot/autonomous_turn.py init으로 샘플을 복사한 뒤 내용을 검토한다.
end-turn/report 스킬과 함께 쓸 수 있지만, protocol mode에서는 bot/autonomous_turn.py helper가 frontmatter 실수를 줄인다.