Diseño productos que se sienten antes de entenderse. Esta es mi forma de diseñar: qué decido, por qué, y cómo se ve.

design language v2.1 · octubre 2026 modos claro + oscuro para IA llms.txt · brand.md
VerdantExplorar una ciudad en un mapa que se desenfoca en los bordes.
TallyEnviar plata desde un sheet de vidrio que flota sobre tu saldo.
SolaceDescansar entre series con un timer que se lee desde el banco.
ejemplos

Mismo lenguaje, cualquier producto. Apps ficticias, reglas reales.

Cada pantalla está hecha a tamaño real de iPhone con los tokens y patrones de esta página, y después escalada al marco. Los nombres y datos son inventados; las decisiones no.

Closet · objeto detectado

Apuntás la cámara y el objeto se despega de la habitación.

Vidrio flotanteProfundidad por capasSombra de contactoUn sticker

Atlas · planificador de viajes

Un planificador de viajes que responde con palabras que llegan, con un solo acento donde está la plata.

Palabras que lleganShimmerBlur progresivoUn acento

Boarding · actividad en vivo

Tu vuelo, en vivo en la pantalla bloqueada, en la island y sobre vidrio.

IslandActividad en vivoNúmero protagonistaAtmósfera

Pulse · onboarding

Primer arranque: un objeto, dos líneas, un botón.

Atmósfera completaObjeto de marcaTitular en dos tonos
filosofía

La gente no lee interfaces. Las siente.

Siete creencias que guían todo lo que diseño. Cuando dudo entre dos opciones, vuelvo acá.

El detalle es el producto

Dos apps con las mismas funciones no se sienten igual. La diferencia está en 200 milisegundos, en un blur de 6 píxeles, en un botón que se achica cuando lo tocás.

Ahí pongo la mayor parte de mi tiempo.

Marco quieto, producto protagonista

Fondos neutros, tipografía contenida y casi nada de color alrededor de la pantalla.

Cuanto más callado el marco, más se escucha el producto.

Profundidad con luz, no con líneas

Separo capas con desenfoque, transparencia y sombras suaves. Los bordes y las cajas dividen; el blur ordena sin cortar la imagen.

Una interfaz con capas se entiende sin explicarla.

El movimiento explica

Animo para mostrar de dónde viene algo y adónde va. El sheet sube desde abajo porque vive abajo; el check nace del botón que lo pidió.

Si una animación no responde una pregunta, la saco.

Un color por historia

Mi marca vive en negro, blanco y grises. Cada proyecto elige un solo color y lo sostiene en todas sus piezas.

Un color sostenido se recuerda. Cinco colores se olvidan.

Claro y oscuro desde el día uno

Diseño los dos modos en paralelo. No invierto colores: cada modo tiene sus propias decisiones de sombra, vidrio y contraste.

El modo es de quien usa la app, no mío.

Las palabras también son diseño

Copy corto, voz activa, cero jerga. Los nombres se escriben como los escriben sus dueños, y los flujos con flecha.

Si un botón necesita explicación, el botón está mal.

decisiones

Cada decisión tiene un porqué. Si no lo puedo explicar, no va.

Lo que siempre hago, la razón y la regla concreta que sale de eso.

Botones siempre pastilla

Se leen como tocables al instante, entran cómodos bajo el pulgar y repiten la curva del teléfono.

radio 999 · alto 40 o 52

Titulares chicos en dos tonos

La seguridad no necesita tamaño. El gris arma la jerarquía y deja el tamaño grande libre para los números.

línea 1 fg · línea 2 fg-2 · mismo peso

Números enormes

Hora, plata y puntaje son lo que la gente vino a ver. Tienen que leerse de un vistazo.

600 · tabulares · tracking −4.5%

Una sola sans

Inter Display tiene tamaño óptico y números tabulares, y se parece a SF Pro: el diseño y el iPhone hablan igual.

Inter Display · Geist Mono solo en labels

