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".

Ir a la instalación

Datos de origen

Repositorio
agentik-os/OmegaOS
Última actividad en el origen
11 de agosto de 2026 a las 21:37
Idioma detectado de SKILL.md
inglés
Estrellas
11
Forks
2

Opciones de instalación

De forma predeterminada está seleccionado el prompt que primero revisa el origen. Puedes cambiar a un comando directo o descargar una copia local.

Revisa los archivos de origen

Lee SKILL.md y los archivos complementarios que muestra SkillsMP antes de decidir si quieres instalarlo.

Mostrando SKILL.md

SKILL.md
Instrucciones de origen · Vista previa de solo lectura
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.)
Ver en GitHub
Este SKILL.md es muy grande, por eso SkillsMP muestra aqui solo la primera seccion. Ver en GitHub