CONSTRUIDO PARA RANDY · 2026

Convierte Claude Code en un estudio de software de élite.

No es un editor con autocompletado. Es un agente que lee, planifica, ejecuta y se corrige solo — si tú le construyes el sistema correcto.

Esta página es tu manual completo: comandos, skills, hooks, MCP servers, memoria y workflows que hacen que Claude recuerde y siga tus reglas automáticamente. Y sí — la página misma está hecha con Claude Code, como prueba de lo que se puede lograr.

6
piezas del sistema
workflows posibles
1
persona = un estudio
randy@mac — claude
/build-feature login con WebSocket
· leyendo CLAUDE.md + skill swiftui-premium
· plan: 6 pasos · 3 subagentes
✓ hook: clonó AuthView → AuthView.v2
✓ screenshot → auto-crítica → pulido
· Context7: docs Hono v4 cargadas
listo.
EL MODELO MENTAL

Seis piezas. Una máquina.

Antes de los detalles, mira el mapa. Todo lo que hace poderoso a Claude Code se reduce a seis piezas que se combinan. Cuando entiendes cómo encajan, puedes inventar tus propios sistemas — que es exactamente lo que quieres.

Comandos

Atajos que escribes con /. Disparan instrucciones guardadas. Tú creas los tuyos: /build-feature, /ship, /review-ui.

Skills

Carpetas con un SKILL.md que enseñan a Claude cómo hacer algo. Se activan solas cuando son relevantes. Conocimiento reutilizable.

Hooks

Reglas automáticas. "Antes de editar X, haz Y." "Después de guardar, corre el formateador." El harness las ejecuta — no dependen de que Claude se acuerde.

MCP Servers

Le dan a Claude manos y ojos: navegar la web, controlar el simulador de iOS, leer docs, tomar screenshots, hablar con tu base de datos.

🧠

Memoria (CLAUDE.md)

El archivo que Claude lee siempre, al arrancar. Aquí viven tus reglas permanentes, tu stack, tu estilo. Tu constitución del proyecto.

Subagentes

Clones de Claude con su propio contexto, trabajando en paralelo. Uno investiga, otro escribe, otro revisa. Así una persona rinde como un equipo.

La idea clave que vas a dominar: estas piezas no se usan sueltas — se encadenan. Un comando invoca una skill, que usa un MCP server, mientras un hook vigila las reglas y la memoria mantiene el rumbo. Eso es un workflow. La última sección te enseña a inventarlos.
PIEZA 1 · COMANDOS PERSONALIZADOS

Crea tus propios /comandos

Un comando personalizado es simplemente un archivo Markdown. El nombre del archivo se convierte en el comando. Lo que escribes adentro es el prompt que Claude ejecuta. Así de simple — y así de poderoso.

¿Dónde se guardan?

Dos lugares. El nombre del archivo = el nombre del comando.

UbicaciónAlcance
~/.claude/commands/Personal — en todos tus proyectos
.claude/commands/Solo en este proyecto (se comparte por git)

Subcarpetas crean "namespaces": .claude/commands/ui/review.md/ui:review

El archivo más simple posible

~/.claude/commands/ship.md
# cualquier texto aquí es el prompt
Revisa mis cambios, corre los tests, y si pasan
haz commit con un mensaje claro. Luego muéstrame
el diff final en una línea por archivo.

Ahora escribes /ship y Claude hace todo eso. Ese archivo de 3 líneas es un comando real.

Versión profesional: frontmatter + argumentos

El bloque --- arriba (frontmatter) configura el comando. $ARGUMENTS recibe lo que escribas después del comando.

~/.claude/commands/build-feature.mdmarkdown
---
description: Construye una feature completa siguiendo nuestro flujo
argument-hint: [descripción de la feature]
allowed-tools: Read, Edit, Write, Bash(npm test:*), Bash(git*)
model: claude-opus-4-8
---

Vas a construir: $ARGUMENTS

Sigue EXACTAMENTE este flujo:
1. Lee @CLAUDE.md y los archivos relevantes antes de tocar nada.
2. Hazme un plan corto y espera mi OK.
3. Implementa con tests.
4. Corre !`npm test` y arregla lo que falle.
5. Toma screenshot de la UI y critícala antes de darla por buena.
$

$ARGUMENTS

Todo lo que escribas después del comando. /build-feature login$ARGUMENTS = "login".

@

@archivo

Inyecta el contenido de un archivo en el prompt. @src/App.tsx mete ese archivo en contexto.

!

!`comando`

Ejecuta bash y mete el resultado en el prompt. !`git diff` le da a Claude tu diff actual.

Truco de oro: los argumentos posicionales $1, $2 funcionan igual que en bash. /migrate $1=usuarios $2=postgres te deja construir comandos con parámetros nombrados.
🧪 Pruébalo tú — Run Test Edita el comando. Claude te explica qué haría, qué cambió y qué errores hay — sin ejecutar nada real.
cambia algo ↑ y dale ▶

↑ Prueba: cambia allowed-tools, agrega un argumento, o escribe una clave inventada para ver cómo el tutor te corrige. Este es el primero — si te gusta, lo replico en todas las secciones.

PIEZA 2 · SKILLS