Negro puro en oscuro

En OLED el negro desaparece, el device se funde con la página y los glows ganan contraste.

bg #000 en oscuro

Gris claro, no blanco, en claro

El blanco puro cansa y no deja que las cards se separen. Sobre gris claro, una card blanca flota sola.

bg #F4F4F4 · cards #FFFFFF

Blur en vez de bordes

El vidrio deja ver el contexto y separa capas sin cortar la imagen de atrás.

blur 20 · saturate 180% · luz de 1 px arriba

Sheets flotantes y concéntricos

Separado del borde se lee como capa. Con radio concéntrico parece parte del hardware.

inset 12 · radio = exterior − inset

Ease-out por defecto

Responde al toque de inmediato y frena como un objeto real. Nada arranca lento.

cubic-bezier(.22, 1, .36, 1)

Cerrar más rápido que abrir

Cuando alguien cierra algo ya decidió. No lo hago esperar.

abrir 420 ms · cerrar 280 ms

Una atmósfera por proyecto

El color identifica el proyecto, no decora. Repetido en todas las piezas, se vuelve memoria.

elegir 1 de 4 · nunca mezclar

Mockups frontales, sin manos

La perspectiva y las manos distorsionan y achican la pantalla, que es lo que importa.

device ≤ 60% del alto del shot
claro + oscuro

Claro y oscuro al mismo nivel. Mismas decisiones, distinta luz.

Los dos modos usan los mismos tokens con valores pensados para cada uno. Probá el selector de arriba: toda la página cambia, menos esta comparación.

modo claro

Transfer sent.$1,240 to Studio account.

DoneShare receipt
CompletedNov 12
● Sent · $1,240
modo oscuro

Transfer sent.$1,240 to Studio account.

DoneShare receipt
CompletedNov 12
● Sent · $1,240
qué cambia entre modos
aspectoclarooscuro
fondo#F4F4F4#000000
cardsBlancas, con sombra suave y larga.#111111 con un hilo de luz de 1 px arriba.
separaciónSombra.Escalón de superficie y hairline. Casi sin sombras: en negro se ven sucias.
vidrioBlanco al 68% + blur 20.Blanco al 12% + blur 20.
botón primarioNegro con texto claro.Blanco con texto negro.
texto secundario#6B6B6B#8F8F8F
atmósferasPastel, con glow saturado.Profundas, con glow brillante.
grano5%12%
stage de devices#E8E8E8#EDEDED: el stage claro se mantiene en oscuro.
cómo diseño los dos modos
siempre
  • Diseño los dos modos en paralelo, en el mismo archivo y la misma semana.
  • Cada token tiene un valor elegido por modo. Nada se invierte automáticamente.
  • En claro separo con sombra; en oscuro, con superficie y luz.
  • Reviso contraste AA en los dos antes de dar algo por terminado.
  • Por defecto sigo al sistema y dejo elegir: sistema, claro u oscuro.
nunca
  • Gris medio como fondo oscuro "para que no sea tan negro".
  • Sombras oscuras grandes en modo oscuro.
  • Un modo terminado y el otro "después".
  • El mismo vidrio en los dos modos: en claro necesita más opacidad.
  • Íconos o ilustraciones que solo funcionan sobre un fondo.
sistema

Negro, blanco y doce grises. El color se gana proyecto a proyecto.

La escala base es la misma en los dos modos; lo que cambia es qué tono cumple cada rol. Tocá un tono para copiar el hex.

roles por modo
tokenclarooscurouso
--bg#F4F4F4#000000Fondo de página.
--surface-1#FFFFFF#111111Cards.
--surface-2#F0F0F0#1F1F1FFilas, inputs, elementos dentro de cards.
--sheet-bg#FFFFFF#1F1F1FSheets opacos.
--fg#0A0A0A#FFFFFFTexto principal y botón primario.
--fg-2#6B6B6B#8F8F8FSegunda línea del titular, descripciones.
--fg-3#A1A1A1#5C5C5CHints, labels apagados, punto de partida de los reveals.
--btn-2#E6E6E6#1F1F1FBotón secundario y chips.
--glasswhite 68%white 12%Superficies de vidrio con blur.
atmósferas · una por proyecto

