A consultant has decided to delegate codebase discovery to a separate subagent — verbose Read, Grep, and Glob calls happen in the subagent's isolated context, and only a clean summary returns to the main session. The 400-file Python codebase is theirs to understand before tomorrow's stakeholder meeting. Now the question is what to ask the subagent for. They're weighing four candidate prompts.
Which produces the most useful summary?
Why did you pick that answer? Two or three sentences. The act of articulating it is what builds the judgment — not the click that follows.
A specific output contract is what makes discovery output useful. Asking for what, in what format, with what evidence, and for what purpose gives the subagent enough constraint to produce something the main session can actually use. Vague prompts ("summarize the codebase") produce vague summaries; full-coverage prompts ("describe each file") produce indiscriminate dumps; critique prompts ("what's wrong") produce premature judgment without context. Discovery output should be designed like any other tool's response shape.
"Summarize the codebase" is the kind of prompt that lets the subagent do anything — and it usually produces a summary that's true, technically responsive, and useless. Without an output contract, the subagent guesses what you'd find useful, and the guess is rarely as specific as what you actually need.
Asking for a per-file description still produces verbose output — just produced by the subagent rather than by tool calls. The subagent's context fills with verbose reading, but it returns the same indiscriminate dump to the main session. You've moved the verbosity, not eliminated it.
Asking "what's wrong" before you understand the codebase produces premature judgment — anti-patterns flagged in code that turns out to be deliberate, criticism of conventions that have good reasons. Critique is an output of understanding, not a substitute for it.