# generate-kaigen-prompt ## When to Use Use this command when: - You have completed backend indicator integration - You need to generate a prompt for Kaigen frontend indicator integration - The indicator is fully implemented in the backend (class, enum, configurations) - You want a comprehensive integration guide with all necessary details ## Usage **Command Format:** ``` /generate-kaigen-prompt {IndicatorName} ``` **Example:** ``` /generate-kaigen-prompt StochasticCross ``` **What it does:** 1. Finds the indicator class file in `src/Managing.Domain/Indicators/` 2. Extracts all parameters, defaults, and ranges from configuration files 3. Analyzes signal generation logic and triggers 4. Determines chart visualization requirements 5. Generates a complete markdown prompt ready for Kaigen frontend integration **Output:** A comprehensive markdown document with all information needed to integrate the indicator into the Kaigen frontend, including: - Complete parameter specifications - API integration details - Chart visualization code - Form input patterns - Integration checklist ## Prerequisites - Backend indicator class exists in `src/Managing.Domain/Indicators/` - Indicator is registered in `IndicatorType` enum - Indicator is configured in `ScenarioHelpers.cs` and `GeneticService.cs` - Indicator implementation is complete and tested ## Execution Steps ### Step 1: Identify Indicator Class **Find the indicator class file:** - Search for indicator class: `grep -r "class.*Indicator.*IndicatorBase" src/Managing.Domain/Indicators/` - Or search by enum name: `grep -r "IndicatorType\.{IndicatorName}" src/Managing.Domain/` **Determine indicator location:** - Signal indicators: `src/Managing.Domain/Indicators/Signals/{IndicatorName}Indicator.cs` - Trend indicators: `src/Managing.Domain/Indicators/Trends/{IndicatorName}IndicatorBase.cs` - Context indicators: `src/Managing.Domain/Indicators/Context/{IndicatorName}.cs` **Read the indicator class file to extract:** - Class name - Constructor parameters - Skender method used (e.g., `GetStoch`, `GetRsi`, `GetMacd`) - Result type (e.g., `StochResult`, `RsiResult`, `MacdResult`) - Signal generation logic and triggers - Parameter types (int, double, etc.) ### Step 2: Extract Configuration Data **Read ScenarioHelpers.cs:** - Find `BuildIndicator()` method case for the indicator - Extract constructor call with parameter mapping - Find `GetSignalType()` method case to determine SignalType (Signal/Trend/Context) **Read GeneticService.cs:** - Find `DefaultIndicatorValues` entry for the indicator - Extract default parameter values - Find `IndicatorParameterRanges` entry for the indicator - Extract parameter ranges (min, max) - Find `IndicatorParamMapping` entry for the indicator - Extract parameter names in order **Read Enums.cs:** - Find `IndicatorType` enum value - Verify exact enum name ### Step 3: Analyze Signal Logic **From indicator class, extract:** - Long signal trigger conditions (from comments and code) - Short signal trigger conditions (from comments and code) - Confidence levels used - Any thresholds or constants (e.g., oversold: 20, overbought: 80) **From ProcessSignals method or similar:** - Crossover logic - Threshold checks - Zone conditions (oversold/overbought) ### Step 4: Determine Chart Visualization **From GetIndicatorValues method:** - Result type returned (e.g., `Stoch`, `Rsi`, `Macd`, `Ema`) - Properties available in result (e.g., `K`, `D`, `Rsi`, `Macd`, `Signal`) **From indicator class:** - Check if multiple series are needed (e.g., %K and %D lines) - Determine chart type (line, baseline, histogram) - Check if thresholds should be displayed (e.g., 20/80 lines) ### Step 5: Generate Kaigen Integration Prompt **Format the prompt with the following sections:** 1. **Indicator Specification** - Type (Signal/Trend/Context) - Label (display name) - Enum name (exact IndicatorType value) 2. **Core Logic** - Technical description - What the indicator measures/calculates 3. **Signal Triggers** - Long signal conditions - Short signal conditions - Confidence levels 4. **Parameters** - Required parameters with types, defaults, ranges - Optional parameters with types, defaults, ranges - Parameter descriptions 5. **API Integration** - Result type name (e.g., `StochResult`, `RsiResult`) - Properties to access (e.g., `k`, `d`, `rsi`, `macd`) - Data path in `IndicatorsResultBase` (e.g., `indicatorsValues.StochasticCross.stoch`) 6. **Chart Visualization** - Series to display (e.g., %K line, %D line) - Chart types (line, baseline, histogram) - Colors and styles - Thresholds to display - Precision settings 7. **Form Inputs** - Input types (number, number with step) - Placeholders - Validation rules 8. **Integration Checklist** - All files that need updates - All components that need changes ## Output Format Generate plain text (no code blocks) using the following structure: ### Indicator Specification - Type: {Signal/Trend/Context} - Label: {Display Name} - Enum Name: {IndicatorType.EnumName} - Class Name: {ClassName} ### Core Logic - Paragraph describing the indicator’s purpose and behavior. ### Signal Triggers - Long Signal: Describe trigger conditions in prose, then include the exact boolean condition on the next line prefixed with `Conditions:`. - Short Signal: Same structure as Long Signal. - Confidence: {confidence level} - Fixed Thresholds: List key threshold values (e.g., Oversold 20, Overbought 80). ### Parameters - **Required Parameters**: Present as a four-column inline table header `Parameter Type Default Range Description` followed by one row per parameter using spaces for separation (no Markdown table syntax). - **Optional Parameters**: Same inline table structure for optional parameters. No additional sections (API Integration, Chart Visualization, Form Inputs, etc.) should be included in the output. ## Integration Checklist - [ ] Add `{EnumName}` to `ALL_INDICATORS` arrays in genetic backtest pages - [ ] Add parameter mapping to `INDICATOR_PARAM_MAPPING` dictionaries - [ ] Add case to parameter switch in `CustomScenario.tsx` - [ ] Add case to label switch in `CustomScenario.tsx` - [ ] Create complete parameter form in `indicatorList.tsx` - [ ] Add chart visualization logic in `TradeChart.tsx` - [ ] Verify API types are correctly generated - [ ] Test form submission with all parameters - [ ] Test form submission with optional parameters omitted - [ ] Verify chart displays correctly - [ ] Test in genetic algorithm optimization flows ## Common Pitfalls 1. **Property Names**: Use `w.{property}` not `w.{PropertyName}` (check Skender result structure) 2. **Missing Pane Increment**: Always increment `paneCount++` after adding series 3. **Type Mismatches**: Ensure result type matches backend structure 4. **Optional Parameters**: Allow null/empty values for optional parameters 5. **Chart Precision**: Use appropriate precision for indicator type (0-100 range = precision: 2) ``` ## Example Execution **User input:** `/generate-kaigen-prompt StochasticCross` **AI execution:** 1. **Find indicator class:** - Search: `grep -r "StochasticCross" src/Managing.Domain/Indicators/` - Found: `src/Managing.Domain/Indicators/Signals/StochasticCrossIndicator.cs` - Read file to extract constructor, parameters, logic 2. **Extract configuration:** - Read `ScenarioHelpers.cs` → Find `IndicatorType.StochasticCross` case - Read `GeneticService.cs` → Find default values, ranges, parameter mapping - Read `Enums.cs` → Verify enum name 3. **Analyze signal logic:** - From `ProcessStochasticSignals` method - Extract: Long = %K crosses above %D in oversold (< 20) - Extract: Short = %K crosses below %D in overbought (> 80) 4. **Determine chart visualization:** - From `GetIndicatorValues` → Returns `Stoch` property - From code → Uses `StochResult` with `K` and `D` properties - Need two line series: %K (solid) and %D (dotted) 5. **Generate prompt:** - Format all extracted information - Include complete code examples - Add integration checklist - Output formatted markdown ## Error Handling **If indicator class not found:** - Search for similar names: `grep -ri "stochastic" src/Managing.Domain/Indicators/` - Check if indicator is in different folder (Signals/Trends/Context) - Verify enum name matches class name pattern **If configuration missing:** - Check `ScenarioHelpers.cs` for `BuildIndicator` case - Check `GeneticService.cs` for all three dictionaries - Verify enum exists in `Enums.cs` **If signal logic unclear:** - Read method comments in indicator class - Check `ProcessSignals` or similar method - Look for `AddSignal` calls to understand conditions **If chart visualization unclear:** - Check `GetIndicatorValues` return type - Look at similar indicators for patterns - Check Skender.Stock.Indicators documentation for result structure ## Important Notes - ✅ **Extract exact enum name** - Must match `IndicatorType` enum exactly - ✅ **Verify parameter types** - int vs double matters for form inputs - ✅ **Check Skender result structure** - Property names may differ (e.g., `K` not `PercentK`) - ✅ **Include all parameters** - Both required and optional - ✅ **Provide complete code examples** - Make it easy to copy/paste - ✅ **Add validation rules** - Include parameter constraints - ⚠️ **Check for thresholds** - Some indicators have fixed thresholds (20/80, 25/75, etc.) - ⚠️ **Multiple series** - Some indicators need multiple chart series - ⚠️ **Optional parameters** - Handle defaults correctly in forms ## Quick Reference - Common Patterns **Single Line Indicator** (e.g., RSI, EMA): - One `addLineSeries` - Access single property (e.g., `w.rsi`, `w.ema`) **Dual Line Indicator** (e.g., Stochastic, MACD): - Two `addLineSeries` (different colors/styles) - Access multiple properties (e.g., `w.k`, `w.d`) **Baseline Indicator** (e.g., STC, RSI with thresholds): - `addBaselineSeries` with baseValue - Add price lines for thresholds **Histogram Indicator** (e.g., MACD histogram): - `addHistogramSeries` for histogram - Additional line series for signal lines **Parameter Types**: - `int` → `type="number"` (no step) - `double` → `type="number" step="0.1"` or `step="0.01"` **Default Ranges** (from GeneticService patterns): - Periods: 5-50 or 5-300 - Multipliers: 1.0-10.0 - Factors: 0.1-10.0 - Signal periods: 3-15