Enséñale a Claude cómo hacer las cosas

Si un comando es "haz esto ahora", una skill es conocimiento reutilizable que Claude carga solo cuando lo necesita. Una skill es una carpeta con un SKILL.md. Claude lee la descripción siempre; lee el cuerpo solo cuando la tarea encaja. Eso se llama progressive disclosure y es lo que las hace eficientes.

Anatomía de una skill

~/.claude/skills/swiftui-premium/
swiftui-premium/
├── SKILL.md          # obligatorio: el cerebro
├── references/
│   ├── hig.md          # Apple HIG resumido
│   └── animations.md   # patrones de motion
└── scripts/
    └── snapshot.sh     # script de apoyo

Claude carga references/ solo si la tarea lo amerita. Mantienes el contexto liviano.

El SKILL.md

SKILL.mdmarkdown
---
name: swiftui-premium
description: Usar cuando se construya UI
en SwiftUI. Aplica spacing de 8pt, SF Symbols,
y un loop de screenshot+crítica antes de cerrar.
---

# Cómo construyo UI premium en SwiftUI

1. Empieza por el design token: espaciado,
   tipografía (rounded), color, jerarquía.
2. Usa componentes nativos antes que custom.
3. Toma screenshot en el simulador y CRITÍCALA
   como si fueras un diseñador de Apple.
4. Pule micro-interacciones (.spring, no .linear).
La descripción lo es TODO. Claude decide si activar la skill leyendo solo el campo description. Escríbela diciendo cuándo usarla, con palabras que aparecerán en tus pedidos. "Usar cuando…" es el mejor patrón. Una descripción vaga = una skill que nunca se activa.
Dónde instalas la skillDisponible en
~/.claude/skills/<nombre>/SKILL.mdTodos tus proyectos (personal)
.claude/skills/<nombre>/SKILL.mdSolo este proyecto (compartido por git)
Vía plugin / marketplaceLo que el plugin instale

Comando útil: /skills lista todo lo instalado. Frontmatter opcional: allowed-tools restringe qué herramientas puede usar la skill.

PIEZA 3 · HOOKS

Reglas que se cumplen solas

Este es el que pediste explícitamente. Un hook es un comando que el harness ejecuta automáticamente en cierto momento — no depende de que Claude "se acuerde". Aquí es donde pones reglas como "no toques este archivo, clónalo" o "después de cada edición, corre el linter". Se configuran en settings.json.

Los eventos donde puedes engancharte

EventoCuándo disparaPara qué sirve
PreToolUseAntes de usar una herramienta (ej. editar un archivo)Bloquear o validar. Aquí proteges archivos.
PostToolUseDespués de usar una herramientaFormatear, correr tests, lint automático.
UserPromptSubmitCuando envías un mensajeInyectar contexto extra antes de que Claude lea.
SessionStartAl abrir/reanudar la sesiónCargar estado, recordatorios, memoria del día.
StopCuando Claude termina de responderNotificarte, guardar un log, encadenar algo.
SubagentStopCuando un subagente terminaRecolectar resultados.
PreCompactAntes de comprimir el contextoSalvar notas importantes.
NotificationCuando Claude pide permiso / avisaSonido, push, integración externa.

Ejemplo real: "No edites schema.sql — clónalo"

Un hook PreToolUse que intercepta cualquier edición al archivo protegido y la bloquea con un mensaje que le dice a Claude qué hacer en su lugar. Esto es exactamente tu ejemplo de "no cambies este archivo, clónalo".

.claude/settings.jsonjson
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "bash .claude/hooks/protect-schema.sh"
          }
        ]
      }
    ]
  }
}
.claude/hooks/protect-schema.shbash
#!/usr/bin/env bash
# El harness pasa la info de la herramienta por stdin (JSON)
input=$(cat)
file=$(echo "$input" | jq -r '.tool_input.file_path')

if [[ "$file" == *"schema.sql"* ]]; then
  # exit 2 = BLOQUEA la herramienta y devuelve el mensaje a Claude
  echo "BLOQUEADO: schema.sql es protegido. Clónalo a" \
       "schema.v2.sql y modifica la copia." >&2
  exit 2
fi
exit 0
Cómo funciona el bloqueo: el hook recibe los datos por stdin en JSON. Si sale con exit 2, el harness cancela la acción y le entrega tu mensaje (stderr) a Claude como feedback — así Claude lee "clónalo" y obedece. exit 0 = todo bien, sigue. También puedes devolver JSON con {"decision":"block","reason":"..."} para más control.

Ejemplo: formatear automáticamente después de cada edición

settings.json — PostToolUsejson
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          { "type": "command",
            "command": "npx prettier --write \"$CLAUDE_FILE_PATHS\"" }
        ]
      }
    ]
  }
}

Cada vez que Claude guarda un archivo, Prettier lo formatea. Tú nunca tienes que pedirlo. Gestiona los hooks visualmente con el comando /hooks.

PIEZA 4 · MCP SERVERS

Dale a Claude manos y ojos

MCP (Model Context Protocol) es el estándar abierto que conecta a Claude con el mundo real: el navegador, el simulador de iOS, tu base de datos, Figma, GitHub, docs actualizadas. Sin MCP, Claude solo lee y escribe archivos. Con MCP, actúa.

