# Focus

The **focus** is what you want AM to work on, in plain English. It's the single
most important input to a run's quality.

## Write a good focus

- **Bounded.** One small, shippable outcome — "fix failing tests in the auth
  module", not "modernise the codebase".
- **Verifiable.** Pair it with a [verify command](/docs/verification-gate) that
  passes only when the work is correct.
- **Concrete.** Name the area, file, or behaviour where you can.

A vague focus ("improve the code") tends to make agents over‑explore and commit
nothing. If you're unsure how to phrase it, start from a [playbook](/docs/playbooks)
— they ship procedural, battle‑tested focuses.

## Good vs vague

| Vague | Better |
|---|---|
| improve quality | add a unit test for the untested `parseConfig()` function |
| update deps | bump one outdated minor/patch dependency safely |
| fix the docs | expand the sparse README "Configuration" section |

## Procedural focuses

The best focuses read like a short numbered recipe — orient briefly, do one
thing, commit. Playbooks use this style, e.g.:

```
Add ONE new plugin that doesn't exist yet.
1) Skim PLUGIN_STANDARDS.md and one existing plugin (briefly).
2) Pick a small, useful plugin not already present.
3) Implement it to the standard. 4) Add a minimal test. 5) Commit.
Keep it small; don't over‑explore; commit by ~your 8th tool call.
```

## Focus vs objective

- **Focus** = what to do *this run*.
- **[Objective](/docs/objectives)** = a persistent multi‑run goal that AM keeps
  working until an acceptance check passes.

## Priority chain (when an objective ledger exists)

When an objective is **decomposed** into a [progress ledger](/docs/objectives#progress-ledger-optional), the priority chain is:

1. **Ledger sub-task** → overrides focus with the task title + verify command
2. **Repo focus** → used when no ledger task is pending
3. **Empty focus** → agent works without a specific directive

**What this means:** If you have a decomposed ledger with pending tasks, your repo focus is ignored for each run until all ledger tasks are complete. The scheduler picks the next open sub-task as the focus for that run. Once the ledger is empty (all tasks done), the repo focus is used again.

## Related

- [Playbooks](/docs/playbooks) · [Objectives](/docs/objectives)
- [The Verification Gate](/docs/verification-gate)
