Files
LLeMbas-CLI/harness/tools/plan_write.json
T
HomerandClaude Fable 5.1 837f38c744 Harness spec 1.1.0: one plan, prototypes and the library shared; the CLI implements it
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>
2026-10-18 04:02:12 +02:00

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"
]
}
}