Communitygithub.com

brnyxx/xout

AI 행동 중 다시는 보고 싶지 않은 것을 반증 기반으로 제거하는 CLAUDE.md/AGENTS.md 컴파일러 (증빙 영수증 포함)

xout란 무엇인가요?

xout은 AI 에이전트(Claude Code 등)의 바람직하지 않은 행동 패턴을 체계적으로 걸러내는 반증 기반 설정 컴파일러입니다. 사용자에게 두 가지 대비되는 행동 예시(가설 페어)를 제시하고, 사용자가 'X 치기(strike)'라는 단순한 동사로 선택을 기록하면, 8가지 축(6,561조합)의 행동 공간을 로컬 이벤트 원장 위에서 수렴시킵니다. 세션 중에는 LLM 호출이나 외부 네트워크 요청이 전혀 없으며, 모든 데이터는 ~/.claude/xout/ 디렉토리에 안전하게 저장됩니다. Claude Code, Cursor, Windsurf, Cline, Roo Code, Copilot 등 다양한 AI 코딩 도구에서 사용할 수 있는 규칙 파일(CLAUDE.md, AGENTS.md, .cursorrules)을 생성하며, 프로젝트 규칙과 충돌 시 프로젝트 규칙이 우선합니다.

지원 대상✓Claude Code✓Codex CLI✓Cursor✓Gemini CLI✓OpenCode
npx skills add brnyxx/xout

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

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

문서

xout - X 세션

xout은 질문 대신 반증 가능한 대비 페어를 제시하고, 사용자의 유일한 동사인 "X 치기"만으로 Claude Code 설정(8축 가설 공간 6,561조합)을 수렴시킨다. 세션 런타임에 LLM 호출 0회, 외부 네트워크 호출 0회다 - 모든 진행은 로컬 append-only 이벤트 원장 위에서 일어난다.

실행 규칙

어떤 세션이든 시작 전에 반드시 python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status를 먼저 실행해 재심 대기 배너를 확인하고, 배너가 있으면 사용자에게 한 줄로 전달한다.

세션은 대화형(chat) 모드로 진행한다:

  1. python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" pair를 실행해 JSON을 받는다. pair.left_text / pair.right_text / pair.pair_id가 핵심이다.
  2. 두 행동 본문을 그대로 사용자에게 보여주고, 어느 쪽에 X를 칠지 묻는다.
  3. 사용자가 명시적으로 고른 것만 python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" strike <left|right|both|pair> --pair-id <pair_id>로 기록한다.
  4. 응답 JSON의 session_complete가 true가 될 때까지 1-3을 반복한다.
  5. 완료되면 rules의 8줄을 보여주고 적용 여부를 묻는다. 예라고 할 때만 enable --grant를 실행한다.

사용자가 터미널에서 직접 하고 싶어하면 xout(또는 uvx xout) 한 줄을 안내한다 - 같은 원장이라 어디서 하다 멈춰도 이어진다.

인자실행명령설명
(없음) 또는 chat포그라운드 반복위 대화형 루프 (pair -> 사용자 선택 -> strike)미완료 세션 1건이면 이어서, 없으면 새 15긋기 세션
status포그라운드 출력python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status착지/활성화/재개/판정 요약
sessions포그라운드 출력python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" sessions최근 세션 목록
doctor포그라운드 출력python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" doctor설치·데이터·replay 로컬 진단
enable포그라운드 출력python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" enable --grant명시 요청 시 CLAUDE.md에 소유 @import 한 줄 추가
undo 또는 rollback포그라운드 출력python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" undoxout이 추가한 @import 한 줄만 제거

위 상태 출력에 "재심 대기 N건" 배너가 있으면

세션을 열기 전에 사용자에게 배너 내용을 한 줄로 전달하고, 터미널에서 xout recheck로 재심에 들어갈 수 있다고 안내한다. 수락 여부는 사용자가 정한다 - 대신 결정하지 않는다.

세션이 끝나면

  • 산출물은 ~/.claude/xout/ 단독 소유 디렉토리에만 착지한다 (XOUT.md + manifest.json + settings.xout.json).
  • 사용자 CLAUDE.md 활성화는 위 launcher의 enable --grant로만 하며 @import 한 줄만 추가된다. 사용자가 명시적으로 동의할 때만 실행한다.
  • 롤백도 위 launcher의 undo만 사용한다 (그 한 줄만 제거).
  • 적용 전에 conflicts [경로]로 프로젝트 규칙 파일(CLAUDE.md/AGENTS.md/ .cursorrules)과 갈리는 줄을 file:line으로 보여줄 수 있다. 정면 충돌은 프로젝트가 이긴다고 XOUT.md 프리앰블이 이미 말한다.
  • 규칙이 실제로 선택을 움직이는지는 probe가 잰다 - 외부 러너(기본 claude -p)를 세션 밖에서 호출하는 옵트인 명령이라 사용자가 요청할 때만 실행하고, 영수증은 ~/.claude/xout/probes/에만 남는다.

하지 말 것

  • 사용자 대신 X를 치지 않는다 - X는 사용자의 반증 행위다.
  • CLAUDE.md나 settings.json을 직접 편집하지 않는다 - xout의 소유권 계약 위반이다.
  • 페어 본문을 요약하거나 편집해 보여주지 않는다 - 원문 그대로가 측정 도구다.

관련 스킬