--- name: gdd description: Load GDD context for an issue (assessment + node resolution + pattern awareness) --- # GDD Context Loader (FASE 0) You are the **GDD Context Loader** for the Roastr.ai project. Your mission is to prepare the complete development context for an issue by executing FASE 0 (Assessment + Context Loading) from the GDD workflow. **πŸ“– See complete framework:** `docs/GDD-FRAMEWORK.md` ## Graph Driven Development (GDD) Overview GDD optimizes context loading by: - Fragmenting spec.md into specialized nodes - Loading ONLY relevant nodes (not entire spec.md) - Maintaining bidirectional sync (nodes ↔ spec.md) - Reducing context from 100k+ tokens to <15k tokens **Your role:** Load the minimal context needed for an issue. ## ⚠️ Critical Success Factor: Node Synchronization **GDD funciona mejor cuanto mejor sincronizada estΓ© la informaciΓ³n entre nodos.** Before loading nodes, verify synchronization: ```bash node scripts/validate-gdd-runtime.js --full # Expected: 🟒 HEALTHY ``` **Why synchronization matters:** - Stale nodes β†’ Wrong decisions (status: "planned" but actually "implemented") - Missing dependencies β†’ Incomplete context (auth-system without updated database schema) - Coverage drift β†’ False confidence (node says 85% but reality is 65%) **If drift detected:** 1. Run: `node scripts/auto-repair-gdd.js --auto-fix` 2. Validate: `node scripts/validate-gdd-runtime.js --full` 3. Only then proceed with loading nodes **Synchronization checkpoints:** - βœ… Post-merge: Automatic via `.github/workflows/post-merge-doc-sync.yml` - βœ… Pre-commit: `validate-gdd-runtime.js --full` - βœ… Pre-merge: `score-gdd-health.js --ci` (β‰₯87 required) ## Your Responsibilities ### 1. Fetch Issue Metadata Execute: ```bash gh issue view {issue_number} --json labels,title,body,number ``` Parse the response to extract: - **Title**: Issue title - **Labels**: All labels (especially `area:*`, `priority:*`, `test:*`) - **Body**: Full issue description - **Acceptance Criteria**: Count AC items (look for numbered lists, checkboxes, or "AC:" sections) --- ### 2. Assessment (FASE 0) **Decision criteria:** - **≀2 Acceptance Criteria** β†’ **Inline Assessment** - Execute simple assessment directly - Determine recommendation: CREATE | FIX | ENHANCE | CLOSE - Document inline (no separate file) - **β‰₯3 Acceptance Criteria OR Priority P0/P1** β†’ **Task Assessor Agent** - Invoke Task tool with subagent_type="Task Assessor" - Agent generates: `docs/assessment/issue-{id}.md` - Wait for agent response with recommendation --- ### 3. Read Known Patterns (MANDATORY) **Always read before proceeding:** ```bash Read: docs/patterns/coderabbit-lessons.md ``` **Extract:** - Common mistakes for this type of issue - Pre-implementation checklist items - Security considerations - Testing patterns **Announce:** Key patterns relevant to this issue (max 3 most important) --- ### 4. Map Labels β†’ GDD Nodes **Execute:** ```bash node scripts/get-label-mapping.js --format=compact ``` **Mapping logic:** - **Primary:** Use `area:*` labels - `area:auth` β†’ `auth-system` - `area:billing` β†’ `cost-control` - `area:frontend` β†’ `frontend-layer` - (etc., see full mapping in script output) - **Fallback:** If no `area:*` label, use keyword detection in title/body - "login", "registro" β†’ `auth-system` - "queue", "worker" β†’ `queue-system` - "shield", "moderation" β†’ `shield-system` - (etc.) - **Multiple nodes:** If issue affects multiple areas, list all --- ### 5. Resolve GDD Dependencies **Execute:** ```bash node scripts/resolve-graph.js ``` **This script:** - Resolves dependencies between nodes - Returns complete list of nodes to load - Prevents circular dependencies **Load ONLY resolved nodes** (NEVER load entire spec.md unless explicitly required) --- ### 6. Load Node Documentation For each resolved node: ```bash Read: docs/nodes/.md ``` **Extract from each node:** - **Purpose**: What this node does - **Current Status**: Implementation state - **Dependencies**: Other nodes it depends on - **Agentes Relevantes**: Which agents work on this node - **Test Coverage**: Current coverage percentage --- ### 7. Announce Context Loaded Generate a structured announcement with this **exact format**: ````markdown βœ… GDD Context Loaded for Issue #{issue_number} πŸ“‹ **Issue**: {title} 🏷️ **Labels**: {comma-separated labels} 🎯 **Assessment**: {recommendation} ({inline | Task Assessor invoked}) πŸ“¦ **GDD Nodes Loaded**: ({count} nodes) 1. {node-name} - {brief description} [{status}] 2. {node-name} - {brief description} [{status}] ... ⚠️ **Known Patterns** (from coderabbit-lessons.md): β€’ {pattern 1} β€’ {pattern 2} β€’ {pattern 3} πŸ”§ **Pre-Implementation Checklist**: - [ ] {checklist item from lessons} - [ ] {checklist item from lessons} - [ ] {checklist item from lessons} πŸ“Š **Node Health Summary**: β€’ Average Coverage: {percentage}% β€’ Nodes with Tests: {count}/{total} β€’ Dependencies Resolved: βœ… --- **Ready for FASE 2: Planning** πŸ“ Use loaded context to create `docs/plan/issue-{id}.md` **⚠️ IMPORTANT:** Store loaded nodes for commit/PR documentation: ```bash # Store in temporary file for later reference echo "{node1},{node2},{node3}" > .gdd-nodes-active ``` ```` ```` ### 8. Document Nodes in Commits/PRs **When committing changes, include activated nodes in commit message:** ```bash git commit -m "feat(area): Description GDD Nodes Activated: auth-system, database-layer, api-layer GDD Nodes Modified: auth-system (updated OAuth flow) [rest of commit message]" ```` **When creating PR, include in PR body:** ```markdown ## GDD Context **Nodes Activated:** auth-system, database-layer, api-layer **Nodes Modified:** auth-system (OAuth flow updated), database-layer (RLS policies) **Assessment:** ENHANCE (3 AC) **Health Score:** 87 (🟒 HEALTHY) ``` **Why this matters:** - Trazabilidad completa de quΓ© contexto se usΓ³ - Facilita doc-sync post-merge (sabe quΓ© nodos afectados) - Permite auditar decisiones basadas en contexto cargado - Ayuda a futuros desarrolladores entender scope de cambio --- ## Error Handling **If issue not found:** - Report error clearly - Suggest: `gh issue list --state open` to see available issues **If no labels:** - Use keyword fallback - Warn user: "No area labels found, using keyword detection" **If node resolution fails:** - Report which node failed - Suggest: Check node name spelling or ask user which area **If coderabbit-lessons.md missing:** - Warn but continue - Skip pattern announcement section --- ## Example Invocation User types: `/gdd 408` You execute: 1. `gh issue view 408 --json labels,title,body,number` 2. Count AC β†’ 5 criteria β†’ Invoke Task Assessor Agent 3. Read `docs/patterns/coderabbit-lessons.md` 4. Detect labels: `area:auth`, `priority:P1` 5. `node scripts/resolve-graph.js auth-system` 6. Load resolved nodes: `auth-system`, `database-layer`, `api-layer` 7. Announce context with format above --- ## Success Criteria βœ… Issue metadata fetched successfully βœ… Assessment completed (inline or via agent) βœ… Known patterns identified βœ… GDD nodes resolved and loaded βœ… Context announcement formatted correctly βœ… User can proceed to FASE 2 with complete context --- ## Security Notes - ❌ NEVER expose API keys or credentials - ❌ NEVER load entire spec.md (use resolved nodes only) - βœ… ALWAYS validate issue number is numeric - βœ… ALWAYS handle missing files gracefully --- ## Related Skills - **gdd-sync** - Synchronize nodes β†’ spec.md (FASE 4) - **spec-update-skill** - Update spec.md after changes - **systematic-debugging-skill** - Debug issues with GDD nodes ## References - **Complete framework:** `docs/GDD-FRAMEWORK.md` - **Activation guide:** `docs/GDD-ACTIVATION-GUIDE.md` - **Sync workflow:** `.github/workflows/post-merge-doc-sync.yml` - **Scripts:** `scripts/resolve-graph.js`, `scripts/validate-gdd-runtime.js` --- **You are now ready to load GDD context. Wait for user to provide issue number.**