Surface Gap Analysis

Loopy 명령 6개 중 4개는
이미 엔진에 있었다

지금 Loopy(루피, Claude Code 안에서 '스스로 고치는 자동 개선 루프'를 돌리는 명령 묶음)를 쓰려면 내부 단계 명령 6개를 순서대로 외워서 하나씩 직접 입력해야 합니다. 이것이 문제였습니다. 결론부터 말하면, 실제로 일하는 내부 기계(loopy-era 엔진, 아래에서는 그냥 '엔진')는 이미 거의 다 만들어져 있습니다. 새 명령 6개 중 4개는 별칭(기존 기능을 부르는 새 이름)으로 끝나고, 2개만 얇은 묶음 명령으로 만들면 됩니다. 이 루프의 바탕은 하네스(harness, AI가 '다 했다'고 거짓말하지 못하게 증거를 강제하는 감시 장치)입니다. 루피 명령 묶음의 두 번째 제안서는 원제가 영문이고, 제목 끝에 판 번호 2가 붙어 있습니다(원제는 첫 절에 적어 두었습니다). 그 판 번호를 따서 아래에서는 이 문서를 '2판 문서'라고 부릅니다. 2판 문서는 사용자가 외울 명령을 6개(/loopy:start, auto, resume, status, history, measure)로 줄이고, 내부 단계는 뒤로 숨기자고 제안합니다. 그래서 이 글은 그 6개 가운데 엔진이 이미 갖춘 것과 아직 없는 것을 나눴습니다. 그리고 가장 적은 비용으로 빈 곳을 채우는 단계별 계획을 정리했습니다.

6
surface cmds
4/6
already covered
2
missing wrappers
~200
lines to add
2판 문서가 말한 것
"명령어를 모두 노출하는 방식보다, 표면은 5~6개만 남기고 내부 단계는 자동 매핑하는 구조가 더 적합함. 사용자는 시작·실행·재개·상태 확인만 기억하면 되고, 하네스의 폐루프는 내부적으로 유지되어야 함." — 2판 문서의 핵심 결론 · 원제(한국어판 표기)는 아래 한 줄 Loopy Command Set V2 / Korean

인용문에 나온 '폐루프'란 검사하고, 고치고, 다시 재는 과정이 사람 손 없이 스스로 도는 순환을 말합니다. 이 문서의 요구는 간단합니다. 엔진(속에서 실제로 일하는 기계)을 다시 만들자는 게 아니라, 사용자가 보는 명령만 다시 정리하자는 것입니다. 숨길 내부 단계는 다음 여섯 개입니다: init-project, team, qa-scenario-gen, qa-cycle, self-improve, eval. 차례로 프로젝트 초기 설정, 여러 AI 일꾼을 동시에 굴리는 팀 실행, 검사 시나리오 생성, 검사와 수정 반복, 자가 개선, 평가를 맡습니다. 이 여섯 개는 전부 뒤로 숨깁니다. 사용자는 /loopy: 라는 공통 이름표(네임스페이스, 명령 이름 앞에 붙는 접두어)가 붙은 표면 명령 6개만 외우면 됩니다. 표면 명령이란 사용자가 직접 입력하는 바깥쪽 명령을 말합니다.

표면 명령내부 매핑 (속으로 실제로 부르는 단계)사용 시점
/loopy:startinit-project + team + qa-scenario-gen설치할 때 한 번
/loopy:autoqa-cycle + self-improve + eval + keep/discard평소에 돌릴 때
/loopy:resume중단된 진행 상태를 다시 불러와 auto로 이어감중단 복구
/loopy:statusmetric parse + latest state수시 확인
/loopy:history그동안 쌓인 결과 기록과 발견 내용의 변화끝난 뒤 검토
/loopy:measure측정만 함 (파일은 안 바꿈)진단
지금 방식과 2판 문서가 제안하는 방식
Current — Stage-Exposed
/init-project
  ↓
/team
  ↓
/qa-scenario-gen
  ↓
