매 세션마다 AI에게 같은 규칙을 가르치는 일을 멈추세요 — mirrorai가 자동으로 코드베이스를 미러링합니다
요약
mirrorai는 기존 코드베이스를 분석하여 AI 코딩 도구가 프로젝트의 컨벤션과 아키텍처를 이해할 수 있도록 규칙 파일을 자동으로 생성해 주는 도구입니다. 매 세션마다 반복되는 프롬프트 입력을 줄이고, Cursor, Claude Code, Windsurf 등 다양한 AI 도구에 최적화된 규칙을 제공하여 개발 효율성을 높입니다.
핵심 포인트
- AI 코딩 도구가 프로젝트의 특정 패턴이나 아키텍처를 무시하고 제로 상태에서 시작하는 문제를 해결함
- 코드베이스를 스캔하여 언어, 프레임워크, 패턴 점수를 기반으로 맞춤형 규칙 파일을 생성함
- Cursor, Claude Code, Windsurf, GitHub Copilot, Cline 등 주요 AI 도구를 지원함
- 모든 분석이 로컬 기기 내에서 실행되어 데이터 보안과 API 비용 문제를 방지함
당신은 6개월 동안 Vue 어드민 패널을 구축했습니다. 래핑된 요청 레이어(wrapped request layer), 공유 컴포넌트 라이브러리(shared component library), 일관된 페이지 구조를 갖추고 있습니다. 모든 파일은 동일한 패턴을 따릅니다. 그러다 Cursor를 열고 새로운 리스트 페이지를 추가해 달라고 요청했습니다. 그런데 AI는 axios를 직접 임포트했습니다. 인라인 fetch 로직을 작성했습니다. 컴포넌트 이름을 잘못 지었습니다. 당신의 아키텍처를 완전히 무시했습니다. 익숙한 상황인가요?
AI 코딩 어시스턴트의 진짜 문제
문제는 AI 도구가 나빠서가 아닙니다. 바로 모든 세션이 제로(zero) 상태에서 시작된다는 점입니다. AI는 당신의 컨벤션(conventions)을 모릅니다. 당신의 래퍼(wrappers)를 모릅니다. 그 자리에서 자신만의 스타일을 만들어냅니다. 결국 당신은 AI가 생성한 결과물을 수정하는 데, 그것을 생성해서 아낀 시간보다 더 많은 시간을 쓰게 됩니다. 해결책은 더 나은 프롬프트(prompts)를 작성하는 것이 아닙니다. 해결책은 AI에게 당신의 프로젝트가 어떻게 작동하는지에 대한 영구적인 기억을 제공하는 것입니다.
mirrorai 소개
mirrorai는 코드베이스 인식형 AI 규칙 생성기(codebase-aware AI rules generator)입니다. 기존 코드를 분석하여 당신이 실제로 사용하는 AI 도구들을 위한 규칙 파일(rule files)을 생성합니다:
| 출력 파일 | 도구 |
|---|---|
| CLAUDE.md + .claude/commands/ | Claude Code |
| .cursorrules | Cursor |
| .windsurfrules | Windsurf |
| .github/copilot-instructions.md | GitHub Copilot |
| .clinerules | Cline |
설치하는 명령어는 단 하나입니다. 실행하는 명령어는 /mirror-init 하나뿐입니다. 이제 당신의 AI 어시스턴트가 마침내 당신의 프로젝트를 이해하게 됩니다.
작동 방식
npx mirrorai install을 실행하면 .claude/commands/ 폴더에 단 하나의 mirror-init.md 파일이 생성됩니다. 그 다음 AI 도구에서 /mirror-init을 실행합니다. AI는 일반적인 템플릿을 채우는 것이 아니라, 프로젝트를 분석하는 진짜 작업을 수행합니다:
당신의 프로젝트 ↓
- 매니페스트(manifest) 파일로부터 언어, 프레임워크 및 스택 감지 ↓
- 비즈니스 코드를 스캔하고 유닛 유형별로 파일 클러스터링(cluster) ↓
- 패턴 점수 산정: 3회 이상 등장, 파일당 50라인 이상, 유사도 80% 이상 ↓
- 규칙 파일 + 슬래시 명령어(slash commands) + 스캐폴딩 템플릿(scaffolding templates) 생성
전체 분석은 당신의 기존 구독 서비스 내에서 AI 도구 내부에서 실행됩니다. API 키가 필요 없습니다. 클라우드 서비스도 필요 없습니다. 데이터는 당신의 기기를 떠나지 않습니다.
생성되는 항목
당신의 실제 코드를 기반으로 구축된 규칙 파일들. 일반적인 "클린 코드를 작성하라"는 식의 체크리스트가 아닙니다.
생성된 CLAUDE.md에는 다음 내용이 포함됩니다:
- 당신의 실제 스택 — 정확한 프레임워크(Frameworks), 라이브러리(Libraries), 버전(Versions)
- 디렉토리 레이아웃(Directory layout) 및 각 폴더의 용도
- 핵심 추상화(Core abstractions) 및 반드시 건너뛰어서는 안 되는 레이어(Layers)
- 실제 사용 예시가 포함된 인프라 래퍼(Infrastructure wrappers) (HTTP 클라이언트, 인증(Auth), 로깅(Logging))
- 명명 규칙(Naming conventions), 임포트 순서(Import order), 타이핑 요구사항(Typing requirements)
- 패턴별 참조 파일: "새로운 CRUD 엔드포인트를 작성하기 전에 internal/handler/user.go를 읽으세요"
- 프롬프트 없이 실행되는 자동 실행 규칙(Auto-execute rules)
진정한 마법은 각 생성된 파일의 '자동 실행 규칙(Auto-Execute Rules)' 섹션에 있습니다:
자동 실행 규칙 (Auto-Execute Rules)
현재 작업이 아래 패턴 중 하나와 일치하면, 묻지 말고 즉시 해당 규칙을 적용하세요.
새로운 리스트 페이지 (New list page)
- 트리거(Trigger): "add a list page", "create a list view", "build a table page"
- 규칙(Rule): src/views/UserList.vue를 참조로 사용; 요청을 useRequest()로 래핑(Wrap)
- 사이드 이펙트(Side effects): src/router/index.ts에 라우트(Route) 등록
- 먼저 스캐폴딩(Scaffold) 수행: npx mirrorai new new-list <name>
당신은 요구사항을 평이한 영어로 설명하기만 하면 됩니다. AI는 패턴을 인식하고 올바른 컨벤션(Conventions)을 적용합니다. 당신이 반복해서 말할 필요 없이, 매번 자동으로 말이죠.
제로 토큰 스캐폴딩 (선택 사항)
선택 시, mirrorai는 당신의 실제 코드에서 추출한 plopfile.js 및 Handlebars 템플릿도 생성합니다. 단 하나의 토큰도 소비하지 않고 로컬에서 스캐폴딩을 수행한 다음, AI가 비즈니스 로직(Business logic)만 채우도록 하세요:
npx mirrorai new new-list LeaveApproval
→ 실제 프로젝트 패턴으로부터 스켈레톤(Skeleton) 생성
→ AI는 그 위에 비즈니스 로직만 작성
모든 스택과 호환
mirrorai는 언어에 완전히 구애받지 않습니다(Language-agnostic). 발견되는 무엇에든 적응합니다:
- Vue / React / Svelte / Angular 프론트엔드(Frontends)
- Go / Rust / Python / Node.js 백엔드(Backends)
- FastAPI, Django, NestJS, Spring Boot, Rails
- Flutter 모바일 앱
- CLI 도구, 데이터 파이프라인(Data pipelines), GraphQL 서비스
재실행은 안전합니다
대규모 리팩터링(Refactor) 후에는 /mirror-init을 다시 실행하세요.
기존 파일들을 감지하고 다음과 같이 처리 방법을 묻습니다:
- 모든 항목 재생성 (Regenerate everything)
- 기존 파일만 새로고침 (Refresh only existing files)
- 파일별로 선택 (Choose file by file)
<!-- mirrorai:generated --> 마커가 없는, 사용자가 직접 작성한 파일은 파일별로 프롬프트(Prompt)를 제공합니다: 병합(merge), 덮어쓰기(overwrite), 또는 건너뛰기(skip). 사용자의 콘텐츠가 사용자 모르게 덮어씌워지는 일은 절대 없습니다.
mirrorai 적용 전 / 후
mirrorai 적용 전:
사용자: 휴가 승인 흐름을 추가해줘.
AI: axios를 직접 임포트(import)함 새로운 커스텀 fetch 유틸리티를 생성함 컴포넌트 이름을 일관성 없게 명명함 라우트(Route) 등록을 잊어버림
mirrorai 적용 후:
사용자: 휴가 승인 흐름을 추가해줘.
AI: (CLAUDE.md에서 승인 패턴을 인식함) → src/views/ApprovalList.vue를 참조로 읽음 → 모든 데이터 페칭(Data fetching)에 useRequest()를 사용함 → 컴포넌트 이름을 올바르게 명명하고 구조화함 → src/router/index.ts에 라우트를 등록함 → 제안: npx mirrorai new new-approval LeaveApproval
30초 만에 시작하기
1단계: 프로젝트에 명령어 설치
npx mirrorai install
2단계: Claude Code, Cursor, Windsurf 또는 Cline 내부에서 실행
/mirror-init
두 가지 질문(대상 AI 도구 선택, 스캐폴딩(Scaffolding) 생성 여부)에 답하기만 하면 mirrorai가 나머지를 처리합니다.
GitHub → github.com/joygqz/mirrorai
npm → npmjs.com/package/mirrorai
만약 이 도구가 아키텍처(Architecture)를 다시 설명해야 하는 번거로움을 한 번이라도 줄여주었다면, GitHub의 ⭐ 하나가 큰 힘이 됩니다. 이슈(Issues)와 PR(Pull Request)은 언제나 환영합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기