The spec: plan_write and plan_update (new, shared, offered in every mode) and plan_submit (now shared) keep one structured plan — findings, objectives, phases of tasks — in place of the todo list, which lives on as a former name of plan_write. The shared system text is one text for both projects, with variables for what differs; the mode texts, a prototypes block and a library block are shared. acp.md: the client hands the device what only it knows (context, library, prototypes), the plan travels as a structure (plan_state), library calls carry the chat's scope, and a client may rewind a session. loop.json says its numbers as numbers. Four conformance areas: plan, prototype, library_scope, toolcall_index. The CLI: the plan is kept per session in the store and drawn above the prompt and on the approval card; the prompt is assembled from the spec's texts with their variables filled; the link reads the instance's instructions, personalization, knowledge scope and prototype offer, sends the plan as a structure and answers rewind; library calls to the instance carry the session as scope; a prototype written in the terminal is saved as a file and named in the transcript; a tool-call fragment without an index continues the last call; the default theme is Moria; dead exports and Hermes leftovers removed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
132 lines
3.7 KiB
JSON
132 lines
3.7 KiB
JSON
{
|
|
"name": "plan_write",
|
|
"scope": "shared",
|
|
"risk": "interact",
|
|
"exclusive": false,
|
|
"block": "plan",
|
|
"purpose": false,
|
|
"aliases": {
|
|
"cli": [
|
|
"todo"
|
|
],
|
|
"llembas": [
|
|
"todo"
|
|
]
|
|
},
|
|
"description": "Write the plan for this work, or replace it: what you found, what it is for, and the work as phases of tasks. The whole plan each time — it replaces the previous one. Use it for anything with three or more steps, from the start, and in plan mode before plan_submit.\n\n- findings: what you learned that shapes the plan, with file:line references where there are any.\n- objectives: what will be true when it is done.\n- phases: the work in order, each a short title and its tasks. One phase is fine for a short job.\n- Ids are given to you in the result (p1, t3, o2…) and are what plan_update takes; never make them up.\n- Keep it short: a task is one sentence. What does not fit is not a task.",
|
|
"parameters": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 120,
|
|
"description": "What the plan is for, in a few words"
|
|
},
|
|
"summary": {
|
|
"type": "string",
|
|
"maxLength": 300,
|
|
"description": "One or two sentences on the approach"
|
|
},
|
|
"findings": {
|
|
"type": "array",
|
|
"maxItems": 20,
|
|
"description": "What was found that shapes the plan",
|
|
"items": {
|
|
"type": "string",
|
|
"maxLength": 300
|
|
}
|
|
},
|
|
"objectives": {
|
|
"type": "array",
|
|
"maxItems": 8,
|
|
"description": "What will be true when the work is done",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 300
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"open",
|
|
"done",
|
|
"dropped"
|
|
],
|
|
"default": "open"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
}
|
|
},
|
|
"phases": {
|
|
"type": "array",
|
|
"maxItems": 8,
|
|
"description": "The work, in order",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"title": {
|
|
"type": "string",
|
|
"maxLength": 120
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"pending",
|
|
"active",
|
|
"done"
|
|
],
|
|
"default": "pending"
|
|
},
|
|
"tasks": {
|
|
"type": "array",
|
|
"maxItems": 12,
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"text": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 300
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"todo",
|
|
"doing",
|
|
"done",
|
|
"dropped"
|
|
],
|
|
"default": "todo"
|
|
},
|
|
"note": {
|
|
"type": "string",
|
|
"maxLength": 300,
|
|
"description": "Why it was dropped, or what came of it"
|
|
}
|
|
},
|
|
"required": [
|
|
"text"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"tasks"
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"title",
|
|
"phases"
|
|
]
|
|
}
|
|
}
|