### Purpose Resolve one stable target, run two independent assessments, synthesize a design critique, persist a snapshot, and ask the user what to improve next. The chat response is the primary deliverable; the snapshot is an archive/backlog for future commands. ### Hard Invariants - Assessment A (design review) and Assessment B (detector/browser evidence) are both required. - Assessment A must finish before detector findings enter the parent synthesis context. Detector output is deterministic, but it still anchors judgment. - If sub-agents are unavailable, fall back sequentially: finish and record Assessment A first, then run Assessment B, then synthesize. - A skipped detector is a failed critique run unless `detect.mjs` is missing or crashes after a real attempt. - Viewable targets require browser inspection when available. - Any local server started only for critique visualization must run in the background, have a recorded stop method, and be stopped before final reporting unless the user asks to keep it. - Do not claim a user-visible overlay exists unless script injection succeeded and the detector ran in the page. ### Setup 1. **Resolve the target** to a concrete file path or URL. Prefer a source path over a dev-server URL when both identify the same surface; ports drift, paths do not. - "the homepage" -> `site/pages/index.astro` or `index.html` - "the settings modal" -> the primary component file - "this page" -> the current URL or source file 2. **Compute the slug**: ```bash node .claude/skills/impeccable/scripts/critique-storage.mjs slug "" ``` Keep it. If the command exits non-zero, skip persistence and trend for this run, but continue the critique. 3. **Read `.impeccable/critique/ignore.md`** if it exists. Drop matching findings silently; it is the only prior-run input critique consumes. ### Assessment Orchestration Delegate Assessment A and Assessment B to separate sub-agents when possible. They must not see each other's output. Do not show findings to the user until synthesis. If browser automation is available, each assessment creates its own new tab. Never reuse an existing tab, even if it is already at the right URL. ### Assessment A: Design Review Read relevant source files and visually inspect the live page when browser automation is available. Think like a design director. Evaluate: - **AI slop**: Would someone believe "AI made this" immediately? Check all DON'T guidance from the parent Impeccable skill. - **Holistic design**: hierarchy, IA, emotional fit, discoverability, composition, typography, color, accessibility, states, copy, and edge cases. - **Cognitive load**: consult the [Cognitive Load Assessment](#cognitive-load-assessment) section below; report checklist failures and decision points with >4 visible options. - **Emotional journey**: peak-end rule, emotional valleys, reassurance at high-stakes moments. - **Nielsen heuristics**: consult the [Heuristics Scoring Guide](#heuristics-scoring-guide) section below; score all 10 heuristics 0-4. Return: AI slop verdict, heuristic scores, cognitive load, emotional journey, 2-3 strengths, 3-5 priority issues, persona red flags, minor observations, and provocative questions. ### Assessment B: Detector + Browser Evidence Run the bundled detector and browser visualization evidence. Assessment B is mandatory and must remain isolated from Assessment A until both are complete. CLI scan: ```bash node .claude/skills/impeccable/scripts/detect.mjs --json [target] ``` - Pass markup files/directories as `[target]`; do not pass CSS-only files. - For URLs, skip CLI scan and use browser visualization. - For very large trees (500+ scannable files), narrow scope or ask. - Exit code 0 = clean; 2 = findings. - If the detector entrypoint is missing or fails to load, report deterministic scan unavailable and continue with browser/manual review. Browser visualization is required for a viewable target when browser automation is available. Use a localhost dev/static URL for local files; avoid `file://` unless the available browser explicitly supports this workflow. Overlay flow: 1. Create a fresh tab and navigate. 2. Preflight mutable injection by setting `document.title` and appending a `