--- name: architecture-navigator description: Understand and navigate the DevPrep AI 7-folder architecture. Use this skill when asked about code organization, where to place new features, what modules exist, or when starting development tasks that need architecture context. Auto-triggers on keywords like "where should", "add module", "architecture", "structure", "organize", "place code", "what modules". --- # Architecture Navigator ## Overview Provide instant architecture intelligence for the DevPrep AI codebase. Generate architecture maps, answer placement questions ("where should X go?"), and validate code organization against the 7-folder structure. This skill eliminates the need to manually read architecture documentation at conversation start. ## Core Capabilities ### 1. Architecture Scanning When starting a development conversation or when explicitly requested, scan the codebase to generate a real-time architecture map. **How to scan:** ```bash # Run the architecture scanner from project root bash ./.claude/skills/architecture-navigator/scripts/scan_architecture.sh ``` The scanner will output: - **7-Folder Structure**: modules/, shared/, lib/, store/, types/, styles/, app/ - **Module List**: All feature modules with file counts - **Key Locations**: API layer, state management, UI components - **Quick Stats**: Total files, module count, component count **When to scan:** - At the start of development conversations about architecture - When asked "what modules exist?" or "what's the structure?" - Before suggesting where new code should go - When validating architecture compliance **Output format:** Compact markdown summary (~50-100 lines) showing the current architecture state. --- ### 2. Interactive Placement Queries Answer "where should X go?" questions using the 7-folder placement rules. **Decision tree:** 1. **Is it a route/page?** → `app/` (but keep minimal, import from modules/) 2. **Is it feature-specific?** → `modules/{feature}/` 3. **Is it reusable UI/logic?** → `shared/` 4. **Is it external integration?** → `lib/` 5. **Is it global state?** → `store/` 6. **Is it a shared type?** → `types/` 7. **Is it pure styling?** → `styles/` **Example queries and responses:** | User Query | Response | |------------|----------| | "Where should social login go?" | `modules/auth/` - Feature-specific authentication logic | | "Where should I add payment processing?" | `modules/payments/` - New feature module for payment domain logic | | "Where do reusable buttons go?" | `shared/components/ui/Button.tsx` - Reusable UI component | | "Where's the Claude AI integration?" | `lib/claude/` - External service integration | | "Where should shopping cart state go?" | `store/cartStore.ts` - Global state management | | "Where do API types go?" | `types/ai/api.ts` - Shared TypeScript definitions | **For detailed rules**, reference `references/architecture-rules.md` which includes: - Complete placement rules for all 7 folders - Import direction rules (what can import what) - Forbidden patterns (circular dependencies, wrong imports) - Decision tree for complex placement questions - Common examples and edge cases --- ### 3. Module Discovery List existing modules and explain their purpose when asked. **How to discover modules:** ```bash # Quick module list ls -1 frontend/src/modules/ # With file counts find frontend/src/modules/ -mindepth 1 -maxdepth 1 -type d -exec sh -c 'echo -n "{}:" && find "{}" -name "*.ts*" | wc -l' \; ``` **Common questions:** - "What modules exist?" → Run module discovery - "Where does authentication live?" → Check modules/ for auth-related folders - "What features are implemented?" → Scan modules/ directory --- ### 4. Architecture Validation Validate that code follows the 7-folder structure rules. **What to check:** - ✅ Routes in `app/` are minimal (just imports) - ✅ Business logic is in `modules/`, not `app/` - ✅ Shared components are in `shared/`, not duplicated - ✅ External integrations are in `lib/` - ✅ Global state is in `store/` - ✅ Imports follow allowed directions (see architecture-rules.md) **Validation commands:** ```bash # Check for business logic in app/ (should be minimal) grep -r "useState\|useEffect\|async function" frontend/src/app/ # Check for cross-module imports (forbidden) grep -r "from.*modules/" frontend/src/modules/ # Check for modules importing from shared (allowed) grep -r "from.*shared/" frontend/src/modules/ ``` --- ## Workflow: Using This Skill ### Scenario 1: Conversation Start When a development conversation begins, proactively scan the architecture: 1. Run `scripts/scan_architecture.sh` to generate current architecture map 2. Present the map concisely (don't overwhelm with details) 3. Use this context for subsequent placement questions ### Scenario 2: Placement Questions When asked "where should X go?": 1. Identify the nature of the code (feature, reusable, integration, etc.) 2. Apply the decision tree from `references/architecture-rules.md` 3. Provide specific path recommendation 4. Explain WHY (which rule applies) **Example:** ``` User: "Where should I add OAuth authentication?" Response: OAuth authentication should go in `modules/auth/oauth/`: - It's feature-specific (authentication domain) - It belongs in modules/ (not reusable across other features) - Structure: modules/auth/oauth/GoogleAuth.tsx, OAuthProvider.tsx, etc. The OAuth client setup (SDK wrapper) should go in `lib/oauth/client.ts` (external integration). ``` ### Scenario 3: New Feature Module When creating a new feature module: 1. Confirm it's truly a feature (domain-specific, not cross-cutting) 2. Create structure: `modules/{feature-name}/` 3. Recommend typical structure: ``` modules/{feature}/ ├── components/ - Feature-specific UI ├── hooks/ - Feature-specific hooks ├── utils/ - Feature-specific utilities └── types.ts - Feature-specific types (if not shared) ``` 4. Remind about import rules (can import from shared/, lib/, store/, types/) --- ## Auto-Trigger Keywords This skill automatically activates when these phrases are detected: - "where should" - "add module" - "architecture" - "structure" - "organize" - "place code" - "what modules" - "where does [X] live" - "where's the API" - "folder structure" **Manual invocation:** Use `/architecture` or explicitly request "scan the architecture". --- ## Resources ### scripts/scan_architecture.sh Fast bash script that scans the 7-folder structure and generates a markdown architecture map. Outputs module list, key locations, and quick stats. **Usage:** ```bash bash scripts/scan_architecture.sh [project-root] ``` **Output:** Compact markdown summary (~50-100 lines) suitable for loading into context. ### references/architecture-rules.md Comprehensive placement rules for the 7-folder architecture. Reference this document when: - Answering complex placement questions - Validating architecture compliance - Explaining import direction rules - Handling edge cases or ambiguous scenarios **Key sections:** - 7-Folder structure overview - Detailed placement rules for each folder - Import direction rules (what can import what) - Forbidden patterns - Decision tree for placement - Common examples table --- ## Best Practices 1. **Start with scanning**: Generate architecture map at conversation start for context 2. **Be specific**: Always provide exact paths, not just folder names 3. **Explain reasoning**: Don't just say "put it in modules/", explain WHY 4. **Reference rules**: Point to `architecture-rules.md` for detailed justification 5. **Validate imports**: Check that suggested placements respect import direction rules 6. **Detect drift**: Flag when actual code structure deviates from documented architecture 7. **Keep it concise**: Architecture maps should be scannable (~50-100 lines) --- ## Example Usage **User**: "I want to add a notification system that shows toast messages across the app." **Response**: Let me scan the current architecture first: ```bash bash ./.claude/skills/architecture-navigator/scripts/scan_architecture.sh ``` [Architecture map output] For a global notification system with toast messages: 1. **Toast UI Component** → `shared/components/Toast.tsx` (reusable UI) 2. **Notification State** → `store/uiStore.ts` (global state for managing active toasts) 3. **Toast Hook** → `shared/hooks/useToast.ts` (convenient API: `useToast().show()`) **Reasoning:** - Toast component is reusable across all features → shared/ - Notification state is global (not feature-specific) → store/ - Hook provides ergonomic API and is reusable → shared/ **Import flow:** - Features call `useToast()` from `shared/hooks/` - Hook accesses `store/uiStore.ts` - Hook renders `shared/components/Toast.tsx` This follows the architecture rules: modules/ → shared/ → store/ (allowed import direction).