@iamu-dev/iamu 0.2.0-beta.9 → 0.3.0-beta.0
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/adapters/claude-plugin.d.ts +13 -0
- package/dist/adapters/registry.d.ts +6 -0
- package/dist/adapters/types.d.ts +19 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +5372 -1594
- package/dist/build-info.d.ts +53 -0
- package/dist/cloud-url.d.ts +19 -0
- package/dist/commands/auth-http.d.ts +37 -0
- package/dist/commands/auth-project-choice.d.ts +74 -0
- package/dist/commands/auth-token-input.d.ts +21 -0
- package/dist/commands/auth.d.ts +84 -0
- package/dist/commands/browse-actions.d.ts +61 -0
- package/dist/commands/browse-driver.d.ts +121 -0
- package/dist/commands/browse.d.ts +195 -0
- package/dist/commands/cloud-push.d.ts +27 -0
- package/dist/commands/complete.d.ts +132 -0
- package/dist/commands/completion.d.ts +2 -0
- package/dist/commands/context.d.ts +81 -0
- package/dist/commands/credentials.d.ts +144 -0
- package/dist/commands/diff-filter.d.ts +11 -0
- package/dist/commands/doctor.d.ts +33 -0
- package/dist/commands/edit-entity.d.ts +8 -0
- package/dist/commands/evaluate.d.ts +34 -0
- package/dist/commands/explore-crawl.d.ts +67 -0
- package/dist/commands/explore.d.ts +53 -0
- package/dist/commands/findings.d.ts +7 -0
- package/dist/commands/init.d.ts +27 -0
- package/dist/commands/instructions-walk.d.ts +69 -0
- package/dist/commands/instructions.d.ts +30 -0
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/live-run-client.d.ts +127 -0
- package/dist/commands/match.d.ts +15 -0
- package/dist/commands/mcp-config.d.ts +10 -0
- package/dist/commands/new-entity.d.ts +34 -0
- package/dist/commands/new-finding.d.ts +25 -0
- package/dist/commands/open.d.ts +8 -0
- package/dist/commands/port.d.ts +17 -0
- package/dist/commands/preflight.d.ts +26 -0
- package/dist/commands/prune.d.ts +11 -0
- package/dist/commands/pull.d.ts +5 -0
- package/dist/commands/register-cloud.d.ts +5 -0
- package/dist/commands/register-findings.d.ts +5 -0
- package/dist/commands/register-project.d.ts +5 -0
- package/dist/commands/register-walkthrough.d.ts +5 -0
- package/dist/commands/register.d.ts +10 -0
- package/dist/commands/report.d.ts +3 -0
- package/dist/commands/serve.d.ts +11 -0
- package/dist/commands/set-entity.d.ts +46 -0
- package/dist/commands/skills.d.ts +34 -0
- package/dist/commands/start-run.d.ts +56 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/step-numbering.d.ts +87 -0
- package/dist/commands/step.d.ts +96 -0
- package/dist/commands/summary.d.ts +20 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/triage.d.ts +21 -0
- package/dist/commands/update.d.ts +4 -0
- package/dist/commands/validate.d.ts +11 -0
- package/dist/commands/view-results.d.ts +9 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +5369 -1637
- package/dist/sync-mcp/fatal.d.ts +42 -0
- package/dist/sync-mcp/server.d.ts +1 -0
- package/dist/sync-mcp/tools.d.ts +12 -0
- package/dist/templates/prompts/walk.md +62 -37
- package/dist/templates/skills/iamu-findings.md +118 -42
- package/dist/templates/skills/iamu-new.md +106 -60
- package/dist/templates/skills/iamu-propose.md +36 -25
- package/dist/templates/skills/iamu-run.md +273 -114
- package/dist/templates/skills/iamu-setup.md +252 -176
- package/dist/templates/skills/iamu-stage.md +164 -0
- package/dist/templates/skills/iamu-status.md +16 -11
- package/dist/templates.d.ts +10 -0
- package/dist/ui/journey-diff.d.ts +3 -0
- package/dist/ui/json.d.ts +6 -0
- package/dist/ui/logger.d.ts +5 -0
- package/dist/ui/panic.d.ts +11 -0
- package/dist/ui/symbols.d.ts +11 -0
- package/dist/ui/table.d.ts +20 -0
- package/dist/ui/update-check.d.ts +6 -0
- package/dist/worktree-state.d.ts +49 -0
- package/package.json +8 -8
- package/dist/eval/gemini-eval-cli.js +0 -976
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: iamu-new
|
|
3
|
-
description:
|
|
3
|
+
description: Use when creating or authoring a new scenario, persona, or situation narrative with a known testing intent, or when the user wants to test a specific user flow or situation.
|
|
4
4
|
generatedBy: __IAMU_VERSION__
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -8,8 +8,8 @@ You are a brainstorming partner, not a form filler. Your job is to help the user
|
|
|
8
8
|
|
|
9
9
|
**You bring:**
|
|
10
10
|
- Understanding of the domain from `iamu/context.yml` (actors, jurisdiction, regulations if applicable)
|
|
11
|
-
-
|
|
12
|
-
- Awareness of
|
|
11
|
+
- What the product is for, from `iamu/context.yml` and `iamu/capabilities/` (titles and descriptions)
|
|
12
|
+
- Awareness of what real users actually need to do, whether or not the product supports it today
|
|
13
13
|
|
|
14
14
|
**The user brings:**
|
|
15
15
|
- Knowledge of which area they want to test (or nothing — you propose)
|
|
@@ -17,6 +17,8 @@ You are a brainstorming partner, not a form filler. Your job is to help the user
|
|
|
17
17
|
|
|
18
18
|
Scenarios are written in **problem-space only** — they describe human situations, not UI flows. No screen references, no button names, no feature names. The scenario says "a shift leader needs to hand off open incidents under time pressure" — the walkthrough discovers whether the product supports that.
|
|
19
19
|
|
|
20
|
+
**Drafting is not staging.** Do not read the product's source code, routes, `iamu/testability.md` or `iamu explore` output while drafting, and do not decide entry pages, starting data, accounts or mocks. Knowing what the product already does pulls a draft toward what was built and away from what the person needs. Getting the product into the state a situation needs happens when the scenario first runs: `iamu-run` stages it (start page, expected data, approximation guidance, which account the persona uses) before the walk.
|
|
21
|
+
|
|
20
22
|
**Methodology prompts:** Before drafting, read the methodology files. These contain the quality standards for each artifact:
|
|
21
23
|
- `iamu/.prompts/persona.md` — how to write a durable persona
|
|
22
24
|
- `iamu/.prompts/outline.md` — how to write a situation outline
|
|
@@ -45,68 +47,105 @@ Determine the mode based on `$ARGUMENTS` and user intent:
|
|
|
45
47
|
iamu new persona --name "<Name>" --role "<Role>" --disposition "<Disposition>" --json
|
|
46
48
|
```
|
|
47
49
|
5. Write the persona's background narrative and test expectations as the markdown body.
|
|
48
|
-
6.
|
|
49
|
-
7.
|
|
50
|
-
|
|
50
|
+
6. Run `iamu validate --all`.
|
|
51
|
+
7. Summarize: persona created in `iamu/personas/<slug>.md`. Prompt user: "You can now pair `<slug>` with a scenario draft via `iamu-new`, or propose situations for them via `iamu-propose`." Stop here for standalone persona requests.
|
|
52
|
+
|
|
53
|
+
- **Fast-Path Scenario mode** (when intent, topic, or a candidate from `iamu-propose` is provided or referenced from conversational context, e.g. `iamu-new "checkout friction"`, "let's do candidate 2", "draft that", "option 1"):
|
|
54
|
+
If the user refers to a candidate proposed in the current session, resolve that candidate's details directly from the conversation history.
|
|
55
|
+
Do NOT drag the user through multiple question modals. Skip Step 2 entirely!
|
|
56
|
+
Jump directly to Step 3 and present the **Complete Scenario Spec-Sheet** (Situation + Bound Persona + Evaluation Checkpoint + Walker Brief) for **1-click / 1-key acceptance**.
|
|
51
57
|
|
|
52
|
-
- **Scenario mode** (
|
|
53
|
-
Proceed through
|
|
54
|
-
Inspect `iamu/personas/` (`iamu list personas`) first. If personas already exist in the casting panel (e.g. seeded during `iamu-setup`), deliberately frame scenario
|
|
55
|
-
If the user gives a direction, ground it in the
|
|
58
|
+
- **Exploratory Scenario mode** (no arguments or broad exploration):
|
|
59
|
+
Proceed through Step 2 (Propose complete scenario bundles) and Step 3.
|
|
60
|
+
Inspect `iamu/personas/` (`iamu list personas`) first. If personas already exist in the casting panel (e.g. seeded during `iamu-setup`), deliberately frame scenario proposals around those existing cast members to build longitudinal test history, rather than inventing new personas.
|
|
61
|
+
If the user gives a direction, ground it in the domain: who in `context.yml` deals with this, how often, under what pressure, and what goes wrong for them? Propose what those people need to get done, not what the product happens to offer.
|
|
56
62
|
|
|
57
|
-
### 2. Propose
|
|
63
|
+
### 2. Propose Complete Scenario Bundles (Exploratory Mode)
|
|
58
64
|
|
|
59
|
-
|
|
65
|
+
Present 2–3 scannable scenario proposals. Each proposal MUST bundle the situation narrative, bound persona (prioritizing existing cast members), and human evaluation checkpoint:
|
|
60
66
|
|
|
61
67
|
```
|
|
62
|
-
1. <Title> (<
|
|
68
|
+
1. <Title> (<Primary Capability>)
|
|
69
|
+
• Persona: <Persona Name> (<Role>) — Reused from cast / New candidate
|
|
63
70
|
• Tension: <1 concise sentence on the human or organizational tension>
|
|
64
|
-
•
|
|
71
|
+
• Evaluation Checkpoint: "<Concrete binary yes/partial/no question>"
|
|
65
72
|
|
|
66
|
-
2. <Title> (<
|
|
73
|
+
2. <Alternative Title> (<Capability>)
|
|
74
|
+
• Persona: <Alternative Persona Name> (<Role>)
|
|
67
75
|
• Tension: <1 concise sentence>
|
|
68
|
-
•
|
|
69
|
-
|
|
70
|
-
3. <Title> (<Type> · <existing persona slug or context actor>)
|
|
71
|
-
• Tension: <1 concise sentence>
|
|
72
|
-
• Stress-tests: <What this reveals about the product>
|
|
76
|
+
• Evaluation Checkpoint: "<Concrete binary question>"
|
|
73
77
|
```
|
|
74
78
|
|
|
75
|
-
|
|
79
|
+
**Interactive Decision:**
|
|
80
|
+
- If your environment provides an interactive user-prompt tool (e.g. `ask_question`, `ask_followup_question`), invoke it:
|
|
81
|
+
- Question: "Scaffold this scenario for walkthrough?"
|
|
82
|
+
- Options:
|
|
83
|
+
1. "[Recommended] Scaffold '<Bundle 1 Title>' as <Persona 1 Name>"
|
|
84
|
+
2. "Switch persona: Walk as <Alternative Persona Name> (<Role>)"
|
|
85
|
+
3. "Select alternative: '<Bundle 2 Title>' as <Persona 2 Name>"
|
|
86
|
+
4. "Customize situation, checkpoint, or brief"
|
|
87
|
+
- Otherwise (in CLI or text-only environments):
|
|
88
|
+
|
|
89
|
+
Scaffold this scenario for walkthrough?
|
|
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
|
|
76
94
|
|
|
77
|
-
|
|
95
|
+
Reply '1' to scaffold [default], select 2-3, or type adjustments:
|
|
78
96
|
|
|
79
|
-
|
|
97
|
+
*Execution Flow:*
|
|
98
|
+
- **Selecting Option 1 (or hitting Enter):** Proceed IMMEDIATELY to Step 6 (Persist everything). Zero intermediate question modals.
|
|
99
|
+
- **Selecting Option 2:** Present the persona switcher (Step 4) then persist.
|
|
100
|
+
- **Selecting Option 3:** Swap primary bundle and prompt to persist.
|
|
101
|
+
- **Selecting Option 4 / typing adjustments:** Expand into Step 3 to refine details before persisting.
|
|
80
102
|
|
|
81
|
-
|
|
103
|
+
### 3. Develop the situation (Scenario Spec-Sheet)
|
|
82
104
|
|
|
83
|
-
|
|
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:
|
|
84
106
|
|
|
85
|
-
|
|
107
|
+
Do NOT output markdown header hashes (`#`, `##`, `###`) or markdown blockquote syntax (`>`), which render as stray hashes or `|` pipe characters in terminal frontends. Keep the narrative capped at 2–3 punchy sentences (problem-space only, zero UI terms).
|
|
86
108
|
|
|
87
109
|
```
|
|
88
|
-
|
|
110
|
+
Scenario Spec-Sheet: <Outline Title>
|
|
89
111
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
112
|
+
Situation & Stakes:
|
|
113
|
+
Narrative: <2–3 sentences problem-space only, zero UI terms>
|
|
114
|
+
Tension: <Colliding needs in X vs Y format or "None">
|
|
115
|
+
Evaluation Checkpoint: <Concrete binary yes/partial/no question scored at evaluation>
|
|
94
116
|
|
|
95
117
|
Roles with Stakes:
|
|
96
|
-
• <Role 1>: <Stake>
|
|
97
|
-
• <Role 2>: <Stake>
|
|
118
|
+
• <Role 1>: <Stake>
|
|
119
|
+
• <Role 2>: <Stake>
|
|
120
|
+
|
|
121
|
+
Persona & Brief:
|
|
122
|
+
Persona: <Existing slug from panel OR new candidate: Name (Role)>
|
|
123
|
+
Friction: <Diagnostic friction trigger and bounce risk>
|
|
124
|
+
Walker Brief:
|
|
125
|
+
"<First-person brief in persona voice (2–3 sentences). Describes what they intend to achieve before touching the product. Written verbatim to scenario markdown body.>"
|
|
126
|
+
```
|
|
98
127
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
128
|
+
**Interactive Draft Confirmation:**
|
|
129
|
+
- If your environment provides an interactive user-prompt tool, invoke it:
|
|
130
|
+
- Question: "Scaffold scenario '<Outline Title>'?"
|
|
131
|
+
- Options:
|
|
132
|
+
1. "[Recommended] Scaffold scenario and prepare walkthrough"
|
|
133
|
+
2. "Switch persona: Walk as <Alternative Persona> (<Role>)"
|
|
134
|
+
3. "Adjust situation, checkpoint, or brief"
|
|
135
|
+
- Otherwise (in CLI or text-only environments):
|
|
103
136
|
|
|
104
|
-
|
|
105
|
-
|
|
137
|
+
Scaffold scenario '<Outline Title>'?
|
|
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:
|
|
106
143
|
|
|
107
|
-
|
|
144
|
+
*Selecting Option 1 or hitting Enter proceeds IMMEDIATELY to Step 6 (Persist everything).*
|
|
108
145
|
|
|
109
|
-
### 4. Pick or
|
|
146
|
+
### 4. Pick or swap personas (on demand)
|
|
147
|
+
|
|
148
|
+
Triggered only when the user selects "Switch persona", when exploring standalone personas, or when no existing persona fits:
|
|
110
149
|
|
|
111
150
|
**Check existing personas first:**
|
|
112
151
|
Inspect `iamu/personas/` (`iamu list personas`). If an existing persona in the casting panel is a natural fit for this situation, propose them first to build longitudinal test history:
|
|
@@ -124,7 +163,14 @@ If no existing persona fits, or if testing an uncovered perspective is needed, p
|
|
|
124
163
|
• Why this tests something different: <Unique perspective or workflow divergence>
|
|
125
164
|
```
|
|
126
165
|
|
|
127
|
-
|
|
166
|
+
**Interactive Persona Selection:**
|
|
167
|
+
- If your environment provides an interactive user-prompt tool, invoke it with the candidates:
|
|
168
|
+
- Question: "Which persona should walk this scenario?"
|
|
169
|
+
- Options:
|
|
170
|
+
1. "[Recommended] Bind existing persona: <slug> (<role>)" (if one fits)
|
|
171
|
+
2. "Create candidate: <Name> (<Role>)"
|
|
172
|
+
3. "Leave as draft (no persona bound yet)"
|
|
173
|
+
- Otherwise, prompt: "Pick a persona (1–N), 'new' to propose candidates, or 'skip' to save as draft without a persona."
|
|
128
174
|
|
|
129
175
|
### 5. Classify into capabilities
|
|
130
176
|
|
|
@@ -145,36 +191,36 @@ Use CLI commands to scaffold entities with valid frontmatter. The CLI generates
|
|
|
145
191
|
|
|
146
192
|
**1. Capability** (only if new):
|
|
147
193
|
```bash
|
|
148
|
-
iamu new capability --name "Incident Reporting"
|
|
194
|
+
iamu new capability --name "Incident Reporting" \
|
|
195
|
+
--description "What staff can do when something goes wrong on shift" \
|
|
196
|
+
--area "Operations" \
|
|
197
|
+
--json
|
|
149
198
|
```
|
|
199
|
+
Leave `--paths` out: route prefixes are product structure, not part of the situation. Without them, `iamu explore coverage` matches pages whose first path segment equals the capability slug; add `paths` to the capability file later, outside drafting, if that groups the area's pages wrong.
|
|
150
200
|
|
|
151
201
|
**2. Outline** (the situation — problem-space, no UI references):
|
|
152
202
|
```bash
|
|
153
|
-
iamu new outline --name "Busy shift handoff"
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
narrative: "A shift leader needs to hand off a set of open incidents..."
|
|
161
|
-
human_tests:
|
|
162
|
-
- id: ht-1
|
|
163
|
-
question: "Could the incoming leader act immediately without asking clarifying questions?"
|
|
203
|
+
iamu new outline --name "Busy shift handoff" \
|
|
204
|
+
--capability incident-reporting \
|
|
205
|
+
--additional-capabilities team-access \
|
|
206
|
+
--tension "Incident details are fragmented across multiple logs while shift time expires" \
|
|
207
|
+
--narrative "A shift leader needs to hand off a set of open incidents to the incoming supervisor." \
|
|
208
|
+
--human-test "Could the incoming leader act immediately without asking clarifying questions?" \
|
|
209
|
+
--json
|
|
164
210
|
```
|
|
211
|
+
The `--capability`, `--additional-capabilities`, `--tension`, `--narrative`, and repeatable `--human-test` flags populate outline frontmatter directly. The outline body stays empty. If specialized fields like `situation_roles` are needed, edit the generated frontmatter.
|
|
165
212
|
|
|
166
213
|
**3. Persona** (if user picked a new persona to scaffold):
|
|
167
214
|
```bash
|
|
168
215
|
iamu new persona --name "Maria Gomez" --role "Site Safety Coordinator" --disposition "Time-pressured, prefers physical paper over complex forms" --json
|
|
169
216
|
```
|
|
170
|
-
The `--role` and `--disposition` flags populate frontmatter directly.
|
|
217
|
+
The `--role` and `--disposition` flags populate frontmatter directly. Leave `access` out — which product account the persona uses is decided when the scenario is staged in `iamu-run`. Write the persona's background narrative and test expectations as the markdown body.
|
|
171
218
|
|
|
172
219
|
**4. Scenario** (the binding):
|
|
173
220
|
```bash
|
|
174
|
-
iamu new scenario --name "maria-gomez--busy-shift-handoff" --outline busy-shift-handoff --persona maria-gomez
|
|
221
|
+
iamu new scenario --name "maria-gomez--busy-shift-handoff" --outline busy-shift-handoff --persona maria-gomez --body "<First-person brief in persona voice (3–5 sentences)>" --json
|
|
175
222
|
```
|
|
176
|
-
|
|
177
|
-
`--outline` is required. `--persona` is optional (omit for drafts). Pass `--state-description` and `--state-approximation` if preconditions were defined in step 3 to populate the scenario's `state:` frontmatter automatically.
|
|
223
|
+
`--outline` is required. `--persona` is optional (omit for drafts). Do not pass `--entry` or the `--state-*` flags here: where the walk starts and what data it needs are set when `iamu-run` stages the scenario. If the situation begins somewhere specific (the persona follows a link from an email, a video, a search result), say so in the narrative or brief in the persona's words; staging turns that into a start page.
|
|
178
224
|
|
|
179
225
|
For drafts (no persona): omit `--persona`, omit `--body`.
|
|
180
226
|
|
|
@@ -200,7 +246,7 @@ Run `iamu validate --all` to verify all entities before reporting done.
|
|
|
200
246
|
|
|
201
247
|
- **Brainstorm, don't fill forms.** Propose varied seeds. Challenge assumptions. The best scenarios are ones the user hadn't considered.
|
|
202
248
|
- **Problem-space only.** Scenarios describe human situations — never UI, screens, buttons, or features. The walkthrough discovers whether the product supports the situation.
|
|
203
|
-
- **Ground in the codebase.**
|
|
249
|
+
- **Ground in the domain, not the codebase.** Start from what the persona's week demands. A situation the product cannot support yet is a good scenario: the walk shows the gap with evidence.
|
|
204
250
|
- **Present before creating.** Show situation, personas, and capability to the user before writing files.
|
|
205
251
|
- **Scenario vocabulary.** Say "scenario" in output, never "outline" or "capability."
|
|
206
252
|
- **Multiple personas surface different problems.** A manager, a field worker, and an auditor will find completely different issues in the same situation. Propose personas that test the product differently, not personas that are cosmetically varied.
|
|
@@ -209,4 +255,4 @@ Run `iamu validate --all` to verify all entities before reporting done.
|
|
|
209
255
|
- **Capability is quiet.** High-confidence matches fire silently.
|
|
210
256
|
- **Slug references are load-bearing.** Write referenced entities before the entities that reference them.
|
|
211
257
|
- **Validate before done.** Always run `iamu validate --all` after writing entities.
|
|
212
|
-
- **Use CLI for scaffolding.** `iamu new <type>` creates valid frontmatter with UUIDs.
|
|
258
|
+
- **Use CLI for scaffolding.** `iamu new <type>` creates valid frontmatter with UUIDs. Pass flags (`--role`, `--disposition`, `--capability`, `--tension`, `--human-test`) directly instead of manual YAML editing.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: iamu-propose
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks what or who to test, requests scenario or persona suggestions, seeks brainstorming on test coverage, or asks "what should we test next?".
|
|
4
4
|
generatedBy: __IAMU_VERSION__
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -25,15 +25,13 @@ Every persona candidate must have **diagnostic friction**:
|
|
|
25
25
|
|
|
26
26
|
## Prerequisites
|
|
27
27
|
|
|
28
|
-
Before starting, check that `iamu/context.yml` exists and has content. If it is missing or empty, stop:
|
|
29
|
-
|
|
30
|
-
> No project context found. Run `iamu-setup` first — proposals need domain grounding to avoid shallow thinking.
|
|
28
|
+
Before starting, check that `iamu/context.yml` exists and has content. If it is missing or empty, stop and inform the user: "No project context found. Run `iamu-setup` first — proposals need domain grounding to avoid shallow thinking."
|
|
31
29
|
|
|
32
30
|
If context is thin (few actors, sparse notes), say so upfront — "your context has few actors and sparse notes; proposals will be shallow. Consider enriching context first."
|
|
33
31
|
|
|
34
32
|
## Steps
|
|
35
33
|
|
|
36
|
-
### 1. Load domain context
|
|
34
|
+
### 1. Load domain context
|
|
37
35
|
|
|
38
36
|
Read `iamu/context.yml`. Extract and hold:
|
|
39
37
|
- **Domain + industry** — what world does this product operate in?
|
|
@@ -41,20 +39,19 @@ Read `iamu/context.yml`. Extract and hold:
|
|
|
41
39
|
- **Governed_by** — regulations and standards (if applicable). These create structural tensions in regulated domains.
|
|
42
40
|
- **Notes body** — extended context, often containing workflow descriptions, pain points, organizational dynamics.
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
- **Reachable surfaces:** Ground candidates in reachable routes. Avoid proposing scenarios for product areas with no navigable surfaces.
|
|
46
|
-
- **Untestable boundaries:** Strictly avoid proposing scenarios in flows documented as untestable (e.g. un-mocked live payment gateways, SMS dispatch, third-party SSO).
|
|
47
|
-
- **Mocks & Fixtures:** Note which candidates require existing database seeds or mock handlers.
|
|
42
|
+
**Stay in the problem space.** Proposals come from the domain, not from the product's code, routes, pages or test setup. Do not read source files, `iamu/testability.md`, or `iamu explore` output while proposing, and never put a route, URL or screen into a candidate. Whether and how a situation can be set up in the product is decided when it first runs (`iamu-run` stages it), not here — a situation the product cannot support is worth walking: the persona hitting that wall is the finding.
|
|
48
43
|
|
|
49
44
|
### 2. Load existing coverage
|
|
50
45
|
|
|
51
46
|
Read existing entities to understand what's already been tested:
|
|
52
|
-
- `iamu/capabilities/` — what product areas exist?
|
|
53
|
-
- `iamu/outlines/` — what situations are already drafted?
|
|
47
|
+
- `iamu/capabilities/` — what product areas exist? Use each capability's title and description only; its `paths` are route prefixes and stay out of proposals.
|
|
48
|
+
- `iamu/outlines/` — what situations are already drafted, and which capability each one covers?
|
|
54
49
|
- `iamu/scenarios/` — what's already bound to personas?
|
|
55
50
|
- `iamu/personas/` — who do we already have in our casting panel?
|
|
56
51
|
|
|
57
|
-
|
|
52
|
+
**Find untested product areas.** A capability no outline names (as `capability` or in `additional_capabilities`) is an area no persona has been near. Treat it as a prompt for the domain question — "who in this domain needs what this area is for, and when?" — never as a place to send a persona.
|
|
53
|
+
|
|
54
|
+
Build a coverage picture: which capabilities have scenarios? Which actors from `context.yml` lack personas? Which kinds of situation (routine, deadline, handover, mistake to correct) are missing? Where are the gaps?
|
|
58
55
|
|
|
59
56
|
### 3. Determine focus
|
|
60
57
|
|
|
@@ -62,7 +59,7 @@ Four entry paths based on `$ARGUMENTS`:
|
|
|
62
59
|
|
|
63
60
|
- **Persona / Tester panel** (e.g. `iamu-propose "personas"`, `"who else should we test with?"`, `"propose new personas"`) — analyze which actors from `context.yml` lack personas in `iamu/personas/`. Focus proposals on creating durable, diagnostically biased personas for uncovered roles.
|
|
64
61
|
- **Area or capability** (e.g. `iamu-propose "employee provisioning"`) — focus proposals on this area. Match against capabilities and context actors/workflows.
|
|
65
|
-
- **Open-ended** (e.g. `iamu-propose`, `iamu-propose "what's missing?"`) — analyze coverage gaps across
|
|
62
|
+
- **Open-ended** (e.g. `iamu-propose`, `iamu-propose "what's missing?"`) — analyze coverage gaps across scenarios and persona diversity. Prioritize untested product areas and actors without personas.
|
|
66
63
|
- **Specific tension** (e.g. `iamu-propose "what happens when the safety coordinator disagrees with HR?"`) — use as seed but ground in context. Verify the tension is real (do these actors and dynamics exist in the domain?).
|
|
67
64
|
|
|
68
65
|
### 4. Present candidates (Numbered Cards)
|
|
@@ -77,21 +74,29 @@ Lead with existing coverage using clickable links, then render the candidates:
|
|
|
77
74
|
Existing coverage: <N> scenarios ([<slug1>](iamu/scenarios/<slug1>.md), ...). Uncovered areas: <gaps>.
|
|
78
75
|
|
|
79
76
|
1. <Short situation name> (<Actor from context>)
|
|
77
|
+
• Capability: <Capability slug, e.g. billing-invoicing>
|
|
80
78
|
• Tension: <1-line human/domain tension>
|
|
81
79
|
• Stress-tests: <What this reveals about the product>
|
|
82
80
|
|
|
83
81
|
2. <Short situation name> (<Actor from context>)
|
|
82
|
+
• Capability: <Capability slug, e.g. team-access>
|
|
84
83
|
• Tension: <1-line human/domain tension>
|
|
85
84
|
• Stress-tests: <What this reveals about the product>
|
|
86
85
|
|
|
87
86
|
3. <Short situation name> (<Actor from context>)
|
|
87
|
+
• Capability: <Capability slug, e.g. incident-response>
|
|
88
88
|
• Tension: <1-line human/domain tension>
|
|
89
89
|
• Stress-tests: <What this reveals about the product>
|
|
90
90
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
91
|
+
**Interactive Candidate Selection:**
|
|
92
|
+
- If your environment provides an interactive user-prompt tool (e.g. `ask_question`, `ask_followup_question`), invoke it:
|
|
93
|
+
- Question: "Which scenario candidate would you like to scaffold?"
|
|
94
|
+
- Options:
|
|
95
|
+
1. "[Recommended] Scaffold '<Candidate 1 Title>' (<Actor>)"
|
|
96
|
+
2. "Scaffold '<Candidate 2 Title>' (<Actor>)"
|
|
97
|
+
3. "Scaffold '<Candidate 3 Title>' (<Actor>)"
|
|
98
|
+
- Otherwise (in CLI or text-only environments):
|
|
99
|
+
Reply '1' to scaffold [default], select 2-3, or describe adjustments:
|
|
95
100
|
|
|
96
101
|
#### B. When proposing Personas:
|
|
97
102
|
|
|
@@ -111,16 +116,22 @@ Existing personas: [<slug1>](iamu/personas/<slug1>.md), ... Uncovered roles from
|
|
|
111
116
|
3. <Name> (<Actor role>)
|
|
112
117
|
• Friction & Biases: <Specific friction triggers, skepticism, and bounce risks>
|
|
113
118
|
• Key Expectations & Vocabulary: <Domain terms and spec requirements>
|
|
114
|
-
|
|
115
|
-
Next action:
|
|
116
|
-
Type 1, 2, or 3 to scaffold via iamu-new
|
|
117
|
-
Or describe adjustments
|
|
118
119
|
```
|
|
119
120
|
|
|
121
|
+
**Interactive Persona Selection:**
|
|
122
|
+
- If your environment provides an interactive user-prompt tool (e.g. `ask_question`, `ask_followup_question`), invoke it:
|
|
123
|
+
- Question: "Which persona would you like to add to the casting panel?"
|
|
124
|
+
- Options:
|
|
125
|
+
1. "[Recommended] Add <Name 1> (<Actor role>)"
|
|
126
|
+
2. "Add <Name 2> (<Actor role>)"
|
|
127
|
+
3. "Add <Name 3> (<Actor role>)"
|
|
128
|
+
- Otherwise (in CLI or text-only environments):
|
|
129
|
+
Reply '1' to add [default], select 2-3, or describe adjustments:
|
|
130
|
+
|
|
120
131
|
Ground rules for generation:
|
|
121
132
|
|
|
122
133
|
- **Start from the actor's week, not the feature list.** What does this person actually do on a Tuesday? What goes wrong? What requires judgment?
|
|
123
|
-
- **Use authentic domain vocabulary.** Speak in the language of the domain
|
|
134
|
+
- **Use authentic domain vocabulary.** Speak in the language of the domain (e.g., "skyddsombud" rather than generic "safety representative"), avoiding abstract test jargon.
|
|
124
135
|
- **Prefer mundane frequency over dramatic edge cases.** The scenario that happens every week reveals more than the one that happens once a year.
|
|
125
136
|
- **Structural tensions come from the domain, not from product limitations.** A real tension: "the regulation requires immediate reporting but the coordinator handles 3 sites." A fake tension: "the CSV upload has a 50-row limit."
|
|
126
137
|
- **Never mention the product, its UI, its features, or its limitations.** The scenario exists in the domain. The product encounter happens during the walkthrough.
|
|
@@ -130,9 +141,9 @@ Ground rules for generation:
|
|
|
130
141
|
|
|
131
142
|
### 5. Selection and Handoff
|
|
132
143
|
|
|
133
|
-
- **User picks a scenario candidate** →
|
|
134
|
-
- **User picks a persona candidate** →
|
|
135
|
-
- **User refines** → regenerate
|
|
144
|
+
- **User picks a scenario candidate (e.g. "1" or Enter)** → Immediately invoke `iamu-new` in **Fast-Path Scenario Mode** passing the selected candidate title, actor, primary capability slug (`--capability`), tension, and evaluation checkpoint as structured arguments. Do NOT allow `iamu-new` to restart seed brainstorming. It must present the single Scenario Spec-Sheet directly for instant 1-click persistence.
|
|
145
|
+
- **User picks a persona candidate** → Immediately invoke `iamu-new` in **Standalone Persona Mode** with the candidate's name, role, disposition, and friction triggers to scaffold directly into `iamu/personas/<slug>.md`.
|
|
146
|
+
- **User refines** → regenerate candidates applying the requested adjustments.
|
|
136
147
|
- **User rejects all** → ask what domain area or actor they want to explore. Loop back to step 4.
|
|
137
148
|
|
|
138
149
|
## Guidelines
|