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 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 — 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 = 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, the priority chain is:
- Ledger sub-task → overrides focus with the task title + verify command
- Repo focus → used when no ledger task is pending
- 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.