Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Codebase'i derinlemesine anla. Onboarding, architecture discovery, dependency mapping.
.claude/skills/understand-codebase/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 57% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 58% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 61% | 0% |
1. Tech stack tespit:
ls package.json go.mod pyproject.toml tsconfig.json Cargo.toml manage.py
2. Proje yapisi:
tldr tree . --depth 2
3. Entry point'leri bul:
tldr structure . --lang <detected-lang>
4. README/docs oku:
cat README.md CONTRIBUTING.md docs/
5. CI/CD kontrol:
ls .github/workflows/ .gitlab-ci.yml Jenkinsfile Dockerfile1. Architecture overview:
tldr arch src/
2. Import/dependency graph:
tldr calls src/
3. Test yapisi:
tldr tree . --ext .test.ts,.spec.ts,.test.py,_test.go
4. Config dosyalari:
ls *.config.* .env.example docker-compose.yml
5. Data modelleri:
Grep "interface|type|class|struct|model" --type ts/py/gobash# 1. Dosya dagilimi tldr tree . | wc -l # toplam dosya tldr tree . --ext .ts,.tsx # TypeScript dosyalari tldr tree . --ext .test.ts # Test dosyalari # 2. Kod yapisi tldr structure src/ --lang typescript # Fonksiyonlar, class'lar, export'lar # 3. Mimari katmanlar tldr arch src/ # Entry (controller/handler) > Middle (service) > Leaf (util) # 4. Dead code tldr dead src/ --entry main,test_
markdown# Project: <name> ## Tech Stack - Language: <lang> <version> - Framework: <framework> <version> - Database: <db> - CI/CD: <tool> ## Architecture - Pattern: <MVC|Clean|Hexagonal|Monolith|Microservice> - Entry points: <files> - Layers: <controller → service → repository → model> ## Key Directories - src/ → Kaynak kod - tests/ → Test dosyalari - config/ → Konfigürasyon - scripts/ → Yardimci scriptler - docs/ → Dokumantasyon ## Key Files - <entry-file> → Uygulama entry point - <config-file> → Ana konfigürasyon - <schema-file> → Data modelleri - <route-file> → API routing ## Data Flow <request → middleware → controller → service → repository → database> ## External Dependencies - <key-dep-1>: <purpose> - <key-dep-2>: <purpose>
bash# tldr arch ile otomatik tespit tldr arch src/ # Cikti: entry_layer, middle_layer, leaf_layer, circular_deps # Manuel tespit: import yonlerini takip et tldr calls src/ --depth 3
| Ipucu | Patern | |-------|--------| | controllers/, routes/, handlers/ | MVC / REST API | | domain/, application/, infrastructure/ | Clean Architecture | | ports/, adapters/ | Hexagonal | | services/, modules/ | Modular Monolith | | packages/, apps/ | Monorepo | | pages/, app/ (Next.js) | File-based routing | | resolvers/, schema/ | GraphQL | | commands/, queries/, events/ | CQRS | | aggregates/, entities/, value-objects/ | DDD |
bash# codebase-memory MCP ile ADR yonetimi mcp_codebase_memory.manage_adr({ action: "create", title: "Use PostgreSQL for primary database", status: "accepted", context: "Need ACID transactions, complex queries", decision: "PostgreSQL 16 with pgvector extension", consequences: "Need DBA expertise, managed service cost" }) # ADR listele mcp_codebase_memory.manage_adr({ action: "list" })
bash# Entry point'ler tldr structure . --lang typescript | grep -i "main\|index\|app\|server" # Konfigürasyon ls -la *.config.* .env* tsconfig.json package.json # Schema/Model tldr search "schema\|model\|entity\|interface" src/ --lang typescript # Routing tldr search "router\|route\|endpoint\|controller" src/
| Kategori | Nasil Bul | Neden Onemli | |----------|-----------|--------------| | Entry point | main.ts, index.ts, app.ts | Uygulamanin baslangici | | Config | .config., .env | Ortam ayarlari | | Schema/Model | models/, schema/, types/ | Data yapisi | | Routes | routes/, controllers/ | API surface | | Middleware | middleware/ | Cross-cutting concerns | | Database | migrations/, seeds/ | DB yapisi | | Tests | .test., .spec. | Test coverage | | CI/CD | .github/workflows/ | Build/deploy | | Docker | Dockerfile, docker-compose | Container config |
bash# Node.js cat package.json | jq '.dependencies, .devDependencies' # Python cat requirements.txt # veya pyproject.toml pip list --outdated # Go cat go.mod go list -m all # Rust cat Cargo.toml
bash# Dosyalar arasi import iliskileri tldr calls src/ --depth 2 # Spesifik dosyanin import'lari tldr imports src/services/auth.ts # Kim bu modulu import ediyor? tldr importers auth src/ # Impact analizi (refactoring oncesi) tldr impact processOrder src/ --depth 3
| Risk | Kontrol | Arac | |------|---------|------| | CVE/vulnerability | npm audit / pip audit | snyk, dependabot | | Outdated | major version farki | npm outdated | | Unmaintained | Son commit 1+ yil | GitHub API | | License risk | GPL in commercial | license-checker | | Size bloat | Bundle size | bundlephobia |
bash# Fonksiyon cagri zinciri tldr calls src/ --depth 4 # Spesifik fonksiyonun cagri yolu tldr trace_call_path src/ fromFunction toFunction # Data flow analizi tldr dfg src/services/order.ts processOrder # Program slice (spesifik satiri etkileyen her sey) tldr slice src/services/order.ts processOrder 42
USER INPUT
→ Validation (middleware/schema)
→ Controller (routing, request parse)
→ Service (business logic)
→ Repository (data access)
→ Database (persistence)
→ Response (serialization)
→ USER OUTPUT
Side effects:
→ Queue (async processing)
→ Cache (read optimization)
→ External API (3rd party)
→ Event bus (pub/sub)User Action
→ Event Handler (onClick, onChange)
→ State Update (useState, dispatch, store.set)
→ Re-render (component tree)
→ Side Effect (useEffect, subscription)
→ API Call (fetch, axios)
→ State Update (response)
→ Re-renderbash# Route tanimlarini bul Grep "router\.(get|post|put|patch|delete)\|app\.(get|post|put|patch|delete)" src/ # Express/Fastify route'lar tldr search "route\|endpoint" src/ --lang typescript # OpenAPI spec varsa cat openapi.yaml # veya swagger.json
bash# Schema tanimlarini bul Grep "type Query|type Mutation|type Subscription" src/ # Resolver'lari bul tldr search "resolver\|Resolver" src/
Her endpoint icin:
- Method + Path: GET /api/users/:id
- Auth: Bearer token / API key / Public
- Request: Query params, body schema
- Response: Success (200), Error (4xx, 5xx)
- Rate limit: X req/minbash# Test dosyalarini bul tldr tree . --ext .test.ts,.spec.ts,.test.py,_test.go # Test/source orani echo "Source files:" && tldr tree src/ --ext .ts,.tsx | wc -l echo "Test files:" && tldr tree . --ext .test.ts,.spec.ts | wc -l # Hangi dosyalarin testi YOK tldr dead src/ --entry test_ # test'lerden cagrilmayan fonksiyonlar
bash# Node.js npx jest --coverage --coverageReporters=text-summary # Python pytest --cov=src --cov-report=term-missing # Go go test -coverprofile=coverage.out ./... go tool cover -func=coverage.out
| Dosya/Modul | Unit Test | Integration | E2E | Risk | |-------------|-----------|-------------|-----|------| | Auth service | var | var | yok | HIGH | | Payment | var | var | var | LOW | | User CRUD | var | yok | yok | MEDIUM | | Config | yok | yok | yok | LOW |
bash# Dead code tldr dead src/ --entry main,test_,handle,route # Buyuk dosyalar (800+ satir) find src/ -name "*.ts" -exec wc -l {} + | sort -rn | head -20 # TODO/FIXME/HACK Grep "TODO|FIXME|HACK|XXX|TEMP|WORKAROUND" src/ # Complexity (control flow) tldr cfg src/services/complex.ts processData # Cok fazla branch = refactoring gerekli # Diagnostics (type error + lint) tldr diagnostics src/ --project
| Kategori | Gostergeler | Oncelik | |----------|------------|---------| | Dead code | Kullanilmayan fonksiyon/import | LOW | | God file | 800+ satir dosya | MEDIUM | | Missing tests | Coverage <50% | HIGH | | Outdated deps | Major version farki | MEDIUM | | Security | CVE, hardcoded secret | CRITICAL | | Duplication | Benzer kod bloklari | MEDIUM | | Complexity | Cyclomatic >10 | HIGH |
mcp_codebase_memory.index_repository({
path: "/path/to/project",
name: "my-project"
})// Mimari overview
mcp_codebase_memory.get_architecture({
project: "my-project"
})
// Kod arama
mcp_codebase_memory.search_code({
project: "my-project",
query: "authentication flow"
})
// Graph schema
mcp_codebase_memory.get_graph_schema({
project: "my-project"
})
// Degisiklik tespiti
mcp_codebase_memory.detect_changes({
project: "my-project"
})bash# 1. Yapi (tldr) tldr tree . --depth 2 tldr structure src/ --lang typescript # 2. Mimari (tldr) tldr arch src/ tldr calls src/ --depth 3 # 3. Indexle (codebase-memory MCP) mcp_codebase_memory.index_repository({ path: ".", name: "project" }) # 4. Graph sorgu (codebase-memory MCP) mcp_codebase_memory.get_architecture({ project: "project" }) # 5. Impact analizi (tldr) tldr impact targetFunction src/ --depth 3 # 6. Dead code (tldr) tldr dead src/ --entry main # 7. Diagnostics (tldr) tldr diagnostics src/ --project # 8. Test impact (tldr) tldr change-impact --git
Her onemli degisiklikte:
1. tldr change-impact → etkilenen testleri bul
2. mcp_codebase_memory.detect_changes → graph'i guncelle
3. tldr dead src/ → yeni dead code kontrol
4. tldr diagnostics src/ → type/lint hata kontrolu| Anti-Pattern | Dogru Yol | |-------------|-----------| | Hemen koda dal | Once overview al, sonra oku | | Tek dosya oku, anladim san | Cagri zincirini takip et | | grep ile yetiniyor | tldr structure + arch kullan | | Mimariyi varsay | tldr arch ile dogrula | | Dead code'u gormezden gel | tldr dead ile periyodik temizlik | | Test coverage bilme | Coverage raporu al, gap analiz yap | | Dependency'leri kontrol etme | npm audit / pip audit periyodik calistir |
HIZLI: "Bu proje ne yapar?"
→ tldr tree . && cat README.md
ORTA: "Nasil calisir?"
→ tldr arch src/ && tldr calls src/
DERIN: "Bu fonksiyon neyi etkiler?"
→ tldr impact <func> src/ && tldr dfg <file> <func>
TAM: "Her seyi anlamam lazim"
→ Yukaridaki Tam Analiz Workflow'u takip et| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 3,001 | 4,646 | +55% | 1 | 1 | 0% | 177 | 3,600 | +1934% | 0 | 0 | — |
case-02 | fail→fail | 20,564 | 20,428 | -1% | 1 | 1 | 0% | 3,450 | 3,982 | +15% | 0 | 0 | — |
case-03 | fail→pass | 20,741 | 14,835 | -28% | 1 | 1 | 0% | 4,070 | 6,383 | +57% | 0 | 0 | — |
case-04 | fail→pass | 11,651 | 3,396 | -71% | 1 | 1 | 0% | 1,911 | 4,064 | +113% | 0 | 0 | — |
case-05 | pass→pass | 9,513 | 8,283 | -13% | 1 | 1 | 0% | 1,581 | 5,043 | +219% | 0 | 0 | — |
case-06 | pass→pass | 9,308 | 10,111 | +9% | 1 | 1 | 0% | 1,639 | 5,155 | +215% | 0 | 0 | — |
case-07 | fail→pass | 13,544 | 2,241 | -83% | 1 | 1 | 0% | 2,401 | 3,789 | +58% | 0 | 0 | — |
case-08 | fail→pass | 11,939 | 2,230 | -81% | 1 | 1 | 0% | 2,043 | 3,738 | +83% | 0 | 0 | — |
case-09 | fail→pass | 22,729 | 2,456 | -89% | 1 | 1 | 0% | 2,384 | 3,834 | +61% | 0 | 0 | — |
case-10 | fail→pass | 15,082 | 3,242 | -79% | 1 | 1 | 0% | 2,698 | 3,810 | +41% | 0 | 0 | — |
case-11 | fail→pass | 11,253 | 2,554 | -77% | 1 | 1 | 0% | 2,027 | 3,809 | +88% | 0 | 0 | — |
case-12 | fail→pass | 9,189 | 3,575 | -61% | 1 | 1 | 0% | 1,741 | 4,092 | +135% | 0 | 0 | — |
case-13 | fail→pass | 5,444 | 1,781 | -67% | 1 | 1 | 0% | 1,002 | 3,711 | +270% | 0 | 0 | — |
case-14 | pass→pass | 11,409 | 3,881 | -66% | 1 | 1 | 0% | 1,599 | 4,024 | +152% | 0 | 0 | — |
case-15 | pass→pass | 8,581 | 6,177 | -28% | 1 | 1 | 0% | 1,569 | 4,494 | +186% | 0 | 0 | — |
case-16 | fail→pass | 8,174 | 2,455 | -70% | 1 | 1 | 0% | 1,448 | 3,810 | +163% | 0 | 0 | — |
case-17 | fail→pass | 8,066 | 2,205 | -73% | 1 | 1 | 0% | 1,341 | 3,798 | +183% | 0 | 0 | — |
case-18 | fail→pass | 12,843 | 3,151 | -75% | 1 | 1 | 0% | 2,360 | 4,001 | +70% | 0 | 0 | — |
case-19 | pass→pass | 13,128 | 10,169 | -23% | 1 | 1 | 0% | 2,199 | 5,257 | +139% | 0 | 0 | — |
case-20 | pass→fail | 10,079 | 4,298 | -57% | 1 | 1 | 0% | 2,188 | 4,060 | +86% | 0 | 0 | — |
case-21 | pass→pass | 13,274 | 17,168 | +29% | 1 | 1 | 0% | 3,278 | 7,176 | +119% | 0 | 0 | — |
case-22 | pass→pass | 8,169 | 9,455 | +16% | 1 | 1 | 0% | 1,814 | 5,473 | +202% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 21 counted toward the lift figure. The other 1 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +50 percentage points is the difference between those two pass rates over the 21 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/29/2026 | +50% |
Other measured skills in the registry, with their headline benchmark lift.