visual-plan
BuilderIO/skills
Convierte los planes de texto en documentos visuales interactivos con diagramas, fragmentos de código y áreas de revisión para los agentes de programación.
...Expandir todoPlanes nativos para agentes
Los planes nativos de agente son un modo de planificación visual estructurado para la programación de agentes. Crea el plan que normalmente escribirías en Markdown, pero como un documento fácil de leer con bloques editables integrados: diagramas en línea, fragmentos de código, preguntas abiertas y un área opcional de revisión visual en la parte superior (lienzo de wireframe, prototipo en vivo o ambos en pestañas). Los planes de arquitectura y backend se mantienen solo en formato de documento; los planes de interfaz de usuario y de producto comienzan con el lienzo o prototipo superior (la sección «Elección de superficie visual» establece esa regla).
/visual-plan es el comando empaquetado y el punto de entrada principal. Elige el modo de revisión
desde la tarea: «UI-first» cuando el trabajo se centre principalmente en la interfaz de usuario del producto y la revisión
deba comenzar con las pantallas; «prototype-first» cuando la revisión deba comenzar con un
prototipo funcional en tiempo real; «design-first» cuando la revisión requiera pantallas con la marca y
alta fidelidad; o «visual-intake» cuando el usuario desee explícitamente un cuestionario antes de
la planificación. Cuando ya existe un Codex, un código Claude, un Markdown o un plan pegado,
/visual-plan utiliza ese plan de origen como punto de partida y construye la superficie de revisión
a partir de él, en lugar de empezar desde cero.
Cuándo utilizarlo
Crea o adapta un plan visual siempre que el plan resulte más adecuado como artefacto revisable que como un párrafo de chat. Esto incluye trabajos modestos, como una única interfaz de usuario con diferentes estados, un pequeño flujo de trabajo, un cambio en el producto «antes/después» o una decisión sobre componentes, API o estructura de datos que requiera coordinación, además de trabajos más amplios que abarquen varios archivos, sean ambiguos, de larga duración, arriesgados o con una interfaz de usuario compleja. Úsalo cuando la arquitectura, el flujo de datos, la orientación de la interfaz de usuario, las opciones o las cuestiones pendientes se beneficien de diagramas integrados o bloques estructurados; cuando el usuario necesite pronunciarse sobre una orientación antes de que la implementes; o cuando un plan de texto existente necesite una superficie de revisión más rica.
Disciplina en la planificación
- Valora cada paso con cuidado. Un plan visual ofrece una superficie de revisión más rica, no es solo una herramienta para proyectos gigantes. Úsalo cuando el usuario necesite ver, comparar, comentar o aprobar una dirección antes de escribir el código, incluso para un cambio modesto en la interfaz de usuario, el estado o el flujo de trabajo . Omítelo para tareas verdaderamente triviales y sin ambigüedades —errores tipográficos, correcciones de una sola línea, una única función bien especificada, cualquier cosa cuyo cambio puedas describir en una secuencia— y simplemente realiza el cambio. Nunca rellenes un plan con contenido superfluo y nunca envíes un plan de un solo paso.
- Investiga antes de redactar el borrador. Lee primero los archivos, acciones, esquemas y
patrones reales; utiliza los nombres reales de los archivos, símbolos y estructuras de datos en lugar de
inventarlos. Comprueba los
actions/antes de proponer puntos finales y da preferencia a los ayudantes de cliente con nombre frente a la recuperación sin procesar. Delega la exploración exhaustiva a un subagente. Prioriza la reutilización: para cada paso, indica qué reutiliza —acciones, esquemas, componentes o ayudantes existentes— antes de lo que añade, de modo que el plan explique el cambio genuinamente nuevo en lugar de volver a describir lo que ya existe. - Decide primero las apuestas difíciles de revertir. Para trabajos no triviales de backend, datos o API , esboza hacia dónde se dirige la funcionalidad y, a continuación, señala las decisiones que resultan costosas de deshacer una vez que los datos o los usuarios que la invocan dependen de ellas —formato de conexión, identificadores públicos, estructura del modelo de datos, límites de autenticación y propiedad— y asegúrate de que estén bien definidas en el plan, incluso si la mayor parte de la funcionalidad se lanza más adelante. A continuación, delimita el alcance al primer corte más pequeño que demuestre el enfoque sin cerrarlo de antemano, indicando tanto lo que se incluye como lo que se aplaza explícitamente.
- Mantén los ejemplos en el nivel adecuado. Cuando la idea del usuario sea un cambio amplio de marco, producto o modelo operativo, no la reduzcas al primer ejemplo concreto, proveedor o ruta de sincronización que mencione. Separa la abstracción básica de los ejemplos motivadores y los adaptadores de aplicaciones o proveedores. Utiliza ejemplos para que el plan resulte legible, pero etiquétalos como ejemplos a menos que constituyan la totalidad del alcance solicitado.
- Publica planes independientes. Si el usuario ha pegado, hecho referencia o ya tiene un plan en Codex, Claude Code o Markdown, trátalo como material de origen, pero reescribe el plan publicado como una propuesta independiente y clara. Conserva la intención útil y los datos del código fuente del plan original, indica que los elementos visuales son «deducidos» y evita expresiones propias de una revisión como «conservar el plan anterior», «no descartar la antigua idea», «a diferencia de la versión anterior» o «esta revisión cambia...». Un lector que no haya visto nunca el chat ni los borradores anteriores debería entender el plan.
- Haz que la primera lectura sea concreta. Si el plan está destinado a compartirse con alguien ajeno al chat, o si el concepto es abstracto, empieza casi al principio con un ejemplo concreto de producto antes de las tablas de modos, la arquitectura o las hojas de ruta. Para conceptos relacionados con la interfaz de usuario, eso suele significar un estado de la aplicación en el lienzo superior que muestre el flujo de trabajo real del usuario en términos de producto. No recurras a frases que solo tengan sentido en una conversación, y no plantees el plan como «no es la idea anterior»; expón el modelo positivo directamente.
- La planificación es de solo lectura. No realices modificaciones en el código fuente mientras elaboras o revisas el plan. Empieza a editar solo después de que el usuario apruebe la dirección.
- Aclara en lugar de dar por sentado. No preguntes cómo construirlo: explora y presenta el
enfoque y las opciones en el plan. Haz una pregunta aclaratoria solo cuando una
ambigüedad pueda alterar el diseño y no puedas resolverla a partir del código; utiliza
el flujo habitual del agente anfitrión para formular preguntas al usuario y agrupa entre 2 y 4 preguntas de gran impacto
antes de finalizar. No recurras
create-visual-questionspara aclaraciones rutinarias o comprobaciones previas; resérvalo para el modo de recopilación visual cuando el usuario solicite explícitamente un cuestionario de recopilación visual. De lo contrario, expón la suposición de forma explícita y continúa, y mantén cualquier asunto sin resolver en el único bloque inferiorquestion-form«Preguntas abiertas» del plan. Para planes complejos, realiza una revisión final de las preguntas abiertas antes del traspaso: si una decisión afectara a la arquitectura, el alcance, la experiencia de usuario, la estructura de los datos o la implementación, o bien decídela en el plan con una justificación, o bien inclúyela en ese formulario inferior con un valor predeterminado recomendado. - El plan es la puerta de aprobación. Tras presentarlo, pide al usuario que lo revise y apruebe antes de escribir código, y especifica qué archivos o áreas afecta el trabajo. Presentar el plan y solicitar la aprobación es el paso de aprobación; no hagas una pregunta aparte del tipo «¿te parece bien?».
- El documento es la fuente de verdad, no el chat. Cuando cambie el alcance,
actualiza el plan con
update-visual-planen lugar de limitarte a cambiar de rumbo en el chat, y haz que el documento actualizado sea autónomo. No describas la actualización como una corrección de un borrador anterior dentro del propio plan. Vuelve a leer el plan aprobado antes de dar pasos importantes.
Crea un plan estructurado nativo del agente — nunca en línea
El resultado final es SIEMPRE un plan estructurado nativo del agente, no un plan basado únicamente en el chat.
El conector MCP del plan alojado (plan servidor o heredado agent-native-plans) es
el espacio predeterminado para la colaboración y los comentarios; no es motivo para rechazar
el patrón de planificación por considerarlo una dependencia externa o una capa alquilada. Los planes son
artefactos de código fuente portátiles (plan.mdx, con exportación opcional canvas.mdx /
prototype.mdx, exportación a JSON y HTML), y los flujos de trabajo sensibles a la propiedad pueden
utilizar el modo de archivos locales o una URL de aplicación de Plan autohospedada o personalizada sin abandonar la
disciplina de revisión de la skill. No aconsejes al usuario que se salte /visual-plan por el hecho de que
la superficie predeterminada esté alojada; elige el modo de Plan adecuado según las
necesidades del usuario en materia de propiedad, privacidad, uso compartido e imagen de marca.
Por defecto, crea el plan a través del conector Plan MCP y NUNCA lo facilites como
contenido incrustado en el chat: ni texto en Markdown, ni bocetos en ASCII, ni tablas, ni
esquemas delimitados. Si el plan (o las herramientas heredadas agent-native-plans) no están visibles,
búscalas primero a través del tool_search ; si siguen sin aparecer,
DETENTE y proporciona al usuario los pasos de reconexión específicos del cliente en lugar de improvisar
un plan en línea. Antes de publicar, o siempre que aparezca un error de conector o de autenticación,
LEE references/connection.md este directorio de habilidades: es la única fuente
fidedigna para la regla de «nunca en línea», la detección de conectores y los
pasos de reconexión específicos para cada cliente. El modo de privacidad de archivos locales (tras la «Orientación sobre herramientas») es la excepción.
Flujo de trabajo principal
Esta sección describe el flujo de trabajo predeterminado de Plan MCP alojado. Si
AGENT_NATIVE_PLANS_MODE=local-files está activado, o si el usuario solicita archivos totalmente locales
sin escrituras en el Plan alojado, utiliza en su lugar el modo de privacidad de archivos locales; aplica
solo las directrices de investigación de código y composición del plan que se indican aquí.
- Sigue el flujo de planificación habitual del agente anfitrión: inspecciona el código fuente, delega una exploración amplia cuando sea útil, recopila la información necesaria y formula preguntas aclaratorias específicas según sea necesario antes de generar el plan. Si ya existe un plan de origen, recopila su texto exacto del pegado del usuario, de un archivo referenciado o del contexto reciente visible del agente; no inventes texto de origen.
- Llama
get-plan-blocksal catálogo de bloques de referencia; no crees a partir de etiquetas memorizadas. A continuación, invoca la herramienta de creación adecuada al modo:create-visual-planpara planes que dan prioridad al documento (arquitectura, backend, datos, refactorización, API),create-ui-planpara planes que dan prioridad a la interfaz de usuario,create-prototype-planpara planes que dan prioridad al prototipo,create-plan-designpara planes que dan prioridad al diseño,create-visual-questionssolo cuando el usuario solicite explícitamente un cuestionario visual de recopilación de información. Cuando ya exista un plan de origen, pásalo comoplanTexty conserva la intención útil del plan original al tiempo que elaboras un documento de plan independiente, no una nota de revisión. - Para los planes de interfaz de usuario/producto, elabora primero el lienzo superior con los
esquemas funcionales principales y los estados anotados; a continuación, redacta el documento con bloques nativos
(véase
references/canvas.mdyreferences/document-quality.md). Para planes generales de arquitectura de producto con implicaciones para el usuario, añade una imagen concreta que muestre «cómo se ve esto en la aplicación» antes de la arquitectura abstracta o las tablas de modos. Mantén el documento lo más cercano posible al plan en Markdown independiente que el agente generaría normalmente. Si se ha proporcionado un plan existente, mantén los datos y decisiones pertinentes sin hacer referencia al borrador anterior ni explicar en qué difiere esta versión. Para los planes no visuales, omite la superficie visual superior (la «Elección de superficie visual» que se indica a continuación establece la regla) y colocadiagram,data-model,api-endpoint,diff,file-tree,code, yannotated-codebloques directamente junto al texto correspondiente. El diseño ancho del documento es competencia del renderizador y está incluido intencionadamente en la lista de permitidos: solo las superficies literales de revisión de código (diff,annotated-code) ytabslos bloques con orientación vertical o con elementos secundarios tipo «diff» se extienden más allá del texto. Manténapi-endpoint,openapi-spec,data-model,json-explorer,wireframe, pregunta ycustom-htmlbloques en el flujo normal del documento, a menos que su propio renderizador indique lo contrario. - Muestra el enlace «Planes» devuelto o la aplicación MCP en línea y pide al usuario que lo revise. Incluye siempre la URL real en el chat para que el siguiente paso sea un clic en la CLI u otros hosts de solo texto. Cuando el host muestre un navegador integrado o un panel de vista previa y una herramienta pueda abrir allí URL arbitrarias, abre automáticamente la URL del plan devuelta para facilitar la revisión: una prueba de conveniencia y de funcionamiento básico, nunca el único método de transferencia ni el modelo de acceso . Los planos deberían cargarse de forma predeterminada para el agente local y la sesión del navegador local; si un navegador integrado en el que se ha iniciado sesión no puede leer un plano local que sí puede leer una comprobación anónima o mediante una herramienta, corrige la propiedad de la aplicación o la acción, o la ruta de acceso, en lugar de modificar un plano manualmente. Para los planes de alto riesgo (arquitectura, backend, datos, con varios archivos o arriesgados), inicia también la ronda de autorrevisión en «Autorrevisión antes del traspaso» mientras el usuario lee, en lugar de bloquear el traspaso por ello.
- En el caso de los planes alojados, llama a
get-plan-feedbackantes de editar, tras la revisión, tras cualquier pausa prolongada y antes de la respuesta final. ConsideraanchorDetails, la intención del resolutor, los eventos de revisión recientes y cualquier captura de pantalla específica del traspaso del navegador como la fuente de verdad sobre qué ha cambiado exactamente y a qué se refiere exactamente cada comentario. - En los planes alojados, aplica los cambios con
update-visual-plan, dando preferencia a los ajustes específicoscontentPatches. Considera lacontentcomo una sustitución completa, no como una fusión; no envíes un objeto parcialcontentpara añadir un lienzo o un bloque. Si una sustitución completa es inevitable, lee primero el código fuente o el contenido completo del plan, transfiere todos los bloques y superficies visuales existentes, y verifica el código fuente o la exportación posteriormente para asegurarte de que el cuerpo del documento no se haya truncado. Cuando el usuario desee ediciones compatibles con el control de código fuente, utilizapatch-visual-plan-sourcelos archivos MDX en lugar de volver a generar el plano. - En el caso de los planes alojados, exporta con
export-visual-plansolo cuando el usuario desee un recibo que se pueda compartir o artefactos para el registro en el repositorio.
Revisión propia antes de la entrega
En el caso de planes de alto riesgo —arquitectura, backend, modelo de datos, migración, planes con varios archivos o cualquier otro trabajo arriesgado—, realiza una revisión interna crítica antes de dar por definitivo el plan. Omítela en el caso de planes pequeños, que solo afecten a la interfaz de usuario o que impliquen una única decisión, en los que el coste supere el valor. Haz que la revisión sea sencilla y no bloquee el proceso:
- Presenta primero el plan y revísalo al mismo tiempo. Publica el enlace y deja que el usuario empiece a leer; a continuación, realiza la revisión en paralelo: nunca hagas esperar al usuario.
- Revisa el plan escrito; no vuelvas a investigar. Critica el texto del plan y sus propios bloques. La base ya se ha sentado durante la redacción, por lo que la revisión comprueba el resultado en lugar de volver a explorar el repositorio.
- Nombra a un revisor escéptico cuya única tarea sea encontrar lo que es débil, lo que falta o lo que está mal —no elogiar—. Haz que se centre en: decisiones difíciles de revertir tomadas de forma implícita o que no se han tomado en absoluto (formato de cableado, identificadores públicos, forma del modelo de datos, autenticación, propiedad); pasos que no se basan en archivos o símbolos reales; un menú de opciones en el que el plan debería comprometerse con una sola; decisiones obvias que faltan («¿qué pasa cuando X?», «¿por qué no Y?»); y relleno o pasos innecesarios.
- Corregir frente a preguntar. Aplica tú mismo soluciones claras con
update-visual-plancontentPatches— objetivos vagos e indefinidos, afirmaciones sin fundamento, una decisión que falta de forma evidente. En cambio, remite las decisiones que requieran un juicio genuino al usuario: añádelas al bloque dequestion-form«Preguntas abiertas» o agrúpalas en el flujo habitual de preguntas al usuario. No las decidas en silencio. - No sorprendas al usuario en mitad de la lectura. En un plan de gran envergadura, aplica los parches antes de que se cargue el editor; de lo contrario, indica brevemente que se está ejecutando una autorrevisión, por lo que es de esperar que el plan cambie mientras se realiza. Cuando respondas a continuación, resume qué ha cambiado la revisión y qué cuestiones ha sacado a la luz para que el usuario decida.
Elección de la interfaz visual
Elige la superficie antes de crear el plan o después de leer el plan original. No añadas elementos visuales por defecto:
En los planes de interfaz de usuario o de producto, el lienzo superior suele ser la superficie de revisión principal. Coloca
ahí los primeros esquemas funcionales significativos, en lugar de ocultarlos como bloques en el cuerpo del documento. Utiliza
varias mesas de trabajo cuando los estados sean relevantes, como la vista predeterminada, un
menú desplegable o una ventana emergente, un panel lateral, la carga o un error. Coloca anotaciones breves
junto a los marcos con targetId más placement; mantén los detalles de implementación,
las compensaciones, los mapas de archivos, los contratos de datos, los riesgos y la verificación en el
cuerpo del documento, debajo del lienzo.
Cuando el usuario solicite un flujo, un guion gráfico, un recorrido, un esquema, un lienzo o «cómo
se ve esto», trátalo como una solicitud en la que prima el lienzo. Crea una mesa de trabajo por
cada estado visible para el usuario, conecta solo las transiciones adyacentes y utiliza breves
anotaciones en el lienzo para las notas del producto. No sustituyas un bloque del cuerpo del documento diagram
por el guion gráfico solicitado solo porque los diagramas HTML son más rápidos de
escribir; los diagramas deben ir debajo del lienzo para explicar la mecánica del backend, la arquitectura o
el flujo de datos.
Mantén separados los esquemas funcionales del producto y los diagramas explicativos o meta. Empieza con pantallas puras que se parezcan al estado de la aplicación que se está debatiendo, sin texto explicativo ni notas de arquitectura integradas en la interfaz de usuario. Coloca flechas, etiquetas, contratos, flujo de datos y explicaciones de modos en anotaciones separadas, diagramas de lienzo independientes o en el cuerpo del documento.
Cuando el plan afecte a una aplicación existente, examina la estructura y los componentes actuales antes de dibujar. La primera mesa de trabajo debe parecerse a la aplicación real con la misma densidad: las barras laterales existentes, la ubicación de la barra de herramientas, los menús de desbordamiento, los elementos de interfaz de la aplicación y los elementos de interfaz del marco de trabajo deben permanecer en sus ubicaciones reales. Modela las superficies secundarias como estados independientes, tales como un popover de desbordamiento en la esquina superior derecha, una hoja, un panel, un estado de carga o una «AgentSidebar» independiente, en lugar de inventar un inspector permanente o integrar los elementos de interfaz del marco de trabajo en la interfaz de usuario del producto.
- No se deben utilizar superficies visuales para planes que sean exclusivamente de arquitectura, de backend, de migración de datos, de texto únicamente o de cualquier otro tipo no visual. No utilices el lienzo superior para diagramas de arquitectura, mapas de dependencias, planes de archivos, contratos de API o revisiones que se centren únicamente en el flujo de datos. Utiliza un documento sólido con diagramas locales en línea solo cuando las relaciones necesiten una explicación visual; por lo general, un diagrama espacial por recomendación o decisión. Da preferencia a regiones agrupadas, capas, cuadrantes, matrices o paneles de «antes/después» frente a una cadena de un solo eje, a menos que la relación sea verdaderamente secuencial.
- Utiliza el lienzo únicamente para una pantalla estática, una comparación «antes/después», el
estado de un componente, un pequeño popover o una indicación visual que no requiera hacer clic.
Incluye esos esquemas de estructura
content.canvasy omitecontent.prototype. - Canvas + prototipo para flujos de interfaz de usuario de varios pasos, procesos de incorporación, asistentes,
flujos de revisión/aprobación, cambios de navegación o cualquier situación en la que el revisor
tenga que poner en práctica el comportamiento. Mantén los esquemas estáticos en
content.canvas, añade el prototipo funcional alineado encontent.prototypey utiliza las pestañas visuales superiores para alternar entre ellas. - Da prioridad al prototipo cuando el usuario pida manejar la interfaz de usuario o cuando la interacción sea
la cuestión principal. Utiliza
create-prototype-plan, que sigue conservando las maquetas estáticas cuando resulta útil.
Para planes mixtos de lienzo + prototipo, reutiliza las mismas etiquetas reales, estados de la aplicación e identificadores de pantalla en ambas superficies. El lienzo es la referencia estática que se puede inspeccionar; el prototipo es la versión interactiva de ese mismo flujo, no una dirección de diseño independiente.
Calidad de los esquemas funcionales: lee references/wireframe.md
los esquemas de resumen o planificación de la interfaz de usuario deben cumplir unos estrictos criterios de calidad: marco de ancho completo,
barras inferiores fijadas, contenido real del producto, comparabilidad antes/después, el
surface preajuste, --wf-* tokens en lugar de códigos hexadecimales, y sin /
---
name: visual-plan
description: Transform text plans into interactive visual documents with diagrams, code snippets, and review surfaces for coding agents.
---
# Agent-Native Plans
Agent-Native Plans is structured visual planning mode for coding agents. Build
the plan you would normally write in Markdown, but as a scannable document with
editable blocks mixed in: inline diagrams, code snippets,
open questions, and an optional top visual review area (wireframe canvas, live
prototype, or both in tabs). Architecture and backend plans stay document-only;
UI and product plans start with the top canvas/prototype (the Visual Surface
Choice section owns that rule).
`/visual-plan` is the packaged command and main entry point. Choose the review
mode from the task: UI-first when the work is primarily product UI and review
should start with screens, prototype-first when review should start with a
functional live prototype, design-first when review needs full-fidelity branded
screens, or visual-intake when the user explicitly wants a questionnaire before
planning. When a Codex, Claude Code, Markdown, or pasted plan already exists,
`/visual-plan` uses that source plan as the starting point and builds the review
surface from it instead of starting over.
## When To Use
Create or adapt a visual plan whenever the plan would be better as a reviewable
artifact than a chat paragraph. This includes modest work such as a single UI
surface with states, a small workflow, a before/after product change, or a
component/API/data-shape decision that needs alignment, plus larger multi-file,
ambiguous, long-running, risky, or UI-heavy work. Use it when architecture /
data flow / UI direction / options / open questions would benefit from inline
diagrams or structured blocks, when the user needs to react to a direction
before you implement, or when an existing text plan needs a richer review
surface.
## Plan Discipline
- **Gate thoughtfully.** A visual plan is a richer review surface, not only a
tool for giant projects. Use it when the user needs to see, compare, comment
on, or approve a direction before code, even for a modest UI/state/workflow
change. Skip it for truly trivial, unambiguous work — typos, one-line fixes, a
single well-specified function, anything whose diff you could describe in one
sentence — and just make the change. Never pad a plan with filler and never
ship a single-step plan.
- **Research before you draft.** Read the real files, actions, schema, and
patterns first; name actual files, symbols, and data shapes instead of
inventing them. Check existing `actions/` before proposing endpoints and prefer
named client helpers over raw fetch. Delegate wide exploration to a sub-agent.
Lead with reuse: for each step, name what it reuses — existing actions, schema,
components, helpers — before what it adds, so the plan explains the genuinely new
delta instead of redescribing what already exists.
- **Decide the hard-to-reverse bets first.** For non-trivial backend, data, or API
work, sketch where the feature is headed, then call out the decisions that are
expensive to undo once data or callers depend on them — wire format, public ids,
data-model shape, auth and ownership boundaries — and get those right in the plan
even if most of the feature ships later. Then scope to the smallest first cut that
proves the approach without foreclosing it, stating both what is in and what is
explicitly deferred.
- **Keep examples at the right altitude.** When the user's idea is a broad
framework, product, or operating-model change, do not collapse it into the
first concrete example, provider, or sync path they mention. Separate the core
abstraction from motivating examples and app/provider adapters. Use examples
to make the plan legible, but label them as examples unless they are the whole
requested scope.
- **Publish standalone plans.** If the user pasted, referenced, or already has a
Codex / Claude Code / Markdown plan, treat it as source material, but rewrite
the published plan as a clean standalone proposal. Preserve the source plan's
useful intent and codebase facts, label inferred visuals as inferred, and avoid
revision language such as "preserve the prior plan", "do not drop the old
idea", "unlike the previous version", or "this revision changes...". A reader
who never saw the chat or earlier drafts should understand the plan.
- **Make the first read concrete.** If the plan is meant to be shared with
someone outside the chat, or if the concept is abstract, lead near the top with
one concrete product example before mode tables, architecture, or roadmaps. For
UI-capable concepts, that usually means a top-canvas app state that shows the
real user workflow in product terms. Do not rely on phrases that only make
sense in conversation, and do not frame the plan as "not the old idea"; state
the positive model directly.
- **Planning is read-only.** Make no source edits while building or reviewing the
plan. Start editing only after the user approves the direction.
- **Clarify vs. assume.** Do not ask how to build it — explore and present the
approach and options in the plan. Ask a clarifying question only when an
ambiguity would change the design and you cannot resolve it from the code; use
the host agent's normal ask-user-question flow and batch 2-4 high-leverage
questions before finalizing. Do not call `create-visual-questions` for
ordinary clarification or preflight; reserve it for the visual-intake mode when
the user explicitly asks for a visual intake questionnaire. Otherwise state the
assumption explicitly and proceed, and keep anything unresolved in the plan's
single bottom `question-form` Open Questions block. For complex plans, do a
final open-question pass before handoff: if a decision would affect
architecture, scope, UX, data shape, or rollout, either decide it in the plan
with rationale or put it in that bottom form with a recommended default.
- **The plan is the approval gate.** After surfacing it, ask the user to review
and approve before you write code, and name which files/areas the work touches.
Presenting the plan and requesting sign-off is the approval step — do not ask a
separate "does this look good?" question.
- **The document is the source of truth, not the chat.** When scope shifts,
update the plan with `update-visual-plan` rather than only changing course in
chat, and make the updated document stand alone. Do not describe the update as
a correction to an earlier draft inside the plan itself. Re-read the approved
plan before major steps.
## Create A Structured Agent-Native Plan — Never Inline
The deliverable is ALWAYS a structured Agent-Native Plan, not a chat-only plan.
The hosted Plan MCP connector (`plan` server, or legacy `agent-native-plans`) is
the default collaboration and commenting surface; it is not a reason to reject
the planning pattern as an external dependency or rented layer. Plans are
portable source artifacts (`plan.mdx`, optional `canvas.mdx` /
`prototype.mdx`, JSON, and HTML export), and ownership-sensitive workflows can
use local-files mode or a self-hosted/custom Plan app URL without abandoning the
skill's review discipline. Do not advise the user to skip `/visual-plan` because
the default surface is hosted; choose the right Plan mode for the user's
ownership, privacy, sharing, and branding needs.
By default, create the plan via the Plan MCP connector and NEVER hand it over as
inline chat content — no Markdown prose, ASCII sketch, table, or fenced
wireframe. If the `plan` (or legacy `agent-native-plans`) tools are not visible,
discover them through the host's `tool_search` first; if they are still missing,
STOP and give the user the client-specific reconnect step rather than improvising
an inline plan. Before publishing, or whenever a connector or auth error appears,
READ `references/connection.md` in this skill directory — it is the single source
of truth for the never-inline rule, connector discovery, and the per-client
reconnect steps. Local-files privacy mode (after Tool Guidance) is the exception.
## Core Workflow
This section describes the default hosted Plan MCP workflow. If
`AGENT_NATIVE_PLANS_MODE=local-files` is set, or the user asks for fully local
files/no hosted Plan writes, use **Local-Files Privacy Mode** instead; carry
forward only the code-research and plan-composition guidance here.
1. Follow the host agent's normal planning flow: inspect the codebase, delegate
wide exploration when useful, gather the info needed, and ask native
clarifying questions as needed before generating the plan. If a source plan
already exists, gather its exact text from the user's paste, a referenced
file, or recent visible agent context; do not invent source text.
2. Call `get-plan-blocks` for the authoritative block catalog — do not author
from memorized tags. Then call the mode-matched create tool:
`create-visual-plan` for document-first plans (architecture, backend, data,
refactor, API), `create-ui-plan` for UI-first plans, `create-prototype-plan`
for prototype-first plans, `create-plan-design` for design-first plans,
`create-visual-questions` only when the user explicitly asks for a visual
intake questionnaire. When a source plan already exists,
pass it as `planText` and preserve the original plan's useful intent while
producing a standalone plan document, not a revision memo.
3. For UI/product plans, compose the top canvas first with the primary
wireframes and annotated states, then write the document with native blocks
(see `references/canvas.md` and `references/document-quality.md`). For
broad product architecture plans with a user-facing implication, add a
concrete "what this looks like in the app" visual before the abstract
architecture or mode tables. Keep the document close to the standalone
Markdown plan the agent would normally output. If an existing plan was
provided, carry forward the right facts and decisions without referring to
the previous draft or explaining how this version differs. For non-visual
plans, skip the top visual surface (Visual Surface Choice below owns the rule)
and put `diagram`, `data-model`,
`api-endpoint`, `diff`, `file-tree`, `code`, and `annotated-code` blocks
directly next to the relevant prose.
Wide document layout is renderer-owned and intentionally allowlisted: only
literal code-review surfaces (`diff`, `annotated-code`) and `tabs` blocks
with vertical orientation or diff-like children break out wider than prose.
Keep `api-endpoint`, `openapi-spec`, `data-model`, `json-explorer`,
`wireframe`, question, and `custom-html` blocks in normal document flow unless
their own renderer says otherwise.
4. Surface the returned Plans link or inline MCP App and ask the user to review.
Always include the actual URL in chat so the next step is a click in CLI or
other text-only hosts. When the host exposes an embedded browser/preview panel
and a tool can open arbitrary URLs there, open the returned plan URL
automatically for convenient review — a convenience and smoke test, never the
only handoff or the access
model. Plans should load out of the box for the local agent and local browser
session; if a signed-in embedded browser cannot read a local plan that an
anonymous/tool check can read, fix the app/action ownership or access path
rather than patching one plan by hand. For high-stakes plans (architecture,
backend, data, multi-file, or risky), also kick off the self-review pass in
**Self-Review Before Handoff** while the user reads, instead of blocking the
handoff on it.
5. For hosted plans, call `get-plan-feedback` before editing, after review,
after any long pause,
and before the final response. Treat `anchorDetails`, resolver intent, recent
review events, and any focused screenshots from browser handoff as the source
of truth for exactly what changed and exactly what each comment points at.
6. For hosted plans, apply changes with `update-visual-plan`, preferring
targeted `contentPatches`.
Treat the top-level `content` payload as a full replacement, not a merge; do
not send a partial `content` object to add a canvas or one block. If a full
replacement is unavoidable, first read the complete plan source/content, carry
forward every existing block and visual surface, and verify the source/export
afterward so the document body was not truncated. When the user wants
source-control friendly edits, use `patch-visual-plan-source` against the MDX
files instead of regenerating the plan.
7. For hosted plans, export with `export-visual-plan` only when the user wants a
shareable receipt or repo-check-in artifacts.
## Self-Review Before Handoff
For high-stakes plans — architecture, backend, data-model, migration, multi-file,
or otherwise risky work — run one adversarial self-review pass before treating the
plan as final. Skip it for small, UI-only, or single-decision plans where the cost
outweighs the value. Keep the pass cheap and non-blocking:
- **Surface the plan first, review concurrently.** Post the link and let the user
start reading, then run the review in parallel — never make the user wait on it.
- **Review the written plan; do not re-research.** Critique the plan text and its
own blocks. The grounding was already done while drafting, so the review checks
the output instead of re-exploring the repo.
- **Spawn one skeptical reviewer** whose only job is to find what is weak, missing,
or wrong — not to praise. Point it at: hard-to-reverse decisions made implicitly
or not at all (wire format, public ids, data-model shape, auth, ownership); steps
not anchored in real files or symbols; a menu of options where the plan should
commit to one; obvious missing decisions ("what happens when X?", "why not Y?");
and padding or single-step filler.
- **Fix vs. ask.** Apply clear-cut fixes yourself with `update-visual-plan`
`contentPatches` — vague non-goals, unanchored claims, an obvious missing
decision. Route genuine judgment calls back to the user instead: add them to the
bottom `question-form` Open Questions block or batch them into the normal
ask-user-question flow. Do not silently decide them.
- **Do not surprise the user mid-read.** On a large plan, apply the patches before
the editor loads; otherwise note briefly that a self-review is running so the
plan changing under them is expected. When you next respond, summarize what the
review changed and what it surfaced for the user to decide.
## Visual Surface Choice
Choose the surface before creating the plan or after reading the source plan. Do
not add visual chrome by default:
For UI/product plans, the top canvas is usually the primary review surface. Put
the first meaningful wireframes there, not buried as document-body blocks. Use
multiple canvas artboards when states matter, such as the default view, an
overflow menu or popover, a side panel, loading, or error. Put short annotations
beside frames with `targetId` plus `placement`; keep implementation details,
tradeoffs, file maps, data contracts, risks, and verification in the document
body below the canvas.
When the user asks for a flow, storyboard, journey, wireframe, canvas, or "what
this looks like", treat that as a canvas-first request. Make one artboard per
user-visible state, connect only adjacent transitions, and use short canvas
annotations for the product notes. Do not substitute a document-body `diagram`
block for the requested storyboard just because HTML diagrams are faster to
write; diagrams belong below the canvas for backend mechanics, architecture, or
data-flow explanation.
Keep product wireframes and explanatory/meta diagrams separate. Start with pure
screens that look like the app state under discussion, without callout prose or
architecture notes embedded inside the UI. Put arrows, labels, contracts, data
flow, and mode explanations in separate annotations, separate canvas diagrams,
or the document body.
When the plan touches an existing app, inspect the current shell/components
before drawing. The first artboard should look like the real app at the same
density: existing sidebars, toolbar placement, overflow menus, app chrome, and
framework agent chrome stay in their real places. Model secondary surfaces as
separate states, such as a top-right overflow popover, sheet, panel, loading
state, or separate AgentSidebar, rather than inventing a permanent inspector or
folding framework chrome into the product UI.
- **No visual surface** for architecture-only, backend-only, data migration,
copy-only, or otherwise non-visual plans. Do not use the top canvas for
architecture diagrams, dependency maps, file plans, API contracts, or
data-flow-only reviews. Use a strong document with local inline diagrams
only when relationships need a visual explanation, usually one spatial diagram
per recommendation or decision. Prefer grouped regions, layers, quadrants,
matrices, or before/after panels over a single-axis chain unless the
relationship is truly sequential.
- **Canvas only** for one static screen, a before/after comparison, a component
state, a small popover, or a visual direction that does not require clicking.
Put those wireframes in `content.canvas` and omit `content.prototype`.
- **Canvas + prototype** for multi-step UI flows, onboarding, wizards,
review/approval flows, navigation changes, or anything where the reviewer
needs to operate the behavior. Keep the static wireframes in
`content.canvas`, add the aligned functional prototype in
`content.prototype`, and rely on the top visual tabs to switch between them.
- **Prototype-first** when the user asks to operate the UI or when interaction is
the main question. Use `create-prototype-plan`, which still preserves static
mocks where useful.
For mixed canvas + prototype plans, reuse the same real labels, app statuses,
and screen ids across both surfaces. The canvas is the inspectable static reference;
the prototype is the interactive version of that same flow, not a separate
design direction.
## Wireframe quality — read `references/wireframe.md`
UI recap/plan wireframes must meet a strict quality bar — full-width chrome,
pinned bottom bars, real product content, before/after comparability, the right
`surface` preset, `--wf-*` tokens instead of hex, and no `<html>`/`<style>`/font
tags. Before authoring ANY wireframe / `<Screen>` / `WireframeBlock`, READ
`references/wireframe.md` in this skill directory — it is the single source of
truth for HTML wireframe quality, shared word for word with `/visual-plan`
and `/visual-recap`. Do not author wireframes from memory.
## Canvas — read `references/canvas.md`
The canvas is the single source of truth for static UI mockups: the `surface`
locks each artboard's footprint, mixed surfaces lay out
in lanes, annotations are plain-text designer notes anchored by
`targetId`/`placement`, and edits are surgical `contentPatches`. Before
authoring or editing ANY canvas, artboard, or annotation, READ
`references/canvas.md` in this skill directory — it is the single source of truth
for canvas/artboard mechanics. Do not author canvas layouts from memory.
Canvas artboards use the same HTML wireframe path as document-body
`WireframeBlock` screens: author `<Screen surface="..." html={...} />` with a
semantic HTML fragment. Do not author fresh kit-tree children such as
`<FrameScreen>`, `<Card>`, `<Row>`, or `<Btn>` inside canvas `<Screen>` tags;
those are legacy compatibility markup for old plans and produce brittle canvas
layouts.
## Document quality — read `references/document-quality.md`
The document is a serious technical plan, not marketing: outcome-first,
prose-first, self-contained, built from the right native blocks, with open
questions in a single bottom `question-form` and a pre-handoff visual check.
Before authoring the plan document, READ `references/document-quality.md` in this
skill directory — it is the single source of truth for the document quality bar.
Do not write the document from memory.
## Good vs. bad exemplar — read `references/exemplar.md`
For a worked example of the bar — a great UI-first plan and `/visual-plan`, plus
the anti-patterns to avoid — READ `references/exemplar.md` in this skill
directory before authoring a plan.
## Tool Guidance
- `create-visual-plan`: start one structured visual plan per agent task/run, or
import an existing text plan by passing `planText`; `content` may include no
visual surface, canvas only, or canvas + prototype.
- `create-ui-plan`: start a UI-first plan when the work is primarily product UI.
- `create-prototype-plan`: start a prototype-first plan with a functional top
review surface.
- `create-plan-design`: start a full-fidelity branded Design-tab plan with an
optional matching Prototype tab.
- `convert-visual-plan-to-prototype`: convert an existing HTML wireframe canvas
into a prototype plan.
- `create-visual-questions`: use only when the user explicitly asks for a visual
intake questionnaire, not as `/visual-plan` preflight.
- `update-visual-plan`: revise content, status, or comments with targeted
`contentPatches` (see Core Workflow step 6).
- `read-visual-plan-source`: read the normalized plan as `plan.mdx`,
optional `canvas.mdx`, optional `.plan-state.json`, and JSON.
- `patch-visual-plan-source`: apply granular MDX AST patches by stable block,
artboard, annotation, component, or wireframe-node id.
- `import-visual-plan-source`: create or replace a plan from an MDX folder.
- `get-visual-plan`: read the current structured plan, exported HTML, and
annotations; it also returns the MDX folder for source workflows.
- `get-plan-feedback`: read unconsumed human feedback. Use it frequently; it
returns grouped threads, exact anchor details, expected resolver, and recent
review-event payloads so agents can act only on the comments meant for them.
- `get-plan-blocks`: resolve block tags before authoring — do not memorize tags;
call this first to get the authoritative tag names, required fields, and prop
shapes from the live block registry.
- `export-visual-plan`: export HTML, Markdown fallback, structured JSON, and MDX
files for repo check-in.
When the user critiques a plan's look or structure, fix the renderer or this
skill — never hand-edit one stored plan. Turn feedback into better guidance.
## Local-Files Privacy Mode — read `references/local-files.md`
When the user wants no hosted Plan database writes — no DB writes, no Plan MCP
publish, fully local/offline/private planning, repo-owned source-controlled
artifacts, or `AGENT_NATIVE_PLANS_MODE=local-files` — do not call any hosted Plan
tool except the schema-only `get-plan-blocks` catalog lookup. Author a local MDX
folder and
preview it with `plan local check` / `plan local serve` / `plan local verify`.
Before using local-files mode, READ `references/local-files.md` in this skill
directory — it is the single source of truth for the full contract (catalog
lookup, MDX folder layout, the local bridge commands, and the hosted tools you
must not call). Carry forward only the code-research and plan-composition
guidance from Core Workflow; everything hosted is replaced by the local bridge.
## Interpreting comment anchors
This section applies to hosted plans with `get-plan-feedback` /
`update-visual-plan`. In local-files mode, do not call hosted feedback or update
tools; interpret file/chat feedback directly, edit the MDX files, rerun the
local bridge check/serve/verify command, and report the new local URL.
`get-plan-feedback` returns rich anchors — read them before acting on any comment.
- **Coordinate frames.** `targetX`/`targetY` are percentages *within* the
element named by `targetSelector`/`targetKind`. Bare `x`/`y` are percentages
of the whole plan document. `canvasX`/`canvasY` are raw board-world pixels on
the design canvas (board size given when available).
- **Wireframe pins.** Anchors on wireframes include `targetNodeId` and
`targetNodePath` (e.g. `card > list > listItem "Acme Inc"`) identifying the
exact kit node. Use `targetNodeId` directly with wireframe node patch ops;
use `data-design-id` values from design artboards with
`update-design-element-style`. Prefer the node id/path over raw coordinates;
fall back to coordinates plus the focused screenshot (red ring marks the exact
point) only when no node id is present.
- **Text quotes.** Resolve `textQuote` against current prose using
`contextBefore`/`contextAfter` for disambiguation. If `ambiguous: true`, ask
the user — do not guess which occurrence is meant.
- **Detached comments.** `get-plan-feedback` flags threads whose quoted text no
longer exists as `detached` (in `detachedThreads`). Reconcile these against
rewritten content — never silently drop them.
- **Routing.** `resolutionTarget` is the only routing signal: act on `agent`,
treat `human` as context only. `@mentions` are people to notify, never a
routing signal.
- **Two-axis state.** Mark every ingested comment as consumed
(`consumedCommentIds` on `update-visual-plan`). Set `status=resolved` only on
agent-targeted comments you actually addressed; leave human-targeted comments
open.
## Visibility & Sharing
Use `set-resource-visibility` to change who can see a plan (e.g. public, login,
or org-scoped). Use `share-resource` to grant specific users or roles access
by email or role. Gate visibility before sharing any plan that covers
unreleased or private work — default to the narrowest scope that meets the
review need.
## Setup & Authentication
There are two ways into Plans.
**Coding agent (CLI).** Install once with the Agent-Native CLI. The command
installs the Plans skills, registers the hosted Plans MCP connector, and runs
auth/setup for the selected local client(s) in the same step (a one-time browser
sign-in at setup — this is intended), so the first tool call in that client does
not hit an OAuth wall:
```bash
npx @agent-native/core@latest skills add visual-plans
```
After that, `/visual-plan` and `/visual-recap` are the two installed slash
commands. If you only need one command, use `skills add visual-plan` or
`skills add visual-recap` instead. The other planning modes
(`create-ui-plan`, `create-prototype-plan`, `create-plan-design`,
`create-visual-questions`) are MCP tools reachable from `/visual-plan`, not
separate slash commands. Pass `--no-connect` to register the connector without
authenticating, then run
`npx @agent-native/core@latest connect https://plan.agent-native.com --client all`
whenever you are ready, or choose a narrower `--client`. Auth and MCP tool
loading are per client config/session.
**Browser (people you share with).** Open the Plans editor and create & edit
with no sign-up — you work as a guest. Sign in only when you want to save or
share; signing in claims the plans you made as a guest into your account.
Sharing and commenting require an account: public/shared plans are viewable by
anyone with the link, but commenting on them needs an agent-native account.
For fully offline, no-account use, run the Plans app locally and sync plans to
your repo as MDX. This local mode is a separate advanced path, not the default
hosted flow.
If a Plans tool returns `needs auth`, `Unauthorized`, or `Session terminated`, do
not keep retrying it — stop and give the user the per-client reconnect step from
`references/connection.md`, then continue once the connector is available.
Hosted default: connect `https://plan.agent-native.com/_agent-native/mcp`. Do
not put shared secrets in skill files.
Todos los archivos
0 archivosInstalar visual-plan
Descarga y descomprime los archivos de habilidades en tu directorio .claude/skills/.
Descargar ZIPClona el repositorio y copia los archivos de la habilidad a tu proyecto.
git clone https://github.com/BuilderIO/skills/tree/main/skills/visual-plan # Copy SKILL.md to your .claude/skills/ directory
Copiar





Hogar
