No es un editor con autocompletado. Es un agente que lee, planifica, ejecuta y se corrige solo — si tú le construyes el sistema correcto.
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.
Atajos que escribes con /. Disparan instrucciones guardadas. Tú creas los tuyos: /build-feature, /ship, /review-ui.
Carpetas con un SKILL.md que enseñan a Claude cómo hacer algo. Se activan solas cuando son relevantes. Conocimiento reutilizable.
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.
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.
El archivo que Claude lee siempre, al arrancar. Aquí viven tus reglas permanentes, tu stack, tu estilo. Tu constitución del proyecto.
Clones de Claude con su propio contexto, trabajando en paralelo. Uno investiga, otro escribe, otro revisa. Así una persona rinde como un equipo.
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.
Dos lugares. El nombre del archivo = el nombre del comando.
| Ubicación | Alcance |
|---|---|
~/.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
# 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.
El bloque --- arriba (frontmatter) configura el comando. $ARGUMENTS recibe lo que escribas después del comando.
--- 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.
$ARGUMENTSTodo lo que escribas después del comando. /build-feature login → $ARGUMENTS = "login".
@archivoInyecta 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.
$1, $2 funcionan igual que en bash. /migrate $1=usuarios $2=postgres te deja construir comandos con parámetros nombrados.
↑ 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.
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.
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.
SKILL.md--- 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).
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 skill | Disponible en |
|---|---|
~/.claude/skills/<nombre>/SKILL.md | Todos tus proyectos (personal) |
.claude/skills/<nombre>/SKILL.md | Solo este proyecto (compartido por git) |
| Vía plugin / marketplace | Lo que el plugin instale |
Comando útil: /skills lista todo lo instalado. Frontmatter opcional: allowed-tools restringe qué herramientas puede usar la skill.
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.
| Evento | Cuándo dispara | Para qué sirve |
|---|---|---|
PreToolUse | Antes de usar una herramienta (ej. editar un archivo) | Bloquear o validar. Aquí proteges archivos. |
PostToolUse | Después de usar una herramienta | Formatear, correr tests, lint automático. |
UserPromptSubmit | Cuando envías un mensaje | Inyectar contexto extra antes de que Claude lea. |
SessionStart | Al abrir/reanudar la sesión | Cargar estado, recordatorios, memoria del día. |
Stop | Cuando Claude termina de responder | Notificarte, guardar un log, encadenar algo. |
SubagentStop | Cuando un subagente termina | Recolectar resultados. |
PreCompact | Antes de comprimir el contexto | Salvar notas importantes. |
Notification | Cuando Claude pide permiso / avisa | Sonido, push, integración externa. |
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".
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "bash .claude/hooks/protect-schema.sh"
}
]
}
]
}
}
#!/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
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.
{
"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.
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.
# 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
.mcp.jsonPonlo en la raíz del proyecto y se comparte por git con todo tu equipo (o tu yo del futuro).
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp"]
}
}
}
| Scope | Vive en |
|---|---|
local | Solo tú, solo este proyecto |
project | .mcp.json, compartido por git |
user | Tú, en todos tus proyectos |
El comando /mcp dentro de Claude te muestra los servers conectados y sus herramientas.
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.
| Archivo | Para |
|---|---|
~/.claude/CLAUDE.md | Tus reglas globales (ya tienes uno) |
./CLAUDE.md | Reglas de este proyecto (por git) |
./CLAUDE.local.md | Tus 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.
# 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
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.
Un archivo en .claude/agents/. Claude lo invoca solo cuando la tarea encaja con su description.
--- 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.
Cada subagente arranca fresco. La investigación pesada no ensucia tu conversación principal.
Lanzas varios a la vez. 4 archivos revisados en el tiempo de 1.
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.
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.
El hub principal. Skills, agentes, hooks, status lines, orquestadores. El punto de partida de todos.
100+ subagentes especializados por dominio: backend, frontend, infra, seguridad, datos/ML, docs.
Colección curada de skills y formas de personalizar tu flujo de trabajo.
Plugins production-ready. Incluye connect-apps (500+ apps reales: Gmail, Slack…).
Guía "principiante a power-user": setup, comandos, workflows, tips & tricks.
La guía oficial. CLAUDE.md, "explore→plan→code→commit", worktrees, headless mode.
# 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>
| Directorio | Qué es | Link |
|---|---|---|
| Registry oficial | El registro canónico de servers publicados | registry.modelcontextprotocol.io |
| Glama | ~10.000 servers, con "report card" de calidad | glama.ai/mcp/servers |
| Smithery | Registro grande con instaladores de un comando | smithery.ai |
| mcp.so | Directorio navegable enorme | mcp.so |
| PulseMCP | Layout limpio, buenos filtros | pulsemcp.com |
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.
El santo grial: darle a Claude la capacidad de compilar, correr en el simulador, y VER tu app para corregirse solo.
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 cameroncooke → getsentry.
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.
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.
Alternativa optimizada en tokens, accesibilidad primero. El flag --mini reduce las descripciones de 18.7k → 540 tokens. Diseñado para Claude Code.
# 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
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 logs → ver 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".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).
| Herramienta | Qué aporta | Instalar |
|---|---|---|
| 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 | 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 ✓ conectado | Trae 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 MCP | Busca e instala componentes de shadcn por lenguaje natural ("agrega un login form"). | npx shadcn@latest mcp init --client claude |
| Storybook MCP | Le 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 ✓ conectado | Docs actualizadas y versionadas (React, Vite, Tailwind…) inyectadas al contexto. Cero APIs obsoletas. | ya lo tienes vía ctx7 |
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.| Herramienta | Para qué |
|---|---|
@hono/mcp | Expón tu propia app Hono como un MCP server (Workers/Node/Bun/Deno) |
hono-skillde yusukebe, creador de Hono | Skill oficial: referencia de routing, context, middleware, JSX, validación, RPC, streaming + testing de endpoints |
wscat / websocat | WebSocket (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 |
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
| Tool | Para |
|---|---|
| uv astral-sh | La 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-server | Manejar un kernel vivo: crear/ejecutar celdas, leer outputs de imágenes |
| E2B / Riza | Sandboxes en la nube (necesitan API key) |
| Tool | Para |
|---|---|
| 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 Thinking | Memoria de grafo persistente / razonamiento estructurado paso a paso |
| Filesystem / Git / Fetch / Time | Primitivas de referencia mantenidas |
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.
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:
"haz que el dashboard se vea mejor"
Claude adivina. Vuelve a la media. Slop.
"[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étodo | Cómo | Para |
|---|---|---|
| Chrome integrado cero fricción | claude --chrome o /chrome | Web. Construye de un mock de Figma y verifica en el navegador. |
| Playwright MCP | claude mcp add playwright npx @playwright/mcp@latest | Web. El más recomendado. Di "playwright mcp" la 1ª vez. |
| Pegar directo | Cmd+V un screenshot, o @imagen.png | Lo más rápido para una comparación puntual. |
| Simulador iOS | xcrun simctl io booted screenshot ./s.png | SwiftUI. O lee el árbol de accesibilidad con axe (más barato). |
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í.
<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>
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.| Librería | Úsala cuando… |
|---|---|
| shadcn/ui | La base de todo: forms, tablas, nav, dialogs. Copy-paste sobre Radix+Tailwind, editable. |
| Radix UI | Necesitas comportamiento accesible headless (focus, ARIA). El "cerebro" bajo shadcn. |
| Tailwind v4 | Siempre, como base. Config CSS-first con @theme. |
| Motion antes Framer Motion | Micro-interacciones en React. import from 'motion/react'. |
| Aceternity UI | Un hero necesita un "momento wow": 3D cards, aurora, beams. Para momentos, no apps enteras. |
| Magic UI / Tremor | Primitivas de animación / dashboards de analytics. |
| Lucide | Íconos por defecto en el mundo shadcn/Tailwind. |
Prefiere Button/Text/NavigationLink nativos — Apple ya los afinó. La UI nunca opaca al contenido.
Usa modo Hierarchical para profundidad premium. .background(.ultraThinMaterial) + esquinas redondeadas + sombra suave = card flotante nativa.
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.
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.El mayor atajo: "que se sienta como Linear" comunica más que tres párrafos. Mapa de vibes:
Minimal, oscuro, rápido. SaaS para devs.
Sofisticado, confianza financiera. Gradientes estructurales, no decorativos.
Técnico limpio, dark mode. "Caro por lo que NO hace."
Premium, espaciado generoso. Para consumo.
Neutros cálidos. Para contenido.
Juguetón. Para creativos.
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.
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.
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.
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.
Esto se puede codificar como una skill. Cada fase termina en una "compuerta" (gate) que no se cruza hasta cumplirse.
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.
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".
Reusa patrones, cablea tokens vía @theme, shadcn sobre Radix. Gate: tokens fluyen, cero hex hardcodeado.
Playwright toma screenshot → un subagente evaluador separado compara con el target → repite. Gate: diff bajo el umbral.
Un momento de page-load orquestado, escalonado; respeta reduced-motion. Gate: motion con propósito.
Prueba 1440/768/375px. WCAG AA, contraste ≥4.5:1, foco visible, estados loading/empty/error, consola limpia. Gate: reporte del subagente de review.
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.Mobbin (300k+ pantallas de apps reales, EL mejor), Refero, Page Flows, Screenlane. "Hazme un pricing como [App X en Mobbin]".
Awwwards, Godly, SiteInspire, Minimal Gallery, Land-book, Lapa Ninja. Extrae principios, no la experiencia entera.
Apple Design Awards (estudia por qué ganó), HIG, swiftui.design/examples, DetailsPro, Design+Code.
<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.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.
CLAUDE.md fija las reglas permanentes del proyecto.
→/build-feature dispara el flujo con un solo texto.
→swiftui-premium enseña el "cómo" de la UI.
→Context7 trae docs; Playwright/Simulator dan ojos.
→Protege archivos y formatea — sin que lo pidas.
→Investigan, escriben y revisan en paralelo.
La tabla que te deja inventar tus propios sistemas. Cuando sepas qué pieza resuelve qué, puedes diseñar cualquier workflow.
| Quiero que Claude… | Pieza | Dónde |
|---|---|---|
| …sepa siempre mi stack y mis reglas, sin repetírselo | Memoria | CLAUDE.md |
| …lea cierto archivo solo cuando toco cierto tipo de archivo | Regla por ruta | .claude/rules/*.md |
| …ejecute un flujo completo con un solo texto | Comando | .claude/commands/x.md |
| …sepa cómo hacer algo, y lo aplique solo cuando es relevante | Skill | .claude/skills/x/SKILL.md |
| …NO pueda hacer algo (editar un archivo, correr un comando) | Hook PreToolUse | settings.json |
| …haga algo automático después de cada edición (formatear, testear) | Hook PostToolUse | settings.json |
| …vea su propia UI y se corrija | MCP | Playwright / Simulador |
| …use docs actualizadas, nunca APIs viejas | MCP | Context7 |
| …investigue o revise en paralelo, con contexto limpio | Subagente | .claude/agents/x.md |
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".
--- 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).
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:
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
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.› /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
No intentes todo de una. Este es el orden de mayor impacto. Cada paso es independiente y suma.
Pega el <frontend_aesthetics> de la sección UI en ~/.claude/CLAUDE.md. Impacto inmediato en TODO lo que generes.
Playwright (ojos web) + Context7 (ya lo tienes) + para iOS: XcodeBuildMCP y ios-simulator-mcp.
ui-reviewerEl de la sección Subagentes. Que otro modelo critique tu UI con screenshots. El que escribe se auto-elogia; el que revisa, no.
PostToolUse → formateo automático. PreToolUse → protege tus archivos sagrados (clónalos).
/build-featureCodifica TU flujo: leer → planear → esperar OK → implementar con tests → screenshot → criticar.
/plugin marketplace add wshobson/agents y explora. Aprende leyendo cómo otros escriben sus SKILL.md.