generate_adrs_from_prd
Convert Product Requirements Documents into Architectural Decision Records using advanced AI prompting techniques for optimized technical documentation.
Instructions
Generate Architectural Decision Records from a Product Requirements Document with advanced prompting techniques (APE + Knowledge Generation)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prdPath | Yes | Path to the PRD.md file | |
| outputDirectory | No | Directory to output generated ADRs (optional, uses configured ADR_DIRECTORY if not provided) | |
| enhancedMode | No | Enable advanced prompting features (APE + Knowledge Generation) | |
| promptOptimization | No | Enable Automatic Prompt Engineering for optimized ADR generation | |
| knowledgeEnhancement | No | Enable Knowledge Generation for domain-specific insights | |
| prdType | No | Type of PRD for optimized knowledge generation | general |
| conversationContext | No | Rich context from the calling LLM about user goals and discussion history |
Implementation Reference
- src/tools/ce-mcp-tools.ts:815-906 (handler)The main handler function implementing 'generate_adrs_from_prd' as a CE-MCP StateMachineDirective. Orchestrates sandbox operations: read PRD, load ADR template, extract decisions, generate ADRs, and validate output.export function createGenerateAdrsFromPrdDirective( args: CEMCPGenerateAdrsFromPrdArgs ): StateMachineDirective { const { prdPath, outputDirectory = 'docs/adrs', maxAdrs = 10, focusAreas = [] } = args; return { type: 'state_machine_directive', version: '1.0', initial_state: { prdPath, outputDirectory, maxAdrs, focusAreas, generatedAdrs: [], }, transitions: [ { name: 'read_prd', from: 'initial', operation: { op: 'analyzeFiles', args: { patterns: [prdPath], maxFiles: 1, }, store: 'prdContent', }, next_state: 'prd_loaded', }, { name: 'load_adr_template', from: 'prd_loaded', operation: { op: 'loadPrompt', args: { name: 'adr-suggestion', section: 'recommendation_template', }, store: 'adrTemplate', }, next_state: 'template_loaded', }, { name: 'extract_decisions', from: 'template_loaded', operation: { op: 'generateContext', args: { type: 'prd-decision-extraction', maxAdrs, focusAreas, }, inputs: ['prdContent', 'adrTemplate'], store: 'extractedDecisions', }, next_state: 'decisions_extracted', }, { name: 'generate_adrs', from: 'decisions_extracted', operation: { op: 'generateContext', args: { type: 'adr-generation', outputDirectory, }, inputs: ['extractedDecisions', 'adrTemplate'], store: 'generatedAdrs', }, next_state: 'adrs_generated', }, { name: 'validate_adrs', from: 'adrs_generated', operation: { op: 'validateOutput', args: { schema: { type: 'array', items: { type: 'object' }, }, }, input: 'generatedAdrs', store: 'validatedAdrs', }, next_state: 'done', on_error: 'skip', }, ], final_state: 'done', }; }
- src/tools/ce-mcp-tools.ts:799-804 (schema)TypeScript interface defining the input arguments/schema for the generate_adrs_from_prd tool.export interface CEMCPGenerateAdrsFromPrdArgs { prdPath: string; outputDirectory?: string; maxAdrs?: number; focusAreas?: string[]; }
- src/tools/ce-mcp-tools.ts:1403-1405 (registration)Registration in getCEMCPDirective switch statement that maps the tool name to its directive creator.case 'generate_adrs_from_prd': return createGenerateAdrsFromPrdDirective(args as unknown as CEMCPGenerateAdrsFromPrdArgs);
- src/tools/tool-catalog.ts:278-298 (registration)Central tool catalog registration including metadata, schema, category, and CE-MCP flag.TOOL_CATALOG.set('generate_adrs_from_prd', { name: 'generate_adrs_from_prd', shortDescription: 'Generate ADRs from PRD document', fullDescription: 'Analyzes a Product Requirements Document and generates relevant Architecture Decision Records.', category: 'adr', complexity: 'complex', tokenCost: { min: 4000, max: 8000 }, hasCEMCPDirective: true, // Phase 4.2: CE-MCP directive added relatedTools: ['suggest_adrs', 'generate_adr_from_decision'], keywords: ['adr', 'prd', 'requirements', 'generate'], requiresAI: true, inputSchema: { type: 'object', properties: { prdPath: { type: 'string', description: 'Path to PRD document' }, outputDirectory: { type: 'string', description: 'Where to save ADRs' }, }, required: ['prdPath'], }, });
- src/tools/ce-mcp-tools.ts:1356-1362 (helper)Listed in cemcpTools array for shouldUseCEMCPDirective check.'generate_adrs_from_prd', 'interactive_adr_planning', 'mcp_planning', 'troubleshoot_guided_workflow', // Phase 5: OpenRouter Elimination 'tool_chain_orchestrator', ];