improve-codebase-architecture can silently break the UI it's refactoring
`improve-codebase-architecture` (and `implement`) never look at the rendered app. Ran it on a real project and it deepened a module cleanly — types green, tests green, review clean — and it had quietly changed the UI (dropped a conditional-render branch / prop passthrough in the process). Every gate in the chain (scan → grill → implement → tdd → code-review) inspects code, not pixels, so a refactor that changes what the user sees is scored a success. **Suggested fix**: a `ui-preservation` gate that: 1. Captures a screenshot + accessibility-tree baseline of affected surfaces (including loading/empty/error states, not just the happy path) *before* the first edit — captured after the fact proves nothing, since you can't tell "this is how it looked" from "this is how I just made it look." 2. Sanity-checks the capture itself is stable (re-shot without changes = identical) and sensitive (two different surfaces = different) before trusting it. 3. Recaptures after implementation and diffs both pixels and the a11y tree, plus a checklist of UX properties screenshots miss (focus order, scroll restoration, transitions, form state, breakpoints, dark mode). 4. Treats any unexplained diff as a regression until proven otherwise — reported with before/after, the commit that caused it, and a fix. Wired it into `improve-codebase-architecture` as a Step 0 (capture before scanning) and Step 4 (verify after implementing), plus a "UI blast radius" field on the report cards, and into `implement` as a pre-commit gate. Also flagged in the deletion-test section: the deletion test asks whether deleting something concentrates complexity, never whether it changes what a user sees — those are different questions, and modules that read as "shallow" (wrapper components, conditional-render branches, layout containers) are often exactly the ones that are load-bearing on screen. Happy to open a PR with the actual skill file + patch if that's useful — wanted to flag the gap first in case there's a reason it's scoped to code-only that I'm missing, or a different shape you'd rather it take.