ui-final-polish
Final visual polish for an existing UI without redesigning it. Use after structure is clear, when asked to improve spacing, alignment, text hierarchy, readability, shadows, highlights, effects, action placement, or overall production feel. For screen structure, layer naming, code handoff, preview scenes, or animation planning, use pencil-ui-structure first.
What this skill does
# UI Final Polish Apply a restrained final polish pass to an existing UI component or screen. Use this skill when the job is to make something feel cleaner, sharper, and more production-ready while preserving the current design. This skill is not a redesign skill. If the user is asking how to structure, name, organize, package, or hand off a design for code, use `pencil-ui-structure` first and only use this skill afterward for visual polish. Short usage name: - `ui-final-polish` ## Goals - Preserve the existing composition, visual direction, component role, and design intent - Strengthen text hierarchy - Improve spacing rhythm and readability - Fix weak or awkward composition - Make actions feel properly anchored - Preserve the existing style unless the user explicitly asks for redesign ## Non-Goals - Do not create a new visual direction - Do not reinterpret the component's aesthetic - Do not change the component category, product role, or hierarchy - Do not broadly retheme colors, materials, effects, typography, or spacing - Do not apply a style guide as a full redesign unless the user explicitly asks for a redesign - Do not make changes because they are "more beautiful" if they do not solve a concrete polish issue - Do not replace a user's preferred design with your preferred design - Do not silently change multiple unrelated areas when the user named one issue or node ## Default Stance - Polish is a scalpel, not a redesign pass - Do not redesign when polish is requested - Keep the current visual language, density, and dark/light mood - Prefer surgical fixes over broad stylistic changes - Prefer hierarchy and spacing fixes before introducing new visual elements - Avoid unnecessary gradients, glows, heavy shadows, or decorative effects unless they improve hierarchy or usability - Remove friction, not personality - Polish should improve clarity and confidence without changing the product identity - If a change would be visible as a new style direction, pause and either avoid it or ask first - If the user says "do not redesign", treat that as a hard constraint ## Review Order Check in this order: 1. User-stated problem or requested node 2. Current component role and intended visual category 3. Existing visual language that must be preserved 4. Text hierarchy and readability 5. Spacing and alignment 6. Action placement 7. Content width, scroll, and resizing behavior 8. Effects/material cleanup only if needed 9. Final production-clean pass ## Core Heuristics - A polished UI should feel obvious, calm, and intentional - If everything feels important, nothing is important - Consistent spacing usually matters more than additional styling - Visual emphasis should follow product importance, not decoration - A component should feel visually stable before it feels visually impressive - Misalignment is usually more damaging than weak styling - Hierarchy should be created with spacing and contrast before color and effects - Every polish edit should have a job: improve hierarchy, readability, alignment, affordance, or material separation - If a change only makes the component more decorative, treat it as suspect until the hierarchy is stable - The smallest effective change is usually the best change - When preserving a finished design, "less changed" is a quality metric - If two fixes both work, choose the one that changes fewer properties ## Polish Decision Rules Before editing, identify: - User intent: what specific thing did they ask to improve? - Preservation target: what must remain recognizably the same after the pass? - Foreground: the element the user should act on or read first - Support layer: secondary context that should stay visible but quieter - Background: decorative or environmental content that must not compete - Interaction target: the thing that should feel clickable, draggable, editable, or selected Then make the smallest change that clarifies the relationship between those layers. If the user gave a specific node, do not touch sibling nodes unless the named node cannot be judged or fixed without its immediate context. If the user gave a specific issue, fix that issue only. Examples: - "contrast" means adjust contrast, not layout, mood, or component structure. - "spacing" means adjust spacing/alignment, not palette or effects. - "make it match DESIGN.md" means map the existing component to the closest category in the design doc, not redesign it into another category. - "this part is good" means preserve that part exactly unless a tiny mechanical fix is required. Use this priority order: 1. Preserve the current design intent 2. Fix the named issue 3. Fix obvious readability/accessibility problems inside the named scope 4. Fix spacing and alignment inside the named scope 5. Tune shadows, highlights, fills, and glows only if they are the problem 6. Remove anything that competes with the primary action or primary content ## What Good Looks Like ### Structure and Composition - The component should have one clear parent layout - Major areas should read in a stable order: header, content, metadata, actions - Resize behavior should be intentional: fixed viewport, fill container, or fit content - Avoid making layouts overly dense. Preserve breathable negative space - Do not rearrange major regions unless the user asks for layout work - Do not add or remove product content during polish unless it is clearly decorative noise ### Typography and Hierarchy - Title should clearly dominate - Subtitle should support, not compete - Labels should be quieter than values - Helper copy and lists should sit below values in emphasis - Long text blocks should maintain comfortable reading width - Avoid large blocks of equally emphasized text ### Actions and Dark UI - Primary actions should feel anchored to the component, not visually detached - Bottom actions should align with the same width and padding system as the card - In dark interfaces, hierarchy should come primarily from contrast and spacing, not saturation ## Typical Fixes - Fix spacing, hierarchy, and alignment before adding decoration - Tighten or loosen section gaps - Lower secondary text contrast - Reduce bullet or helper text size - Improve line-height on paragraphs and lists - Convert a floating button into a proper child of the card - Reduce overly long line width in text-heavy areas - Change inner viewport from fixed height to fill container when the shell should stretch - Change shell height to fit content when clipping is artificial - Reduce visual noise before introducing new styling - Replace an overly strong stroke with a quieter stroke - Reduce an effect that competes with content - Make a primary action clearer without changing its component type - Preserve successful local details while fixing surrounding issues ## Change Budget Default to a small change budget. - `Tiny polish`: 1-3 property changes on the named node or direct children. - `Normal polish`: a small set of related changes in one component area. - `System polish`: only when the user explicitly asks to update a kit, system, or multiple components. When in doubt, start with `Tiny polish`. Do not jump to `System polish` because a style guide exists. Do not make broad replacements across a file unless the user explicitly asks for KIT/system-level cleanup. ## Effects Best Practices Use effects to support hierarchy and material feel, not to compensate for weak structure. Effects are especially likely to become redesign. Add new effects only when: - the component already uses that material language - the requested problem is about depth, contrast, or material separation - the effect remains weaker than the primary content/action - the user did not ask to keep the current material exactly ### Shadows - Assume a single light source per screen. Default to light coming from above, so shadows fall downward. - Use the blur-to-offset rule as a starting point: `blur = y * 2`. - Avoid pure black shad
Related in Design
contribute
IncludedLocal-only OSS contribution command center. Auto-refreshes the user's in-flight PR and issue state on invoke so conversations start with full context — no need to brief Claude on what's in flight. Helps the user find issues to contribute to on GitHub, builds per-repo dossiers of what each upstream expects (CLA, DCO, branch convention, AI policy, draft-first, review bots, issue templates), runs deterministic gates before any external action so AI-assisted contributions don't reach maintainers as slop. State is markdown-only: candidate files at ~/.contribute-system/candidates/, repo dossiers at ~/.contribute-system/research/, append-only event log at ~/.contribute-system/log.jsonl. No database, no cloud calls. Use when the user asks about their PRs / issues / contributions, wants to find new work to take on, claim an issue, build/refresh a repo's dossier, or draft a Design Issue or PR. Trigger with "/contribute", "what's my PR status", "find a contribution", "claim issue X", "draft a Design Issue for Y", "refresh dossier for Z".
architectural-analysis
IncludedUser-triggered deep architectural analysis of a codebase or scoped subtree across eight modes — information architecture, data flow, integration points, UI surfaces, interaction patterns, data model, control flow, and failure modes. This skill should be used when the user asks to "diagram this codebase," "map the architecture," "show the data flow," "give me an ERD," "trace control flow," "find the integration points," "verify the layout pattern," "audit the UX architecture," or any similar request whose primary deliverable is mermaid diagrams plus cited reports under docs/architecture/. Dispatches haiku/sonnet sub-agents in parallel for per-mode exploration, then verifies every citation mechanically before any node lands in a diagram. Not for one-off prose explanations of code (use code-explanation) or for high-level system design from scratch (use system-design).
mcp
IncludedModel Context Protocol (MCP) server development and tool management. Languages: Python, TypeScript. Capabilities: build MCP servers, integrate external APIs, discover/execute MCP tools, manage multi-server configs, design agent-centric tools. Actions: create, build, integrate, discover, execute, configure MCP servers/tools. Keywords: MCP, Model Context Protocol, MCP server, MCP tool, stdio transport, SSE transport, tool discovery, resource provider, prompt template, external API integration, Gemini CLI MCP, Claude MCP, agent tools, tool execution, server config. Use when: building MCP servers, integrating external APIs as MCP tools, discovering available MCP tools, executing MCP capabilities, configuring multi-server setups, designing tools for AI agents.
react-native-skia
IncludedDesign, build, debug, and optimise high-polish animated graphics in React Native or Expo using @shopify/react-native-skia, Reanimated, and Gesture Handler. Use when the user wants canvas-driven UI, shaders, paths, rich text, image filters, sprite fields, Skottie, video frames, snapshots, web CanvasKit setup, or performance tuning for custom motion-heavy elements such as loaders, hero art, cards, charts, progress indicators, particle systems, or gesture-driven surfaces. Also use when the user asks for fluid, glow, glass, blob, parallax, 60fps/120fps, or GPU-friendly animated effects in React Native, even if they do not explicitly say "Skia". Do not use for ordinary form/layout work with standard views.
plaid
IncludedProduct Led AI Development — guides founders from idea to launched product. Six capabilities: Idea (discover a product idea), Validate (pressure-test the idea against fatal flaws, problem reality, competition, and 2-week MVP feasibility), Plan (vision intake + document generation), Design (translate image references into a design.md spec), Launch (go-to-market strategy), and Build (roadmap execution). Use when someone says "PLAID", "plaid idea", "help me find an idea", "product idea", "idea from my business", "idea from my expertise", "plaid validate", "validate my idea", "pressure-test", "is this idea good", "find fatal flaws", "validate the problem", "plan a product", "define my vision", "generate a PRD", "product strategy", "plaid design", "design from image", "translate image to design", "create design.md", "extract design tokens", "plaid launch", "go-to-market", "launch plan", "GTM strategy", "launch playbook", "plaid build", "build the app", "start building", or "execute the roadmap".
nextjs-framer-motion-animations
IncludedAdds production-safe Motion for React or Framer Motion animations to Next.js apps, including reveal, hover and tap micro-interactions, whileInView, stagger, AnimatePresence, layout and layoutId transitions, reorder, scroll-linked UI, and lightweight route-content transitions. Use when the user asks to add, refactor, or debug Motion or Framer Motion in App Router or Pages Router codebases, especially around server/client boundaries, reduced motion, LazyMotion, bundle size, hydration, or route transitions. Avoid for GSAP-style timelines, WebGL or 3D scenes, heavy scroll storytelling, or CSS-only effects unless Motion is explicitly requested.