indash-io/indash-stack
El stack de creación de contenido de Indash para tu marca: skills de creative performance (onboarding, brief de período, carruseles, stories, Meta ads, video UGC/cinematográfico, post-producción —montaje determinístico de UGC de avatar y armado de la pieza final con HyperFrames—, y email marketing) + el conector MCP de Indash (tu catálogo, tu brand kit y toda la generación de imagen/video). Conectás tu cuenta con un login y creás el contenido vos mismo.
Changelog
0.16.0 — 2026-09-08
Videos de hasta 40 segundos y la familia GPT Image 2.5. Acompaña a indash-io/mkt-agents#286, #287 y #288.
extend_video: continúa un clip deomniagregando 3-10s por turno, hasta 40s. Cambia el orden del trabajo: generás el primer beat, el cliente lo aprueba, y recién ahí pagás la continuación — en vez de apostar a un render largo que no podés ver hasta que termina.model_selection.mdahora ramifica por ahí, ystack-overviewexplica las cuatro reglas del encadenado (serial, sobre el últimorun_id, un creative por turno, se cobra lo agregado).- GPT Image 2.5 en sus dos variantes:
gpt-image-2.5-flare(mejor que el 2 a la mitad de latencia) ygpt-image-2.5-sunburst(control fino en ediciones, para el entregable final). Cuestan lo mismo que gpt-image-2. gpt-imagepasa a llamarsegpt-image-2. El nombre genérico era parte del problema: durante cuatro meses renderizógpt-image-1sin que nada lo delatara. El nombre viejo sigue funcionando como alias, pero las skills ya nombran el nuevo.- Las tablas de modelos de
prompt-craftyadsdejan de recomendaropenai/gpt-image-1, que no era ni el que corría ni el que convenía. - El conteo de tools del conector estaba viejo: eran 26 en la doc y hoy son 29.
0.15.0 — 2026-09-07
El roster de modelos del MCP cambió, y con él las decisiones de costo. Las skills decían "máx 15s" y recomendaban 1080p por defecto; las dos cosas ya no son ciertas. Acompaña a indash-io/mkt-agents#281.
- Seedance 2.5 (
seedance-2.5yseedance-2.5-ark): 4-30s en UN render — nada más en el roster llega a 30 — con 10 referencias de imagen, video y audio, last frame y text-to-video.reference/model_selection.mdyreference/seedance_2_params.mdcubren 2.0 y 2.5. - Omni Flash 1.1 (
omni): pasa a la API nativa de Google. 10 refs de imagen, 3 clips de video de hasta 3s, last frame, text-to-video, y un tier de 360p que sale un tercio de 720p — el modelo para draftear. - Kling O3 Pro (
kling): más nuevo y más barato. Perdió el negative prompt;veoes el único que queda con ese campo, y las skills lo dicen. - Nano Banana 2 Lite (
nano-banana-2-lite): tier de imagen para draftear, mitad de créditos quenano-banana-2. - La resolución ahora es una decisión de costo, no de calidad. La familia
seedance y omni cobran por píxeles: 1080p sale ~2.25x lo que sale 720p. Las
skills pasan a recomendar 720p por defecto (antes
seedance_2_params.mddecía 1080p) y a draftear en 360p/480p. - Las rutas
-arkcuestan la mitad que sus gemelas de fal por el mismo modelo. Estaba disponible desde julio y ninguna skill lo decía. seedance_2_params.mdaclara además qué parámetros del archivo no viajan porgenerate_video(fps,creativity_scale,temporal_smoothingno tienen campo en la tool).
0.14.0 — 2026-08-28
Tres bugs de carga que no se veían en el repo y sí en la máquina de cada uno. El validador ahora los atrapa.
- El plugin no cargaba en Claude Code ≥ 2.1.25x:
hooks/hooks.jsonusaba el formato viejo (SessionStarten el top-level). El formato oficial es{ "hooks": { "SessionStart": [...] } }; sin eso Claude Code rechaza el plugin entero ("Hook load failed") y no carga ni una skill. - Tres skills desaparecían en Claude Desktop (
all-videos,carruseles,stories-nano-banana): ladescriptiontenía:adentro y el parser YAML real la rechazaba — el plugin mostraba 11 skills de 12. Van entre comillas y el validador falla si un valor plano tiene:o#. /save-learningspasa decommands/askills/save-learnings/condisable-model-invocation: true: Claude Desktop y Cowork no listan los commands de un plugin, y la doc oficial recomiendaskills/. Se invoca/save-learningsen todos los clientes; el modelo sigue sin poder dispararla.
0.13.0 — 2026-08-27
/save-learnings ahora entrevista antes de redactar. El feedback de la
daily del 2026-08-26: el challenge está en quien corre el comando, no en quien
lee el issue. Hasta ahora el agente armaba el borrador solo y el "por qué" salía
de su inferencia — que es justo el dato que hace triageable un learning.
- Paso nuevo de entrevista, después de detectar las skills y antes de clasificar: una sola pregunta consolidada (la convención del stack, no una batería de preguntas sueltas) con qué hiciste (el agente lo pre-llena desde el contexto y la persona confirma), dónde se trabó, qué cambiarías concretamente y por qué. Si la persona invocó el comando con una nota, esa nota es la primera respuesta y solo se pide lo que falte.
- El "por qué" lo escribe la persona. Regla no negociable: si no lo contesta, el agente lo pide una vez más y, si sigue sin venir, el learning queda afuera — lo dice en el borrador. Nunca lo inventa ni lo rellena con una inferencia.
- Formato antes / propongo / por qué para cada learning de skill:
skill,before,after,whyyexample?(reemplaza atext+suggested_changeen el payload desave_learnings). Cada learning es un cambio concreto y acotado — nunca "reescribir la skill" ni cuatro cambios en un ítem — y el comando trae ejemplos buenos y malos para calibrarlo. La anonimización se aplica a los cuatro campos, no solo al primero. - Se corre a conciencia, no como cierre automático de cada entrega: llenar el
inbox de ruido es peor que no reportar.
stack-policy.mdystack-overviewahora dicen que el agente lo sugiera solo si en la sesión hubo fricción con una skill (se pidió rehacer algo, se corrigió a la skill, algo no sirvió). - Los learnings del cliente (
brand_learnings) no cambian de formato. - De paso: el paso 1 del comando listaba 10 skills: ahora lista las 12, con
hyperframesyedicion-ugc.
0.12.0 — 2026-08-26
Skill nueva: edicion-ugc — el montaje determinístico de clips de
avatar/UGC. Es la segunda skill de post-producción del stack y la primera con
código ejecutable: scripts/editar.py (FFmpeg + whisper-cpp + Pillow) y
scripts/setup.sh.
- Todo lo que hace sale de medir 21 ediciones manuales reales (n=10 y n=11
en dos marcas), validadas después en 4 marcas: recorta silencios de cabeza y
cola siempre, comprime pausas internas de más de 0.50s a 0.45s, entra a cada
clip 3 frames antes de la voz para no repetir la pose del still en el empalme,
detecta morphs y los tapa con un bloque único de B-roll que termina al 72% del
diálogo, quema subtítulos de 2-4 palabras en Montserrat SemiBold 32 (y=1027) y
pega la placa final (1.50s si es imagen; entera si es video). Export 720×1280,
24fps, ~6 Mbps. La procedencia de cada número, con su tamaño de muestra, está
en el
SKILL.md: la placa sale de 21 casos y el largo del B-roll de 4 — no valen lo mismo y la skill lo dice. - Dos modos:
revisarmide y reporta morphs con timestamp sin renderizar nada (paso obligatorio),montarhace la edición completa. - Límites explícitos, no tapados: el detector de morph es ciego a las
derivas graduales (
morph 0.000significa "sin saltos secos", no "clip limpio"), un pico de score no siempre es un morph, Whisper escribe mal los nombres de marca, y nadie escucha el audio. - Gate del conector
indash: condicional, como enhyperframes. Edita material que ya está en disco, así que no lo necesita — salvo que haya que generar un B-roll para tapar un morph sobre voz, y ahí sí frena y lo pide. No consume créditos. - Config y placa por cliente, no en el plugin. Reemplaza los perfiles por
marca que traía la skill original por la convención del stack: busca
brand/edicion-ugc.jsonybrand/placa.*en la carpeta del cliente (también enassets/brand-kit/yassets/logos/), además de la detección que ya tenía (Placa/,Logos/, nombre conplaca|outro|cierre|endcard). El plugin es público: no lleva datos, placas ni perfiles de ningún cliente. Formato documentado entemplates/brand-edicion-ugc.example.json. - Salida por convención del stack: sin
salidaexplícita, el MP4 va aexports/videos/<AAAA-MM-DD>_<slug>_v<N>.mp4de la carpeta del cliente, y nunca pisa — sube la versión. - Requisitos, dichos arriba de todo: macOS + Homebrew, ffmpeg, whisper-cpp,
el modelo
ggml-large-v3-turbo(1.5 GB) y Montserrat. Los instalascripts/setup.sh, que es idempotente. Si falta algo,editar.pyfrena con la lista de lo que falta y manda a correr el setup, en vez de tirar un traceback. - El venv vive fuera del plugin, en
~/.indash/edicion-ugc/venv: la carpeta del plugin es una cache que se pisa entera en cada auto-update del marketplace. El modelo de whisper sigue en~/.cache/whisper-cpp/.
edicion-ugc vs. hyperframes — las dos son post-producción y ahora ambas
lo aclaran: edicion-ugc es el pipeline determinístico para montar clips de
avatar (análisis + reglas medidas + render FFmpeg); hyperframes es composición
creativa. "Montame estos clips de avatar" → edicion-ugc; "armame una pieza
con estos assets / captions con estilo / placa animada" → hyperframes. Está
planificado que edicion-ugc emita un plan de edición que hyperframes
renderice (v2); hoy no lo hace, y las dos skills lo dicen para que nadie
prometa un handoff que no existe.
Convenciones nuevas del repo
- Una skill puede traer
scripts/. Regla dura documentada enCLAUDE.md: nada mutable adentro de la carpeta del plugin, y${CLAUDE_PLUGIN_ROOT}siempre con fallback explícito. brand/vuelve a la estructura del cliente como carpeta opcional de config de skills locales (brand/placa.*,brand/edicion-ugc.json). No la creanew-client: aparece cuando hace falta.
El stack pasa de 10 a 11 skills.
0.11.0 — 2026-08-25
El plugin pasa a tener mantenimiento de verdad. Esta release trae la
primera skill de post-producción (hyperframes), el lado cliente del feedback
loop de learnings (/save-learnings) y la metadata que necesita el skills hub
interno de Indash para auditar el inventario.
Command nuevo: /save-learnings
- Al cerrar una sesión, revisa qué skills se usaron, separa los learnings del
cliente (DOs/DON'Ts y contexto →
LEARNINGS.mddel workspace en Indash, vía la tool nuevasave_learningsdel conector) de los de la skill (universales, anonimizados → issue privado del equipo). Muestra el borrador y no manda nada sin confirmación.disable-model-invocation: true: lo dispara la persona, nunca el modelo. stack-policy.mdystack-overviewlo explican; al terminar una entrega el agente lo sugiere en una línea.- El conector pasa de 25 a 26 tools (
save_learnings, gratis).
Metadata de mantenimiento en cada skill
- Frontmatter con tres campos nuevos y obligatorios:
owner(login de GitHub de quien la mantiene),status(published | draft | deprecated—deprecatedes el primer paso de la baja) yreviewed(última revisión humana,YYYY-MM-DD). El validador los exige, enskills/y encore/skills/.
Higiene del repo
- El repo es público: README y marketplace ya no dicen "privado".
.github/CODEOWNERS, templates de issue (suggestion,new-skill) yscripts/setup-github.sh(labels + branch protection, lo corre un humano).- Tags
v0.9.0yv0.10.0que faltaban.
Skill nueva: hyperframes — el paso de post-producción que le faltaba
al stack. Agarra los clips, frames e imágenes que ya generaron all-videos,
ugc-generator y carruseles, y los ensambla en la pieza final con
HyperFrames, el framework open
source de HeyGen (Apache 2.0) que renderiza video determinístico a partir de
HTML/CSS + media + animaciones seekables.
- Es
prompt-only: no agrega ninguna tool al MCP de Indash ni consume créditos. El render corre local con la CLI de HyperFrames (requiere Node.js 22+ y FFmpeg), con un mode switcherfull_render/plan_onlysegún lo que banque la máquina. - Workflow del stack: intake → discovery (inventario de
exports/, duraciones medidas conffprobe, marca) → una sola pregunta consolidada → plan de edición por segundos con hook en 1-3s → composición HyperFrames + comando de render → self-check → escalera de gates (lint→check→draft→ aprobación del user →high) → guardado enexports/videos/con la nomenclatura canónica. reference/hyperframes.md: todo lo verificado en fuentes primarias (README del repo y docs oficiales, 2026-08-25), separando confirmado / inferido / verificar. Es la única fuente de sintaxis que la skill puede citar;examples/bad/api_inventada.mddocumenta los diez atributos y flags que un agente inventa por analogía y que no existen.style/safe_zones.mdextiende a Reels/TikTok/ads la convención de zona segura que ya usabastories-nano-banana(14%–85% vertical), incluyendo el rail de acciones lateral en 9:16.- Sincronizados los lugares que listan skills:
stack-policy.md,stack-overview(9 → 10 skills, y se corrigió la sección que decía que la post-producción "sigue sin existir"),README.md, los dosplugin.json,marketplace.json,CLAUDE.md, y las referencias cruzadas encontent-briefynew-client.
0.10.0 — 2026-08-19
seedance-multishot evoluciona a all-videos — la skill de video deja de
ser Seedance-only y pasa a ser la skill general de videos de marketing, con
selección de modelo por shot. Se integró desde un zip externo (all-videos)
que era un fork de seedance-multishot: se tomó lo nuevo del fork sobre la
base ya alineada del repo (persistencia, herencia de marca, gate, params
multimodales de 0.8.0), en vez de copiarlo verbatim.
- Nuevo
reference/model_selection.md: roster de los 6 modelos del MCP (seedance, seedance-ark, omni, veo, kling, grok-imagine), decision tree por shot, workflow draft-en-Omni → final-en-Seedance, y best practices por modelo. - SKILL.md: la hard rule "One model, one purpose" se reemplaza por "Model selection is strategist work"; se suman al multi-ref discipline los aprendizajes validados (refs = soft conditioning, single-take multi-ref con producto estático, stop-motion discreto para transformaciones, negative-space choreography, constraints por motion prompt); y se agrega la sección "Generalist intake" para briefs que no matchean los 4 templates.
- Anonimización: el fork traía marcas de clientes (casos reales) que acá se reemplazaron por categoría genérica, con el criterio del barrido de 0.7.x. Las versiones del fork de los archivos compartidos NO se copiaron: eran anteriores a la anonimización y al cableado multimodal de 0.8.0.
- Sincronizados los lugares que listan skills:
stack-policy.md,stack-overview,README.md,marketplace.json,CLAUDE.md, y las referencias cruzadas encontent-briefynew-client.
0.9.0 — 2026-08-19
Skill nueva: ugc-generator — el proceso de producción end-to-end de
videos UGC (antes "indash-production", usado internamente): del pedido en
cualquier formato a los clips generados vía MCP y verificados en carpeta, con
2 gates de aprobación (scripts y frames), QA de producto bloqueante, ficha de
marca por cliente y registro por video en SCRIPTS.md.
- Importada casi como venía; se renombró a
ugc-generatory se adaptó a la convención del repo (frontmatter conlanguage: es, biblioteca de guiones enstyle/guiones.md, "Punto de entrada" al final). - Las fichas de clientes reales NO viajan: la skill traía
fichas/con workspace IDs, dominios y datos comerciales de clientes — quedó solo el template (templates/ficha-marca-template.md) y la ficha vive en la carpeta local de cada cliente. Se anonimizaron también las marcas mencionadas en el cuerpo y en los ejemplos de guiones, con el mismo criterio del barrido de 0.7.x (categoría genérica, aprendizajes técnicos intactos). - Sincronizados los cinco lugares que listan skills:
stack-policy.md,stack-overview(8 → 9 skills),README.md,marketplace.jsonyCLAUDE.md.
0.8.0 — 2026-08-06
Las skills enseñaban un workflow que el MCP no sabía ejecutar. Esta release lo cierra, en los dos sentidos.
Referencias multimodales, cableadas de verdad
ugc-video-prompts documenta desde hace meses que Seedance 2.0 toma "hasta 9
imágenes + 3 videos + 3 audios", y instructions/analysis.md enseña la sintaxis
completa (@video1 as camera movement reference, @audio1 as background music reference), incluido el consejo de que subir un @video de UGC real handheld
es la vía más rápida de pelearle al default commercial.
El MCP solo mandaba imágenes. Ahora acepta reference_video_urls (hasta 3 con
seedance, 1 con omni) y reference_audio_urls (hasta 3, solo seedance) — ver
mkt-agents#232.
- Bug corregido: el call spec de
seedance-multishotdecíareference_image_url(singular). Ese param no existe: esreference_image_urls, un array. La llamada fallaba. Normalizado también en la prosa de examples y checklists, para que el nombre equivocado no siga circulando en el contexto del agente. analysis.mdgana la tabla@Image1/@Video1/@Audio1→ param del MCP, con la regla de que el orden del array numera los@.seedance-multishot5.2 pasa a listar los tres params.
stack-overview al día
- Tabla de modelos con columnas separadas de Img / Video / Audio.
- veo: 4, 6 u 8 segundos — no 4-12. Y 8 obligatorio con 2+ imágenes. (La
skill
ugc-video-promptsya lo decía bien: "8s es hard cap". El código estaba mal, no la skill.) - Último frame (
last_frame_image_url) para veo y kling. - Video de referencia deja de ser "solo omni": seedance es el mejor (3 clips
- 3 audios).
- Extensión de clip: seedance la hace nativa por prompt (
Extend @Video1 by 5s) ahora que se pueden mandar videos. Sin verificar punta a punta — se ofrece como algo a probar, no como garantía. - "No edita video" queda acotado a lo que de verdad no hace: post-producción.
0.7.0 — 2026-08-06
El plugin sale de Claude Code. Dos cambios: el paquete ahora conforma a la spec abierta Agent Plugins 1.0.0, y hay una skill nueva que explica el stack.
Conformidad con Agent Plugins 1.0.0
agent-plugins.org es un estándar abierto y vendor-neutral para empaquetar
skills + MCP servers en un plugin portable (TSC con Amazon, Cursor, Microsoft,
OpenAI y Vercel). El plugin ahora se publica en los dos formatos a la vez:
- Nuevo
plugin.jsonen la raíz — manifiesto conforme al schema cerrado de la spec. Lo específico de Indash vive bajoextensions["ai.indash.stack"]. - Nuevo
mcp.jsonen la raíz — el mismo conectorindash, declarado comostreamable-http(el nombre que usa la spec para lo que Claude Code llamahttp). .claude-plugin/plugin.jsony.mcp.jsonquedan intactos: Claude Code sigue leyendo los suyos. Cada cliente ignora el formato del otro.
Efecto: las 8 skills y el conector indash se pueden instalar en cualquier
cliente conforme (Cursor, Copilot, Codex, Gemini CLI…), no solo en Claude Code.
skills/*/SKILL.md ya cumplía la spec tal cual estaba — no se movió ninguna
skill.
Lo que no es portable: el hook de SessionStart es propio de Claude Code
(la spec no define hooks), así que en clientes conformes la política del stack
no se auto-inyecta. De ahí la skill nueva.
Nueva skill: stack-overview
Responde "¿qué puede hacer esto?" — las 8 skills con su disparador, las 25 tools del conector agrupadas por familia, y las preguntas que venían apareciendo siempre:
- Las skills del plugin NO se actualizan solas (hace falta
/plugin marketplace update indash), a diferencia de las skills del workspace, que se leen en vivo de la cuenta de Indash. - Qué queda en disco vs. qué queda en Indash, y qué hay que subir a mano.
- Imágenes de referencia: sí, en todo, con la tabla de topes por modelo (veo 3, kling 2 —start/end frame—, seedance 9, omni 3, grok-imagine 1).
- Video de referencia: no existe hoy. No hay ninguna tool que acepte video
como entrada — el pipeline es imagen → video. La skill dice explícitamente que
no se invente lo contrario, y ofrece los caminos reales (frames del video como
referencia, describir el movimiento,
add_inspiration). - Qué NO hace el stack: no publica en Meta, no compra medios, no edita video.
Doble función: es también la política del stack para clientes que no ejecutan el hook.
Validador
Chequea la conformidad con la spec ($schema exacto, patrón de name, schema
cerrado, namespaces reverse-domain, transportes válidos) y sobre todo el
drift entre los dos formatos: name/version/description iguales en los
dos manifiestos, versión alineada con marketplace.json, y mismos servers con
mismas URLs en .mcp.json y mcp.json.
0.6.0 — 2026-07-28
El plugin pasa a ser el producto client-facing. Decisión de identidad: esto ya no es "el stack de trabajo interno de Indash" — es lo que le ofrecemos a los clientes para que creen el contenido de su marca ellos mismos: skills + el conector MCP de Indash. Dos cambios grandes:
Un solo conector: indash
Se van del .mcp.json los 4 conectores opcionales (notion, google-drive,
apify, higgsfield). Eran el workflow interno del equipo, y para un cliente
eran puro costo: instalabas el plugin y aparecían 5 servers en /mcp, 4
pidiendo OAuth a servicios de terceros que quizás ni usabas, más las tools
de todos ellos ocupando contexto. Ninguna skill los requería (eran
"opcionales según la tarea" desde la 0.4.0).
- El stack completo funciona con
indashsolo. - Si el usuario tiene sus propios MCPs (Notion, Drive, etc.), las skills los aprovechan como fuentes de contexto — pero nunca los exigen.
- El equipo interno que los quiera los agrega por su cuenta, una vez por
máquina:
claude mcp add --transport http notion https://mcp.notion.com/mcp(ídem los demás), o desde el panel de conectores de claude.ai. - La política del gate ahora gatea solo
indashy trata cualquier otro conector como extra del usuario.
indash pasa a OAuth. Se acabó el INDASH_TOKEN.
El conector se autenticaba con un header Authorization: Bearer ${INDASH_TOKEN}, y eso obligaba a cada usuario a generar una API key en la
app y setear una variable de entorno antes de poder hacer nada. Ahora el
.mcp.json no lleva headers: Claude Code recibe el 401 del server, hace el
discovery por /.well-known, se registra solo y abre el browser. Instalar el
plugin y conectarse es /plugin install + /mcp.
- El token queda guardado y se refresca solo (access 1h, refresh 30d con
rotación). Si caduca,
/mcpofrece Re-authenticate. - Migración: un login único por máquina. Al actualizar a 0.6.0, el
conector deja de mandar el header y todavía no hay token OAuth guardado,
así que Claude Code marca
indashcomo "necesita autenticación" y te avisa al arrancar:/mcp→indash→ login. De ahí en adelante es automático. Después podés borrarINDASH_TOKENde tu~/.zshrco de tusettings.json— ya no se lee. - Nada se rompe solo: las API keys siguen siendo válidas del lado del server. Quien se quede en 0.5.0 sigue funcionando igual, sin fecha de corte.
- La API key sigue existiendo como camino secundario para entornos
headless donde no hay browser (CI efímero). Se registra el server aparte con
claude mcp add --header, nunca en el.mcp.jsondel plugin: un header explícito desactiva el flujo OAuth para todo el mundo.
0.5.0 — 2026-07-27
F4: el plugin es la fuente única de skills. Nuevo core/skills/ con el
canon compartido del stack (prompt-craft con las 7 leyes + EDIT vs GENERATE +
refs por modelo, y los formatos ig-carousel / ig-story / ig-stories-secuencia
/ ig-post). Las default-skills del agente interno de la web (mkt-agents)
pasan a ser copias GENERADAS de acá (script de sync en ese repo). Las
aplicaciones en skills/*/instructions/05_prompt_engineering.md declaran que
core gana ante conflicto. Validador cubre también core/skills/. Regla de
release en core/README.md.
0.4.0 — 2026-07-23
Convención de carpetas unificada (breaking para carpetas existentes). La carpeta de cliente ahora ES un proyecto del Indash Studio — una sola estructura para skills, editor y agente:
brand/logos→assets/logos·brand/typographies→assets/fonts·brand/{assets,brand.md,brand-kit.md}→assets/brand-kit/·productos/→assets/products/·entregables/→exports/· nuevocreatives/(scene graphs del Studio).versions/y.indash/son del Studio (las skills no las tocan).- Las carpetas viejas siguen funcionando pero conviene migrarlas (renames
mecánicos, ver
docs/project-structure.md).
Gate de MCPs honesto: solo indash es requerido; notion/google-drive/
apify/higgsfield pasan a opcionales según la tarea.
Limpieza:
- Fuera los artefactos de distribución standalone (INSTALL.md, install.sh, READMEs con instrucciones de symlink) que contradecían el modelo plugin.
- Fuera el
brands/<cliente>semilla (datos de un cliente real no viajan en el plugin). seedance-multishot: frontmatter estándar en español (era "Cinematografic Video" en inglés con typo), refs rotas a MCP_GAPS_PROPOSAL.md eliminadas.- Nombre viejo
carrusel-nano-banana→carruseles(9 menciones); skill fantasmaindash-b2b-mailneutralizada;skill.md→SKILL.md(case-sensitivity). - Un solo número de versión (plugin.json y marketplace.json decían 0.3.0 y 0.1.0); description del marketplace al día (decía 3 skills, hay 8).
0.3.0 y anteriores
Prehistoria sin changelog (2 commits): estructura inicial + marketplace.