effidevFlutter · Cloudflare-Edge · Cloud-Kostenoptimierung
Deutsch

Claude Code CLI Team-Automatisierung: Hooks, CLAUDE.md & MCP

Claude Code CLI Team-Automatisierung mit Custom Hooks und MCP

Ein häufiges Problem bei der Einführung von AI-Coding-Agenten in Entwicklungsteams ist, dass „die Qualität der Ergebnisse von Person zu Person extrem variiert“. Während ein Entwickler sauber strukturierten Code erhält, der allen Richtlinien entspricht, generiert ein anderer Einweg-Code, der die Projektkonventionen völlig ignoriert. Dies liegt nicht an den Grenzen des AI-Modells, sondern am Fehlen von Kontext-Engineering und automatisierten Hook-Systemen auf Teamebene.

Claude Code CLI von Anthropic ist nicht bloß ein Werkzeug zum Chatten im Terminal. Es ist eine AI-Ausführungslaufzeit für Teams, die über Custom Hooks auf Basis von .claude/settings.json, eine CLAUDE.md zur automatischen Injektion des Projektkontextes und einen MCP-Layer (Model Context Protocol) zur Anbindung von Datenbanken, Jira und GitHub verfügt.

Dieser Artikel behandelt die drei Hauptsäulen zur Etablierung von Claude Code CLI als Team-Standard-Entwicklungsumgebung—das Custom-Hooks-Ökosystem, CLAUDE.md Kontext-Engineering und das Einrichten gemeinsamer MCP-Pipelines—im Detail anhand von praxisnahen Codebeispielen.

Wichtige Zusammenfassung

  • Kontext-Engineering > Prompt-Engineering: 90 % der AI-Halluzinationen entstehen nicht durch mangelhafte Prompts, sondern durch das Fehlen von Kontext. Sie sollten eine CLAUDE.md im Projekt-Root erstellen, um Architekturregeln automatisch bereitzustellen.
  • Rolle von Custom Hooks: Steuern Sie das Verhalten der AI deterministisch mit Hooks wie PreToolUse (Sicherheit/Validierung vor Dateiänderungen), PostToolUse (automatisches Linting/Prettier nach Änderungen) und SessionStart (Umgebungsinitialisierung).
  • Gemeinsames MCP-Setup: Committen Sie .claude/settings.json in Git, damit das gesamte Team dieselben MCP-Server (PostgreSQL, GitHub, Figma) und Sicherheits-Hooks teilt.
  • Sicherheitspipeline: Automatisieren Sie das Blockieren von .env-Zugriffen, das Verweigern gefährlicher Befehle wie rm -rf und die Überprüfung auf Secret-Leaks auf Gateway-Ebene über Hooks.

1. Paradigmenwechsel vom Prompt-Engineering zum Kontext-Engineering

Bis 2024 drehte sich alles um die Frage, „wie lang und ausgefeilt ein Prompt geschrieben werden muss“. Im Jahr 2026 ergibt sich die zentrale Produktivität von Teams in LLM-Umgebungen (Large Language Models) jedoch aus dem „Kontext-Engineering (Context Engineering)“.

[구형 프롬프트 엔지니어링]
개발자 ──(매번 500자 프롬프트 작성)──► AI 에이전트 ──► 규칙 미준수 코드 생성

[2026 컨텍스트 엔지니어링]
개발자 ──(간결한 명령)──► [CLAUDE.md + Custom Hooks + MCP] ──► AI 에이전트 ──► 컨벤션 100% 준수 코드

Wenn die AI die Projektarchitektur, Paketversionen, den Codestil und Verbote bereits kennt, kann der Entwickler mit einem einzigen Befehl wie „Füge User-Login-Funktion hinzu“ Code in Produktionsqualität erhalten.

Standard-Spezifikation zur Strukturierung von CLAUDE.md

Die im Projekt-Root platzierte Datei CLAUDE.md ist die primäre Kontextdatei, die Claude Code zu Beginn einer Session als Erstes liest. Das folgende Beispiel entspricht den empfohlenen Spezifikationen der offiziellen Claude Code Dokumentation.

# 프로젝트 아키텍처 & 개발 컨벤션

## 기술 스택
- Framework: Next.js 15 (App Router), React 19
- Styling: Tailwind CSS v4, shadcn/ui
- State: TanStack Query v5, Zustand
- Test: Vitest, Playwright