Gradiente radial desde arriba, glow al centro y grano. Cada una tiene versión clara y oscura: cambiá el tema y mirá cómo se adaptan.

forest

Deporte, outdoor, foco

ember
0:30

Tiempo, energía, descanso

tide
● Enviado

Plata, confianza, chat

rouge

Social, ubicación, alertas

tipografía

Inter Display para todo, con peso 600 en títulos y 400 a 500 en texto. Geist Mono solo en labels chicos, en mayúscula y en gris.

display · 56 · 600
tracking −3%
Design that ships
h2 · 28 · 600
tracking −1.5%
Onboarding → first payment
body · 16 · 400
color fg-2
I design mobile products end to end, from the first flow to the last micro-interaction, and hand off files engineers can build from.
label · mono 11
caps · +6%
sitemap · social · contact
números · 600
tabulares
$1,240
forma y espacio

Cuanto más flota algo, más redondo es. Cuando una superficie va adentro de otra, el radio interno es el externo menos el margen.

r-xs · 8
stage
r-md · 16
thumbs, inputs
r-lg · 24
cards
r-xl · 32
sheets
r-pill
botones, chips
concéntrico
36 − 12 = 24
s-1 · 4px
s-2 · 8px
s-3 · 12px
s-4 · 16px
s-5 · 24px
s-6 · 32px
s-7 · 48px
s-8 · 64px
s-9 · 96px
s-10 · 160px
micro

Lo que nadie ve, pero todos sienten. Micro-blurs y micro-animaciones.

Esta es la capa que más me importa. Ninguno de estos detalles se nota por separado; juntos son la diferencia entre una pantalla correcta y una que se siente cara. Regla general: el blur nunca pasa de 10 px fuera del vidrio, y ninguna micro-animación dura más de 420 ms.

Main account$25,482
Savings$3,120
Travel fund$880
Rent$214
Groceries$1,906
Emergency fund$742
Joint account$5,310
Taxes$96

Blur progresivo

Bordes de listas, barras de navegación y tab bars. Scrolleá la lista.

El contenido se va de a poco en vez de cortarse en seco, como en iOS.

capas
4 · blur 1, 2, 4, 8 px
máscaras
100%, 75%, 50%, 25% del alto
alto
72 px + fade del color de fondo

Blur de borde

Mapas, fotos y fondos de cámara detrás de la UI.

El centro queda nítido y los bordes se van, como profundidad de campo: el ojo va directo a lo importante.

blur
10 px · saturate 110%
máscara
radial · nítido hasta 40%, blur pleno al 100%
Item detectedAir Max 1 · added to your closet

Vidrio flotante

Sheets y tarjetas sobre cámara, foto o color.

Separado del borde se lee como capa; con radio concéntrico parece parte del hardware.

superficie
blur 32 px · saturate 160% · tinte 55%
borde
luz interna de 1 px arriba + hairline
posición
inset 10–12 px · radio = exterior − inset
$12,480
Studio account−$1,240
Mara Diaz+$560
Confirm transfer

$1,240 to Studio account

Fondo que retrocede

Cuando se abre un sheet, lo de atrás se desenfoca y se aleja un poco.

Da profundidad sin tapar todo de negro, y el foco queda en la tarea.

fondo
blur 0 → 10 px · scale 1 → 0.96 · opacity 1 → 0.6
tiempo
420 ms ease-out al abrir · 280 ms al cerrar

Cambio con blur

Botones y labels que cambian de estado: enviar, enviando, enviado.

El estado viejo se desenfoca mientras el nuevo enfoca. El ojo lee continuidad en vez de un salto.

