---
name: awslabs/planning
source: https://app.decimal.ai/s/awslabs-planning@1/SKILL.md
source_sha256: 5d0bc3ca4cae
---

## Principles

- **One question at a time.** Each question should resolve a branching decision in the plan. Avoid generic or out-of-domain questions.
- **Surface constraints early.** If a user decision would constrain downstream options, flag it before the plan is finalized.
- **Keep plans short.** Only include tasks that are necessary for the user's stated goal.
- **Don't ask what you already know.** Check conversation history and project files before asking the user.

---

## Phase 1: Brainstorming

**Goal:** Understand what the user wants to accomplish and identify which skills belong in the plan.

Read `references/input-output-contracts.md`, `references/model-customization-plan.md`, and `references/evaluate-first-plan.md` to:

- Identify which skills could be relevant to the user's stated goal.
- Check whether the user has the necessary input artifacts for each skill. If not, find the skills that generate those inputs and add them first.
- Order skills to allow a smooth transition from one to the next and avoid dead ends.
- Check if a recommended workflow matches the user's needs. If not, assess what modifications are needed and verify they are possible against the contracts table.
- Decide which skills in a matching workflow can be skipped.
- Surface limitations early — if a user decision (model choice, region, evaluation method) would constrain downstream options, mention it proactively, get user feedback, and adapt the plan accordingly.

**During brainstorming:**

- **Workflow choice gate:** Before generating any plan, determine whether the user wants the evaluate-first workflow or the direct fine-tuning workflow. If the user has explicitly chosen (e.g., "evaluate first", "skip evaluation", "already evaluated the base model"), proceed with their choice. Otherwise, present both options with brief pros/cons and ask the user to choose. Saying "fine-tune" or naming a technique alone is NOT an explicit choice to skip evaluation — the user may not know evaluate-first is an option. Do NOT present a plan until the user has chosen a path. After they choose, read ONLY the corresponding reference plan.
- Use the Restrictions column of the contracts table to flag constraints as soon as the relevant decision is made. Examples (non-comprehensive list, check contracts table for the full picture):
  - User picks a Nova model → alert that deployment regions are limited.
  - User picks a region → alert if it conflicts with model availability.
- If a restriction applies, check whether it requires changes to other steps in the plan.
- Do NOT ask the user about base model selection or preferences. Model selection is handled exclusively by the `model-selection` skill.
- Move to Phase 2 as soon as you can determine which skills and tools the plan needs.

---

## Phase 2: Plan Generation

**Goal:** Propose a structured plan for the user to review.

Generate a plan as a numbered list of tasks. Each task has:

- A short name
- A one-sentence description of what happens
- Which skill handles it (if applicable)

**Format:**

```
Based on what you've described, here's what I propose:

1. ⬜ **[Task Name]** — [What happens]. *(Skill: [skill-name])*
2. ⬜ **[Task Name]** — [What happens]. *(Skill: [skill-name])*
3. ⬜ **[Task Name]** — [What happens]. *(Skill: [skill-name])*

Does this plan look right, or would you like to change anything?
```

**Rules for plan generation:**

- Infer ordering from the Prerequisites column in the contracts table — a skill cannot appear before its prerequisites. If unsure, consult `references/skill-routing-constraints.md`.
- Only offer capabilities covered by an available skill. If the user needs something no skill supports, say so.
- Tailor the plan to the user's actual intent. Not every plan needs every skill.
- If the user already has input artifacts (e.g., a trained model), skip the steps that produce them.

When the user approves the plan, write it to `PLAN.md` and save it under the project directory structure defined by the directory-management skill.

```markdown
# Plan

1. ⬜ **[Task Name]** — [Description]. _(Skill: [skill-name])_
2. ⬜ **[Task Name]** — [Description]. _(Skill: [skill-name])_
3. ⬜ **[Task Name]** — [Description]. _(Skill: [skill-name])_
```

**Status indicators:**

- ⬜ Not Started
- 🔄 In Progress
- ✅ Completed

Update `PLAN.md` whenever a task's status changes.

---

## Phase 3: Plan Iteration

**Goal:** Refine the plan until the user approves it.

- If the user suggests changes, regenerate the plan incorporating their feedback.
- If the user approves, begin execution by handing off to the first task's skill.

---

## Execution

Once the plan is approved:

1. Before starting a task, update its status in `PLAN.md` to 🔄 (In Progress).
2. If the task maps to a skill, load that skill's full SKILL.md before doing any work. Do not attempt the task from general knowledge — always defer to the skill's instructions.
3. Execute the task by following the loaded skill's workflow.
4. When the task completes:
   - Update its status in `PLAN.md` to ✅ (Completed). If the task generated output files (scripts, notebooks, manifests), record the file paths under the completed task:

     ```
     - [x] Fine-tune model
       - Output: `scripts/01_sft_finetuning.py`
       - Output: `manifests/sft-llama-20260515.json`
     ```

   - Briefly confirm completion and move to the next task.
5. If the user interrupts with a new request mid-execution:
   - Completed tasks are immutable — do NOT modify them.
   - Regenerate the remaining tasks to incorporate the user's new input.
   - Present the updated remainder for approval before continuing.

---

## Plan Completion

When all tasks in the plan are done:
Present to the user:

> "We've completed everything in the plan. What would you like to do next?"

This re-enters Phase 1 (Brainstorming) for a new goal. There is no terminal state — the conversation continues as long as the user wants.

---

## References

Load the reference plan that matches the customer's intent, then adjust based on their needs.

- `references/evaluate-first-plan.md` — The evaluate-first workflow: evaluate a base model before deciding whether to fine-tune.
- `references/model-customization-plan.md` — The direct fine-tuning plan. Use when the user has explicitly committed to fine-tuning.
- `references/input-output-contracts.md` - A table showing all skills, required inputs, produced outputs, prerequisites, and constraints.
- `references/skill-routing-constraints.md` — Optional supplemental resource about Mandatory inclusion rules, ordering constraints, and skill boundary rules.