// this page was vibe-coded — designed by kunlin · built by claude · verified by a harness 0 lines hand-written ✓

ai-lab.md · build: passing ✓ · authored by kunlin × claude

Exploring Agentic AI in Product Design

Field notes from three scales: an AI agent I designed at work, the workflow I proposed so our product team could build AI features, and the tools I vibe-code after hours. Same method each time: a living spec, an AI that executes, a designer who owns the judgment.

product-designer · role description edited by AI · changes accepted ✓

deliverable

Static mockups & 40-page decks → A living spec that humans and agents both read

craft

Pixels → Rules, constraints, guardrails

handoff

Over the wall, then wait → A loop — AI drafts, I direct

the edge

Execution speed → Judgment — the final 20% no model has

AI didn't shrink the design job. It moved it upstream — from drawing every screen to defining what "right" means.

// the loop · one method, three scales

spec (.md)→ AI executes→ human judgment→ write back

⟲  the last step feeds the first — the spec never goes stale

01

01 / product scale

NIA: designing an AI agent inside a $1.4B B2B platform

GenAI Agent Persistent sidebar ↑22% faster purchase flow ↑15% bundle attachment

🚀 Our first AI feature: a shopping agent that helps B2B buyers compare products, get answers, and check out without leaving the page. Usability testing moved it from a full-page modal to a persistent sidebar, so buyers never lose their place.

fig.01 · nia, persistent sidebar agent · shipped to production

02

02 / team scale

Living Spec: how our product team learned to build AI features

Cross-team workflow AI governance MCP + Figma No code required

🚀 When we started building AI features, no team knew how. I proposed one living spec that holds everything, where every team claims its part: product, design, engineering, data, QA, and security. AI drafts the first pass of each section, and a named person signs it off. I designed it as a UX designer who doesn't write code, and piloted it on Nia.

// ai-feature-spec.md · every section has an ownernew for AIquestions regular features never had

§1Problem & successProduct
§2User evidenceDesign
§3new for AIAI behaviorDesign
§4new for AIData & sourcesData
§5new for AIArchitectureEngineering
§6new for AIFailure & fallbackDesign
§7new for AIGuardrailsSecurity
§8UI & componentsDesign
§9new for AIEvaluationQA
§10Decision logevery team

// workflow · two inputs, one living spec, five phases

vendor-input.mdpartner docs, requirements
+
Raw user dataresearch, tickets, analytics
→
feature-spec.mdmerged · the living document
→
Research Design Build Test Launch
MCP ↔ Figma · AI drafts components & first-pass pages generated from the spec
AI ~80%me 20%
→
Designer · the 20% review, refine, decide what's right for the user & the system
▲ every decision written back into feature-spec.md, until launch

// what made it work

The spec never went stale. Docs usually die after kickoff, but this one ate every decision we made and briefed the AI better each week. The most useful thing I handed off was the document, not the screens.

03

03 / personal scale

Vibe Coding — I don't write code. I write the rules AI follows.

Claude Code Custom SKILL.md Zero hand-written code Shipped solo

🚀 Two working tools: a Claude skill that tailors my resume without breaking a pixel-locked layout, and a live job-search dashboard in Next.js. Same loop as the enterprise one — plus a harness: automated checks every build must pass before I even look.

claude — ux-resume-optimizer
$ claude --skill ux-resume-optimizer ▸ loaded SKILL.md · 14 rules · layout: locked ▸ building… tailoring resume → senior-product-designer.pdf harness ─ width precheck ……………… PASS harness ─ keyword bleed grep ………… PASS harness ─ render diff @200dpi ……… FAIL Δ line 42 overflows +2.3pt ▸ patching rule → max-width guard @ skills.tail ▸ rebuilding from clean master… harness ─ width precheck ……………… PASS harness ─ keyword bleed grep ………… PASS harness ─ render diff @200dpi ……… PASS ✓ shipped · 0 lines hand-written · new check added to harness

Job Tracker ● Live

127

applications tracked · Next.js

fig.02 — one build cycle: red, patch the rule, green, ship

// workflow — two loops, and the harness only grows

Ideaa tool I actually need
→
SKILL.mdrules first: layout locks · injection sites · honest gap reports
→
Claude buildscode, pipelines, UI — the whole 80%
→
Harness — auto checkswidth prechecks · bleed grep · render diff — every build must pass
→
I judge the restdesign review for what checks can't measure — taste, clarity, honesty
→
Ship ✓the skill stays, reusable
▲ red? the agent fixes itself against the harness — I'm not in this loop
▲ my review fails it? I patch the rules — and the failure becomes a new harness check

// the unlock

Two loops. The harness catches everything measurable — and it only grows: each failure I catch by eye becomes a new automated check. The agent I work with next month is strictly better than this month's. Continuous learning, designed — not hoped for.

// EOF — anonymized to method level. happy to go deeper in a conversation.

say hi →