@iamu-dev/iamu 0.3.0-beta.0 → 0.3.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +498 -74
- package/dist/commands/set-entity.d.ts +32 -5
- package/dist/index.js +498 -74
- package/dist/templates/skills/iamu-findings.md +47 -62
- package/dist/templates/skills/iamu-new.md +10 -20
- package/dist/templates/skills/iamu-propose.md +4 -2
- package/dist/templates/skills/iamu-run.md +85 -100
- package/dist/templates/skills/iamu-setup.md +38 -61
- package/dist/templates/skills/iamu-stage.md +11 -0
- package/dist/templates/skills/iamu-status.md +1 -1
- package/dist/ui/symbols.d.ts +1 -0
- package/package.json +3 -3
|
@@ -103,31 +103,31 @@ Ask the user how they would like to triage:
|
|
|
103
103
|
2. "Focus only on Critical findings (<C> items)"
|
|
104
104
|
3. "Review by scenario group: <Top Scenario>"
|
|
105
105
|
- Otherwise (in CLI or text-only environments):
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
1. [Recommended] Walk through findings one by one
|
|
109
|
-
2. Focus only on Critical findings (<C> items)
|
|
110
|
-
3. Review by scenario group: <Top Scenario>
|
|
111
|
-
|
|
112
|
-
Reply '1' to walk through all [default], select 2-3, or enter a finding number/slug:
|
|
106
|
+
How would you like to triage these <N> open findings? I recommend walking through findings one by one.
|
|
107
|
+
Proceeding with one-by-one triage. (Say "critical only", specify a scenario group, or enter a finding number/slug).
|
|
113
108
|
|
|
114
109
|
### 3. Direct triage: review one finding
|
|
115
110
|
|
|
116
111
|
Read the finding file at `iamu/findings/<slug>.md`. Parse the YAML frontmatter (`severity`, `type`, `title`, `ui_fact`, `consequence`, `persona`, `walkthrough_step_id`, `screen_title`, `page_url`, `run`) and markdown body (description and recommendation).
|
|
117
112
|
|
|
118
|
-
Synthesize a
|
|
113
|
+
Synthesize a scannable triage summary. Do NOT output an undifferentiated wall of bullets or academic schema labels like "UI Fact:". The reviewer must be able to parse **What is broken** and **What to fix** in under 3 seconds.
|
|
119
114
|
|
|
115
|
+
Format the visible finding in chat:
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
### Finding #<N>/<total> [<SEVERITY>] — <title>
|
|
119
|
+
> **Where:** `<Screen title or URL>` (Step <N>) · **Persona:** <Persona Name> (<Role>)
|
|
120
|
+
> **Evidence:** [step-<N>.png](iamu/.runs/<run>/screenshots/step-<N>.png) · [View in Cloud Walkthrough](<url from iamu open <run-id> --print>)
|
|
121
|
+
|
|
122
|
+
**❌ Problem:**
|
|
123
|
+
<What went wrong on screen and why it hinders the persona (synthesizing ui_fact and consequence in 1–2 clear, direct sentences)>
|
|
124
|
+
|
|
125
|
+
**💡 Recommendation:**
|
|
126
|
+
<Concrete fix proposal from finding body>
|
|
120
127
|
```
|
|
121
|
-
|
|
122
|
-
• Persona: <Persona Name> (<Role>) · <Screen title or URL, Step N>
|
|
123
|
-
• UI Fact: <What the UI showed or did (ui_fact)>
|
|
124
|
-
• Consequence: <Impact on the persona completing their task (consequence)>
|
|
125
|
-
• Agent Insight: <1–2 plain-language sentences synthesizing why this happens and what it means in context>
|
|
126
|
-
• Recommendation: <Concrete fix proposal from finding body>
|
|
127
|
-
• Evidence: <iamu/.runs/<run>/screenshots/step-<N>.png> [Dashboard](<url if cloud_linked>)
|
|
128
|
-
```
|
|
128
|
+
*(For `type: "helps"` findings, omit `**❌ Problem:**` and `**💡 Recommendation:**`; render `**✓ Strength:** <Observation>`)*.
|
|
129
129
|
|
|
130
|
-
If the project is cloud-linked, include the link to the
|
|
130
|
+
If the project is cloud-linked, include the direct link to the walkthrough in Iamu Cloud (from `iamu open <run-id> --print`).
|
|
131
131
|
|
|
132
132
|
Emit this card visibly into the conversation.
|
|
133
133
|
|
|
@@ -135,40 +135,20 @@ Emit this card visibly into the conversation.
|
|
|
135
135
|
|
|
136
136
|
Every finding must land on a decision — never silently skip. Match the user's intent to the closest option.
|
|
137
137
|
|
|
138
|
-
**
|
|
139
|
-
|
|
138
|
+
**Dual-Surface Triage Prompting (Sequencing Rule):**
|
|
139
|
+
You MUST output the rich markdown finding card to the chat stream FIRST. In the SAME turn, invoke `ask_question`:
|
|
140
140
|
|
|
141
141
|
- If your environment provides an interactive user-prompt tool (e.g. `ask_question`, `ask_followup_question`), invoke it:
|
|
142
|
-
- **Question:**
|
|
143
|
-
"""
|
|
144
|
-
Finding #<N>/<total>: <title>
|
|
145
|
-
|
|
146
|
-
• Impact: [<SEVERITY> · <type>]
|
|
147
|
-
• Persona: <Persona Name> (<Role>) · <Screen title or URL, Step N>
|
|
148
|
-
• UI Fact: <ui_fact>
|
|
149
|
-
• Consequence: <consequence>
|
|
150
|
-
• Agent Insight: <1–2 sentences explaining why this happens in simple terms>
|
|
151
|
-
• Recommendation: <concrete recommendation>
|
|
152
|
-
• Evidence: <screenshot path, local file link, and cloud dashboard link if linked>
|
|
153
|
-
|
|
154
|
-
How should we triage this finding?
|
|
155
|
-
"""
|
|
142
|
+
- **Question:** "Finding #<N>/<total> [<SEVERITY>]: <title> on <Screen title or URL, Step N> — How to triage?"
|
|
156
143
|
- **Options:**
|
|
157
|
-
1. "[Recommended] Queue to fix (
|
|
158
|
-
2. "
|
|
159
|
-
3. "
|
|
160
|
-
4. "
|
|
144
|
+
1. "[Recommended] Queue to fix (<brief 3-5 word fix summary>)"
|
|
145
|
+
2. "Queue all remaining recommended fixes (batch accept)"
|
|
146
|
+
3. "Dismiss / Skip (<brief reason if obvious, e.g. keep current design>)"
|
|
147
|
+
4. "Discuss / Explore trade-offs"
|
|
161
148
|
5. "Fix immediately (leave triage now)"
|
|
162
|
-
- Otherwise (
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
1. [Recommended] Queue to fix (mark for fix & continue triage)
|
|
166
|
-
2. Dismiss / Won't fix (record reason & walker guidance rule)
|
|
167
|
-
3. Design change needed (open issue / design doc)
|
|
168
|
-
4. Defer (revisit in later milestone)
|
|
169
|
-
5. Fix immediately (leave triage now)
|
|
170
|
-
|
|
171
|
-
Reply '1' to queue fix [default], enter 2-5, or describe your decision:
|
|
149
|
+
- Otherwise (CLI / text-only conversational fallback):
|
|
150
|
+
> **Recommended Action:** Queue to fix (<brief 3-5 word fix summary>).
|
|
151
|
+
> Say **"queue"** (or **"queue all"**), **"dismiss"** (to teach a rule), or **"discuss"** to explore trade-offs.
|
|
172
152
|
|
|
173
153
|
Record the decision with `iamu triage` — it sets `triage_status` and `triage_note` in `iamu/findings/<slug>.md`, and for a dismissal it also teaches the next walk:
|
|
174
154
|
|
|
@@ -183,6 +163,10 @@ triage_status: addressed
|
|
|
183
163
|
triage_note: "Made handoff notes optional on /sv/handoff; verified on screen."
|
|
184
164
|
```
|
|
185
165
|
|
|
166
|
+
- **Discuss / Explore trade-offs (Conversational Dialogue Mode — NO MODAL LOOPS)** → when the user chooses "Discuss", asks a question, or wants to explore architectural trade-offs:
|
|
167
|
+
**DO NOT invoke `ask_question` or present multiple-choice menus.** Stay in natural conversational chat as a senior pair programmer. Answer follow-up questions, inspect code, benchmark against competitors, and discuss options in plain markdown. Converse naturally back and forth until you reach a conclusion together.
|
|
168
|
+
Once the user says "queue it", "dismiss it", "fix it now", or "let's do that", execute `iamu triage`, confirm in 1 line: "✓ Decision recorded. Ready for finding #<N+1>?", and immediately emit Finding #<N+1> to chat with its triage prompt. Do NOT trap the user with modal dialogs after each conversational turn.
|
|
169
|
+
|
|
186
170
|
- **Queue to fix [Recommended in list-mode]** → add to the session's fix queue. Tell the user in 1 line: "✓ Queued for fix. Advancing to next finding..." and loop to the next finding. Complete the triage queue across all findings first.
|
|
187
171
|
|
|
188
172
|
- **Fix immediately (leave triage now)** → the change is small, one-or-two files, and user explicitly chose to leave triage now. Make the edit, verify it loads (if a dev server is running, open the affected screen and check), then record: `iamu triage <slug> --status addressed --note "<one-line change summary>"`. Do not close a finding as addressed before the change lands and is inspected. Tell the user the fix now awaits a re-run: only a later walkthrough of the scenario turns it verified.
|
|
@@ -193,12 +177,19 @@ triage_note: "Made handoff notes optional on /sv/handoff; verified on screen."
|
|
|
193
177
|
|
|
194
178
|
- **Won't fix (accepted trade-off)** → the problem is real but the team accepts it. `iamu triage <slug> --status wont_fix --note "<the trade-off>"`. It stays out of future walks' dismissed list only as a known issue — no guidance rule is written.
|
|
195
179
|
|
|
196
|
-
- **Not relevant / walker got it wrong** → the finding should never have been reported.
|
|
197
|
-
|
|
198
|
-
|
|
180
|
+
- **Not relevant / walker got it wrong (Load-Bearing Guidance Learning)** → the finding should never have been reported. **Never infer the reason silently.** Always ask the user:
|
|
181
|
+
> "To teach future walkthroughs what not to report, why should this be dismissed?
|
|
182
|
+
> • **By design / intended behavior:** (Why this pattern is expected)
|
|
183
|
+
> • **Walker error:** (What the walker misread or did wrong)
|
|
184
|
+
> • **Out of scope:** (Non-issue for this product/flow)
|
|
185
|
+
> What specific rule should future walkers follow?"
|
|
186
|
+
|
|
187
|
+
Once the user provides their rationale:
|
|
188
|
+
- *Not relevant* (by design, out of scope): `iamu triage <slug> --status dismissed --reason not_relevant --note "<why it is not a problem>" --rule "<rule string>"`.
|
|
189
|
+
- *Walker error* (the walker misread the screen): `iamu triage <slug> --status dismissed --reason walker_error --note "<what it misread>" --rule "<rule string>"`.
|
|
199
190
|
- *Duplicate* of another finding: `--reason duplicate --note "Duplicate of <slug>"` (no rule is written).
|
|
200
191
|
|
|
201
|
-
Not relevant and walker error write a **tester guidance rule** to `iamu/guidance/<slug>.md` that every later walker reads (and the matcher uses to flag repeats). The rule text defaults to "Don't report: <title>"; pass `--rule "<one sentence the walker can act on>"` when the title is too narrow or too broad. The rule applies to the whole project unless you pass `--scope outline` or `--scope capability` — narrow it when the finding is only irrelevant in this situation. Several findings dismissed for the same reason go in one call and share one rule. **Tell the user: "Dismissed —
|
|
192
|
+
Not relevant and walker error write a **tester guidance rule** to `iamu/guidance/<slug>.md` that every later walker reads (and the matcher uses to flag repeats). The rule text defaults to "Don't report: <title>"; pass `--rule "<one sentence the walker can act on>"` when the title is too narrow or too broad. The rule applies to the whole project unless you pass `--scope outline` or `--scope capability` — narrow it when the finding is only irrelevant in this situation. Several findings dismissed for the same reason go in one call and share one rule. **Tell the user: "✓ Dismissed (<reason>) — Guidance rule taught to future walks in iamu/guidance/<slug>.md: '<rule string>'."** One-word notes ("nope") degrade future runs — capture the user's specific rationale.
|
|
202
193
|
|
|
203
194
|
- **Keep (no decision yet)** → rare. Use only when the reviewer genuinely needs more information. Leave `triage_status: open` and add a `triage_note` noting what you are waiting for: `"Waiting on <thing> before triage."`.
|
|
204
195
|
|
|
@@ -241,10 +232,8 @@ If `<N> > 0` findings were queued for fix:
|
|
|
241
232
|
1. "[Recommended] Apply queued fixes in workspace now"
|
|
242
233
|
2. "Done for now (keep fixes open in iamu/findings/)"
|
|
243
234
|
- Otherwise (CLI / text-only):
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
2. Done for now (keep fixes open in iamu/findings/)
|
|
247
|
-
Reply '1' to apply fixes [default], or select 2:
|
|
235
|
+
Triage complete. I recommend: Apply queued fixes in workspace now.
|
|
236
|
+
Proceeding with code edits — say "done" to keep fixes open in iamu/findings/.
|
|
248
237
|
|
|
249
238
|
- **Executing the queued fixes:**
|
|
250
239
|
When Option 1 is chosen, apply code edits for each queued finding sequentially in the workspace. Verify the changes once (run test/typecheck suite). Update each finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
|
|
@@ -258,10 +247,8 @@ If `<N> > 0` findings were queued for fix:
|
|
|
258
247
|
1. "[Recommended] Re-run walkthrough for <scenario-slug> to verify fixes hold"
|
|
259
248
|
2. "Done for now (leave verification for later)"
|
|
260
249
|
- Otherwise (CLI / text-only):
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
2. Done for now (leave verification for later)
|
|
264
|
-
Reply '1' to re-run [default], or select 2:
|
|
250
|
+
Fixes applied and validated. I recommend: Re-run walkthrough for <scenario-slug> to verify fixes hold.
|
|
251
|
+
Proceeding with verification re-run — say "done" to leave verification for later.
|
|
265
252
|
|
|
266
253
|
When Option 1 is chosen, hand off to `iamu-run <scenario-slug>` to re-run the walkthrough, visit the revisit places, verify resolutions in `canonical.json`, and report the verified delta.
|
|
267
254
|
|
|
@@ -277,9 +264,7 @@ Report it in one line: `Synced <N> findings to Iamu Cloud.` If the result has `c
|
|
|
277
264
|
|
|
278
265
|
Then end with the dashboard link from `iamu open --print` (step replay, screenshots side by side, the team's view of the same findings):
|
|
279
266
|
|
|
280
|
-
|
|
281
|
-
Team view: <url>
|
|
282
|
-
```
|
|
267
|
+
> ☁️ **Cloud Walkthrough:** [Open in Iamu Cloud](<url from iamu open --print>)
|
|
283
268
|
|
|
284
269
|
In linked-no-credentials mode, end with `Decisions are local only — iamu auth login, then iamu sync, to share them.` Skip this section entirely in local-only mode. The terminal surface is complete.
|
|
285
270
|
|
|
@@ -85,26 +85,20 @@ Present 2–3 scannable scenario proposals. Each proposal MUST bundle the situat
|
|
|
85
85
|
3. "Select alternative: '<Bundle 2 Title>' as <Persona 2 Name>"
|
|
86
86
|
4. "Customize situation, checkpoint, or brief"
|
|
87
87
|
- Otherwise (in CLI or text-only environments):
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
1. [Recommended] Scaffold '<Bundle 1 Title>' as <Persona 1 Name>
|
|
91
|
-
2. Switch persona: Walk as <Alternative Persona Name> (<Role>)
|
|
92
|
-
3. Select alternative: '<Bundle 2 Title>' as <Persona 2 Name>
|
|
93
|
-
4. Customize situation, checkpoint, or brief
|
|
94
|
-
|
|
95
|
-
Reply '1' to scaffold [default], select 2-3, or type adjustments:
|
|
88
|
+
I recommend scaffolding '<Bundle 1 Title>' as <Persona 1 Name>.
|
|
89
|
+
Proceeding to scaffold scenario — say "switch persona", "select alternative", or describe adjustments to customize.
|
|
96
90
|
|
|
97
91
|
*Execution Flow:*
|
|
98
|
-
- **Selecting Option 1 (or
|
|
92
|
+
- **Selecting Option 1 (or conversational confirmation):** Proceed IMMEDIATELY to Step 6 (Persist everything). Zero intermediate question modals.
|
|
99
93
|
- **Selecting Option 2:** Present the persona switcher (Step 4) then persist.
|
|
100
94
|
- **Selecting Option 3:** Swap primary bundle and prompt to persist.
|
|
101
95
|
- **Selecting Option 4 / typing adjustments:** Expand into Step 3 to refine details before persisting.
|
|
102
96
|
|
|
103
97
|
### 3. Develop the situation (Scenario Spec-Sheet)
|
|
104
98
|
|
|
105
|
-
In Fast-Path mode or when customizing, present the complete scenario as a structured, scannable Spec-Sheet before creating anything. Every field shown here is written verbatim to disk on confirmation
|
|
99
|
+
In Fast-Path mode or when customizing, present the complete scenario as a structured, scannable Spec-Sheet before creating anything. Every field shown here is written verbatim to disk on confirmation.
|
|
106
100
|
|
|
107
|
-
|
|
101
|
+
Keep the narrative capped at 2–3 punchy sentences (problem-space only, zero UI terms). (Note: When passing text to modal prompt tools like `ask_question`, use plain text without header hashes or blockquotes; in normal chat output, format clearly with standard markdown).
|
|
108
102
|
|
|
109
103
|
```
|
|
110
104
|
Scenario Spec-Sheet: <Outline Title>
|
|
@@ -133,15 +127,10 @@ Persona & Brief:
|
|
|
133
127
|
2. "Switch persona: Walk as <Alternative Persona> (<Role>)"
|
|
134
128
|
3. "Adjust situation, checkpoint, or brief"
|
|
135
129
|
- Otherwise (in CLI or text-only environments):
|
|
130
|
+
I recommend scaffolding scenario '<Outline Title>' and preparing the walkthrough.
|
|
131
|
+
Proceeding to scaffold scenario — say "switch persona" or describe adjustments.
|
|
136
132
|
|
|
137
|
-
|
|
138
|
-
1. [Recommended] Scaffold scenario and prepare walkthrough
|
|
139
|
-
2. Switch persona: Walk as <Alternative Persona> (<Role>)
|
|
140
|
-
3. Adjust situation, checkpoint, or brief
|
|
141
|
-
|
|
142
|
-
Reply '1' to scaffold [default], select 2, or type adjustments:
|
|
143
|
-
|
|
144
|
-
*Selecting Option 1 or hitting Enter proceeds IMMEDIATELY to Step 6 (Persist everything).*
|
|
133
|
+
*Selecting Option 1 proceeds IMMEDIATELY to Step 6 (Persist everything).*
|
|
145
134
|
|
|
146
135
|
### 4. Pick or swap personas (on demand)
|
|
147
136
|
|
|
@@ -170,7 +159,8 @@ If no existing persona fits, or if testing an uncovered perspective is needed, p
|
|
|
170
159
|
1. "[Recommended] Bind existing persona: <slug> (<role>)" (if one fits)
|
|
171
160
|
2. "Create candidate: <Name> (<Role>)"
|
|
172
161
|
3. "Leave as draft (no persona bound yet)"
|
|
173
|
-
- Otherwise,
|
|
162
|
+
- Otherwise, state the recommended persona and conversational default:
|
|
163
|
+
"I recommend binding <slug> (<role>). Proceeding with this persona — name a candidate or say 'skip' to save as draft."
|
|
174
164
|
|
|
175
165
|
### 5. Classify into capabilities
|
|
176
166
|
|
|
@@ -96,7 +96,8 @@ Existing coverage: <N> scenarios ([<slug1>](iamu/scenarios/<slug1>.md), ...). Un
|
|
|
96
96
|
2. "Scaffold '<Candidate 2 Title>' (<Actor>)"
|
|
97
97
|
3. "Scaffold '<Candidate 3 Title>' (<Actor>)"
|
|
98
98
|
- Otherwise (in CLI or text-only environments):
|
|
99
|
-
|
|
99
|
+
I recommend scaffolding Candidate 1: '<Candidate 1 Title>' (<Actor>).
|
|
100
|
+
Proceeding to scaffold scenario — name another candidate or describe adjustments.
|
|
100
101
|
|
|
101
102
|
#### B. When proposing Personas:
|
|
102
103
|
|
|
@@ -126,7 +127,8 @@ Existing personas: [<slug1>](iamu/personas/<slug1>.md), ... Uncovered roles from
|
|
|
126
127
|
2. "Add <Name 2> (<Actor role>)"
|
|
127
128
|
3. "Add <Name 3> (<Actor role>)"
|
|
128
129
|
- Otherwise (in CLI or text-only environments):
|
|
129
|
-
|
|
130
|
+
I recommend adding Candidate 1: <Name 1> (<Actor role>).
|
|
131
|
+
Proceeding to add persona — name another candidate or describe adjustments.
|
|
130
132
|
|
|
131
133
|
Ground rules for generation:
|
|
132
134
|
|
|
@@ -57,8 +57,8 @@ When `$ARGUMENTS` is empty and no active scenario exists in context, check `iamu
|
|
|
57
57
|
1. "[Recommended] Ignore and continue with new run"
|
|
58
58
|
2. "Finish run `<run-id>`: Run post-walk assembly on existing steps"
|
|
59
59
|
3. "Discard empty unfinished runs"
|
|
60
|
-
- Otherwise (in text-only/conversational environments), state
|
|
61
|
-
"
|
|
60
|
+
- Otherwise (in text-only/conversational environments), state the recommended action and default:
|
|
61
|
+
"Found <N> unfinished walkthrough run(s). Proceeding with a new run. (Say 'finish <run-id>' or 'discard empty' to adjust)."
|
|
62
62
|
|
|
63
63
|
Do not block the new run on this, and do not ask again in the same session.
|
|
64
64
|
|
|
@@ -110,7 +110,8 @@ Omit the first group when `rerun` is empty. If `requests.open` in the status out
|
|
|
110
110
|
1. "[Recommended] <Slug or Title>" (e.g. top rerun needing proof, or primary ready scenario)
|
|
111
111
|
2. "<Alternative Scenario Slug or Title>"
|
|
112
112
|
3. "Draft a new scenario..."
|
|
113
|
-
- Otherwise,
|
|
113
|
+
- Otherwise, state the recommended scenario and conversational default:
|
|
114
|
+
"Recommended scenario: `<Slug or Title>`. Proceeding with this scenario — say '<Alternative Slug>' or describe a new intent to change course."
|
|
114
115
|
|
|
115
116
|
Drafts get a bind prompt before execution (step 2); ready-to-run scenarios skip to step 3.
|
|
116
117
|
|
|
@@ -125,7 +126,8 @@ If the resolved scenario has `persona: null`, prompt to bind before executing:
|
|
|
125
126
|
1. "[Recommended] <Existing Persona 1> (<Role>)"
|
|
126
127
|
2. "<Existing Persona 2> (<Role>)"
|
|
127
128
|
3. "Draft a new persona candidate"
|
|
128
|
-
- Otherwise,
|
|
129
|
+
- Otherwise, state the recommended persona and conversational default:
|
|
130
|
+
"This scenario is a draft with no persona bound. I recommend binding `<Existing Persona 1>` (<Role>). Proceeding with this persona — name another persona or type 'new' to propose candidates."
|
|
129
131
|
|
|
130
132
|
1. Read `iamu/personas/` directory or run `iamu list personas`; present as pickable list + "new" option.
|
|
131
133
|
2. Picked existing → bind that persona by updating the scenario file's `persona` field.
|
|
@@ -162,11 +164,8 @@ If the target is a local URL (e.g. `http://localhost:*`, `http://127.0.0.1:*`) a
|
|
|
162
164
|
2. "I will start the dev server manually (wait for port)"
|
|
163
165
|
3. "Specify a different target URL"
|
|
164
166
|
- Otherwise (CLI / text-only):
|
|
165
|
-
Target URL <url> is unreachable. Boot dev server
|
|
166
|
-
|
|
167
|
-
2. I will start the dev server manually (wait for port)
|
|
168
|
-
3. Specify a different target URL
|
|
169
|
-
Reply '1' to boot dev server [default], select 2-3, or provide target URL:
|
|
167
|
+
Target URL <url> is unreachable. I recommend Option 1: Boot dev server in background (`<dev_command>`) and proceed.
|
|
168
|
+
Proceeding with dev server boot — say "wait" to start manually or provide a different target URL.
|
|
170
169
|
3. If Option 1 is chosen:
|
|
171
170
|
- Launch `<dev_command>` in the background as a managed daemon process.
|
|
172
171
|
- Poll `<url>` with HTTP requests until it responds (timeout: 30s).
|
|
@@ -216,7 +215,7 @@ If the product is behind enterprise login where automated dev persona switching
|
|
|
216
215
|
If automated switching exists:
|
|
217
216
|
1. Check the project's own agent docs (`CLAUDE.md`, `AGENTS.md`) for a documented way to switch user or role.
|
|
218
217
|
2. Map the persona to the closest account or role the product actually has. If nothing fits, say so.
|
|
219
|
-
3.
|
|
218
|
+
3. Persist what you learned: the mechanism into `iamu/testability.md` via `iamu set testability --access "<key>"`, and the persona's own key with `iamu set persona <slug> --access <key>`. Passwords and tokens never go in either — name where they live (an env var, a vault entry) instead.
|
|
220
219
|
|
|
221
220
|
Carry the result into the walking prompt as the `## Access` section: the exact steps to become the persona, with the instruction to do them BEFORE the first recorded step.
|
|
222
221
|
|
|
@@ -248,15 +247,15 @@ iamu browse start --run <run-id>
|
|
|
248
247
|
|
|
249
248
|
It sizes the page as the device the persona's tags name (`mobile`/`phone`, `tablet`/`ipad`, `desktop`/`laptop`; `start-run` prints it as `device`) and resizes a browser left at another persona's size.
|
|
250
249
|
|
|
251
|
-
**Get the walker prompt.** The CLI composes the whole thing — persona, situation, brief, access, driving surface, methodology, dismissed findings and the run-directory contract (steps, screenshots, findings, `summary.json`):
|
|
250
|
+
**Get the walker prompt.** The CLI composes the whole thing — persona, situation, brief, access, driving surface, methodology, dismissed findings and the run-directory contract (steps, screenshots, findings, `summary.json`). It also automatically writes `walker_prompt.txt` to the run directory (`iamu/.runs/<run-id>/walker_prompt.txt`):
|
|
252
251
|
|
|
253
252
|
```bash
|
|
254
253
|
iamu instructions walk --scenario <scenario-slug> --run <run-id> --surface browse --json
|
|
255
254
|
```
|
|
256
255
|
|
|
257
|
-
|
|
256
|
+
**Never create prompt generator scripts or temporary files.** The CLI generates and persists the prompt automatically. Never write custom `.cjs`, `.js`, or `.sh` generator scripts into `.cache/`, `iamu/`, or the workspace. Hand-crafting files triggers host IDE file permission prompts.
|
|
258
257
|
|
|
259
|
-
The result's `walker_prompt` is the walker's entire prompt. Pass it verbatim — do not rewrite, summarize or trim it. The prompt already carries the dismissed findings, the active tester guidance rules (`iamu/guidance/`) for this scenario, and — when fixes await a re-run — the places they were seen (places only, never what was wrong; the list is in `revisit`). The rest of the bundle (`persona`, `outline`, `access`, `dismissed_findings`, `tester_guidance`, …) is there for you, not the walker. If `access` is missing a half, fill it in first (step 3) and re-run this command.
|
|
258
|
+
The result's `walker_prompt` is the walker's entire prompt (also persisted at `walker_prompt_path`). Pass it verbatim — do not rewrite, summarize or trim it. The prompt already carries the dismissed findings, the active tester guidance rules (`iamu/guidance/`) for this scenario, and — when fixes await a re-run — the places they were seen (places only, never what was wrong; the list is in `revisit`). The rest of the bundle (`persona`, `outline`, `access`, `dismissed_findings`, `tester_guidance`, …) is there for you, not the walker. If `access` is missing a half, fill it in first (step 3) and re-run this command.
|
|
260
259
|
|
|
261
260
|
**Preflight: Unattended execution check.** A walkthrough executes 15–30 terminal commands sequentially (`iamu browse step`, `iamu new-finding`). If your agent host requires manual confirmation for terminal/shell commands (standard interactive mode in Claude Code, Cursor, Antigravity, Cline, Windsurf, etc.), the walker subagent will stall waiting for approval on every step. Before dispatching, verify that command auto-approval / unattended execution is enabled in your environment, or warn the user once:
|
|
262
261
|
"Autonomous walkthroughs require auto-approving terminal commands so the walker can drive the product unattended. If command approvals are prompted, please enable auto-approval or expect to approve steps manually."
|
|
@@ -357,6 +356,9 @@ iamu summary <run-id> --worked "What worked well 1" --worked "What worked well 2
|
|
|
357
356
|
|
|
358
357
|
After the walker returns, you MUST complete ALL of the following before presenting findings to the user. Do NOT present findings early. Do NOT ask the user anything. Execute steps A→B→C→D→E in order.
|
|
359
358
|
|
|
359
|
+
> **CRITICAL EXECUTION RULE (Zero Host File Tools):**
|
|
360
|
+
> Never invoke host edit or write tools (`write_to_file`, `create_file`, `replace_file_content`, etc.) on any files in `iamu/` (including run artifacts, steps, findings, outlines, personas, scenarios, or guidance). All files in `iamu/` must be generated and modified exclusively via `iamu` CLI commands (`iamu new`, `iamu set`, `iamu step`, `iamu new-finding`, `iamu evaluate-record`, `iamu match-record`, etc.). If an entity needs a field updated (e.g. adding a capability to an outline), run `iamu set <type> <slug> ...` instead of editing files by hand. Record subagent JSON outputs directly through the CLI using `--data '<json>'` (or pipe via stdin).
|
|
361
|
+
|
|
360
362
|
**A. Assemble canonical + report (local).** Use `--no-push` so post-processing stays fast, local, and synchronous:
|
|
361
363
|
|
|
362
364
|
```bash
|
|
@@ -373,11 +375,10 @@ This reads all steps, findings, and entity files, assembles `canonical.json`, ge
|
|
|
373
375
|
iamu match <run-id> --json
|
|
374
376
|
```
|
|
375
377
|
|
|
376
|
-
If `needed` is `false` (no earlier findings for this scenario, or none this run), skip to C. Otherwise, read the prompt from `iamu/.runs/<run-id>/match_prompt.md` directly and dispatch a matcher subagent with it as its only context (use the **thorough** model tier, e.g. `Model="pro"` in Antigravity, to accurately evaluate semantic equivalence). Record its JSON answer via `--data` (
|
|
378
|
+
If `needed` is `false` (no earlier findings for this scenario, or none this run), skip to C. Otherwise, read the prompt from `iamu/.runs/<run-id>/match_prompt.md` directly and dispatch a matcher subagent with it as its only context (use the **thorough** model tier, e.g. `Model="pro"` in Antigravity, to accurately evaluate semantic equivalence). Record its JSON answer via `--data` (do NOT create a `matches.json` file yourself; pass the JSON string directly into `--data`):
|
|
377
379
|
|
|
378
380
|
```bash
|
|
379
|
-
iamu match-record <run-id> --data '<
|
|
380
|
-
# or: iamu match-record <run-id> --file <matches.json>
|
|
381
|
+
iamu match-record <run-id> --data '<raw_matches_json>'
|
|
381
382
|
```
|
|
382
383
|
|
|
383
384
|
This links recurrences to their earlier canonical finding, marks earlier findings the run's steps show fixed (only with cited steps), and re-derives the delta and report. If the matcher's output is rejected, show the error to the matcher once and retry; if it fails again, continue without it — the exact-text delta from A stands.
|
|
@@ -388,11 +389,10 @@ This links recurrences to their earlier canonical finding, marks earlier finding
|
|
|
388
389
|
iamu evaluate <run-id> --json
|
|
389
390
|
```
|
|
390
391
|
|
|
391
|
-
Read the evaluation prompt from `iamu/.runs/<run-id>/judge_prompt.md` directly. Dispatch the evaluator as a subagent with that prompt (use the **thorough** model tier, e.g. `Model="pro"` in Antigravity, to prevent severity inflation). After the evaluator returns verdicts, record them locally with `--no-push` via `--data` (
|
|
392
|
+
Read the evaluation prompt from `iamu/.runs/<run-id>/judge_prompt.md` directly. Dispatch the evaluator as a subagent with that prompt (use the **thorough** model tier, e.g. `Model="pro"` in Antigravity, to prevent severity inflation). After the evaluator returns verdicts, record them locally with `--no-push` via `--data` (do NOT create a `verdicts.json` file yourself; pass the JSON string directly into `--data`):
|
|
392
393
|
|
|
393
394
|
```bash
|
|
394
|
-
iamu evaluate-record <run-id> --data '<
|
|
395
|
-
# or: iamu evaluate-record <run-id> --file <verdicts.json> --no-prompt --no-push
|
|
395
|
+
iamu evaluate-record <run-id> --data '<raw_verdicts_json>' --no-prompt --no-push
|
|
396
396
|
```
|
|
397
397
|
|
|
398
398
|
This links findings to human tests (`human_test_id`) and updates the report with judge verdicts.
|
|
@@ -431,23 +431,23 @@ Render results **inline** as a concise executive scorecard.
|
|
|
431
431
|
|
|
432
432
|
**ANTI-BLOAT DIRECTIVE:** Terminal viewports are small. Never output multi-screen walls of markdown text. The overview exists only to present the top-line score and orient the user for triage. Do NOT dump long quotes, recommendations, full descriptions, or "What Worked" essays here — those belong in the interactive triage step below.
|
|
433
433
|
|
|
434
|
-
Keep the presentation under 15 lines total:
|
|
434
|
+
Keep the presentation under 15 lines total. Output as rich Markdown (do NOT wrap the entire summary in a triple-backtick code block so links render as clickable):
|
|
435
435
|
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
Focus Checkpoint: "<human_tests[0].question>" → <No / Partial / Yes>: <1-sentence direct answer>
|
|
436
|
+
### Walkthrough Complete: [<scenario-slug>](iamu/scenarios/<scenario-slug>.md) ([<persona>](iamu/personas/<persona>.md))
|
|
437
|
+
**Verdict:** <FAIL / PARTIAL / PASS> · <N> Blockers (Critical) · <M> Friction points (Major/Minor) · <K> Helpers (<StepCount> steps)
|
|
438
|
+
**Checkpoint:** "<human_tests[0].question>" → <No / Partial / Yes>: <1-sentence direct answer>
|
|
440
439
|
|
|
441
|
-
Findings:
|
|
442
|
-
1. [
|
|
443
|
-
2. [
|
|
440
|
+
#### Findings:
|
|
441
|
+
1. **[CRITICAL]** · *<type>* · <Short title> (Step <N> at `<short_url_path>`)
|
|
442
|
+
2. **[MAJOR]** · *<type>* · <Short title> (Step <N> at `<short_url_path>`)
|
|
444
443
|
...
|
|
445
444
|
(Helps: • [helps] <short title> (Step <N>))
|
|
446
445
|
|
|
447
|
-
Cloud: <Shareable report: <url> | Local only>
|
|
448
|
-
```
|
|
449
|
-
|
|
450
446
|
(If canonical.json contains a `verification` section, include a 1-line delta: `Since last run: ✓ <N> fixed · ✗ <M> persist · + <K> new`.)
|
|
447
|
+
|
|
448
|
+
> ☁️ **Cloud Walkthrough:** [Open in Iamu Cloud](<url from iamu open <run-id> --print>)
|
|
449
|
+
*(If local-only, render instead: `> **Artifact:** [iamu/.runs/<run-id>/report.md](iamu/.runs/<run-id>/report.md) (Local only)`)*
|
|
450
|
+
|
|
451
451
|
Do NOT output `### What Worked` paragraphs or lengthy bullet essays. Keep the entire summary under 15 lines, then immediately present the triage prompt below.
|
|
452
452
|
|
|
453
453
|
7. **Next actions (Interactive Triage Selection)**:
|
|
@@ -459,15 +459,9 @@ Do NOT output `### What Worked` paragraphs or lengthy bullet essays. Keep the en
|
|
|
459
459
|
2. "Apply fixes for all clear findings (batch fix)"
|
|
460
460
|
3. "Discuss findings and persona friction points"
|
|
461
461
|
4. "Re-run walkthrough to test changes"
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
1. [Recommended] Walk through findings one by one
|
|
466
|
-
2. Apply fixes for all clear findings (batch fix)
|
|
467
|
-
3. Discuss findings and persona friction points
|
|
468
|
-
4. Re-run walkthrough to test changes
|
|
469
|
-
|
|
470
|
-
Reply '1' to review findings [default], enter 2-4, or tell me how to proceed:
|
|
462
|
+
- Otherwise (in CLI or text-only environments):
|
|
463
|
+
Walkthrough complete: <F> findings reported. I recommend walking through findings one by one.
|
|
464
|
+
Proceeding with one-by-one triage. (Say "batch fix", "discuss", or "re-run" to change course).
|
|
471
465
|
|
|
472
466
|
### 6. Conversational Triage & Guided Review
|
|
473
467
|
|
|
@@ -475,74 +469,70 @@ The conversation is the triage surface. Do NOT eject the user to manual CLI comm
|
|
|
475
469
|
|
|
476
470
|
#### A. Guided One-by-One Review ("walk through them" / "review one by one")
|
|
477
471
|
When the user asks to review findings one by one:
|
|
478
|
-
1. **Present Finding #N in a
|
|
479
|
-
Do NOT
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
472
|
+
1. **Present Finding #N in a scannable format (High Visual Hierarchy):**
|
|
473
|
+
Do NOT output an undifferentiated wall of bullets or academic schema labels like "UI Fact:". The reviewer must be able to parse **What is broken** and **What to fix** in under 3 seconds.
|
|
474
|
+
|
|
475
|
+
Format the visible finding in chat:
|
|
476
|
+
```markdown
|
|
477
|
+
### Finding #<N>/<total> [<SEVERITY>] — <title>
|
|
478
|
+
> **Where:** `<Screen title or URL>` (Step <N>) · **Persona:** <Persona Name> (<Role>)
|
|
479
|
+
> **Evidence:** [step-<N>.png](iamu/.runs/<run>/screenshots/step-<N>.png) · [View in Cloud Walkthrough](<url from iamu open <run-id> --print>)
|
|
480
|
+
|
|
481
|
+
**❌ Problem:**
|
|
482
|
+
<What went wrong on screen and why it hinders the persona (synthesizing ui_fact and consequence in 1–2 clear, direct sentences)>
|
|
483
|
+
|
|
484
|
+
**💡 Recommendation:**
|
|
485
|
+
<Concrete fix proposal from finding body>
|
|
488
486
|
```
|
|
489
|
-
|
|
487
|
+
*(For `type: "helps"` findings, omit `**❌ Problem:**` and `**💡 Recommendation:**`; render `**✓ Strength:** <Observation>`)*.
|
|
488
|
+
|
|
489
|
+
If the project is cloud-linked, include the direct link to the walkthrough in Iamu Cloud (from `iamu open <run-id> --print`).
|
|
490
490
|
|
|
491
491
|
Followed immediately by the decision prompt:
|
|
492
492
|
|
|
493
|
-
**
|
|
494
|
-
|
|
493
|
+
**Dual-Surface Triage Prompting (Sequencing Rule):**
|
|
494
|
+
You MUST output the rich markdown finding card to the chat stream FIRST. In the SAME turn, invoke `ask_question`:
|
|
495
495
|
|
|
496
496
|
- If interactive tool available (e.g. `ask_question`, `ask_followup_question`), invoke it:
|
|
497
|
-
- **Question:**
|
|
498
|
-
"""
|
|
499
|
-
Finding #<N>/<total>: <title>
|
|
500
|
-
|
|
501
|
-
• Impact: [<SEVERITY> · <type>]
|
|
502
|
-
• Persona: <Persona Name> (<Role>) · <Screen title or URL, Step N>
|
|
503
|
-
• UI Fact: <ui_fact>
|
|
504
|
-
• Consequence: <consequence>
|
|
505
|
-
• Agent Insight: <1–2 sentences explaining why this happens in simple terms>
|
|
506
|
-
• Recommendation: <concrete recommendation>
|
|
507
|
-
• Evidence: <screenshot path, local file link, and cloud dashboard link if linked>
|
|
508
|
-
|
|
509
|
-
How should we triage this finding?
|
|
510
|
-
"""
|
|
497
|
+
- **Question:** "Finding #<N>/<total> [<SEVERITY>]: <title> on <Screen title or URL, Step N> — How to triage?"
|
|
511
498
|
- **Options:**
|
|
512
|
-
1. "[Recommended] Queue to fix (
|
|
513
|
-
2. "
|
|
514
|
-
3. "
|
|
515
|
-
4. "
|
|
516
|
-
5. "
|
|
517
|
-
- Otherwise (CLI / text-only):
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
2. Dismiss / Skip (not relevant or walker error)
|
|
521
|
-
3. Discuss / Explore trade-offs
|
|
522
|
-
4. Fix immediately (leave triage now)
|
|
523
|
-
5. Next finding (keep open / defer)
|
|
524
|
-
Reply '1' to queue fix [default], select 2-5, or describe your decision:
|
|
499
|
+
1. "[Recommended] Queue to fix (<brief 3-5 word fix summary>)"
|
|
500
|
+
2. "Queue all remaining recommended fixes (batch accept)"
|
|
501
|
+
3. "Dismiss / Skip (<brief reason if obvious, e.g. keep current design>)"
|
|
502
|
+
4. "Discuss / Explore trade-offs"
|
|
503
|
+
5. "Fix immediately (leave triage now)"
|
|
504
|
+
- Otherwise (CLI / text-only conversational fallback):
|
|
505
|
+
> **Recommended Action:** Queue to fix (<brief 3-5 word fix summary>).
|
|
506
|
+
> Say **"queue"** (or **"queue all"**), **"dismiss"** (to teach a rule), or **"discuss"** to explore trade-offs.
|
|
525
507
|
|
|
526
508
|
2. **Handle the user's decision**:
|
|
527
509
|
- **Queue to fix [Recommended]**:
|
|
528
510
|
Add finding to the session's fix queue.
|
|
529
511
|
Tell the user in 1 line: "✓ Queued for fix. Ready for finding #<N+1>?" and advance immediately.
|
|
530
512
|
Do NOT edit code or leave triage yet — complete triage across all findings first.
|
|
531
|
-
- **Skip / Dismiss**:
|
|
532
|
-
If
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
513
|
+
- **Skip / Dismiss (Load-Bearing Guidance Learning)**:
|
|
514
|
+
**Never infer dismissal rationale silently.** If the user has not yet explained why this finding is dismissed, prompt them directly in conversational chat:
|
|
515
|
+
> "To teach future walkthroughs what not to report, why should this be dismissed?
|
|
516
|
+
> • **By design / intended behavior:** (Why this pattern is expected)
|
|
517
|
+
> • **Walker error:** (What the walker misread or did wrong)
|
|
518
|
+
> • **Out of scope:** (Non-issue for this product/flow)
|
|
519
|
+
> What specific rule should future walkers follow?"
|
|
520
|
+
|
|
521
|
+
Once the user provides their reasoning (or if already clear from discussion):
|
|
522
|
+
Derive a concise, actionable guidance rule string.
|
|
523
|
+
Execute: `iamu triage <slug> --status dismissed --reason <reason> --note "<user rationale>" --rule "<rule string>"`.
|
|
524
|
+
Tell the user in 1 line:
|
|
525
|
+
`✓ Dismissed (<reason>) — Guidance rule taught to future walks in iamu/guidance/<slug>.md: "<rule string>"`
|
|
539
526
|
Then advance to finding #<N+1>.
|
|
540
|
-
- **Discuss /
|
|
541
|
-
|
|
527
|
+
- **Discuss / Explore trade-offs (Conversational Dialogue Mode — NO MODAL LOOPS)**:
|
|
528
|
+
When the user chooses "Discuss", asks a question, or challenges an idea:
|
|
529
|
+
**DO NOT invoke `ask_question` or present multiple-choice menus.** Stay in natural conversational chat as a senior pair programmer:
|
|
542
530
|
• **Root Cause:** 1 sentence on why the UI or workflow behaves this way (and source file if known).
|
|
543
531
|
• **Persona Friction:** 1 sentence on the practical operational consequence.
|
|
544
|
-
• **Recommended Fix & Trade-off:**
|
|
545
|
-
|
|
532
|
+
• **Recommended Fix & Trade-off:** Concrete architectural approach, competitor benchmarks, and trade-offs.
|
|
533
|
+
Converse naturally with the user back and forth in plain markdown text. Answer follow-up questions, inspect code, and discuss options until a conclusion is reached.
|
|
534
|
+
**Only when a consensus is reached** (e.g. user says: "let's do that", "queue it", "dismiss it", "fix it now"):
|
|
535
|
+
Record the agreed decision and advance to finding #<N+1>. Do NOT trap the user with modal dialogs after each conversational turn.
|
|
546
536
|
- **Fix immediately (leave triage now)**:
|
|
547
537
|
If the user explicitly chooses to drop out of triage and fix right now:
|
|
548
538
|
Make the code edit, verify it loads (or check local tests/types), update the finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
|
|
@@ -564,11 +554,8 @@ When the user asks to review findings one by one:
|
|
|
564
554
|
2. "Re-run walkthrough to verify dismissed items first"
|
|
565
555
|
3. "Done for now (keep fixes open in iamu/findings/)"
|
|
566
556
|
- Otherwise (CLI / text-only):
|
|
567
|
-
Apply fixes for
|
|
568
|
-
|
|
569
|
-
2. Re-run walkthrough to verify dismissed items first
|
|
570
|
-
3. Done for now (keep fixes open in iamu/findings/)
|
|
571
|
-
Reply '1' to apply fixes [default], or select 2-3:
|
|
557
|
+
Triage complete. I recommend: Apply fixes for queued findings in workspace now.
|
|
558
|
+
Proceeding with code fixes — say "re-run first" or "done for now" to adjust.
|
|
572
559
|
|
|
573
560
|
- **Executing the queued fixes:**
|
|
574
561
|
When Option 1 is chosen, apply code edits for each queued finding sequentially in the workspace. Verify the changes once (run test/typecheck suite). Update each finding with `iamu triage <slug> --status addressed --note "<summary of fix>"`.
|
|
@@ -584,10 +571,8 @@ When the user asks to review findings one by one:
|
|
|
584
571
|
1. "[Recommended] Re-run walkthrough to verify fixes hold"
|
|
585
572
|
2. "Done for now (leave verification for later)"
|
|
586
573
|
- Otherwise (CLI / text-only):
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
2. Done for now (leave verification for later)
|
|
590
|
-
Reply '1' to re-run [default], or select 2:
|
|
574
|
+
Fixes applied and validated. I recommend: Re-run walkthrough to verify fixes hold.
|
|
575
|
+
Proceeding with verification re-run — say "done" to leave verification for later.
|
|
591
576
|
|
|
592
577
|
When Option 1 is chosen:
|
|
593
578
|
1. Start the verification run: `iamu start-run <scenario-slug> --target <target> --json`. Note: `start-run` automatically pulls all awaiting findings into `revisit` places in `walkthrough.json`.
|