Polish — Frontend Improvements
The website is built and works. Now it gets polished.
Triangle:
/design-system /audit Phase 09 /polish
RULES → CHECK → ACTION
"How it should be" "How it is" "How it gets better"
(Reference) (Findings list) (Analysis + Implementation)
7 Modes
| Mode |
Invocation |
What happens |
Modifies code? |
scan |
/polish or /polish scan |
Design X-ray: rate 6 dimensions, output report |
No |
quick |
/polish quick |
Implement 3-5 quick wins with best impact/effort ratio |
Yes |
focus |
/polish focus [dim] |
Deep work on one dimension |
Yes |
wow |
/polish wow |
Suggest + implement 2-3 bold wow effects |
Yes |
compete |
/polish compete [url] |
Analyze competitor + specifically outperform |
Yes |
showcase |
/polish showcase |
Before/after screenshots + comparison document |
No |
auto |
/polish auto |
scan → prioritize → quick wins → offer wow → showcase |
Yes |
6 Analysis Dimensions
Each dimension is rated with a score of 1-10. Details in dimensions/*.md.
| Dim |
Code |
What is checked |
Checks |
| 1 |
VIS |
Color harmony, typography, spacing, layout, image quality, icons |
6 |
| 2 |
UX |
Navigation, CTAs, hover/focus, mobile, loading impression, user flow |
6 |
| 3 |
CON |
Headlines, body copy, CTA texts, storytelling, uniqueness, trust |
6 |
| 4 |
EMO |
First impression, industry fit, trust, differentiation, wow effect |
5 |
| 5 |
CVR |
CTA placement, contact options, social proof, urgency, friction |
5 |
| 6 |
PERF |
Animations, images, fonts, above-the-fold |
4 |
Overall Score = Average of all 6 dimensions (weighted: VIS/EMO x1.2, PERF x0.8).
Process per Mode
scan
- Load prior context: Read existing audit states for severity-based prioritization:
.audit-state.json → Findings from ALL phases (not just Phase 09)
.project-audit-state.json → Code quality findings
.astro-audit-state.json → Astro-specific findings
.micro-check-results.json → Results from micro skills (if available)
- Benefit: Address CRITICAL/HIGH findings first, use findings as context for dimension rating
- Identify project: Read package.json, config files,
site.ts
- Detect stack: Astro? Tailwind? → load matching stack supplement (
stacks/)
- Detect industry: From
site.ts or scan file → reference /design-system industry palette
- Run auto-detection:
- CSS/Tailwind: Extract colors (custom properties, theme config)
- Fonts: Font files in
public/fonts/, @font-face declarations
- Spacing: Count most frequent padding/margin values
- Animations: Find transition/animation declarations
- Icons: Lucide/Heroicons? SVG inline or sprite?
- Rate 6 dimensions: Go through each dimension file, assign score
- Output report: Use template
templates/scan-report.md
- Write state:
.polish-state.json
- Recommendation: AskUserQuestion — recommend quick wins or targeted focus
quick
- Read state (if available) or run a brief scan
- Build impact matrix:
| Category |
Description |
Approach |
| Quick Win |
Immediate, <5 min, large visual effect |
Implement directly |
| Signature Move |
10-20 min, distinctive highlight |
Checkpoint → implement |
| Optional |
Nice-to-have, low impact |
Mention only |
- Select 3-5 quick wins from
strategies/quick-wins.md
- Implement — brief verification after each change
- Update state
focus [dim]
- Dimension code:
visual, ux, content, emotion, conversion, perf
- Load matching dimension file
- Go through all checks of the dimension
- Identify weaknesses, prioritize fixes
- Implement max 5 improvements per focus session
- Score update in state
wow
- Read state — which dimensions are weak?
- Suggest wow effects from
strategies/wow-effects.md
- AskUserQuestion — which effects to implement?
- Mark recommendation (best impact for this website)
- Max 3 to choose from
- Checkpoint before each change (automatically via hook)
- Implement with performance check after each effect
- Verification:
npm run build must succeed
compete [url]
- Analyze competitor URL: Playbook from
strategies/compete-playbook.md
- Build comparison matrix:
- Design quality, features, performance, mobile, content
- Identify differentiation opportunities
- AskUserQuestion: Which improvements to implement?
- Implement — specifically target areas where competitor is better
- Document before/after
showcase
- Playwright screenshots: Desktop (1440px) + Mobile (375px)
- If previous screenshots exist (from state): Side-by-side
- Use template
templates/showcase.md
- Delete screenshots after documentation (cleanup rule)
auto
- Run
scan
- Analyze results, prioritize
quick — implement 3-5 quick wins
- AskUserQuestion: Add wow effects?
- Yes (recommendation): Run
wow
- No: Go directly to showcase
showcase — before/after
Rules
Performance Budget (CRITICAL)
No effect may exceed these limits:
- LCP: Max +100ms degradation
- CLS: Max +0.01 degradation
- JS: Max +5KB additional JavaScript
- CSS-only preferred: Always try animations as CSS-only first
Context Protection
- Max 8 improvements per session
- If more: AskUserQuestion whether to continue or start a new session
Quality Checks after Each Change
npm run build — must succeed
- Check contrast (WCAG AA: 4.5:1 text, 3:1 large)
- Mentally walk through mobile view
- Do not introduce new a11y problems
Integration with Other Skills
- Before polish: Read
.audit-state.json — use findings from ALL phases as input (not just Phase 09)
- Design reference: Follow
/design-system industry palette + spacing scale
- After polish: Recommend
/lighthouse-quick for performance verification
- After polish: Recommend
/capture-pdf quick for before/after documentation
Smart Next Steps
After completing polish, suggest appropriate follow-up skills to the user:
| Condition |
Recommendation |
Reason |
| Always |
/lighthouse-quick |
Verify performance after changes |
| Always |
/capture-pdf quick |
Before/after documentation |
| Audit state exists with open findings |
/audit continue |
Fix remaining findings |
| No audit has run |
/audit start |
Check overall quality |
State Management
.polish-state.json in project root:
{
"version": "1.0",
"project": "slug-from-directory-name",
"stack": "astro",
"industry": "industry-from-site-ts",
"lastScan": {
"date": "2026-02-21",
"overallScore": 68,
"dimensions": {
"visual": { "score": 7, "findings": 3 },
"ux": { "score": 8, "findings": 1 },
"content": { "score": 6, "findings": 4 },
"emotion": { "score": 5, "findings": 3 },
"conversion": { "score": 7, "findings": 2 },
"perf": { "score": 9, "findings": 0 }
}
},
"improvements": [
{
"id": "VIS-01",
"description": "Unified section spacing",
"status": "fixed",
"fixedIn": "2026-02-21"
}
]
}
Industry Context
Industry is automatically detected from:
src/config/site.ts → industry field
- Scan file in
scans/ (if available)
- Directory name (e.g.,
hair-salon-downtown → Hair Salon)
Load industry palette from /design-system and use as reference.
Do not apply blindly — respect the website's existing color scheme.
1---2name: polish3description: Frontend quick wins to wow effects (6 dimensions). Use when: "polish", "beautify", "improve", "wow", "improve design", "enhance", "quick wins".4---56<!-- AI-QUICK-REF7## /polish — Quick Reference8- **7 Modes:** scan, quick, focus, wow, compete, showcase, auto9- **Arguments:** `/polish $0 [$1]` e.g. `/polish focus visual`, `/polish wow`10- **6 Dimensions:** Visual, UX, Content, Emotion, Conversion, Perf-Design11- **Score:** 1-10 per dimension, overall score = average12- **Performance Budget:** LCP +100ms max, CLS +0.01 max, JS +5KB max13- **Context Protection:** Max 8 improvements per session14- **State:** .polish-state.json in project root15- **Distinction:** /design-system = rules, /audit P09 = check, /polish = action16- **Checkpoint:** git stash before each change (checkpoint.sh triggers automatically)17- **Stack Detection:** Read package.json + config → load matching stack supplement18-->1920# Polish — Frontend Improvements2122The website is built and works. Now it gets polished.2324**Triangle:**25```26/design-system /audit Phase 09 /polish27 RULES → CHECK → ACTION28 "How it should be" "How it is" "How it gets better"29 (Reference) (Findings list) (Analysis + Implementation)30```3132---3334## 7 Modes3536| Mode | Invocation | What happens | Modifies code? |37|------|-----------|-------------|----------------|38| `scan` | `/polish` or `/polish scan` | Design X-ray: rate 6 dimensions, output report | No |39| `quick` | `/polish quick` | Implement 3-5 quick wins with best impact/effort ratio | Yes |40| `focus` | `/polish focus [dim]` | Deep work on one dimension | Yes |41| `wow` | `/polish wow` | Suggest + implement 2-3 bold wow effects | Yes |42| `compete` | `/polish compete [url]` | Analyze competitor + specifically outperform | Yes |43| `showcase` | `/polish showcase` | Before/after screenshots + comparison document | No |44| `auto` | `/polish auto` | scan → prioritize → quick wins → offer wow → showcase | Yes |4546---4748## 6 Analysis Dimensions4950Each dimension is rated with a score of 1-10. Details in `dimensions/*.md`.5152| Dim | Code | What is checked | Checks |53|-----|------|----------------|--------|54| 1 | VIS | Color harmony, typography, spacing, layout, image quality, icons | 6 |55| 2 | UX | Navigation, CTAs, hover/focus, mobile, loading impression, user flow | 6 |56| 3 | CON | Headlines, body copy, CTA texts, storytelling, uniqueness, trust | 6 |57| 4 | EMO | First impression, industry fit, trust, differentiation, wow effect | 5 |58| 5 | CVR | CTA placement, contact options, social proof, urgency, friction | 5 |59| 6 | PERF | Animations, images, fonts, above-the-fold | 4 |6061**Overall Score** = Average of all 6 dimensions (weighted: VIS/EMO x1.2, PERF x0.8).6263---6465## Process per Mode6667### scan68691. **Load prior context:** Read existing audit states for severity-based prioritization:70 - `.audit-state.json` → Findings from ALL phases (not just Phase 09)71 - `.project-audit-state.json` → Code quality findings72 - `.astro-audit-state.json` → Astro-specific findings73 - `.micro-check-results.json` → Results from micro skills (if available)74 - **Benefit:** Address CRITICAL/HIGH findings first, use findings as context for dimension rating752. **Identify project:** Read package.json, config files, `site.ts`763. **Detect stack:** Astro? Tailwind? → load matching stack supplement (`stacks/`)773. **Detect industry:** From `site.ts` or scan file → reference `/design-system` industry palette784. **Run auto-detection:**79 - CSS/Tailwind: Extract colors (custom properties, theme config)80 - Fonts: Font files in `public/fonts/`, @font-face declarations81 - Spacing: Count most frequent padding/margin values82 - Animations: Find transition/animation declarations83 - Icons: Lucide/Heroicons? SVG inline or sprite?845. **Rate 6 dimensions:** Go through each dimension file, assign score856. **Output report:** Use template `templates/scan-report.md`867. **Write state:** `.polish-state.json`878. **Recommendation:** AskUserQuestion — recommend quick wins or targeted focus8889### quick90911. **Read state** (if available) or run a brief scan922. **Build impact matrix:**9394| Category | Description | Approach |95|----------|------------|----------|96| Quick Win | Immediate, <5 min, large visual effect | Implement directly |97| Signature Move | 10-20 min, distinctive highlight | Checkpoint → implement |98| Optional | Nice-to-have, low impact | Mention only |991003. **Select 3-5 quick wins** from `strategies/quick-wins.md`1014. **Implement** — brief verification after each change1025. **Update state**103104### focus [dim]1051061. Dimension code: `visual`, `ux`, `content`, `emotion`, `conversion`, `perf`1072. Load matching dimension file1083. Go through all checks of the dimension1094. Identify weaknesses, prioritize fixes1105. Implement max 5 improvements per focus session1116. Score update in state112113### wow1141151. **Read state** — which dimensions are weak?1162. **Suggest wow effects** from `strategies/wow-effects.md`1173. **AskUserQuestion** — which effects to implement?118 - **Mark recommendation** (best impact for this website)119 - Max 3 to choose from1204. **Checkpoint** before each change (automatically via hook)1215. **Implement** with performance check after each effect1226. **Verification:** `npm run build` must succeed123124### compete [url]1251261. **Analyze competitor URL:** Playbook from `strategies/compete-playbook.md`1272. **Build comparison matrix:**128 - Design quality, features, performance, mobile, content1293. **Identify differentiation opportunities**1304. **AskUserQuestion:** Which improvements to implement?1315. **Implement** — specifically target areas where competitor is better1326. **Document** before/after133134### showcase1351361. Playwright screenshots: Desktop (1440px) + Mobile (375px)1372. If previous screenshots exist (from state): Side-by-side1383. Use template `templates/showcase.md`1394. Delete screenshots after documentation (cleanup rule)140141### auto1421431. Run `scan`1442. Analyze results, prioritize1453. `quick` — implement 3-5 quick wins1464. **AskUserQuestion:** Add wow effects?147 - **Yes (recommendation):** Run `wow`148 - **No:** Go directly to showcase1495. `showcase` — before/after150151---152153## Rules154155### Performance Budget (CRITICAL)156No effect may exceed these limits:157- **LCP:** Max +100ms degradation158- **CLS:** Max +0.01 degradation159- **JS:** Max +5KB additional JavaScript160- **CSS-only preferred:** Always try animations as CSS-only first161162### Context Protection163- Max **8 improvements** per session164- If more: AskUserQuestion whether to continue or start a new session165166### Quality Checks after Each Change1671. `npm run build` — must succeed1682. Check contrast (WCAG AA: 4.5:1 text, 3:1 large)1693. Mentally walk through mobile view1704. Do not introduce new a11y problems171172### Integration with Other Skills173- **Before polish:** Read `.audit-state.json` — use findings from ALL phases as input (not just Phase 09)174- **Design reference:** Follow `/design-system` industry palette + spacing scale175- **After polish:** Recommend `/lighthouse-quick` for performance verification176- **After polish:** Recommend `/capture-pdf quick` for before/after documentation177178### Smart Next Steps179180After completing polish, suggest appropriate follow-up skills to the user:181182| Condition | Recommendation | Reason |183|-----------|---------------|--------|184| Always | `/lighthouse-quick` | Verify performance after changes |185| Always | `/capture-pdf quick` | Before/after documentation |186| Audit state exists with open findings | `/audit continue` | Fix remaining findings |187| No audit has run | `/audit start` | Check overall quality |188189---190191## State Management192193`.polish-state.json` in project root:194195```json196{197 "version": "1.0",198 "project": "slug-from-directory-name",199 "stack": "astro",200 "industry": "industry-from-site-ts",201 "lastScan": {202 "date": "2026-02-21",203 "overallScore": 68,204 "dimensions": {205 "visual": { "score": 7, "findings": 3 },206 "ux": { "score": 8, "findings": 1 },207 "content": { "score": 6, "findings": 4 },208 "emotion": { "score": 5, "findings": 3 },209 "conversion": { "score": 7, "findings": 2 },210 "perf": { "score": 9, "findings": 0 }211 }212 },213 "improvements": [214 {215 "id": "VIS-01",216 "description": "Unified section spacing",217 "status": "fixed",218 "fixedIn": "2026-02-21"219 }220 ]221}222```223224---225226## Industry Context227228Industry is automatically detected from:2291. `src/config/site.ts` → `industry` field2302. Scan file in `scans/` (if available)2313. Directory name (e.g., `hair-salon-downtown` → Hair Salon)232233Load industry palette from `/design-system` and use as reference.234Do not apply blindly — respect the website's existing color scheme.