sale
opacity → 0 · blur → 6 px · scale → 0.96
entra
lo inverso · 240 ms ease-out, en simultáneo

I turned your three sketches into one flow you can actually test.

Texto que llega

Respuestas de IA, confirmaciones y mensajes nuevos.

Cada palabra enfoca al llegar. Se siente escrito en vivo, sin el parpadeo de un cursor.

palabra
opacity 0.15 → 1 · blur 4 → 0 · y 4 → 0
tiempo
420 ms ease-out · 30 ms entre palabras
Thinking about your portfolio~4 s

Texto pensando

Estados de carga con texto: "pensando", "buscando", "procesando".

Un brillo que recorre el texto dice "estoy trabajando" sin spinner ni barra.

gradiente
fg-3 → fg → fg-3 · 300% de ancho
tiempo
2.2 s linear · loop (único loop permitido en UI)
NEW

Profundidad por capas

Pantallas de producto, objetos detectados y heroes de marca.

Texto grande y borroso atrás, objeto nítido adelante, sombra de contacto abajo: tres planos que se leen como espacio real.

texto atrás
700 · opacity 14% · blur 2.5 px
sombra
elipse 70% · blur 4 px · 35% negro
sticker
uno solo por pantalla · rotado −4°

Pill que crece

Actividades en vivo, llamadas, timers, reproductores. Tocá la pill.

El contenido crece desde donde ya estaba, sin abrir otra pantalla.

forma
ancho, alto y radio juntos · 420 ms ease-in-out
contenido
cambio con blur · 240 ms · delay 120 ms

Ícono que muta

Agregar ↔ cerrar, copiar → copiado. Tocá los dos.

El ícono cambia en el mismo lugar y confirma la acción sin un toast.

+ → ×
rotate 45° · 240 ms spring
copiar
cambio con blur · vuelve a los 1.4 s

Interruptor elástico

Toggles. Mantenelo apretado antes de soltar.

El círculo se estira bajo el dedo como algo blando. Es un detalle que se siente antes de verse.

apretado
ancho 28 → 36 px
viaje
240 ms spring · color 240 ms
Live · 1,204 watching Pending approval Recording

Punto vivo

Estados que están pasando ahora: en vivo, pendiente, grabando.

Un pulso suave dice "esto se está moviendo" sin pedir atención.

anillo
scale 1 → 2.6 · opacity 0.55 → 0
tiempo
1.6 s ease-out · loop solo mientras el estado dura
motion

Entra rápido, frena suave. Tres curvas, seis duraciones, ocho patrones.

Las reglas de movimiento a escala de pantalla. Todo sale de los tokens de tokens.css.

Responder al instante

Todo toque tiene respuesta visual en menos de 100 ms. Si la acción tarda, el botón cambia de estado antes de que llegue el resultado.

Entrar rápido, frenar suave

Casi todo usa ease-out. Lo que se abre tarda 420 ms; lo que se cierra, 280 ms.

Nada aparece de la nada

Los elementos entran desde donde se originan: el sheet desde abajo, el toast desde el borde, el check desde el botón.

Una cosa a la vez

Lo que entra junto se escalona: 120 ms entre líneas, 50 ms entre ítems (máximo 6), 30 ms entre palabras.

El texto no baila

El texto se revela y queda quieto. Nunca arranca invisible, nunca rebota y nunca se mueve mientras alguien lo lee.

curvas
ease-out · por defectocubic-bezier(.22, 1, .36, 1)

Entradas, respuestas, reveals.

ease-in-out · recorridocubic-bezier(.65, 0, .35, 1)

Algo que cruza la pantalla, morphs, cierres.

spring · confirmarcubic-bezier(.34, 1.56, .64, 1)

Solo cosas chicas: check, chip, rebote al soltar.

