AI 코딩 툴체인 5계층: 규칙·접근 차단·에이전트 확장·리뷰·자동 검증 설정 파일 정리

도구 이름보다 저장소에 어떤 설정 파일이 있어야 하는지로 스택을 점검하는 방법

AI 코딩 툴체인 5계층 썸네일

핵심 요약

  1. AI 코딩 스택은 제품 이름보다 규칙·접근 차단·에이전트 확장·리뷰·자동 검증 다섯 계층의 설정 파일로 점검한다.
  2. 여러 도구를 쓰면 공통 규칙은 AGENTS.md에 두고, 실제 파일 차단은 도구 권한 설정으로 한다.
  3. 점검 스크립트 결과는 "무엇이 비어 있는가"를 찾는 출발점이며 설정의 정확성까지 보장하지 않는다.
  4. 빈 계층은 접근 차단 → 규칙 → 자동 검증 → 리뷰 → 에이전트 확장 순서로 채운다.

AI 코딩 도구 목록은 몇 달마다 바뀌지만, 도구를 팀에 안전하게 붙이는 데 필요한 장치는 크게 바뀌지 않는다. 에이전트가 따를 규칙, 읽으면 안 되는 파일의 차단, 외부 도구 연결, 사람 리뷰, 기계적 검증이다. 이 글은 스택을 제품 순위가 아니라 저장소에 있어야 할 설정 파일 다섯 계층으로 정리하고, 그 파일들이 실제로 있는지 확인하는 점검 스크립트를 제공한다.

다섯 계층과 대표 설정 파일

