AI CLI 환경 설정 가이드
다른 컴퓨터에서 이 컴퓨터와 동일한 Claude Code / Gemini CLI 환경을 구성하는 절차를 정리한다. 업데이트: 2026-03-10
핵심 요약
| 구분 | 내용 |
|---|---|
| 대상 | 새 컴퓨터에 Claude Code + Gemini CLI 환경을 동일하게 세팅하려는 경우 |
| 소요 시간 | 약 15~20분 |
| 필요 조건 | Node.js 설치, Anthropic 계정, Google 계정 |
| Claude 설정 위치 | ~/.claude/ |
| Gemini 설정 위치 | ~/.gemini/ |
| 에이전트 수 | 4개 (gemini-researcher, git-pusher, md-doctor, task-review-auditor) |
목차
- Claude Code CLI 설치
- settings.json 설정
- agents 설정
- Gemini CLI 설치 및 규칙 설정
- Obsidian CSS snippet 설정
- 트리거 키워드
- 설정 확인
1. Claude Code CLI 설치
npm install -g @anthropic-ai/claude-code설치 후 로그인:
claude최초 실행 시 Anthropic 계정으로 로그인 절차가 진행된다.
2. settings.json (전역 설정)
파일 위치: ~/.claude/settings.json
기본 설정
| 항목 | 값 | 설명 |
|---|---|---|
model | sonnet | 기본 모델 (Claude Sonnet) |
autoUpdatesChannel | latest | 자동 업데이트 채널 |
effortLevel | high | 응답 품질 수준 |
권한 설정 (permissions)
권한을 allow에 추가하면 해당 도구 실행 시 매번 묻지 않고 자동 허용된다.
deny에 추가하면 어떤 경우에도 실행을 차단한다.
형식: "도구이름(패턴)" — *는 모든 인자를 허용한다는 뜻이다.
주의:
WebFetch,WebSearch,Write,Edit등 Claude 내장 도구는 괄호 없이"WebFetch"형태로 작성해야 한다.Bash도구만"Bash(명령어:*)"형태를 사용한다.WebFetch(*)처럼 쓰면 권한이 적용되지 않아 매번 허용 확인 팝업이 뜬다.
allow (자동 허용)
| 구분 | 규칙 | 설명 |
|---|---|---|
| 📂 파일/폴더 탐색 | Bash(ls:*), Bash(find:*), Bash(grep:*), Bash(cat:*), Bash(head:*), Bash(tail:*), Bash(wc:*), Bash(pwd:*) | 읽기 전용 명령어 |
| 📝 파일/폴더 생성·수정 | Bash(mkdir:*), Bash(touch:*), Bash(mv:*), Bash(cp:*), Bash(echo:*), Bash(sed:*), Bash(chmod:*) | 파일 조작 명령어 |
| 📦 Node.js / 패키지 | Bash(npm:*), Bash(npx:*), Bash(node:*), Bash(yarn:*), Bash(pnpm:*) | 패키지 관리 |
| 🐍 Python | Bash(python:*), Bash(python3:*), Bash(pip:*), Bash(pip3:*) | Python 실행 및 패키지 |
| 🌐 네트워크 | Bash(curl:*), Bash(wget:*), WebFetch, WebSearch | 웹 요청 및 검색 |
| ✏️ Claude 내장 도구 | Write, Edit | 파일 생성·편집 (MD 등) |
| ℹ️ 시스템 정보 | Bash(which:*), Bash(env:*), Bash(lsof:*), Bash(ps:*) | 읽기 전용 조회 |
deny (차단)
| 규칙 | 설명 |
|---|---|
Bash(rm:*), Bash(rmdir:*) | 파일/폴더 삭제 |
Bash(sudo:*) | 관리자 권한 실행 |
Bash(kill:*), Bash(pkill:*) | 프로세스 종료 |
Bash(dd:*), Bash(mkfs:*) | 디스크 직접 쓰기/포맷 |
Bash(shutdown:*), Bash(reboot:*) | 시스템 종료/재시작 |
전체 설정 파일
{
"model": "sonnet",
"autoUpdatesChannel": "latest",
"effortLevel": "high",
"permissions": {
"allow": [
// ── 파일/폴더 탐색 (읽기 전용) ──
"Bash(ls:*)", "Bash(find:*)", "Bash(grep:*)", "Bash(cat:*)",
"Bash(head:*)", "Bash(tail:*)", "Bash(wc:*)", "Bash(pwd:*)",
// ── 파일/폴더 생성·수정 ──
"Bash(mkdir:*)", "Bash(touch:*)", "Bash(mv:*)", "Bash(cp:*)",
"Bash(echo:*)", "Bash(sed:*)", "Bash(chmod:*)",
// ── Node.js / 패키지 관리 ──
"Bash(npm:*)", "Bash(npx:*)", "Bash(node:*)",
"Bash(yarn:*)", "Bash(pnpm:*)",
// ── Python ──
"Bash(python:*)", "Bash(python3:*)", "Bash(pip:*)", "Bash(pip3:*)",
// ── 네트워크 ──
"Bash(curl:*)", "Bash(wget:*)",
"WebFetch", "WebSearch",
// ── Claude 내장 도구 ──
"Write", "Edit",
// ── 시스템 정보 조회 ──
"Bash(which:*)", "Bash(env:*)", "Bash(lsof:*)", "Bash(ps:*)"
],
"deny": [
"Bash(rm:*)", "Bash(rmdir:*)",
"Bash(sudo:*)",
"Bash(kill:*)", "Bash(pkill:*)",
"Bash(dd:*)", "Bash(mkfs:*)",
"Bash(shutdown:*)", "Bash(reboot:*)"
]
}
}적용 방법
# macOS / Linux — 위 내용을 복사하여 저장
nano ~/.claude/settings.json# Windows — 메모장으로 편집
notepad "$env:USERPROFILE\.claude\settings.json"팁: 도구 실행 시 권한 프롬프트가 뜨면 “Always allow”를 선택하면 자동으로 settings.json에 추가된다.
3. agents 설정
에이전트 파일 위치: ~/.claude/agents/
~/.claude/
└── agents/
├── gemini-researcher.md
├── git-pusher.md
├── md-doctor.md
└── task-review-auditor.md
각 에이전트 파일은 이 저장소의 10.0 personalSetting/10.2.agents/ 폴더에 백업되어 있다.
에이전트 목록
| 파일 | 역할 | 모델 | 주요 도구 |
|---|---|---|---|
gemini-researcher.md | Google Search로 웹 리서치 후 MD 파일 저장 | sonnet | WebFetch, WebSearch, Write |
git-pusher.md | git add → commit → push 자동화 | sonnet | Bash, Read, Glob, Grep |
md-doctor.md | MD 파일 구조·링크·frontmatter 검사 및 수정 | sonnet | Glob, Grep, Read, Edit, Write, WebFetch, Bash |
task-review-auditor.md | 코드 변경사항 리뷰 및 품질 검토 (읽기 전용) | sonnet | Read, Grep, Glob |
에이전트 파일 복사
# macOS / Linux
mkdir -p ~/.claude/agents
cp /path/to/repo/content/10.0\ personalSetting/10.2.agents/*.md ~/.claude/agents/# Windows (PowerShell)
New-Item -ItemType Directory -Force "$env:USERPROFILE\.claude\agents"
Copy-Item ".\10.0 personalSetting\10.2.agents\*.md" "$env:USERPROFILE\.claude\agents\"gemini-researcher 추가 요구사항
이 에이전트는 Gemini CLI를 Bash로 호출한다. 별도 설치가 필요하다:
npm install -g @google/gemini-cli
gemini # Google 계정으로 로그인4. Gemini CLI 설치 및 규칙 설정
4-1. 설치 및 로그인
npm install -g @google/gemini-cli
gemini # Google 계정으로 로그인4-2. 전역 규칙 파일 등록
Gemini CLI는 ~/.gemini/GEMINI.md를 자동으로 읽어 작업 규칙으로 적용한다.
이 저장소의 personalSetting/GEMINI.md를 복사하면 문서 작성 규칙(말투, 템플릿, 번호 체계 등)을 Gemini가 자동으로 따른다.
# macOS / Linux
mkdir -p ~/.gemini
cp /path/to/repo/content/personalSetting/GEMINI.md ~/.gemini/GEMINI.md# Windows (PowerShell)
New-Item -ItemType Directory -Force "$env:USERPROFILE\.gemini"
Copy-Item ".\content\personalSetting\GEMINI.md" "$env:USERPROFILE\.gemini\GEMINI.md"4-3. 규칙 업데이트 방법
personalSetting/GEMINI.md가 수정되면 ~/.gemini/GEMINI.md에 다시 복사한다.
두 파일은 항상 동일한 내용을 유지한다.
| 파일 | 역할 |
|---|---|
personalSetting/GEMINI.md | 저장소 백업본 (git으로 관리) |
~/.gemini/GEMINI.md | Gemini CLI가 실제로 읽는 전역 규칙 파일 |
5. Obsidian CSS snippet 설정
파일 위치: .obsidian/snippets/
4-1. table-nowrap.css — 테이블 1열 줄바꿈 방지
테이블 1열에서 이모지 + 텍스트가 줄바꿈되어 깨지는 문제를 방지한다.
/* 테이블 1열 줄바꿈 방지 (이모지 + 텍스트 깨짐 방지) */
.markdown-preview-view table td:first-child,
.markdown-preview-view table th:first-child,
.markdown-source-view table td:first-child,
.markdown-source-view table th:first-child,
.markdown-rendered table td:first-child,
.markdown-rendered table th:first-child {
white-space: nowrap !important;
}4-2. mermaid-center.css — Mermaid 다이어그램 가운데 정렬 및 크기 통일
Mermaid 다이어그램의 왼쪽 정렬 문제를 해결하고, Quartz와 크기를 일관되게 맞춘다.
/* Mermaid 다이어그램 가운데 정렬 */
/* Reading mode (미리보기) */
.markdown-preview-view pre.mermaid {
text-align: center !important;
}
.markdown-preview-view pre.mermaid svg {
display: inline-block !important;
max-width: 100%;
}
/* Live Preview (실시간 편집) */
.markdown-source-view .cm-preview-code-block {
display: flex !important;
justify-content: center !important;
}
/* 공통 fallback */
.mermaid {
display: flex !important;
justify-content: center !important;
}
.mermaid svg {
max-width: 100%;
height: auto;
font-size: 14px;
}4-3. Quartz Mermaid 테마 설정 — 배경색·텍스트 가시성
Obsidian과 Quartz는 서로 다른 Mermaid 렌더러를 사용하기 때문에 배경색·글자색·크기가 달라진다. Quartz 측에서 아래 두 파일을 수정하여 차이를 줄인다.
문제 원인
| 항목 | 설명 |
|---|---|
| 렌더러 차이 | Obsidian은 내장 Mermaid, Quartz는 CDN mermaid.js를 사용한다 |
| 배경색 문제 | Quartz 기본 설정에서 보조 노드 배경(secondaryColor)이 진한 색이라 텍스트가 안 보인다 |
| 크기 차이 | 컨테이너 너비·폰트 크기가 달라 같은 다이어그램도 비율이 다르게 렌더링된다 |
수정 파일 1: quartz/components/scripts/mermaid.inline.ts
mermaid.initialize() 의 themeVariables에서 색상 매핑을 수정한다.
| 변수 | 변경 전 | 변경 후 | 이유 |
|---|---|---|---|
secondaryColor | --secondary (진한 파란색) | --lightgray (밝은 회색) | 어두운 배경에 어두운 텍스트 → 글씨 안 보임 |
tertiaryColor | --tertiary | --lightgray | 동일한 가시성 문제 |
추가된 변수:
| 변수 | 값 | 용도 |
|---|---|---|
secondaryTextColor | --darkgray | 보조 노드 텍스트 색상 명시 |
tertiaryTextColor | --darkgray | 3차 노드 텍스트 색상 명시 |
clusterBorder | --lightgray | subgraph 테두리 |
noteBkgColor | --lightgray | 노트 배경 |
noteTextColor | --darkgray | 노트 텍스트 |
noteBorderColor | --gray | 노트 테두리 |
actorBkg | --light | sequence diagram 액터 배경 |
actorTextColor | --darkgray | sequence diagram 액터 텍스트 |
actorBorder | --tertiary | sequence diagram 액터 테두리 |
signalColor | --darkgray | sequence diagram 시그널 텍스트 |
labelBoxBkgColor | --light | 라벨 박스 배경 |
labelTextColor | --darkgray | 라벨 텍스트 |
수정 파일 2: quartz/styles/custom.scss
CSS로 SVG 크기 제어 및 텍스트 색상 fallback을 추가한다.
// Mermaid 다이어그램 가운데 정렬 및 크기 일관성
.mermaid {
display: flex;
justify-content: center;
svg {
max-width: 100%;
height: auto;
font-size: 14px;
}
}
// Mermaid 노드 텍스트 가시성 보장
.mermaid {
.node .label,
.nodeLabel,
.edgeLabel,
.cluster-label .nodeLabel,
.label {
color: var(--darkgray) !important;
}
.actor {
fill: var(--light) !important;
stroke: var(--tertiary) !important;
}
text.actor {
fill: var(--darkgray) !important;
}
}Claude 자동 설치
이 setup을 읽은 Claude는 아래 두 파일을 Write 도구로 직접 생성한다.
스니펫 폴더 절대경로: D:\git\Quartz\quartz\content\.obsidian\snippets\
생성할 파일 1: table-nowrap.css
/* 테이블 1열 줄바꿈 방지 (이모지 + 텍스트 깨짐 방지) */
.markdown-preview-view table td:first-child,
.markdown-preview-view table th:first-child,
.markdown-source-view table td:first-child,
.markdown-source-view table th:first-child,
.markdown-rendered table td:first-child,
.markdown-rendered table th:first-child {
white-space: nowrap !important;
}생성할 파일 2: mermaid-center.css
/* Mermaid 다이어그램 가운데 정렬 */
/* Reading mode (미리보기) */
.markdown-preview-view pre.mermaid {
text-align: center !important;
}
.markdown-preview-view pre.mermaid svg {
display: inline-block !important;
max-width: 100%;
}
/* Live Preview (실시간 편집) */
.markdown-source-view .cm-preview-code-block {
display: flex !important;
justify-content: center !important;
}
/* 공통 fallback */
.mermaid {
display: flex !important;
justify-content: center !important;
}
.mermaid svg {
max-width: 100%;
height: auto;
font-size: 14px;
}파일 생성 후 Obsidian에서 설정 > 외형 > CSS 스니펫 에서 각 스니펫 토글을 켠다.
| 스니펫 | 용도 |
|---|---|
table-nowrap | 테이블 1열 줄바꿈 방지 |
mermaid-center | Mermaid 다이어그램 가운데 정렬 + 크기 통일 |
6. 트리거 키워드
에이전트는 아래 키워드를 입력하면 Claude가 자동으로 호출한다.
| 에이전트 | 트리거 키워드 |
|---|---|
| gemini-researcher | 웹조사, 웹서치, 자료조사, 검색해줘, 조사해줘, 찾아봐, 검색해봐, 서치해줘, 인터넷에서 찾아줘, 최신 정보 |
| git-pusher | git에 올려줘, 깃에 올려줘, 커밋해줘, 푸시해줘, git push해줘, 변경사항 올려줘, 커밋하고 올려줘, 깃허브에 올려줘 |
| md-doctor | md 확인해줘, 마크다운 확인, 링크 확인해줘, 깨진 링크 찾아줘, MD 구조 점검해줘, 문서 검사해줘, wikilink 확인, frontmatter 체크, 링크 고쳐줘 |
| task-review-auditor | 코드 리뷰해줘, 리뷰해줘, 검토해줘, 코드 검토, 변경사항 확인해줘, 코드 점검해줘, 오류 확인해줘, 방금 작업 확인해줘 |
7. 설정 확인
# Claude Code 버전 확인
claude --version
# settings.json 확인
cat ~/.claude/settings.json
# 에이전트 파일 확인
ls ~/.claude/agents/
# Gemini CLI 버전 확인
gemini --version
# Gemini 전역 규칙 확인
cat ~/.gemini/GEMINI.mdClaude Code 실행 후 /agents 명령으로 에이전트 목록이 표시되면 설정 완료다.
Gemini CLI 실행 후 문서 작성 요청 시 GEMINI.md의 말투·템플릿 규칙을 자동으로 따르면 설정 완료다.