mcpField
E
extension-ui

extension-ui

github.com/quangplDesign & UI64204 installsUpdated 7w ago
Repository

About extension-ui

A skill for building and improving Chrome extension interfaces, from analyzing existing UI to implementing changes. It covers compact extension surfaces, dark mode, accessibility, and interface states.

Key features

  1. 01Detects frameworks and extension UI surfaces
  2. 02Reviews existing layout and accessibility
  3. 03Recommends UI stacks by framework
  4. 04Implements dark mode and sizing fixes
  5. 05Adds loading, error, and empty states

Use cases

  1. 01Improving an extension popup or side panel
  2. 02Adding dark mode to extension interfaces
  3. 03Checking keyboard navigation and accessible controls

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/quangpl/browser-extension-skills --skill extension-ui

After installing, type/extension-uiin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
accessibility-checklist.md
design-system-setup.md
extension-ui-constraints.md
ux-patterns.md

Details

From the project README

Extension UI

🚀 Upgrade to Premium Get the Premium version at https://app.extensionbooster.net/dashboard/services/extension-ai-kit

Build professional, polished Chrome extension interfaces. Do NOT just explain — execute the workflow.

Workflow (Execute This)

Step 1: Detect context
  1. Check framework: package.json → React / Vue / Svelte / Vanilla
  2. Check existing UI files: popup, sidepanel, options, content scripts
  3. Check if Tailwind / shadcn / DaisyUI already configured
  4. Identify extension type: popup-only, sidepanel, full options page
Step 2: Analyze existing UI

If UI files exist:

  • Read component files for layout, spacing, color usage
  • Check for dark mode support (prefers-color-scheme or class="dark")
  • Check accessibility: semantic HTML, aria-labels, focus management
  • Check for Chrome design language alignment

Report findings: what's good, what needs improvement, priority fixes.

Step 3: Recommend UI stack
FrameworkRecommended Stack
Reactshadcn/ui + Tailwind (best component quality)
React (minimal)Tailwind only + custom compact theme
VueDaisyUI + Tailwind
SvelteTailwind + svelte-headlessui
VanillaCustom CSS with CSS variables
Step 4: Implement improvements

Apply fixes in priority order:

  1. Dark mode support (critical — many users use dark mode)
  2. Proper sizing constraints (see references/extension-ui-constraints.md)
  3. Typography and spacing for small surfaces
  4. Accessibility fixes (keyboard nav, aria, focus)
  5. Loading/error/empty states
  6. Animations (subtle, fast, purposeful)

Extension UI Constraints (Summary)

SurfaceSizeKey Constraints
Popupmax 800x600pxCloses on outside click, no resize
Sidepanel320-400px wideFull height, persistent
Options pageFull tabStandard web page
Content script UIInjectedCSS isolation via shadow DOM

Full details: references/extension-ui-constraints.md


Dark Mode (Required)

Always implement dark mode. Extensions live in both light/dark browser themes.

/* CSS variables approach */
:root {
  --bg: #ffffff;
  --text: #111827;
  --border: #e5e7eb;
}
@media (prefers-color-scheme: dark) {
  :root {
    --bg: #1f2937;
    --text: #f9fafb;
    --border: #374151;
  }
}

Store user preference override in chrome.storage.sync.


Typography for Small Surfaces

  • Base font: system font stack — no custom fonts (bundle size + render speed)
  • Popup base size: 13-14px (readable without overflow)
  • Line height: 1.4-1.5 (tighter than web default)
  • Font weights: 400 (body), 500 (label), 600 (heading)
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

Color Palette (Chrome-aligned)

  • Primary: #1a73e8 (Google Blue) or brand color
  • Surface: #ffffff / #1f2937 dark
  • Border: #dadce0 / #374151 dark
  • Text primary: #202124 / #f9fafb dark
  • Text secondary: #5f6368 / #9ca3af dark
  • Success: #34a853, Error: #d93025, Warning: #fbbc04

Animations

  • Duration: 100-200ms (popup feels instant)
  • Easing: ease-out for entrances, ease-in for exits
  • Avoid layout-triggering animations (transform, opacity only)
  • Always respect prefers-reduced-motion
@media (prefers-reduced-motion: reduce) {
  * {
    animation: none !important;
  }
}

Accessibility Checklist (Quick)

  • Tab order logical, all interactive elements reachable
  • Icon-only buttons have aria-label
  • Color contrast 4.5:1 minimum
  • Focus visible (not just :focus-visible removed)
  • Semantic HTML (button not div, nav for nav)

Full checklist: references/accessibility-checklist.md


References

  • references/extension-ui-constraints.md — Size limits, layout patterns per surface
  • references/design-system-setup.md — shadcn/ui, DaisyUI, Tailwind setup
  • references/ux-patterns.md — Loading, error, empty states, onboarding
  • references/accessibility-checklist.md — Full a11y requirements and testing

Related Skills

  • extension-create — Scaffold new extension with framework choice
  • extension-analyze — Analyze existing extension codebase
  • extension-assets — Icons, images, asset optimization

Comments

Markdown supported