Repository: cline/cline
Pull request #2747: New Horizons
Author: login: pashpashpash
Created: 2025-04-08T20:49:46Z | Merged: 2025-04-09T00:20:30Z

### Description

Added a new task tool that Cline can use to start a new task with preloaded context.

### Test Procedure

Added a test + tested it manually end to end!

### Type of Change

<!-- Put an 'x' in all boxes that apply -->

-   [ ] 🐛 Bug fix (non-breaking change which fixes an issue)
-   [x] ✨ New feature (non-breaking change which adds functionality)
-   [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
-   [ ] 📚 Documentation update

### Pre-flight Checklist

<!-- Put an 'x' in all boxes that apply -->

-   [x] Changes are limited to a single feature, bugfix or chore (split larger changes into separate PRs)
-   [x] Tests are passing (`npm test`) and code is formatted and linted (`npm run format && npm run lint`)
-   [x] I have created a changeset using `npm run changeset` (required for user-facing changes)
-   [x] I have reviewed [contributor guidelines](https://github.com/cline/cline/blob/main/CONTRIBUTING.md)

### Screenshots

<img width="350" alt="Screenshot 2025-04-08 at 3 29 21 PM" src="https://github.com/user-attachments/assets/f10fd858-bca6-462f-a5ff-522baf5c3763" />


### Additional Notes

<!-- Add any additional notes for reviewers -->

<!-- ELLIPSIS_HIDDEN -->


----

> [!IMPORTANT]
> Adds a `new_task` tool to Cline for starting tasks with preloaded context, updating UI components, documentation, and tests.
> 
>   - **Behavior**:
>     - Adds `new_task` tool to start a new task with preloaded context in `task/index.ts`.
>     - Updates `ChatView.tsx` and `ChatRow.tsx` to handle `new_task` messages and display context preview.
>   - **Documentation**:
>     - Updates `cline-tools-guide.md` to include `new_task` tool usage.
>   - **UI Components**:
>     - Adds `NewTaskPreview.tsx` to display task context in the UI.
>     - Modifies `ChatRow.tsx` to include `NewTaskPreview` component.
>   - **Testing**:
>     - Adds `new-task-tool.test.ts` to test `new_task` tool functionality.
>   - **Misc**:
>     - Updates `responses.ts` to format new task context messages.
>     - Adds `new_task` to `toolUseNames` and `toolParamNames` in `assistant-message/index.ts`.
> 
> <sup>This description was created by </sup>[<img alt="Ellipsis" src="https://img.shields.io/badge/Ellipsis-blue?color=175173">](https://www.ellipsis.dev?ref=cline%2Fcline&utm_source=github&utm_medium=referral)<sup> for 981b15edcdeb999e51eba4f43096251f97247b04. It will automatically update as commits are pushed.</sup>


<!-- ELLIPSIS_HIDDEN -->


Diff:
diff --git a/.changeset/spicy-radios-tie.md b/.changeset/spicy-radios-tie.md
new file mode 100644
index 00000000000..ea2262a5916
--- /dev/null
+++ b/.changeset/spicy-radios-tie.md
@@ -0,0 +1,5 @@
+---
+"claude-dev": minor
+---
+
+Added a new task tool to cline's arsenal
diff --git a/docs/tools/cline-tools-guide.md b/docs/tools/cline-tools-guide.md
index 02f7ee7089d..4e4b5dab58e 100644
--- a/docs/tools/cline-tools-guide.md
+++ b/docs/tools/cline-tools-guide.md
@@ -82,6 +82,7 @@ Cline has access to the following tools for various tasks:
 4. **Interaction Tools**
     - `ask_followup_question`: Ask user for clarification
     - `attempt_completion`: Present final results
+    - `new_task`: Start a new task with preloaded context
 
 Each tool has specific parameters and usage patterns. Here are some examples:
 
@@ -114,6 +115,21 @@ Each tool has specific parameters and usage patterns. Here are some examples:
     </execute_command>
     ```
 
+-   Start a new task with context (new_task):
+    ```xml
+    <new_task>
+    <context>
+    We've completed the backend API with these endpoints:
+    - GET /api/tasks
+    - POST /api/tasks
+    - PUT /api/tasks/:id
+    - DELETE /api/tasks/:id
+
+    Now we need to implement the React frontend.
+    </context>
+    </new_task>
+    ```
+
 ## Common Tasks
 
 1. **Create a New Component**
diff --git a/src/core/assistant-message/index.ts b/src/core/assistant-message/index.ts
index 96973a40b2a..80270444fa4 100644
--- a/src/core/assistant-message/index.ts
+++ b/src/core/assistant-message/index.ts
@@ -23,6 +23,7 @@ export const toolUseNames = [
 	"plan_mode_respond",
 	"load_mcp_documentation",
 	"attempt_completion",
+	"new_task",
 ] as const
 
 // Converts array of tool call names into a union type ("execute_command" | "read_file" | ...)
@@ -49,6 +50,7 @@ export const toolParamNames = [
 	"options",
 	"response",
 	"result",
+	"context",
 ] as const
 
 export type ToolParamName = (typeof toolParamNames)[number]
diff --git a/src/core/prompts/responses.ts b/src/core/prompts/responses.ts
index 95ba50b4a81..387fc84c72d 100644
--- a/src/core/prompts/responses.ts
+++ b/src/core/prompts/responses.ts
@@ -205,6 +205,9 @@ Otherwise, if you have not completed the task and do not need additional informa
 
 	clineRulesFileInstructions: (cwd: string, content: string) =>
 		`# .clinerules\n\nThe following is provided by a root-level .clinerules file where the user has specified instructions for this working directory (${cwd.toPosix()})\n\n${content}`,
+
+	newTaskContext: (context: string) =>
+		`Cline wants to start a new task with the following context:\n\n${context}\n\nClick "Start New Task" to start a new task with this context preloaded.`,
 }
 
 // to avoid circular dependency
diff --git a/src/core/prompts/system.ts b/src/core/prompts/system.ts
index d18f68748c4..1ad4d5dfcde 100644
--- a/src/core/prompts/system.ts
+++ b/src/core/prompts/system.ts
@@ -233,6 +233,20 @@ Your final result description here
 <command>Command to demonstrate result (optional)</command>
 </attempt_completion>
 
+## new_task
+Description: Request to create a new task with preloaded context. The user will be presented with a preview of the context and can choose to create a new task or keep chatting in the current conversation. The user may choose to start a new task at any point.
+Parameters:
+- context: (required) The context to preload the new task with. This should include:
+  * Comprehensively explain what has been accomplished in the current task - mention specific file names that are relevant
+  * The specific next steps or focus for the new task - mention specific file names that are relevant
+  * Any critical information needed to continue the work
+  * Clear indication of how this new task relates to the overall workflow
+  * This should be akin to a long handoff file, enough for a totally new developer to be able to pick up where you left off and know exactly what to do next and which files to look at.
+Usage:
+<new_task>
+<context>context to preload new task with</context>
+</new_task>
+
 ## plan_mode_respond
 Description: Respond to the user's inquiry in an effort to plan a solution to the user's task. This tool should be used when you need to provide a response to a question or statement from the user about how you plan to accomplish the task. This tool is only available in PLAN MODE. The environment_details will specify the current mode, if it is not PLAN MODE then you should not use this tool. Depending on the user's message, you may ask questions to get clarification about the user's request, architect a solution to the task, and to brainstorm ideas with the user. For example, if the user's task is to create a website, you may start by asking some clarifying questions, then present a detailed plan for how you will accomplish the task given the context, and perhaps engage in a back and forth to finalize the details before the user switches you to ACT MODE to implement the solution.
 Parameters:
@@ -284,7 +298,25 @@ Usage:
 </content>
 </write_to_file>
 
-## Example 3: Requesting to make targeted edits to a file
+## Example 3: Creating a new task
+
+<new_task>
+<context>
+Authentication System Implementation:
+- We've implemented the basic user model with email/password
+- Password hashing is working with bcrypt
+- Login endpoint is functional with proper validation
+- JWT token generation is implemented
+
+Next Steps:
+- Implement refresh token functionality
+- Add token validation middleware
+- Create password reset flow
+- Implement role-based access control
+</context>
+</new_task>
+
+## Example 4: Requesting to make targeted edits to a file
 
 <replace_in_file>
 <path>src/components/App.tsx</path>
@@ -319,7 +351,7 @@ return (
 </diff>
 </replace_in_file>
 
-## Example 4: Requesting to use an MCP tool
+## Example 5: Requesting to use an MCP tool
 
 <use_mcp_tool>
 <server_name>weather-server</server_name>
@@ -332,7 +364,7 @@ return (
 </arguments>
 </use_mcp_tool>
 
-## Example 5: Another example of using an MCP tool (where the server name is a unique identifier such as a URL)
+## Example 6: Another example of using an MCP tool (where the server name is a unique identifier such as a URL)
 
 <use_mcp_tool>
 <server_name>github.com/modelcontextprotocol/servers/tree/main/src/github</server_name>
diff --git a/src/core/task/index.ts b/src/core/task/index.ts
index 181485ab88a..5989b6b019d 100644
--- a/src/core/task/index.ts
+++ b/src/core/task/index.ts
@@ -1475,6 +1475,8 @@ export class Task {
 							return `[${block.name}]`
 						case "attempt_completion":
 							return `[${block.name}]`
+						case "new_task":
+							return `[${block.name} for creating a new task]`
 					}
 				}
 
@@ -2743,6 +2745,51 @@ export class Task {
 							break
 						}
 					}
+					case "new_task": {
+						const context: string | undefined = block.params.context
+						try {
+							if (block.partial) {
+								await this.ask("new_task", removeClosingTag("context", context), block.partial).catch(() => {})
+								break
+							} else {
+								if (!context) {
+									this.consecutiveMistakeCount++
+									pushToolResult(await this.sayAndCreateMissingParamError("new_task", "context"))
+									break
+								}
+								this.consecutiveMistakeCount = 0
+
+								if (this.autoApprovalSettings.enabled && this.autoApprovalSettings.enableNotifications) {
+									showSystemNotification({
+										subtitle: "Cline wants to start a new task...",
+										message: "Cline is suggesting to start a new task with preloaded context.",
+									})
+								}
+
+								const { text, images } = await this.ask("new_task", context, false)
+
+								// If the user provided a response, treat it as feedback
+								if (text || images?.length) {
+									await this.say("user_feedback", text ?? "", images)
+									pushToolResult(
+										formatResponse.toolResult(
+											`The user provided feedback instead of creating a new task:\n<feedback>\n${text}\n</feedback>`,
+											images,
+										),
+									)
+								} else {
+									// If no response, the user clicked the "Create New Task" button
+									pushToolResult(
+										formatResponse.toolResult(`The user has created a new task with the provided context.`),
+									)
+								}
+								break
+							}
+						} catch (error) {
+							await handleError("creating new task", error)
+							break
+						}
+					}
 					case "plan_mode_respond": {
 						const response: string | undefined = block.params.response
 						const optionsRaw: string | undefined = block.params.options
diff --git a/src/shared/ExtensionMessage.ts b/src/shared/ExtensionMessage.ts
index a734ba9addc..7d36de3e89b 100644
--- a/src/shared/ExtensionMessage.ts
+++ b/src/shared/ExtensionMessage.ts
@@ -169,6 +169,7 @@ export type ClineAsk =
 	| "auto_approval_max_req_reached"
 	| "browser_action_launch"
 	| "use_mcp_server"
+	| "new_task"
 
 export type ClineSay =
 	| "task"
@@ -256,6 +257,10 @@ export interface ClineAskQuestion {
 	selected?: string
 }
 
+export interface ClineAskNewTask {
+	context: string
+}
+
 export interface ClineApiReqInfo {
 	request?: string
 	tokensIn?: number
diff --git a/src/test/new-task-tool.test.ts b/src/test/new-task-tool.test.ts
new file mode 100644
index 00000000000..c23fb15964b
--- /dev/null
+++ b/src/test/new-task-tool.test.ts
@@ -0,0 +1,27 @@
+import * as assert from "assert"
+import { ClineMessage } from "../shared/ExtensionMessage"
+import { formatResponse } from "../core/prompts/responses"
+
+suite("New Task Tool Tests", () => {
+	test("formatResponse.newTaskContext formats context correctly", () => {
+		const context = "This is a test context for a new task"
+		const result = formatResponse.newTaskContext(context)
+
+		assert.strictEqual(
+			result,
+			`Cline wants to create a new task with the following context:\n\nThis is a test context for a new task\n\nClick "Create New Task" to start a new task with this context preloaded in Plan Mode.`,
+		)
+	})
+
+	test("ClineAskNewTask interface exists", () => {
+		// This is a type check test, it will fail at compile time if the interface doesn't exist
+		const message: ClineMessage = {
+			ts: Date.now(),
+			type: "ask",
+			ask: "new_task",
+			text: JSON.stringify({ context: "Test context" }),
+		}
+
+		assert.ok(message)
+	})
+})
diff --git a/webview-ui/src/components/chat/ChatRow.tsx b/webview-ui/src/components/chat/ChatRow.tsx
index 4753daf182c..0e2dcd0aa4e 100644
--- a/webview-ui/src/components/chat/ChatRow.tsx
+++ b/webview-ui/src/components/chat/ChatRow.tsx
@@ -30,6 +30,7 @@ import { OptionsButtons } from "@/components/chat/OptionsButtons"
 import { highlightMentions } from "./TaskHeader"
 import SuccessButton from "@/components/common/SuccessButton"
 import TaskFeedbackButtons from "@/components/chat/TaskFeedbackButtons"
+import NewTaskPreview from "./NewTaskPreview"
 import McpResourceRow from "@/components/mcp/configuration/tabs/installed/server-row/McpResourceRow"
 
 const ChatRowContainer = styled.div`
@@ -1248,6 +1249,21 @@ export const ChatRowContent = ({ message, isExpanded, onToggleExpand, lastModifi
 							</div>
 						</>
 					)
+				case "new_task":
+					return (
+						<>
+							<div style={headerStyle}>
+								<span
+									className="codicon codicon-new-file"
+									style={{
+										color: normalColor,
+										marginBottom: "-1.5px",
+									}}></span>
+								<span style={{ color: normalColor, fontWeight: "bold" }}>Cline wants to start a new task:</span>
+							</div>
+							<NewTaskPreview context={message.text || ""} />
+						</>
+					)
 				case "plan_mode_respond": {
 					let response: string | undefined
 					let options: string[] | undefined
diff --git a/webview-ui/src/components/chat/ChatView.tsx b/webview-ui/src/components/chat/ChatView.tsx
index d76f543cdc8..7a64ad53c09 100644
--- a/webview-ui/src/components/chat/ChatView.tsx
+++ b/webview-ui/src/components/chat/ChatView.tsx
@@ -195,6 +195,13 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
 							setSecondaryButtonText(undefined)
 							setDidClickCancel(false)
 							break
+						case "new_task":
+							setTextAreaDisabled(isPartial)
+							setClineAsk("new_task")
+							setEnableButtons(!isPartial)
+							setPrimaryButtonText("Start New Task with Context")
+							setSecondaryButtonText(undefined)
+							break
 					}
 					break
 				case "say":
@@ -296,6 +303,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
 						case "resume_task":
 						case "resume_completed_task":
 						case "mistake_limit_reached":
+						case "new_task": // user can provide feedback or reject the new task suggestion
 							vscode.postMessage({
 								type: "askResponse",
 								askResponse: "messageResponse",
@@ -361,6 +369,13 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
 					// extension waiting for feedback. but we can just present a new task button
 					startNewTask()
 					break
+				case "new_task":
+					console.info("new task button clicked!", { lastMessage, messages, clineAsk, text })
+					vscode.postMessage({
+						type: "newTask",
+						text: lastMessage?.text,
+					})
+					break
 			}
 			setTextAreaDisabled(true)
 			setClineAsk(undefined)
@@ -369,7 +384,7 @@ const ChatView = ({ isHidden, showAnnouncement, hideAnnouncement, showHistoryVie
 			// setSecondaryButtonText(undefined)
 			disableAutoScrollRef.current = false
 		},
-		[clineAsk, startNewTask],
+		[clineAsk, startNewTask, lastMessage],
 	)
 
 	const handleSecondaryButtonClick = useCallback(
diff --git a/webview-ui/src/components/chat/NewTaskPreview.tsx b/webview-ui/src/components/chat/NewTaskPreview.tsx
new file mode 100644
index 00000000000..3a6019290fa
--- /dev/null
+++ b/webview-ui/src/components/chat/NewTaskPreview.tsx
@@ -0,0 +1,16 @@
+import React from "react"
+import MarkdownBlock from "../common/MarkdownBlock"
+
+interface NewTaskPreviewProps {
+	context: string
+}
+
+const NewTaskPreview: React.FC<NewTaskPreviewProps> = ({ context }) => {
+	return (
+		<div className="bg-[var(--vscode-badge-background)] text-[var(--vscode-badge-foreground)] rounded-[3px] p-[9px] pt-0 border-t-8 border-[var(--vscode-charts-green)]">
+			<MarkdownBlock markdown={context} />
+		</div>
+	)
+}
+
+export default NewTaskPreview


Reviews:
user: login: ellipsis-dev[bot]
body: :x: Changes requested. Reviewed everything up to cc392478b9a3cb36b992a80b5502d225d64f87a4 in <ellipsistime>2 minutes and 23 seconds</ellipsistime>

<details>
<summary>More details</summary>

 - Looked at `376` lines of code in `11` files
 - Skipped `0` files when reviewing.
 - Skipped posting `5` drafted comments based on config settings.


<details>
<summary>1. <code>webview-ui/src/components/chat/NewTaskPreview.tsx:1</code></summary>

- **Draft comment:** 
The NewTaskPreview component is simple and clean. It properly uses React.FC with an explicit props interface. Good job using Tailwind-style classes to style the component. Consider adding a brief comment above the component explaining its role in previewing new task context, for ease of readability by future maintainers.
- **Reason this comment was not posted:** 
Confidence changes required: `0%` <= threshold `50%`
None

</details>

<details>
<summary>2. <code>src/test/new-task-tool.test.ts:5</code></summary>

- **Draft comment:** 
The test file for the new task tool looks concise and effective. The interface existence type check is a good practice. Consider adding more tests covering edge cases and possible error conditions for future robustness.
- **Reason this comment was not posted:** 
Confidence changes required: `0%` <= threshold `50%`
None

</details>

<details>
<summary>3. <code>webview-ui/src/components/chat/NewTaskPreview.tsx:1</code></summary>

- **Draft comment:** 
NewTaskPreview is a clear, concise functional component that receives a context string and renders it using MarkdownBlock. The use of CSS variables for colors and spacing is clean. No issues found.
- **Reason this comment was not posted:** 
Confidence changes required: `0%` <= threshold `50%`
None

</details>

<details>
<summary>4. <code>webview-ui/src/components/chat/ChatRow.tsx:22</code></summary>

- **Draft comment:** 
Minor typographical note: The component 'CodeAccordian' appears to be misspelled (usually spelled 'Accordion'). Consider correcting it to maintain conventional spelling.
- **Reason this comment was not posted:** 
Comment was not on a location in the diff, so it can't be submitted as a review comment.

</details>

<details>
<summary>5. <code>webview-ui/src/components/chat/ChatView.tsx:105</code></summary>

- **Draft comment:** 
Consider changing 'Proceed Anyways' to 'Proceed Anyway' for better grammatical consistency.
- **Reason this comment was not posted:** 
Comment was not on a location in the diff, so it can't be submitted as a review comment.

</details>


Workflow ID: <workflowid>`wflow_Ii3Uzr39edtkOKKe`</workflowid>

</details>


----
**Want Ellipsis to fix these issues?** Tag `@ellipsis-dev` in a comment. You can customize Ellipsis with :+1: / :-1: [feedback](https://docs.ellipsis.dev/review), review rules, user-specific overrides, `quiet` mode, and [more](https://docs.ellipsis.dev/config).

state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T20:52:15Z
user: login: ellipsis-dev[bot]
body: :+1: Looks good to me! Incremental review on fb3d3e675c4c1d1079272aba6f5319279900fe66 in <ellipsistime>1 minute and 43 seconds</ellipsistime>

<details>
<summary>More details</summary>

 - Looked at `22` lines of code in `1` files
 - Skipped `0` files when reviewing.
 - Skipped posting `4` drafted comments based on config settings.


<details>
<summary>1. <code>src/core/prompts/system.ts:355</code></summary>

- **Draft comment:** 
Updated example number from 6 to 5. Ensure this renumbering aligns with document order, avoiding off-by-one confusion.
- **Reason this comment was not posted:** 
Confidence changes required: `0%` <= threshold `50%`
None

</details>

<details>
<summary>2. <code>src/core/prompts/system.ts:365</code></summary>

- **Draft comment:** 
Updated example number from 7 to 6. Verify that the numbering is consistent throughout the document.
- **Reason this comment was not posted:** 
Confidence changes required: `0%` <= threshold `50%`
None

</details>

<details>
<summary>3. <code>src/core/prompts/system.ts:355</code></summary>

- **Draft comment:** 
Renumbered example header: Changed 'Example 6: Requesting to use an MCP tool' to 'Example 5: Requesting to use an MCP tool'. This improves sequential consistency. Please verify that any cross-references are updated accordingly.
- **Reason this comment was not posted:** 
Comment did not seem useful. Confidence is useful = `0%` <= threshold `50%`
The comment is asking the PR author to verify cross-references, which is against the rules. It does not provide a specific suggestion or point out a specific issue with the code. Therefore, it should be removed.

</details>

<details>
<summary>4. <code>src/core/prompts/system.ts:365</code></summary>

- **Draft comment:** 
Adjusted header numbering: Changed 'Example 7: Another example of using an MCP tool' to 'Example 6: Another example of using an MCP tool'. This aligns examples sequentially with the previous change.
- **Reason this comment was not posted:** 
Comment did not seem useful. Confidence is useful = `0%` <= threshold `50%`
This comment is purely informative, as it only describes a change made to the header numbering without providing any actionable feedback or suggestions. It does not ask for confirmation or suggest any improvements.

</details>


Workflow ID: <workflowid>`wflow_CHDKGk1aoKYizy8X`</workflowid>

</details>


----
You can customize Ellipsis with :+1: / :-1: [feedback](https://docs.ellipsis.dev/review), review rules, user-specific overrides, `quiet` mode, and [more](https://docs.ellipsis.dev/config).

state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T22:29:36Z
user: login: saoudrizwan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T23:21:43Z
user: login: saoudrizwan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T23:23:06Z
user: login: pashpashpash
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T23:34:39Z
user: login: ellipsis-dev[bot]
body: :+1: Looks good to me! Incremental review on 981b15edcdeb999e51eba4f43096251f97247b04 in <ellipsistime>1 minute and 35 seconds</ellipsistime>

<details>
<summary>More details</summary>

 - Looked at `14` lines of code in `1` files
 - Skipped `0` files when reviewing.
 - Skipped posting `2` drafted comments based on config settings.


<details>
<summary>1. <code>src/core/prompts/system.ts:237</code></summary>

- **Draft comment:** 
The updated new_task description removes the explicit requirement to include context. Consider retaining a note to ensure context is provided since it's crucial for properly preloading tasks.
- **Reason this comment was not posted:** 
Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50%
The comment suggests adding a note about ensuring context is provided, but this is already very clearly documented in multiple ways: 1) context is marked as (required) in the Parameters section, 2) there are 5 detailed bullet points explaining exactly what should be included in the context. Adding another note about providing context would be redundant and doesn't add any new information.
Perhaps the comment author noticed the removal of "IMPORTANT NOTE" and felt it reduced emphasis on context importance?
The existing documentation already emphasizes context importance by marking it as required and providing extensive details about what to include. An additional note would be redundant.
Delete this comment as it suggests adding redundant information that is already clearly documented in the required parameters and detailed bullet points.

</details>

<details>
<summary>2. <code>src/core/prompts/system.ts:236</code></summary>

- **Draft comment:** 
Good enhancement. Consider expanding the context requirements (e.g., next steps, critical info, relation to workflow) to match the usage example. Also, it might be useful to emphasize that context is mandatory.
- **Reason this comment was not posted:** 
Comment did not seem useful. Confidence is useful = `0%` <= threshold `50%`
This comment is asking the PR author to expand on context requirements, which seems to be more about providing additional information rather than making a specific code suggestion or identifying a potential issue. It doesn't align with the rules for good comments.

</details>


Workflow ID: <workflowid>`wflow_vvPEdKInmJeQUVWx`</workflowid>

</details>


----
You can customize Ellipsis with :+1: / :-1: [feedback](https://docs.ellipsis.dev/review), review rules, user-specific overrides, `quiet` mode, and [more](https://docs.ellipsis.dev/config).

state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T23:38:33Z
user: login: dcbartlett
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T23:44:39Z
user: login: pashpashpash
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-08T23:48:09Z
user: login: canvrno
body: Looks good to me! Tested with several tasks
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T00:15:25Z
user: login: saoudrizwan
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T00:37:17Z
user: login: dcbartlett
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-09T01:13:50Z

Review comments:
diff_hunk: @@ -319,7 +352,7 @@ return (
 </diff>
 </replace_in_file>
 
-## Example 4: Requesting to use an MCP tool
+## Example 6: Requesting to use an MCP tool
path: src/core/prompts/system.ts
user: login: ellipsis-dev[bot]
body: The numbering of the example sections appears inconsistent. After 'Example 3: Creating a new task' and 'Example 4: Requesting to make targeted edits to a file', the subsequent labels jump to 'Example 6' and 'Example 7', skipping 'Example 5'. Consider reviewing this renumbering for clarity and consistency.
```suggestion
## Example 5: Requesting to use an MCP tool
```
created_at: 2025-04-08T20:52:15Z
author_association: CONTRIBUTOR
diff_hunk: @@ -233,6 +233,21 @@ Your final result description here
 <command>Command to demonstrate result (optional)</command>
 </attempt_completion>
 
+## new_task
+Description: Request to create a new task with preloaded context. The user will be presented with a preview of the context and can choose to create a new task or keep chatting in the current conversation. 
+IMPORTANT NOTE: When creating a new task you must ALWAYS include context. 
path: src/core/prompts/system.ts
user: login: saoudrizwan
body: instead of putting this here, we should be consistent with the rest of tool definitions and put `(required)` in the Usage example below:
```
<new_task>
<context>context to preload new task with (required)</context>
</new_task>
```
created_at: 2025-04-08T23:21:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -233,6 +233,21 @@ Your final result description here
 <command>Command to demonstrate result (optional)</command>
 </attempt_completion>
 
+## new_task
+Description: Request to create a new task with preloaded context. The user will be presented with a preview of the context and can choose to create a new task or keep chatting in the current conversation. 
path: src/core/prompts/system.ts
user: login: saoudrizwan
body: It might help to specify that the user may choose to start a new task at any point, so that the model doesnt feel it should be using this tool unless prompted to do it. i dont want weaker models like llama using this tool proactively
created_at: 2025-04-08T23:23:06Z
author_association: CONTRIBUTOR
diff_hunk: @@ -233,6 +233,21 @@ Your final result description here
 <command>Command to demonstrate result (optional)</command>
 </attempt_completion>
 
+## new_task
+Description: Request to create a new task with preloaded context. The user will be presented with a preview of the context and can choose to create a new task or keep chatting in the current conversation. 
+IMPORTANT NOTE: When creating a new task you must ALWAYS include context. 
path: src/core/prompts/system.ts
user: login: pashpashpash
body: <img width="254" alt="Screenshot 2025-04-08 at 4 34 04 PM" src="https://github.com/user-attachments/assets/033b7822-8b4c-40cc-993d-f1fd7f6fedfd" />

This is how we do it for `plan_mode_respond` -- i'll remove the important note though. 
created_at: 2025-04-08T23:34:39Z
author_association: CONTRIBUTOR
diff_hunk: @@ -233,6 +233,21 @@ Your final result description here
 <command>Command to demonstrate result (optional)</command>
 </attempt_completion>
 
+## new_task
+Description: Request to create a new task with preloaded context. The user will be presented with a preview of the context and can choose to create a new task or keep chatting in the current conversation. 
path: src/core/prompts/system.ts
user: login: pashpashpash
body: done
created_at: 2025-04-08T23:48:09Z
author_association: CONTRIBUTOR
diff_hunk: @@ -205,6 +205,9 @@ Otherwise, if you have not completed the task and do not need additional informa
 
 	clineRulesFileInstructions: (cwd: string, content: string) =>
 		`# .clinerules\n\nThe following is provided by a root-level .clinerules file where the user has specified instructions for this working directory (${cwd.toPosix()})\n\n${content}`,
+
+	newTaskContext: (context: string) =>
path: src/core/prompts/responses.ts
user: login: saoudrizwan
body: i dont think we're actually using this anywhere right?
created_at: 2025-04-09T00:37:17Z
author_association: CONTRIBUTOR
diff_hunk: @@ -205,6 +205,9 @@ Otherwise, if you have not completed the task and do not need additional informa
 
 	clineRulesFileInstructions: (cwd: string, content: string) =>
 		`# .clinerules\n\nThe following is provided by a root-level .clinerules file where the user has specified instructions for this working directory (${cwd.toPosix()})\n\n${content}`,
+
+	newTaskContext: (context: string) =>
path: src/core/prompts/responses.ts
user: login: dcbartlett
body: Just in the test right now.
created_at: 2025-04-09T01:13:50Z
author_association: CONTRIBUTOR

PR comments:
user: login: github-actions[bot]
created_at: 2025-04-08T20:52:49Z
body: <!-- COVERAGE_REPORT -->
## Coverage Report

### Extension Coverage

Base branch: 45%

PR branch: 45%

✅ Coverage increased or remained the same

### Webview Coverage

Base branch: 11%

PR branch: 11%

⚠️ **Warning: Coverage decreased by 0.03%**

Consider adding tests to cover your changes.

### Overall Assessment

⚠️ **Test coverage has decreased in this PR**

Please consider adding tests to maintain or improve coverage.



<sub>Last updated: 2025-04-08T23:39:28.798728</sub>
author_association: CONTRIBUTOR
user: login: changeset-bot[bot]
created_at: 2025-04-08T22:27:51Z
body: ###  🦋  Changeset detected

Latest commit: 981b15edcdeb999e51eba4f43096251f97247b04

**The changes in this PR will be included in the next version bump.**

<details><summary>This PR includes changesets to release 1 package</summary>

  | Name       | Type  |
| ---------- | ----- |
| claude-dev | Minor |

</details>

Not sure what this means? [Click here  to learn what changesets are](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md).

[Click here if you're a maintainer who wants to add another changeset to this PR](https://github.com/cline/cline/new/pashpashpash/new-horizons?filename=.changeset/smart-cheetahs-judge.md&value=---%0A%22claude-dev%22%3A%20patch%0A---%0A%0ANew%20Horizons%0A)


author_association: NONE