## 코드 스타일 규칙
- 모든 아티팩트는 TypeScript Strict Mode를 준수한다 (`any` 사용 금지).
- 컴포넌트는 `src/components/` 하위에 목적별로 분리하며, `export default` 대신 Named Export를 사용한다.
- 데이터 패칭은 반드시 Server Actions 또는 `useQuery` 커스텀 훅을 통해 수행한다.

## 금지 사항 (Strict Rules)
- `.env``.env.local` 파일 내용을 읽거나 수정하지 않는다.
- `node_modules` 하위 파일을 직접 수정하지 않는다.
- `git push --force` 명령을 실행하지 않는다.

## 자주 쓰는 명령어
- Build: `npm run build`
- Test: `npm run test`
- Lint: `npx eslint . --fix`

2. Custom Hooks: Deterministische Steuerung von AI-Agenten

Während CLAUDE.md Regeln „deklarativ“ vorschreibt, sind Custom Hooks eine erzwingbare Sandbox-Pipeline, die verhindert, dass die AI gegen diese Regeln verstößt.

Lifecycle-Events der Hook-Ausführung

훅 이벤트 실행 시점 주요 활용 사례
SessionStart Claude Code 세션 시작 시 환경 변수 검증, 임시 파일 정리, 최신 마스터 브랜치 동기화
PreToolUse 도구(파일 쓰기, 명령 실행 등) 호출 전 위험 명령 차단, 민감 파일 접근 거부, 보안 검사
PostToolUse 도구 실행 완료 직후 ESLint / Prettier 자동 교정, 생성된 코드의 타입 체크
SessionEnd 세션 종료 시 작업 로그 기록, 임시 브랜치 정리

.claude/settings.json 실전 설정 코드

팀 프로젝트에 적용할 수 있는 .claude/settings.json 설정 파일 구조다. 이 파일을 Git 레포지토리에 커밋하면 팀원 전원에게 동일한 보안 훅과 자동화가 적용된다.

{
  "hooks": {
    "PreToolUse": [
      {
        "type": "command",
        "command": "node .claude/hooks/security-guard.js"
      }
    ],
    "PostToolUse": [
      {
        "type": "command",
        "command": "npx prettier --write \"$CLAUDE_CHANGED_FILE\" && npx eslint --fix \"$CLAUDE_CHANGED_FILE\""
      }
    ]
  }
}

보안 검사 훅 구현 예시 (.claude/hooks/security-guard.js)

AI가 .env 파일을 읽으려 하거나 rm -rf 같은 파괴적인 시도를 할 때 훅 스크립트가 exit code 1을 반환하여 차단한다.

// .claude/hooks/security-guard.js
const input = JSON.parse(process.env.CLAUDE_TOOL_INPUT || '{}');
const toolName = process.env.CLAUDE_TOOL_NAME;

// 1. 민감 파일 접근 차단
if (input.path && (input.path.includes('.env') || input.path.includes('id_rsa'))) {
  console.error('❌ [보안 위반] 민감한 파일에 접근할 수 없습니다:', input.path);
  process.exit(1);
}

// 2. 위험 파괴 명령 차단
if (toolName === 'Bash' && input.command) {
  const dangerousCmds = ['rm -rf /', 'git reset --hard', 'drop database'];
  if (dangerousCmds.some(cmd => input.command.includes(cmd))) {
    console.error('❌ [보안 위반] 위험한 명령어 실행이 금지되었습니다:', input.command);
    process.exit(1);
  }
}

process.exit(0);

Mit diesem Hook-System lassen sich Versehentliches Löschen von Datenbanken oder Secret-Leaks durch die AI zu 100 % im Vorfeld verhindern.

3. Aufbau einer gemeinsamen MCP-Pipeline (Model Context Protocol) für das Team

MCP fungiert als Standard-USB-C-Port, über den Claude Code mit externen Datenbanken, Issue-Trackern und Design-Tools kommuniziert. Wenn jeder Entwickler MCP individuell konfiguriert, wird die Schlüsselverwaltung mühsam; wird jedoch ein gemeinsames MCP auf Teamebene eingerichtet, steigt die Effizienz der Zusammenarbeit explosiv an.

[Claude Code CLI] 

       ├─► [Figma MCP] ─────► 디자인 토큰 & 컴포넌트 레이아웃 수신
       ├─► [Postgres MCP] ──► 실제 DB 스키마 & 타입 자동 인스펙션
       └─► [GitHub MCP] ────► PR 생성 & 리뷰 이력 자동 참조

Team-MCP-Konfigurationsdatei (.claude/mcp-config.json)

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres", "${DATABASE_URL}"]
    }
  }
}

