Reporails: Copilot 어댑터, Copilot으로 구축된, Copilot용
Source: Dev.to
내가 만든 것
Reporails은 AI‑에이전트 명령 파일(CLAUDE.md, AGENTS.md, copilot-instructions.md)을 검증하는 도구입니다. 파일을 평가하고, 누락된 부분을 알려주며, 수정 방법을 도와줍니다.
이 프로젝트는 이미 Claude, Code, Codex를 지원하고 있었습니다. 이번 과제에서는 GitHub Copilot CLI를 일등급 지원 에이전트로 추가했으며, 어댑터를 만들기 위해 Copilot CLI 자체를 사용했습니다.
아키텍처는 설계상 이미 멀티‑에이전트 구조였습니다. .shared/ 디렉터리에는 에이전트에 구애받지 않는 워크플로와 지식이 들어 있습니다. 각 에이전트는 공유 콘텐츠에 연결되는 자체 어댑터를 갖습니다. Claude는 .claude/skills/를 통해, Copilot은 .github/copilot-instructions.md를 통해 구현됩니다.
Copilot을 추가하는 데 113줄이 걸렸습니다 – 작업이 간단해서가 아니라 아키텍처가 이미 준비돼 있었기 때문입니다.
레포지토리
- CLI: reporails/cli (v0.3.0)
- Rules: reporails/rules (v0.4.0)
- Recommended: reporails/recommended (v0.2.0)
데모
Copilot 지원을 추가하면 각 에이전트마다 자체 규칙 집합이 생겨 교차 오염이 발생하지 않습니다:
| 에이전트 | 규칙 | 세부 내역 |
|---|---|---|
| Copilot | 29 | 30 CORE – 1 제외 + 0 COPILOT‑specific |
| Claude | 39 | 30 CORE – 1 제외 + 10 CLAUDE‑specific |
| Codex | 37 | 30 CORE + 7 CODEX‑specific |
직접 실행해 보세요:
npx @reporails/cli check --agent copilot
GitHub Copilot CLI와의 경험
아키텍처를 즉시 이해했어요
.shared/ 폴더가 두 에이전트인 Claude와 Copilot(및 기타 에이전트) 모두가 중복 없이 동일한 워크플로와 지식을 참조하도록 특별히 만들어졌다고 설명했어요. Copilot은 첫 번째 대화에서 바로 이해했습니다:
Copilot이 .shared/ 아키텍처를 이해함
그가 제시한 핵심 통찰은: “.shared/ 내용은 이미 에이전트에 구애받지 않는다. 두 에이전트가 동일한 워크플로를 참조한다. 중복이 필요 없으며, 단지 진입점만 다를 뿐이다.”
맞아요. Claude는 /generate-rule → .claude/skills/ → .shared/workflows/rule-creation.md 를 통해 공유 워크플로에 도달하고, Copilot은 instructions → .shared/workflows/rule-creation.md 를 읽어요. 목적지는 동일하지만 입구가 다른 것이죠.
만든 것
Copilot은 전체 어댑터를 세 단계에 걸쳐 만들었습니다:
- 기초 –
.github/copilot-instructions.md,agents/copilot/config.yml, 업데이트된backbone.yml,--agent copilot을 지원하도록 테스트 하네스 검증. - 워크플로 연결 –
copilot-instructions.md에 진입점 추가, 컨텍스트‑별 조건부 지시문,.shared/workflows/와.shared/knowledge/로 연결. - 문서화 – README와 CONTRIBUTING을 업데이트하여 에이전트에 구애받지 않는 워크플로 가이드 추가.
Copilot 기여 동등성 완료
발견한 버그
Copilot 어댑터를 테스트하던 중, 테스트 하네스에 교차 오염 버그가 있음을 발견했습니다. --agent copilot 로 실행하면 _scan_root() 가 모든 agents/*/rules/ 디렉터리를 무차별적으로 스캔해 CODEX 규칙까지 테스트했습니다.
수정은 파이썬 세 줄이면 충분했습니다:
# If an agent is specified, only scan that agent's rules directory
if agent and agent_dir.name != agent:
continue
테스트 하네스 에이전트 격리 수정
모델‑셀렉터 서프라이즈
Copilot CLI 모델 셀렉터를 열었을 때 기본 모델이 Claude Sonnet 4.5 로 설정돼 있었습니다. Copilot CLI를 사용해 Copilot 어댑터를 만들면서 Claude를 쓰는 아이러니가 크게 다가왔어요.
솔직히 잘 작동한 점
Copilot CLI는 별다른 안내 없이도 멀티‑에이전트 아키텍처를 이해했습니다. 기존 어댑터 패턴에 맞는 올바른 설정 파일을 생성했고, 모든 커밋에 공동 저자 서명을 포함했으며, 공유 콘텐츠를 중복하지 않고 단순히 진입점만 연결했습니다.
전체 경험을 통해 다시 깨달은 점은 도구 자체보다 그 아래에 있는 아키텍처가 더 중요하다는 것입니다. 프로젝트 구조가 잘 잡혀 있다면, 어느 정도 능력 있는 에이전트든 확장할 수 있습니다. 이것이 바로 Reporails의 핵심—에이전트가 실제로 도움을 줄 수 있도록 충분히 좋은 지시 파일을 만드는 것이 목표입니다.
이 도전 과제에서 추가로 일어난 일
Copilot 어댑터를 만들면서 저는 … (이하 내용은 다음 파트에 이어집니다)
전체 규칙 프레임워크를 처음부터 구축했으며, 47개의 규칙(v0.3.1)에서 35개의 규칙(v0.4.0)으로 줄였습니다 – 규칙 수는 적지만 품질은 크게 향상되었습니다. 이제 모든 규칙은 고유하고 감지 가능하며 증거에 기반합니다. 하지만 그 이야기는 다음 포스트에서 다루겠습니다.
시도해 보세요:
npx @reporails/cli check 