계층역할대표 파일없으면 생기는 문제
1. 규칙(컨텍스트)빌드·테스트 명령, 폴더 구조, 금지 패턴 전달AGENTS.md, CLAUDE.md, .github/copilot-instructions.md, .cursor/rules/*.mdc매 요청마다 같은 배경 설명을 반복하고, 팀 컨벤션과 다른 코드가 나온다
2. 접근 차단비밀값·고객 데이터 파일을 컨텍스트에서 제외.claude/settings.json의 permissions, .cursorignore, Copilot 콘텐츠 제외.env나 키 파일이 대화 컨텍스트로 들어간다
3. 에이전트 확장스킬, MCP 서버로 사내 도구·외부 API 연결.claude/skills/, .mcp.json, .cursor/mcp.json반복 절차를 매번 설명하거나, 각자 다른 MCP 설정을 쓴다
4. 리뷰PR 단계에서 사람과 봇의 검토 기준 고정.github/pull_request_template.md, CODEOWNERS, .cursor/BUGBOT.mdAI 생성 PR의 리뷰 기준이 사람마다 다르다
5. 자동 검증타입·린트·테스트를 기계적으로 확인.github/workflows/*.yml, .husky/·lint-staged형식 오류를 사람이 리뷰에서 잡느라 시간을 쓴다

계층별 최소 예시

1. 규칙: 도구 공통 AGENTS.md

Cursor는 AGENTS.md를 .cursor/rules의 단순한 대안으로 지원하고, Copilot도 저장소의 AGENTS.md를 에이전트 지침으로 읽는다. 여러 도구를 쓰는 팀은 공통 규칙을 여기에 둔다. 작성 요령은 Cursor Rules 작성법에서 다룬다.

# AGENTS.md
## 명령
- 설치: npm ci
- 테스트: npm test -- --run
- 타입 검사: npx tsc --noEmit

## 규칙
- src/api/** 핸들러는 요청 본문을 Zod로 검증한다.
- 새 의존성 추가 전에 PR 설명에 이유를 적는다.
- .env, secrets/ 아래 파일은 읽거나 출력하지 않는다.

2. 접근 차단: Claude Code 권한 설정

규칙 파일의 "읽지 않는다"는 요청일 뿐이다. 실제 차단은 도구 설정으로 한다. Claude Code는 프로젝트의 .claude/settings.json에서 도구별 거부 규칙을 둔다. 도구별 차단 범위의 차이는 시크릿·.env 차단 설정에서 비교했다.

{
  "permissions": {
    "deny": ["Read(./.env)", "Read(./.env.*)", "Read(./secrets/**)"]
  }
}

3. 에이전트 확장: 팀이 공유하는 MCP 설정

MCP 서버 설정을 저장소의 .mcp.json에 두면 팀원이 같은 서버 목록을 쓴다. 아래는 이 사이트 저장소에 실제로 있는 설정이다. 서버를 늘리기 전 점검 항목은 파일시스템·브라우저 MCP 안전 설정을 참고한다.

{
  "mcpServers": {
    "chrome-devtools": {
      "type": "stdio",
      "command": "cmd",
      "args": ["/c", "npx", "-y", "chrome-devtools-mcp@latest"],
      "env": {}
    }
  }
}

4·5. 리뷰와 자동 검증

리뷰 계층은 PR 템플릿과 CODEOWNERS가 최소 단위다. 구체적인 템플릿과 PR 본문 검사 스크립트는 AI 생성 코드 리뷰 규칙에, 커밋 전 검증 설정은 커밋 전 ESLint·Prettier·tsc 자동화에 정리했다.

저장소 점검 스크립트

아래 스크립트는 저장소를 읽기만 하고, 계층별로 대표 파일이 있는지 출력한다. 파일이 있다고 설정이 올바르다는 뜻은 아니므로, 결과는 "무엇이 비어 있는가"를 찾는 출발점으로 쓴다.

// 사용법: node ai-stack-audit.mjs [저장소 경로]
// 저장소에 AI 코딩 도구 설정 파일이 계층별로 있는지 확인한다(읽기 전용).
import { existsSync, readdirSync, statSync } from 'node:fs';
import { join } from 'node:path';

const root = process.argv[2] || '.';
const has = (p) => existsSync(join(root, p));
const countIn = (dir, ext) =>
  has(dir) && statSync(join(root, dir)).isDirectory()
    ? readdirSync(join(root, dir)).filter((f) => f.endsWith(ext)).length
    : 0;

const layers = [
  ['1. 컨텍스트(규칙)', [
    ['AGENTS.md', has('AGENTS.md')],
    ['CLAUDE.md', has('CLAUDE.md')],
    ['.github/copilot-instructions.md', has('.github/copilot-instructions.md')],
    [`.cursor/rules/*.mdc (${countIn('.cursor/rules', '.mdc')}개)`, countIn('.cursor/rules', '.mdc') > 0],
  ]],
  ['2. 접근 차단', [
    ['.cursorignore', has('.cursorignore')],
    ['.claude/settings.json (permissions)', has('.claude/settings.json')],
  ]],
  ['3. 에이전트 확장', [
    [`.claude/skills (${has('.claude/skills') ? readdirSync(join(root, '.claude/skills'), { withFileTypes: true }).filter((d) => d.isDirectory()).length : 0}개)`, has('.claude/skills')],
    ['.mcp.json', has('.mcp.json')],
    ['.cursor/mcp.json', has('.cursor/mcp.json')],
  ]],
  ['4. 리뷰', [
    ['.github/pull_request_template.md', has('.github/pull_request_template.md')],
    ['CODEOWNERS', has('.github/CODEOWNERS') || has('CODEOWNERS') || has('docs/CODEOWNERS')],
    ['.cursor/BUGBOT.md', has('.cursor/BUGBOT.md')],
  ]],
  ['5. 자동 검증', [
    [`.github/workflows (${countIn('.github/workflows', '.yml')}개)`, countIn('.github/workflows', '.yml') > 0],
    ['.husky / lint-staged', has('.husky') || has('.lintstagedrc') || has('.lintstagedrc.json')],
  ]],
];

for (const [name, items] of layers) {
  const ok = items.filter(([, v]) => v).length;
  console.log(`${name}  ${ok}/${items.length}`);
  items.forEach(([label, v]) => console.log(`   ${v ? '있음' : '없음'}  ${label}`));
}

이 사이트 저장소에 실행한 결과

2026-10-07에 이 사이트를 빌드하는 저장소에 스크립트를 실행했다. 정적 사이트 생성과 콘텐츠 작업을 Claude Code 스킬로 처리하는 1인 운영 저장소다.

$ node ai-stack-audit.mjs .
1. 컨텍스트(규칙)  0/4
   없음  AGENTS.md
   없음  CLAUDE.md
   없음  .github/copilot-instructions.md
   없음  .cursor/rules/*.mdc (0개)
2. 접근 차단  1/2
   없음  .cursorignore
   있음  .claude/settings.json (permissions)
3. 에이전트 확장  2/3
   있음  .claude/skills (9개)
   있음  .mcp.json
   없음  .cursor/mcp.json
4. 리뷰  0/3
   없음  .github/pull_request_template.md
   없음  CODEOWNERS
   없음  .cursor/BUGBOT.md
5. 자동 검증  0/2
   없음  .github/workflows (0개)
   없음  .husky / lint-staged

결과를 보면 에이전트 확장 계층(스킬 9개, MCP 설정)은 갖췄지만 규칙 파일이 없다. 이 저장소는 규칙을 각 스킬의 SKILL.md와 참고 문서 안에 넣어 두었기 때문인데, 스킬 밖에서 작업을 요청하면 그 규칙이 적용되지 않는다는 뜻이기도 하다. 리뷰·자동 검증 계층이 비어 있는 것은 1인 운영이라 PR 없이 기본 브랜치에 바로 푸시하는 구조이기 때문이다. 대신 배포 스킬이 푸시 전에 빌드와 사이트 검증 스크립트를 실행한다. 팀 저장소라면 이 두 계층이 가장 먼저 채워야 할 부분이다.

빈 계층을 채우는 순서

  1. 접근 차단부터 설정한다. 다른 계층은 나중에 추가해도 되지만, 비밀값이 한 번 컨텍스트로 들어가면 되돌릴 수 없다.
  2. 규칙 파일에 빌드·테스트 명령과 금지 패턴만 적는다. 처음부터 길게 쓰지 말고 리뷰에서 반복된 지적을 추가해 간다.
  3. 자동 검증(타입·린트·테스트)을 CI에 연결한다. AI 리뷰 봇보다 먼저 둔다.
  4. 리뷰 계층에 PR 템플릿과 CODEOWNERS를 둔다.
  5. 에이전트 확장은 반복 절차가 분명해진 뒤 스킬이나 MCP 서버로 만든다.

초보자가 자주 실수하는 포인트

  • 규칙 파일에 "읽지 마라"라고 적고 실제 권한 차단은 설정하지 않는다.
  • 도구마다 규칙을 따로 적어 서로 어긋나게 만든다.
  • AI 리뷰 봇을 타입 검사·테스트 같은 기계적 검증보다 먼저 붙인다.
  • 스킬 안에만 규칙을 두고, 스킬 밖 요청에는 규칙이 적용되지 않는다는 점을 놓친다.

체크리스트

  • 저장소에 점검 스크립트를 실행해 빈 계층을 확인했다.
  • 비밀값 경로가 도구 권한 설정으로 차단되어 있다.
  • 공통 규칙 파일에 빌드·테스트 명령과 금지 패턴이 있다.
  • CI에서 타입·린트·테스트가 실행된다.
  • PR 템플릿과 CODEOWNERS가 기본 브랜치에 있다.

자주 묻는 질문

계층을 전부 채워야 하나요?

1인 저장소처럼 PR 리뷰가 없는 구조라면 리뷰 계층 대신 배포 전 검증 스크립트로 대체할 수 있습니다. 다만 접근 차단과 자동 검증은 저장소 규모와 관계없이 먼저 갖추는 것이 좋습니다.

새 AI 도구가 나오면 무엇부터 확인하나요?

그 도구가 다섯 계층 중 어디에 해당하는지, 기존 규칙 파일(AGENTS.md 등)을 읽는지, 비밀값 차단 설정을 지원하는지를 먼저 확인합니다. 기존 계층을 대체하는지 추가하는지가 정해지면 도입 범위도 정해집니다.

참고 자료 · 검증 기준

위 자료와 내용을 대조한 날짜: . 도구·서비스 정책은 이후 바뀔 수 있으므로 적용 전 공식 문서를 다시 확인하세요.

이 글은 실제 실무 환경 테스트 및 검증된 기술 자료를 바탕으로 작성되었으며, 환경 변화에 따라 지속적으로 갱신됩니다.