duraciones
tokenmsse usa en
--dur-1120Press, hover, fade de labels.
--dur-2240Chips, toggles, segmented, color, cambios con blur, salida de toast.
--dur-exit280Cerrar sheets, modales y pantallas.
--dur-3420Abrir sheets, entrar cards y toasts, morphs.
--dur-count600Números que ruedan.
--dur-4800Reveal de titulares y entrada del hero.
catálogo · tocá cada demo

Tocar

Todo lo tocable. En mobile va con haptic liviano.

al tocar
scale 1 → 0.97 · 120 ms ease-out
al soltar
0.97 → 1 · 240 ms spring
haptic
impact light

Rodar número

Saldos, montos, puntajes y timers cuando cambian.

dígito
rueda vertical + blur 1.5 px mientras se mueve
tiempo
600 ms ease-out · 40 ms entre dígitos
fuente
siempre tabular-nums

Cambiar selección

Segmented controls, tabs y filtros. El indicador viaja, no salta.

indicador
translateX · 240 ms ease-in-out
texto
color · 240 ms ease-out
haptic
selection

Confirmar

Pagos, envíos y cualquier acción con resultado. El botón se convierte en la respuesta.

1 · label
opacity → 0 + blur 4 · 120 ms
2 · forma
→ círculo 52 px · 420 ms ease-in-out
3 · check
scale 0.6 → 1 + trazo · 240 ms spring · delay 420
haptic
notification success
Main account$25,482
Savings$3,120
Travel fund$880
Rent$214

Entrar lista

Contenido nuevo que llega después de una acción.

ítem
opacity 0 → 1 · y 12 → 0 · blur 2 → 0
tiempo
420 ms ease-out · 50 ms entre ítems, tope 6
Saved to drafts

Avisar

Confirmaciones sin decisión. Si hay que decidir, va un sheet.

entra
y 16 → 0 · blur 4 → 0 · 420 ms ease-out
queda
1600 ms
sale
240 ms ease-in-out
Accounts
$12,480

Studio account · updated now

Pasar de pantalla

Navegación hacia adelante y atrás. Tocá una cuenta.

nueva
x 100% → 0 · 420 ms ease-out
anterior
x 0 → −30% · brightness 0.8
volver
inverso · 280 ms ease-in-out
El nuevo tema se revela en círculo desde el punto que tocaste.

Cambiar tema

Pasar de claro a oscuro y al revés.

revelado
clip-path circle desde el toque · 520 ms ease-out
sin soporte
crossfade de colores · 420 ms
transiciones de pantalla
transiciónqué se muevemscurva
pushNueva x 100% → 0. Anterior x 0 → −30% y se oscurece al 80%.420ease-out
backLo inverso. Con gesto de borde, sigue al dedo.280ease-in-out
modalSheet desde abajo. Lo de atrás retrocede: blur 10, scale 0.96.420ease-out
tabCrossfade con blur 4 px, sin desplazamiento.240ease-out
elemento compartidoCard → pantalla completa: posición, tamaño y radio interpolan juntos.420ease-in-out
qué se anima y qué no
sí
  • Respuesta a cada toque.
  • Cambios de estado: cargando, enviado, error.
  • Contenido nuevo que llega después de una acción.
  • Transiciones entre pantallas y sheets.
  • Números que cambian de valor.
no
  • Texto mientras se lee.
  • Parallax o scroll que secuestra la página.
  • Loops infinitos en UI, salvo carga y estados en vivo.
  • Rebotes en elementos grandes.
  • Animaciones al cargar que nadie pidió.
movimiento reducido

Con prefers-reduced-motion o "Reducir movimiento" en iOS: sin desplazamiento, sin escala y sin blur. Los cambios de estado pasan a un crossfade de 120 ms, los números muestran el valor final y los loops se detienen. Los haptics se mantienen.

