Community코딩 & 개발github.com

human-in-the-loop

일회용 브라우저 인터페이스를 통해 소유자가 에이전트에게 피드백(문서 섹션별 승인·수정, 개방형 질문 답변, 블라인드 라벨링, 평가)을 제공하고, JSON으로 결과를 반환받습니다.

human-in-the-loop란 무엇인가요?

Human in the Loop는 에이전트가 소유자(owner)의 검토, 수정, 선택, 라벨링 작업을 효율적으로 처리할 수 있도록 돕는 기술 스킬입니다. 에이전트가 요구사항을 `spec.json`으로 기술하면, `scripts/build.py`가 자동으로 독립형 HTML 페이지를 생성하고, 소유자는 브라우저에서 자유롭게 작업한 후 'Copy JSON for agent' 버튼으로 결과를 JSON으로 반환합니다. Claude Code, Cursor, Codex 등 모든 AI 에이전트 플랫폼에서 사용 가능하며, 문서 승인(섹션별 상태·수정), 복수 질문 선택, 블라인드 라벨링(모델 응답과 별도로 저장 후 `score.py`로 정확도 측정), 척도 평가 등의 시나리오에 적합합니다. 채팅에서 간단한 질문 1~2개면 충분할 때는 사용하지 않는 것이 좋습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/vasilievyakov/human-in-the-loop/tree/HEAD/skills/human-in-the-loop

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

Human in the Loop (사람 개입)

소유자와 에이전트 사이의 일회용 인터페이스 계층입니다. 에이전트는 소유자가 검토하고 결정해야 할 내용을 설명하고, 스크립트는 독립형 HTML 페이지를 조립합니다. 소유자는 브라우저에서 자유롭게 응답하고 JSON을 반환합니다. 페이지는 직접 작성하지 않습니다. spec.json과 scripts/build.py만 사용합니다.

$SKILL은 이 파일이 위치한 폴더를 의미합니다.

언제 사용할까

  • 승인 문서: 명세서, PRD, 제안서, 계획. 섹션별 상태, 텍스트 직접 수정, 개방형 질문에 대한 답변.
  • 여러 질문에 대한 선택: 한 번에 여러 질문에 대해 각 질문별 에이전트의 옵션과 사용자 답변.
  • 블라인드 라벨링: 소유자가 응답하고, 모델의 응답은 별도 파일에 저장되어 페이지에 표시되지 않음. 이후 score.py로 일치율 계산.
  • 척도 평가: 제안을 척도로 평가.

질문이 하나나 두 개뿐이라면 채팅에서 직접 물어보세요.

워크플로우

  1. Spec. spec.json을 생성하세요 (형식: references/spec-format.md). Markdown 문서용 템플릿이 준비되어 있습니다: python3 $SKILL/scripts/from_markdown.py doc.md --options options.json -o spec.json (## 및 ### 섹션은 수정 가능한 블록이 되고, '열린 질문(Open questions)' 섹션은 options.json의 옵션과 함께 질문이 됩니다). 블라인드 라벨링의 경우 숨겨진 응답은 별도의 sidecar.json에 저장하고, spec.json에는 포함하지 마세요.
  2. 페이지. python3 $SKILL/scripts/build.py spec.json -o page.html 명령어로 페이지를 조립하고 엽니다. spec과 페이지는 프로젝트 옆(예: private/)에 두세요. 스크래치패드(scratchpad)가 아닌 곳에 두어 소유자가 다시 돌아올 수 있게 하세요. 한 줄로 소유자에게 무엇이 열렸고 무엇을 해야 하는지 알려주세요.
  3. 소유자가 응답하고 채팅에 JSON을 붙여넣습니다 ('Copy JSON for agent' 버튼). JSON에는 소유자가 건드린 내용만 포함됩니다: status, comment, markdown_old/markdown_new, answers, notes, decision, general_comment.
  4. 에이전트가 응답을 적용합니다. JSON의 task 필드를 기준으로 응답을 적용하고, 무엇을 변경했고 무엇이 남았는지 보고합니다. 결정 버튼이 있는데 decision이 비어 있다면 결정이 내려지지 않은 것입니다: 다시 물어보고, 문서가 승인된 것으로 간주하지 마세요. 라벨링의 경우 JSON을 저장한 후 다음을 실행하세요: python3 $SKILL/scripts/score.py labels.json sidecar.json --spec spec.json 불일치 사항은 목록으로 소유자에게 보여주고, 라벨링 오류는 직접 수정하지 마세요.

spec이 변경되면 페이지는 새 버전으로 다시 조립되며, 이전 브라우저 응답은 새 페이지에 적용되지 않습니다.

테스트

python3 $SKILL/tests/selftest.py [폴더] 명령어는 examples/의 두 예제를 조립하고, headless Chromium에서 실행한 후 내보내기를 검증합니다. 템플릿이나 스크립트를 수정한 후에는 반드시 실행하세요.

관련 스킬