Skip to main content

codebase-onboarding

Systematically analyze an unfamiliar codebase and produce structured onboarding artifacts — architecture map, key entry points, conventions, and a tailored CLAUDE.md. Use when joining a new repository, analyzing a client codebase, or generating/updating CLAUDE.md for an existing project.

소스 정보

저장소
kumaran-is/claude-code-onboarding
최근 소스 활동
2026년 3월 29일 18:07
감지된 SKILL.md 언어
영어
스타
36
포크
21

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
codebase-onboarding
description
Systematically analyze an unfamiliar codebase and produce structured onboarding artifacts — architecture map, key entry points, conventions, and a tailored CLAUDE.md. Use when joining a new repository, analyzing a client codebase, or generating/updating CLAUDE.md for an existing project.
allowed-tools
Glob, Grep, Read, Bash, Write
metadata
{"triggers":"analyze codebase, onboard to project, generate CLAUDE.md, understand project structure, map architecture, new repository, joining new team","related-skills":"architecture-design, java-spring-api, nestjs-api, python-dev, angular-spa, flutter-mobile","domain":"architecture","role":"specialist","scope":"analysis","output-format":"report"}
last-reviewed
2026-03-29
**Iron Law:** Read actual files before making any claims about the codebase. Never infer stack from directory names alone — read the config files. A wrong CLAUDE.md is worse than no CLAUDE.md. # Codebase Onboarding Skill Systematically maps an unfamiliar codebase in 4 phases, then generates two artifacts: a structured Onboarding Guide and a tailored CLAUDE.md. ## When to Use - Opening a new client project with Claude Code for the first time - Joining a new team repository - User asks "onboard me", "analyze this codebase", "generate a CLAUDE.md" - Updating an existing CLAUDE.md to reflect current project state ## Four-Phase Analysis Workflow ### Phase 1: Reconnaissance (read config files, not source) Gather signals without reading all source files. Run these in sequence: ```bash # 1. Package manifest detection ls pom.xml package.json pyproject.toml pubspec.yaml angular.json go.mod Cargo.toml Gemfile 2>/dev/null # 2. Framework fingerprinting — read the detected manifests cat pom.xml 2>/dev/null | grep -E "<artifactId>spring-boot|webflux|r2dbc" | head -5 cat package.json 2>/dev/null | grep -E "@nestjs/core|@angular/core|fastify|prisma" | head -5 cat pyproject.toml 2>/dev/null | grep -E "fastapi|langchain|langgraph" | head -5 cat pubspec.yaml 2>/dev/null | grep -E "^name:|flutter:|riverpod|go_router" | head -5 # 3. Entry point identification ls src/main/java 2>/dev/null || ls src/app 2>/dev/null || ls lib/main.dart 2>/dev/null || ls main.py 2>/dev/null # 4. Directory snapshot (top 2 levels, ignore noise) find . -maxdepth 2 -type d \ ! -path "*/node_modules/*" ! -path "*/.git/*" ! -path "*/build/*" \ ! -path "*/dist/*" ! -path "*/.dart_tool/*" ! -path "*/target/*" \ ! -path "*/__pycache__/*" ! -path "*/.gradle/*" 2>/dev/null | sort # 5. CI/CD and tooling detection ls .github/workflows/ Dockerfile docker-compose*.yml .env.example 2>/dev/null ``` **Stack fingerprint → skill mapping:** | Detected | Stack | Load Skill | |----------|-------|-----------| | `pom.xml` + `spring-boot` | Java 21 / Spring Boot 3.5.x WebFlux | `java-spring-api` | | `package.json` + `@nestjs/core` | NestJS 11.x / Fastify / Prisma | `nestjs-api` | | `pyproject.toml` + `fastapi` | Python 3.14 / FastAPI 0.135.2 | `python-dev` | | `pyproject.toml` + `langchain`/`langgraph` | Agentic AI / LangGraph | `agentic-ai-dev` | | `angular.json` | Angular 21.x / daisyUI | `angular-spa` | | `pubspec.yaml` + `flutter:` | Flutter 3.41.x / Dart 3.10.9 | `flutter-mobile` | ### Phase 2: Architecture Mapping After fingerprinting, read selectively: ```bash # For each detected stack, read key config files # Spring Boot cat src/main/resources/application.yml 2>/dev/null | head -40 find src/main/java -name "*Application.java" -o -name "*Router*.java" 2>/dev/null | head -5 # NestJS cat src/app.module.ts 2>/dev/null | head -40 find src -name "*.module.ts" 2>/dev/null | head -10 # Python/FastAPI cat main.py 2>/dev/null | head -40 find src -name "router*.py" -o -name "routes*.py" 2>/dev/null | head -5 # Flutter cat lib/main.dart 2>/dev/null | head -40 find lib -name "*.dart" -path "*/di/*" -o -path "*/config/*" 2>/dev/null | head -10 ``` Map these dimensions: - **Tech Stack** — Languages, frameworks, databases, build tools - **Architecture Pattern** — Monolith / microservices / monorepo; reactive vs imperative; API style - **Key Directories** — top-level folder to purpose mapping - **Data Flow** — trace a request: entry → validation → service → repository → database ### Phase 3: Convention Detection ```bash # Naming conventions — sample 5 files from each layer find src -name "*.java" | head -5 | xargs ls -1 2>/dev/null find src -name "*.ts" | head -10 | xargs ls -1 2>/dev/null find lib -name "*.dart" | head -10 | xargs ls -1 2>/dev/null # Error handling pattern — grep for try/catch patterns grep -r "catch\|@ExceptionHandler\|@ControllerAdvice\|GlobalExceptionHandler" src/ --include="*.java" -l 2>/dev/null | head -3 grep -r "catch\|ExceptionFilter\|@Catch" src/ --include="*.ts" -l 2>/dev/null | head -3 # Git conventions git log --oneline -10 2>/dev/null git branch -a 2>/dev/null | head -5 ``` ### Phase 4: Generate Artifacts Produce **both** outputs. Do not skip either. #### Artifact 1: Onboarding Guide Save to `docs/ONBOARDING.md` (create if missing, enhance if exists): ```markdown # {Project Name} — Onboarding Guide **Generated:** {ISO-8601 date} **Stack:** {detected stacks} ## Overview {1-2 sentences: what the project does and who uses it} ## Tech Stack | Layer | Technology | Version | |-------|-----------|---------| | {layer} | {tech} | {version} | ## Architecture {Architecture pattern: reactive/imperative, monolith/microservices} {Key architectural decisions detected from code} ## Directory Map | Path | Purpose | |------|---------| | `{path}` | {one-line purpose} | ## Request Lifecycle {Request flow: entry → validation → business logic → data access — traced from actual code} ## Conventions Detected - **Naming:** {file naming pattern observed} - **Error handling:** {pattern observed — @ControllerAdvice / ExceptionFilter / etc.} - **Testing:** {test framework and patterns found} - **Git:** {branch naming, commit style observed} ## Common Tasks ```bash # Build {actual build command} # Test {actual test command} # Run locally {actual run command} ``` ## Skills to Load {list skills from fingerprint table above} ``` #### Artifact 2: CLAUDE.md (create or enhance) If `CLAUDE.md` exists: **enhance, do not replace**. Add detected sections while preserving existing content. If missing: create at project root. Target: under 100 lines. ```markdown # {Project Name} ## Tech Stack {detected stack versions} ## Build & Run ```bash {commands from package manager} ``` ## Code Conventions - {naming pattern detected} - {error handling pattern} - {test framework} ## Key Entry Points - `{file}:{line}` — {description} ## Skills {stack-appropriate skills from this workspace} ``` ## Anti-Patterns - **Don't read every source file** — use Glob/Grep for reconnaissance; read selectively only when signals are ambiguous - **Don't infer from directory names** — a folder called `auth/` might contain Firebase logic, not custom auth. Read the files. - **Don't replace existing CLAUDE.md** — enhance and preserve existing guidance - **Don't guess version numbers** — read `pom.xml`, `package.json`, `pubspec.yaml` for exact versions - **Don't generate CLAUDE.md over 100 lines** — scannable in 2 minutes is the goal ## Error Handling If a manifest file is detected but unreadable: ``` BLOCKED: Cannot read {file} — permission denied or binary format. Proceeding without {stack} stack analysis. ``` If no manifest files found at project root: ``` No standard manifest detected at project root. Searching subdirectories... [run find . -name "pom.xml" -o -name "package.json" -maxdepth 3] If still none found: "This may not be a standard project root. Please cd to the correct directory." ``` ## Verify Step After generating both artifacts: ```bash # Confirm files exist and are non-empty wc -l docs/ONBOARDING.md CLAUDE.md 2>/dev/null ``` Report: "Generated: docs/ONBOARDING.md ({N} lines), CLAUDE.md ({N} lines)"
GitHub에서 보기