add_todo
Add a new task to your software development plan with title, description, complexity score, and optional code examples for better project management.
Instructions
Add a new todo item to the current plan
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the todo item | |
| description | Yes | Detailed description of the todo item | |
| complexity | Yes | Complexity score (0-10) | |
| codeExample | No | Optional code example |
Implementation Reference
- src/index.ts:254-276 (handler)MCP tool handler for 'add_todo': validates current goal exists, casts arguments to Todo shape, calls storage.addTodo, and returns the new todo as JSON text.case 'add_todo': { if (!this.currentGoal) { throw new McpError( ErrorCode.InvalidRequest, 'No active goal. Start a new planning session first.' ); } const todo = request.params.arguments as Omit< Todo, 'id' | 'isComplete' | 'createdAt' | 'updatedAt' >; const newTodo = await storage.addTodo(this.currentGoal.id, todo); return { content: [ { type: 'text', text: JSON.stringify(newTodo, null, 2), }, ], }; }
- src/index.ts:141-168 (schema)Tool registration in ListTools response, including input schema definition for 'add_todo' matching Todo properties.{ name: 'add_todo', description: 'Add a new todo item to the current plan', inputSchema: { type: 'object', properties: { title: { type: 'string', description: 'Title of the todo item', }, description: { type: 'string', description: 'Detailed description of the todo item', }, complexity: { type: 'number', description: 'Complexity score (0-10)', minimum: 0, maximum: 10, }, codeExample: { type: 'string', description: 'Optional code example', }, }, required: ['title', 'description', 'complexity'], }, },
- src/types.ts:1-10 (schema)TypeScript interface Todo defining the structure used for add_todo inputs and storage.export interface Todo { id: string; title: string; description: string; complexity: number; codeExample?: string; isComplete: boolean; createdAt: string; updatedAt: string; }
- src/storage.ts:71-95 (helper)Storage helper function that implements the core logic: creates Todo with generated id/timestamps, appends to plan.todos, persists to JSON file.async addTodo( goalId: string, { title, description, complexity, codeExample }: Omit<Todo, 'id' | 'isComplete' | 'createdAt' | 'updatedAt'> ): Promise<Todo> { const plan = await this.getPlan(goalId); if (!plan) { throw new Error(`No plan found for goal ${goalId}`); } const todo: Todo = { id: Date.now().toString(), title, description, complexity, codeExample, isComplete: false, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), }; plan.todos.push(todo); plan.updatedAt = new Date().toISOString(); await this.save(); return todo; }