Instalar un MCP server

terminalbash
# forma general
claude mcp add <nombre> -- <comando para arrancar el server>

# ejemplo real: navegador (Playwright) para que Claude VEA tu UI
claude mcp add playwright -- npx -y @playwright/mcp@latest

# con scope: --scope user (todos los proyectos) | project | local
claude mcp add --scope user context7 -- npx -y @upstash/context7-mcp

# ver / quitar
claude mcp list
claude mcp remove playwright

Por archivo: .mcp.json

Ponlo en la raíz del proyecto y se comparte por git con todo tu equipo (o tu yo del futuro).

.mcp.jsonjson
{
  "mcpServers": {
    "context7": {
      "command": "npx",
      "args": ["-y", "@upstash/context7-mcp"]
    }
  }
}

Los tres scopes

ScopeVive en
localSolo tú, solo este proyecto
project.mcp.json, compartido por git
userTú, en todos tus proyectos

El comando /mcp dentro de Claude te muestra los servers conectados y sus herramientas.

Los MCP que importan para tu stack (iOS/SwiftUI con XcodeBuild MCP, navegador con Playwright, Figma, bases de datos, GitHub…) tienen su propia sección más abajo — salta a "Tu stack". Esta investigación se está completando ahora mismo.
PIEZA 5 · MEMORIA / CLAUDE.md

La constitución de cada proyecto

CLAUDE.md es el archivo que Claude lee automáticamente al arrancar, siempre, sin que se lo pidas. Aquí escribes las reglas permanentes: tu stack, tu estilo de código, qué nunca hacer, cómo te gusta trabajar. Es la diferencia entre repetirte cada sesión y que Claude ya sepa quién eres.

La jerarquía (todo se combina)

ArchivoPara
~/.claude/CLAUDE.mdTus reglas globales (ya tienes uno)
./CLAUDE.mdReglas de este proyecto (por git)
./CLAUDE.local.mdTus notas privadas del proyecto

Importa otros archivos con @ruta/archivo.md dentro del CLAUDE.md. Edítalo rápido con /memory. Crea uno nuevo con /init.

Cómo se ve uno bueno

./CLAUDE.mdmarkdown
# Proyecto: MiApp iOS

## Stack
- SwiftUI + Swift 6, target iOS 18
- Backend: Hono + WebSocket en Node

## Reglas (NO negociables)
- Nunca edites Models/Schema.swift: clónalo.
- Todo componente nuevo lleva preview + test.
- Spacing en múltiplos de 8pt. SF Symbols siempre.

## Estilo
- Funciones cortas. Sin comentarios obvios.
- Usa el skill swiftui-premium para UI.

# importa reglas compartidas
@.claude/rules/git-flow.md
Regla de oro del CLAUDE.md: que sea corto y específico. No es documentación — son instrucciones. Cada línea debe cambiar lo que Claude hace. Si una regla no se está cumpliendo, súbela, hazla más explícita, o conviértela en un hook (que sí se obliga).
PIEZA 6 · SUBAGENTES

Una persona, un equipo entero

Un subagente es un Claude independiente con su propio contexto, al que le delegas una tarea. Mientras uno investiga docs, otro escribe código y un tercero revisa la UI — en paralelo. Así es como una sola persona produce como un estudio completo.

Define un subagente

Un archivo en .claude/agents/. Claude lo invoca solo cuando la tarea encaja con su description.

.claude/agents/ui-reviewer.mdmarkdown
---
name: ui-reviewer
description: Revisa UI tomando screenshots
y criticándola como diseñador senior. Úsalo
después de construir cualquier pantalla.
tools: Read, Bash, mcp__playwright__*
model: claude-opus-4-8
---

Eres un diseñador de producto de Apple/Linear.
Toma screenshot, evalúa jerarquía, spacing,
tipografía y motion. Sé brutalmente honesto.
Devuelve una lista priorizada de mejoras.

Por qué cambian el juego

🧹 Contexto limpio

Cada subagente arranca fresco. La investigación pesada no ensucia tu conversación principal.

⚡ Paralelismo real

Lanzas varios a la vez. 4 archivos revisados en el tiempo de 1.

🎭 Especialización

Uno solo sabe de seguridad, otro de UI, otro de tests. Cada uno con su prompt y sus tools.

Gestiónalos con el comando /agents.

EL ECOSISTEMA · NO EMPIECES DE CERO

Miles de personas ya construyeron piezas para ti

Antes de inventar, roba (legalmente). Hay marketplaces oficiales y comunitarios llenos de skills, comandos, subagentes y MCP servers listos para instalar. Aquí están los mejores, verificados y con su link directo.

⭐ Las "awesome lists" — empieza aquí

🛒 Marketplaces — instala con un comando

dentro de Claude Codecomandos
# skills oficiales de Anthropic (docx, pdf, pptx, xlsx + ejemplos)
/plugin marketplace add anthropics/skills
/plugin install document-skills@anthropic-agent-skills

# el marketplace más grande de la comunidad (192 agentes, 156 skills, 102 comandos)
/plugin marketplace add wshobson/agents
/plugin install python-development

