Blind Spots
An agent can take a change from idea to merge-ready without the human ever
building a mental model of it. This skill finds what the human does not know
about one specific change — before it gets built, or after an agent built it.
It teaches. It does not review, verify, plan, or approve.
When To Use
Invoke when the user explicitly asks:
- Scope mode — before implementation. "Do a blind spot pass on this." "What
am I not seeing here?" "What is this change going to touch?"
- Quiz mode — after implementation, usually before merge. "Quiz me on this
change." "Make sure I actually understand what you just built."
The two modes are independent. Neither requires the other.
Boundaries
- Optional and non-gating. Never volunteer a quiz. Never insert a teaching
step into an implementation, review, or merge request the user did not ask for.
Ordinary work does not acquire a ritual.
- No score, no verdict. No numeric score, no pass/fail, no merge approval, no
claim that the implementation is correct. The user's answers are evidence about
their mental model, never about the code.
- One change, not the codebase. If the requested subject is too broad to
explain coherently, narrow the learning target with the user. Do not attempt a
codebase survey.
- Chat-only by default. Write no file unless the user explicitly asks for a
durable artifact.
- Evidence or silence. Never invent a system relationship, a call path, or a
quiz answer. If the repository does not show it, say so.
- Do not silently invoke sibling skills, and never present this as a substitute
for their results. See Sibling skills.
Calibrate First
Both modes open by finding out where the user actually stands. An explanation
pitched at the wrong level is wasted: too basic and it insults, too advanced and
it lands on nothing.
Ask, in one short question, some version of: what do you already know about this
area, and what are you unsure of? Then take the answer at face value.
- Assume competence by default. A user who says they know the codebase does not
need fundamentals re-explained — go straight to what is genuinely non-obvious.
- Blind spots are not ignorance. A strong engineer's unknowns are usually
specific: a subsystem they have never touched, a library's internals, an
invariant nobody wrote down. They are not gaps in general knowledge.
- If the user does not answer, infer from how they framed the request and state
what you assumed, so they can correct it.
Scope Mode
Goal: surface the user's unknowns about a proposed change, and leave them with a
mental model they can steer with.
Workflow
- Calibrate. Establish what the user already knows before explaining
anything.
- Fix the target. Confirm which change is being scoped. If the request is
broader than one coherent change, propose a narrower learning target and get
agreement.
- Gather evidence. Locate the entry point and the boundaries the change sits
between. Trace the call or data path that carries the behavior in question —
not every path.
- Separate current from proposed. Current repository evidence is
authoritative for how the system behaves today. The user's approved request
is authoritative for what is intended. Neither overrides the other silently.
When they conflict, or an existing artifact looks stale, say so and name which
source you trust for which claim.
- Map it, calibrated. Cover the entry point and boundaries, the call or data
path that matters, and the likely blast radius — what else reads, writes, or
depends on this.
- Name the unknowns. This is the point of the mode, not an afterthought.
Separate them honestly:
- Known unknowns — what the user already flagged as uncertain.
- Unknown unknowns — what they did not ask about and would not think to:
the invariant nobody wrote down, the caller nobody remembers, the failure
mode this area is historically prone to, the thing that will look obvious in
hindsight.
- Unknowable from here — what the repository simply does not say. Name it
as such rather than guessing.
- Stop at understanding. Do not choose an architecture, define acceptance
criteria, or prescribe implementation tasks. Route those to the sibling that
owns them.
Quiz Mode
Goal: the user ends up actually understanding a change that already exists.
The quiz is not a memory test. The user is usually quizzing themselves on work an
agent did while they were not watching closely — cold-testing recall of something
they never saw teaches nothing. So brief first, then quiz on what the briefing
did not answer.
Workflow
Resolve the change target. Working tree, staged changes, a branch, a
commit, or a pull request. If no target is identifiable, ask for one.
Never quiz against a change you have not read.
Read the change and its evidence. The actual diff, plus whatever tests, CI
results, or review exist. Know the answers before asking the questions.
Calibrate. One short question about what the user already knows here. This
sets the briefing's depth and the quiz's difficulty.
Brief the user. A compact walkthrough of the change: what changed, why,
where it plugs into the existing system, and what the tests cover. This is the
shared ground the quiz stands on.
The briefing states what was done. It must not pre-answer the questions,
which probe what follows from it. Do not spell out the failure modes, the
limits of the tests, or the residual risks in the briefing — those are the
quiz.
Propose a bounded topic set, sized to the change's risk and surface area.
Let the user adjust it. This is what makes the quiz end.
Quiz, one question at a time.
- At most one substantive question per turn. Ask it, then stop and
wait. Do not ask a second, hint at the answer, or answer it yourself in
the same turn.
- After each answer — including "I don't know", which is legitimate and
cost-free — name what was right, then correct or extend the model with
concrete repository evidence (file, line, symbol). Then continue at a
depth that matches how the user is doing.
Close with a recap when the topic set is covered, or the moment the user
asks to stop.
What To Ask About
Ask about consequences, not contents — the briefing already gave them the
contents.
- Intent — why this approach, and what was rejected?
- The seam — why does it plug in there, and what breaks if it moved?
- Failure modes — bad input, dependency down, concurrent call, partial write.
- What the tests do not prove — usually more interesting than what they do.
- Residual risk — operational, compatibility, migration, rollback.
Never ask trivia: filenames, syntax, line numbers, or anything answerable without
understanding the change.
Output Contract
Both modes deliver prose in chat and write no file, unless the user explicitly
asks for a durable artifact.
Scope mode leaves the user able to say where the change lands, what it can
break, and — the point of the mode — what they did not know they did not know.
Quiz mode ends with a recap naming what the user appears to understand well
and what is worth revisiting. Nothing else: no score, no pass/fail label, no
correctness claim about the code, no merge verdict.
User Control
The user runs this, not you. At any point they may ask for more or less depth,
skip a topic, pause, or stop. Honor it immediately and treat none of it as
failure — a user who stops has not "failed the quiz", because there is no quiz to
fail.
Verification
The workflow is working when:
- It activated because the user asked, not because you offered.
- Depth matches what the user said they know — no fundamentals lecture to an
expert, no jargon dump on a newcomer.
- Every substantive claim is traceable to the repository, marked as inference, or
admitted as unknown.
- Scope mode names unknown unknowns the user did not ask about, and stops short
of becoming a plan.
- The briefing precedes the questions, and the questions probe what the briefing
left open rather than what it already said.
- Quiz turns hold the line: one question, then a wait; evidence-backed teaching
after each answer.
- The session ends with a recap and no score, verdict, or file.
Resources
commands/understand-change.md — /understand-change, the scope-mode wrapper
commands/quiz-change.md — /quiz-change, the quiz-mode wrapper
evals/trigger-cases.json — routing fixture for this skill and its siblings
evals/behavioral-scenarios.md — frozen conversational scenarios and the
binary assertions that define acceptance
Sibling skills
This skill sits beside the change lifecycle, not inside it. It consumes the
outputs of these skills and hands work back to them; it replaces none of them.
brainstorming — deciding what to build when the direction is unclear
write-spec — pinning the falsifiable contract
write-plan — sequencing the build. It maps the code to pick a seam; this maps
the code to teach a human. Same territory, different reader.
first-principles — choosing between architectural approaches
diagnose — finding the cause of broken behavior
local-review — finding defects in a diff
verify-before-complete — proving a completion claim with evidence
If the user wants any of those, say which skill owns it and why, in one sentence.
1---2name: blind-spots3description: Find the gaps in a user's understanding of a code change — before it gets built, or after an agent has built it. Two modes — scope maps blast radius and unknown unknowns; quiz questions the user on a diff an agent just made. Use when the user asks for a blind spot pass, wants the scope of a proposed change, or asks to be quizzed on a change. Triggers on "blind spot pass", "find my blind spots", "unknown unknowns", "help me understand this change", "quiz me on this change".4---56# Blind Spots78An agent can take a change from idea to merge-ready without the human ever9building a mental model of it. This skill finds what the human does not know10about **one specific change** — before it gets built, or after an agent built it.1112It teaches. It does not review, verify, plan, or approve.1314## When To Use1516Invoke when the user explicitly asks:1718- **Scope mode** — before implementation. "Do a blind spot pass on this." "What19 am I not seeing here?" "What is this change going to touch?"20- **Quiz mode** — after implementation, usually before merge. "Quiz me on this21 change." "Make sure I actually understand what you just built."2223The two modes are independent. Neither requires the other.2425## Boundaries2627- **Optional and non-gating.** Never volunteer a quiz. Never insert a teaching28 step into an implementation, review, or merge request the user did not ask for.29 Ordinary work does not acquire a ritual.30- **No score, no verdict.** No numeric score, no pass/fail, no merge approval, no31 claim that the implementation is correct. The user's answers are evidence about32 *their* mental model, never about the code.33- **One change, not the codebase.** If the requested subject is too broad to34 explain coherently, narrow the learning target with the user. Do not attempt a35 codebase survey.36- **Chat-only by default.** Write no file unless the user explicitly asks for a37 durable artifact.38- **Evidence or silence.** Never invent a system relationship, a call path, or a39 quiz answer. If the repository does not show it, say so.40- Do not silently invoke sibling skills, and never present this as a substitute41 for their results. See [Sibling skills](#sibling-skills).4243## Calibrate First4445**Both modes open by finding out where the user actually stands.** An explanation46pitched at the wrong level is wasted: too basic and it insults, too advanced and47it lands on nothing.4849Ask, in one short question, some version of: *what do you already know about this50area, and what are you unsure of?* Then take the answer at face value.5152- Assume competence by default. A user who says they know the codebase does not53 need fundamentals re-explained — go straight to what is genuinely non-obvious.54- Blind spots are not ignorance. A strong engineer's unknowns are usually55 specific: a subsystem they have never touched, a library's internals, an56 invariant nobody wrote down. They are not gaps in general knowledge.57- If the user does not answer, infer from how they framed the request and state58 what you assumed, so they can correct it.5960## Scope Mode6162Goal: surface the user's unknowns about a proposed change, and leave them with a63mental model they can steer with.6465### Workflow66671. **Calibrate.** Establish what the user already knows before explaining68 anything.692. **Fix the target.** Confirm which change is being scoped. If the request is70 broader than one coherent change, propose a narrower learning target and get71 agreement.723. **Gather evidence.** Locate the entry point and the boundaries the change sits73 between. Trace the call or data path that carries the behavior in question —74 not every path.754. **Separate current from proposed.** Current repository evidence is76 authoritative for *how the system behaves today*. The user's approved request77 is authoritative for *what is intended*. Neither overrides the other silently.78 When they conflict, or an existing artifact looks stale, say so and name which79 source you trust for which claim.805. **Map it, calibrated.** Cover the entry point and boundaries, the call or data81 path that matters, and the likely blast radius — what else reads, writes, or82 depends on this.836. **Name the unknowns.** This is the point of the mode, not an afterthought.84 Separate them honestly:85 - **Known unknowns** — what the user already flagged as uncertain.86 - **Unknown unknowns** — what they did not ask about and would not think to:87 the invariant nobody wrote down, the caller nobody remembers, the failure88 mode this area is historically prone to, the thing that will look obvious in89 hindsight.90 - **Unknowable from here** — what the repository simply does not say. Name it91 as such rather than guessing.927. **Stop at understanding.** Do not choose an architecture, define acceptance93 criteria, or prescribe implementation tasks. Route those to the sibling that94 owns them.9596## Quiz Mode9798Goal: the user ends up actually understanding a change that already exists.99100The quiz is not a memory test. The user is usually quizzing themselves on work an101agent did while they were not watching closely — cold-testing recall of something102they never saw teaches nothing. So **brief first, then quiz on what the briefing103did not answer.**104105### Workflow1061071. **Resolve the change target.** Working tree, staged changes, a branch, a108 commit, or a pull request. If no target is identifiable, **ask for one**.109 Never quiz against a change you have not read.1102. **Read the change and its evidence.** The actual diff, plus whatever tests, CI111 results, or review exist. Know the answers before asking the questions.1123. **Calibrate.** One short question about what the user already knows here. This113 sets the briefing's depth and the quiz's difficulty.1144. **Brief the user.** A compact walkthrough of the change: what changed, why,115 where it plugs into the existing system, and what the tests cover. This is the116 shared ground the quiz stands on.117118 The briefing states **what was done**. It must not pre-answer the questions,119 which probe **what follows from it**. Do not spell out the failure modes, the120 limits of the tests, or the residual risks in the briefing — those are the121 quiz.1225. **Propose a bounded topic set**, sized to the change's risk and surface area.123 Let the user adjust it. This is what makes the quiz end.1246. **Quiz, one question at a time.**125 - **At most one substantive question per turn.** Ask it, then **stop and126 wait.** Do not ask a second, hint at the answer, or answer it yourself in127 the same turn.128 - After each answer — including "I don't know", which is legitimate and129 cost-free — name what was right, then correct or extend the model with130 **concrete repository evidence** (file, line, symbol). Then continue at a131 depth that matches how the user is doing.1327. **Close with a recap** when the topic set is covered, or the moment the user133 asks to stop.134135### What To Ask About136137Ask about consequences, not contents — the briefing already gave them the138contents.139140- **Intent** — why this approach, and what was rejected?141- **The seam** — why does it plug in *there*, and what breaks if it moved?142- **Failure modes** — bad input, dependency down, concurrent call, partial write.143- **What the tests do not prove** — usually more interesting than what they do.144- **Residual risk** — operational, compatibility, migration, rollback.145146Never ask trivia: filenames, syntax, line numbers, or anything answerable without147understanding the change.148149## Output Contract150151Both modes deliver prose in chat and write no file, unless the user explicitly152asks for a durable artifact.153154**Scope mode** leaves the user able to say where the change lands, what it can155break, and — the point of the mode — what they did not know they did not know.156157**Quiz mode** ends with a recap naming what the user appears to understand well158and what is worth revisiting. Nothing else: no score, no pass/fail label, no159correctness claim about the code, no merge verdict.160161## User Control162163The user runs this, not you. At any point they may ask for more or less depth,164skip a topic, pause, or stop. Honor it immediately and treat none of it as165failure — a user who stops has not "failed the quiz", because there is no quiz to166fail.167168## Verification169170The workflow is working when:171172- It activated because the user asked, not because you offered.173- Depth matches what the user said they know — no fundamentals lecture to an174 expert, no jargon dump on a newcomer.175- Every substantive claim is traceable to the repository, marked as inference, or176 admitted as unknown.177- Scope mode names unknown unknowns the user did not ask about, and stops short178 of becoming a plan.179- The briefing precedes the questions, and the questions probe what the briefing180 left open rather than what it already said.181- Quiz turns hold the line: one question, then a wait; evidence-backed teaching182 after each answer.183- The session ends with a recap and no score, verdict, or file.184185## Resources186187- `commands/understand-change.md` — `/understand-change`, the scope-mode wrapper188- `commands/quiz-change.md` — `/quiz-change`, the quiz-mode wrapper189- `evals/trigger-cases.json` — routing fixture for this skill and its siblings190- `evals/behavioral-scenarios.md` — frozen conversational scenarios and the191 binary assertions that define acceptance192193## Sibling skills194195This skill sits beside the change lifecycle, not inside it. It consumes the196outputs of these skills and hands work back to them; it replaces none of them.197198- `brainstorming` — deciding *what* to build when the direction is unclear199- `write-spec` — pinning the falsifiable contract200- `write-plan` — sequencing the build. It maps the code to pick a seam; this maps201 the code to teach a human. Same territory, different reader.202- `first-principles` — choosing between architectural approaches203- `diagnose` — finding the cause of broken behavior204- `local-review` — finding defects in a diff205- `verify-before-complete` — proving a completion claim with evidence206207If the user wants any of those, say which skill owns it and why, in one sentence.