Skill: clarify-scope
Turn a vague testing request into a brief precise enough to build from.
"Add tests for checkout" contains at least eight unresolved decisions. Answering them silently means
building the wrong thing confidently; asking all eight at once is a form to fill in, which people
abandon. So: one question at a time, each carrying a recommended answer, and every question that is
really a lookup gets looked up instead of asked.
The one-question-at-a-time interrogation pattern here is adapted from Matt Pocock's "grilling"
technique, narrowed to test-automation scoping.
When to use
- Real forks are open: which layer, which environment, whether negative paths are in scope.
- The request names a feature rather than a behaviour.
- The work is large enough that building the wrong thing costs more than the conversation.
Skip it when there is one obvious behaviour, one obvious layer, and an existing pattern to copy.
Interrogating someone who asked for a clearly specified test is its own kind of failure.
The rules
- One question, then wait. Not two, not a numbered list. Absorb the answer before forming the
next question — later questions usually change shape based on earlier ones.
- Look up facts; ask only about decisions. Whether a model already exists for that screen, what
the environments are called, which data file holds the credentials, what the neighbouring specs
do — all discoverable. Read the repo. Asking a user something the repo already says wastes their
attention and reads as inattentive.
- Every question carries your recommendation, first. "I'd default to a browser spec on the
development environment, since that is what the neighbouring specs use — agree?" is answerable
with one word. A bare open question makes the user do your thinking.
- Depth-first. Resolve each answer's dependents before moving sideways. "Request layer only"
deletes every browser, device and page-object question below it.
- Nothing gets built until the brief is confirmed. No specs, no models, no files. The brief is
the deliverable of this skill.
- Three questions is usually enough. If you are past six, the ask is too big — propose splitting
it rather than continuing.
The decision tree
Adapt to the request; skip what is already settled.
- Restate the ask in one line and confirm you have it right. Roughly a third of the time this
alone surfaces the misunderstanding, and everything after it is cheaper.
- Behaviour, not feature. What specifically should be true? "Checkout works" is a feature;
"an order with an expired card is rejected and the cart is preserved" is a test. Push until you have
the second kind. This is the highest-value question in the tree.
- Layer. Browser, request, database, or component — from the groups the profile records. This
gates everything below it. Recommend the cheapest layer that can actually observe the behaviour: a
rule enforced by an endpoint does not need a browser to prove it.
- Environment, and whether the target must be reachable now. Recommend the repo's default.
- Device or browser (browser layer only). Recommend the repo's default; a matrix run is a
deliberate ask, not an assumption.
- Paths. Happy path only, or the failure cases too — and if so, which. Recommend including one
negative case: it is usually where the actual bug lives, and it costs a fraction of the setup you
are already writing.
- Data. What state must exist first, where the values come from, and who cleans up. Look up how
the repo does this before asking, then confirm the plan rather than requesting it.
- Reuse. Which models, clients, or schemas already cover this — look this up, never ask.
Report what you found and what will be net-new.
The brief
State it back in this shape and wait for an explicit yes:
Brief
Behaviour: <the one thing that should be true>
Layer: <browser | request | database | component>
Target: <environment / project>
Paths: <happy: … · negative: …>
Reuse: <what exists and will be extended>
New: <what will be created>
Data: <source · setup · teardown>
Out of scope: <what you are deliberately not covering>
Sequence: <which skills, in order>
Out of scope matters as much as the rest. It is what stops the same request coming back as "but it
doesn't cover…".
Then ask for confirmation, once. On yes, hand off to the sequence. On a correction, update the brief
and re-state it — do not start building from a half-agreed version.
Guardrails
- Do not write code, files, or a plan document during this skill. Its output is the brief.
- Do not ask a question whose answer is in the repo.
- Do not accept "test everything" as scope. Offer the two or three highest-value behaviours and let
the user pick — an unbounded scope produces a suite nobody maintains.
- Do not smuggle in a decision the user did not make. If they never chose an environment, the brief
says so, and you ask.
- If the answers reveal the test cannot be written yet — no environment, no data, no hook — say that
now rather than after the work.
Done when
The brief is written, confirmed verbatim by the user, and the next skill in the sequence has been
named.
1---2name: clarify-scope3description: Use before writing or planning any test when the ask is not yet precise — "add tests for checkout", "cover the new endpoint", "scope this first". Resolves the open decisions one question at a time, each with a recommended default, looking up in the repo anything that is a fact rather than a choice, and ends in a written brief the user confirms before any code is generated. Skip it when the request is already unambiguous.4---56# Skill: clarify-scope78Turn a vague testing request into a brief precise enough to build from.910"Add tests for checkout" contains at least eight unresolved decisions. Answering them silently means11building the wrong thing confidently; asking all eight at once is a form to fill in, which people12abandon. So: one question at a time, each carrying a recommended answer, and every question that is13really a lookup gets looked up instead of asked.1415*The one-question-at-a-time interrogation pattern here is adapted from Matt Pocock's "grilling"16technique, narrowed to test-automation scoping.*1718## When to use1920- Real forks are open: which layer, which environment, whether negative paths are in scope.21- The request names a feature rather than a behaviour.22- The work is large enough that building the wrong thing costs more than the conversation.2324**Skip it** when there is one obvious behaviour, one obvious layer, and an existing pattern to copy.25Interrogating someone who asked for a clearly specified test is its own kind of failure.2627## The rules28291. **One question, then wait.** Not two, not a numbered list. Absorb the answer before forming the30 next question — later questions usually change shape based on earlier ones.312. **Look up facts; ask only about decisions.** Whether a model already exists for that screen, what32 the environments are called, which data file holds the credentials, what the neighbouring specs33 do — all discoverable. Read the repo. Asking a user something the repo already says wastes their34 attention and reads as inattentive.353. **Every question carries your recommendation, first.** "I'd default to a browser spec on the36 development environment, since that is what the neighbouring specs use — agree?" is answerable37 with one word. A bare open question makes the user do your thinking.384. **Depth-first.** Resolve each answer's dependents before moving sideways. "Request layer only"39 deletes every browser, device and page-object question below it.405. **Nothing gets built until the brief is confirmed.** No specs, no models, no files. The brief is41 the deliverable of this skill.426. **Three questions is usually enough.** If you are past six, the ask is too big — propose splitting43 it rather than continuing.4445## The decision tree4647Adapt to the request; skip what is already settled.48491. **Restate the ask in one line** and confirm you have it right. Roughly a third of the time this50 alone surfaces the misunderstanding, and everything after it is cheaper.512. **Behaviour, not feature.** What specifically should be true? "Checkout works" is a feature;52 "an order with an expired card is rejected and the cart is preserved" is a test. Push until you have53 the second kind. This is the highest-value question in the tree.543. **Layer.** Browser, request, database, or component — from the groups the profile records. This55 gates everything below it. Recommend the cheapest layer that can actually observe the behaviour: a56 rule enforced by an endpoint does not need a browser to prove it.574. **Environment**, and whether the target must be reachable now. Recommend the repo's default.585. **Device or browser** (browser layer only). Recommend the repo's default; a matrix run is a59 deliberate ask, not an assumption.606. **Paths.** Happy path only, or the failure cases too — and if so, which. Recommend including one61 negative case: it is usually where the actual bug lives, and it costs a fraction of the setup you62 are already writing.637. **Data.** What state must exist first, where the values come from, and who cleans up. Look up how64 the repo does this before asking, then confirm the plan rather than requesting it.658. **Reuse.** Which models, clients, or schemas already cover this — **look this up, never ask**.66 Report what you found and what will be net-new.6768## The brief6970State it back in this shape and wait for an explicit yes:7172```73Brief74 Behaviour: <the one thing that should be true>75 Layer: <browser | request | database | component>76 Target: <environment / project>77 Paths: <happy: … · negative: …>78 Reuse: <what exists and will be extended>79 New: <what will be created>80 Data: <source · setup · teardown>81 Out of scope: <what you are deliberately not covering>82 Sequence: <which skills, in order>83```8485`Out of scope` matters as much as the rest. It is what stops the same request coming back as "but it86doesn't cover…".8788Then ask for confirmation, once. On yes, hand off to the sequence. On a correction, update the brief89and re-state it — do not start building from a half-agreed version.9091## Guardrails9293- Do not write code, files, or a plan document during this skill. Its output is the brief.94- Do not ask a question whose answer is in the repo.95- Do not accept "test everything" as scope. Offer the two or three highest-value behaviours and let96 the user pick — an unbounded scope produces a suite nobody maintains.97- Do not smuggle in a decision the user did not make. If they never chose an environment, the brief98 says so, and you ask.99- If the answers reveal the test cannot be written yet — no environment, no data, no hook — say that100 now rather than after the work.101102## Done when103104The brief is written, confirmed verbatim by the user, and the next skill in the sequence has been105named.