/qa-cycle
  ↓
/self-improve
  ↓
/loopy-era-eval [N]
지금은 사용자가 내부 단계 명령 6개를 순서대로 직접 입력해야 합니다. 명령 이름이 내부 구조를 그대로 드러냅니다. 그래서 자주 안 쓰는 사람은 순서를 못 외웁니다. 문제를 뜯어볼 때(디버깅, 어느 단계가 잘못됐는지 하나씩 확인하는 일)는 편합니다. 하지만 오랜만에 다시 꺼내 쓰기는 번거롭습니다.
v2 Proposal — Surface-Hidden
/loopy:start  (1회)
  ↓
/loopy:auto   (무한)
  ↓
/loopy:status (수시)
  ↓
/loopy:history (검토)

+ /loopy:resume, measure
표면 명령 6개만 외우면 됩니다. 이름만 봐도 흐름이 짐작됩니다. 예를 들어 start → auto → resume는 '시작하고, 자동으로 돌리고, 끊긴 데서 이어서 하기'라는 뜻입니다. 속 단계가 나중에 바뀌어도 사용자가 쓰는 명령(표면)은 그대로입니다. 그래서 안정적입니다.
무엇이 이미 있고, 무엇이 비어 있나
표면 명령지금 상태엔진 완성도남은 일
/loopy:start 없음 일부 (필요한 개별 명령은 이미 있음) init-project → team → qa-scenario-gen을 순서대로 부르는 묶음 명령(wrapper, 여러 단계를 대신 불러 주는 얇은 명령)이 필요합니다
/loopy:auto 없음 일부 (반복 자체는 측정 명령 안에 이미 있음) qa-cycle → self-improve → loopy-era-eval을 한 바퀴로 묶어 스스로 반복하는 순환(폐루프)으로 만드는 묶음 명령(wrapper, 여러 단계를 대신 불러 주는 얇은 명령)이 필요합니다
/loopy:resume 있음 완성됨 /loopy-era-eval resume 별칭만 추가
/loopy:status 있음 완성됨 /loopy-era-eval status 별칭만 추가
/loopy:history 있음 완성됨 /loopy-era-eval history 별칭만 추가
/loopy:measure 있음 완성됨 /loopy-era-eval measure 별칭만 추가
4/6
already covered
2/6
need wrappers
0/6
namespace
100%
engine ready
채워야 할 빈틈(gap) 7개
구현 계획 (3단계)
1
1단계: 별칭 만들기, 바로 가능
약 60줄 / 30분
/loopy:resume, /loopy:status, /loopy:history, /loopy:measure 별칭 4개를 ~/.claude/commands/폴더(Claude Code가 사용자 명령을 읽어 오는 곳)에 만듭니다. 각 파일은 15줄이 안 됩니다. 기존 엔진을 그대로 부르기만 합니다. 그래서 멀쩡하던 기능이 깨질 위험(회귀)이 없습니다.
  • commands/loopy-resume.md: /loopy-era-eval resume 호출
  • commands/loopy-status.md: /loopy-era-eval status 호출
  • commands/loopy-history.md: /loopy-era-eval history 호출
  • commands/loopy-measure.md: /loopy-era-eval measure 호출
2
2단계: 묶음 명령 만들기, 핵심 작업
약 140줄 / 2시간
/loopy:start /loopy:auto 두 개의 묶음 명령을 만듭니다. 이 둘은 단순 별칭과 다릅니다. 여러 명령을 순서대로 불러 실행하기 때문에, 각 단계의 실패 처리와 진행 상황 기록이 필요합니다. 2판 문서 4장의 '내부 매핑 규칙' 표(표면 명령 하나가 어떤 내부 단계를 어떤 순서로 부르는지 적은 표)를 그대로 구현합니다.
  • loopy-start 파일(시작 묶음 명령의 절차 파일): 명령 3개를 순서대로 실행, 실패하면 멈춤
  • loopy-auto 파일(자동 반복 묶음 명령의 절차 파일): 순환 반복, 반복 횟수 지정 가능
  • 각 단계 진행 상황을 결과 기록 파일에 저장
  • 더 이상 좋아지지 않으면(수렴) 텔레그램(메신저 앱)으로 알림
