8.5 KiB
name, description
| name | description |
|---|---|
| onboard-repository | Use when creating CLAUDE.md or docs/claude/ documentation for a new repository - ensures systematic codebase exploration instead of generic templates, extracting real architecture, actual tech stack, and concrete code patterns from the repository |
Onboard Repository
Overview
Repository onboarding creates documentation by systematically exploring the actual codebase, not by generating templates.
Core principle: Documentation must reflect what's ACTUALLY in the repository, not what you assume is there.
When to Use
Use this skill when:
- Creating CLAUDE.md for a new repository
- Setting up docs/claude/ documentation structure
- Onboarding multiple repositories systematically
- Someone asks to "document the codebase for Claude"
Do NOT use for:
- Adding to existing documentation (that's maintenance, not onboarding)
- Single file explanations (just read and explain)
- API documentation (that's a different skill)
The Iron Law
NO DOCUMENTATION WITHOUT READING THE CODE FIRST
Never:
- Generate documentation from directory structure alone
- Create "likely includes..." or "probably has..." content
- Use placeholders like "(needs investigation)"
- Make assumptions about patterns or conventions
- Write TODO or "fill this in later" sections
Always:
- Read actual source files before documenting them
- Extract real examples from the codebase
- Document what IS there, not what SHOULD be there
Systematic Onboarding Process
Phase 1: Discovery (Required First)
YOU MUST complete discovery before writing ANY documentation.
-
Identify the ecosystem:
- Read go.mod/package.json/pom.xml/requirements.txt for dependencies
- Check for framework indicators (Spring Boot, React, Kubernetes operator, etc.)
- Identify build system (Make, Gradle, npm, etc.)
-
Map the architecture:
- Read main entry points (main.go, index.ts, Application.java)
- Trace key initialization code
- Identify major components and their responsibilities
- Find configuration sources
-
Extract patterns:
- Find 2-3 representative files that show typical structure
- Identify testing approach (framework, patterns, location)
- Note error handling patterns
- Document actual naming conventions used
-
Catalog specifics:
- List actual make/npm/gradle targets (from files, not assumptions)
- Find environment variables and configuration
- Identify external dependencies (databases, APIs, message queues)
- Document deployment/build artifacts
Phase 2: Documentation Structure
Create docs/claude/ with these files:
| File | Content | Source |
|---|---|---|
| architecture.md | System design, component relationships, data flow | From reading main entry points and key files |
| tech-stack.md | Languages, frameworks, tools, versions | From dependency files and build configs |
| patterns.md | Code organization, naming, common patterns with REAL examples | From analyzing representative files |
| development.md | Build commands, testing, local dev setup | From Makefile/package.json/build files |
Phase 3: Create CLAUDE.md
CLAUDE.md is the entry point that:
- Briefly describes what the repo does (1-2 sentences)
- Lists key directories and their purposes
- Points to docs/claude/ for details
- Includes quick start commands
Keep it short - detailed content goes in docs/claude/, not CLAUDE.md.
Documentation Content Requirements
Architecture (docs/claude/architecture.md)
Must include:
- High-level component diagram or description
- Data flow through the system
- Key abstractions and their relationships
- Integration points (databases, external services, APIs)
Must be based on:
- Reading main.go/index.ts/Application.java
- Tracing initialization code
- Following import/require chains
- Reading configuration setup
Example of good content:
## Request Processing Flow
1. HTTP request arrives at `pkg/server/handler.go:HandleRequest()`
2. Request validated using `pkg/validator/schema.go` Zod schemas
3. Business logic in `pkg/service/processor.go:ProcessOrder()`
4. Database writes via `pkg/repository/orders.go` using GORM
5. Event published to Kafka topic `order.processed` via `pkg/events/publisher.go`
Example of bad content:
## Request Processing Flow
The system likely handles requests through handlers, processes them with business logic, and stores results in a database.
Tech Stack (docs/claude/tech-stack.md)
Must include:
- Exact language versions (from go.mod, package.json, etc.)
- Framework with version (Spring Boot 3.2.1, React 18.2.0, etc.)
- Key libraries with brief purpose
- Build tools and versions
- Runtime requirements (Java 17, Node 20, Go 1.21)
Must be based on:
- Reading dependency files completely
- Checking .tool-versions or .nvmrc
- Reading Dockerfile for runtime requirements
Patterns (docs/claude/patterns.md)
Must include:
- Project structure with explanations
- Actual code examples (2-4) from the repo
- Testing patterns with real test file examples
- Error handling patterns with actual code
- Configuration patterns
Each pattern needs:
- Description of the pattern
- REAL code example from the codebase
- Location of the example (file:line)
Example of good content:
## Error Handling Pattern
Errors are wrapped with context using pkg/errors:
```go
// From pkg/service/processor.go:45
func (s *Service) ProcessOrder(order *Order) error {
if err := s.validator.Validate(order); err != nil {
return fmt.Errorf("validating order %s: %w", order.ID, err)
}
// ...
}
This pattern provides error context for debugging while preserving the original error for type checking.
**Example of bad content:**
```markdown
## Error Handling Pattern
Errors should be handled appropriately with proper context and wrapping.
Development (docs/claude/development.md)
Must include:
- Actual build commands from Makefile/package.json
- How to run tests (with actual command)
- Local development setup steps
- Environment variables needed
- How to run the application locally
Must be based on:
- Reading Makefile/package.json/build.gradle completely
- Reading .env.example or config files
- Reading README.md if it exists
- Checking docker-compose.yml
Red Flags - STOP and Read Code
If you're writing any of these, STOP - you haven't read the code:
- "likely includes..."
- "probably uses..."
- "typically structured..."
- "common pattern is..."
- "(see X for details)" without reading X
- "(needs investigation)"
- "TODO: fill in..."
- Generic descriptions without specifics
- Zero code examples from the actual repo
- Assumed make targets without reading Makefile
All of these mean: Stop writing. Start reading.
Common Rationalizations
| Excuse | Reality |
|---|---|
| "Directory structure tells me enough" | No. Assumptions are wrong. Read the files. |
| "I can fill in details later" | No later. Document what you found NOW. |
| "It's obviously a standard X pattern" | Nothing is standard. Read the actual implementation. |
| "Quick overview is fine for now" | Quick + accurate, not quick + wrong. |
| "User said to work fast" | Fast exploration is fine. Fast assumptions are not. |
| "It's just like other repos I've seen" | Each repo is different. Read this one. |
Quality Checklist
Before considering onboarding complete:
- Read at least main entry point file completely
- Read actual dependency manifest (go.mod, package.json, etc.)
- Read actual build file (Makefile, package.json scripts, etc.)
- Extracted 2+ real code examples for patterns.md
- Listed specific versions for all major dependencies
- Documented actual make/npm/gradle targets with their real names
- Zero instances of "likely", "probably", "typically" in docs
- Zero TODO or placeholder sections
- Every pattern has real code example with file:line reference
Time Investment
Proper onboarding takes 15-30 minutes for typical repository:
- 10-15 min: Reading key files
- 5-10 min: Extracting examples
- 5-10 min: Writing documentation
This is MUCH faster than:
- Developers guessing what's there (hours)
- Debugging misunderstood architecture (hours/days)
- Onboarding new team members (hours/days)
The investment pays off immediately.
The Bottom Line
Repository onboarding means reading the actual code and documenting what you find.
Templates and assumptions create useless documentation. Systematic exploration creates valuable documentation.
If you didn't read it, don't document it.