código
/* CSS · con tokens.css */
.sheet {
  transform: translateY(100%);
  transition: transform var(--dur-exit)
              var(--ease-in-out);
}
.sheet.open {
  transform: none;
  transition-duration: var(--dur-3);
  transition-timing-function: var(--ease-out);
}
.behind.dim {
  filter: blur(var(--blur-behind));
  transform: scale(0.96);
}
// React Native · Reanimated + expo-blur
export const ease = {
  out: Easing.bezier(0.22, 1, 0.36, 1),
  inOut: Easing.bezier(0.65, 0, 0.35, 1),
};
export const dur = { press: 120, quick: 240,
  exit: 280, base: 420, count: 600, reveal: 800 };
export const spring = { damping: 16,
  stiffness: 260, mass: 1 };

// press
onPressIn: scale.value = withTiming(0.97,
  { duration: dur.press, easing: ease.out });
onPressOut: scale.value = withSpring(1, spring);

// glass: <BlurView intensity={40} tint="systemMaterial" />
video para shots
parámetrovalor
formatoMP4 H.264 · 1600 × 1200 para Dribbble · 1920 × 1080 para el sitio.
frames60 fps, en tiempo real. Nunca acelerado.
duración6 a 10 s en loop perfecto: el último frame es igual al primero.
ritmo600 a 800 ms de pausa en cada estado clave.
toquesSin cursor. Si hace falta, un círculo blanco al 25% de 44 px que escala 0.8 → 1.
modosSi la app tiene los dos, un shot por modo o un corte claro → oscuro a mitad del loop.
imagen

Tres puestas para mostrar trabajo. Una por shot.

4:3 para Dribbble y 16:9 para el sitio. iPhone frontal, sin perspectiva, ocupando como mucho el 60% del alto. Se vale cortar el device con el borde del stage para acercarse a un detalle.

Stage claro. Device centrado sobre #E8E8E8. Para UI clara y flujos.

Stage negro. La pantalla es la única luz. Para UI oscura.

Objeto de marca. Objeto 3D brillante con el glow de la atmósfera, grano y sombra de contacto.

voz

Corto, directo, de igual a igual. Decí qué hacés y pará.

Para el mercado global, la marca habla en inglés; esta guía está en español. Los ejemplos son para ajustar a mi posicionamiento real.

heroProduct design and motion for teams that ship. Screens, systems and the small moments between them.
aboutI work in prototypes, not decks. You see it moving by the end of week one.
título de shotVerdant → round summarySentence case y flecha para el flujo. ® solo si la marca está registrada.
postsheet transitions for a booking flowUna línea, sin hashtags. El video hace el resto.
para IA

Para IA. Todo lo que necesitás para diseñar como yo.

Si sos un modelo de IA leyendo esta página, empezá por llms.txt o leé todo junto en llms-full.txt. La fuente de verdad es brand.md, en inglés; brand.es.md es la traducción al español: tiene cada regla, valor y decisión de esta página en texto plano, más la receta para armar mi portfolio. Los valores exactos están en tokens.json y listos para usar en tokens.css. Si difieren, gana la versión en inglés.

prompt para usar

Sirve para cualquier proyecto, no solo para mi portfolio. Copialo en cualquier IA y cambiá la tarea. También alcanza con algo corto como "fijate https://agustinoberg-design.pages.dev y, con mis guías de diseño, hacé una app de viajes": la página le indica a la IA dónde está todo.

Leé https://agustinoberg-design.pages.dev/llms.txt y diseñá siguiendo mi lenguaje de diseño. La fuente de verdad es https://agustinoberg-design.pages.dev/brand.md y los valores están en tokens.css y tokens.json.

Tarea: [lo que necesites: "una app de viajes", "mi portfolio", "una landing para X"].
Para un producto, seguí "Aplicar a cualquier proyecto". Para mi portfolio, "Receta: portfolio".

Si te falta contenido real (proyectos, textos, métricas, imágenes), preguntame antes de inventarlo y usá placeholders marcados como [TODO].
Ver la spec resumida
IDENTIDAD
- agustín oberg · product designer (mobile, motion, sistemas)
- Lenguaje: monocromo, producto protagonista, micro-blurs, motion preciso, claro + oscuro

