Indash Stack
Plugin de Claude Code / Cowork para clientes de Indash: el combo de skills de creative performance + el conector MCP de Indash para que crees el contenido de tu marca vos mismo — carruseles, stories, ads, video y email, con tus productos y tu identidad de marca reales.
La idea: instalás el plugin, conectás tu cuenta de Indash con un login, y las skills producen entregables de calidad senior usando tu catálogo y tu brand kit. Sin configurar nada más. La misma carpeta de trabajo que arma el plugin es un proyecto del Indash Studio, así que todo lo que generes se abre nativo en el editor.
¿Vas a editar el plugin en vez de usarlo? Leé
CLAUDE.md: es la guía técnica para desarrollar sobre este repo. Este README es para usar el stack.
Qué incluye
Skills
| Skill | Qué hace |
|---|---|
| new-client | El onboarding entero de tu marca en Indash, conversando: el mismo de la app y al mismo lugar. Respondés de a una cosa, o le pasás una carpeta con todo lo que tengas (PDFs, capturas, audios) y te propone a dónde va cada archivo antes de subir nada. Guarda tu material tal cual, sin resumirlo ni completarlo por su cuenta, conecta tu tienda y cierra con el inventario: qué recibimos, qué falta y si podemos arrancar. Después corre el análisis (cómo escribís, qué te preguntan, frases textuales, avatar, sistema visual) y te lo muestra para que confirmes qué se usa: nada derivado entra a un brief sin tu OK. Si vas a producir desde Claude Code, al final arma la carpeta local con el CLAUDE.md de contexto escrito desde Indash. Es lo que después lee content-brief. No consume créditos. Se dispara con "nuevo cliente", "quiero cargar mi marca en Indash" o "el cliente me mandó todo esto, cargalo". |
| content-brief | Arma el brief de contenido del período con el contexto de marca que cargó el cliente y la misma metodología que el agente de briefs de la app (el conector la sirve en vivo): mensajes con fuente y cada pieza con copy literal. Lo guarda en Indash para que lo revisen el cliente y el equipo, y orquesta las skills de ejecución. Se dispara con "armá el brief del mes" / "plan de contenido". |
| carruseles | Carruseles 4:5 (1080×1350): shot list + genera las imágenes con el MCP de Indash (elige modelo por slide) + prompts. |
| stories-nano-banana | Secuencias de Stories 9:16 (1080×1920): shot list + prompts, con sticker de engagement por story y texto en zona segura de UI. |
| ads | Meta ads (FB/IG) para DTC e-commerce: 3-5 variaciones con imagen final (vía MCP) + copy de Meta completo (Primary Text, Headline, Description, CTA). |
| ugc-video-prompts | Paquetes de video UGC (Kling 3.0 / Veo 3.1 / Seedance 2.0 + first/last frame con Nano Banana). |
| ugc-generator | Producción end-to-end de videos UGC: del pedido (una frase, un sheet, un brief) a los clips generados vía MCP y verificados en carpeta — guiones, frames, QA de producto y 2 gates de aprobación. Se dispara con "hacele 2 videos de 10s a <cliente> con <producto>". |
| locuciones | Voz en off / text-to-speech con Gemini 3.8 TTS: escribe o adapta el guion para el oído, elige la voz (30 de estudio, la biblioteca por idioma/acento, o una diseñada por descripción: "una argentina de veinte años, voz clara, porteña") con audición barata, dirige la lectura en lenguaje natural — tono, ritmo, acento, acotaciones por línea, tags como <laugh> o <short pause> — y arma escenas de dos voces. Entrega WAVs en la galería del workspace + el guion dirigido en disco, listos para hyperframes / edicion-ugc. El agente no puede escuchar el audio: chequea duración y costo, vos escuchás y elegís. Se dispara con "generá la voz para el reel" o "leé este guion con una voz". |
| all-videos | Videos de marketing multi-shot (ads, demos, brand films, hypermotion) con selección de modelo por shot — Seedance 2.0, Omni, Veo, Kling — en modo prompt-only o video generado según el MCP. |
| hyperframes | Post-producción creativa de video: edita y ensambla los clips e imágenes que ya generaste en la pieza final con HyperFrames — cortes, transiciones, captions en zona segura, música y VO, en 9:16 / 4:5 / 1:1 / 16:9. Entrega el plan de edición por segundos + la composición + el comando de render. Se dispara con "editame un reel con los clips de <producto>". |
| edicion-ugc | Montaje determinístico de clips de avatar/UGC: recorta silencios muertos, detecta y tapa morphs con B-roll, quema subtítulos en Montserrat y pega la placa final de la marca. Las reglas salen de medir 21 ediciones manuales reales, no de criterio inventado. Corre local (macOS + ffmpeg + whisper-cpp, ver requisitos en su SKILL.md) y no consume créditos. Se dispara con "editá estos clips de UGC", "montá estos clips" o "revisá si hay morph". |
| email-marketing-ecomm | Mails promo DTC: 3 variantes (HTML + PNG) brand-first, listas para Klaviyo / Mailchimp / Customer.io. |
| stack-overview | Empezá por acá si es tu primera vez. Te explica el stack: qué hace cada skill, las 41 tools del conector, cómo se actualizan las skills, qué queda guardado en Indash y qué en disco, y qué referencias soporta cada modelo (imagen, video y audio). Se dispara con "¿qué puedo hacer?", "¿se puede pasar un video de referencia?" o cualquier pregunta sobre capacidades. |
Todas siguen un workflow estricto: intake → discovery (scraping + análisis de imagen) → una sola pregunta consolidada de decisiones → concepto → generación de prompts → self-check → output. Nunca generan sin confirmar con vos primero.
Skills que invocás vos
La mayoría de las skills se disparan solas. Esta la invocás vos, escribiendo / en el chat — el modelo nunca la corre por su cuenta.
| Skill | Qué hace |
|---|---|
/save-learnings | Guarda lo aprendido de una sesión en la que algo no funcionó. Te hace una sola pregunta consolidada (qué hiciste, dónde se trabó, qué cambiarías y por qué — el por qué lo escribís vos, no lo inventa el agente) y separa los learnings del cliente (DOs, DON'Ts y cómo se llegó a un buen resultado → van al LEARNINGS.md del workspace de esa marca en Indash) de los learnings de la skill (universales, anonimizados y en formato antes / propongo / por qué → van a un issue privado del equipo de Indash, que los usa para mejorar el plugin). Te muestra el borrador completo y no manda nada sin tu confirmación. Corrélo a conciencia, cuando sabés que tenés algo para guardar: no es el cierre de todas las entregas. |
Instalado desde el marketplace el nombre completo es /save-learnings; el autocompletado de / te lo encuentra escribiendo save-learnings.
Por qué te conviene usarlo: el LEARNINGS.md de tu marca es lo que hace que la próxima sesión no repita los mismos errores, y los learnings de skill son los que hacen que el plugin mejore versión a versión. Nada de tu marca viaja al equipo: los learnings de skill van sin nombre de marca, producto, personas, URLs ni números de negocio.
MCP server (.mcp.json)
El plugin trae un solo conector, y es todo lo que el stack necesita:
| Conector | URL | Auth | Para qué |
|---|---|---|---|
indash | https://www.indash.ai/api/mcp | OAuth | Tu marca, tus productos, toda la generación de imagen/video y el drive de creatives |
¿Usás Notion, Google Drive u otros MCPs? Las skills los aprovechan como fuentes de contexto si ya los tenés conectados (un brief en Notion, assets en Drive), pero ninguna los requiere — se agregan por tu cuenta con claude mcp add o desde el panel de conectores de claude.ai, fuera del plugin.
Hook de SessionStart
Inyecta hooks/context/stack-policy.md al inicio de cada sesión. Es el mecanismo por el que la política del stack le llega al agente cuando usás el plugin: aplica el gate de autenticación (si indash no está conectado, frena y te pide que lo conectes — no improvisa workarounds ni inventa datos de marca) y hereda el contexto de la marca desde el CLAUDE.md de la carpeta de trabajo.
Portabilidad — no es solo Claude Code
Desde la 0.7.0 el plugin se publica en dos formatos a la vez, sin que uno pise al otro:
| Formato | Archivos | Lo lee |
|---|---|---|
| Claude Code | .claude-plugin/plugin.json + .mcp.json | Claude Code / Cowork |
| Agent Plugins 1.0.0 | plugin.json + mcp.json (raíz) | Cualquier cliente conforme a la spec abierta: Cursor, Copilot, Codex, Gemini CLI… |
Agent Plugins es un estándar abierto y vendor-neutral para empaquetar skills + MCP servers en un plugin portable. Las skills (skills/<nombre>/SKILL.md) y el conector son idénticos en los dos casos.
Una diferencia importante: el hook de SessionStart es específico de Claude Code — la spec no define hooks. En otros clientes la política del stack no se inyecta sola; ahí la lleva la skill stack-overview, que el agente carga cuando preguntás qué hace el stack. Si usás el plugin fuera de Claude Code, arrancá con "¿qué puedo hacer con el stack de Indash?".
Instalación
El plugin se distribuye vía marketplace (no es un archivo que se baja a mano). El repo es público: no hace falta pedir acceso ni estar autenticado en GitHub para instalarlo.
Lo público es el plugin, no lo que generás: las skills son instrucciones, y tu catálogo, tu brand kit y tus entregables viven en tu cuenta de Indash y en tu disco. El acceso a eso lo sigue dando el login del conector indash, no el repo.
Como usuario del equipo
- Agregá el marketplace que publica este plugin:
/plugin marketplace add indash-io/stack-plugin - Instalá el plugin:
/plugin install indash-stack - Conectá
indash: abrí/mcp, elegíindashy seguí el login en el browser. Es tu cuenta de Indash de siempre — no hay ningún token que copiar ni variable de entorno que setear.
Listo. Eso es toda la instalación.
Para probarlo en local (desarrollo)
claude --plugin-dir /ruta/a/este/repo
Autenticación
OAuth con tu cuenta de Indash. No hay ninguna variable de entorno que configurar. La primera vez, abrí /mcp, elegí indash y completá el login en el browser. El token queda guardado y se refresca solo; si alguna vez caduca, Claude Code te avisa y te ofrece Re-authenticate en el mismo panel.
En Cowork / claude.ai la conexión se hace desde el panel de conectores en vez de /mcp; el resto es igual.
Sesiones headless (crons, CI, claude -p)
Un run no interactivo no puede abrir el browser, así que no completa un OAuth por su cuenta. Dos opciones:
- Autenticar una vez desde una sesión interactiva en esa misma máquina (
/mcp, oclaude mcp login indash). El token queda guardado y los runs headless posteriores lo usan. - API key, para entornos donde no hay sesión interactiva posible (un contenedor de CI efímero, por ejemplo). Se genera desde la app de Indash y se registra el server aparte, fuera del plugin:
Es un camino secundario y opcional: sirve para automatizaciones, no para el uso normal del stack. Ojo que si configurás el header y el token es inválido, Claude Code reporta el server como
claude mcp add --transport http indash https://www.indash.ai/api/mcp \ --header "Authorization: Bearer indash_sk_xxxxxxxx"faileden vez de caer al flujo OAuth.
Uso
Pedile a Claude en lenguaje natural — las skills se disparan solas cuando el pedido coincide:
- Onboardear la marca (una vez) → "Nuevo cliente: Acme Foods" o "Quiero cargar mi marca en Indash" → dispara
new-client: ubica tu workspace, te pide el material que ya tenés (piezas propias, reseñas sin editar, cómo funciona el producto, límites y objetivo) o levanta una carpeta entera, lo deja en el mismo onboarding de la app, corre el análisis para que confirmes qué se usa y, si querés producir desde acá, arma la carpeta del cliente con suCLAUDE.md. Si ya hiciste el onboarding en la app, retoma sin repreguntar. Después trabajás dentro de esa carpeta para que el contexto se herede. - Planificar el período (opcional, recomendado) → "Armá el brief de junio para Acme" → dispara
content-brief: trae el contexto de marca y la metodología de Indash, arma el brief con copy literal por pieza, lo guarda en la app (te pasa la URL y los chequeos) y te dice qué skill ejecuta cada tipo de pieza. A revisión lo manda solo cuando vos se lo decís. - Producir cada pieza → el pedido dispara la skill que corresponde:
- Carrusel → "Armá un carrusel para
<URL>" + imagen →carruseles(genera las imágenes). - Stories → "Necesito stories para
<URL>" + imagen →stories-nano-banana. - Meta ads → "Hacé 3 ads para
<producto>" →ads. - Video (prompts) → "Armá un UGC / video para
<producto>" →ugc-video-promptsoall-videos. - Video (producción completa) → "Hacele 2 videos de 10s a
<cliente>con<producto>" →ugc-generator(genera y verifica los clips). - Video (edición final, creativa) → "Editame un reel con los clips de
<producto>" →hyperframes(arma el corte, los captions y el MP4 final). - Locución / voz en off → "Generá la voz para el reel de
<producto>" →locuciones(guion para el oído + voz dirigida, WAV en la galería). - Video (montaje de UGC de avatar) → "Editá estos clips de UGC" / "revisá si hay morph" →
edicion-ugc(silencios, morphs, subtítulos y placa, con reglas medidas). - Email → "Armá un mail promo para
<marca>" →email-marketing-ecomm.
- Carrusel → "Armá un carrusel para
Las skills de producto necesitan URL de producto + imagen de referencia (si armaste la carpeta del cliente con new-client, ya los tenés en assets/products/index.md). Si falta algo, la skill te lo pide y frena. Antes de generar te hace una sola pregunta consolidada con defaults; confirmás o editás, y recién ahí genera. Todo entregable se guarda en exports/<tipo>/ (o briefs/) con nombre <AAAA-MM-DD>_<slug>_v<N>.
El output siempre es: shot list / brief creativo + N prompts numerados listos para pegar en nano banana junto a la imagen del producto. Además de mostrarlo en el chat, se guarda en disco dentro de la carpeta del cliente, en exports/carruseles/ o exports/stories/, con el nombre canónico <AAAA-MM-DD>_<producto-slug>_v<N>.md (versiona solo, no pisa). Así queda todo ordenado y trazable sin pensar la nomenclatura cada vez.
Patrón de carpetas por cliente
Creá una carpeta por cliente y dejá adentro un CLAUDE.md con su contexto: marca, tono, paleta, links a su Drive/Notion, datos clave. Al abrir Cowork en esa carpeta, ese CLAUDE.md se carga como contexto del proyecto y el stack lo hereda en todo lo que produce.
Las skills funcionan igual en cualquier carpeta — lo único que cambia es el contexto del cliente. Así el mismo plugin sirve para todos los clientes sin tocar el plugin.
clientes/
cliente-acme/
CLAUDE.md ← contexto de Acme (marca, tono, paleta, links)
exports/
cliente-beta/
CLAUDE.md ← contexto de Beta
...
Ojo — no confundir dos
CLAUDE.mddistintos:
- El
CLAUDE.mden la carpeta de un cliente = contexto de marca de ese cliente. Sí se carga cuando trabajás en esa carpeta.- El
CLAUDE.mden la raíz de este repo = guía técnica para desarrollar el plugin. No se carga cuando usás el plugin — solo cuando editás el repo. VerCLAUDE.md.
Estructura del repo
.claude-plugin/plugin.json Manifiesto del plugin (formato Claude Code)
.claude-plugin/marketplace.json Marketplace de Indash (lista el plugin para /plugin install)
.mcp.json Definición de los MCP servers (formato Claude Code)
plugin.json Manifiesto en la spec abierta Agent Plugins 1.0.0
mcp.json MCP servers en la spec abierta (streamable-http)
hooks/hooks.json Hook de SessionStart (solo Claude Code)
hooks/context/stack-policy.md Política inyectada en cada sesión (lo que recibe el end user)
skills/stack-overview/ Qué puede hacer el stack (+ la política, para clientes sin hooks)
skills/new-client/ Onboarding de la marca en Indash (carga, tienda, análisis) + carpeta local opcional
skills/content-brief/ Brief de contenido del período (orquesta las skills de ejecución)
skills/carruseles/ Carruseles 4:5 (genera imágenes vía MCP)
skills/stories-nano-banana/ Stories 9:16
skills/ads/ Meta ads DTC (imagen + copy)
skills/ugc-video-prompts/ Paquetes de video UGC (Kling/Veo/Seedance)
skills/ugc-generator/ Producción end-to-end de videos UGC (pedido → clips verificados)
skills/all-videos/ Videos de marketing multi-shot, multi-modelo (Seedance/Omni/Veo/Kling)
skills/locuciones/ Voz en off / TTS con Gemini 3.8 (guion, voz, dirección, dos voces)
skills/hyperframes/ Post-producción creativa (composición HyperFrames → MP4)
skills/edicion-ugc/ Montaje determinístico de UGC de avatar (FFmpeg + whisper-cpp, local)
skills/email-marketing-ecomm/ Mails promo DTC (HTML + PNG)
skills/save-learnings/SKILL.md /save-learnings — la invocás vos; guarda los learnings de la sesión
scripts/validate-plugin.mjs Validador de integridad (JSON + refs + frontmatter de cada SKILL.md + hooks)
.github/workflows/validate.yml CI que corre el validador en cada push/PR
CLAUDE.md Guía técnica para desarrollar el plugin (solo en-repo)
README.md Este archivo — cómo usar el stack
Para todo lo técnico (cómo está armado el plugin, cómo agregar una skill o un MCP, cómo distribuir), andá a CLAUDE.md.