3
3단계: 문서·강제·사용성, 마무리
약 80줄 / 1시간
공식 안내 문서를 쓰고, 기존 명령에 '내부 전용' 표시를 답니다. measure 가 파일을 안 바꾸는지 검증하고, status 출력 형식을 넓힙니다. 2판 문서 5·6장의 이름 짓기·사용성 규칙을 마지막에 적용합니다.
  • README 파일: 4단계 사용 안내
  • 기존 단계별 명령 맨 위에 '내부 전용' 표시
  • measure가 파일을 안 바꾸는지 검증(코드 변경 0 확인)
  • status 출력에 강제 검사 비율·권고 검사 수·대기 항목·반복 횟수 통일
도입 위험과 대응
위험영향대응
묶음이 실패하면 원인 찾기가 어려움 /loopy:auto 가 실패하면 어느 내부 단계에서 멈췄는지 기록에 남깁니다. 필요하면 /qa-cycle 같은 개별 명령을 직접 부르는 길도 그대로 열어 둡니다.
기존 사용자가 새 방식으로 옮길 때 혼란 낮음 지우지 않고 함께 둡니다. 기존 /loopy-era-eval도 그대로 작동합니다. 안내 문서에 새 명령과 기존 명령의 대응표(어느 새 이름이 어느 옛 명령을 부르는지 적은 표)를 넣습니다.
덧씌운 층을 관리하는 부담 낮음 별칭 4개는 각 15줄짜리 파일이고, 묶음 명령 2개는 각 약 70줄입니다. 전체 관리 부담은 약 200줄로 고정입니다.
2판 문서와 기존 측정 기준이 안 맞을 위험 /loopy-era-eval(기존 측정 명령)을 2판 문서 4장이 그대로 부르도록 정해 두었습니다. 그래서 지금의 강제 검사 비율 엔진과 완벽히 호환됩니다. 새로 만드는 묶음 명령도 속으로는 이 엔진을 부릅니다. 이 엔진이 재는 지표는 강제 검사 통과 비율 하나이고, 기록에 적히는 영문 라벨은 HARD
결론
최종 판단
2판 문서는 엔진은 그대로 두고, 사용자가 쓸 명령(표면)만 정의하자는 것입니다. 지금 loopy-era 엔진은 핵심 기능 네 가지를 이미 다 갖췄습니다. 강제 검사 통과 비율 측정, 좋은 변경만 남기고 나쁜 변경은 버리기(keep/discard), 중단 지점부터 이어하기(resume), 파일을 바꾸지 않고 측정만 하기(measure)입니다. 이 가운데 첫째인 강제 검사 통과 비율의 영문 라벨은 HARD. 그래서 표면 명령 6개 중 4개는 별칭으로, 2개는 얇은 묶음 명령으로 만들 수 있습니다. 전체 작업은 약 200줄, 3~4시간입니다. 기존 명령은 지우지 않고 함께 둡니다. 그래서 예전 방식도 그대로 쓸 수 있습니다. 2판 제안은 뒤엎을 필요도, 크게 고칠 필요도 없습니다. 명령 파일 6개만 추가하면 끝입니다.

2판 문서의 핵심은 세 가지 사용성 원칙입니다. 외우기 쉬울 것, 이름만 봐도 짐작될 것, 복잡한 내부 단계는 감출 것. 이 세 가지를 만족하는 표면 명령층을 지금 엔진 위에 얹으면 두 가지를 동시에 얻습니다. 문제를 뜯어보는 유연함은 그대로 남고, 자주 안 쓰는 사용자도 쉽게 다시 꺼내 쓸 수 있습니다. 제안한 3단계 계획은 이 전환을 멀쩡하던 것을 깨뜨릴 위험 없이 해내는 가장 빠른 길입니다.