# crea tus propias skills de forma interactiva
/plugin install skill-creator@claude-plugins-official

# también: arrastra un SKILL.md a .claude/skills/  o  npx skills add <org/repo>

🔌 Dónde descubrir MCP servers

DirectorioQué esLink
Registry oficialEl registro canónico de servers publicadosregistry.modelcontextprotocol.io
Glama~10.000 servers, con "report card" de calidadglama.ai/mcp/servers
SmitheryRegistro grande con instaladores de un comandosmithery.ai
mcp.soDirectorio navegable enormemcp.so
PulseMCPLayout limpio, buenos filtrospulsemcp.com
El trío que la comunidad recomienda primero: GitHub + Context7 + Playwright. Con esos tres, Claude ya puede gestionar tu repo, leer docs actualizadas, y ver tu UI en el navegador. Luego agregas base de datos (Postgres/Supabase) y lo de tu stack (siguiente sección).
⚠️ Seguridad: los plugins y MCP de la comunidad ejecutan código arbitrario y no están auditados por Anthropic. Confía en la fuente antes de instalar — sobre todo si pide API keys o acceso a tu shell. Revisa el repo, las estrellas, y quién lo mantiene.
TU STACK · NODE · PYTHON · HONO · REACT · VITE · SWIFT · iOS

Las herramientas para lo que tú construyes

Todo verificado en junio 2026. Empieza por Apple/Swift — es lo más difícil de encontrar y lo más valioso. Varias de estas ya están conectadas en tu entorno (Context7, Figma, Postman, Supabase, PlanetScale, Cloudflare, Sentry, Linear, Slack) — no necesitas instalarlas.

🍎 Apple · Swift · SwiftUI · iOS · macOS

El santo grial: darle a Claude la capacidad de compilar, correr en el simulador, y VER tu app para corregirse solo.

XcodeBuildMCP ★ el principal

82 herramientas: build, run, test, control del simulador y de dispositivos, logs, screenshots, automatización de UI. Devuelve errores en JSON limpio en vez de 3.000 líneas de log. No necesita Xcode abierto.

Nota: el repo se mudó de cameroncookegetsentry.

𝗫

Xcode MCP nativo de Apple

Incluido en Xcode 26.3 (xcrun mcpbridge). 20 herramientas que entran a un Xcode en vivo: diagnósticos en tiempo real, REPL de Swift, y renderizar previews de SwiftUI de vuelta a Claude — algo que las CLI no pueden.

ios-simulator-mcp

El popular para automatizar UI: tap, swipe, escribir, screenshots, grabar video, inspección de accesibilidad. Usa Facebook IDB. Aparece en la guía oficial de Anthropic.

xc-mcp

Alternativa optimizada en tokens, accesibilidad primero. El flag --mini reduce las descripciones de 18.7k → 540 tokens. Diseñado para Claude Code.

instalar el stack iOSbash
# 1) build/test/simulador headless (el caballo de batalla)
claude mcp add XcodeBuildMCP -s user -e XCODEBUILDMCP_SENTRY_DISABLED=true \
  -- npx -y xcodebuildmcp@latest mcp

# 2) Xcode en vivo: previews de SwiftUI + diagnósticos (Xcode 26.3+)
claude mcp add --transport stdio xcode -s user -- xcrun mcpbridge

# 3) automatización del simulador (requiere github.com/facebook/idb)
claude mcp add ios-simulator npx ios-simulator-mcp
El workflow que la mayoría usa hoy (el "loop cerrado" de iOS): muchos ni usan MCP — arman un loop por CLI: compilar con xcodebuild pasado por xcsift (colapsa el output a errores JSON) → instalar y lanzar con xcrun simctl launch --terminate-running-process (el flag es clave para que los logs fluyan) → leer logsver la pantalla alimentando el árbol de accesibilidad (10-50 tokens) en vez de screenshots (1.600+ tokens) → arreglar SwiftUI y repetir. Empaquétalo como una skill. Referencia: twocentstudios — "Closing the Loop on iOS with Claude Code".
getsentry/XcodeBuildMCP xcrun mcpbridge joshuayoes/ios-simulator-mcp conorluddy/xc-mcp conorluddy/ios-simulator-skill twostraws/swiftui-agent-skill xcsift (brew) SwiftLens (semántico, archivado)

⚛️ React · Vite · Frontend web

El núcleo aquí es darle ojos a Claude en el navegador. Es la técnica que más sube la calidad (ver sección UI premium).

