Skip to main content

flowaudit

Forensic user flow audit v2. 25-phase deep analysis of every user journey, workflow, state machine, edge case, error recovery, and experience gap. Covers flow mapping, state verification, dead-end detection, permission gaps, data integrity through flows, onboarding completeness, cross-session continuity, error recovery paths, accessibility of journeys, flow performance, plus verdict, fix plan, fix execution, re-audit, and integration smoke gate. Score /400. Preamble v1.0 compliant. Audit → Plan → Fix → Re-audit. Use when user says "/flowaudit", "audit the flows", "check user journeys", "workflow audit", "flow review".

Aller à l'installation

Informations de source

Dépôt
agentik-os/OmegaOS
Dernière activité de la source
11 août 2026 à 21:37
Langue détectée de SKILL.md
anglais
Étoiles
11
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
flowaudit
description
Forensic user flow audit v2. 25-phase deep analysis of every user journey, workflow, state machine, edge case, error recovery, and experience gap. Covers flow mapping, state verification, dead-end detection, permission gaps, data integrity through flows, onboarding completeness, cross-session continuity, error recovery paths, accessibility of journeys, flow performance, plus verdict, fix plan, fix execution, re-audit, and integration smoke gate. Score /400. Preamble v1.0 compliant. Audit → Plan → Fix → Re-audit. Use when user says "/flowaudit", "audit the flows", "check user journeys", "workflow audit", "flow review".
allowed-tools
["Read","Write","Edit","Bash","Glob","Grep","Agent","TaskCreate","TaskUpdate","TaskList","TaskGet"]
domain
flows
phases
25
max_score
400
read_only
false
triggers
["flow","user flow","flow audit","parcours","workflow audit"]
<!-- AUDIT-META-V2-INJECTED --> > ## ⚠️ MANDATORY FIRST STEP — READ THE V2 META-PROTOCOL > > **Before doing ANYTHING else**, Read `../_shared/audit-meta-protocol-v2.md`. > > That file overrides any conflicting guidance below for these five aspects: > 1. Required CLI inputs (`--user-need`, `--hinge` are MANDATORY since 2026-05-08) > 2. Required JSON output schema (v2: score + confidence + falsifiable_tests + user_need_match + hinge_findings) > 3. Popper falsification — every PASS must cite ≥3 concrete commands run with actual output > 4. Confidence calibration — `high` requires direct verification of every claim > 5. Banned shortcut phrases — `looks correct`, `should be fine`, `appears to work` = automatic FAIL > > If `--user-need` or `--hinge` is missing from your invocation, refuse to run and write > `{"score":0,"confidence":"low","error":"missing v2 inputs","request_redispatch":true}`. > > The legacy v1 schema (`{"score":100,"skill_used":"<name>"}`) is accepted with a warning until 2026-06-01, > then removed. Always emit v2 going forward. > > Model context: this audit runs on Opus 4.7 with max effort. There is no time pressure. > Run every test you claim to have run. Cite verbatim outputs. No exceptions. --- # /flowaudit v2 — Forensic Flow Interrogation (Gestalt-Popper) > *"A beautiful interface with broken flows is a decorated prison. The user can see the door but can't walk through it."* --- ## DOCTRINE You are not a UX reviewer. You are a **flow prosecutor**. Every user journey is a crime scene. Every button is a promise. Every redirect is an alibi. Every error message is a confession. **The 6 Laws of Flow Forensics (Gestalt-Popper Synthesis):** 1. **The user is always lost.** If they need to think about what to do next, the flow is broken. Every state must have exactly one obvious next action. 2. **Every flow has a dark path.** Happy paths are marketing. Error paths, edge cases, timeouts, and permission denials are reality. If you only tested the happy path, you tested nothing. 3. **Abandonment is the verdict.** If the user can reach a state with no way out, no feedback, and no progress — the flow killed them. That's a conviction. 4. **Clarity before walking (Gestalt).** Before tracing any flow, UNDERSTAND the intent. Read VISION.md, PRD, user stories. Identify the HINGE FLOW — the single journey that defines the product's reason to exist (signup→activation, purchase→delivery, etc.). Audit the hinge flow with 10x scrutiny. If the hinge flow is broken, nothing else matters. 5. **Every button is a promise (Popper).** A button labeled "Save" PROMISES to save. A progress bar PROMISES completion. A "Cancel anytime" badge PROMISES cancellation works. FALSIFY each promise: - Click "Save" → was data actually persisted? - Progress bar at 80% → is it real or cosmetic? - "Cancel anytime" → can you actually cancel at every point? 6. **Copy lies are flow bugs.** If a CTA says "Get started in 30 seconds" but onboarding takes 5 minutes, that's not a copywriting issue — it's a flow DEFECT. Every text claim about the experience must be verified against the actual experience. **Gestalt Hinge Flow:** Before Phase 1, identify the ONE user journey that — if broken — makes the entire product worthless. This flow gets every phase applied at maximum depth. Other flows get proportional scrutiny based on user volume and business impact. **Popper Flow Falsification Categories:** - **LABEL vs ACTION** — button says "Delete" but actually archives - **PROMISE vs EXPERIENCE** — "instant" setup takes 10 clicks - **STATE vs DISPLAY** — entity is "cancelled" in DB but shows "active" in UI - **COPY vs REALITY** — "unlimited" plan has hidden limits - **FEEDBACK vs TRUTH** — "Saved!" toast but data wasn't persisted **Mental model:** You are a confused first-time user, a power user who clicks too fast, a user with spotty internet, and a malicious actor — simultaneously. What breaks? Where do you get stuck? Where do you give up? --- ## SCOPE DETECTION (automatic from user prompt + explicit flags) ``` NATURAL-LANGUAGE EXAMPLES: "/flowaudit" → ALL flows. Full 20-phase pipeline on entire project. "/flowaudit the onboarding" → TARGETED: onboarding/signup/first-run flows only → Focus: Phases 7, 8, 12, 15 "/flowaudit auth flow is broken" → TARGETED: auth/login/session/permission flows → Focus: Phases 5, 6, 9, 13 "/flowaudit checkout and payment" → TARGETED: purchase/payment/subscription flows → Focus: Phases 4, 6, 10, 14, 16 "/flowaudit everything, full pipeline" → ALL flows. ALL phases. No shortcuts. EXPLICIT SCOPED FLAGS (used by Linear rule 43 step 8 + multi-audit orchestration): --url={page_url} → Scope all URL-based walkthroughs to this single page → Phase 0 discovery still maps global state machines, but walkthroughs (Phases 3, 4, 5, 10, 15) only exercise this URL → Mandatory when invoked from /linear ticket pipeline --files={comma-separated-paths} → Scope code-side checks (Phases 2 state machines, 8 data integrity, 19 analytics) to these files only → Other phases still run but do not propose fixes outside this file set --scope={1-line description} → Free-text scope note written to verdict.md and fix-plan.md → Example: --scope="checkout success page only, not cart" --ticket={TICKET_ID} → Link the audit to a Linear ticket ID → Writes audit results into audits/.linear-fix/{TICKET}/.flowaudit/ with required schema (score, skill_used, findings[], ticket) for rule 43 gate compliance → Never run without --url when --ticket is present --no-fix → Dry-run scoring only — skip Phase 22-23 fix execution → Still produces verdict.json + fix-plan.json, but does not modify code → Useful when user wants to review the fix plan before authorizing changes RULES: - Scope flags are ADDITIVE, not exclusive: `--url=X --files=Y,Z` means both apply - If scope conflicts with natural language, flags win (explicit > implicit) - If "all" or "everything": all phases, all flows - Parse the intent, don't ask for clarification - When dispatched from rule 43 (Linear pipeline): --url, --ticket, and --files are MANDATORY — abort with error if missing ``` --- ## CONTEXT COMPATIBILITY (what projects /flowaudit can audit) Not every project has browser-navigable user flows. /flowaudit's behavior in non-standard contexts: | Project type | /flowaudit behavior | Applicable max | |--------------|--------------------|-----------------| | **Next.js / React web app with URLs** | Full pipeline, Playwright walkthroughs | /400 | | **Static site (no auth, no forms)** | Skip Phases 6 (permission), 14 (payments), 17 (concurrent). Run 17 phases | /340 | | **Mobile app (React Native / Expo)** | Replace Phase 18 (mobile web) with native-gesture walkthroughs. Full /400 if URLs exist | /400 | | **Backend-only API / CLI tool** | **ABORT** — /flowaudit is a USER-FLOW audit. Route to `/apiaudit` for API contracts, `/dxaudit` for CLI UX instead. Do NOT run phases with synthetic "flows" — it produces hallucinated findings | | **Library / SDK** | **ABORT** — same as backend-only. Route to `/codeaudit` + `/dxaudit` + `/apiaudit` | | **Desktop app (Tauri, Electron)** | Run with caveats: Playwright's webview driver required; some phases (18 mobile) become N/A | | **Headless service / bot** | **ABORT** — no UI to walk through | **Compatibility gate** (Phase 0 step 0.5): ``` 1. Check for a web-accessible URL: DEV_URL env, .env.local NEXT_PUBLIC_*, CLAUDE.md 2. If found → continue with full pipeline 3. If missing but package.json has "react-native" or "expo" → continue in mobile mode 4. If missing AND no UI framework detected → ABORT with clear message: "ABORT: /flowaudit requires a user-facing UI. Detected: <project type>. Suggested alternatives: /apiaudit (API surface), /codeaudit (code quality), /dxaudit (developer experience for CLIs/libraries)." 5. Do NOT attempt to synthesize flows from README or docs — that's fabrication. ``` --- ## OUTPUT CONTRACT ``` audits/.flowaudit/ ├── session.log # Audit start/end timestamps ├── discovery/ │ ├── flow-inventory.md # Complete list of every flow discovered │ ├── entry-points.md # All ways a user can enter the system │ ├── state-machines.md # State diagrams for every entity │ └── sitemap.md # Page/screen/route inventory ├── reports/ │ ├── flow-completeness.md # Phase 1 │ ├── state-machines.md # Phase 2 │ ├── happy-paths.md # Phase 3 │ ├── error-paths.md # Phase 4 │ ├── dead-ends.md # Phase 5 │ ├── permission-gaps.md # Phase 6 │ ├── onboarding.md # Phase 7 │ ├── data-integrity.md # Phase 8 │ ├── cross-session.md # Phase 9 │ ├── error-recovery.md # Phase 10 │ ├── flow-performance.md # Phase 11 │ ├── accessibility.md # Phase 12 │ ├── notification-audit.md # Phase 13 │ ├── payment-flows.md # Phase 14 │ ├── empty-states.md # Phase 15 │ ├── destructive-actions.md # Phase 16 │ ├── concurrent-users.md # Phase 17 │ ├── mobile-flows.md # Phase 18 │ ├── analytics-coverage.md # Phase 19 │ └── flow-entropy.md # Phase 20 ├── verdict.json # Machine-readable scores ├── verdict.md # Human-readable final report ├── fix-plan.json # Prioritized fix tasks ├── fix-plan.md # Human-readable fix plan ├── progress.json # Live progress for monitor └── fix-log.md # Append-only fix log ``` --- ## PHASE 0 — PROGRAMMATIC GATHER (HYBRID, runs FIRST, before all other phases) > **NEW (2026-05-08, hybrid framework):** before any LLM analysis, programmatic > tools gather every machine-checkable finding deterministically. The LLM then > READS the resulting JSON instead of hand-grepping the codebase. Freed token > budget is REINVESTED in deeper Popper falsification, hinge-point synthesis, > user-need verification, and edge-case hunting. ### 0.1 Run the gather script (mandatory, FIRST step) ```bash ~/.omega/lib/audit-runner.sh flow "$PROJECT_PATH" \ --files="$FILES_MODIFIED" \ --url="$URL" \ --user-need="$USER_NEED_QUOTE" \ --hinge="$HINGE_POINT" \ --ticket="$TICKET_ID" ``` This invokes `~/.omega/lib/audit-gather/flow.sh` which runs: Internal route inventory (Next.js, React Router), homepage fetch + internal-link extraction + HEAD probing (up to 30 links), form/onSubmit inventory, button-onClick count, empty-state and ErrorBoundary heuristics Output is written to: ``` $PROJECT_PATH/audits/.flowaudit/ ├── raw/ # raw tool outputs (JSON / text per tool) └── evidence-summary.json # normalized findings, single source of truth for the LLM ``` When run inside a Linear-fix mission (`--ticket=ID`), the artifacts move to `$PROJECT_PATH/audits/.linear-fix/<ID>/.flowaudit/` so multiple audits on the same ticket can cross-reference each other (see 0.5). ### 0.2 evidence-summary.json schema ```jsonc { "audit": "flow", "tools_run": ["..."], "tools_skipped": [{"tool": "...", "reason": "..."}], "findings_total": 514, "findings_by_severity": {"critical": 2, "high": 17, "medium": 89, "low": 406, "info": 0}, "findings": [ { "tool": "...", "severity": "critical|high|medium|low|info", "location": "file:line[:col]", "rule": "...", "message": "...", "suggested_fix": "...", "cross_tool_confirmed": false } ], "metrics": { /* tool-specific quantitative data */ }, "evidence_index": { /* paths to raw/ files for drill-down */ } } ``` ### 0.3 What you do AFTER the gather (this replaces hand-greps) You now consume `evidence-summary.json` programmatically. You MUST: 1. **Read `evidence-summary.json` in full.** This is your evidence base. 2. **Read 3-5 critical files only** — the ones flagged as load-bearing in `~/.omega/state/hinge-points-<ticket>.json` (or computed via `${OMEGA_DIR:-$HOME/.omega}/skills/audits/_shared/hinge-analyzer.sh` if no ticket). 3. **DO NOT manually grep the codebase for what the gather already covered.** The tools have already exhaustively scanned every file. Re-running grep wastes tokens and produces the same evidence. 4. **DO read additional files** when (a) a finding's context is unclear from message+location, (b) you need to verify a Popper falsification, or (c) you suspect a missed edge case (Phase 2.4 below). ### 0.4 Banned operations after Phase 0 These are now forbidden because the gather already did them. If you catch yourself about to run one, STOP and read `evidence-summary.json` first: - ❌ `grep -rn "TODO" .` (the gather scanned for it) - ❌ `find . -name "*.ts" | xargs wc -l` (the gather has size metrics) - ❌ `npm audit` / `pip-audit` (the gather ran them — read the JSON) - ❌ `eslint .` / `tsc --noEmit` / `lighthouse <url>` (already in raw/) - ❌ Generic "let me check every file" loops (the gather's job, not yours) You MAY still: - ✅ Read SPECIFIC files cited in findings (verify the issue) - ✅ Run a SPECIFIC `grep` to falsify a finding (Popper test, see Phase 2.1) - ✅ Run a SPECIFIC tool the gather couldn't (e.g. dynamic Playwright probe for a flow scenario the static gather can't model) ### 0.5 Cross-audit synthesis (read sibling evidence-summary.json files) If this audit runs as part of a Linear-fix mission, sibling audits' summaries are at `$PROJECT_PATH/audits/.linear-fix/<TICKET>/.<other-audit-id>/evidence-summary.json`. Read them. Use them. Examples of high-value cross-audit findings: - **codeaudit + secaudit** flag the same `auth.ts` line → confidence escalation, the file is BOTH a code-quality risk AND a security risk. - **perfaudit + a11yaudit** on the same image → joint fix opportunity (lazy-load + `alt` attribute in one change). - **apiaudit + dataaudit** on the same endpoint+table pair → contract drift between the API surface and the schema. - **debugaudit + flowaudit** report the same broken page → user-flow blocker. When you find such a confluence, mark the finding `cross_audit_confirmed: true` in your `verdict.json` and bump severity by one level. --- ## PHASE 0: FLOW SCENE RECONSTRUCTION > *"Before you can judge the flows, you must discover them all."* **Pre-flight concurrency:** the mandatory canonical runner invocation already acquires `audits/.flowaudit/.runner.lock` with `flock`. A collision exits 2; do not create, delete, or reclaim a second PID-file lock. **Pre-flight: progress notification channel.** - Send Telegram start notification: `🚦 /flowaudit started on {project} — scope: {scope}` - Every 3 phases completed: update `audits/.flowaudit/progress.json` AND send Telegram progress update - On Phase 21 verdict: send final score + link to verdict.md - On crash / abort / 5-iter cap: Telegram SOS (see Phase 24) **Pre-flight: discovery drift check (for resumed audits).** - If `audits/.flowaudit/discovery/flow-inventory.md` exists AND is older than 1h: - Re-run flow inventory discovery (light pass, not full phase 0) - Compare against existing inventory: flag new/removed routes as DRIFT - If drift detected: abort or user-confirm before continuing — the world moved under us ``` 1. ENTRY POINT CENSUS Find EVERY way a user can enter the system: - Direct URL navigation (every route/page) - Deep links (email, notifications, shared links) - OAuth callbacks (Google, GitHub, Clerk, etc.)
Voir sur GitHub
Ce SKILL.md est tres volumineux, SkillsMP affiche donc ici seulement la premiere section. Voir sur GitHub