Install
openclaw skills install @ivangdavila/planPlans tasks before execution: decides when to plan vs act directly, sizes plan depth to risk, and structures steps, estimates, and rollbacks. Use when work has multiple steps, dependencies, or irreversible actions (deploys, migrations, deletions, sending anything external), when success criteria are unclear or an estimate would be a guess, when execution drifts off plan or a one-shot attempt failed, when resuming or handing off multi-day work, or when the user asks to plan, scope, break down, or estimate a task. Not for personal productivity systems or time blocking (that is productivity).
openclaw skills install @ivangdavila/planUser preferences, the outcome log, and active plans live in ~/Clawic/data/plan/ (see setup.md on first use). If you have data at an old location (~/plan/ or ~/clawic/plan/), move it to ~/Clawic/data/plan/.
productivityprojectsModes: act-as (plan your own execution — the default) and advise (draft a plan the user will execute); both use the same depth rules. Always make the risk decision first, even when the answer is "no plan needed".
| Situation | Do this |
|---|---|
| Done before successfully, fully reversible | Execute directly (L0) |
Single deliverable, ≤30 min (quick_task_minutes), reversible | Think through steps, no doc (L1) |
| Multi-step, >30 min, or any irreversible step | Bullet plan, share with human (L2) |
| Dependencies across components, or spans >1 day | Milestone plan with checkpoints (L3) → long-horizon.md |
| High stakes AND novel task type | Full plan, human validation before step 1 (L4) → approval.md |
| Estimate high/low ratio >3x | Spike first → estimation.md, strategies.md |
| A step has no attachable done-check | Convert to decision doc or spike → decomposition.md |
| Execution drifting from the plan | 2-consecutive-deviation trigger → replanning.md |
| Step blocked, or scope added mid-flight | Block and bolt-on protocols → replanning.md |
| Human approves instantly, or "just do it" | → approval.md |
| Resuming yesterday's (or last week's) plan | Resume protocol → long-horizon.md |
| Anything else / unsure | Plan at L2 — the cost is asymmetric (Core Rule 8) |
Depth on demand: decomposition.md steps, altitude, done-checks · estimation.md ranges, spikes, calibration · risk.md irreversibility, rollback, blast radius · strategies.md sequential, parallel, iterative, spike, checkpoint · replanning.md deviations, blocks, abandonment · approval.md validation, checkpoints, scope changes · long-horizon.md multi-day, resume, handoff · outcomes.md logging and learning · setup.md first use.
risk.md).risk.md.decomposition.md.estimation.md.long-horizon.md).Before executing, scan for signals:
| Signal | One-shot OK | Plan needed |
|---|---|---|
| Task done before successfully | ✅ | |
| Clear single deliverable | ✅ | |
| Reversible if wrong | ✅ | |
| Multiple components | ✅ | |
| Dependencies between steps | ✅ | |
| Any irreversible step | ✅ | |
| Touches production data or external users | ✅ | |
| Ambiguous success criteria | ✅ | |
Estimated > quick_task_minutes of work | ✅ |
Reversible vs recoverable — the distinction that decides the column: reversible means undo restores the prior state (git revert); recoverable means a good state is reachable at a cost (restore last night's backup, lose a day of writes). Recoverable-at-cost counts as "plan needed", not "reversible" — full taxonomy and recovery-window decay in risk.md.
| Level | Trigger | Format |
|---|---|---|
| L0 | Done before successfully, fully reversible | Execute directly |
| L1 | Single deliverable, ≤ quick_task_minutes, reversible | Think through steps; no doc |
| L2 | Multi-step, or > quick_task_minutes, or any irreversible step | Bullet plan shared with the human |
| L3 | Dependencies between components, or spans >1 day | Milestone plan with checkpoints; persisted (long-horizon.md) |
| L4 | High stakes AND novel (this task type never done) | Full plan; human validation before step 1 (approval.md) |
Depth = highest single signal (Core Rule 2). Per-type learned defaults override this table once the outcome log has evidence (outcomes.md, Current Defaults).
📋 Plan: [goal]
Why planned: [the signal that triggered planning — one line]
Steps:
1. [step] — [observable output that proves it is done]
2. [step] — [observable output]
3. [step] — [observable output]
Riskiest assumption: [what invalidates the approach] — tested in step [N]
Irreversible steps: [numbers] — rollback: [how, tested in step M] (or "none" + mitigation)
Estimate: [low–high range] — high end fires if [driver]
Validation: [none | human approves before step N]
[The specific question, not "Ready to start?" — approval.md]
Rules that make the format work:
decomposition.md).risk.md, Rollback Design).decomposition.md, The Steps Nobody Writes).approval.md.replanning.md.outcomes.md).Learning rates are asymmetric because evidence costs are asymmetric:
always_validate never auto-execute.Per-type state lives in the Current Defaults block of ~/Clawic/data/plan/outcomes.md:
### Auto-Execute (validation waived by human)
- refactor/small: L2 [streak: 7]
### Validate First
- migration/data: L4 [always — in always_validate]
### Learning
- api/integration: L2, streak 3/5 toward auto-execute proposal
Logging: append a record after every L2+ task; L0/L1 only when they failed (a failed "trivial" task is evidence the type needs promotion). Strategy verdicts need a why — "Parallel → merge conflicts" teaches; "Parallel → didn't work" does not. Record format, last-5 analysis, and review cadence: outcomes.md.
Before sharing a plan (L2+), verify:
always_validate types have validation on?User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/plan/config.yaml.
| Variable | Type | Default | Effect |
|---|---|---|---|
| quick_task_minutes | number (minutes) | 30 | Sets the L1/L2 boundary in the depth table and the "estimated >" signal in The Planning Decision |
| plan_artifact | chat | file | chat | Where L2 plans live; file writes them to ~/Clawic/data/plan/active/ like L3+ (long-horizon.md) |
| always_validate | list of task types | migration/, external-send/ | Types where human validation never demotes and auto-execute is never proposed, regardless of streaks |
| stale_after_days | number (days) | 7 | Resuming a plan idle longer than this re-validates the riskiest assumption first; 4x this forces a full replan (long-horizon.md) |
Preference areas to record as the user reveals them:
outcomes.md triggersapproval.md conduct| Trap | Why it fails | Do instead |
|---|---|---|
| Planning as procrastination: detailing steps past the first unknown | That detail is speculation; you will rewrite it after the unknown resolves | Steps to the first checkpoint, milestones beyond |
| Steps written as activities ("investigate X") | No observable output means no done-check; plans drift silently | Every step names the artifact or check that proves completion (decomposition.md) |
| Uniform depth for every task | L4 on trivial work trains the human to skim-approve; L1 on novel work ships failures | Depth table + learned per-type defaults |
| Sticking to a plan reality has contradicted | A plan is a forecast, not a commitment; adherence becomes sunk cost | 2-consecutive-deviation replan trigger (replanning.md) |
| Point estimates | Read as commitments and hide uncertainty | Range with a named high-end driver; ratio >3x → spike first |
| Per-step buffers | Silently consumed; they hide the true range | One plan-level range — the low-high gap IS the buffer (estimation.md) |
| Skipping the unwritten steps: rollback, restore-verify, post-change verification, comms | Plans fail disproportionately on steps that were never written | Hidden-steps checklist at plan time (decomposition.md) |
| Executing beyond approved scope without saying so | Approval covers the written plan only; burned trust raises validation on everything after | Announce deviations at the deviation; re-approve at L3+ (approval.md) |
| Treating silence as approval | An unread validation request protects nobody | Reversible prep only; never cross an irreversible boundary on silence (approval.md) |
| Resuming a stale plan blindly | The world moved: dependencies, backups, assumptions | Resume protocol; re-validate past stale_after_days (long-horizon.md) |
| Logging only failures | Success streaks are what earn auto-execute; unlogged successes mean validating forever | Log every L2+ outcome, success included |
More Clawic skills, get them at https://clawic.com/skills/plan (install if the user confirms):
decide — choose between options inside a plan stepescalate — ask-vs-act boundaries beyond planning scopeself-improving — general execution lessons; plan keeps only planning lessonsmemory — long-term context and user continuity beyond planning recordsproductivity — personal productivity systems, time blocking, and reviews; plan covers executing a single taskPart of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/plan.