HerramientaQué aportaInstalar
Playwright MCP
Microsoft
Control del navegador por árbol de accesibilidad (~120 tokens vs ~1.500 de un screenshot) + screenshots, consola, red. El loop de auto-QA.claude mcp add playwright npx @playwright/mcp@latest
Chrome DevTools MCP
Google
Lo que Playwright no: performance traces, Core Web Vitals, throttling, memoria. Para medir y arreglar LCP/layout shift.claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
Figma MCP ✓ conectadoTrae contexto de diseño, tokens y screenshots de un archivo Figma para generar componentes que calzan.claude mcp add --transport http figma https://mcp.figma.com/mcp
shadcn/ui MCPBusca e instala componentes de shadcn por lenguaje natural ("agrega un login form").npx shadcn@latest mcp init --client claude
Storybook MCPLe da a Claude acceso a tu design system documentado para que la UI generada siga el patrón.npx storybook add @storybook/addon-mcp
Context7 ✓ conectadoDocs actualizadas y versionadas (React, Vite, Tailwind…) inyectadas al contexto. Cero APIs obsoletas.ya lo tienes vía ctx7
El loop Vite + React: corre npm run dev en background (localhost:5173) → Playwright MCP lo abre → Claude edita un componente → Vite HMR lo aplica al instante → Claude vuelve a tomar snapshot de la misma pantalla para verificar → lee la consola/red para cazar errores. No existe un "Vite MCP" dedicado: este patrón es el estándar.

🔥 Node · Hono · WebSocket · Backend

HerramientaPara qué
@hono/mcpExpón tu propia app Hono como un MCP server (Workers/Node/Bun/Deno)
hono-skill
de yusukebe, creador de Hono
Skill oficial: referencia de routing, context, middleware, JSX, validación, RPC, streaming + testing de endpoints
wscat / websocatWebSocket (no hay MCP maduro): úsalos por Bash. Claude conecta → manda frame → verifica
Postman MCP Crear/gestionar colecciones, requests, mocks por lenguaje natural
Cloudflare Platform D1/KV/R2/Workers/Hyperdrive + docs — directo para Hono-on-Workers

Bases de datos

Supabase ✓ PlanetScale ✓ Cloudflare D1 ✓ Neon (Hono+Workers) crystaldba/postgres-mcp
⚠️ Evita los servers de referencia oficiales server-postgres y server-sqlite: están archivados con vulnerabilidades de SQL-injection sin parchar. Usa crystaldba/postgres-mcp para Postgres; para SQLite usa el CLI sqlite3 por Bash.

Hono-docs MCP en vivo:
claude mcp add --transport http hono-docs https://hono-docs-mcp.yusukebe.workers.dev/mcp

🐍 Python

ToolPara
uv astral-shLa columna vertebral. uv run pytest, uvx <tool> (= npx para Python)
mcp-run-python
pydantic
Sandbox aislado (Pyodide en Deno) para ejecutar código generado
jupyter-mcp-serverManejar un kernel vivo: crear/ejecutar celdas, leer outputs de imágenes
E2B / RizaSandboxes en la nube (necesitan API key)

🛠️ Infra general

ToolPara
GitHub MCP
oficial first-party
Repos, búsqueda de código, issues, PRs, Actions/CI, alertas de seguridad
Sentry Análisis de errores/traces + Seer (root-cause con IA)
Linear Issues, proyectos, ciclos
Memory / Sequential ThinkingMemoria de grafo persistente / razonamiento estructurado paso a paso
Filesystem / Git / Fetch / TimePrimitivas de referencia mantenidas
Tu setup ideal, resumido: iOS → XcodeBuildMCP + xcrun mcpbridge + ios-simulator-mcp. Web → Playwright + Chrome DevTools + Figma + shadcn + Context7. Hono/Workers → @hono/mcp + hono-skill + Cloudflare (✓) + Neon/Supabase (✓). Y como ya tienes Context7, Figma, Postman, Supabase, PlanetScale, Cloudflare, Sentry, Linear y Slack conectados — gran parte del camino ya está hecho.
UI DE CALIDAD "EMPRESA BILLONARIA"

Diseño que no parece hecho por IA

Esta es la sección que convierte "una app que funciona" en "una app que parece de una empresa de mil millones". Todo se reduce a una verdad incómoda y a cómo vencerla.

La verdad incómoda: la IA, por defecto, converge a la media estadística de todo lo que vio entrenándose. Eso produce el look "AI slop": tipografía Inter/Roboto, gradiente morado sobre blanco, tres cajitas con íconos, todo redondeado, sombras tímidas, cero jerarquía. El silencio = defaults. Cada decisión que no le restringes, vuelve a la norma. La calidad nace de 3 cosas: darle ojos, darle restricciones, y cerrar un loop de iteración.

👁️ 1. Dale ojos — la técnica #1 (mejora 2-3×)

Claude escribe CSS/SwiftUI técnicamente correcto pero no puede evaluar lo que renderiza a menos que lo vea. Esta es la recomendación #1 de la propia Anthropic. Mira la diferencia exacta:

✗ PROMPT POBRE

"haz que el dashboard se vea mejor"

Claude adivina. Vuelve a la media. Slop.

✓ PROMPT QUE FUNCIONA

"[pega screenshot] implementa este diseño. toma un screenshot del resultado y compáralo con el original. lista las diferencias y arréglalas"

Formas de darle ojos, de menor a mayor fricción:

MétodoCómoPara
Chrome integrado
cero fricción
claude --chrome o /chromeWeb. Construye de un mock de Figma y verifica en el navegador.
Playwright MCPclaude mcp add playwright npx @playwright/mcp@latestWeb. El más recomendado. Di "playwright mcp" la 1ª vez.
Pegar directoCmd+V un screenshot, o @imagen.pngLo más rápido para una comparación puntual.
Simulador iOSxcrun simctl io booted screenshot ./s.pngSwiftUI. O lee el árbol de accesibilidad con axe (más barato).
El loop (cualquier stack): renderiza + screenshot → da observaciones específicas (nunca "mejóralo"; sí "el padding de las cards es inconsistente, el título es muy chico vs el body") → recarga + re-screenshot → repite. Normalmente 3 rondas, menos de 10 minutos. Caza lo que el razonamiento no ve: breakpoints raros en móvil, transiciones bruscas, texto que se desborda, estados de loading/empty/error faltantes.

🧬 2. Dale restricciones — el bloque anti-slop de Anthropic

Este es el artefacto más valioso de toda la investigación: el prompt oficial de Anthropic para diseño frontend. Pégalo tal cual en tu CLAUDE.md y cambia la calidad de todo lo que Claude genera. Está en inglés a propósito — funciona mejor así.

pégalo en tu CLAUDE.mdfrontend_aesthetics
<frontend_aesthetics>
You tend to converge toward generic, "on distribution" outputs. In frontend
design, this creates what users call the "AI slop" aesthetic. Avoid this: make
creative, distinctive frontends that surprise and delight. Focus on:

Typography: Choose fonts that are beautiful, unique, and interesting. Avoid
generic fonts like Arial and Inter; opt instead for distinctive choices that
elevate the aesthetics.

Color & Theme: Commit to a cohesive aesthetic. Use CSS variables for
consistency. Dominant colors with sharp accents outperform timid, evenly-
distributed palettes. Draw from IDE themes and cultural aesthetics.

Motion: Use animations for micro-interactions. Prioritize CSS-only solutions
for HTML. Use Motion library for React when available. Focus on high-impact
moments: one well-orchestrated page load with staggered reveals
(animation-delay) creates more delight than scattered micro-interactions.

Backgrounds: Create atmosphere and depth rather than defaulting to solid
colors. Layer CSS gradients, use geometric patterns, or add contextual effects.

Avoid generic AI-generated aesthetics:
- Overused font families (Inter, Roboto, Arial, system fonts)
- Clichéd color schemes (particularly purple gradients on white backgrounds)
- Predictable layouts and component patterns
- Cookie-cutter design that lacks context-specific character
</frontend_aesthetics>
Dato: existe además un plugin oficial frontend-design (+565K instalaciones) que corre esta lógica antes de escribir código. Y el "truco Chanel": cuando termines una UI, quita un accesorio — casi siempre sobra algo.

🧱 3. Párate sobre librerías reales

Stack web recomendado

LibreríaÚsala cuando…
shadcn/uiLa base de todo: forms, tablas, nav, dialogs. Copy-paste sobre Radix+Tailwind, editable.
Radix UINecesitas comportamiento accesible headless (focus, ARIA). El "cerebro" bajo shadcn.
Tailwind v4Siempre, como base. Config CSS-first con @theme.
Motion
antes Framer Motion
Micro-interacciones en React. import from 'motion/react'.
Aceternity UIUn hero necesita un "momento wow": 3D cards, aurora, beams. Para momentos, no apps enteras.
Magic UI / TremorPrimitivas de animación / dashboards de analytics.
LucideÍconos por defecto en el mundo shadcn/Tailwind.

Apple / SwiftUI

HIG: Clarity · Deference · Depth

Prefiere Button/Text/NavigationLink nativos — Apple ya los afinó. La UI nunca opaca al contenido.

SF Symbols (6.000+)

Usa modo Hierarchical para profundidad premium. .background(.ultraThinMaterial) + esquinas redondeadas + sombra suave = card flotante nativa.

🆕 Liquid Glass (iOS 26)

El rediseño más grande desde iOS 7. Material translúcido con lensing en tiempo real, nueva API glassEffect. Apunta a Claude a conorluddy/LiquidGlassReference.

Cómo lograr que Claude las use por defecto: (1) shadcn MCP — npx shadcn@latest mcp init --client claude; (2) la skill de shadcn; (3) el skill frontend-design; (4) un bloque de diseño en tu CLAUDE.md que fije el stack y los tokens.

🎨 4. Gusto: referencias y tokens exactos

El mayor atajo: "que se sienta como Linear" comunica más que tres párrafos. Mapa de vibes:

Linear

Minimal, oscuro, rápido. SaaS para devs.

Stripe

Sofisticado, confianza financiera. Gradientes estructurales, no decorativos.

Vercel

Técnico limpio, dark mode. "Caro por lo que NO hace."

Apple

Premium, espaciado generoso. Para consumo.

Notion

Neutros cálidos. Para contenido.

Arc

Juguetón. Para creativos.

✍️ Tipografía = señal #1 de "premium"

Evita Inter/Roboto/Arial. Usa extremos de peso (100/200 vs 800/900) y saltos de tamaño de 3×+. Pares: Instrument Serif + Inter, General Sans + Satoshi, Geist Sans + Geist Mono (dev tools), Clash Display, Fraunces. Código: JetBrains Mono / Space Grotesk.

📐 Espaciado

