← ClaudeAtlas

authoring-harnesslisted

새 하네스 어댑터를 저작할 때 읽는다. 동사 프로토콜, 번역 규율, 흔한 함정.
relayax/relayagent · ★ 17 · AI & Automation · score 76
Install: claude install-skill relayax/relayagent
# 하네스 어댑터 저작 하네스는 **어댑터**다. 기판의 중립 계약을 특정 에이전트 CLI의 호출 문법으로 번역하는 글루이고, 그 이상을 하지 않는다. 새 도구를 붙이는 비용은 파일 하나여야 한다. ## 시작 방법 1. 대상 도구의 실표면을 **근거로 잡는다**. `<도구> --help`, 공식 문서, npm README. 추측한 플래그로 어댑터를 쓰지 마라. 근거를 못 찾으면 그 사실을 말하고 멈춘다. 2. `harness/claude-code/run` 을 읽는다. 네 동사와 번역이 다 들어 있는 참조 구현이다. 다른 성질의 예시가 필요하면 `harness/kimi/run`(세션 ID 매핑이 깔끔), `harness/codex/run`(서브에이전트 없음 → 문서 절로 강등), `harness/pi/run`(MCP 없음). 3. 쓰고 나서 반드시 `relay harness-check <패키지>` 를 통과시킨다. 통과 전에는 완료가 아니다. ## 동사 프로토콜 첫 인자가 동사다. 넷은 필수, login 은 선택. | 동사 | 성질 | 계약 | |---|---|---| | `session [prompt]` | 실행 | prompt 없으면 TTY(exec 로 넘겨 네이티브 UI 를 그대로 쓴다). 있으면 headless, stdout = 최종 응답만 | | `setup` | 진단(읽기) | 도구 실재와 로그인 점검. exit 0 = 준비됨. 실패면 **사유와 다음 한 걸음**을 stdout 에 | | `models` | 조회 | JSON 문자열 배열. **절대 빈 배열을 내지 마라.** 자격에 못 닿으면 도구가 스스로 선언하는 어휘까지만 강등 | | `commands` | 조회 | JSON 배열 `[{name, description?, tty?}]`. 없으면 `[]` | | `info` | 서술 | JSON `{name, provider, verbs, account?}` | | `login [--token]` | 처방(쓰기) | 대화형 인증. exec 로 TTY 상속. 지원하면 `info.verbs` 에 실어라 | 미지 동사는 **exit 0 으로 통과시키지 마라**. 오타가 조용히 세션으로 흐른다. ## 규율 **setup 은 진단, login 은 처방.** 섞지 마라. setup 은 설치 스윕에서 후보마다 연달아 호출되는 자리라 여기서 인증 플로우가 뜨면 설치가 브라우저를 연다. 자격을 만드는 것은 사용자의 명시 행위다. **setup 의 종료코드가 미준비의 축을 가른다.** `0` 준비됨 · `3` 도구 없음(설치 필요) · 그 외 비0 자격 없음(로그인 필요). 화면은 이 축으로 처방을 고른다 — 뭉뚱그리면 도구가 없는 사용자에게 토큰 입력창이 떠서 헛돌게 만든다(2026-08-06 실증). **login 은 자격 생성이자 계정 전환 경로다.** 이미 로그인된 상태에서도 호출된다 — "이미 로그인됨"으로 조용히 끝내면 사용자가 계정을 갈아탈 길이 없다. `--switch` 를 받으면 기존 자격을 먼저