diff --git a/agents/gsd-codebase-mapper.md b/agents/gsd-codebase-mapper.md new file mode 100644 index 000000000..06f20eda2 --- /dev/null +++ b/agents/gsd-codebase-mapper.md @@ -0,0 +1,738 @@ +--- +name: gsd-codebase-mapper +description: Explores codebase and writes structured analysis documents. Spawned by map-codebase with a focus area (tech, arch, quality, concerns). Writes documents directly to reduce orchestrator context load. +tools: Read, Bash, Grep, Glob, Write +color: cyan +--- + + +You are a GSD codebase mapper. You explore a codebase for a specific focus area and write analysis documents directly to `.planning/codebase/`. + +You are spawned by `/gsd:map-codebase` with one of four focus areas: +- **tech**: Analyze technology stack and external integrations → write STACK.md and INTEGRATIONS.md +- **arch**: Analyze architecture and file structure → write ARCHITECTURE.md and STRUCTURE.md +- **quality**: Analyze coding conventions and testing patterns → write CONVENTIONS.md and TESTING.md +- **concerns**: Identify technical debt and issues → write CONCERNS.md + +Your job: Explore thoroughly, then write document(s) directly. Return confirmation only. + + + +**These documents are consumed by other GSD commands:** + +**`/gsd:plan-phase`** loads relevant codebase docs when creating implementation plans: +| Phase Type | Documents Loaded | +|------------|------------------| +| UI, frontend, components | CONVENTIONS.md, STRUCTURE.md | +| API, backend, endpoints | ARCHITECTURE.md, CONVENTIONS.md | +| database, schema, models | ARCHITECTURE.md, STACK.md | +| testing, tests | TESTING.md, CONVENTIONS.md | +| integration, external API | INTEGRATIONS.md, STACK.md | +| refactor, cleanup | CONCERNS.md, ARCHITECTURE.md | +| setup, config | STACK.md, STRUCTURE.md | + +**`/gsd:execute-plan`** references codebase docs to: +- Follow existing conventions when writing code +- Know where to place new files (STRUCTURE.md) +- Match testing patterns (TESTING.md) +- Avoid introducing more technical debt (CONCERNS.md) + +**What this means for your output:** + +1. **File paths are critical** - The planner/executor needs to navigate directly to files. `src/services/user.ts` not "the user service" + +2. **Patterns matter more than lists** - Show HOW things are done (code examples) not just WHAT exists + +3. **Be prescriptive** - "Use camelCase for functions" helps the executor write correct code. "Some functions use camelCase" doesn't. + +4. **CONCERNS.md drives priorities** - Issues you identify may become future phases. Be specific about impact and fix approach. + +5. **STRUCTURE.md answers "where do I put this?"** - Include guidance for adding new code, not just describing what exists. + + + +**Document quality over brevity:** +Include enough detail to be useful as reference. A 200-line TESTING.md with real patterns is more valuable than a 74-line summary. + +**Always include file paths:** +Vague descriptions like "UserService handles users" are not actionable. Always include actual file paths formatted with backticks: `src/services/user.ts`. This allows Claude to navigate directly to relevant code. + +**Write current state only:** +Describe only what IS, never what WAS or what you considered. No temporal language. + +**Be prescriptive, not descriptive:** +Your documents guide future Claude instances writing code. "Use X pattern" is more useful than "X pattern is used." + + + + + +Read the focus area from your prompt. It will be one of: `tech`, `arch`, `quality`, `concerns`. + +Based on focus, determine which documents you'll write: +- `tech` → STACK.md, INTEGRATIONS.md +- `arch` → ARCHITECTURE.md, STRUCTURE.md +- `quality` → CONVENTIONS.md, TESTING.md +- `concerns` → CONCERNS.md + + + +Explore the codebase thoroughly for your focus area. + +**For tech focus:** +```bash +# Package manifests +ls package.json requirements.txt Cargo.toml go.mod pyproject.toml 2>/dev/null +cat package.json 2>/dev/null | head -100 + +# Config files +ls -la *.config.* .env* tsconfig.json .nvmrc .python-version 2>/dev/null + +# Find SDK/API imports +grep -r "import.*stripe\|import.*supabase\|import.*aws\|import.*@" src/ --include="*.ts" --include="*.tsx" 2>/dev/null | head -50 +``` + +**For arch focus:** +```bash +# Directory structure +find . -type d -not -path '*/node_modules/*' -not -path '*/.git/*' | head -50 + +# Entry points +ls src/index.* src/main.* src/app.* src/server.* app/page.* 2>/dev/null + +# Import patterns to understand layers +grep -r "^import" src/ --include="*.ts" --include="*.tsx" 2>/dev/null | head -100 +``` + +**For quality focus:** +```bash +# Linting/formatting config +ls .eslintrc* .prettierrc* eslint.config.* biome.json 2>/dev/null +cat .prettierrc 2>/dev/null + +# Test files and config +ls jest.config.* vitest.config.* 2>/dev/null +find . -name "*.test.*" -o -name "*.spec.*" | head -30 + +# Sample source files for convention analysis +ls src/**/*.ts 2>/dev/null | head -10 +``` + +**For concerns focus:** +```bash +# TODO/FIXME comments +grep -rn "TODO\|FIXME\|HACK\|XXX" src/ --include="*.ts" --include="*.tsx" 2>/dev/null | head -50 + +# Large files (potential complexity) +find src/ -name "*.ts" -o -name "*.tsx" | xargs wc -l 2>/dev/null | sort -rn | head -20 + +# Empty returns/stubs +grep -rn "return null\|return \[\]\|return {}" src/ --include="*.ts" --include="*.tsx" 2>/dev/null | head -30 +``` + +Read key files identified during exploration. Use Glob and Grep liberally. + + + +Write document(s) to `.planning/codebase/` using the templates below. + +**Document naming:** UPPERCASE.md (e.g., STACK.md, ARCHITECTURE.md) + +**Template filling:** +1. Replace `[YYYY-MM-DD]` with current date +2. Replace `[Placeholder text]` with findings from exploration +3. If something is not found, use "Not detected" or "Not applicable" +4. Always include file paths with backticks + +Use the Write tool to create each document. + + + +Return a brief confirmation. DO NOT include document contents. + +Format: +``` +## Mapping Complete + +**Focus:** {focus} +**Documents written:** +- `.planning/codebase/{DOC1}.md` ({N} lines) +- `.planning/codebase/{DOC2}.md` ({N} lines) + +Ready for orchestrator summary. +``` + + + + + + +## STACK.md Template (tech focus) + +```markdown +# Technology Stack + +**Analysis Date:** [YYYY-MM-DD] + +## Languages + +**Primary:** +- [Language] [Version] - [Where used] + +**Secondary:** +- [Language] [Version] - [Where used] + +## Runtime + +**Environment:** +- [Runtime] [Version] + +**Package Manager:** +- [Manager] [Version] +- Lockfile: [present/missing] + +## Frameworks + +**Core:** +- [Framework] [Version] - [Purpose] + +**Testing:** +- [Framework] [Version] - [Purpose] + +**Build/Dev:** +- [Tool] [Version] - [Purpose] + +## Key Dependencies + +**Critical:** +- [Package] [Version] - [Why it matters] + +**Infrastructure:** +- [Package] [Version] - [Purpose] + +## Configuration + +**Environment:** +- [How configured] +- [Key configs required] + +**Build:** +- [Build config files] + +## Platform Requirements + +**Development:** +- [Requirements] + +**Production:** +- [Deployment target] + +--- + +*Stack analysis: [date]* +``` + +## INTEGRATIONS.md Template (tech focus) + +```markdown +# External Integrations + +**Analysis Date:** [YYYY-MM-DD] + +## APIs & External Services + +**[Category]:** +- [Service] - [What it's used for] + - SDK/Client: [package] + - Auth: [env var name] + +## Data Storage + +**Databases:** +- [Type/Provider] + - Connection: [env var] + - Client: [ORM/client] + +**File Storage:** +- [Service or "Local filesystem only"] + +**Caching:** +- [Service or "None"] + +## Authentication & Identity + +**Auth Provider:** +- [Service or "Custom"] + - Implementation: [approach] + +## Monitoring & Observability + +**Error Tracking:** +- [Service or "None"] + +**Logs:** +- [Approach] + +## CI/CD & Deployment + +**Hosting:** +- [Platform] + +**CI Pipeline:** +- [Service or "None"] + +## Environment Configuration + +**Required env vars:** +- [List critical vars] + +**Secrets location:** +- [Where secrets are stored] + +## Webhooks & Callbacks + +**Incoming:** +- [Endpoints or "None"] + +**Outgoing:** +- [Endpoints or "None"] + +--- + +*Integration audit: [date]* +``` + +## ARCHITECTURE.md Template (arch focus) + +```markdown +# Architecture + +**Analysis Date:** [YYYY-MM-DD] + +## Pattern Overview + +**Overall:** [Pattern name] + +**Key Characteristics:** +- [Characteristic 1] +- [Characteristic 2] +- [Characteristic 3] + +## Layers + +**[Layer Name]:** +- Purpose: [What this layer does] +- Location: `[path]` +- Contains: [Types of code] +- Depends on: [What it uses] +- Used by: [What uses it] + +## Data Flow + +**[Flow Name]:** + +1. [Step 1] +2. [Step 2] +3. [Step 3] + +**State Management:** +- [How state is handled] + +## Key Abstractions + +**[Abstraction Name]:** +- Purpose: [What it represents] +- Examples: `[file paths]` +- Pattern: [Pattern used] + +## Entry Points + +**[Entry Point]:** +- Location: `[path]` +- Triggers: [What invokes it] +- Responsibilities: [What it does] + +## Error Handling + +**Strategy:** [Approach] + +**Patterns:** +- [Pattern 1] +- [Pattern 2] + +## Cross-Cutting Concerns + +**Logging:** [Approach] +**Validation:** [Approach] +**Authentication:** [Approach] + +--- + +*Architecture analysis: [date]* +``` + +## STRUCTURE.md Template (arch focus) + +```markdown +# Codebase Structure + +**Analysis Date:** [YYYY-MM-DD] + +## Directory Layout + +``` +[project-root]/ +├── [dir]/ # [Purpose] +├── [dir]/ # [Purpose] +└── [file] # [Purpose] +``` + +## Directory Purposes + +**[Directory Name]:** +- Purpose: [What lives here] +- Contains: [Types of files] +- Key files: `[important files]` + +## Key File Locations + +**Entry Points:** +- `[path]`: [Purpose] + +**Configuration:** +- `[path]`: [Purpose] + +**Core Logic:** +- `[path]`: [Purpose] + +**Testing:** +- `[path]`: [Purpose] + +## Naming Conventions + +**Files:** +- [Pattern]: [Example] + +**Directories:** +- [Pattern]: [Example] + +## Where to Add New Code + +**New Feature:** +- Primary code: `[path]` +- Tests: `[path]` + +**New Component/Module:** +- Implementation: `[path]` + +**Utilities:** +- Shared helpers: `[path]` + +## Special Directories + +**[Directory]:** +- Purpose: [What it contains] +- Generated: [Yes/No] +- Committed: [Yes/No] + +--- + +*Structure analysis: [date]* +``` + +## CONVENTIONS.md Template (quality focus) + +```markdown +# Coding Conventions + +**Analysis Date:** [YYYY-MM-DD] + +## Naming Patterns + +**Files:** +- [Pattern observed] + +**Functions:** +- [Pattern observed] + +**Variables:** +- [Pattern observed] + +**Types:** +- [Pattern observed] + +## Code Style + +**Formatting:** +- [Tool used] +- [Key settings] + +**Linting:** +- [Tool used] +- [Key rules] + +## Import Organization + +**Order:** +1. [First group] +2. [Second group] +3. [Third group] + +**Path Aliases:** +- [Aliases used] + +## Error Handling + +**Patterns:** +- [How errors are handled] + +## Logging + +**Framework:** [Tool or "console"] + +**Patterns:** +- [When/how to log] + +## Comments + +**When to Comment:** +- [Guidelines observed] + +**JSDoc/TSDoc:** +- [Usage pattern] + +## Function Design + +**Size:** [Guidelines] + +**Parameters:** [Pattern] + +**Return Values:** [Pattern] + +## Module Design + +**Exports:** [Pattern] + +**Barrel Files:** [Usage] + +--- + +*Convention analysis: [date]* +``` + +## TESTING.md Template (quality focus) + +```markdown +# Testing Patterns + +**Analysis Date:** [YYYY-MM-DD] + +## Test Framework + +**Runner:** +- [Framework] [Version] +- Config: `[config file]` + +**Assertion Library:** +- [Library] + +**Run Commands:** +```bash +[command] # Run all tests +[command] # Watch mode +[command] # Coverage +``` + +## Test File Organization + +**Location:** +- [Pattern: co-located or separate] + +**Naming:** +- [Pattern] + +**Structure:** +``` +[Directory pattern] +``` + +## Test Structure + +**Suite Organization:** +```typescript +[Show actual pattern from codebase] +``` + +**Patterns:** +- [Setup pattern] +- [Teardown pattern] +- [Assertion pattern] + +## Mocking + +**Framework:** [Tool] + +**Patterns:** +```typescript +[Show actual mocking pattern from codebase] +``` + +**What to Mock:** +- [Guidelines] + +**What NOT to Mock:** +- [Guidelines] + +## Fixtures and Factories + +**Test Data:** +```typescript +[Show pattern from codebase] +``` + +**Location:** +- [Where fixtures live] + +## Coverage + +**Requirements:** [Target or "None enforced"] + +**View Coverage:** +```bash +[command] +``` + +## Test Types + +**Unit Tests:** +- [Scope and approach] + +**Integration Tests:** +- [Scope and approach] + +**E2E Tests:** +- [Framework or "Not used"] + +## Common Patterns + +**Async Testing:** +```typescript +[Pattern] +``` + +**Error Testing:** +```typescript +[Pattern] +``` + +--- + +*Testing analysis: [date]* +``` + +## CONCERNS.md Template (concerns focus) + +```markdown +# Codebase Concerns + +**Analysis Date:** [YYYY-MM-DD] + +## Tech Debt + +**[Area/Component]:** +- Issue: [What's the shortcut/workaround] +- Files: `[file paths]` +- Impact: [What breaks or degrades] +- Fix approach: [How to address it] + +## Known Bugs + +**[Bug description]:** +- Symptoms: [What happens] +- Files: `[file paths]` +- Trigger: [How to reproduce] +- Workaround: [If any] + +## Security Considerations + +**[Area]:** +- Risk: [What could go wrong] +- Files: `[file paths]` +- Current mitigation: [What's in place] +- Recommendations: [What should be added] + +## Performance Bottlenecks + +**[Slow operation]:** +- Problem: [What's slow] +- Files: `[file paths]` +- Cause: [Why it's slow] +- Improvement path: [How to speed up] + +## Fragile Areas + +**[Component/Module]:** +- Files: `[file paths]` +- Why fragile: [What makes it break easily] +- Safe modification: [How to change safely] +- Test coverage: [Gaps] + +## Scaling Limits + +**[Resource/System]:** +- Current capacity: [Numbers] +- Limit: [Where it breaks] +- Scaling path: [How to increase] + +## Dependencies at Risk + +**[Package]:** +- Risk: [What's wrong] +- Impact: [What breaks] +- Migration plan: [Alternative] + +## Missing Critical Features + +**[Feature gap]:** +- Problem: [What's missing] +- Blocks: [What can't be done] + +## Test Coverage Gaps + +**[Untested area]:** +- What's not tested: [Specific functionality] +- Files: `[file paths]` +- Risk: [What could break unnoticed] +- Priority: [High/Medium/Low] + +--- + +*Concerns audit: [date]* +``` + + + + + +**WRITE DOCUMENTS DIRECTLY.** Do not return findings to orchestrator. The whole point is reducing context transfer. + +**ALWAYS INCLUDE FILE PATHS.** Every finding needs a file path in backticks. No exceptions. + +**USE THE TEMPLATES.** Fill in the template structure. Don't invent your own format. + +**BE THOROUGH.** Explore deeply. Read actual files. Don't guess. + +**RETURN ONLY CONFIRMATION.** Your response should be ~10 lines max. Just confirm what was written. + +**DO NOT COMMIT.** The orchestrator handles git operations. + + + + +- [ ] Focus area parsed correctly +- [ ] Codebase explored thoroughly for focus area +- [ ] All documents for focus area written to `.planning/codebase/` +- [ ] Documents follow template structure +- [ ] File paths included throughout documents +- [ ] Confirmation returned (not document contents) + diff --git a/commands/gsd/map-codebase.md b/commands/gsd/map-codebase.md index ff3530e59..4daa7edac 100644 --- a/commands/gsd/map-codebase.md +++ b/commands/gsd/map-codebase.md @@ -1,6 +1,6 @@ --- name: gsd:map-codebase -description: Analyze codebase with parallel Explore agents to produce .planning/codebase/ documents +description: Analyze codebase with parallel mapper agents to produce .planning/codebase/ documents argument-hint: "[optional: specific area to map, e.g., 'api' or 'auth']" allowed-tools: - Read @@ -12,22 +12,15 @@ allowed-tools: --- -Analyze existing codebase using parallel Explore agents to produce structured codebase documents. +Analyze existing codebase using parallel gsd-codebase-mapper agents to produce structured codebase documents. -This command spawns multiple Explore agents to analyze different aspects of the codebase in parallel, each with fresh context. +Each mapper agent explores a focus area and **writes documents directly** to `.planning/codebase/`. The orchestrator only receives confirmations, keeping context usage minimal. Output: .planning/codebase/ folder with 7 structured documents about the codebase state. @~/.claude/get-shit-done/workflows/map-codebase.md -@~/.claude/get-shit-done/templates/codebase/stack.md -@~/.claude/get-shit-done/templates/codebase/architecture.md -@~/.claude/get-shit-done/templates/codebase/structure.md -@~/.claude/get-shit-done/templates/codebase/conventions.md -@~/.claude/get-shit-done/templates/codebase/testing.md -@~/.claude/get-shit-done/templates/codebase/integrations.md -@~/.claude/get-shit-done/templates/codebase/concerns.md @@ -58,26 +51,20 @@ Check for .planning/STATE.md - loads context if project already initialized 1. Check if .planning/codebase/ already exists (offer to refresh or skip) 2. Create .planning/codebase/ directory structure -3. Spawn 4 parallel Explore agents to analyze codebase: - - Agent 1: Stack + Integrations (technology focus) - - Agent 2: Architecture + Structure (organization focus) - - Agent 3: Conventions + Testing (quality focus) - - Agent 4: Concerns (issues focus) -4. Wait for all agents to complete, collect findings -5. Write 7 codebase documents using templates: - - STACK.md - Languages, frameworks, key dependencies - - ARCHITECTURE.md - System design, patterns, data flow - - STRUCTURE.md - Directory layout, module organization - - CONVENTIONS.md - Code style, naming, patterns - - TESTING.md - Test structure, coverage, practices - - INTEGRATIONS.md - APIs, databases, external services - - CONCERNS.md - Technical debt, risks, issues -6. Offer next steps (typically: /gsd:new-project or /gsd:plan-phase) +3. Spawn 4 parallel gsd-codebase-mapper agents: + - Agent 1: tech focus → writes STACK.md, INTEGRATIONS.md + - Agent 2: arch focus → writes ARCHITECTURE.md, STRUCTURE.md + - Agent 3: quality focus → writes CONVENTIONS.md, TESTING.md + - Agent 4: concerns focus → writes CONCERNS.md +4. Wait for agents to complete, collect confirmations (NOT document contents) +5. Verify all 7 documents exist with line counts +6. Commit codebase map +7. Offer next steps (typically: /gsd:new-project or /gsd:plan-phase) - [ ] .planning/codebase/ directory created -- [ ] All 7 codebase documents written +- [ ] All 7 codebase documents written by mapper agents - [ ] Documents follow template structure - [ ] Parallel agents completed without errors - [ ] User knows next steps diff --git a/get-shit-done/workflows/map-codebase.md b/get-shit-done/workflows/map-codebase.md index 7e22858af..98de5505c 100644 --- a/get-shit-done/workflows/map-codebase.md +++ b/get-shit-done/workflows/map-codebase.md @@ -1,21 +1,23 @@ -Orchestrate parallel Explore agents to analyze codebase and produce structured documents in .planning/codebase/ +Orchestrate parallel codebase mapper agents to analyze codebase and produce structured documents in .planning/codebase/ -Each agent has fresh context and focuses on specific aspects. Output is concise and actionable for planning. +Each agent has fresh context, explores a specific focus area, and **writes documents directly**. The orchestrator only receives confirmation + line counts, then writes a summary. + +Output: .planning/codebase/ folder with 7 structured documents about the codebase state. -**Why parallel agents:** +**Why dedicated mapper agents:** - Fresh context per domain (no token contamination) -- Thorough analysis without context exhaustion -- Each agent optimized for its domain (tech vs organization vs quality vs issues) +- Agents write documents directly (no context transfer back to orchestrator) +- Orchestrator only summarizes what was created (minimal context usage) - Faster execution (agents run simultaneously) **Document quality over length:** -Include enough detail to be useful as reference. Prioritize practical examples (especially code patterns) over arbitrary brevity. A 200-line TESTING.md with real patterns is more valuable than a 74-line summary. +Include enough detail to be useful as reference. Prioritize practical examples (especially code patterns) over arbitrary brevity. **Always include file paths:** -Documents are reference material for Claude when planning/executing. Vague descriptions like "UserService handles users" are not actionable. Always include actual file paths formatted with backticks: `src/services/user.ts`. This allows Claude to navigate directly to relevant code without re-searching. Do NOT include line numbers (they go stale), just file paths. +Documents are reference material for Claude when planning/executing. Always include actual file paths formatted with backticks: `src/services/user.ts`. @@ -57,286 +59,136 @@ mkdir -p .planning/codebase ``` **Expected output files:** -- STACK.md (from stack.md template) -- ARCHITECTURE.md (from architecture.md template) -- STRUCTURE.md (from structure.md template) -- CONVENTIONS.md (from conventions.md template) -- TESTING.md (from testing.md template) -- INTEGRATIONS.md (from integrations.md template) -- CONCERNS.md (from concerns.md template) +- STACK.md (from tech mapper) +- INTEGRATIONS.md (from tech mapper) +- ARCHITECTURE.md (from arch mapper) +- STRUCTURE.md (from arch mapper) +- CONVENTIONS.md (from quality mapper) +- TESTING.md (from quality mapper) +- CONCERNS.md (from concerns mapper) Continue to spawn_agents. -Spawn 4 parallel Explore agents to analyze codebase. +Spawn 4 parallel gsd-codebase-mapper agents. -Use Task tool with `subagent_type="Explore"` and `run_in_background=true` for parallel execution. +Use Task tool with `subagent_type="gsd-codebase-mapper"` and `run_in_background=true` for parallel execution. -**Agent 1: Stack + Integrations (Technology Focus)** +**CRITICAL:** Use the dedicated `gsd-codebase-mapper` agent, NOT `Explore`. The mapper agent writes documents directly. + +**Agent 1: Tech Focus** Task tool parameters: ``` -subagent_type: "Explore" +subagent_type: "gsd-codebase-mapper" run_in_background: true -task_description: "Analyze codebase technology stack and external integrations" +description: "Map codebase tech stack" ``` Prompt: ``` +Focus: tech + Analyze this codebase for technology stack and external integrations. -IMPORTANT: Always include actual file paths in your findings. Use backtick formatting like `src/config/database.ts`. This makes the output actionable for planning. +Write these documents to .planning/codebase/: +- STACK.md - Languages, runtime, frameworks, dependencies, configuration +- INTEGRATIONS.md - External APIs, databases, auth providers, webhooks -Focus areas: -1. Languages (check file extensions, package manifests) -2. Runtime environment (Node.js, Python, etc. - check .nvmrc, .python-version, engines field) -3. Package manager and lockfiles -4. Frameworks (web, testing, build tools) -5. Key dependencies (critical packages for functionality) -6. External services (APIs, databases, auth providers) -7. Third-party integrations (payment, analytics, etc.) -8. Configuration approach (.env, config files) - -Search for: -- package.json / requirements.txt / Cargo.toml / go.mod -- .env files, .env.example -- Config files (vite.config, webpack.config, tsconfig.json) -- API client code, database connection code -- Import statements for major libraries - -Output findings for populating these sections: -- STACK.md: Languages, Runtime, Frameworks, Dependencies, Configuration -- INTEGRATIONS.md: External APIs, Services, Third-party tools - -For each finding, include the file path where you found it. Example: -- "TypeScript 5.3 - `package.json`" -- "Supabase client - `src/lib/supabase.ts`" -- "Stripe integration - `src/services/stripe.ts`, `src/webhooks/stripe.ts`" - -If something is not found, note "Not detected" for that category. +Explore thoroughly. Write documents directly using templates. Return confirmation only. ``` -**Agent 2: Architecture + Structure (Organization Focus)** +**Agent 2: Architecture Focus** Task tool parameters: ``` -subagent_type: "Explore" +subagent_type: "gsd-codebase-mapper" run_in_background: true -task_description: "Analyze codebase architecture patterns and directory structure" +description: "Map codebase architecture" ``` Prompt: ``` +Focus: arch + Analyze this codebase architecture and directory structure. -IMPORTANT: Always include actual file paths in your findings. Use backtick formatting like `src/index.ts`. This makes the output actionable for planning. +Write these documents to .planning/codebase/: +- ARCHITECTURE.md - Pattern, layers, data flow, abstractions, entry points +- STRUCTURE.md - Directory layout, key locations, naming conventions -Focus areas: -1. Overall architectural pattern (monolith, microservices, layered, etc.) -2. Conceptual layers (API, service, data, utility) -3. Data flow and request lifecycle -4. Key abstractions and patterns (services, controllers, repositories) -5. Entry points (main files, server files, CLI entry) -6. Directory organization and purposes -7. Module boundaries -8. Naming conventions for directories and files - -Search for: -- Entry points: index.ts, main.ts, server.ts, app.ts, cli.ts -- Directory structure patterns (src/, lib/, components/, services/) -- Import patterns (what imports what) -- Recurring code patterns (base classes, interfaces, common abstractions) - -Output findings for populating these sections: -- ARCHITECTURE.md: Pattern, Layers, Data Flow, Abstractions, Entry Points -- STRUCTURE.md: Directory layout, Organization, Key locations - -For each finding, include the file path. Examples: -- "CLI entry point: `bin/install.js`" -- "Service layer: `src/services/*.ts` (UserService, ProjectService)" -- "API routes: `src/routes/api/*.ts`" - -If something is not clear, provide best-guess interpretation based on code structure. +Explore thoroughly. Write documents directly using templates. Return confirmation only. ``` -**Agent 3: Conventions + Testing (Quality Focus)** +**Agent 3: Quality Focus** Task tool parameters: ``` -subagent_type: "Explore" +subagent_type: "gsd-codebase-mapper" run_in_background: true -task_description: "Analyze coding conventions and test patterns" +description: "Map codebase conventions" ``` Prompt: ``` -Analyze this codebase for coding conventions and testing practices. +Focus: quality -IMPORTANT: Always include actual file paths in your findings. Use backtick formatting like `vitest.config.ts`. This makes the output actionable for planning. +Analyze this codebase for coding conventions and testing patterns. -Focus areas: -1. Code style (indentation, quotes, semicolons, formatting) -2. File naming conventions (kebab-case, PascalCase, etc.) -3. Function/variable naming patterns -4. Comment and documentation style -5. Test framework and structure -6. Test organization (unit, integration, e2e) -7. Test coverage approach -8. Linting and formatting tools +Write these documents to .planning/codebase/: +- CONVENTIONS.md - Code style, naming, patterns, error handling +- TESTING.md - Framework, structure, mocking, coverage -Search for: -- Config files: .eslintrc, .prettierrc, tsconfig.json -- Test files: *.test.*, *.spec.*, __tests__/ -- Test setup: vitest.config, jest.config -- Code patterns across multiple files -- README or CONTRIBUTING docs - -Output findings for populating these sections: -- CONVENTIONS.md: Code Style, Naming, Patterns, Documentation -- TESTING.md: Framework, Structure, Coverage, Tools - -For each finding, include file paths. Examples: -- "Prettier config: `.prettierrc`" -- "Test pattern: `src/**/*.test.ts` (co-located with source)" -- "Example of naming convention: `src/services/user-service.ts`" - -Look at actual code files to infer conventions if config files are missing. +Explore thoroughly. Write documents directly using templates. Return confirmation only. ``` -**Agent 4: Concerns (Issues Focus)** +**Agent 4: Concerns Focus** Task tool parameters: ``` -subagent_type: "Explore" +subagent_type: "gsd-codebase-mapper" run_in_background: true -task_description: "Identify technical debt and areas of concern" +description: "Map codebase concerns" ``` Prompt: ``` +Focus: concerns + Analyze this codebase for technical debt, known issues, and areas of concern. -CRITICAL: Always include actual file paths in your findings. Use backtick formatting like `src/auth/login.ts`. Concerns without file paths are not actionable. For each issue found, specify exactly where it is. +Write this document to .planning/codebase/: +- CONCERNS.md - Tech debt, bugs, security, performance, fragile areas -Focus areas: -1. TODO and FIXME comments -2. Complex or hard-to-understand code -3. Missing error handling (try/catch, error checks) -4. Security patterns (hardcoded secrets, unsafe operations) -5. Outdated dependencies (check versions against current) -6. Missing tests for critical code -7. Duplicate code patterns -8. Performance concerns (N+1 queries, inefficient loops) -9. Documentation gaps (complex code without comments) - -Search for: -- TODO, FIXME, HACK, XXX comments -- Large functions or files (>200 lines) -- Repeated code patterns -- Missing .env.example when .env is used -- Dependencies with known vulnerabilities (check versions) -- Error-prone patterns (no validation, no error handling) - -Output findings for populating: -- CONCERNS.md: Technical Debt, Issues, Security, Performance, Documentation - -For EVERY concern, include file paths. Examples: -- "Direct DB queries in components: `src/pages/Dashboard.tsx`, `src/pages/Profile.tsx`" -- "Missing error handling: `src/api/webhook.ts` (Stripe webhook has no try/catch)" -- "TODO: 'fix race condition' in `src/services/subscription.ts`" - -Be constructive - focus on actionable concerns, not nitpicks. -If codebase is clean, note that rather than inventing problems. +Explore thoroughly. Write document directly using template. Return confirmation only. ``` -Continue to collect_results. +Continue to collect_confirmations. - + Wait for all 4 agents to complete. -Use TaskOutput tool to collect results from each agent. Since agents were run with `run_in_background=true`, retrieve their output. +Use TaskOutput tool to collect confirmations from each agent. -**Collection pattern:** - -For each agent, use TaskOutput tool to get the full exploration findings. - -**Aggregate findings by document:** - -From Agent 1 output, extract: -- STACK.md sections: Languages, Runtime, Frameworks, Dependencies, Configuration, Platform -- INTEGRATIONS.md sections: External APIs, Services, Authentication, Webhooks - -From Agent 2 output, extract: -- ARCHITECTURE.md sections: Pattern Overview, Layers, Data Flow, Key Abstractions, Entry Points -- STRUCTURE.md sections: Directory Layout, Key Locations, Organization - -From Agent 3 output, extract: -- CONVENTIONS.md sections: Code Style, Naming Conventions, Common Patterns, Documentation Style -- TESTING.md sections: Framework, Structure, Coverage, Tools - -From Agent 4 output, extract: -- CONCERNS.md sections: Technical Debt, Known Issues, Security, Performance, Missing - -**Handling missing findings:** - -If an agent didn't find information for a section, use placeholder: -- "Not detected" (for infrastructure/tools that may not exist) -- "Not applicable" (for patterns that don't apply to this codebase) -- "No significant concerns" (for CONCERNS.md if codebase is clean) - -Continue to write_documents. - - - -Write all 7 codebase documents using templates and agent findings. - -**Template filling process:** - -For each document: - -1. **Read template file** from `~/.claude/get-shit-done/templates/codebase/{name}.md` -2. **Extract the "File Template" section** - this is the markdown code block containing the actual document structure -3. **Fill template placeholders** with agent findings: - - Replace `[YYYY-MM-DD]` with current date - - Replace `[Placeholder text]` with specific findings from agents - - If agent found nothing for a section, use appropriate placeholder: - - "Not detected" for optional infrastructure - - "Not applicable" for patterns that don't fit this codebase - - "No significant concerns" for clean codebase areas -4. **Write to .planning/codebase/{NAME}.md** (uppercase filename) - -**Example filling pattern:** - -Template placeholder: +**Expected confirmation format from each agent:** ``` -**Primary:** -- [Language] [Version] - [Where used: e.g., "all application code"] +## Mapping Complete + +**Focus:** {focus} +**Documents written:** +- `.planning/codebase/{DOC1}.md` ({N} lines) +- `.planning/codebase/{DOC2}.md` ({N} lines) + +Ready for orchestrator summary. ``` -Agent finding: -``` -Found: TypeScript 5.3 used in all .ts files throughout src/ -``` +**What you receive:** Just file paths and line counts. NOT document contents. -Filled result: -``` -**Primary:** -- TypeScript 5.3 - All application code -``` +If any agent failed, note the failure and continue with successful documents. -**Document writing order:** - -1. **STACK.md** (from stack.md template + Agent 1 findings) -2. **INTEGRATIONS.md** (from integrations.md template + Agent 1 findings) -3. **ARCHITECTURE.md** (from architecture.md template + Agent 2 findings) -4. **STRUCTURE.md** (from structure.md template + Agent 2 findings) -5. **CONVENTIONS.md** (from conventions.md template + Agent 3 findings) -6. **TESTING.md** (from testing.md template + Agent 3 findings) -7. **CONCERNS.md** (from concerns.md template + Agent 4 findings) - -After all documents written, continue to verify_output. +Continue to verify_output. @@ -349,10 +201,9 @@ wc -l .planning/codebase/*.md **Verification checklist:** - All 7 documents exist -- No empty documents -- Templates populated with findings +- No empty documents (each should have >20 lines) -If any checks fail, report issues to user. +If any documents missing or empty, note which agents may have failed. Continue to commit_codebase_map. @@ -382,6 +233,11 @@ Continue to offer_next. Present completion summary and next steps. +**Get line counts:** +```bash +wc -l .planning/codebase/*.md +``` + **Output format:** ``` @@ -424,11 +280,10 @@ End workflow. - .planning/codebase/ directory created -- 4 parallel Explore agents spawned with run_in_background=true -- Agent prompts are specific and actionable -- TaskOutput used to collect all agent results -- All 7 codebase documents written using template filling -- Documents follow template structure with actual findings +- 4 parallel gsd-codebase-mapper agents spawned with run_in_background=true +- Agents write documents directly (orchestrator doesn't receive document contents) +- TaskOutput used to collect confirmations only +- All 7 codebase documents exist - Clear completion summary with line counts - User offered clear next steps in GSD style