Not committed to the no-skills/skills/impeccable branches — kept on main
so each demo branch's diff stays clean and presentable.
All three branches start from the same commit (chore: scaffold llmao teaser demo baseline) or its descendants, get the identical brief (docs/prompt.md), and
were built by fresh Sonnet 5 agents with no web search / no internet access.
main
└─ no-skills (plain build, no skills)
├─ skills (+ astro, chrome-devtools-axi)
└─ impeccable (+ impeccable, design-only pass over the no-skills page)
skills branches off the shared baseline and gets its own independent build.
impeccable branches off the finished no-skills page — same content,
same copy, same bug — so its diff is a pure design delta, nothing else.
Every branch builds cleanly from a fresh deno task install && deno task build (verified independently; build artifacts are gitignored, not
committed).
Sonnet 5, offline, no skills. Produces a working but unremarkable Astro page:
Inter everywhere, a cyan→purple gradient run straight across the llmao
wordmark, uniform icon+heading+text champion cards. Ships one real bug (next
section).
git diff no-skills skills -- .claude→ two files, nothing else: .claude/skills/astro/SKILL.md and
.claude/skills/chrome-devtools-axi/SKILL.md, installed with:
npx skills add https://github.com/astrolicious/agent-skills --skill astro
npx skills add kunchenguid/chrome-devtools-axi --skill chrome-devtools-axiThe headline moment: reference/ mirrors six champions, but only five
champion sprite sheets exist (no Ironclad sprite). The no-skills build
silently reused the towers (turret) sprite as Ironclad's icon — a
visible, misleading bug that shipped with nothing to catch it
(git show no-skills:src/data/content.ts line ~24). The skills build used
chrome-devtools-axi to render its own preview in headless Chrome, pull the
accessibility tree, and screenshot both viewports — it caught the mismatch
itself and replaced it with a hue-tinted monogram badge.
Be honest about the rest: beyond that catch, the skills diff is
incremental — an extracted ChampionCard.astro, role="img"/aria-label on
the sprite icon, one mobile grid fix, compressHTML: true — and partly offset
by regressions the run introduced (deleted tsconfig.json strict mode and
src/env.d.ts, dropped an .sr-only utility and a global img reset). The
astro skill's guidance was mostly generic project-structure/CLI knowledge
that didn't change anything — the build only touched stable-since-v2 Astro
APIs the model already knew. chrome-devtools-axi is what actually changed
the outcome; astro mattered less than expected for a page this simple.
Live-demo friction worth mentioning: npx -y chrome-devtools-axi itself
misrouted in the sandbox (npx parsed the package name into npm's own arg
parser); the agent worked around it with npm exec -y -- chrome-devtools-axi <cmd>. Skills don't remove all friction — they give the agent a path through
it and something to verify against, instead of silently shipping.
git diff no-skills impeccable -- . ':!.claude' ':!skills-lock.json'
# → PRODUCT.md, DESIGN.md, src/pages/index.astro, src/styles/global.cssInstalled the same way as the other two:
npx skills add pbakaus/impeccableImpeccable is a design-vocabulary
skill (23 commands — polish, bolder, delight, animate, critique,
audit, …) whose stated purpose is killing "AI-generated UI tells": "Inter
for everything, purple-to-blue gradients, cards nested in cards." The
no-skills page has both of the named tells verbatim. Its 58 detector rules
run with no LLM and no API key — pure static analysis, holds under
"offline."
Branched from the finished no-skills page (same copy, same champions, same
Ironclad-sprite bug — content was explicitly out of scope for this pass) and
ran impeccable init → polish (+ layout/typeset/colorize per its own
guidance) against the existing markup/CSS only:
- Gradient text → solid color + glow. The wordmark's
background-clip: textcyan→purple run is exactly the anti-pattern impeccable names. Replaced with solid--accent+ a matchedtext-shadow— same neon read, not the tell. Detector confirms: 1 finding (gradient-text) before → 0 after. - Monospace given a real job. HUD tags, role labels, room code, and stat columns now render in a mono stack with tabular numerals; Inter is reserved for prose/headings — addresses "Inter for everything" without inventing a fake second display face.
- Card grid → roster list. The uniform icon+heading+text champion cards (explicitly banned in impeccable's craft-floor guidance) became a single panel with hairline-divided rows — reads like a champion-select screen, not a SaaS template grid.
The asterisk, worth saying out loud: the row-layout redesign introduced
its own real bug during verification — Ironclad's role text ("tank /
bruiser") overflowed a fixed-width flex column and visually collided with the
passive-ability text next to it (.champion-meta had no flex-wrap). Caught
by eye during a manual screenshot check, not by the skill itself, and fixed in
a follow-up commit (fix: prevent champion role text from overflowing into ability column). Good, honest line for the talk: a design-polish skill still
needs a second pass — it changes what you're guarding against, not whether you
still need to look.
live mode (interactive browser iteration) and any LLM-backed critique/audit
sub-agents weren't available in this sandbox (need a running browser session /
API key) — the build used the static detector plus direct reading of the
skill's reference docs instead.
git log --oneline --all --graph --decorate— one baseline, three branches, one variable each.git diff no-skills skills -- .claude— two files. That's the entire setup cost of skills #1 and #2.- Ironclad's card,
no-skillsvsskills— turret icon vs. monogram badge. Explain why: chrome-devtools-axi let the agent literally see what it shipped. - Say plainly that
astro's contribution here was smaller than you'd expect — the honesty lands better than oversetting it. no-skillsvsimpeccablehero, side by side — gradient wordmark vs. solid glow; card grid vs. roster list. This is the visual "wow."- Land on the overflow bug and the fix commit — the twist that keeps it honest: skills change your leverage, not your obligation to verify.