From designer-agent
Convert a design input (text prompt, screenshot, or Figma link) into a purposeful UI/UX design specification with ASCII wireframes and verified Mekari Pixel widget recommendations. Use when the user wants a design spec, wireframe, or component recommendation for a mobile screen. Triggers on: "design this screen", "create wireframe", "recommend pixel widgets", "design spec", "UI design", "UX design", "what components should I use", "design a form/list/detail for", or when the user provides a Figma link or screenshot with design intent.
How this skill is triggered — by the user, by Claude, or both
Slash command
/designer-agent:design-uiThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Convert any design input into a purposeful UI/UX design specification: ASCII wireframes + verified Mekari Pixel widget recommendations. No code generation — design specs only.
Convert any design input into a purposeful UI/UX design specification: ASCII wireframes + verified Mekari Pixel widget recommendations. No code generation — design specs only.
Before proceeding, verify the Mekari Pixel MCP server is available by calling mekari_pixel_list_components().
If the MCP server is not available:
.mcp.json exists and has the mobile-pixel-mcp server configured<SECRET_TOKEN> or missing, ask the user:"The Mekari Pixel MCP server requires authentication. Please provide your API token so I can update
.mcp.json."
.mcp.json:{
"mcpServers": {
"mobile-pixel-mcp": {
"type": "sse",
"url": "https://mobile-pixel-mcp-546272430844.asia-southeast1.run.app/sse",
"headers": {
"Authorization": "Bearer <USER_TOKEN>"
}
}
}
}
/mcp and try again."Classify the user's input:
| Input Type | Detection |
|---|---|
| Figma URL | Contains figma.com/design/ or figma.com/file/ |
| Image | File path ending in .png, .jpg, .jpeg, .webp, .gif |
| Text prompt | Everything else |
Validation:
mcp__figma tools)Read toolBased on input type, extract structured requirements:
Use Claude's native vision — read the image file directly with the Read tool, then analyze it:
Output the requirements in this format:
## UI Requirements from Image Analysis
### Screen: <descriptive name>
### Purpose: <what the user accomplishes on this screen>
### Layout
- Top: <description>
- Body: <description>
- Bottom: <description>
### Elements
1. <element type> — <content>, <style>, <position>
2. ...
### Colors
- Background: <semantic color>
- Primary accent: <semantic color>
- Text: <semantic color>
### Typography
- Title: <size>, <weight>
- Body: <size>, <weight>
### Interactions
- <interaction description>
### UX Notes
- <purposeful design decisions and rationale>
Extract fileKey and nodeId from the URL (convert node-id=1-2 to 1:2), then:
get_design_context(fileKey, nodeId, clientLanguages="dart", clientFrameworks="flutter")get_screenshot(fileKey, nodeId) for visual referenceParse directly:
Spawn the pixel-specialist sub-agent with the structured requirements from Step 2.
Agent(
subagent_type: "pixel-specialist",
prompt: "Resolve these UI requirements into verified Mekari Pixel components.\n\n<structured requirements from Step 2>",
isolation: "worktree"
)
The pixel-specialist will:
mekari_pixel_list_components() to get the canonical registrymekari_pixel_query() and mekari_pixel_get() to find and verify the componentUsing the verified manifest from Step 3 and the requirements from Step 2, produce the design specification.
Create a low-fidelity ASCII wireframe showing the screen layout. Use box-drawing characters and clear labels.
Guidelines:
┄┄┄ for dividers, ┌┐└┘ for containers, │ for vertical separatorsExample:
┌─────────────────────────────────────────┐
│ ← New Invoice [Save] │ MpTextAppBar
├─────────────────────────────────────────┤
│ │
│ Client Name │ MpTextField
│ ┌─────────────────────────────────┐ │
│ │ Enter client name... │ │
│ └─────────────────────────────────┘ │
│ │
│ Amount │ MpTextField
│ ┌─────────────────────────────────┐ │
│ │ Rp 0 │ │
│ └─────────────────────────────────┘ │
│ │
│ Due Date │ MpDatePickerField
│ ┌─────────────────────────────────┐ │
│ │ Select date 📅 │ │
│ └─────────────────────────────────┘ │
│ │
│ ┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄ │
│ │
│ Notes │ MpTextField (multiline)
│ ┌─────────────────────────────────┐ │
│ │ │ │
│ │ │ │
│ └─────────────────────────────────┘ │
│ │
├─────────────────────────────────────────┤
│ [ Create Invoice ] │ MpButton.primary
└─────────────────────────────────────────┘
For each section of the screen, explain the UX rationale:
## Design Decisions
### Screen Purpose
<What the user accomplishes here. One sentence.>
### Layout Rationale
- **Why this layout pattern?** <e.g., "Linear form layout reduces cognitive load for data entry tasks">
- **Why this element order?** <e.g., "Client name first because it contextualizes all subsequent fields">
### Component Choices
- **<Element>**: <Why this specific Pixel component and variant>
- **<Element>**: <Why this specific Pixel component and variant>
### Interaction Patterns
- **<Action>**: <What happens and why>
- **<State>**: <How the UI communicates state to the user>
### Accessibility & Usability
- <Notes on touch targets, readability, error states>
Combine the verified manifest with UX rationale into a final recommendation:
## Recommended Mekari Pixel Widgets
| # | UI Element | Widget | Tier | Variant / Constructor | Design Token(s) | UX Rationale |
|---|---|---|---|---|---|---|
| 1 | Screen layout | MpBasicLayout | Template | MpBasicLayout(appBar:, body:) | MpColors.bg.surface | Standard scaffold with safe area |
| 2 | App bar | MpTextAppBar | Component | MpTextAppBar(title:, actions:) | — | Clear screen title + save action |
| 3 | Text input | MpTextField | Atom | MpTextField(label:, hint:, controller:) | MpTextStyles.sm | Standard form field with validation |
| 4 | Date picker | MpDatePickerField | Component | MpDatePickerField(label:, onDateSelected:) | — | Read-only field opens native picker |
| 5 | Submit button | MpButton | Atom | MpButton.primary(label:, onPressed:) | MpSpacing.medium | Primary CTA, full-width at bottom |
### Design Tokens
| Token | Value | Where Used |
|---|---|---|
| MpColors.bg.surface | screen background | Scaffold |
| MpColors.text.primary | headings | All labels |
| MpColors.text.secondary | hints/placeholder | TextField hints |
| MpSpacing.medium | 16dp | Section padding |
| MpSpacing.small | 12dp | Between fields |
| MpRadius.medium | 6dp | Input field corners |
### UNRESOLVED
| UI Element | Closest Match | Why Unresolved |
|---|---|---|
| <element> | <closest Pixel component> | <reason> |
Present the complete design spec to the user:
Then offer iteration:
/pixel-lookup?"| Error | Action |
|---|---|
| MCP server not available | Ask user for token, update .mcp.json |
| Figma MCP not available | Inform user, offer to work from screenshot instead |
| Image file not found | Ask user to verify the file path |
| Pixel-specialist fails | Report error, suggest /pixel-lookup to verify components manually |
| No components resolved | Check if MCP server is responding |
| All elements UNRESOLVED | The requirements may be too abstract — ask user for more detail |
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub iqbal-mekari/claude-plugins --plugin designer-agent