Wenn diese Konfiguration eingebunden ist und ein Entwickler anfragt: „Aktualisiere das DB-Schema passend zu Issue #142 und erstelle einen PR“, führt Claude den gesamten Workflow von Prüfen des Jira/GitHub-Issues ➔ Erfassen des Postgres-Schemas ➔ Code-Anpassung ➔ PR-Erstellung autonom aus. In Kombination mit den zustandsbehafteten Agentenmustern aus dem Cloudflare Agents SDK Leitfaden entsteht eine Automatisierung auf Enterprise-Niveau.

4. Team-Standardisierung von Prompt-Konventionen und Custom Commands (Slash Commands)

Wiederkehrende Befehle, die von Teammitgliedern häufig genutzt werden, können als benutzerdefinierte Slash Commands registriert werden. Dazu müssen Sie lediglich Markdown-Dateien im Verzeichnis .claude/commands/ definieren.

Automatisierungsbefehl zur PR-Erstellung (.claude/commands/make-pr.md)

---
description: "현재 브랜치의 변경사항을 분석하여 표준 양식의 GitHub PR을 작성합니다."
---

다음 절차에 따라 PR을 작성해줘:
1. `git diff main...HEAD`를 수행하여 변경된 모든 파일과 로직을 분석한다.
2. 커밋 메시지와 변경 내용을 바탕으로 PR 제목과 본문을 작성한다.
3. PR 본문에는 [주요 변경사항], [테스트 방법], [영향 범위] 섹션을 포함한다.
4. `gh pr create` 명령을 사용하여 PR을 생성한다.

Entwickler müssen im Terminal lediglich eine einzige Zeile /make-pr eingeben, um sofort einen PR zu erstellen, der den Teamkonventionen zu 100 % entspricht.

5. Leitfaden für die Team-Einführung: 3-Stufen-Migrations-Roadmap

Phase Zeitraum Hauptaufgaben Erwarteter Effekt
Stufe 1: Kontext vereinheitlichen Woche 1 CLAUDE.md erstellen & im Repo committen, Codedesign-Konventionen festlegen 50 % Verringerung der Qualitätsschwankungen beim Code
Stufe 2: Sicherheitsnetz aufbauen Woche 2 Custom Hooks (Sicherheits-Hooks + Prettier/ESLint-Hooks) anbinden 0 Datei-/Befehlsvorfälle, einheitliche Formatierung
Stufe 3: Pipeline-Integration Woche 3–4 Gemeinsame Team-MCPs (GitHub, DB, Figma) & Custom Commands registrieren Automatisierung von PR-Erstellung und DB-Migrationen

Häufig gestellte Fragen

Sinkt die Performance, wenn die Datei CLAUDE.md zu lang wird?

Ja, sie sinkt. Wenn CLAUDE.md zu überladen wird, verbraucht sie übermäßig viele Tokens im Kontextfenster und Kernregeln können verloren gehen. Es wird empfohlen, die Datei innerhalb von 150–300 Zeilen zu halten. Detaillierte Design-Guides sollten wie im Claude Design-Tool Leitfaden über MCPs oder separate Dokumentationsdateien ausgelagert werden, sodass sie nur bei Bedarf referenziert werden.

Funktionieren Custom Hooks in einer Windows-Umgebung ebenso?

Wenn Sie Bash-Befehle direkt in das Feld command von .claude/settings.json schreiben, funktionieren diese unter Windows (cmd/PowerShell) möglicherweise nicht. Wenn Sie Hook-Skripte als plattformübergreifende Node.js-Dateien (node .claude/hooks/script.js) schreiben, laufen diese unabhängig vom Betriebssystem identisch.

Besteht das Risiko, dass Teammitglieder versehentlich private API-Keys in Git hochladen?

Wenn Sie ein Skript zur Überprüfung gestagter Git-Dateien an das PreToolUse-Event von Custom Hooks anbinden, wird Code, der .env oder API-Schlüssel beginnend mit sk- enthält, noch vor dem Schritt git commit blockiert.

Was eignet sich besser für Team-Umgebungen: Claude Code CLI oder Cursor?

Für die Anbindung an terminalorientierte CI/CD-Pipelines, strenge Steuerung durch Custom Hooks und umfassendes Refactoring über mehrere Dateien hinweg ist Claude Code CLI deutlich im Vorteil. Wenn der Schwerpunkt hingegen auf Echtzeit-Inline-Autovervollständigung und visuellem Editieren liegt, ist Cursor komfortabler. Führende Teams nutzen heute beide Tools parallel und verwalten sowohl .claude/settings.json als auch .cursorrules gemeinsam.