Base 4px: 4/8/12/16/24/32/48/64. La regla: "toma el espacio que se siente suficiente, y duplícalo." Tokens en 3 niveles: primitivo → semántico → componente (los componentes solo consumen semánticos). Valores exactos en hex, nunca descripciones.

🎬 Motion

3-5 animaciones con propósito por página, 150-350ms, spring con overshoot cubic-bezier(.34,1.56,.64,1). Un page-load orquestado con reveals escalonados > micro-interacciones dispersas. Respeta prefers-reduced-motion.

🌙 Dark mode bien hecho

Nunca negro puro — usa #121212. Muestra elevación con superficies más claras, no sombras. Texto off-white #E2E8F0. Desatura los acentos 10-20%. Base con un tinte tonal sutil.

🔁 5. El workflow repetible de UI premium (6 fases)

Esto se puede codificar como una skill. Cada fase termina en una "compuerta" (gate) que no se cruza hasta cumplirse.

1

Reunir referencias

Fija el sujeto, audiencia y el único trabajo de la página. Pega un target visual. Nombra los defaults a evitar. Gate: existe sujeto + referencia.

2

Definir tokens

4-6 colores hex, 2-3 tipografías, grid de 8px, un elemento "firma". Gate: "si algo se lee genérico, revísalo y di qué cambiaste — solo entonces escribe código".

3

Construir con librería

Reusa patrones, cablea tokens vía @theme, shadcn sobre Radix. Gate: tokens fluyen, cero hex hardcodeado.

4

Screenshot + autocrítica

Playwright toma screenshot → un subagente evaluador separado compara con el target → repite. Gate: diff bajo el umbral.

5

Pulir motion

Un momento de page-load orquestado, escalonado; respeta reduced-motion. Gate: motion con propósito.

6

A11y + responsive

Prueba 1440/768/375px. WCAG AA, contraste ≥4.5:1, foco visible, estados loading/empty/error, consola limpia. Gate: reporte del subagente de review.

Cómo se reparte entre las piezas: los estándares → CLAUDE.md (siempre on). El proceso → una skill. El review → un subagente de contexto fresco (clave: el que escribe siempre sobre-elogia su propio trabajo, por eso el que califica debe ser otro). "No lo entregues sin pasar el diff" → un Stop hook determinista.

💡 6. De dónde sacar inspiración (y cómo metérsela)

📱 Producto / iOS

Mobbin (300k+ pantallas de apps reales, EL mejor), Refero, Page Flows, Screenlane. "Hazme un pricing como [App X en Mobbin]".

🏆 Web premiada

Awwwards, Godly, SiteInspire, Minimal Gallery, Land-book, Lapa Ninja. Extrae principios, no la experiencia entera.

🍎 Apple nativo

Apple Design Awards (estudia por qué ganó), HIG, swiftui.design/examples, DetailsPro, Design+Code.

⚖️ Guardrail legal (mételo en el prompt): emula principios y patrones (no son protegibles), pero NO clones assets de marca — logos, wordmarks, sets de íconos custom, imágenes con copyright, ni copy textual. "Calca estructura, densidad y patrón de interacción; genera copy, colores e iconografía originales/licenciados."
Los 5 takeaways que mueven la aguja: ① Dale ojos y exige el loop en el prompt. ② Mata el slop con el bloque <frontend_aesthetics> + prohíbe Inter/morado-sobre-blanco. ③ Párate sobre librerías reales (shadcn/Radix/Tailwind/Motion · SwiftUI/SF Symbols/Liquid Glass). ④ Que otro modelo califique el trabajo. ⑤ Ancla a referencias (Mobbin/Awwwards/ADA) y persiste un DESIGN.md.
EL SISTEMA · TODO JUNTO

Inventa tus propios workflows

Aquí unimos las 6 piezas en sistemas que Claude sigue automáticamente — incluyendo el ejemplo que me diste ("lee esto, revisa aquello, no toques este archivo, clónalo").

La idea central: las piezas no se usan sueltas, se encadenan. Un comando dispara el flujo, la memoria fija las reglas, una skill enseña el cómo, los MCP dan ojos y manos, un hook obliga lo no-negociable, y los subagentes paralelizan. Eso es un workflow.

Memoria

CLAUDE.md fija las reglas permanentes del proyecto.

Comando

/build-feature dispara el flujo con un solo texto.

Skill

swiftui-premium enseña el "cómo" de la UI.

MCP

Context7 trae docs; Playwright/Simulator dan ojos.

Hook

Protege archivos y formatea — sin que lo pidas.

Subagentes

Investigan, escriben y revisan en paralelo.

🧭 "Quiero que Claude…" → usa esta pieza

La tabla que te deja inventar tus propios sistemas. Cuando sepas qué pieza resuelve qué, puedes diseñar cualquier workflow.

