From refinery
Use when extracting data fields, UI states, actions, and flows from a design. Use when user says 'analyze design', 'analizar diseño', 'review design', 'extract from figma', or shares a design URL.
npx claudepluginhub weorbitant/workbench-dev --plugin refineryThis skill is limited to using the following tools:
Read `${CLAUDE_PLUGIN_ROOT}/config.yaml`.
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.
Retrieves current documentation, API references, and code examples for libraries, frameworks, SDKs, CLIs, and services via Context7 CLI. Ideal for API syntax, configs, migrations, and setup queries.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
Read ${CLAUDE_PLUGIN_ROOT}/config.yaml.
If it does not exist, tell the user to copy config.example.yaml to config.yaml and fill in their values. Stop here.
Extract:
design_tool — figma, penpot, or noneIf design_tool is "none", tell the user no design tool is configured and stop.
Read the adapter file at ${CLAUDE_PLUGIN_ROOT}/skills/analyze-design/adapters/{design_tool}.md.
If the adapter does not exist, tell the user that {design_tool} is not yet supported and stop.
All tool-specific calls come from the adapter. Do not invent tool calls.
From $ARGUMENTS, extract the design URL.
If no URL provided, ask the user for one.
Use the adapter's URL-parsing rules to extract the necessary identifiers (file key, node IDs, etc.).
Use the adapter's commands to:
If the design has multiple screens/frames, list them and ask the user which one(s) to analyze, or analyze all if the user confirms.
For EVERY input field, dropdown, text display, or data-bound element in the design, extract:
| Campo | Tipo | Obligatorio | Validación visible | Valor por defecto | Pregunta |
|---|---|---|---|---|---|
| {field_name} | {text/number/date/select/checkbox/...} | {yes/no/unclear} | {what constraints are visible} | {if any} | {what is not clear} |
For every table or list in the design:
| Columna | Tipo de dato | Ordenable | Filtrable | Acción |
|---|---|---|---|---|
| {column} | {type} | {yes/no/unclear} | {yes/no/unclear} | {click action if any} |
Questions per table:
For every button, link, or interactive element:
| Acción | Trigger | Resultado esperado | Confirmación | Pregunta |
|---|---|---|---|---|
| {action_name} | {click/hover/submit} | {what should happen} | {needs confirmation dialog?} | {what is unclear} |
Check if the design covers these states. Mark each as detected or missing:
Look for flows that are implied but not explicitly shown:
Present results in this format:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🎨 DESIGN ANALYSIS: {design_name}
Tool: {design_tool} | Screens: {count}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━ DATOS ENCONTRADOS ━━━━━━━━━━━━━━━━━━━━━━━━━
{data fields table from Step 4}
━━ TABLAS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{table columns from Step 5}
━━ ACCIONES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
{actions table from Step 6}
━━ ESTADOS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Empty state: {description}
✅ Loading state: {description}
❌ Error state: NOT FOUND
❌ Permission denied: NOT FOUND
...
━━ FLUJOS IMPLÍCITOS ━━━━━━━━━━━━━━━━━━━━━━━━━
1. {flow_description}
2. {flow_description}
━━ PREGUNTAS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. {question with context}
2. {question with context}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━