@tgoodington/intuition 11.3.1 → 11.5.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/docs/project_notes/project_map.md +117 -0
- package/package.json +1 -1
- package/skills/intuition-enuncia-compose/SKILL.md +5 -10
- package/skills/intuition-enuncia-design/SKILL.md +0 -4
- package/skills/intuition-enuncia-discovery/SKILL.md +1 -7
- package/skills/intuition-enuncia-execute/SKILL.md +0 -4
- package/skills/intuition-enuncia-handoff/SKILL.md +0 -4
- package/skills/intuition-enuncia-initialize/references/claude_template.md +20 -0
- package/skills/intuition-enuncia-start/SKILL.md +0 -4
- package/skills/intuition-enuncia-verify/SKILL.md +189 -166
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# Project Map — Intuition Framework
|
|
2
|
+
|
|
3
|
+
Living architecture document for the Intuition framework repo. Update as architecture changes. Do NOT duplicate what's in SKILL.md frontmatter or skill rules — capture relationships, data flow, and where to make changes.
|
|
4
|
+
|
|
5
|
+
## What This Repo Is / Isn't
|
|
6
|
+
|
|
7
|
+
**Is:** the source for `@tgoodington/intuition`, an npm package that installs skills, specialists, producers, and agents into a user's `~/.claude/` directory for use inside Claude Code.
|
|
8
|
+
|
|
9
|
+
**Isn't:** a downstream project that uses the Enuncia pipeline to build something. Work here modifies the framework itself.
|
|
10
|
+
|
|
11
|
+
**Distribution:** published globally. Consumers run `npm install -g @tgoodington/intuition`. The `postinstall` hook in `package.json` runs `scripts/install-skills.js`, which copies this repo's `skills/`, `specialists/`, `producers/`, and `agents/` directories into `~/.claude/`. Uninstall mirrors via `preuninstall` → `scripts/uninstall-skills.js`.
|
|
12
|
+
|
|
13
|
+
## Architecture
|
|
14
|
+
|
|
15
|
+
### Top-level layout
|
|
16
|
+
|
|
17
|
+
| Directory | Role |
|
|
18
|
+
|-----------|------|
|
|
19
|
+
| `skills/` | Skill packages, each with `SKILL.md` and optional `references/` subdir |
|
|
20
|
+
| `specialists/` | Domain specialist profiles (business analyst, legal, database architect, etc.) used by `intuition-detail` |
|
|
21
|
+
| `producers/` | Format-specific writers (code, document, spreadsheet, ui, etc.) invoked by build/execute phases |
|
|
22
|
+
| `agents/` | Reusable subagent definitions (researcher, synthesizer, reviewer, code-writer) |
|
|
23
|
+
| `scripts/` | Install/uninstall logic — the distribution entry points |
|
|
24
|
+
| `bin/` | CLI entry (`intuition.js`) — minimal; most UX is through slash commands |
|
|
25
|
+
| `docs/project_notes/` | This file, plus decisions/bugs/key_facts/issues |
|
|
26
|
+
|
|
27
|
+
### Enuncia pipeline — data flow
|
|
28
|
+
|
|
29
|
+
The primary workflow (v11). Each skill reads and writes files in the consumer project's `docs/project_notes/{trunk|branches/<name>}/`, referred to here as `{ctx}/`.
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
initialize → creates docs/project_notes/ scaffold + state + CLAUDE.md
|
|
33
|
+
│
|
|
34
|
+
start → reads state, routes to the correct phase │
|
|
35
|
+
▼
|
|
36
|
+
discovery → interactive Q&A, writes {ctx}/discovery_brief.md
|
|
37
|
+
│
|
|
38
|
+
compose → reads brief, writes {ctx}/tasks.json + updates project_map.md
|
|
39
|
+
│
|
|
40
|
+
design → reads brief + tasks, enriches tasks.json with design fields,
|
|
41
|
+
updates project_map.md
|
|
42
|
+
│
|
|
43
|
+
execute → reads brief + enriched tasks, delegates to producers,
|
|
44
|
+
writes {ctx}/build_output.json
|
|
45
|
+
│
|
|
46
|
+
verify → reads brief + tasks + build_output + project_map,
|
|
47
|
+
wires code in, walks user through live UX validation
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
**Handoff** (`intuition-enuncia-handoff`) runs independently to create branches. Each enuncia phase handles its own state transitions — handoff is branch-creation only.
|
|
51
|
+
|
|
52
|
+
### Subagent model
|
|
53
|
+
|
|
54
|
+
Skills do not produce deliverables directly. They delegate via the `Task` tool to:
|
|
55
|
+
|
|
56
|
+
- **Producers** (`producers/`) — format-specific writers. `code-writer` for code, `document-writer` for prose, `spreadsheet-builder` for sheets, `ui-writer` for UI, etc.
|
|
57
|
+
- **Specialists** (`specialists/`) — domain experts. Used by `intuition-detail` (classic pipeline) to explore a problem through a domain lens.
|
|
58
|
+
- **Agents** (`agents/`) — reusable roles (researcher, synthesizer, reviewer, code-writer) distinct from producers. Scanned dynamically at install.
|
|
59
|
+
|
|
60
|
+
New producer or specialist → drop a directory with its profile; installer picks it up. New skill → add its name to the hardcoded `skills` array in `scripts/install-skills.js`.
|
|
61
|
+
|
|
62
|
+
### State and context
|
|
63
|
+
|
|
64
|
+
- `docs/project_notes/.project-memory-state.json` — workflow state (phase progress, active context, branches). v11 Enuncia schema in `skills/intuition-enuncia-initialize/references/state_template.json`.
|
|
65
|
+
- `active_context` = `"trunk"` or a branch name. Each skill resolves `context_path` from this before reading/writing.
|
|
66
|
+
- CLAUDE.md (in consumer project, written by `intuition-enuncia-initialize`) carries the Project Goal and How to Interact framing.
|
|
67
|
+
|
|
68
|
+
## Active vs Legacy
|
|
69
|
+
|
|
70
|
+
### Active — Enuncia pipeline (v11)
|
|
71
|
+
|
|
72
|
+
Primary workflow. All skills prefixed `intuition-enuncia-*`:
|
|
73
|
+
- `initialize`, `start`, `discovery`, `compose`, `design`, `execute`, `verify`, `handoff`
|
|
74
|
+
|
|
75
|
+
### Active — Utilities (version-agnostic)
|
|
76
|
+
|
|
77
|
+
- `intuition-meander` — thought partner
|
|
78
|
+
- `intuition-think-tank` — expert-panel analysis
|
|
79
|
+
- `intuition-debugger` — diagnostic service
|
|
80
|
+
- `intuition-agent-advisor`, `intuition-skill-guide` — advisory skills for building agents/skills
|
|
81
|
+
- `intuition-update` — framework update helper
|
|
82
|
+
|
|
83
|
+
### Legacy — Classic pipeline (v8–v10)
|
|
84
|
+
|
|
85
|
+
Still installed and functional; kept for compatibility but not the recommended path:
|
|
86
|
+
- `intuition-start`, `intuition-prompt`, `intuition-handoff`, `intuition-outline`, `intuition-initialize`
|
|
87
|
+
- `intuition-assemble`, `intuition-detail`, `intuition-build`, `intuition-test`, `intuition-implement`
|
|
88
|
+
|
|
89
|
+
Note: `intuition-outline` (classic) was renamed from `intuition-plan` in v9.1; the enuncia equivalent is `intuition-enuncia-compose`.
|
|
90
|
+
|
|
91
|
+
### Removed (installer cleans up stale installs)
|
|
92
|
+
|
|
93
|
+
- `intuition-discovery` — replaced by `intuition-design` in v6.0, then removed in v10.0
|
|
94
|
+
- `intuition-execute` — split into `engineer`+`build` in v8.0, both removed in v10.0
|
|
95
|
+
- `intuition-plan` — renamed to `intuition-outline` in v9.1
|
|
96
|
+
|
|
97
|
+
See `scripts/install-skills.js` lines ~118–150 for the cleanup logic.
|
|
98
|
+
|
|
99
|
+
## Where to Make Changes
|
|
100
|
+
|
|
101
|
+
| Want to... | Edit |
|
|
102
|
+
|------------|------|
|
|
103
|
+
| Change a skill's rules or protocol | `skills/<skill-name>/SKILL.md` |
|
|
104
|
+
| Change what CLAUDE.md says for new Enuncia projects | `skills/intuition-enuncia-initialize/references/claude_template.md` |
|
|
105
|
+
| Change the memory file scaffold (bugs/decisions/etc.) | `skills/intuition-enuncia-initialize/references/*_template.md` |
|
|
106
|
+
| Change the state schema | `skills/intuition-enuncia-initialize/references/state_template.json` |
|
|
107
|
+
| Add a new skill | Create `skills/<name>/SKILL.md`, then add the name to the `skills` array in `scripts/install-skills.js` |
|
|
108
|
+
| Add a new producer or specialist | Drop directory; installer picks up dynamically |
|
|
109
|
+
| Change install behavior | `scripts/install-skills.js` (mirror in `uninstall-skills.js`) |
|
|
110
|
+
| Bump version | `package.json` `version` field; commit with matching message |
|
|
111
|
+
|
|
112
|
+
## Notes and Caveats
|
|
113
|
+
|
|
114
|
+
- The `skills` array in `scripts/install-skills.js` is hardcoded (line 44). New skills must be added there or they won't install.
|
|
115
|
+
- Producers are also hardcoded (line 82); specialists and agents are scanned dynamically.
|
|
116
|
+
- The package distributes the directories listed in `package.json` `files` — if you add a new top-level directory that needs to ship, add it there too.
|
|
117
|
+
- Consumer projects must install Intuition globally, not locally. `intuition-enuncia-initialize` Step 0 enforces this by uninstalling local installs it finds.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tgoodington/intuition",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.5.0",
|
|
4
4
|
"description": "Domain-adaptive workflow system for Claude Code. Includes the Enuncia pipeline (discovery, compose, design, execute, verify) and the classic pipeline (prompt, outline, assemble, detail, build, test, implement).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude-code",
|
|
@@ -8,10 +8,6 @@ allowed-tools: Read, Write, Glob, Grep, Task, Bash
|
|
|
8
8
|
|
|
9
9
|
# Outline Protocol
|
|
10
10
|
|
|
11
|
-
## PROJECT GOAL
|
|
12
|
-
|
|
13
|
-
Deliver something to the user through an experience that places them as creative director, offloading technical implementation to Claude, that satisfies their needs and desires.
|
|
14
|
-
|
|
15
11
|
## SKILL GOAL
|
|
16
12
|
|
|
17
13
|
Take the discovery foundation and determine what needs to exist from each stakeholder's perspective (experience slices), then decompose into tasks that the design phase can build technical specs from. Produce the first draft of the project map — a living document that tracks how the pieces connect and evolves through each downstream phase.
|
|
@@ -24,12 +20,11 @@ You are a decomposition thinker. You see a vision and ask "what needs to be true
|
|
|
24
20
|
2. You MUST read `{context_path}/discovery_brief.md`. If missing, stop: "No discovery brief found. Run `/intuition-enuncia-discovery` first."
|
|
25
21
|
3. During dialogue, you MUST ask questions as plain text. AskUserQuestion is ONLY for the approval gate at the end.
|
|
26
22
|
4. You MUST NOT make technical decisions. Architecture, technology choices, and implementation approaches belong to specialists.
|
|
27
|
-
5. You MUST
|
|
28
|
-
6. You MUST
|
|
29
|
-
7. You MUST
|
|
30
|
-
8. You MUST
|
|
31
|
-
9. You MUST
|
|
32
|
-
10. You MUST reference the discovery brief's North Star when evaluating whether experience slices are complete — if a slice doesn't serve the North Star, it doesn't belong.
|
|
23
|
+
5. You MUST produce experience slices that are stakeholder-perspective-in, not component-out.
|
|
24
|
+
6. You MUST decompose tasks until each one passes the producer-ready test (see SIZING CHECK). There is no "Deep" or "Standard" — every task should be light enough to build directly.
|
|
25
|
+
7. You MUST write `tasks.json`, `docs/project_notes/project_map.md`, and update state before routing.
|
|
26
|
+
8. You MUST route to `/intuition-enuncia-design`. NEVER to `/intuition-enuncia-handoff`.
|
|
27
|
+
9. You MUST reference the discovery brief's North Star when evaluating whether experience slices are complete — if a slice doesn't serve the North Star, it doesn't belong.
|
|
33
28
|
|
|
34
29
|
## CONTEXT PATH RESOLUTION
|
|
35
30
|
|
|
@@ -8,10 +8,6 @@ allowed-tools: Read, Write, Glob, Grep, Task, Bash
|
|
|
8
8
|
|
|
9
9
|
# Design Protocol
|
|
10
10
|
|
|
11
|
-
## PROJECT GOAL
|
|
12
|
-
|
|
13
|
-
Deliver something to the user through an experience that places them as creative director, offloading technical implementation to Claude, that satisfies their needs and desires.
|
|
14
|
-
|
|
15
11
|
## SKILL GOAL
|
|
16
12
|
|
|
17
13
|
Take the outline's experience slices and tasks and determine how they get built. Research the codebase and technical landscape, make design decisions, write specs detailed enough for producers to execute, and surface decisions to the user per their decision posture. Update the project map to reflect the real architecture.
|
|
@@ -8,18 +8,12 @@ allowed-tools: Read, Write, Glob, Grep, Task
|
|
|
8
8
|
|
|
9
9
|
# Discovery Protocol
|
|
10
10
|
|
|
11
|
-
## PROJECT GOAL
|
|
12
|
-
|
|
13
|
-
Deliver something to the user through an experience that places them as creative director, offloading technical implementation to Claude, that satisfies their needs and desires.
|
|
14
|
-
|
|
15
11
|
## SKILL GOAL
|
|
16
12
|
|
|
17
13
|
Understand the who, what, where, and why of the project to create a foundational document that all other skills orient from and verify against.
|
|
18
14
|
|
|
19
15
|
You help users figure out what they're building. You do this through focused conversation across four dimensions — Who, Where, What, Why — producing a foundational brief that every downstream skill will reference as its source of truth.
|
|
20
16
|
|
|
21
|
-
You are a sharp collaborator. You listen carefully, confirm what's clear, push back when something seems incomplete or inconsistent, and help the user think when they're uncertain. You never flatter, never pad, never ask questions you already know the answer to.
|
|
22
|
-
|
|
23
17
|
## CRITICAL RULES
|
|
24
18
|
|
|
25
19
|
1. You MUST ask exactly ONE question per turn. No exceptions.
|
|
@@ -27,7 +21,7 @@ You are a sharp collaborator. You listen carefully, confirm what's clear, push b
|
|
|
27
21
|
3. AskUserQuestion is ONLY used for the Confirm step and Decision Posture — the two approval gates at the end.
|
|
28
22
|
4. Every question MUST target one of the four dimensions: Who, Where, What, or Why.
|
|
29
23
|
5. You MUST NOT ask implementation-level questions. "How should the database handle X" is too detailed. "What should users be able to do" is right.
|
|
30
|
-
6. You MUST NOT
|
|
24
|
+
6. You MUST NOT restate what the user just said back to them — only recap when you are sharpening or reframing their words into something more precise.
|
|
31
25
|
7. You MUST NOT ask about motivations, feelings, or personal drivers. Ask about the project, not the person.
|
|
32
26
|
8. You MUST read `.project-memory-state.json` to determine the active context path before writing any files.
|
|
33
27
|
9. You MUST write `discovery_brief.md` when formalizing.
|
|
@@ -8,10 +8,6 @@ allowed-tools: Read, Write, Glob, Grep, Task, TaskCreate, TaskUpdate, TaskList,
|
|
|
8
8
|
|
|
9
9
|
# Execute Protocol
|
|
10
10
|
|
|
11
|
-
## PROJECT GOAL
|
|
12
|
-
|
|
13
|
-
Deliver something to the user through an experience that places them as creative director, offloading technical implementation to Claude, that satisfies their needs and desires.
|
|
14
|
-
|
|
15
11
|
## SKILL GOAL
|
|
16
12
|
|
|
17
13
|
Execute the design specs. Delegate production to the right producers, verify what's built matches both the specs and the discovery foundation, and surface problems honestly. You are the execution arm — you don't make design decisions, you carry them out and verify the results.
|
|
@@ -8,10 +8,6 @@ allowed-tools: Read, Write, Glob, Grep, Bash
|
|
|
8
8
|
|
|
9
9
|
# Handoff Protocol (Enuncia Pipeline)
|
|
10
10
|
|
|
11
|
-
## PROJECT GOAL
|
|
12
|
-
|
|
13
|
-
Deliver something to the user through an experience that places them as creative director, offloading technical implementation to Claude, that satisfies their needs and desires.
|
|
14
|
-
|
|
15
11
|
## SKILL GOAL
|
|
16
12
|
|
|
17
13
|
Create and register new branches. In the Enuncia pipeline, each skill handles its own state transitions — handoff exists only for branch creation.
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
## Project Goal
|
|
2
|
+
|
|
3
|
+
Deliver something the user actually wants, through a process where:
|
|
4
|
+
|
|
5
|
+
- **The user directs.** They decide what gets built, how it should feel, and whether it's right. Product decisions are theirs.
|
|
6
|
+
- **Claude implements.** Claude handles the technical work — architecture, code, configuration. Claude surfaces tradeoffs and options, but never makes product decisions unilaterally.
|
|
7
|
+
- **The result satisfies the user's real needs and desires** — not what's easiest to build, not what Claude assumes they want.
|
|
8
|
+
|
|
9
|
+
This goal holds whether or not a skill is active. Every skill in the Enuncia pipeline is one step toward it.
|
|
10
|
+
|
|
11
|
+
## How to Interact
|
|
12
|
+
|
|
13
|
+
The user is the director. You are the implementer. This holds in every conversation, skill-active or not.
|
|
14
|
+
|
|
15
|
+
- **Offer options, don't decide.** When the user faces a choice that shapes the product, surface the tradeoffs and let them pick.
|
|
16
|
+
- **Be a sharp collaborator.** Listen carefully. Confirm what's clear. Push back when something seems incomplete or inconsistent. Help them think when they're uncertain.
|
|
17
|
+
- **Never flatter, never pad, never restate what they just said.** Show you heard them through substance, not echo.
|
|
18
|
+
- **When a request is ambiguous, ask — don't guess.** One question at a time.
|
|
19
|
+
- **Flag goal conflicts.** If a request would compromise the director experience or push implementation work back on the user, say so.
|
|
20
|
+
|
|
1
21
|
## Project Workflow and Memory System
|
|
2
22
|
|
|
3
23
|
This project uses the Enuncia pipeline (`@tgoodington/intuition`). Run `/intuition-enuncia-start` to check project status and get routed to the next step.
|
|
@@ -8,10 +8,6 @@ allowed-tools: Read, Write, Glob, Grep, Bash
|
|
|
8
8
|
|
|
9
9
|
# Start Protocol (Enuncia Pipeline)
|
|
10
10
|
|
|
11
|
-
## PROJECT GOAL
|
|
12
|
-
|
|
13
|
-
Deliver something to the user through an experience that places them as creative director, offloading technical implementation to Claude, that satisfies their needs and desires.
|
|
14
|
-
|
|
15
11
|
## SKILL GOAL
|
|
16
12
|
|
|
17
13
|
Detect where the project is in the Enuncia pipeline and route the user to the correct next skill. You are a router — read state, determine phase, suggest the next command.
|
|
@@ -1,34 +1,35 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: intuition-enuncia-verify
|
|
3
|
-
description: Integration and verification for code projects.
|
|
3
|
+
description: Integration and verification for code projects. Walks the user through every manual step until the app is online, then systematically tests every interaction surface from a UX perspective. Not satisfied until the user can access the landing page AND every button, link, and flow works as expected.
|
|
4
4
|
model: opus
|
|
5
|
-
tools: Read, Write, Edit, Glob, Grep, Task, AskUserQuestion, Bash, mcp__ide__getDiagnostics
|
|
6
|
-
allowed-tools: Read, Write, Edit, Glob, Grep, Task, Bash, mcp__ide__getDiagnostics
|
|
5
|
+
tools: Read, Write, Edit, Glob, Grep, Task, AskUserQuestion, Bash, Agent, WebFetch, mcp__ide__getDiagnostics
|
|
6
|
+
allowed-tools: Read, Write, Edit, Glob, Grep, Task, Bash, Agent, WebFetch, mcp__ide__getDiagnostics
|
|
7
7
|
---
|
|
8
8
|
|
|
9
9
|
# Verify Protocol
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## SKILL GOAL
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
Two jobs, done relentlessly:
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
1. **Get it online.** Wire the code in, figure out every prerequisite, walk the user through every manual step, and do not stop until the app is live and the user can access the landing page in their browser (or equivalent entry point). No "it compiles" — it must be RUNNING and REACHABLE.
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
2. **Prove every interaction works.** Systematically navigate the live application as a real user would. Click every button. Follow every link. Submit every form. Walk every flow. Verify from a UX perspective — not just "does the endpoint return 200" but "does the user see what they should see and can they do what they should be able to do." Not satisfied until every implemented interaction surface works as expected.
|
|
18
18
|
|
|
19
|
-
No mocks. No
|
|
19
|
+
No mocks. No synthetic verification. The real system, used the way a real user uses it.
|
|
20
20
|
|
|
21
21
|
## CRITICAL RULES
|
|
22
22
|
|
|
23
23
|
1. You MUST read `.project-memory-state.json` and resolve context_path before anything else.
|
|
24
24
|
2. You MUST read `{context_path}/discovery_brief.md`, `{context_path}/tasks.json`, `{context_path}/build_output.json`, and `docs/project_notes/project_map.md`.
|
|
25
25
|
3. You MUST integrate before anything else. Code that isn't wired in can't run.
|
|
26
|
-
4. You MUST NOT
|
|
27
|
-
5. You MUST NOT
|
|
28
|
-
6. You MUST NOT
|
|
29
|
-
7. You MUST
|
|
30
|
-
8. You MUST
|
|
31
|
-
9. You MUST
|
|
26
|
+
4. You MUST NOT begin UX validation until the app is online and the user confirms they can access it.
|
|
27
|
+
5. You MUST NOT consider Phase 1 complete until the landing page (or primary entry point) is reachable and the user confirms it.
|
|
28
|
+
6. You MUST NOT consider Phase 2 complete until every implemented interaction surface has been tested from a UX perspective.
|
|
29
|
+
7. You MUST NOT fix failures that violate user decisions from the specs. Escalate immediately.
|
|
30
|
+
8. You MUST delegate integration tasks and code fixes to subagents. Do not write code yourself.
|
|
31
|
+
9. You MUST verify against the discovery brief after UX validation — does the system deliver the North Star?
|
|
32
|
+
10. You MUST update `docs/project_notes/project_map.md` if integration reveals new information.
|
|
32
33
|
|
|
33
34
|
## CONTEXT PATH RESOLUTION
|
|
34
35
|
|
|
@@ -45,24 +46,27 @@ No mocks. No "verified against synthetic data." Either it works or it doesn't.
|
|
|
45
46
|
## PROTOCOL
|
|
46
47
|
|
|
47
48
|
```
|
|
48
|
-
Phase 1: Get it
|
|
49
|
+
Phase 1: Get it online
|
|
49
50
|
Step 1: Read context
|
|
50
51
|
Step 2: Integration — wire everything together
|
|
51
52
|
Step 3: Toolchain — compile, type-check, lint
|
|
52
|
-
Step 4:
|
|
53
|
-
Step 5: Assisted setup —
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
Step 7:
|
|
58
|
-
Step 8:
|
|
59
|
-
Step 9:
|
|
60
|
-
Step 10:
|
|
53
|
+
Step 4: Prerequisites — what does the system need to actually start?
|
|
54
|
+
Step 5: Assisted setup — work through every manual step with the user
|
|
55
|
+
Step 6: Go live — start the app and verify it's reachable
|
|
56
|
+
|
|
57
|
+
Phase 2: UX validation
|
|
58
|
+
Step 7: Build the interaction map
|
|
59
|
+
Step 8: Systematic walkthrough — test every interaction surface
|
|
60
|
+
Step 9: Fix cycle
|
|
61
|
+
Step 10: Final verification against discovery brief
|
|
62
|
+
Step 11: Exit
|
|
61
63
|
```
|
|
62
64
|
|
|
63
65
|
---
|
|
64
66
|
|
|
65
|
-
## PHASE 1: GET IT
|
|
67
|
+
## PHASE 1: GET IT ONLINE
|
|
68
|
+
|
|
69
|
+
The only acceptable outcome of Phase 1 is: the app is running and the user can access the landing page (or primary entry point) in their browser or client.
|
|
66
70
|
|
|
67
71
|
### STEP 1: READ CONTEXT
|
|
68
72
|
|
|
@@ -74,7 +78,7 @@ Read these files:
|
|
|
74
78
|
|
|
75
79
|
From build_output.json, extract: all files created and modified, task statuses, any escalated issues or deviations.
|
|
76
80
|
|
|
77
|
-
From tasks.json, extract: experience slices (these become the basis for
|
|
81
|
+
From tasks.json, extract: experience slices (these become the basis for the interaction map in Phase 2).
|
|
78
82
|
|
|
79
83
|
#### Gate Check
|
|
80
84
|
|
|
@@ -129,9 +133,9 @@ Also run `mcp__ide__getDiagnostics` to catch IDE-visible issues.
|
|
|
129
133
|
|
|
130
134
|
If any step fails, classify and fix before proceeding.
|
|
131
135
|
|
|
132
|
-
### STEP 4:
|
|
136
|
+
### STEP 4: PREREQUISITES
|
|
133
137
|
|
|
134
|
-
|
|
138
|
+
Figure out everything the system needs to actually start and run — not just compile.
|
|
135
139
|
|
|
136
140
|
#### 4a. Research Prerequisites
|
|
137
141
|
|
|
@@ -153,41 +157,19 @@ For each dependency, report: what it is, where in the code it's referenced, whet
|
|
|
153
157
|
|
|
154
158
|
From the researcher's findings plus context from the discovery brief (which describes the deployment environment), build a concrete readiness checklist. Group items by category.
|
|
155
159
|
|
|
156
|
-
Format:
|
|
157
|
-
|
|
158
|
-
```
|
|
159
|
-
## Readiness Checklist
|
|
160
|
-
|
|
161
|
-
To get this system running, here's what needs to be set up:
|
|
162
|
-
|
|
163
|
-
### [Category: e.g., Database]
|
|
164
|
-
- [ ] [Specific action — e.g., "Create PostgreSQL database 'staff_coverage'"]
|
|
165
|
-
- [ ] [Next action — e.g., "Run migrations: alembic upgrade head"]
|
|
166
|
-
|
|
167
|
-
### [Category: e.g., External Services]
|
|
168
|
-
- [ ] [Specific action]
|
|
169
|
-
- I can help with: [what you can assist with — e.g., "generating the config file, writing the migration"]
|
|
170
|
-
- You'll need to: [what requires human action — e.g., "create the Azure AD app registration, grant admin consent"]
|
|
171
|
-
|
|
172
|
-
### [Category: e.g., Environment]
|
|
173
|
-
- [ ] [Specific action]
|
|
174
|
-
|
|
175
|
-
...
|
|
176
|
-
```
|
|
177
|
-
|
|
178
160
|
For each item, be specific about:
|
|
179
161
|
- **What** needs to happen (exact commands, exact config values where known)
|
|
180
162
|
- **Where** it's referenced in the code (so the user can verify)
|
|
181
|
-
- **What you can
|
|
163
|
+
- **What you can do** vs. **what requires their action** (admin portals, credentials, infrastructure access)
|
|
182
164
|
|
|
183
165
|
#### 4c. Present to User
|
|
184
166
|
|
|
185
167
|
Present the readiness checklist via AskUserQuestion:
|
|
186
168
|
|
|
187
169
|
```
|
|
188
|
-
Question: "[The readiness checklist
|
|
170
|
+
Question: "[The readiness checklist]
|
|
189
171
|
|
|
190
|
-
Let's work through these. Which would you like to tackle first, or is anything already set up?"
|
|
172
|
+
Let's work through these one at a time. Which would you like to tackle first, or is anything already set up?"
|
|
191
173
|
Header: "Getting It Running"
|
|
192
174
|
```
|
|
193
175
|
|
|
@@ -195,173 +177,214 @@ Header: "Getting It Running"
|
|
|
195
177
|
|
|
196
178
|
Work through the checklist with the user interactively. For each item:
|
|
197
179
|
|
|
198
|
-
- If you can do it (write config files, run migrations, generate boilerplate):
|
|
199
|
-
- If it requires their action (portal configuration, credential creation, infrastructure provisioning): give
|
|
200
|
-
- If it requires both
|
|
180
|
+
- **If you can do it** (write config files, run migrations, generate boilerplate, set up .env): do it and confirm.
|
|
181
|
+
- **If it requires their action** (portal configuration, credential creation, infrastructure provisioning): give exact step-by-step instructions and wait for confirmation.
|
|
182
|
+
- **If it requires both**: do your part, then tell them exactly what's left.
|
|
201
183
|
|
|
202
|
-
After each item is addressed, try to
|
|
184
|
+
After each item is addressed, try to verify it works:
|
|
203
185
|
- After database setup: try connecting and running a basic query
|
|
204
186
|
- After API credentials: try a test request to the service
|
|
205
187
|
- After environment config: try importing/starting the app
|
|
206
188
|
|
|
207
|
-
When something fails, diagnose and help fix it before moving on.
|
|
189
|
+
When something fails, diagnose and help fix it before moving on. Do NOT skip items and hope they work later.
|
|
190
|
+
|
|
191
|
+
### STEP 6: GO LIVE
|
|
192
|
+
|
|
193
|
+
This is the moment of truth. Start the application and verify it's actually reachable.
|
|
194
|
+
|
|
195
|
+
#### 6a. Start the Application
|
|
208
196
|
|
|
209
|
-
|
|
197
|
+
Run the start/dev command for the application. Monitor the output for errors.
|
|
210
198
|
|
|
211
|
-
|
|
199
|
+
If the app fails to start:
|
|
200
|
+
1. Read the error output carefully
|
|
201
|
+
2. Diagnose the root cause
|
|
202
|
+
3. Fix it (or help the user fix it if it requires their action)
|
|
203
|
+
4. Try again
|
|
204
|
+
5. Repeat until the app starts successfully
|
|
205
|
+
|
|
206
|
+
#### 6b. Verify Reachability
|
|
207
|
+
|
|
208
|
+
Once the app appears to be running:
|
|
209
|
+
|
|
210
|
+
1. **Hit the landing page** — use WebFetch or curl to request the primary URL (e.g., `http://localhost:3000`). Verify you get a real response, not an error page.
|
|
211
|
+
2. **Check for common startup issues** — port conflicts, missing environment variables that only matter at request time, lazy initialization failures.
|
|
212
|
+
3. **Ask the user to confirm** — present via AskUserQuestion:
|
|
212
213
|
|
|
213
214
|
```
|
|
214
|
-
Question: "
|
|
215
|
-
|
|
215
|
+
Question: "The app is running. Can you access it at [URL]? Can you see the landing page?
|
|
216
|
+
|
|
217
|
+
If something looks wrong, describe what you see and I'll help fix it."
|
|
218
|
+
Header: "Is It Online?"
|
|
216
219
|
Options:
|
|
217
|
-
- "
|
|
218
|
-
- "
|
|
220
|
+
- "Yes — I can see the landing page"
|
|
221
|
+
- "It loads but something is wrong"
|
|
222
|
+
- "I can't access it"
|
|
219
223
|
```
|
|
220
224
|
|
|
221
|
-
|
|
225
|
+
#### 6c. Resolve Until Online
|
|
226
|
+
|
|
227
|
+
If the user reports issues, work through them. Common problems:
|
|
228
|
+
- CORS issues (browser can reach it but API calls fail)
|
|
229
|
+
- Missing static assets (page loads but looks broken)
|
|
230
|
+
- Authentication redirects blocking access
|
|
231
|
+
- Database connection failures on first real request
|
|
232
|
+
- Missing seed data causing empty/error states
|
|
233
|
+
|
|
234
|
+
Do NOT proceed to Phase 2 until the user confirms they can access the landing page and it looks right. This is a hard gate. If it takes 10 rounds of fixing, so be it.
|
|
222
235
|
|
|
223
236
|
---
|
|
224
237
|
|
|
225
|
-
## PHASE 2:
|
|
238
|
+
## PHASE 2: UX VALIDATION
|
|
226
239
|
|
|
227
|
-
|
|
240
|
+
The app is online. Now systematically verify that every implemented interaction works from a real user's perspective.
|
|
228
241
|
|
|
229
|
-
|
|
242
|
+
This is NOT writing automated test files. This is YOU walking through the application as a user would — fetching pages, analyzing what's rendered, verifying links go where they should, checking that actions produce the expected results.
|
|
230
243
|
|
|
231
|
-
|
|
244
|
+
### STEP 7: BUILD THE INTERACTION MAP
|
|
232
245
|
|
|
233
|
-
|
|
234
|
-
- **Main entry points**: Do the primary routes/endpoints/commands return non-error responses?
|
|
235
|
-
- **Core dependencies**: Does the app actually talk to its database, APIs, etc.? (Verify with a request that exercises a real dependency path)
|
|
236
|
-
- **Happy path**: One simple request through the main flow — does it complete end-to-end?
|
|
246
|
+
Before testing, build a complete map of every interaction surface that was implemented.
|
|
237
247
|
|
|
238
|
-
####
|
|
248
|
+
#### 7a. Inventory from Specs
|
|
239
249
|
|
|
240
|
-
|
|
250
|
+
Read the experience slices from `tasks.json` and the discovery brief. For each slice, extract:
|
|
251
|
+
- **Pages/routes** the user visits
|
|
252
|
+
- **Actions** the user takes (buttons clicked, forms submitted, links followed)
|
|
253
|
+
- **Expected outcomes** (what the user should see after each action)
|
|
241
254
|
|
|
242
|
-
|
|
243
|
-
You are writing smoke tests against a LIVE, RUNNING system. The app is already up — you are testing it from the outside.
|
|
255
|
+
#### 7b. Inventory from Code
|
|
244
256
|
|
|
245
|
-
|
|
246
|
-
Test conventions: [naming, directory from existing tests]
|
|
247
|
-
App URL / entry point: [how to reach the running system]
|
|
257
|
+
Spawn an `intuition-researcher` agent:
|
|
248
258
|
|
|
249
|
-
|
|
250
|
-
-
|
|
251
|
-
-
|
|
252
|
-
-
|
|
253
|
-
-
|
|
259
|
+
"Analyze the codebase to build a complete interaction map. Find:
|
|
260
|
+
- Every route/page/screen defined in the app
|
|
261
|
+
- Every navigation link (where it appears, where it points)
|
|
262
|
+
- Every button and what it triggers
|
|
263
|
+
- Every form and what it submits to
|
|
264
|
+
- Every interactive element (dropdowns, modals, toggles, tabs, etc.)
|
|
265
|
+
- Every API endpoint that backs a UI interaction
|
|
266
|
+
|
|
267
|
+
Report as a structured list: [page/route] → [interaction element] → [expected behavior]"
|
|
268
|
+
|
|
269
|
+
#### 7c. Merge and Present
|
|
270
|
+
|
|
271
|
+
Merge the spec-based inventory with the code-based inventory into a single interaction map. Present to the user via AskUserQuestion:
|
|
254
272
|
|
|
255
|
-
Rules:
|
|
256
|
-
- The system is ALREADY RUNNING. Tests make real requests to it.
|
|
257
|
-
- NO mocks. NO in-memory databases. NO test servers. You hit the live app.
|
|
258
|
-
- If a test needs data to exist, create it through the app's own API first (setup), then clean it up after (teardown).
|
|
259
|
-
- Each test should take < 10 seconds.
|
|
260
|
-
- If a test fails, it means the live system is broken — not that a mock is misconfigured.
|
|
261
273
|
```
|
|
274
|
+
Question: "Here's every interaction surface I'll be testing:
|
|
262
275
|
|
|
263
|
-
|
|
276
|
+
[The interaction map — organized by page/route, listing every link, button, form, and interactive element]
|
|
264
277
|
|
|
265
|
-
|
|
278
|
+
Anything I should add or skip?"
|
|
279
|
+
Header: "Interaction Map"
|
|
280
|
+
```
|
|
266
281
|
|
|
267
|
-
|
|
282
|
+
### STEP 8: SYSTEMATIC WALKTHROUGH
|
|
268
283
|
|
|
269
|
-
|
|
284
|
+
Work through the interaction map methodically. For each page/route:
|
|
270
285
|
|
|
271
|
-
|
|
286
|
+
#### 8a. Load the Page
|
|
272
287
|
|
|
273
|
-
|
|
274
|
-
- **
|
|
275
|
-
- **
|
|
288
|
+
Use WebFetch to load the page. Analyze what comes back:
|
|
289
|
+
- **Does the page render?** (non-error HTTP status, meaningful HTML content)
|
|
290
|
+
- **Are key elements present?** (navigation, expected headings, expected content sections)
|
|
291
|
+
- **Are there broken references?** (missing images, broken CSS/JS links, 404 resources)
|
|
276
292
|
|
|
277
|
-
####
|
|
293
|
+
#### 8b. Test Every Link
|
|
278
294
|
|
|
279
|
-
|
|
295
|
+
For every navigation link on the page:
|
|
296
|
+
- Follow it (WebFetch the target URL)
|
|
297
|
+
- Verify it resolves to the correct destination (not a 404, not a wrong page)
|
|
298
|
+
- Verify the destination page renders correctly
|
|
280
299
|
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
## Rules
|
|
298
|
-
- The system is ALREADY RUNNING. Tests make real requests to it.
|
|
299
|
-
- NO mocks of any kind. The app, database, and services are all live.
|
|
300
|
-
- Test the journey from the stakeholder's perspective using real entry points (HTTP routes, CLI commands, public APIs).
|
|
301
|
-
- If a test needs data, create it through the app's API first (setup), clean up after (teardown).
|
|
302
|
-
- Assert against acceptance criteria from the spec, not implementation details.
|
|
303
|
-
- Each test should tell a story: "the admin does X, the system does Y, the result is Z"
|
|
304
|
-
- If a slice requires UI interaction you can't automate, test the API layer that backs it.
|
|
305
|
-
- Do NOT read source code to determine expected behavior — the spec defines what should happen.
|
|
306
|
-
|
|
307
|
-
## Spec Sources (read these for expected behavior)
|
|
308
|
-
- Discovery brief: {context_path}/discovery_brief.md
|
|
309
|
-
- Tasks: {context_path}/tasks.json
|
|
310
|
-
```
|
|
300
|
+
#### 8c. Test Every Button and Action
|
|
301
|
+
|
|
302
|
+
For every button and interactive element:
|
|
303
|
+
- Determine what it does (from the code analysis in Step 7)
|
|
304
|
+
- If it triggers an API call: make that API call with appropriate test data and verify the response
|
|
305
|
+
- If it submits a form: submit the form with valid test data and verify the result
|
|
306
|
+
- If it toggles UI state: verify the underlying mechanism works (e.g., the API endpoint that backs a toggle)
|
|
307
|
+
|
|
308
|
+
#### 8d. Test Every Form
|
|
309
|
+
|
|
310
|
+
For every form on the page:
|
|
311
|
+
- **Valid submission**: Submit with valid data. Verify success response, data persistence, and any expected side effects (emails, state changes, redirects).
|
|
312
|
+
- **Required fields**: Verify that submitting with missing required fields produces appropriate validation feedback.
|
|
313
|
+
- **Edge cases**: Test with boundary values if the spec defines constraints.
|
|
314
|
+
|
|
315
|
+
#### 8e. Test User Flows End-to-End
|
|
311
316
|
|
|
312
|
-
|
|
317
|
+
For each experience slice, walk through the complete user journey:
|
|
318
|
+
1. Start where the user starts
|
|
319
|
+
2. Navigate as the user would (following links, not jumping directly to URLs)
|
|
320
|
+
3. Perform each action in the flow
|
|
321
|
+
4. Verify each intermediate state
|
|
322
|
+
5. Confirm the final outcome matches the acceptance criteria
|
|
313
323
|
|
|
314
|
-
|
|
324
|
+
#### 8f. Report Progress
|
|
315
325
|
|
|
316
|
-
|
|
326
|
+
After completing each page/route, briefly report status: what passed, what failed, what needs attention. Group issues for the fix cycle rather than interrupting the walkthrough for each problem (unless something is blocking further testing).
|
|
327
|
+
|
|
328
|
+
### STEP 9: FIX CYCLE
|
|
329
|
+
|
|
330
|
+
After the walkthrough, address every issue found.
|
|
331
|
+
|
|
332
|
+
#### Issue Classification
|
|
317
333
|
|
|
318
334
|
| Classification | Action |
|
|
319
335
|
|---|---|
|
|
320
|
-
| **
|
|
321
|
-
| **
|
|
322
|
-
| **
|
|
323
|
-
| **
|
|
336
|
+
| **Broken link** (404, wrong destination) | Fix via `intuition-code-writer` |
|
|
337
|
+
| **Non-functional button** (click does nothing, wrong API call) | Fix via `intuition-code-writer` |
|
|
338
|
+
| **Form submission failure** (validation error on valid data, wrong endpoint, missing handler) | Fix via `intuition-code-writer` |
|
|
339
|
+
| **Missing page/route** (implemented in code but not accessible) | Fix via `intuition-code-writer` — likely a routing issue |
|
|
340
|
+
| **Missing content** (page loads but expected elements are absent) | Fix via `intuition-code-writer` |
|
|
341
|
+
| **Broken user flow** (individual steps work but the end-to-end journey breaks) | Diagnose where the flow breaks, fix the connection point |
|
|
342
|
+
| **Visual/layout issue** (content renders but is clearly broken — overlapping elements, invisible text, unusable layout) | Fix via `intuition-code-writer` |
|
|
343
|
+
| **Data issue** (correct behavior but empty/wrong data shown) | Check seeds, migrations, API responses — fix the data pipeline |
|
|
324
344
|
| **Environment/config issue** (service not reachable, credentials wrong) | Help user diagnose and fix |
|
|
325
|
-
| **Spec violation** (
|
|
326
|
-
| **Test regression** (existing test broke) | Diagnose: is the test outdated or the new code wrong? Escalate if ambiguous |
|
|
345
|
+
| **Spec violation** (interaction works but does the wrong thing per spec) | Escalate: "Spec says X, but the app does Y" |
|
|
327
346
|
| **Violates user decision** | STOP — escalate immediately |
|
|
328
347
|
|
|
329
348
|
#### Fix Process
|
|
330
349
|
|
|
331
|
-
1.
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
350
|
+
1. Present ALL found issues to the user, grouped by severity:
|
|
351
|
+
- **Blocking**: User flows that don't work at all
|
|
352
|
+
- **Broken**: Individual interactions that fail
|
|
353
|
+
- **Degraded**: Things that work but poorly (wrong content, bad layout, missing feedback)
|
|
354
|
+
2. Fix blocking issues first, then broken, then degraded
|
|
355
|
+
3. For each fix: delegate to `intuition-code-writer`, then re-test the specific interaction on the live system
|
|
356
|
+
4. Max 3 fix attempts per issue — then escalate to user
|
|
357
|
+
5. After all fixes: **re-run the full walkthrough** on affected pages to verify fixes didn't break other interactions
|
|
358
|
+
6. Repeat until clean or all remaining issues are escalated
|
|
337
359
|
|
|
338
|
-
### STEP
|
|
360
|
+
### STEP 10: FINAL VERIFICATION
|
|
339
361
|
|
|
340
|
-
After
|
|
362
|
+
After the walkthrough is clean (all interactions work):
|
|
341
363
|
|
|
342
|
-
**North Star check**: Walk through the brief's North Star statement. For each stakeholder:
|
|
364
|
+
**North Star check**: Walk through the discovery brief's North Star statement. For each stakeholder:
|
|
343
365
|
- Can they do what the brief says they should be able to do — on the live system?
|
|
344
366
|
- Does the system honor the constraints?
|
|
345
367
|
- Would this satisfy the North Star as written?
|
|
346
368
|
|
|
347
|
-
If something drifts, flag it: "
|
|
369
|
+
If something drifts, flag it: "All interactions work, but [specific concern about North Star alignment]."
|
|
348
370
|
|
|
349
371
|
**Update `docs/project_notes/project_map.md`** if integration or testing revealed anything new.
|
|
350
372
|
|
|
351
|
-
### STEP
|
|
373
|
+
### STEP 11: EXIT
|
|
352
374
|
|
|
353
|
-
**Update state.** Read `.project-memory-state.json`. Target active context. Set: `status` → `"complete"`, `workflow.verify.completed` → `true`, `workflow.verify.completed_at` → current ISO timestamp. Set on root: `last_handoff` → current ISO timestamp, `last_handoff_transition` → `"verify_to_complete"`.
|
|
375
|
+
**Update state.** Read `.project-memory-state.json`. Target active context. Set: `status` → `"complete"`, `workflow.verify.completed` → `true`, `workflow.verify.completed_at` → current ISO timestamp. Set on root: `last_handoff` → current ISO timestamp, `last_handoff_transition` → `"verify_to_complete"`. Write back.
|
|
354
376
|
|
|
355
377
|
**Present results** via AskUserQuestion:
|
|
356
378
|
|
|
357
379
|
```
|
|
358
|
-
Question: "Verification complete — tested against the live system.
|
|
359
|
-
|
|
360
|
-
**
|
|
361
|
-
**
|
|
362
|
-
**
|
|
363
|
-
**
|
|
364
|
-
**
|
|
380
|
+
Question: "Verification complete — every interaction tested against the live system.
|
|
381
|
+
|
|
382
|
+
**Online**: [URL — confirmed accessible]
|
|
383
|
+
**Pages tested**: [N pages/routes]
|
|
384
|
+
**Links verified**: [N links — N working, N fixed, N escalated]
|
|
385
|
+
**Buttons/actions verified**: [N — N working, N fixed, N escalated]
|
|
386
|
+
**Forms verified**: [N — N working, N fixed, N escalated]
|
|
387
|
+
**User flows verified**: [N experience slices — N working, N fixed, N escalated]
|
|
365
388
|
**North Star alignment**: [met / concerns]
|
|
366
389
|
|
|
367
390
|
[If escalated issues exist, list them]
|
|
@@ -375,7 +398,7 @@ Options:
|
|
|
375
398
|
- "Done — no commit"
|
|
376
399
|
```
|
|
377
400
|
|
|
378
|
-
If committing: stage files from build output + integration changes +
|
|
401
|
+
If committing: stage files from build output + integration changes + fixes, commit with descriptive message, optionally push.
|
|
379
402
|
|
|
380
403
|
**Route.** "Workflow complete. Run `/clear` then `/intuition-enuncia-start` to see project status."
|
|
381
404
|
|
|
@@ -388,14 +411,14 @@ When verifying on a branch:
|
|
|
388
411
|
|
|
389
412
|
## RESUME LOGIC
|
|
390
413
|
|
|
391
|
-
1. If Phase 1 completed (
|
|
392
|
-
2. If
|
|
414
|
+
1. If Phase 1 completed (app confirmed online) but UX walkthrough hasn't started: skip to Step 7.
|
|
415
|
+
2. If interaction map exists but walkthrough incomplete: "Found interaction map from a previous session. Resuming walkthrough."
|
|
393
416
|
3. Otherwise fresh start from Step 1.
|
|
394
417
|
|
|
395
418
|
## VOICE
|
|
396
419
|
|
|
397
|
-
- **
|
|
398
|
-
- **
|
|
399
|
-
- **
|
|
400
|
-
- **
|
|
420
|
+
- **Relentless** — not satisfied until the app is online AND every interaction works
|
|
421
|
+
- **User-perspective** — think like the person clicking, not the person who wrote the code
|
|
422
|
+
- **Evidence-driven** — "I clicked X, expected Y, got Z" for every issue
|
|
423
|
+
- **Pragmatic** — fix what's broken, escalate what's beyond scope, report clearly
|
|
401
424
|
- **Brief-anchored** — the discovery foundation is the ultimate measure of success
|