Plan Constraints
A plan is a handoff artifact: it must be executable by an agent without this
session's context. Every constraint below serves that bar.
Research phase (before drafting)
Use all agentic resources available to diminish uncertainty and ambiguity before
proposing anything:
- Inventory the skills and sub-agents whose domains fit the problem. A migration
in a project with a migration skill uses that skill; a domain with a
specialized agent uses that agent.
- For each component that smells like a standard problem (someone has already
solved it), run the
lib-advisor skill so dependency decisions land in the
plan, not in the diff.
- Research is read-only: parallelize freely across sub-agents when multiple
angles exist.
Skill roster (plan the skills upfront)
The plan explicitly lists which skills will be invoked and at which moment. This
replaces ad-hoc skill discovery during execution — orchestration becomes a
reviewable part of the plan, not an improvisation. Format: skill → phase →
purpose. When the plan will be executed as substantial work, the roster naturally
opens with the task-registration skill before any code is written.
Content constraints
- No code snippets unless an agent without this session's context would struggle
to infer them.
- Always include a summary of files to create and modify: path plus a brief
description of the change.
- When the plan connects multiple modules, components or services, include
contract previews: interface definitions and/or API endpoints that pin down how
they integrate and communicate.
- Order by volatility: lead with the decisions most likely to change on review —
data models, type interfaces, anything user-facing. Bury mechanical
refactoring at the bottom.
Verification
Every phase of the plan declares how its result will be verified. Full computer
use over the project and local resources is granted and encouraged: run the
build, execute tests, spin up local containers, exercise the code — verification
by execution beats verification by reading.
Resource policy for this phase:
- Local resources: unrestricted.
- Infrastructure solutions (Ansible, VPS provisioning, server configuration):
verify against disposable local VMs. Diego's cloud-init setup for Ubuntu qcow2
VMs lives in
~/vms — spin one up, run the solution against it for real, tear
it down. This is the middle ground between dry-runs (--check) and touching
real hosts, and it counts as a local resource: unrestricted.
- Remote resources: write operations are prohibited, no exceptions. Read-only
remote access may be justified case by case — if a verification needs it,
declare it explicitly in the plan so the user approves it.
- If the right verification method is ambiguous in the current context, do not
pick silently: state the candidate method and mark it as ambiguous — written to
be contradicted, same as the Problem section.
Checklist before presenting
- Does the plan open with the problem as understood, stated so the user can
correct a wrong reading of the problem space before evaluating the solution?
- Does the plan include the skill roster, with each skill mapped to its moment?
- Could an agent without this session's context execute it without further
clarification — especially the module integration and communication parts?
- Is the files summary present, with paths and brief descriptions?
- Are dependency decisions resolved (lib chosen or manual-with-reason), not
deferred to implementation?
- Does every phase declare its verification method — local-only, with any
read-only remote access explicitly declared, and ambiguous methods marked for
contradiction?
If any answer is no, fix the plan before presenting it.
Plan template
Use this structure for every plan; omit a section only when it genuinely does not
apply (e.g. Integration contracts in a single-module change):
# Plan: <title>
## Problem
<the problem space as understood: what hurts today, why, and its boundaries.
Written to be contradicted — if this understanding is wrong, the user corrects it
here, before any solution builds on it>
## Objective
<one paragraph: what will exist after this plan that does not exist now>
## Key decisions (most likely to change on review)
<data models, type interfaces, user-facing behavior — the parts to react to>
## Skill roster
| Skill | Phase | Purpose |
|---|---|---|
## Dependencies
<each standard problem: chosen lib + one-line justification, or manual + reason>
## Integration contracts
<interface definitions, API endpoints, contract previews between modules>
## Files
| Path | Action | Description |
|---|---|---|
## Phases
<the breakdown, mechanical work last>
## Verification
<per phase: how the result is verified by execution (build, tests, local run).
Local resources unrestricted; remote writes prohibited; read-only remote access,
if needed, declared here for approval. Ambiguous methods marked as such — written
to be contradicted>
## Assumptions and open unknowns
<what was assumed, what remains ambiguous and would change the plan if resolved
differently>
1---2name: plan-constraints3description: Constraints, structure and template for implementation plans. Invoke immediately upon entering plan mode, before drafting any plan — and also when reviewing an existing plan, re-planning mid-task after a scope change, or when the user asks for an implementation plan, spec, or breakdown in any form. The plan is not ready to present until it satisfies this skill's checklist.4---56# Plan Constraints78A plan is a handoff artifact: it must be executable by an agent without this9session's context. Every constraint below serves that bar.1011## Research phase (before drafting)1213Use all agentic resources available to diminish uncertainty and ambiguity before14proposing anything:1516- Inventory the skills and sub-agents whose domains fit the problem. A migration17 in a project with a migration skill uses that skill; a domain with a18 specialized agent uses that agent.19- For each component that smells like a standard problem (someone has already20 solved it), run the `lib-advisor` skill so dependency decisions land in the21 plan, not in the diff.22- Research is read-only: parallelize freely across sub-agents when multiple23 angles exist.2425## Skill roster (plan the skills upfront)2627The plan explicitly lists which skills will be invoked and at which moment. This28replaces ad-hoc skill discovery during execution — orchestration becomes a29reviewable part of the plan, not an improvisation. Format: skill → phase →30purpose. When the plan will be executed as substantial work, the roster naturally31opens with the task-registration skill before any code is written.3233## Content constraints3435- No code snippets unless an agent without this session's context would struggle36 to infer them.37- Always include a summary of files to create and modify: path plus a brief38 description of the change.39- When the plan connects multiple modules, components or services, include40 contract previews: interface definitions and/or API endpoints that pin down how41 they integrate and communicate.42- Order by volatility: lead with the decisions most likely to change on review —43 data models, type interfaces, anything user-facing. Bury mechanical44 refactoring at the bottom.4546## Verification4748Every phase of the plan declares how its result will be verified. Full computer49use over the project and local resources is granted and encouraged: run the50build, execute tests, spin up local containers, exercise the code — verification51by execution beats verification by reading.5253Resource policy for this phase:5455- **Local resources**: unrestricted.56- **Infrastructure solutions** (Ansible, VPS provisioning, server configuration):57 verify against disposable local VMs. Diego's cloud-init setup for Ubuntu qcow258 VMs lives in `~/vms` — spin one up, run the solution against it for real, tear59 it down. This is the middle ground between dry-runs (`--check`) and touching60 real hosts, and it counts as a local resource: unrestricted.61- **Remote resources**: write operations are prohibited, no exceptions. Read-only62 remote access may be justified case by case — if a verification needs it,63 declare it explicitly in the plan so the user approves it.64- If the right verification method is ambiguous in the current context, do not65 pick silently: state the candidate method and mark it as ambiguous — written to66 be contradicted, same as the Problem section.6768## Checklist before presenting6970- Does the plan open with the problem as understood, stated so the user can71 correct a wrong reading of the problem space before evaluating the solution?72- Does the plan include the skill roster, with each skill mapped to its moment?73- Could an agent without this session's context execute it without further74 clarification — especially the module integration and communication parts?75- Is the files summary present, with paths and brief descriptions?76- Are dependency decisions resolved (lib chosen or manual-with-reason), not77 deferred to implementation?78- Does every phase declare its verification method — local-only, with any79 read-only remote access explicitly declared, and ambiguous methods marked for80 contradiction?8182If any answer is no, fix the plan before presenting it.8384## Plan template8586Use this structure for every plan; omit a section only when it genuinely does not87apply (e.g. Integration contracts in a single-module change):8889```markdown90# Plan: <title>9192## Problem93<the problem space as understood: what hurts today, why, and its boundaries.94Written to be contradicted — if this understanding is wrong, the user corrects it95here, before any solution builds on it>9697## Objective98<one paragraph: what will exist after this plan that does not exist now>99100## Key decisions (most likely to change on review)101<data models, type interfaces, user-facing behavior — the parts to react to>102103## Skill roster104| Skill | Phase | Purpose |105|---|---|---|106107## Dependencies108<each standard problem: chosen lib + one-line justification, or manual + reason>109110## Integration contracts111<interface definitions, API endpoints, contract previews between modules>112113## Files114| Path | Action | Description |115|---|---|---|116117## Phases118<the breakdown, mechanical work last>119120## Verification121<per phase: how the result is verified by execution (build, tests, local run).122Local resources unrestricted; remote writes prohibited; read-only remote access,123if needed, declared here for approval. Ambiguous methods marked as such — written124to be contradicted>125126## Assumptions and open unknowns127<what was assumed, what remains ambiguous and would change the plan if resolved128differently>129```