프로젝트 개선 사항 10가지를 Claude Code에 요청하면 깔끔하게 번호가 매겨진 목록으로 답변이 옵니다. 그리고 진짜 작업이 시작됩니다. 사용자는 스크롤을 내리며 '1번과 3번은 하고, 2번은 우리가 이미 시도했으니 건너뛰어. 어쩌면 나중에 5번 정도?'와 같이 입력하고, 에이전트가 이 문장을 올바른 항목에 매핑해 주기를 기대합니다. 다음 주 새로운 세션에서는 다시 2번을 제안하는 경우가 생깁니다.
그래서 저는 목록을 로컬 페이지의 카드 형태로 변환하는 Claude Code 플러그인인 ar-board를 만들었습니다. 사용자는 각 카드를 키보드(승인, 거부 또는 보류)와 간략한 이유로 판단합니다. 에이전트는 사용자가 승인한 항목의 정확한 목록을 받게 되며, 사용자의 이유는 다음번에 무언가를 제안하기 전에 읽는 '선호도 파일'에 저장됩니다. 파이썬 파일 하나만으로 구성되었으며 표준 라이브러리만을 사용했고 MIT 라이선스를 따릅니다.
The ar-board panel: a comment is typed, four cards are judged with M, A, R and A, then Finish is pressed
패널은 영어로 열리며, 헤더의 EN/PT 토글을 통해 포르투갈어로 전환할 수 있습니다. 카드는 사용자와 에이전트가 사용하는 언어에 맞춰 표시됩니다. 설치하기 전에 브라우저에서 보드의 스케치를 시도해 볼 수 있습니다.
작동 방식
예를 들어, 'AR 보드로 아키텍처 개선 사항 10가지를 알려줘'와 같이 평이한 언어로 요청합니다. 그러면 Claude는 다음 작업을 수행합니다:
.ar-board/preferences.md에서 사용자의 과거 선호도(preferences)를 읽어, 이미 거부된 패턴을 알고 있습니다;
- 제안 사항들을
batch.json에 작성하고 127.0.0.1에서 패널을 시작합니다;
- 사용자가 키보드(
A: 승인, R: 거부, M: 보류)로 각 카드를 판단하고 그 이유를 추가하는 동안 기다립니다;
summary 명령어를 통해 사용자의 결정을 읽고, 승인된 항목에 대해서만 작동합니다(거부되거나, 보류 처리되었거나, 결정되지 않은 모든 항목은 '없음'으로 간주하며), 그리고 사용자 댓글에서 추론한 선호도 규칙을 확인하도록 요청합니다.
각 카드는 제목 이상의 정보를 담고 있습니다. 즉, 무엇이 변경되었는지, 그 이유, 위험 수준(risk level), 그리고 에이전트가 보여주고자 하는 추가 필드들이 포함됩니다. 같은 키를 다시 누르면 결정이 취소되며, 키를 길게 누른다고 해서 여러 장의 카드를 연속으로 판단하지는 않습니다.
설치 (Install)
Claude Code 내부에서:
/plugin marketplace add dvwinck/capybara-toolbox
/plugin install ar-board@capybara-toolbox
Claude Code를 재시작한 후, AR 보드를 요청하거나 /ar-board:ar-board를 실행하십시오. .ar-board/ 폴더를 .gitignore에 추가해야 합니다. 이는 사용자의 코멘트에 내부 세부 정보가 포함될 수 있기 때문입니다.
보너스 기능: question-board
동일한 플러그인은 또한 question-board도 제공합니다. 이는 에이전트가 계속 진행하기 전에 여러 독립적인 답변을 필요로 할 때 사용되는 단일 화면 양식(one-screen form)입니다. 키 1부터 9까지는 옵션을 선택하며, 추천 옵션은 표시되지만 미리 선택되지는 않습니다.
작동 원리 (How it's built)
단일 파일, 의존성 없음. 유효성 검사(Validation), HTTP 서버, CLI, 그리고 HTML/CSS/JS 페이지가 모두 ar_board.py에 존재합니다(1,512줄 중 상당 부분이 임베디드된 페이지입니다). pip도 없고, Node도 없으며, 외부 네트워크 트래픽도 없습니다. 유일한 소켓은 루프백(loopback)을 통해 패널의 리스너(listener)입니다. Python 3.9 이상이 필요합니다.
에이전트와 패널 사이의 채널은 파일입니다. 패널은 decisions.json 파일을 원자적(atomically)으로 작성합니다. 이는 모드 0600을 가진 비공개 임시 파일이며, os.replace를 통해 제자리에 이동됩니다. 에이전트는 wait 및 summary 명령어를 사용하여 이 파일을 읽으며, 이 명령어들은 다른 배치(batch)나 라운드의 어떤 파일도 무시하므로 이전 라운드에서 승인된 내용이 전달되지 않습니다.
덮어쓰기가 아닌 라운드 방식입니다. 개선(refinement) 라운드가 진행되면 동일한 batch_id를 유지하고 round: N+1로 설정됩니다. 서버가 새 라운드를 시작할 때, 이전 결정 사항을 decisions.rN.json으로 아카이브하며 절대 더 이른 시점의 아카이브를 덮어쓰지 않습니다.
사용자의 이유에서 학습하지만, 사용자의 승인(sign-off)이 있을 경우에만 합니다. 에이전트는 사용자가 말한 내용을 인용하여 preferences.md 파일에 추가하고, 자신만의 해석은 “확인 필요(to be confirmed)”로 표시합니다. 오직 사용자가 확인하는 규칙만이 미래 배치에 대한 확고한 제약 조건이 됩니다.
로컬호스트에서도 강화된 보안. 이 패널은 OS가 할당하는 사용 가능한 포트의 127.0.0.1에 바인딩되며, 요청마다 필요한 새로운 128비트 토큰을 사용합니다. 쓰기 작업(Writes)에는 해당 토큰이 X-AR-Token 헤더에 포함되어야 하며, 이는 교차 출처 페이지(cross-origin page)가 CORS 사전 요청(CORS preflight) 없이는 전송할 수 없고, 서버는 이 사전 요청에 응답하지 않습니다. DNS 리바인딩을 차단하기 위해 127.0.0.1 또는 localhost가 아닌 다른 모든 Host는 거부됩니다. 카드 텍스트와 주석은 HTML 이스케이프 처리되며, 페이지의 CSP(Content Security Policy)는 프레이밍을 금지합니다. 이미지는 샌드박스 CSP를 적용받아 SVG가 스크립트를 실행할 수 없습니다.
사용자 정의 레이블 및 위험 카드에 대한 두 번의 확인. 보드는 세 가지 결정 사항의 이름을 변경하고 각각에 톤(녹색, 황색, 적색)을 부여할 수 있습니다. 예를 들어 _삭제 / 유지 / 나중에_와 같이 설정하며, '삭제'는 빨간색으로 지정됩니다. 또한 카드가 승인으로 간주되기 전에 두 번의 클릭을 요구하도록 할 수도 있습니다. 이는 반사적인 키 입력을 방지하기 위함이며 보안 경계(security boundary)는 아닙니다. 형제 플러그인인 tidy-board는 이를 사용하여 오래된 git 브랜치, 워크트리, 스태시를 삭제합니다. 증명 가능한 병합이 필요한 모든 항목은 두 번의 클릭을 요구하며 백업본을 먼저 받고, 승인된 모든 항목은 삭제 직전에 다시 확인됩니다.
로컬호스트가 없나요? 오프라인 모드를 사용하세요. 클라우드 또는 원격 세션에서는 build 명령이 자체 포함된 board.html 파일을 작성합니다. 이 파일에서 결정을 내린 후, 그 결과를 채팅창에 붙여넣으면 됩니다.
테스트 완료. ar-board 스위트는 토큰, Host 확인, 경로 탐색(path traversal), 배치 폴더 외부를 가리키는 심볼릭 링크, 그리고 decisions.json을 저장하는 데 사용되는 임시 파일에 심어진 심볼릭 링크에 대한 보안 회귀 테스트를 포함하여 총 249개의 테스트를 가지고 있습니다. CI에서는 Ubuntu 및 macOS에서 Python 3.9, 3.11, 3.13, 3.14로 실행됩니다.
제한 사항 (Limitations)
- 이것은 사용자의 자체 기기를 위한 단일 사용자 도구입니다. 토큰이 URL에 포함되므로 브라우저 기록에 남게 됩니다. HTTPS는 없으며, 트래픽은 루프백(loopback) 상태로 유지됩니다.
- "내가 승인한 것만 행동하기(Act only on what I approved)"와 "내 댓글에서 배우기(learn from my comments)"는 코드가 아니라 모델에 대한 지침입니다. 이 보드는 사용자의 결정을 모호하지 않게 만들 뿐이며, 에이전트가 이를 따르도록 강제할 수는 없습니다.
- Windows는 아직 테스트되지 않았습니다.
출처/크레딧
"AR board" 아이디어는 Maestros da IA 채널의 Minha NOVA SKILL Favorita do Claude Code 영상에서 가져왔습니다. 이것은 독립적인 구현체입니다: 원본 스킬의 코드나 자료를 사용하지 않았으며 해당 채널과 제휴 관계가 아닙니다.
ar-board는 MIT 라이선스가 적용된 Claude Code 플러그인들의 작은 세트인 Capybara Toolbox의 일부입니다. 만약 작동에 문제가 있다면, 이슈를 열어주세요. 그리고 댓글을 위한 질문이 있습니다: 에이전트가 한 번에 10개의 제안을 건네줄 때 오늘 당신은 무엇을 하시나요?