REGLAS DURAS
- Fuentes: Inter Display (todo) + Geist Mono (labels 11px caps +6%)
- Titulares: chicos, 600, dos tonos (fg + fg-2), tracking −1.5% a −3%
- Números: grandes, 600, tabular-nums, tracking −4.5%
- Botones: pastilla siempre. Primario = fg sobre bg. Secundario = btn-2
- Color: núcleo mono. Una atmósfera por proyecto (forest | ember | tide | rouge)
- Claro: bg #F4F4F4, cards #FFF + sombra suave
- Oscuro: bg #000, cards #111 + luz de 1px, sin sombras grandes
- Vidrio: blur 20, saturate 180%, luz interna 1px; claro 68% / oscuro 12%
- Sheets: flotantes, inset 12, radio = exterior − inset
- Radios: 8 stage · 16 thumbs · 24 cards · 32 sheets · pill controles

MICRO
- Blur progresivo en bordes de scroll y barras (4 capas: 1/2/4/8px)
- Blur de borde en mapas/fotos (nítido al centro)
- Fondo que retrocede al abrir sheet: blur 10, scale .96, opacity .6
- Cambio de estado con blur: 6px, 240ms
- Palabras que llegan: blur 4 → 0, 30ms entre palabras
- Shimmer para "pensando"; punto vivo con pulso para estados en curso
- Profundidad: texto grande borroso atrás, objeto nítido, sombra de contacto

MOTION
- ease-out (.22,1,.36,1) por defecto · ease-in-out (.65,0,.35,1) recorridos · spring (.34,1.56,.64,1) solo chico
- 120 press · 240 chips/blur · 280 cerrar · 420 abrir · 600 números · 800 titulares
- Press: scale .97. Cerrar siempre más rápido que abrir
- Reduced motion: sin movimiento, escala ni blur; crossfade 120ms

NUNCA
- Gradientes violeta-azul, mockups en perspectiva, manos, emojis como íconos
- Bordes rectos en botones, dos atmósferas juntas, sombras grandes en oscuro
- Copy de agencia, lorem ipsum, proyectos o métricas inventadas
skills

Mi diseño, instalado en tu agente. Un comando con skills.sh.

Todo lo de esta página también se distribuye como skills para agentes a través de skills.sh. Una vez instaladas, el agente las carga solo cuando la tarea lo pide: sin prompt para pegar ni links para pasar. Funcionan con Claude Code, Cursor, Codex y cualquier agente compatible con el formato abierto Agent Skills.

agustinoberg-designQué es mi diseño, exactamente.Para todo lo que tenga que verse, moverse y leerse como si lo hubiera diseñado yo: pantallas, componentes, sitios, decks y shots de Dribbble. Trae los tokens para web (CSS) y React Native, código para cada patrón característico y un pre-flight visual.
agustinoberg-productCómo construir bien un producto.Para apps, sitios y flujos completos. Si tenés referencias de diseño, mandan en lo visual y mi toque va encima; si no, usa mi diseño. Suma investigación antes de dibujar, gramática de navegación, todos los estados, dónde va el motion y un loop de verificación. Carga agustinoberg-design.
instalación

Correlo en la carpeta de tu proyecto. La CLI te pregunta qué skills y para qué agentes; los flags se saltean las preguntas. Por ahora el repo es privado, así que instalar requiere acceso.

todas las skills, en este proyecto
npx skills add AgustinOberg/agustinoberg
una skill, para Claude Code, sin preguntas
npx skills add AgustinOberg/agustinoberg --skill agustinoberg-design -a claude-code -y
las dos skills, en todos tus proyectos
npx skills add AgustinOberg/agustinoberg --skill agustinoberg-design --skill agustinoberg-product -g

Después pedí el trabajo como siempre, por ejemplo "hacé una app de viajes con mis guías de diseño". La skill hace el resto.

Así diseño.Si algo de acá no se nota en el resultado, todavía no está terminado.