Planning with Files
A task planning skill that helps you manage complex tasks through structured plan files.
Overview
This skill creates and maintains a PLAN.md file that tracks:
- •Task breakdown into subtasks
- •Progress status for each subtask
- •Completion criteria
Usage
When starting a complex task, create a plan:
code
/plan create "Implement user authentication"
The skill will:
- •Create a
PLAN.mdfile with task breakdown - •Track progress as you work through subtasks
- •Prevent premature completion until all subtasks are done
Plan File Format
markdown
# Task: [Task Description] ## Status: in_progress | completed | blocked ## Subtasks - [ ] Subtask 1 description - [x] Subtask 2 description (completed) - [ ] Subtask 3 description ## Notes Any relevant notes or context.
Hooks
PreToolUse (Write/Edit)
Before any file write, checks if the operation aligns with the current plan.
PostToolUse
After each tool use, updates plan progress if relevant.
Stop
Before stopping, verifies all planned subtasks are complete. If incomplete tasks remain, prompts to continue or explicitly acknowledge incomplete work.
Input Schema
json
{
"type": "object",
"properties": {
"action": {
"type": "string",
"enum": ["create", "update", "complete", "status"],
"description": "Action to perform on the plan"
},
"task": {
"type": "string",
"description": "Task description (for create action)"
},
"subtask_index": {
"type": "integer",
"description": "Subtask index to update (for update action)"
},
"status": {
"type": "string",
"enum": ["pending", "in_progress", "completed", "blocked"],
"description": "New status (for update action)"
}
},
"required": ["action"]
}
Output Schema
json
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"plan_path": {
"type": "string",
"description": "Path to the plan file"
},
"status": {
"type": "string",
"description": "Current plan status"
},
"progress": {
"type": "object",
"properties": {
"total": { "type": "integer" },
"completed": { "type": "integer" },
"percentage": { "type": "number" }
}
},
"message": {
"type": "string"
}
}
}