← Back to Distilling style

Prompt anatomy

What 1,106 prompts reveal about working with AI

February 2026

Sessions
125
~6 weeks
Prompts
1,106
8.8/session
Median
23w
per prompt
Projects
9
3 primary
Period
Dec–Feb
2025–2026

The parent article introduced the tools and showed the summary. This page digs into what the numbers actually mean. Every stat here comes from real prompt data extracted from Claude Code session logs on this machine using uroboro prompt-profile --extract.

Brevity bias

A quarter of all prompts are ten words or fewer. The median prompt is 23 words. The average is 56 — pulled up by a long tail of detailed plans and code-heavy messages. The distribution is heavily front-loaded toward short.

Prompt length distribution
≤10w
276 25%
11–20w
206 19%
21–50w
265 24%
51–100w
173 16%
101–500w
162 15%
500w+
24 2%

What do the ultra-short prompts look like? Confirmations, course corrections, and pointers:

"yes"
1 word — confirmation
"affirmative, carry on"
3 words — continuation
"yup, get 'r done"
4 words — delegation
"i get a 404 on the /fun page"
8 words — bug report
"add it to the explore cards as well"
8 words — scope extension
"check the staged changes, what's a good terse commit message?"
10 words — compound request
Pattern

Short prompts are load-bearing. A file path does contextual work that three sentences of description can't. An "add it to X as well" relies on shared session context. The brevity is compression. Both sides have enough context that more words would be noise.

The question split

41.5% of prompts are questions. 16.5% are imperative. The rest are contextual statements, continuations, and compound messages that defy clean classification. The gap between these numbers is wider than the parent article suggested — an earlier version of the classifier was more liberal with imperative detection.

Style classification
42% questions 17% imperative 42% other
Context signals
File paths 21%
Code blocks 2%

The question rate is the headline. It means Claude Code is used as much for understanding code as for writing it. "Why is this returning nil?" and "does this service handle concurrent requests?" happen almost as often as "fix the auth bug" and "add a delete endpoint."

The 21% file path rate matters too. One in five prompts points at a specific location in the codebase. A file path compresses paragraphs of description into a few characters — instead of "the main routing configuration in the header component," just src/components/layout/Header.tsx. Direct reference over description.

How it opens

The vocabulary of prompts follows distinct patterns. The top imperative openers:

Top imperative openers
let's
48
we
29
add
17
implement
14
make
6
please
5
Pattern

"Let's" and "we" dominate the imperative openers. Not "fix this" or "do that" — collaborative framing. The prompting style treats the AI as a pair programmer, not a subordinate. "Let's add routing" rather than "add routing." The distinction matters for how the model responds.

The top question openers tell the other side:

Top question openers
can
31
i
23
what
17
great,
17
for
13
is
12
when
11
why
8
how
7

"Can" leads because "can you..." is the most common way to frame a request as a question. "Great," appears because responses often start with acknowledgment before pivoting to a question — "great, now can we also handle the error case?" The "i" opener is mostly "is this..." or "i see the..." patterns.

Session shapes

Not all sessions are equal. 45% of sessions are three prompts or fewer — surgical strikes. Open, direct, done. But ten sessions exceed thirty prompts, deep collaborative building sessions that can run for hours.

Session length (prompts per session)
56
1–3
28
4–7
24
8–15
7
16–30
10
30+
Median: 4 prompts  |  Max: 84 prompts

This bimodal distribution tells a story about two modes of work. The short sessions are targeted fixes, quick questions, single-purpose tasks. The long sessions are feature builds, deep debugging, or architectural exploration. There's no dominant mode — both patterns serve different needs.

The session arc

Within longer sessions, prompt length follows a distinct arc. Opening prompts average 58 words — enough context to set the stage. Mid-session (positions 3–6) prompts stretch to 73 words — this is where the detailed specification happens, where you describe exactly what you want after understanding the landscape. Late-session prompts (position 7+) contract back to 49 words — by then, context is established and terse corrections suffice.

Average prompt length by session position
58w
First 3
→
73w
Mid 3–6
→
49w
Later 7+
Pattern

Orient → Specify → Steer. The opening sets context, the middle does the heavy lifting, and the tail is course corrections. This arc mirrors how pair programming works in person: you start by explaining the problem, work through the details together, then fine-tune.

How sessions begin

The first message of each session reveals how you choose to prime a conversation. Of 125 session openers:

File refs
42%
52 of 125 openers
Questions
40%
50 of 125 openers
Imperative
30%
37 of 125 openers
Code blocks
4%
5 of 125 openers

42% of first messages reference specific files. Sessions start with pointing, not describing. "Look at internal/distill/git.go" orients the model to a specific part of the codebase before anything else. This is higher than the overall 21% file-reference rate — first messages are twice as likely to include a file path, because the opener needs to establish scope that later messages can assume.

40% of sessions start with a question. Not a command, not a plan — a question. "What does this function do?" or "Why is this failing?" The first instinct when opening a new AI session is frequently to understand something, not to build something.

When it happens

Prompts per hour (06:00–00:00)
060708091011 121314151617 181920212223 00

Two distinct work blocks. The morning plateau runs 08:00–13:00 with steady output around 100–117 prompts per hour. Then 14:00 spikes to 154 — the post-lunch peak. After 15:00, a gradual taper through the afternoon. A dead zone at 19:00–21:00 (dinner, unwinding), then a small late-night burst at 22:00–00:00.

Prompts per day of week
194
Mon
254
Tue
164
Wed
176
Thu
209
Fri
94
Sat
15
Sun

Tuesday dominates. Friday is a secondary peak — wrapping up work before the weekend. Saturday drops to 37% of Tuesday's output. Sunday nearly vanishes. This is a workweek tool with an occasional weekend side-project session.

Pattern

The 19:00–21:00 dead zone is the clearest signal. It's not a gradual fade — activity drops from 52 prompts at 17:00 to 4 at 19:00. Work stops. Then the 22:00 bump suggests a separate "night mode" session — personal projects, side experiments, the kind of work that happens after the day job ends and the house is quiet.

Where the work goes

Prompts by project
webapp-ui
573 52%
qryzone
217 20%
rpa-api
206 19%
uroboro
71 6%
5 others
39 4%

Half the prompts go to one project — a work-related web application UI. The split between paid work (webapp-ui + rpa-api = 71%) and personal projects (qryzone + uroboro = 26%) is roughly 3:1. This is a tool that's primarily used for professional development, with personal projects filling the gaps.

The long tail of five projects with single-digit percentages represents experiments, one-off explorations, and projects that might grow or might not. They account for 39 prompts total — enough to start, not enough to establish.

On the numbers

A note on classification accuracy. The prompt-profile tool uses heuristic detection — first-word matching against verb lists and phrase patterns. It's not perfect. "Can you fix this?" registers as both imperative (via "can you") and question (via "can" + "?"). "Great, now add routing" starts with "great," which isn't an imperative verb, so it misses the imperative classification despite clearly being a directive.

The parent article showed 50.7% imperative. This page shows 16.5%. The tool's classification logic was tightened between those measurements — the earlier version was more generous with what counted as imperative. Neither number is wrong. The 42% that falls into "other" in the current version is mostly compound messages, continuations, and acknowledgments-with-direction that resist binary classification.

The tool evolving its own accuracy while being used to measure patterns is part of the point. You build the instrument, you measure, you refine the instrument, you measure again. The data changes because the lens got sharper.