/rite-polish: finish before review
Polish code for every feature. When the feature touches UI, normalize and polish the
UI as well. Complete this self-review before /rite-review. The code and UI phases
live in reference/code.md
(anti-ai-slop.md,
backend-polish.md)
and reference/ui.md
(browser-polish-evidence.md,
design-system-discovery.md,
harden-checklist.md);
read only the phase in scope.
Operating rules
- Functionality complete first. Polish runs after
/rite-prove (full
feature proven).
- Follow the shared
candidate-integrity.md.
Polish owns every candidate-affecting correction and durable rollup before Review.
- Feature scope only.
- For UI, normalize before polishing. Do not add decoration on top of drift.
- Bounded polish passes. Verification runs in bounded passes, not a loop: after the
Phase 4 assessment, at most one more correction round for new findings, then stop —
residual subjective preference is recorded in
polish-report.md, not re-polished.
Failing case: the same surface reopened a third time with no new failing evidence.
- Root selects; wright edits. The controlling chat assesses and reconciles, but every
accepted source/test correction is dispatched to the sole writer,
devrites-slice-wright, through
agents.md. Never edit source inline or
run two correction writers concurrently.
Polish axes (C3 — completeness vs craft)
Score separately; conflating them hides gaps:
| Axis |
Question |
Failing case |
| ux_coverage |
Did we compare every stated alternative/state? |
Omitted empty/error state treated as agreement |
| completeness |
Are required states, copy, and flows present? |
Hero-only layout with no loading/error |
| craft / anti-slop |
Does the UI avoid generic template patterns? |
Inter + purple gradient hero with no product-specific hierarchy |
| distinction |
Is there one intentional signature detail? |
Polished but indistinguishable from a template |
Incomplete comparison is not agreement. Record axis deltas in polish-report.md.
Orchestration
- Read
.claude/skills/devrites-lib/reference/standards/core.md first (the always-on operating rules). The
per-phase rule files (coding-style.md, error-handling.md, …) load on demand
from reference/code.md / reference/ui.md when their phase runs; for UI scope also read
.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md.
Then read the explicit or active workspace's state.md directly.
- Read
state.md, touched-files.md, the current candidate digest, and the
git diff for the active workspace (or $ARGUMENTS if a target was given).
- Detect UI scope: UI is touched if the diff or
touched-files.md
contains any of: .tsx, .jsx, .vue, .svelte, .html, .css,
.scss, .sass, .less, .styl, component dirs (components/,
pages/, routes/, app/, views/, screens/), Storybook stories,
or design-token files. When in doubt, look for visual changes that need
verification.
- Always read
reference/code.md and assess Phase 1
(code polish); if backend was touched, assess Phase 2 (backend polish) from
the same file. Reconcile the findings, then send accepted corrections as one bounded
wright contract.
- If UI scope detected read
reference/ui.md, and read
design-brief.md if present so the polish follows the direction and states established
by devrites-ux-shape and refined by devrites-frontend-craft. Read the
## Visual Verdict table in browser-evidence.md if present:
its FAIL and PARTIAL rows are the normalize/quality-bar worklist: identify the root
cause of each (a missing state, an off-token CTA, or an anti-slop hit) rather than
hiding it with decoration. Assess Phase 3 (normalize) → Phase 4 (UI polish),
then send accepted UI
corrections to the wright (which invokes the relevant craft skill). Honor argument modes:
bolder | quieter | distill | harden: passed to Phase 4 as the
emphasis dial.
normalize-only: assess Phase 3 and stop (no Phase 4).
- Finish durable rollups before Review. Apply the capability
ledger when requirements changed, the optional UI
design memory, and durable
ADR promotion. Add every changed project path
to the candidate manifest; none of these writes waits for Ship.
- Re-prove and close. After all accepted code/UI corrections and rollups,
run
devrites-engine check candidate <slug>. Any digest change requires
affected real re-proof using the approved commands, fresh proof-runner
validation, refreshed evidence/browser bindings, and an updated candidate
manifest. Record a Re-verification: line in polish-report.md. Close
the candidate for Review only after these checks are green.
- Aggregate output: each phase appends to the single
polish-report.md.
Refinement modes
Pass the requested UI direction to Phase 4. Modes do not bypass normalization or the
quality bar; they apply after the system is aligned. See reference/ui.md.
Mid-flight discipline. When tempted to polish UI without normalize, cite
clean lint as proof of quality, skip Phase 2 on a backend diff, or delete a
Chesterton's Fence: see anti-patterns.
1---2name: rite-polish3description: Polish the active feature's code and any touched UI before review. Use for finish or normalization requests; not for repository-wide refactors.4---56# /rite-polish: finish before review78Polish code for every feature. When the feature touches UI, normalize and polish the9UI as well. Complete this self-review before `/rite-review`. The code and UI phases10live in [`reference/code.md`](reference/code.md)11([`anti-ai-slop.md`](reference/anti-ai-slop.md),12[`backend-polish.md`](reference/backend-polish.md))13and [`reference/ui.md`](reference/ui.md)14([`browser-polish-evidence.md`](reference/browser-polish-evidence.md),15[`design-system-discovery.md`](reference/design-system-discovery.md),16[`harden-checklist.md`](reference/harden-checklist.md));17read only the phase in scope.1819## Operating rules2021- **Functionality complete first.** Polish runs after `/rite-prove` (full22 feature proven).23- Follow the shared24 [`candidate-integrity.md`](../devrites-lib/reference/candidate-integrity.md).25 Polish owns every candidate-affecting correction and durable rollup before Review.26- Feature scope only.27- For UI, **normalize before polishing**. Do not add decoration on top of drift.28- **Bounded polish passes.** Verification runs in bounded passes, not a loop: after the29 Phase 4 assessment, at most one more correction round for **new** findings, then stop —30 residual subjective preference is recorded in `polish-report.md`, not re-polished.31 **Failing case:** the same surface reopened a third time with no new failing evidence.32- **Root selects; wright edits.** The controlling chat assesses and reconciles, but every33 accepted source/test correction is dispatched to the sole writer,34 `devrites-slice-wright`, through35 [`agents.md`](../devrites-lib/reference/standards/agents.md). Never edit source inline or36 run two correction writers concurrently.3738## Polish axes (C3 — completeness vs craft)3940Score **separately**; conflating them hides gaps:4142| Axis | Question | Failing case |43| --- | --- | --- |44| **ux_coverage** | Did we compare every stated alternative/state? | Omitted empty/error state treated as agreement |45| **completeness** | Are required states, copy, and flows present? | Hero-only layout with no loading/error |46| **craft / anti-slop** | Does the UI avoid generic template patterns? | Inter + purple gradient hero with no product-specific hierarchy |47| **distinction** | Is there one intentional signature detail? | Polished but indistinguishable from a template |4849Incomplete comparison is **not** agreement. Record axis deltas in `polish-report.md`.5051## Orchestration52530. **Read** `.claude/skills/devrites-lib/reference/standards/core.md` first (the always-on operating rules). The54 per-phase rule files (`coding-style.md`, `error-handling.md`, …) load on demand55 from `reference/code.md` / `reference/ui.md` when their phase runs; for UI scope also read56 `.claude/skills/devrites-lib/reference/standards/browser-proof-checklist.md`.57 Then read the explicit or active workspace's `state.md` directly.581. **Read** `state.md`, `touched-files.md`, the current candidate digest, and the59 `git diff` for the active workspace (or `$ARGUMENTS` if a target was given).602. **Detect UI scope:** UI is touched if the diff or `touched-files.md`61 contains any of: `.tsx`, `.jsx`, `.vue`, `.svelte`, `.html`, `.css`,62 `.scss`, `.sass`, `.less`, `.styl`, component dirs (`components/`,63 `pages/`, `routes/`, `app/`, `views/`, `screens/`), Storybook stories,64 or design-token files. When in doubt, look for visual changes that need65 verification.663. **Always** read [`reference/code.md`](reference/code.md) and assess **Phase 167 (code polish)**; if backend was touched, assess **Phase 2 (backend polish)** from68 the same file. Reconcile the findings, then send accepted corrections as one bounded69 wright contract.704. **If UI scope detected** read [`reference/ui.md`](reference/ui.md), and read71 `design-brief.md` if present so the polish follows the direction and states established72 by `devrites-ux-shape` and refined by `devrites-frontend-craft`. **Read the73 `## Visual Verdict` table in `browser-evidence.md` if present:74 its `FAIL` and `PARTIAL` rows are the normalize/quality-bar worklist**: identify the root75 cause of each (a missing state, an off-token CTA, or an anti-slop hit) rather than76 hiding it with decoration. Assess **Phase 3 (normalize)** → **Phase 4 (UI polish)**,77 then send accepted UI78 corrections to the wright (which invokes the relevant craft skill). Honor argument modes:79 - `bolder | quieter | distill | harden`: passed to Phase 4 as the80 emphasis dial.81 - `normalize-only`: assess Phase 3 and stop (no Phase 4).825. **Finish durable rollups before Review.** Apply the capability83 [`ledger`](reference/ledger.md) when requirements changed, the optional UI84 [`design memory`](reference/design-memory.md), and durable85 [`ADR promotion`](reference/adr-promotion.md). Add every changed project path86 to the candidate manifest; none of these writes waits for Ship.876. **Re-prove and close.** After all accepted code/UI corrections and rollups,88 run `devrites-engine check candidate <slug>`. Any digest change requires89 affected real re-proof using the approved commands, fresh proof-runner90 validation, refreshed evidence/browser bindings, and an updated candidate91 manifest. Record a **`Re-verification:`** line in `polish-report.md`. Close92 the candidate for Review only after these checks are green.937. **Aggregate output:** each phase appends to the single `polish-report.md`.9495## Refinement modes9697Pass the requested UI direction to Phase 4. Modes do not bypass normalization or the98quality bar; they apply after the system is aligned. See `reference/ui.md`.99100> **Mid-flight discipline.** When tempted to polish UI without normalize, cite101> clean lint as proof of quality, skip Phase 2 on a backend diff, or delete a102> Chesterton's Fence: see [anti-patterns](reference/anti-patterns.md).