walkthrough
Move a cursor over a list, one item per turn. You present the item under the cursor with enough context to judge it, the user reacts, the cursor advances. The win is focus: the user processes and pushes back on each item instead of drowning in a dump.
The list is pinned — built once, held in context for the whole walkthrough. Each turn restates where the cursor is; never assume the user still sees the previous item.
Steps
Find the items. In priority order:
- A file the user named (
walk me through subtasks.json) → read it; treat array entries / list items / top-level sections as the items.
- The conversation — findings, suggestions, tasks, options just produced → enumerate those.
- An inline list in the user's message → parse it directly.
If it's ambiguous what to walk through, ask once, then proceed.
Pin the list. Enumerate the items as a stable, ordered list and hold the full text in context — back, goto N, and find all read from it. Do not re-derive it each turn.
Announce, then present item 1. One line: Found N items. I'll go through them one at a time — ready for the first? Present item 1 in the same turn unless the user's request didn't already imply go.
Present the item under the cursor, then stop and wait. One item per turn — never advance the cursor twice in one turn.
Act on the response (see Controls), move the cursor, present the new item with a fresh header.
Finish when the cursor runs off the end or the user says done.
Controls
Anything unrecognized is discuss — the user is reacting to the current item.
| Input |
Does |
next / n / ok / Enter |
Cursor → next item |
back / b |
Cursor → previous item |
goto N |
Cursor → item N |
find <term> |
Cursor → next item matching <term> |
discuss / d / (free text) |
Dig into the current item; cursor stays put |
edit / e |
Apply the change this item suggests; cursor stays put |
skip / s |
Record skipped, cursor → next item |
list / l |
Show the whole list compact (✓ done · ~ skipped · ● current), then return |
done / q |
End early and summarize |
Presentation format
─── Item 3/7 · [Type] ───
**<title or one-line summary>**
<the detail — enough to understand and judge it on its own>
<suggested action, if the item implies one>
[ next · back · discuss · edit · skip · goto N · find <term> · list · done ]
[Type] is whatever the items are — Finding, Task, Option, Diff, Risk. Drop it if untyped.
- The control hint line is the only menu the user sees — keep it on every item.
- For a file walkthrough, quote the relevant slice (the array element, the section) rather than making the user open the file.
State to keep
Track across turns; reflect it in the header and wrap-up:
- Position — cursor index out of total.
- Skipped — items passed with
skip.
- Discussed — items that got a
discuss turn.
- Edited — items where
edit changed something (note what changed).
Finishing
Close with one line:
Walked through N items — X discussed, Y edited, Z skipped.
If anything was edited, list those changes as bullets so the user has a record. If items were skipped and the list came from a file, offer to re-run over just the skipped ones.
Notes
edit is real work, not a note-to-self. Actually apply the change (file edit, rewrite, whatever the item implies), confirm it landed, then leave the cursor put so the user advances deliberately.
1---2name: walkthrough3description: Present a list of items one at a time for focused, interactive review — each with enough context to act on, then wait for the user before advancing. Use when the user wants to step through items one at a time, or hands over findings / tasks / suggestions / a file of items to review interactively rather than as a wall of text.4---56# walkthrough78Move a **cursor** over a list, one item per turn. You present the item under the cursor with enough context to judge it, the user reacts, the cursor advances. The win is focus: the user processes and pushes back on each item instead of drowning in a dump.910The list is **pinned** — built once, held in context for the whole walkthrough. Each turn restates where the cursor is; never assume the user still sees the previous item.1112## Steps13141. **Find the items.** In priority order:15 - **A file** the user named (`walk me through subtasks.json`) → read it; treat array entries / list items / top-level sections as the items.16 - **The conversation** — findings, suggestions, tasks, options just produced → enumerate those.17 - **An inline list** in the user's message → parse it directly.1819 If it's ambiguous *what* to walk through, ask **once**, then proceed.20212. **Pin the list.** Enumerate the items as a stable, ordered list and hold the full text in context — `back`, `goto N`, and `find` all read from it. Do not re-derive it each turn.22233. **Announce, then present item 1.** One line: `Found N items. I'll go through them one at a time — ready for the first?` Present item 1 in the same turn unless the user's request didn't already imply go.24254. **Present the item under the cursor**, then stop and wait. One item per turn — never advance the cursor twice in one turn.26275. **Act on the response** (see Controls), move the cursor, present the new item with a fresh header.28296. **Finish** when the cursor runs off the end or the user says `done`.3031## Controls3233Anything unrecognized is `discuss` — the user is reacting to the current item.3435| Input | Does |36|---|---|37| `next` / `n` / `ok` / Enter | Cursor → next item |38| `back` / `b` | Cursor → previous item |39| `goto N` | Cursor → item N |40| `find <term>` | Cursor → next item matching `<term>` |41| `discuss` / `d` / *(free text)* | Dig into the current item; cursor stays put |42| `edit` / `e` | Apply the change this item suggests; cursor stays put |43| `skip` / `s` | Record skipped, cursor → next item |44| `list` / `l` | Show the whole list compact (✓ done · ~ skipped · ● current), then return |45| `done` / `q` | End early and summarize |4647## Presentation format4849```50─── Item 3/7 · [Type] ───5152**<title or one-line summary>**5354<the detail — enough to understand and judge it on its own>5556<suggested action, if the item implies one>5758[ next · back · discuss · edit · skip · goto N · find <term> · list · done ]59```6061- `[Type]` is whatever the items are — `Finding`, `Task`, `Option`, `Diff`, `Risk`. Drop it if untyped.62- The control hint line is the only menu the user sees — keep it on every item.63- For a file walkthrough, quote the relevant slice (the array element, the section) rather than making the user open the file.6465## State to keep6667Track across turns; reflect it in the header and wrap-up:6869- **Position** — cursor index out of total.70- **Skipped** — items passed with `skip`.71- **Discussed** — items that got a `discuss` turn.72- **Edited** — items where `edit` changed something (note *what* changed).7374## Finishing7576Close with one line:7778```79Walked through N items — X discussed, Y edited, Z skipped.80```8182If anything was edited, list those changes as bullets so the user has a record. If items were skipped and the list came from a file, offer to re-run over just the skipped ones.8384## Notes8586- **`edit` is real work, not a note-to-self.** Actually apply the change (file edit, rewrite, whatever the item implies), confirm it landed, then leave the cursor put so the user advances deliberately.