diff --git a/src/agents/prompts/templates/planning.eta b/src/agents/prompts/templates/planning.eta index 40cfcf73..fceb224a 100644 --- a/src/agents/prompts/templates/planning.eta +++ b/src/agents/prompts/templates/planning.eta @@ -101,6 +101,7 @@ Update the <%= it.workItemNoun || 'card' %> description with **emoji section hea **IMPORTANT:** - After updating the <%= it.workItemNoun || 'card' %>, ALWAYS call `AddChecklist` to create an interactive "๐Ÿ“‹ Implementation Steps" checklist with each step as an item. +- When calling `AddChecklist`, use only the task name as each item โ€” do NOT include "Step N:" prefixes. For example, use "Add helper function" instead of "Step 1: Add helper function". The checklist order already implies sequence. <% if (it.pmType === 'jira') { %>- When calling `AddChecklist`, pass items as objects with `name` and `description`. The description should include the files to modify, specific changes, and testing notes from the corresponding Implementation Step section. This becomes the JIRA subtask description. <% } %>- When referencing other <%= it.workItemNounPlural || 'cards' %> (related stories, dependencies), ALWAYS use markdown links: `[<%= it.workItemNounCap || 'Card' %> Title](URL)` @@ -141,6 +142,7 @@ Review the updated description and move to TODO when ready to implement! - ALWAYS explore the codebase before creating the plan - ALWAYS use `UpdateWorkItem` to save your plan - DON'T JUST OUTPUT TEXT - ALWAYS call `AddChecklist` after updating the <%= it.workItemNoun || 'card' %> to create interactive checklists +- NEVER include "Step N:" prefixes in `AddChecklist` items โ€” use clean task names like "Add helper function", not "Step 1: Add helper function" - ALWAYS use emoji section headers (๐ŸŽฏ, ๐Ÿ“‹, ๐Ÿงช, โš ๏ธ, ๐Ÿ”—) and **bold key terms** in descriptions - ALWAYS include a ๐ŸŽฏ TLDR section at the top of the <%= it.workItemNoun || 'card' %> description - ALWAYS use markdown link syntax `[title](url)` when referencing other <%= it.workItemNounPlural || 'cards' %> diff --git a/src/agents/prompts/templates/respond-to-planning-comment.eta b/src/agents/prompts/templates/respond-to-planning-comment.eta index 1ab7178b..ddd9f1cb 100644 --- a/src/agents/prompts/templates/respond-to-planning-comment.eta +++ b/src/agents/prompts/templates/respond-to-planning-comment.eta @@ -74,6 +74,7 @@ When modifying the plan, **update the existing checklists in place** โ€” do NOT - **Renaming/rewriting steps**: Use `UpdateChecklistItem` to change the text of existing checklist items. - **Removing steps**: Use `DeleteChecklistItem` to permanently remove checklist items / subtasks that are no longer needed. Do NOT mark removed items as "complete" โ€” they were never done, so deleting is the correct action. - **Reordering**: Delete and re-add items as needed to achieve the desired order. +- **Checklist item names**: Use clean task names without "Step N:" prefixes โ€” for example "Add helper function", NOT "Step 1: Add helper function". The checklist order already implies sequence. When the user asks to narrow scope, focus on a subset, or drop items from the plan, **always delete** the out-of-scope items rather than leaving them in the checklist. diff --git a/tests/unit/agents/prompts.test.ts b/tests/unit/agents/prompts.test.ts index 319bd754..668666b2 100644 --- a/tests/unit/agents/prompts.test.ts +++ b/tests/unit/agents/prompts.test.ts @@ -109,6 +109,18 @@ describe('system prompts content', () => { expect(prompt).toContain('Category B (Plan Update)'); expect(prompt).toContain('Category C (Both)'); }); + + it('planning prompt instructs AddChecklist items to not use Step N prefixes', () => { + const prompt = getSystemPrompt('planning'); + expect(prompt).toContain('do NOT include "Step N:" prefixes'); + expect(prompt).toContain('Add helper function'); + }); + + it('respond-to-planning-comment prompt instructs checklist items to not use Step N prefixes', () => { + const prompt = getSystemPrompt('respond-to-planning-comment'); + expect(prompt).toContain('Step N:'); + expect(prompt).toContain('clean task names without'); + }); }); describe('resolveIncludes', () => {