feat: add prompt for claude code to include context when generating tasks

This commit is contained in:
Ralph Khreish
2025-08-06 12:17:49 +02:00
parent ca4d93ee6a
commit 36468f3c93
7 changed files with 82 additions and 9 deletions

View File

@@ -19,6 +19,7 @@ import {
COMPLEXITY_REPORT_FILE,
LEGACY_TASKS_FILE
} from '../../../src/constants/paths.js';
import { CUSTOM_PROVIDERS } from '../../../src/constants/providers.js';
import { resolveComplexityReportOutputPath } from '../../../src/utils/path-utils.js';
import { ContextGatherer } from '../utils/contextGatherer.js';
import { FuzzyTaskSearch } from '../utils/fuzzyTaskSearch.js';
@@ -408,10 +409,17 @@ async function analyzeTaskComplexity(options, context = {}) {
// Load prompts using PromptManager
const promptManager = getPromptManager();
// Check if Claude Code is being used as the provider
const { getMainProvider, getResearchProvider } = await import('../config-manager.js');
const currentProvider = useResearch ? getResearchProvider(projectRoot) : getMainProvider(projectRoot);
const isClaudeCode = currentProvider === CUSTOM_PROVIDERS.CLAUDE_CODE;
const promptParams = {
tasks: tasksData.tasks,
gatheredContext: gatheredContext || '',
useResearch: useResearch
useResearch: useResearch,
isClaudeCode: isClaudeCode,
projectRoot: projectRoot || ''
};
const { systemPrompt, userPrompt: prompt } = await promptManager.loadPrompt(

View File

@@ -22,6 +22,7 @@ import { getDefaultSubtasks, getDebugFlag } from '../config-manager.js';
import { getPromptManager } from '../prompt-manager.js';
import generateTaskFiles from './generate-task-files.js';
import { COMPLEXITY_REPORT_FILE } from '../../../src/constants/paths.js';
import { CUSTOM_PROVIDERS } from '../../../src/constants/providers.js';
import { ContextGatherer } from '../utils/contextGatherer.js';
import { FuzzyTaskSearch } from '../utils/fuzzyTaskSearch.js';
import { flattenTasksWithSubtasks, findProjectRoot } from '../utils.js';
@@ -451,6 +452,15 @@ async function expandTask(
// Load prompts using PromptManager
const promptManager = getPromptManager();
// Check if Claude Code is being used as the provider
const { getMainProvider, getResearchProvider } = await import(
'../config-manager.js'
);
const currentProvider = useResearch
? getResearchProvider(projectRoot)
: getMainProvider(projectRoot);
const isClaudeCode = currentProvider === CUSTOM_PROVIDERS.CLAUDE_CODE;
// Combine all context sources into a single additionalContext parameter
let combinedAdditionalContext = '';
if (additionalContext || complexityReasoningContext) {
@@ -495,7 +505,9 @@ async function expandTask(
complexityReasoningContext: complexityReasoningContext,
gatheredContext: gatheredContextText || '',
useResearch: useResearch,
expansionPrompt: expansionPromptText || undefined
expansionPrompt: expansionPromptText || undefined,
isClaudeCode: isClaudeCode,
projectRoot: projectRoot || ''
};
let variantKey = 'default';

View File

@@ -20,6 +20,7 @@ import { generateObjectService } from '../ai-services-unified.js';
import { getDebugFlag } from '../config-manager.js';
import { getPromptManager } from '../prompt-manager.js';
import { displayAiUsageSummary } from '../ui.js';
import { CUSTOM_PROVIDERS } from '../../../src/constants/providers.js';
// Define the Zod schema for a SINGLE task object
const prdSingleTaskSchema = z.object({
@@ -174,9 +175,16 @@ async function parsePRD(prdPath, tasksPath, numTasks, options = {}) {
const promptManager = getPromptManager();
// Get defaultTaskPriority from config
const { getDefaultPriority } = await import('../config-manager.js');
const { getDefaultPriority, getMainProvider, getResearchProvider } =
await import('../config-manager.js');
const defaultTaskPriority = getDefaultPriority(projectRoot) || 'medium';
// Check if Claude Code is being used as the provider
const currentProvider = research
? getResearchProvider(projectRoot)
: getMainProvider(projectRoot);
const isClaudeCode = currentProvider === CUSTOM_PROVIDERS.CLAUDE_CODE;
const { systemPrompt, userPrompt } = await promptManager.loadPrompt(
'parse-prd',
{
@@ -185,7 +193,9 @@ async function parsePRD(prdPath, tasksPath, numTasks, options = {}) {
nextId,
prdContent,
prdPath,
defaultTaskPriority
defaultTaskPriority,
isClaudeCode,
projectRoot: projectRoot || ''
}
);