Quiero que Claude…PiezaDónde
…sepa siempre mi stack y mis reglas, sin repetírseloMemoriaCLAUDE.md
…lea cierto archivo solo cuando toco cierto tipo de archivoRegla por ruta.claude/rules/*.md
…ejecute un flujo completo con un solo textoComando.claude/commands/x.md
…sepa cómo hacer algo, y lo aplique solo cuando es relevanteSkill.claude/skills/x/SKILL.md
NO pueda hacer algo (editar un archivo, correr un comando)Hook PreToolUsesettings.json
…haga algo automático después de cada edición (formatear, testear)Hook PostToolUsesettings.json
…vea su propia UI y se corrijaMCPPlaywright / Simulador
…use docs actualizadas, nunca APIs viejasMCPContext7
…investigue o revise en paralelo, con contexto limpioSubagente.claude/agents/x.md

🎯 Tus dos ejemplos, implementados de verdad

A) "Que lea cierta instrucción en cierta fase, sin que yo me acuerde"

La forma más limpia: una regla por ruta. El archivo se carga automáticamente solo cuando Claude toca archivos que hacen match. Es literalmente "cuando trabajes en X, lee esto primero".

.claude/rules/swiftui-views.mdmarkdown
---
paths: ["**/*View.swift", "**/Views/**"]
---

# Reglas para vistas SwiftUI (se cargan solas al tocar una View)

- Antes de editar, lee @docs/design-system.md.
- Spacing en múltiplos de 8pt. SF Symbols, modo Hierarchical.
- Toda View nueva lleva un #Preview.
- Al terminar, toma screenshot del simulador y critícala.

Otras formas según el momento exacto: un hook SessionStart (inyecta contexto al abrir), UserPromptSubmit (antes de cada mensaje tuyo), o InstructionsLoaded (cuando se carga un CLAUDE.md/regla).

B) "No cambies este archivo — clónalo y modifica la copia"

Eso es un hook PreToolUse que bloquea la edición y le dice a Claude qué hacer en su lugar. Lo tienes completo en la sección de Hooks. La versión moderna devuelve JSON:

.claude/hooks/protect.sh — versión modernabash
input=$(cat); file=$(echo "$input" | jq -r '.tool_input.file_path')
if [[ "$file" == *"Schema.swift"* ]]; then
  jq -n '{hookSpecificOutput:{hookEventName:"PreToolUse",
    permissionDecision:"deny",
    permissionDecisionReason:"Schema.swift es protegido. Clónalo a Schema.v2.swift y modifica la copia."}}'
else exit 0; fi
Regla mental clave (de los docs oficiales): el CLAUDE.md es contexto — Claude lo lee, pero puede olvidarlo bajo presión. Un hook es configuración — el harness lo obliga, Claude no puede saltárselo. Para algo no-negociable ("nunca toques este archivo"), usa un hook, no una línea en CLAUDE.md.

🚀 De punta a punta: construir una feature, con todo encadenado

qué pasa cuando escribes un solo comandoflujo
› /build-feature "pantalla de login con WebSocket en tiempo real"

# 1. MEMORIA — Claude ya leyó CLAUDE.md al arrancar:
    stack (SwiftUI + Hono), reglas, estilo. No hay que decírselo.
# 2. COMANDO — /build-feature.md define el flujo y exige un plan primero:
    plan: 6 pasos → espera tu OK
# 3. SKILL — swiftui-premium se activa sola (la tarea es UI SwiftUI):
    aplica tokens de 8pt, SF Symbols, el loop de screenshot
# 4. MCP — Context7 trae los docs de Hono v4 + WebSocket (sin APIs viejas):
    XcodeBuildMCP compila; ios-simulator toma screenshots
# 5. HOOK — al intentar editar Schema.swift:
    ✋ bloqueado → "clónalo a Schema.v2.swift"  (obedece)
#    al guardar cada archivo → swift-format corre solo (PostToolUse)
# 6. SUBAGENTE — ui-reviewer (contexto fresco) califica el screenshot:
    [High] el botón no tiene estado de loading → arregla
    ✓ diff bajo umbral → Stop hook deja cerrar el turno

📦 Tu kit de arranque — qué crear esta semana

No intentes todo de una. Este es el orden de mayor impacto. Cada paso es independiente y suma.

1

Mete el bloque anti-slop en tu CLAUDE.md global

Pega el <frontend_aesthetics> de la sección UI en ~/.claude/CLAUDE.md. Impacto inmediato en TODO lo que generes.

2

Conecta el trío de MCP

Playwright (ojos web) + Context7 (ya lo tienes) + para iOS: XcodeBuildMCP y ios-simulator-mcp.

3

Crea el subagente ui-reviewer

El de la sección Subagentes. Que otro modelo critique tu UI con screenshots. El que escribe se auto-elogia; el que revisa, no.

4

Pon 2 hooks que te ahorran cabeza

PostToolUse → formateo automático. PreToolUse → protege tus archivos sagrados (clónalos).

5

Escribe tu primer comando /build-feature

Codifica TU flujo: leer → planear → esperar OK → implementar con tests → screenshot → criticar.

6

Instala una skill de la comunidad

/plugin marketplace add wshobson/agents y explora. Aprende leyendo cómo otros escriben sus SKILL.md.

El gran insight, Randy: el secreto de "una persona = un estudio de mil millones" no es un truco — es acumulación. Cada skill, comando, hook y regla que escribes queda para siempre y se compone con los demás. En 6 meses no estarás dándole instrucciones a Claude: estarás dirigiendo un sistema que ya sabe cómo trabajas. Eso es lo que ninguna app de programación tradicional te da. Bienvenido al estudio. 🚀