Use before committing a bug fix or improvement, when a fix is non-trivial, or when the same area has been patched before. Operationalizes FR-20 — zoom out to root cause before applying a narrow patch. Do NOT use for trivial typo/format edits, for net-new feature work with no prior code (nothing to zoom out from), or as a substitute for reproduce-before-fix (FR-10 / validation-and-qa).
Installs into .claude/skills of the current project.
Are you the author of Zoom Out?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/fusebase-dev-zoom-out)
---
name: zoom-out
description: Use before committing a bug fix or improvement, when a fix is non-trivial, or when the same area has been patched before. Operationalizes FR-20 — zoom out to root cause before applying a narrow patch. Do NOT use for trivial typo/format edits, for net-new feature work with no prior code (nothing to zoom out from), or as a substitute for reproduce-before-fix (FR-10 / validation-and-qa).
source_inspiration: "Original FR-20 procedure plus attributed Karpathy guidelines"
license_status: "original-and-MIT"
fusebase_flow_version: 3.30.8
risk_level: low
invocation: automatic
expected_outputs:
- a zoom-out check result (root-cause vs symptom; layer; consistency; drift risk)
- either a root-cause fix plan, or a justified narrow-patch decision
- escalation question to operator when the bigger picture is ambiguous
related_workflows:
- eight-phase-flow.md
- verification-gate.md
hook_dependencies:
- none
---
# Zoom Out (FR-20)
> **Style:** Mode-B-lite. Concise, structured, AI-consumable.
## Purpose
Stop patch-myopia. Before fixing a bug or making an improvement, zoom out and confirm the change addresses the root cause and stays consistent with the bigger picture — instead of stacking a narrow patch that creates drift elsewhere. Operationalizes always-on rule FR-20.
## When to invoke
- About to commit a bug fix or behavior change that is non-trivial.
- The same file / function / area has been patched before (repeat-patch smell).
- A fix touches shared logic, data shape, an interface, or cross-app behavior.
- Operator says "fix X", "why does X keep breaking", "patch", "quick fix".
- Active phase is Implement or a post-gate fix.
## Do not invoke when
- Trivial typo / formatting / comment-only edit.
- Pure net-new feature with no existing code to reconcile against.
- The work is reproduce-before-fix itself (that is FR-10 / `validation-and-qa`) — run that first, then zoom out on the fix design.
## Required inputs
| Input | Where it lives | If missing |
|---|---|---|
| The observed symptom / bug | operator report, logs, test output | run reproduce-before-fix (FR-10) first |
| Spec / decisions (if under a ticket) | `docs/specs/<slug>/` | proceed; note no spec to check against |
| North Star (if present) | `docs/north-star.md` | skip the North-Star check silently (absent-by-default) |
## Procedure
Before step 1, read `flow-skills/zoom-out/references/karpathy-guidelines.md` unless its exact body is already in context; apply it through the fix plan.
1. **Name the symptom vs the cause.** State the visible failure, then the underlying cause. If you can only name the symptom, investigate before patching.
2. **Layer check.** Is this the right place to fix it? (UI symptom caused by a data/API bug → fix the source, not the surface.)
3. **Consistency check.** Does the fix contradict the spec, locked decisions, or `docs/north-star.md` (if present)? If yes → stop, raise it.
4. **Drift check.** Will this patch create inconsistency elsewhere (other apps, shared logic, future edits)? Prefer the change that reduces total inconsistency.
5. **Repeat-patch check.** Has this area been patched before? Two+ patches in one spot = treat as a design problem, not another patch.
6. **Decide — and emit the Required output block below.** Either (a) produce a root-cause fix plan, or (b) justify a deliberate narrow patch ("symptom-level fix is correct here because …"). Never an unexamined patch.
7. **Ambiguous bigger picture →** apply `flow-skills/zoom-out/references/karpathy-guidelines.md` §1 in chat text (FR-19); route unresolved root-cause/design conflicts through § Escalation path.
## Required output — zoom-out verdict (5 lines)
Emit before the fix lands — in chat, and verbatim into the gate/handoff note when one is written. The block is the checkable evidence FR-20 ran; a zoom-out claim without it is unverifiable.
```
Symptom: <visible failure, one clause>
Root cause: <underlying cause, one clause — "unknown" forces investigation (FR-10), not a patch>
Layer: <UI | API | data | shared logic | config> — fixing there? <yes | no + why>
Drift risk: <none | what becomes inconsistent elsewhere>
Decision: <root-cause fix | justified narrow patch because <reason> | escalate (design problem / Architect)>
```
## Worked example
Bug: an invoice total is off by 100×; `ui/totals.ts` already carries one rounding patch.
1. Symptom: wrong total · cause: the API mapper returns cents, the UI assumes units.
2–4. Layer = API mapper, not UI; a UI-only fix leaves the CSV export wrong (drift).
5. Prior patch in the same area → fix the source this time.
6. Verdict `Decision: root-cause fix` in the mapper; the edit stays surgical per `flow-skills/zoom-out/references/karpathy-guidelines.md` §3.
7. If the correct unit is a product question, ask it per §1.
Output: the 5-line verdict block in chat, then the fix.
## Output artifacts
| Artifact | Path or location | Mode |
|---|---|---|
| Zoom-out verdict block (5 lines, above) | chat (Mode A) or gate/handoff note | Mode A / Mode-B-lite |
| Root-cause fix plan or justified-patch note | ticket artifact when applicable | Mode B |
## Failure cases
| Failure mode | Detection | Response |
|---|---|---|
| Only the symptom is understood | cannot state root cause | investigate / reproduce before patching |
| Fix contradicts spec/decisions/North Star | step 3 finds conflict | stop; surface to operator (FR-11/FR-19) |
| Third patch to same area | step 5 | escalate to a design/refactor decision, not another patch |
## Escalation path
- Root cause spans >10 files / cross-cutting → Architect escalation (`workflows/architect-escalation.md`).
- Recurring problem → capture in `docs/problem-catalog/` (knowledge-curation).
## Anti-patterns
- Do not stack patch-on-patch to silence a symptom.
- Do not fix at the wrong layer because it is faster.
- Do not skip this for "small" fixes that touch shared logic.
- Do not replace reproduce-before-fix (FR-10) — complement it.
## Clean-room note
The FR-20 procedure in this SKILL.md is original Fusebase Flow content, designed after reviewing public AI coding workflow patterns. `references/karpathy-guidelines.md` is the attributed MIT import; provenance: `docs/source-map.md#karpathy-guidelines`.