enhance_prd
Improve product requirements documents by adding missing elements, enhancing clarity, and providing AI-powered analysis for better project planning.
Instructions
Enhance an existing PRD with AI-powered improvements, adding missing elements, improving clarity, and providing comprehensive analysis
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| prdContent | Yes | ||
| enhancementType | Yes | ||
| focusAreas | No | ||
| includeResearch | Yes | ||
| targetAudience | Yes | ||
| industryContext | No | ||
| addMissingElements | Yes | ||
| improveExisting | Yes | ||
| validateQuality | Yes |
Implementation Reference
- Core handler function implementing the 'enhance_prd' tool. Orchestrates PRD enhancement using PRDGenerationService, validation, feature extraction, summary generation, and response formatting.async function executeEnhancePRD(args: EnhancePRDArgs): Promise<MCPResponse> { const prdService = new PRDGenerationService(); try { // Enhance the PRD using AI const enhancedPRD = await prdService.enhancePRD({ currentPRD: args.prdContent, enhancementType: args.enhancementType, focusAreas: args.focusAreas }); // Validate the enhanced PRD if requested let validation; if (args.validateQuality) { validation = await prdService.validatePRDCompleteness(enhancedPRD); } // Extract features for analysis const features = await prdService.extractFeaturesFromPRD(JSON.stringify(enhancedPRD)); // Generate enhancement summary const enhancementSummary = generateEnhancementSummary( args.prdContent, enhancedPRD, args.enhancementType, args.focusAreas ); // Format response const summary = formatPRDEnhancement( enhancedPRD, validation, features, enhancementSummary, args ); return ToolResultFormatter.formatSuccess('enhance_prd', { summary, enhancedPRD, validation, features, enhancementSummary, qualityScore: validation?.score || 0 }); } catch (error) { process.stderr.write(`Error in enhance_prd tool: ${error}\n`); return ToolResultFormatter.formatSuccess('enhance_prd', { error: `Failed to enhance PRD: ${error instanceof Error ? error.message : 'Unknown error'}`, success: false }); } }
- Zod schema defining input parameters for the enhance_prd tool, including PRD content, enhancement type, focus areas, and various enhancement options.// Schema for enhance_prd tool const enhancePRDSchema = z.object({ prdContent: z.string().min(100).describe('The existing PRD content to enhance'), enhancementType: z.enum(['comprehensive', 'technical', 'user_focused', 'business_focused']) .describe('Type of enhancement to apply'), focusAreas: z.array(z.string()).optional() .describe('Specific areas to focus on (e.g., "user personas", "technical requirements")'), includeResearch: z.boolean().default(false) .describe('Whether to include market research and competitive analysis'), targetAudience: z.enum(['technical', 'business', 'mixed']).default('mixed') .describe('Target audience for the enhanced PRD'), industryContext: z.string().optional() .describe('Industry or domain context for enhancement'), addMissingElements: z.boolean().default(true) .describe('Whether to add commonly missing PRD elements'), improveExisting: z.boolean().default(true) .describe('Whether to improve existing sections'), validateQuality: z.boolean().default(true) .describe('Whether to validate and score the enhanced PRD') });
- src/infrastructure/tools/ToolRegistry.ts:268-276 (registration)Registration of the enhancePRDTool in the central ToolRegistry singleton instance during construction.// Register AI task management tools this.registerTool(addFeatureTool); this.registerTool(generatePRDTool); this.registerTool(parsePRDTool); this.registerTool(getNextTaskTool); this.registerTool(analyzeTaskComplexityTool); this.registerTool(expandTaskTool); this.registerTool(enhancePRDTool); this.registerTool(createTraceabilityMatrixTool);
- src/index.ts:459-460 (registration)Dispatch handler in main server that routes 'enhance_prd' tool calls to the executeEnhancePRD function.case "enhance_prd": return await executeEnhancePRD(args);
- Helper service method called by the tool handler to perform the actual AI-powered PRD enhancement using AITaskProcessor.async enhancePRD(params: { currentPRD: PRDDocument | string; enhancementType: 'comprehensive' | 'technical' | 'user_focused' | 'business_focused'; focusAreas?: string[]; includeResearch?: boolean; }): Promise<PRDDocument> { try { const currentPRDContent = typeof params.currentPRD === 'string' ? params.currentPRD : JSON.stringify(params.currentPRD, null, 2); const enhancedPRD = await this.aiProcessor.enhancePRD({ currentPRD: currentPRDContent, enhancementType: params.enhancementType, focusAreas: params.focusAreas }); // If we started with a PRD object, preserve some original metadata if (typeof params.currentPRD === 'object') { enhancedPRD.id = params.currentPRD.id; enhancedPRD.createdAt = params.currentPRD.createdAt; enhancedPRD.author = params.currentPRD.author; enhancedPRD.version = this.incrementVersion(params.currentPRD.version); } return PRDDocumentSchema.parse(enhancedPRD); } catch (error) { process.stderr.write(`Error enhancing PRD: ${error instanceof Error ? error.message : String(error)}\n`); throw new Error(`Failed to enhance PRD: ${error instanceof Error ? error.message : 'Unknown error'}`); } }