@agent-native/core 0.38.0 → 0.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +8 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/skills.d.ts +6 -4
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +587 -126
- package/dist/cli/skills.js.map +1 -1
- package/dist/client/blocks/BlockView.d.ts +13 -4
- package/dist/client/blocks/BlockView.d.ts.map +1 -1
- package/dist/client/blocks/BlockView.js +34 -13
- package/dist/client/blocks/BlockView.js.map +1 -1
- package/dist/client/blocks/SchemaBlockEditor.d.ts.map +1 -1
- package/dist/client/blocks/SchemaBlockEditor.js +96 -3
- package/dist/client/blocks/SchemaBlockEditor.js.map +1 -1
- package/dist/client/blocks/index.d.ts +18 -1
- package/dist/client/blocks/index.d.ts.map +1 -1
- package/dist/client/blocks/index.js +26 -1
- package/dist/client/blocks/index.js.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts +6 -0
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/AnnotatedCodeBlock.js +135 -0
- package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -0
- package/dist/client/blocks/library/ApiEndpointBlock.d.ts +20 -0
- package/dist/client/blocks/library/ApiEndpointBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/ApiEndpointBlock.js +131 -0
- package/dist/client/blocks/library/ApiEndpointBlock.js.map +1 -0
- package/dist/client/blocks/library/DataModelBlock.d.ts +28 -0
- package/dist/client/blocks/library/DataModelBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/DataModelBlock.js +222 -0
- package/dist/client/blocks/library/DataModelBlock.js.map +1 -0
- package/dist/client/blocks/library/DiffBlock.d.ts +6 -0
- package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/DiffBlock.js +293 -0
- package/dist/client/blocks/library/DiffBlock.js.map +1 -0
- package/dist/client/blocks/library/FileTreeBlock.d.ts +23 -0
- package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/FileTreeBlock.js +225 -0
- package/dist/client/blocks/library/FileTreeBlock.js.map +1 -0
- package/dist/client/blocks/library/JsonExplorerBlock.d.ts +19 -0
- package/dist/client/blocks/library/JsonExplorerBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/JsonExplorerBlock.js +171 -0
- package/dist/client/blocks/library/JsonExplorerBlock.js.map +1 -0
- package/dist/client/blocks/library/MermaidBlock.d.ts +17 -0
- package/dist/client/blocks/library/MermaidBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/MermaidBlock.js +131 -0
- package/dist/client/blocks/library/MermaidBlock.js.map +1 -0
- package/dist/client/blocks/library/OpenApiSpecBlock.d.ts +19 -0
- package/dist/client/blocks/library/OpenApiSpecBlock.d.ts.map +1 -0
- package/dist/client/blocks/library/OpenApiSpecBlock.js +494 -0
- package/dist/client/blocks/library/OpenApiSpecBlock.js.map +1 -0
- package/dist/client/blocks/library/annotated-code.config.d.ts +58 -0
- package/dist/client/blocks/library/annotated-code.config.d.ts.map +1 -0
- package/dist/client/blocks/library/annotated-code.config.js +53 -0
- package/dist/client/blocks/library/annotated-code.config.js.map +1 -0
- package/dist/client/blocks/library/api-endpoint.config.d.ts +71 -0
- package/dist/client/blocks/library/api-endpoint.config.d.ts.map +1 -0
- package/dist/client/blocks/library/api-endpoint.config.js +91 -0
- package/dist/client/blocks/library/api-endpoint.config.js.map +1 -0
- package/dist/client/blocks/library/checklist.d.ts.map +1 -1
- package/dist/client/blocks/library/checklist.js +3 -1
- package/dist/client/blocks/library/checklist.js.map +1 -1
- package/dist/client/blocks/library/code-tabs.js +1 -1
- package/dist/client/blocks/library/code-tabs.js.map +1 -1
- package/dist/client/blocks/library/data-model.config.d.ts +72 -0
- package/dist/client/blocks/library/data-model.config.d.ts.map +1 -0
- package/dist/client/blocks/library/data-model.config.js +59 -0
- package/dist/client/blocks/library/data-model.config.js.map +1 -0
- package/dist/client/blocks/library/dev-doc-ui.d.ts +49 -0
- package/dist/client/blocks/library/dev-doc-ui.d.ts.map +1 -0
- package/dist/client/blocks/library/dev-doc-ui.js +50 -0
- package/dist/client/blocks/library/dev-doc-ui.js.map +1 -0
- package/dist/client/blocks/library/diff.config.d.ts +41 -0
- package/dist/client/blocks/library/diff.config.d.ts.map +1 -0
- package/dist/client/blocks/library/diff.config.js +34 -0
- package/dist/client/blocks/library/diff.config.js.map +1 -0
- package/dist/client/blocks/library/file-tree.config.d.ts +59 -0
- package/dist/client/blocks/library/file-tree.config.d.ts.map +1 -0
- package/dist/client/blocks/library/file-tree.config.js +45 -0
- package/dist/client/blocks/library/file-tree.config.js.map +1 -0
- package/dist/client/blocks/library/html.d.ts.map +1 -1
- package/dist/client/blocks/library/html.js +4 -1
- package/dist/client/blocks/library/html.js.map +1 -1
- package/dist/client/blocks/library/json-explorer.config.d.ts +46 -0
- package/dist/client/blocks/library/json-explorer.config.d.ts.map +1 -0
- package/dist/client/blocks/library/json-explorer.config.js +28 -0
- package/dist/client/blocks/library/json-explorer.config.js.map +1 -0
- package/dist/client/blocks/library/mermaid.config.d.ts +32 -0
- package/dist/client/blocks/library/mermaid.config.d.ts.map +1 -0
- package/dist/client/blocks/library/mermaid.config.js +24 -0
- package/dist/client/blocks/library/mermaid.config.js.map +1 -0
- package/dist/client/blocks/library/openapi-spec.config.d.ts +49 -0
- package/dist/client/blocks/library/openapi-spec.config.d.ts.map +1 -0
- package/dist/client/blocks/library/openapi-spec.config.js +24 -0
- package/dist/client/blocks/library/openapi-spec.config.js.map +1 -0
- package/dist/client/blocks/library/server-specs.d.ts +35 -0
- package/dist/client/blocks/library/server-specs.d.ts.map +1 -0
- package/dist/client/blocks/library/server-specs.js +171 -0
- package/dist/client/blocks/library/server-specs.js.map +1 -0
- package/dist/client/blocks/library/specs.d.ts +29 -0
- package/dist/client/blocks/library/specs.d.ts.map +1 -0
- package/dist/client/blocks/library/specs.js +229 -0
- package/dist/client/blocks/library/specs.js.map +1 -0
- package/dist/client/blocks/library/table.d.ts.map +1 -1
- package/dist/client/blocks/library/table.js +3 -1
- package/dist/client/blocks/library/table.js.map +1 -1
- package/dist/client/blocks/library/tabs.js +1 -1
- package/dist/client/blocks/library/tabs.js.map +1 -1
- package/dist/client/blocks/registry.d.ts +8 -0
- package/dist/client/blocks/registry.d.ts.map +1 -1
- package/dist/client/blocks/registry.js +15 -0
- package/dist/client/blocks/registry.js.map +1 -1
- package/dist/client/blocks/server.d.ts +9 -0
- package/dist/client/blocks/server.d.ts.map +1 -1
- package/dist/client/blocks/server.js +16 -0
- package/dist/client/blocks/server.js.map +1 -1
- package/dist/client/blocks/types.d.ts +40 -0
- package/dist/client/blocks/types.d.ts.map +1 -1
- package/dist/client/blocks/types.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +10 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/rich-markdown-editor/DragHandle.d.ts +52 -0
- package/dist/client/rich-markdown-editor/DragHandle.d.ts.map +1 -0
- package/dist/client/rich-markdown-editor/DragHandle.js +403 -0
- package/dist/client/rich-markdown-editor/DragHandle.js.map +1 -0
- package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts +97 -0
- package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts.map +1 -0
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js +214 -0
- package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -0
- package/dist/client/rich-markdown-editor/RunId.d.ts +28 -0
- package/dist/client/rich-markdown-editor/RunId.d.ts.map +1 -0
- package/dist/client/rich-markdown-editor/RunId.js +60 -0
- package/dist/client/rich-markdown-editor/RunId.js.map +1 -0
- package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +25 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/SharedRichEditor.js +14 -5
- package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
- package/dist/client/rich-markdown-editor/gfmDoc.d.ts +24 -0
- package/dist/client/rich-markdown-editor/gfmDoc.d.ts.map +1 -0
- package/dist/client/rich-markdown-editor/gfmDoc.js +83 -0
- package/dist/client/rich-markdown-editor/gfmDoc.js.map +1 -0
- package/dist/client/rich-markdown-editor/index.d.ts +5 -0
- package/dist/client/rich-markdown-editor/index.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/index.js +5 -0
- package/dist/client/rich-markdown-editor/index.js.map +1 -1
- package/dist/client/rich-markdown-editor/registrySlashCommands.d.ts +46 -0
- package/dist/client/rich-markdown-editor/registrySlashCommands.d.ts.map +1 -0
- package/dist/client/rich-markdown-editor/registrySlashCommands.js +13 -0
- package/dist/client/rich-markdown-editor/registrySlashCommands.js.map +1 -0
- package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
- package/dist/client/rich-markdown-editor/useCollabReconcile.js +33 -0
- package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
- package/docs/content/template-plan.md +19 -4
- package/docs/content/visual-plans.md +3 -1
- package/package.json +1 -1
package/dist/cli/skills.js
CHANGED
|
@@ -15,7 +15,7 @@ const HELP = `agent-native skills
|
|
|
15
15
|
|
|
16
16
|
Usage:
|
|
17
17
|
agent-native skills list
|
|
18
|
-
agent-native skills add assets|design-exploration|visual-plan|visual-questions|ui-plan|visualize-plan|context-xray [--client codex|claude-code|claude-code-cli|cowork|all] [--scope user|project] [--mcp-url <url>] [--no-connect] [--yes] [--dry-run] [--json]
|
|
18
|
+
agent-native skills add assets|design-exploration|visual-plan|visual-questions|ui-plan|prototype-plan|plan-design|visualize-plan|context-xray [--client codex|claude-code|claude-code-cli|cowork|all] [--scope user|project] [--mcp-url <url>] [--no-connect] [--yes] [--dry-run] [--json]
|
|
19
19
|
agent-native skills add <manifest-or-app-dir> [--client ...] [--yes]
|
|
20
20
|
|
|
21
21
|
Examples:
|
|
@@ -196,7 +196,7 @@ iteration, or a human-in-the-loop choice among design directions.
|
|
|
196
196
|
`;
|
|
197
197
|
/**
|
|
198
198
|
* Shared setup/auth block for every Plans skill (`/visual-plan`, `/ui-plan`,
|
|
199
|
-
* `/visual-questions`, `/visualize-plan`). Interpolated into each skill markdown
|
|
199
|
+
* `/prototype-plan`, `/plan-design`, `/visual-questions`, `/visualize-plan`). Interpolated into each skill markdown
|
|
200
200
|
* so the install + one-step authenticate instructions never drift between them.
|
|
201
201
|
* Keep this in sync with the copies under `templates/plan/.agents/skills/*` and
|
|
202
202
|
* top-level `skills/*` (this skill's SKILL.md is triplicated with no sync test).
|
|
@@ -214,8 +214,8 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
214
214
|
agent-native skills add visual-plan
|
|
215
215
|
\`\`\`
|
|
216
216
|
|
|
217
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/
|
|
218
|
-
\`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
217
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
218
|
+
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
219
219
|
register the connector without authenticating, then run
|
|
220
220
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
221
221
|
|
|
@@ -252,12 +252,14 @@ metadata:
|
|
|
252
252
|
|
|
253
253
|
Agent-Native Plans is structured visual planning mode for coding agents. Build
|
|
254
254
|
the plan you would normally write in Markdown, but as a scannable document with
|
|
255
|
-
editable blocks mixed in: an optional
|
|
256
|
-
Notion-like technical document below. The
|
|
257
|
-
prose only where it helps.
|
|
255
|
+
editable blocks mixed in: an optional top visual review area (wireframe canvas,
|
|
256
|
+
live prototype, or both in tabs) and a Notion-like technical document below. The
|
|
257
|
+
user reacts to visuals first and reads prose only where it helps.
|
|
258
258
|
|
|
259
259
|
\`/visual-plan\` is the canonical command and the main entry point. Use \`/ui-plan\`
|
|
260
260
|
when the work is primarily product UI and review should start with the screens.
|
|
261
|
+
Use \`/prototype-plan\` when review should start with a functional live prototype.
|
|
262
|
+
Use \`/plan-design\` when review should start with full-fidelity branded design.
|
|
261
263
|
Use \`/visual-questions\` only when the user explicitly wants a visual intake form
|
|
262
264
|
before planning. Use \`/visualize-plan\` to turn an existing Codex, Claude Code,
|
|
263
265
|
Markdown, or pasted plan into a visual companion.
|
|
@@ -286,9 +288,10 @@ direction before you implement.
|
|
|
286
288
|
approach and options in the plan. Ask a clarifying question only when an
|
|
287
289
|
ambiguity would change the design and you cannot resolve it from the code; use
|
|
288
290
|
the host agent's normal ask-user-question flow and batch 2-4 high-leverage
|
|
289
|
-
questions before finalizing. Do not create
|
|
290
|
-
|
|
291
|
-
|
|
291
|
+
questions before finalizing. Do not call \`create-visual-questions\` from
|
|
292
|
+
\`/visual-plan\`; keep any answerable follow-up inside the plan itself as a
|
|
293
|
+
bottom \`question-form\` Open Questions block. Otherwise state the assumption
|
|
294
|
+
explicitly and proceed, and put anything unresolved in an open-questions block.
|
|
292
295
|
- **The plan is the approval gate.** After surfacing it, ask the user to review
|
|
293
296
|
and approve before you write code, and name which files/areas the work touches.
|
|
294
297
|
Presenting the plan and requesting sign-off is the approval step — do not ask a
|
|
@@ -302,19 +305,22 @@ direction before you implement.
|
|
|
302
305
|
1. Follow the host agent's normal planning flow: inspect the codebase, delegate
|
|
303
306
|
wide exploration when useful, gather the info needed, and ask native
|
|
304
307
|
clarifying questions as needed before generating the plan.
|
|
305
|
-
2.
|
|
306
|
-
structured \`content\` blocks.
|
|
307
|
-
3. Compose
|
|
308
|
-
(see the
|
|
309
|
-
agent would normally output; add diagrams, wireframes,
|
|
310
|
-
only where they clarify the plan. Skip the
|
|
308
|
+
2. Decide the top visual surface with the rules below, then call
|
|
309
|
+
\`create-visual-plan\` with the title, brief, source, repo path, and structured \`content\` blocks.
|
|
310
|
+
3. Compose any top visual surface from the kit and write the document with
|
|
311
|
+
native blocks (see the cores below). Keep the document close to the Markdown
|
|
312
|
+
plan the agent would normally output; add diagrams, wireframes, prototypes,
|
|
313
|
+
and visual callouts only where they clarify the plan. Skip the top visual
|
|
314
|
+
surface for non-visual work.
|
|
311
315
|
4. Surface the returned Plans link or inline MCP App and ask the user to review.
|
|
312
316
|
Always include the actual URL in chat so the next step is a click in CLI or
|
|
313
317
|
other text-only hosts. When the host exposes an embedded browser/preview panel
|
|
314
318
|
and a tool can open arbitrary URLs there, open the returned plan URL
|
|
315
319
|
automatically for convenient review; do not rely on this as the only handoff.
|
|
316
320
|
5. Call \`get-plan-feedback\` before editing, after review, after any long pause,
|
|
317
|
-
and before the final response.
|
|
321
|
+
and before the final response. Treat \`anchorDetails\`, resolver intent, recent
|
|
322
|
+
review events, and any focused screenshots from browser handoff as the source
|
|
323
|
+
of truth for exactly what changed and exactly what each comment points at.
|
|
318
324
|
6. Apply changes with \`update-visual-plan\`, preferring targeted \`contentPatches\`.
|
|
319
325
|
When the user wants source-control friendly edits, use
|
|
320
326
|
\`patch-visual-plan-source\` against the MDX files instead of regenerating the
|
|
@@ -322,6 +328,31 @@ direction before you implement.
|
|
|
322
328
|
7. Export with \`export-visual-plan\` only when the user wants a shareable receipt
|
|
323
329
|
or repo-check-in artifacts.
|
|
324
330
|
|
|
331
|
+
## Visual Surface Choice
|
|
332
|
+
|
|
333
|
+
Choose the surface before creating the plan. Do not add visual chrome by
|
|
334
|
+
default:
|
|
335
|
+
|
|
336
|
+
- **No visual surface** for architecture-only, backend-only, data migration,
|
|
337
|
+
copy-only, or otherwise non-visual plans. Use a strong document with diagrams
|
|
338
|
+
only when relationships need a visual explanation.
|
|
339
|
+
- **Canvas only** for one static screen, a before/after comparison, a component
|
|
340
|
+
state, a small popover, or a visual direction that does not require clicking.
|
|
341
|
+
Put those wireframes in \`content.canvas\` and omit \`content.prototype\`.
|
|
342
|
+
- **Canvas + prototype** for multi-step UI flows, onboarding, wizards,
|
|
343
|
+
review/approval flows, navigation changes, or anything where the reviewer
|
|
344
|
+
needs to operate the behavior. Keep the static wireframes in
|
|
345
|
+
\`content.canvas\`, add the aligned functional prototype in
|
|
346
|
+
\`content.prototype\`, and rely on the top visual tabs to switch between them.
|
|
347
|
+
- **Prototype-first** when the user explicitly asks for \`/prototype-plan\`, asks
|
|
348
|
+
to operate the UI, or when interaction is the main question. Use
|
|
349
|
+
\`create-prototype-plan\`, which still preserves static mocks where useful.
|
|
350
|
+
|
|
351
|
+
For mixed canvas + prototype plans, reuse the same real labels, app statuses,
|
|
352
|
+
and screen ids across both surfaces. The canvas is the inspectable static reference;
|
|
353
|
+
the prototype is the interactive version of that same flow, not a separate
|
|
354
|
+
design direction.
|
|
355
|
+
|
|
325
356
|
<!-- SHARED-CORE:wireframe-canvas START -->
|
|
326
357
|
|
|
327
358
|
## Wireframe & Canvas Core
|
|
@@ -482,13 +513,18 @@ hex colors:
|
|
|
482
513
|
</div>
|
|
483
514
|
\`\`\`
|
|
484
515
|
|
|
485
|
-
**Mockups belong
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
516
|
+
**Mockups belong in the top visual review area.** Static visuals live on the
|
|
517
|
+
canvas; multi-step flows get both canvas wireframes and a prototype. When the
|
|
518
|
+
user asks for a mockup, UI state, loading state, layout, screen, or visual
|
|
519
|
+
comparison, make the canvas the primary home for that static visual. When the
|
|
520
|
+
user asks for a prototype or the plan contains a sequence the reviewer must
|
|
521
|
+
feel, keep the canvas artboards and add \`content.prototype\` so the top surface
|
|
522
|
+
shows Wireframes / Prototype tabs. Document blocks can explain, compare, or map
|
|
523
|
+
implementation, but they should not host the primary mockup or prototype just
|
|
524
|
+
because \`custom-html\`, screenshots, or prose are easier to produce. If the
|
|
525
|
+
canvas/prototype surface cannot represent the requested fidelity, still keep the
|
|
526
|
+
closest top-surface representation and call out or extend the needed renderer
|
|
527
|
+
capability.
|
|
492
528
|
|
|
493
529
|
**Legacy kit tree.** Older plans set a \`screen\` array of \`{ el, ...props }\` kit
|
|
494
530
|
nodes instead of \`html\`; the renderer still accepts and displays it, but new
|
|
@@ -520,12 +556,14 @@ behavior). Replace vague prose with specifics; never ship a step like "make it
|
|
|
520
556
|
work." No hero art, gradients, logos, nav bars, slogans, value props, giant
|
|
521
557
|
landing-page headings, or marketing cards unless the user explicitly asks.
|
|
522
558
|
|
|
523
|
-
**
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
559
|
+
**Top visuals and document never duplicate each other.** The UI story lives in
|
|
560
|
+
the top visual surface: canvas artboards for static inspection, plus prototype
|
|
561
|
+
tabs when the flow should be functional. The document carries the technical depth
|
|
562
|
+
the visuals cannot show — concrete file/symbol maps, API and data contracts,
|
|
563
|
+
code snippets, migration or implementation phases, risks, and validation. Repeat
|
|
564
|
+
a wireframe in the document only for a genuinely new detail view or comparison.
|
|
565
|
+
Skip the visual surface entirely for non-visual work and write a clean rich
|
|
566
|
+
document.
|
|
529
567
|
|
|
530
568
|
**Use the right block, and make it carry substance.** For the authoritative,
|
|
531
569
|
machine-checked list of block types and their data schemas, call \`get-plan-blocks\`
|
|
@@ -548,9 +586,14 @@ so you never emit a block the editor cannot render or round-trip:
|
|
|
548
586
|
visual unless the tab is intentionally document-only.
|
|
549
587
|
- \`table\`, \`checklist\`, \`callout\` for scannable structure.
|
|
550
588
|
|
|
551
|
-
**Open questions
|
|
552
|
-
|
|
553
|
-
|
|
589
|
+
**Open questions live at the bottom as a form when answers would change the
|
|
590
|
+
plan.** Surface answerable unresolved decisions in a final \`question-form\`
|
|
591
|
+
block titled "Open Questions". Use \`single\` or \`multi\` for clear choices,
|
|
592
|
+
\`freeform\` for constraints, \`recommended: true\` for the default you would pick,
|
|
593
|
+
and option \`wireframe\` / \`diagram\` previews for visual directions when useful.
|
|
594
|
+
Keep non-answerable assumptions or risks as concise \`callout\` blocks in the
|
|
595
|
+
relevant section. Never bury a questions/decisions wall inside the plan
|
|
596
|
+
narrative.
|
|
554
597
|
|
|
555
598
|
**\`custom-html\` is a bounded escape hatch only** — a single complete fragment
|
|
556
599
|
inside a block, never \`html\`/\`head\`/\`body\`/\`script\` tags, never a generic
|
|
@@ -582,22 +625,33 @@ designer notes sit spaced off the frame, pointing only at the controls that need
|
|
|
582
625
|
explanation. Below it, a Claude/Codex-grade document: objective and
|
|
583
626
|
done-criteria, an \`implementation-map\` naming the real components and actions
|
|
584
627
|
with short highlighted snippets, a \`decision\` card weighing two real approaches,
|
|
585
|
-
and a validation step — none of it repeating the canvas.
|
|
628
|
+
and a validation step — none of it repeating the canvas. If the task also
|
|
629
|
+
changes a multi-step completion flow, the same top area includes a Prototype tab
|
|
630
|
+
whose screens use the same labels and states as the canvas artboards, with
|
|
631
|
+
\`data-goto\` controls for the sequence. This is the bar.
|
|
586
632
|
|
|
587
633
|
**BAD.** A \`data.html\` with hard-coded hex colors, a \`font-family\`, or fixed
|
|
588
634
|
pixel width/height; gray placeholder bars "insinuating" text on a non-skeleton
|
|
589
635
|
frame; a forced desktop + mobile pair for a popover; floating bordered
|
|
590
636
|
annotation cards hugging the frames; a fresh hand-authored kit-tree \`screen\`
|
|
591
|
-
instead of \`html\`; a
|
|
592
|
-
|
|
593
|
-
|
|
637
|
+
instead of \`html\`; a multi-step UI flow with only static frames and no prototype
|
|
638
|
+
tab; a mockup escaped into a document \`custom-html\` block; and a marketing-style
|
|
639
|
+
document with a hero heading and value props that just restates what the canvas
|
|
640
|
+
already shows. Never produce this.
|
|
594
641
|
|
|
595
642
|
<!-- SHARED-CORE:exemplar END -->
|
|
596
643
|
|
|
597
644
|
## Tool Guidance
|
|
598
645
|
|
|
599
|
-
- \`create-visual-plan\`: start one structured visual plan per agent task/run
|
|
646
|
+
- \`create-visual-plan\`: start one structured visual plan per agent task/run;
|
|
647
|
+
\`content\` may include no visual surface, canvas only, or canvas + prototype.
|
|
600
648
|
- \`create-ui-plan\`: start a UI-first plan when the work is primarily product UI.
|
|
649
|
+
- \`create-prototype-plan\`: start a prototype-first plan with a functional top
|
|
650
|
+
review surface.
|
|
651
|
+
- \`create-plan-design\`: start a full-fidelity branded Design-tab plan with an
|
|
652
|
+
optional matching Prototype tab.
|
|
653
|
+
- \`convert-visual-plan-to-prototype\`: convert an existing HTML wireframe canvas
|
|
654
|
+
into a prototype plan.
|
|
601
655
|
- \`create-visual-questions\`: use only for the explicit \`/visual-questions\`
|
|
602
656
|
command, not as \`/visual-plan\` preflight.
|
|
603
657
|
- \`visualize-plan\`: build a visual companion from an existing text plan.
|
|
@@ -610,7 +664,9 @@ what the canvas already shows. Never produce this.
|
|
|
610
664
|
- \`import-visual-plan-source\`: create or replace a plan from an MDX folder.
|
|
611
665
|
- \`get-visual-plan\`: read the current structured plan, exported HTML, and
|
|
612
666
|
annotations; it also returns the MDX folder for source workflows.
|
|
613
|
-
- \`get-plan-feedback\`: read unconsumed human feedback. Use it frequently
|
|
667
|
+
- \`get-plan-feedback\`: read unconsumed human feedback. Use it frequently; it
|
|
668
|
+
returns grouped threads, exact anchor details, expected resolver, and recent
|
|
669
|
+
review-event payloads so agents can act only on the comments meant for them.
|
|
614
670
|
- \`export-visual-plan\`: export HTML, Markdown fallback, structured JSON, and MDX
|
|
615
671
|
files for repo check-in.
|
|
616
672
|
|
|
@@ -630,8 +686,8 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
630
686
|
agent-native skills add visual-plan
|
|
631
687
|
\`\`\`
|
|
632
688
|
|
|
633
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/
|
|
634
|
-
\`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
689
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
690
|
+
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
635
691
|
register the connector without authenticating, then run
|
|
636
692
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
637
693
|
|
|
@@ -668,14 +724,16 @@ metadata:
|
|
|
668
724
|
# UI Plan
|
|
669
725
|
|
|
670
726
|
Use \`/ui-plan\` when the task is primarily about product UI, user flows,
|
|
671
|
-
interaction
|
|
727
|
+
interaction details, component layout, or visual direction. The reviewable UI
|
|
672
728
|
comes first; implementation detail comes after the user has something concrete to
|
|
673
729
|
react to.
|
|
674
730
|
|
|
675
731
|
\`/visual-plan\` remains the general command for architecture, backend, refactors,
|
|
676
|
-
and mixed work. Use \`/
|
|
677
|
-
|
|
678
|
-
|
|
732
|
+
and mixed work. Use \`/prototype-plan\` when the UI review needs a functional live
|
|
733
|
+
prototype instead of static screens. Use \`/plan-design\` when polish, brand, or
|
|
734
|
+
visual fidelity are material to the decision. Use \`/visual-questions\` only when
|
|
735
|
+
the user explicitly wants visual intake before planning, and \`/visualize-plan\`
|
|
736
|
+
when a text plan already exists.
|
|
679
737
|
|
|
680
738
|
## Plan Discipline
|
|
681
739
|
|
|
@@ -691,9 +749,10 @@ exists.
|
|
|
691
749
|
- **Clarify vs. assume.** Do not ask how to build the UI — present the direction
|
|
692
750
|
and options as mockups and tabs. Ask a clarifying question only when an
|
|
693
751
|
ambiguity would change the design; use the host agent's normal
|
|
694
|
-
ask-user-question flow and batch 2-4 before finalizing. Do not
|
|
695
|
-
questions from \`/ui-plan
|
|
696
|
-
|
|
752
|
+
ask-user-question flow and batch 2-4 before finalizing. Do not call
|
|
753
|
+
\`create-visual-questions\` from \`/ui-plan\`; keep answerable follow-up inside
|
|
754
|
+
the same plan as a bottom \`question-form\` Open Questions block. Otherwise
|
|
755
|
+
state the assumption in the plan and proceed.
|
|
697
756
|
- **The plan is the approval gate.** Ask the user to review and approve the UI
|
|
698
757
|
direction before you write code, and name the files/areas the work touches.
|
|
699
758
|
|
|
@@ -711,10 +770,13 @@ exists.
|
|
|
711
770
|
Markdown plan the agent would normally output — not a second copy of the
|
|
712
771
|
canvas — covering concrete files, contracts, phases, risks, and validation.
|
|
713
772
|
5. Call \`get-plan-feedback\` before implementation, after review, after a long
|
|
714
|
-
pause, and before the final response.
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
773
|
+
pause, and before the final response. Treat \`anchorDetails\`, resolver intent,
|
|
774
|
+
recent review events, and any focused screenshots from browser handoff as the
|
|
775
|
+
source of truth for exactly what changed and exactly what each UI comment
|
|
776
|
+
points at. Apply changes with \`update-visual-plan\`, preferring
|
|
777
|
+
\`contentPatches\` for one frame, annotation, node, tab, or block. When the
|
|
778
|
+
user wants source-control friendly edits, use \`patch-visual-plan-source\`
|
|
779
|
+
against the MDX files instead of regenerating the plan.
|
|
718
780
|
|
|
719
781
|
## Agent Handoff
|
|
720
782
|
|
|
@@ -883,13 +945,18 @@ hex colors:
|
|
|
883
945
|
</div>
|
|
884
946
|
\`\`\`
|
|
885
947
|
|
|
886
|
-
**Mockups belong
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
948
|
+
**Mockups belong in the top visual review area.** Static visuals live on the
|
|
949
|
+
canvas; multi-step flows get both canvas wireframes and a prototype. When the
|
|
950
|
+
user asks for a mockup, UI state, loading state, layout, screen, or visual
|
|
951
|
+
comparison, make the canvas the primary home for that static visual. When the
|
|
952
|
+
user asks for a prototype or the plan contains a sequence the reviewer must
|
|
953
|
+
feel, keep the canvas artboards and add \`content.prototype\` so the top surface
|
|
954
|
+
shows Wireframes / Prototype tabs. Document blocks can explain, compare, or map
|
|
955
|
+
implementation, but they should not host the primary mockup or prototype just
|
|
956
|
+
because \`custom-html\`, screenshots, or prose are easier to produce. If the
|
|
957
|
+
canvas/prototype surface cannot represent the requested fidelity, still keep the
|
|
958
|
+
closest top-surface representation and call out or extend the needed renderer
|
|
959
|
+
capability.
|
|
893
960
|
|
|
894
961
|
**Legacy kit tree.** Older plans set a \`screen\` array of \`{ el, ...props }\` kit
|
|
895
962
|
nodes instead of \`html\`; the renderer still accepts and displays it, but new
|
|
@@ -921,12 +988,14 @@ behavior). Replace vague prose with specifics; never ship a step like "make it
|
|
|
921
988
|
work." No hero art, gradients, logos, nav bars, slogans, value props, giant
|
|
922
989
|
landing-page headings, or marketing cards unless the user explicitly asks.
|
|
923
990
|
|
|
924
|
-
**
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
991
|
+
**Top visuals and document never duplicate each other.** The UI story lives in
|
|
992
|
+
the top visual surface: canvas artboards for static inspection, plus prototype
|
|
993
|
+
tabs when the flow should be functional. The document carries the technical depth
|
|
994
|
+
the visuals cannot show — concrete file/symbol maps, API and data contracts,
|
|
995
|
+
code snippets, migration or implementation phases, risks, and validation. Repeat
|
|
996
|
+
a wireframe in the document only for a genuinely new detail view or comparison.
|
|
997
|
+
Skip the visual surface entirely for non-visual work and write a clean rich
|
|
998
|
+
document.
|
|
930
999
|
|
|
931
1000
|
**Use the right block, and make it carry substance.** For the authoritative,
|
|
932
1001
|
machine-checked list of block types and their data schemas, call \`get-plan-blocks\`
|
|
@@ -949,9 +1018,14 @@ so you never emit a block the editor cannot render or round-trip:
|
|
|
949
1018
|
visual unless the tab is intentionally document-only.
|
|
950
1019
|
- \`table\`, \`checklist\`, \`callout\` for scannable structure.
|
|
951
1020
|
|
|
952
|
-
**Open questions
|
|
953
|
-
|
|
954
|
-
|
|
1021
|
+
**Open questions live at the bottom as a form when answers would change the
|
|
1022
|
+
plan.** Surface answerable unresolved decisions in a final \`question-form\`
|
|
1023
|
+
block titled "Open Questions". Use \`single\` or \`multi\` for clear choices,
|
|
1024
|
+
\`freeform\` for constraints, \`recommended: true\` for the default you would pick,
|
|
1025
|
+
and option \`wireframe\` / \`diagram\` previews for visual directions when useful.
|
|
1026
|
+
Keep non-answerable assumptions or risks as concise \`callout\` blocks in the
|
|
1027
|
+
relevant section. Never bury a questions/decisions wall inside the plan
|
|
1028
|
+
narrative.
|
|
955
1029
|
|
|
956
1030
|
**\`custom-html\` is a bounded escape hatch only** — a single complete fragment
|
|
957
1031
|
inside a block, never \`html\`/\`head\`/\`body\`/\`script\` tags, never a generic
|
|
@@ -983,21 +1057,31 @@ designer notes sit spaced off the frame, pointing only at the controls that need
|
|
|
983
1057
|
explanation. Below it, a Claude/Codex-grade document: objective and
|
|
984
1058
|
done-criteria, an \`implementation-map\` naming the real components and actions
|
|
985
1059
|
with short highlighted snippets, a \`decision\` card weighing two real approaches,
|
|
986
|
-
and a validation step — none of it repeating the canvas.
|
|
1060
|
+
and a validation step — none of it repeating the canvas. If the task also
|
|
1061
|
+
changes a multi-step completion flow, the same top area includes a Prototype tab
|
|
1062
|
+
whose screens use the same labels and states as the canvas artboards, with
|
|
1063
|
+
\`data-goto\` controls for the sequence. This is the bar.
|
|
987
1064
|
|
|
988
1065
|
**BAD.** A \`data.html\` with hard-coded hex colors, a \`font-family\`, or fixed
|
|
989
1066
|
pixel width/height; gray placeholder bars "insinuating" text on a non-skeleton
|
|
990
1067
|
frame; a forced desktop + mobile pair for a popover; floating bordered
|
|
991
1068
|
annotation cards hugging the frames; a fresh hand-authored kit-tree \`screen\`
|
|
992
|
-
instead of \`html\`; a
|
|
993
|
-
|
|
994
|
-
|
|
1069
|
+
instead of \`html\`; a multi-step UI flow with only static frames and no prototype
|
|
1070
|
+
tab; a mockup escaped into a document \`custom-html\` block; and a marketing-style
|
|
1071
|
+
document with a hero heading and value props that just restates what the canvas
|
|
1072
|
+
already shows. Never produce this.
|
|
995
1073
|
|
|
996
1074
|
<!-- SHARED-CORE:exemplar END -->
|
|
997
1075
|
|
|
998
1076
|
## Tool Guidance
|
|
999
1077
|
|
|
1000
1078
|
- \`create-ui-plan\`: create the UI-first structured visual plan.
|
|
1079
|
+
- \`create-prototype-plan\`: create a prototype-first plan when UI review needs a
|
|
1080
|
+
functional live prototype.
|
|
1081
|
+
- \`create-plan-design\`: create a full-fidelity branded design plan when polish,
|
|
1082
|
+
brand, and detailed visual direction are primary review inputs.
|
|
1083
|
+
- \`convert-visual-plan-to-prototype\`: convert an existing HTML wireframe canvas
|
|
1084
|
+
into a prototype plan.
|
|
1001
1085
|
- \`create-visual-questions\`: use only for the explicit \`/visual-questions\`
|
|
1002
1086
|
command, not as \`/ui-plan\` preflight.
|
|
1003
1087
|
- \`update-visual-plan\`: revise content, mockups, comments, or handoff notes;
|
|
@@ -1009,7 +1093,9 @@ what the canvas already shows. Never produce this.
|
|
|
1009
1093
|
- \`import-visual-plan-source\`: create or replace a plan from an MDX folder.
|
|
1010
1094
|
- \`get-visual-plan\`: inspect the current structured plan, exported HTML, and
|
|
1011
1095
|
annotations; it also returns the MDX folder for source workflows.
|
|
1012
|
-
- \`get-plan-feedback\`: read unconsumed reviewer comments before coding
|
|
1096
|
+
- \`get-plan-feedback\`: read unconsumed reviewer comments before coding; it
|
|
1097
|
+
returns grouped threads, exact anchor details, expected resolver, and recent
|
|
1098
|
+
review-event payloads so agents can act only on the comments meant for them.
|
|
1013
1099
|
- \`export-visual-plan\`: export HTML, Markdown fallback, structured JSON, and MDX
|
|
1014
1100
|
files for repo check-in.
|
|
1015
1101
|
|
|
@@ -1029,8 +1115,8 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
1029
1115
|
agent-native skills add visual-plan
|
|
1030
1116
|
\`\`\`
|
|
1031
1117
|
|
|
1032
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/
|
|
1033
|
-
\`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1118
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
1119
|
+
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1034
1120
|
register the connector without authenticating, then run
|
|
1035
1121
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
1036
1122
|
|
|
@@ -1054,6 +1140,275 @@ is available.
|
|
|
1054
1140
|
Hosted default: connect \`https://plan.agent-native.com/_agent-native/mcp\`. Do
|
|
1055
1141
|
not put shared secrets in skill files.
|
|
1056
1142
|
`;
|
|
1143
|
+
export const PROTOTYPE_PLAN_SKILL_MD = `---
|
|
1144
|
+
name: prototype-plan
|
|
1145
|
+
description: >-
|
|
1146
|
+
Use Agent-Native Plans for /prototype-plan when work needs a functional
|
|
1147
|
+
prototype-first plan, static mocks, comments, review toggles, or conversion
|
|
1148
|
+
from a visual plan.
|
|
1149
|
+
metadata:
|
|
1150
|
+
visibility: exported
|
|
1151
|
+
---
|
|
1152
|
+
|
|
1153
|
+
# Prototype Plan
|
|
1154
|
+
|
|
1155
|
+
\`/prototype-plan\` creates a plan whose primary review surface is a live,
|
|
1156
|
+
functional prototype above the document. Use it when the user needs to feel a
|
|
1157
|
+
flow, operate basic UI state, or comment on interaction before implementation
|
|
1158
|
+
hardens the decision.
|
|
1159
|
+
|
|
1160
|
+
## Rule
|
|
1161
|
+
|
|
1162
|
+
Make the prototype answer a concrete question. The plan should say what is being
|
|
1163
|
+
tested, show the functional prototype first, then keep static mocks and implementation
|
|
1164
|
+
notes in the document below.
|
|
1165
|
+
|
|
1166
|
+
## When To Use
|
|
1167
|
+
|
|
1168
|
+
Use \`/prototype-plan\` when the user asks for a prototype, wants to click through
|
|
1169
|
+
and operate UI states, needs design review before code, wants comments pinned to
|
|
1170
|
+
live screens, or asks to move a visual plan into a prototype.
|
|
1171
|
+
|
|
1172
|
+
Prefer \`/visual-plan\` for architecture, data flow, or non-interactive planning.
|
|
1173
|
+
Prefer \`/ui-plan\` when static screen review is enough. Use \`/visualize-plan\`
|
|
1174
|
+
first only when the user hands you an existing Markdown/Codex/Claude plan that
|
|
1175
|
+
needs a visual companion before becoming interactive.
|
|
1176
|
+
|
|
1177
|
+
## Core Workflow
|
|
1178
|
+
|
|
1179
|
+
1. Inspect the real codebase and decide the question the prototype should
|
|
1180
|
+
answer. Good examples: "Does this onboarding flow feel short enough?" or
|
|
1181
|
+
"Which dashboard density should we implement?"
|
|
1182
|
+
2. Call \`create-prototype-plan\` with a title, brief, and screen HTML. Default to
|
|
1183
|
+
one functional prototype screen when local UI behavior is enough; use 2-4
|
|
1184
|
+
screens only for true routes, steps, or materially different contexts. The
|
|
1185
|
+
returned plan opens with the prototype viewer on top and static mocks, flow
|
|
1186
|
+
diagram, implementation map, and verification below.
|
|
1187
|
+
3. Make controls actually work. Use the renderer's safe Alpine-like directives:
|
|
1188
|
+
\`x-data\`, \`x-model\`, \`x-for\`, \`x-text\`, \`x-show\`, \`:class\`, \`@click\`, and
|
|
1189
|
+
\`@keydown.enter\`. Use safe helper verbs such as \`remove(list, item)\`,
|
|
1190
|
+
\`setAll(list, 'done', true)\`, \`removeWhere(list, 'done', true)\`, and counters
|
|
1191
|
+
such as \`count(list)\`, \`countWhere(list, 'done', true)\`, and
|
|
1192
|
+
\`remaining(list, 'done')\` when they help. Use \`data-goto="screen-id"\` only
|
|
1193
|
+
for true screen/route changes, not for every button press.
|
|
1194
|
+
4. Show important app feedback inside the prototype itself: selected filters,
|
|
1195
|
+
checked rows, typed drafts, validation messages, permissions, progress, or
|
|
1196
|
+
empty states.
|
|
1197
|
+
5. Surface the returned Plans link and ask the user to click through, comment on
|
|
1198
|
+
the prototype or static mocks, and approve the direction before code changes.
|
|
1199
|
+
6. Before implementing or revising, call \`get-plan-feedback\`. Treat prototype
|
|
1200
|
+
anchors, screenshots, and resolver intent as the source of truth.
|
|
1201
|
+
7. Update with \`update-visual-plan\` content patches. Use
|
|
1202
|
+
\`patch-prototype-html\`, \`update-prototype-screen\`, or \`set-prototype\` for
|
|
1203
|
+
targeted prototype edits instead of regenerating the whole plan.
|
|
1204
|
+
|
|
1205
|
+
## Converting A Visual Plan
|
|
1206
|
+
|
|
1207
|
+
When a visual plan already has HTML canvas wireframes, call
|
|
1208
|
+
\`convert-visual-plan-to-prototype\` with the plan id. This derives prototype
|
|
1209
|
+
screens from the canvas frames, preserves the canvas/static mocks by default,
|
|
1210
|
+
and changes the top review surface to the prototype viewer.
|
|
1211
|
+
|
|
1212
|
+
Use \`removeCanvas: true\` only when the user explicitly wants the old canvas
|
|
1213
|
+
gone. Otherwise keep static mocks available for source export and detailed
|
|
1214
|
+
review.
|
|
1215
|
+
|
|
1216
|
+
## Prototype Screen HTML
|
|
1217
|
+
|
|
1218
|
+
Write bounded semantic HTML fragments only:
|
|
1219
|
+
|
|
1220
|
+
\`\`\`html
|
|
1221
|
+
<div style="display:flex;flex-direction:column;gap:14px;padding:18px;height:100%">
|
|
1222
|
+
<header style="display:flex;justify-content:space-between;gap:12px">
|
|
1223
|
+
<div>
|
|
1224
|
+
<h1>Launch checklist</h1>
|
|
1225
|
+
<p class="wf-muted">Reviewer can add, complete, filter, and remove tasks.</p>
|
|
1226
|
+
</div>
|
|
1227
|
+
<span class="wf-pill accent">Live prototype</span>
|
|
1228
|
+
</header>
|
|
1229
|
+
<section
|
|
1230
|
+
class="wf-card"
|
|
1231
|
+
x-data="{ draft: '', filter: 'all', todos: [{ text: 'Check copy', done: false }, { text: 'Confirm owner', done: true }] }"
|
|
1232
|
+
style="display:flex;flex-direction:column;gap:10px"
|
|
1233
|
+
>
|
|
1234
|
+
<div style="display:flex;gap:8px">
|
|
1235
|
+
<input x-model="draft" @keydown.enter="draft && todos.push({ text: draft, done: false }); draft = ''" placeholder="Add task" />
|
|
1236
|
+
<button class="primary" @click="draft && todos.push({ text: draft, done: false }); draft = ''">Add</button>
|
|
1237
|
+
</div>
|
|
1238
|
+
<div style="display:flex;gap:8px">
|
|
1239
|
+
<button @click="filter = 'all'" :class="{ primary: filter === 'all' }">All</button>
|
|
1240
|
+
<button @click="filter = 'done'" :class="{ primary: filter === 'done' }">Done</button>
|
|
1241
|
+
<button @click="setAll(todos, 'done', true)">Mark all done</button>
|
|
1242
|
+
</div>
|
|
1243
|
+
<p class="wf-muted"><span x-text="remaining(todos, 'done')"></span> open / <span x-text="count(todos)"></span> total</p>
|
|
1244
|
+
<div
|
|
1245
|
+
class="wf-box"
|
|
1246
|
+
x-for="todo in todos"
|
|
1247
|
+
x-show="filter === 'all' || (filter === 'done' && todo.done)"
|
|
1248
|
+
:class="{ 'is-done': todo.done }"
|
|
1249
|
+
style="display:flex;justify-content:space-between;gap:10px"
|
|
1250
|
+
>
|
|
1251
|
+
<label style="display:flex;gap:8px"><input type="checkbox" x-model="todo.done" /><span x-text="todo.text"></span></label>
|
|
1252
|
+
<button @click="remove(todos, todo)">Remove</button>
|
|
1253
|
+
</div>
|
|
1254
|
+
<button @click="removeWhere(todos, 'done', true)">Clear completed</button>
|
|
1255
|
+
</section>
|
|
1256
|
+
</div>
|
|
1257
|
+
\`\`\`
|
|
1258
|
+
|
|
1259
|
+
Use real labels, counts, dates, and controls grounded in the target app. Keep
|
|
1260
|
+
surfaces honest: \`browser\` for web pages, \`desktop\` for app shells, \`mobile\`
|
|
1261
|
+
only for real mobile work, \`panel\` for side panels, and \`popover\` for menus.
|
|
1262
|
+
|
|
1263
|
+
Do not include \`<html>\`, \`<body>\`, \`<script>\`, \`<style>\`, browser \`on*\`
|
|
1264
|
+
handler attributes such as \`onclick\`, fake APIs, raw secrets, or customer data.
|
|
1265
|
+
The renderer owns sketchy/clean mode, theme, surface sizing, rough outlines, and
|
|
1266
|
+
comment overlays.
|
|
1267
|
+
|
|
1268
|
+
## Review Surface
|
|
1269
|
+
|
|
1270
|
+
Prototype plans support:
|
|
1271
|
+
|
|
1272
|
+
- real local controls through safe prototype directives
|
|
1273
|
+
- optional screen/route transitions from \`data-goto\`
|
|
1274
|
+
- rough vs clean mode through the shared wireframe toggle
|
|
1275
|
+
- dark vs light mode through the shared theme toggle
|
|
1276
|
+
- comment visibility from the prototype toolbar
|
|
1277
|
+
- Figma-style comments pinned directly on live prototype screens
|
|
1278
|
+
- a popout URL with \`?prototype=1\` for focused browser review
|
|
1279
|
+
- static wireframe mocks in the document body where they help implementation
|
|
1280
|
+
|
|
1281
|
+
## Source Files
|
|
1282
|
+
|
|
1283
|
+
Runtime JSON is canonical. Source export uses:
|
|
1284
|
+
|
|
1285
|
+
- \`plan.mdx\` for document blocks
|
|
1286
|
+
- \`prototype.mdx\` for \`<Prototype>\`, \`<PrototypeScreen>\`, and
|
|
1287
|
+
\`<PrototypeTransition>\`
|
|
1288
|
+
- \`canvas.mdx\` for static mocks when a canvas is present
|
|
1289
|
+
- \`.plan-state.json\` for persisted viewport state
|
|
1290
|
+
|
|
1291
|
+
Patch source with \`patch-visual-plan-source\` only when the user wants
|
|
1292
|
+
source-control friendly edits. Patch runtime content when the user is simply
|
|
1293
|
+
reviewing and iterating.
|
|
1294
|
+
|
|
1295
|
+
## Related Skills
|
|
1296
|
+
|
|
1297
|
+
- \`visual-plan\`
|
|
1298
|
+
- \`ui-plan\`
|
|
1299
|
+
- \`visualize-plan\`
|
|
1300
|
+
- \`visual-questions\`
|
|
1301
|
+
`;
|
|
1302
|
+
export const PLAN_DESIGN_SKILL_MD = [
|
|
1303
|
+
"---",
|
|
1304
|
+
"name: plan-design",
|
|
1305
|
+
"description: >-",
|
|
1306
|
+
" Use Agent-Native Plans for full-fidelity UI design planning with a Design",
|
|
1307
|
+
" canvas tab and optional interactive Prototype tab before implementation.",
|
|
1308
|
+
"metadata:",
|
|
1309
|
+
" visibility: exported",
|
|
1310
|
+
"---",
|
|
1311
|
+
"",
|
|
1312
|
+
"# Plan Design",
|
|
1313
|
+
"",
|
|
1314
|
+
"Use `/plan-design` when the user needs a high-fidelity product design before",
|
|
1315
|
+
"implementation: polished branded screens, realistic content, visual direction,",
|
|
1316
|
+
"and interaction review. It is the full-fidelity companion to `/visual-plan` and",
|
|
1317
|
+
"`/prototype-plan`: the top review surface should show `Design` and, when the",
|
|
1318
|
+
"flow needs interaction, `Prototype`.",
|
|
1319
|
+
"",
|
|
1320
|
+
"## When To Use",
|
|
1321
|
+
"",
|
|
1322
|
+
"Use this for UI-heavy work where brand, visual hierarchy, polished layout, or",
|
|
1323
|
+
"interaction feel are material to the decision. Skip it for small copy, spacing,",
|
|
1324
|
+
"or obvious component changes.",
|
|
1325
|
+
"",
|
|
1326
|
+
"## Research First",
|
|
1327
|
+
"",
|
|
1328
|
+
"Before creating the plan:",
|
|
1329
|
+
"",
|
|
1330
|
+
"1. Inspect the real app shell, routes, components, CSS variables, Tailwind",
|
|
1331
|
+
" tokens, theme files, and any relevant screenshots.",
|
|
1332
|
+
"2. If `design.md` exists, treat it as the primary design brief and pass its",
|
|
1333
|
+
" important content into `create-plan-design.designMd`.",
|
|
1334
|
+
"3. If a `.fig` local-copy file or parsed brand kit is available, use the",
|
|
1335
|
+
" Design/brand-kit parsing actions from the app or shared tooling first, then",
|
|
1336
|
+
" pass the extracted token summary into `brandKit`.",
|
|
1337
|
+
"4. Parse existing codebase style info when possible: CSS custom properties,",
|
|
1338
|
+
" Tailwind config, global CSS, font declarations, spacing/radius tokens, and",
|
|
1339
|
+
" component conventions. Pass the compact evidence into `codebaseStyles`.",
|
|
1340
|
+
"5. Ground every screen in actual product content. Avoid lorem ipsum, generic",
|
|
1341
|
+
" marketing filler, and placeholder gray boxes unless designing an explicit",
|
|
1342
|
+
" loading state.",
|
|
1343
|
+
"",
|
|
1344
|
+
"## Create The Plan",
|
|
1345
|
+
"",
|
|
1346
|
+
"Call `create-plan-design` with:",
|
|
1347
|
+
"",
|
|
1348
|
+
"- `title`, `brief`, `repoPath`, and any `implementationNotes`.",
|
|
1349
|
+
"- `designMd`, `brandKit`, `codebaseStyles`, or `designNotes` when available.",
|
|
1350
|
+
"- `screens`: one to six full-fidelity HTML/CSS screen fragments. Each screen",
|
|
1351
|
+
" must include a bounded `html` fragment, optional scoped `css`, a `surface`,",
|
|
1352
|
+
" and stable `data-design-id` attributes on elements a reviewer might edit.",
|
|
1353
|
+
"- `transitions` only when the Prototype tab should support true screen/step",
|
|
1354
|
+
' navigation. Use `data-goto="screen-id"` in the screen HTML for those controls.',
|
|
1355
|
+
"",
|
|
1356
|
+
"The Design tab is the visual source of truth. The Prototype tab is for behavior",
|
|
1357
|
+
"and should reuse the same visual styling where practical. Do not create a",
|
|
1358
|
+
"separate design direction in the prototype.",
|
|
1359
|
+
"",
|
|
1360
|
+
"## Full-Fidelity HTML Rules",
|
|
1361
|
+
"",
|
|
1362
|
+
"- Write bounded fragments only: no `<html>`, `<head>`, `<body>`, `<script>`,",
|
|
1363
|
+
" `<style>`, external imports, iframes, SVG, or executable URLs.",
|
|
1364
|
+
"- Put CSS in the screen `css` field. The renderer scopes it to the artboard.",
|
|
1365
|
+
"- Use real CSS and CSS variables. Tailwind-like class names are fine only when",
|
|
1366
|
+
" the provided `css` defines them or the classes are harmless semantic hooks.",
|
|
1367
|
+
'- Use `renderMode: "design"` on design screen data when authoring full',
|
|
1368
|
+
" structured content directly.",
|
|
1369
|
+
'- Add `data-design-id="meaningful-name"` to editable elements such as hero',
|
|
1370
|
+
" panels, key buttons, cards, nav items, pricing rows, chart panels, and state",
|
|
1371
|
+
" chips. Keep ids stable and descriptive.",
|
|
1372
|
+
"- Keep the design responsive within the selected surface. Text must not clip,",
|
|
1373
|
+
" overlap, or rely on viewport-sized type.",
|
|
1374
|
+
"",
|
|
1375
|
+
"## Targeted Style Edits",
|
|
1376
|
+
"",
|
|
1377
|
+
"When a reviewer selects an element in the Design tab or asks for a specific",
|
|
1378
|
+
"style change, avoid regenerating the whole plan. Use:",
|
|
1379
|
+
"",
|
|
1380
|
+
"```json",
|
|
1381
|
+
"{",
|
|
1382
|
+
' "op": "update-design-element-style",',
|
|
1383
|
+
' "frameId": "frame-overview",',
|
|
1384
|
+
' "elementId": "primary-cta",',
|
|
1385
|
+
' "styles": {',
|
|
1386
|
+
' "background-color": "#0f766e",',
|
|
1387
|
+
' "border-radius": "10px"',
|
|
1388
|
+
" }",
|
|
1389
|
+
"}",
|
|
1390
|
+
"```",
|
|
1391
|
+
"",
|
|
1392
|
+
"Use `frameId` for inline canvas designs or `blockId` for a referenced wireframe",
|
|
1393
|
+
"block. Set a style value to `null` to remove it. Use `patch-wireframe-html` or",
|
|
1394
|
+
"`patch-prototype-html` for text/content changes inside a fragment.",
|
|
1395
|
+
"",
|
|
1396
|
+
"## Document Handoff",
|
|
1397
|
+
"",
|
|
1398
|
+
"Below the visual surface, keep the document concise and implementation-oriented:",
|
|
1399
|
+
"actual files and symbols, state/actions/contracts, open questions, risks, and",
|
|
1400
|
+
"verification. The document should not repeat the same screens in prose.",
|
|
1401
|
+
"",
|
|
1402
|
+
"Before implementation, call `get-plan-feedback` and treat comments, selected",
|
|
1403
|
+
"element details, and recent review events as the source of truth.",
|
|
1404
|
+
"",
|
|
1405
|
+
"## Related Skills",
|
|
1406
|
+
"",
|
|
1407
|
+
"- `visual-plan`",
|
|
1408
|
+
"- `ui-plan`",
|
|
1409
|
+
"- `prototype-plan`",
|
|
1410
|
+
"- `frontend-design`",
|
|
1411
|
+
].join("\n") + "\n";
|
|
1057
1412
|
export const VISUAL_QUESTIONS_SKILL_MD = `---
|
|
1058
1413
|
name: visual-questions
|
|
1059
1414
|
description: >-
|
|
@@ -1069,8 +1424,8 @@ metadata:
|
|
|
1069
1424
|
Use \`/visual-questions\` when the next best step is not a plan yet, but a
|
|
1070
1425
|
reviewable visual intake: single-choice chips, multi-select chips, freeform
|
|
1071
1426
|
notes, mockup choices, sketch diagrams, and a generated answer summary that feeds
|
|
1072
|
-
the next planning prompt. It composes with \`/visual-plan\`, \`/ui-plan\`,
|
|
1073
|
-
\`/visualize-plan\`.
|
|
1427
|
+
the next planning prompt. It composes with \`/visual-plan\`, \`/ui-plan\`,
|
|
1428
|
+
\`/prototype-plan\`, \`/plan-design\`, and \`/visualize-plan\`.
|
|
1074
1429
|
|
|
1075
1430
|
## When To Use
|
|
1076
1431
|
|
|
@@ -1081,11 +1436,11 @@ the next planning prompt. It composes with \`/visual-plan\`, \`/ui-plan\`, and
|
|
|
1081
1436
|
than answering text-only prompts.
|
|
1082
1437
|
|
|
1083
1438
|
Gate hard: skip this for tiny, unambiguous changes. If the agent can reasonably
|
|
1084
|
-
infer the answer, prefer \`/ui-plan
|
|
1085
|
-
assumptions in the plan.
|
|
1439
|
+
infer the answer, prefer \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`, or
|
|
1440
|
+
\`/visual-plan\` directly and put assumptions in the plan.
|
|
1086
1441
|
|
|
1087
1442
|
Visual questions are an explicit intake command, not an automatic preflight for
|
|
1088
|
-
\`/visual-plan
|
|
1443
|
+
\`/visual-plan\`, \`/ui-plan\`, \`/prototype-plan\`, or \`/plan-design\`.
|
|
1089
1444
|
|
|
1090
1445
|
## Workflow
|
|
1091
1446
|
|
|
@@ -1094,10 +1449,12 @@ Visual questions are an explicit intake command, not an automatic preflight for
|
|
|
1094
1449
|
2. Omit \`questions\` for the default UI intake. Provide a custom \`questions\` array
|
|
1095
1450
|
only when the task has domain-specific choices.
|
|
1096
1451
|
3. Surface the returned Plans link and ask the user to answer visually.
|
|
1097
|
-
4. The generated summary drives the next step: \`create-ui-plan\` for UI
|
|
1452
|
+
4. The generated summary drives the next step: \`create-ui-plan\` for static UI
|
|
1453
|
+
review, \`create-prototype-plan\` for click-through UI flows,
|
|
1454
|
+
\`create-plan-design\` for high-fidelity branded UI review,
|
|
1098
1455
|
\`create-visual-plan\` for general plans, \`visualize-plan\` when a text plan
|
|
1099
|
-
already exists, or \`update-visual-plan\` with targeted \`contentPatches\` to
|
|
1100
|
-
answers into an active plan.
|
|
1456
|
+
already exists, or \`update-visual-plan\` with targeted \`contentPatches\` to
|
|
1457
|
+
fold answers into an active plan.
|
|
1101
1458
|
5. If the user leaves comments, call \`get-plan-feedback\` before using the answers.
|
|
1102
1459
|
|
|
1103
1460
|
## Question Types
|
|
@@ -1132,6 +1489,10 @@ desktop/mobile pair for a popover, panel, or component.
|
|
|
1132
1489
|
- \`get-visual-plan\`: inspect the current visual question plan.
|
|
1133
1490
|
- \`get-plan-feedback\`: read comments before creating or updating the next plan.
|
|
1134
1491
|
- \`create-ui-plan\`: create a UI-first plan from the answers.
|
|
1492
|
+
- \`create-prototype-plan\`: create a prototype-first plan from the answers when
|
|
1493
|
+
interaction feel matters.
|
|
1494
|
+
- \`create-plan-design\`: create a high-fidelity branded design plan from the
|
|
1495
|
+
answers when visual polish is the primary review input.
|
|
1135
1496
|
- \`create-visual-plan\`: create a general visual plan from the answers.
|
|
1136
1497
|
- \`visualize-plan\`: enrich an existing text plan after answers are gathered.
|
|
1137
1498
|
- \`export-visual-plan\`: export answer plans as HTML, Markdown fallback,
|
|
@@ -1152,8 +1513,8 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
1152
1513
|
agent-native skills add visual-plan
|
|
1153
1514
|
\`\`\`
|
|
1154
1515
|
|
|
1155
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/
|
|
1156
|
-
\`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1516
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
1517
|
+
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1157
1518
|
register the connector without authenticating, then run
|
|
1158
1519
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
1159
1520
|
|
|
@@ -1181,8 +1542,8 @@ export const VISUALIZE_PLAN_SKILL_MD = `---
|
|
|
1181
1542
|
name: visualize-plan
|
|
1182
1543
|
description: >-
|
|
1183
1544
|
Convert an existing Codex, Claude Code, Markdown, or pasted plan into an
|
|
1184
|
-
Agent-Native Plans visual companion with diagrams, wireframes,
|
|
1185
|
-
feedback.
|
|
1545
|
+
Agent-Native Plans visual companion with diagrams, wireframes, prototypes,
|
|
1546
|
+
annotations, and feedback.
|
|
1186
1547
|
metadata:
|
|
1187
1548
|
visibility: exported
|
|
1188
1549
|
---
|
|
@@ -1192,8 +1553,14 @@ metadata:
|
|
|
1192
1553
|
Use \`/visualize-plan\` when a plan already exists and the user wants it easier to
|
|
1193
1554
|
review. The native Codex or Claude Code plan can stay where it is; Agent-Native
|
|
1194
1555
|
Plans creates a structured visual companion beside it — diagrams, wireframes,
|
|
1195
|
-
state sketches, option cards, and comment prompts instead
|
|
1196
|
-
still reads like a plan, not a marketing page.
|
|
1556
|
+
state sketches, functional prototypes, option cards, and comment prompts instead
|
|
1557
|
+
of a wall of text. It still reads like a plan, not a marketing page.
|
|
1558
|
+
|
|
1559
|
+
Use \`/prototype-plan\` instead when the user wants a functional prototype as the first
|
|
1560
|
+
artifact and there is no text plan to preserve. When a text plan already exists,
|
|
1561
|
+
\`/visualize-plan\` should decide whether it needs no visual surface, canvas only,
|
|
1562
|
+
or canvas + prototype; call \`convert-visual-plan-to-prototype\` after
|
|
1563
|
+
visualization when its HTML wireframes should drive a prototype review.
|
|
1197
1564
|
|
|
1198
1565
|
## Plan Discipline
|
|
1199
1566
|
|
|
@@ -1205,30 +1572,66 @@ still reads like a plan, not a marketing page.
|
|
|
1205
1572
|
edits while building or reviewing the companion.
|
|
1206
1573
|
- **The companion is the approval gate.** Ask the user to review and approve the
|
|
1207
1574
|
direction before you write code, and name which files/areas the work touches.
|
|
1208
|
-
Carry unresolved assumptions and open questions into a
|
|
1209
|
-
guessing silently.
|
|
1575
|
+
Carry answerable unresolved assumptions and open questions into a bottom
|
|
1576
|
+
\`question-form\` block instead of guessing silently.
|
|
1210
1577
|
|
|
1211
1578
|
## Workflow
|
|
1212
1579
|
|
|
1213
1580
|
1. Gather the existing plan text from the user's paste, a referenced file, or
|
|
1214
1581
|
recent visible agent context. Do not invent the source plan. If no plan text
|
|
1215
|
-
exists and the work is UI-heavy, use \`/ui-plan\` instead.
|
|
1582
|
+
exists and the work is UI-heavy, use \`/ui-plan\` or \`/prototype-plan\` instead.
|
|
1216
1583
|
2. Call \`visualize-plan\` with \`planText\`, \`title\`, \`brief\`, \`source\`, and
|
|
1217
1584
|
\`repoPath\` when available.
|
|
1218
1585
|
3. Surface the returned Plans link or inline MCP App.
|
|
1219
|
-
4.
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1586
|
+
4. Decide the top visual surface with the rules below, then enrich the import
|
|
1587
|
+
with \`update-visual-plan\` (prefer targeted \`contentPatches\`): add canvas
|
|
1588
|
+
wireframes for user-visible UI, add \`content.prototype\` for multi-step flows,
|
|
1589
|
+
add diagrams for architecture or data flow, add option cards for real
|
|
1590
|
+
tradeoffs, and add explicit open questions. Apply the two cores below — the
|
|
1591
|
+
companion must meet the same quality bar as a fresh plan, not be a thinner
|
|
1592
|
+
ruleset. Label inferred visuals as inferred. When the user wants
|
|
1593
|
+
source-control friendly edits, use \`patch-visual-plan-source\` against the MDX
|
|
1594
|
+
files instead of regenerating the plan. If the user asks to make the visual
|
|
1595
|
+
companion functional and the canvas contains HTML wireframes, call
|
|
1596
|
+
\`convert-visual-plan-to-prototype\`.
|
|
1226
1597
|
5. Ask the user to react, then call \`get-plan-feedback\` before implementing,
|
|
1227
1598
|
after review, and before the final response.
|
|
1228
1599
|
6. Treat imported text as source material. The structured visual plan and
|
|
1229
1600
|
comments are the review surface; HTML is the export receipt. Do not replace a
|
|
1230
1601
|
native plan unless the user asks.
|
|
1231
1602
|
|
|
1603
|
+
## Visual Surface Choice
|
|
1604
|
+
|
|
1605
|
+
Choose the surface after reading the source plan and before enriching it. Do not
|
|
1606
|
+
add visual chrome by default:
|
|
1607
|
+
|
|
1608
|
+
- **No visual surface** when the imported plan is architecture-only,
|
|
1609
|
+
backend-only, data migration, copy-only, or otherwise non-visual. Keep the
|
|
1610
|
+
companion as a strong document and add diagrams only when relationships need a
|
|
1611
|
+
visual explanation.
|
|
1612
|
+
- **Canvas only** when the source plan includes one static screen, a before/after
|
|
1613
|
+
comparison, a component state, a small popover, or a visual direction that does
|
|
1614
|
+
not require clicking. Put those wireframes in \`content.canvas\` and omit
|
|
1615
|
+
\`content.prototype\`.
|
|
1616
|
+
- **Canvas + prototype** when the source plan describes a multi-step UI flow,
|
|
1617
|
+
meaningful interactive app behavior, onboarding, wizard, review/approval flow,
|
|
1618
|
+
navigation change, or any sequence the reviewer needs to operate. Keep the
|
|
1619
|
+
static wireframes in
|
|
1620
|
+
\`content.canvas\`, add the aligned functional prototype in
|
|
1621
|
+
\`content.prototype\`, and rely on the top visual tabs to switch between them.
|
|
1622
|
+
- **Prototype-first conversion** when an already-visualized plan's HTML
|
|
1623
|
+
wireframes should become functional. Use \`convert-visual-plan-to-prototype\` for
|
|
1624
|
+
an existing canvas, or \`update-visual-plan\` with \`set-prototype\` when the
|
|
1625
|
+
imported plan needs a hand-authored prototype that does not map cleanly from
|
|
1626
|
+
the canvas. Keep static mocks unless the user explicitly asks to remove them.
|
|
1627
|
+
|
|
1628
|
+
For mixed canvas + prototype companions, reuse the same real labels, states, and
|
|
1629
|
+
screen ids across both surfaces. The canvas is the inspectable static reference;
|
|
1630
|
+
the prototype is the interactive version of that same flow, not a separate
|
|
1631
|
+
design direction. If the imported plan only has text, add HTML wireframes before
|
|
1632
|
+
calling \`convert-visual-plan-to-prototype\`; never convert a diagram-only or
|
|
1633
|
+
empty canvas into a fake prototype.
|
|
1634
|
+
|
|
1232
1635
|
<!-- SHARED-CORE:wireframe-canvas START -->
|
|
1233
1636
|
|
|
1234
1637
|
## Wireframe & Canvas Core
|
|
@@ -1389,13 +1792,18 @@ hex colors:
|
|
|
1389
1792
|
</div>
|
|
1390
1793
|
\`\`\`
|
|
1391
1794
|
|
|
1392
|
-
**Mockups belong
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1795
|
+
**Mockups belong in the top visual review area.** Static visuals live on the
|
|
1796
|
+
canvas; multi-step flows get both canvas wireframes and a prototype. When the
|
|
1797
|
+
user asks for a mockup, UI state, loading state, layout, screen, or visual
|
|
1798
|
+
comparison, make the canvas the primary home for that static visual. When the
|
|
1799
|
+
user asks for a prototype or the plan contains a sequence the reviewer must
|
|
1800
|
+
feel, keep the canvas artboards and add \`content.prototype\` so the top surface
|
|
1801
|
+
shows Wireframes / Prototype tabs. Document blocks can explain, compare, or map
|
|
1802
|
+
implementation, but they should not host the primary mockup or prototype just
|
|
1803
|
+
because \`custom-html\`, screenshots, or prose are easier to produce. If the
|
|
1804
|
+
canvas/prototype surface cannot represent the requested fidelity, still keep the
|
|
1805
|
+
closest top-surface representation and call out or extend the needed renderer
|
|
1806
|
+
capability.
|
|
1399
1807
|
|
|
1400
1808
|
**Legacy kit tree.** Older plans set a \`screen\` array of \`{ el, ...props }\` kit
|
|
1401
1809
|
nodes instead of \`html\`; the renderer still accepts and displays it, but new
|
|
@@ -1427,12 +1835,14 @@ behavior). Replace vague prose with specifics; never ship a step like "make it
|
|
|
1427
1835
|
work." No hero art, gradients, logos, nav bars, slogans, value props, giant
|
|
1428
1836
|
landing-page headings, or marketing cards unless the user explicitly asks.
|
|
1429
1837
|
|
|
1430
|
-
**
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1838
|
+
**Top visuals and document never duplicate each other.** The UI story lives in
|
|
1839
|
+
the top visual surface: canvas artboards for static inspection, plus prototype
|
|
1840
|
+
tabs when the flow should be functional. The document carries the technical depth
|
|
1841
|
+
the visuals cannot show — concrete file/symbol maps, API and data contracts,
|
|
1842
|
+
code snippets, migration or implementation phases, risks, and validation. Repeat
|
|
1843
|
+
a wireframe in the document only for a genuinely new detail view or comparison.
|
|
1844
|
+
Skip the visual surface entirely for non-visual work and write a clean rich
|
|
1845
|
+
document.
|
|
1436
1846
|
|
|
1437
1847
|
**Use the right block, and make it carry substance.** For the authoritative,
|
|
1438
1848
|
machine-checked list of block types and their data schemas, call \`get-plan-blocks\`
|
|
@@ -1455,9 +1865,14 @@ so you never emit a block the editor cannot render or round-trip:
|
|
|
1455
1865
|
visual unless the tab is intentionally document-only.
|
|
1456
1866
|
- \`table\`, \`checklist\`, \`callout\` for scannable structure.
|
|
1457
1867
|
|
|
1458
|
-
**Open questions
|
|
1459
|
-
|
|
1460
|
-
|
|
1868
|
+
**Open questions live at the bottom as a form when answers would change the
|
|
1869
|
+
plan.** Surface answerable unresolved decisions in a final \`question-form\`
|
|
1870
|
+
block titled "Open Questions". Use \`single\` or \`multi\` for clear choices,
|
|
1871
|
+
\`freeform\` for constraints, \`recommended: true\` for the default you would pick,
|
|
1872
|
+
and option \`wireframe\` / \`diagram\` previews for visual directions when useful.
|
|
1873
|
+
Keep non-answerable assumptions or risks as concise \`callout\` blocks in the
|
|
1874
|
+
relevant section. Never bury a questions/decisions wall inside the plan
|
|
1875
|
+
narrative.
|
|
1461
1876
|
|
|
1462
1877
|
**\`custom-html\` is a bounded escape hatch only** — a single complete fragment
|
|
1463
1878
|
inside a block, never \`html\`/\`head\`/\`body\`/\`script\` tags, never a generic
|
|
@@ -1489,15 +1904,19 @@ designer notes sit spaced off the frame, pointing only at the controls that need
|
|
|
1489
1904
|
explanation. Below it, a Claude/Codex-grade document: objective and
|
|
1490
1905
|
done-criteria, an \`implementation-map\` naming the real components and actions
|
|
1491
1906
|
with short highlighted snippets, a \`decision\` card weighing two real approaches,
|
|
1492
|
-
and a validation step — none of it repeating the canvas.
|
|
1907
|
+
and a validation step — none of it repeating the canvas. If the task also
|
|
1908
|
+
changes a multi-step completion flow, the same top area includes a Prototype tab
|
|
1909
|
+
whose screens use the same labels and states as the canvas artboards, with
|
|
1910
|
+
\`data-goto\` controls for the sequence. This is the bar.
|
|
1493
1911
|
|
|
1494
1912
|
**BAD.** A \`data.html\` with hard-coded hex colors, a \`font-family\`, or fixed
|
|
1495
1913
|
pixel width/height; gray placeholder bars "insinuating" text on a non-skeleton
|
|
1496
1914
|
frame; a forced desktop + mobile pair for a popover; floating bordered
|
|
1497
1915
|
annotation cards hugging the frames; a fresh hand-authored kit-tree \`screen\`
|
|
1498
|
-
instead of \`html\`; a
|
|
1499
|
-
|
|
1500
|
-
|
|
1916
|
+
instead of \`html\`; a multi-step UI flow with only static frames and no prototype
|
|
1917
|
+
tab; a mockup escaped into a document \`custom-html\` block; and a marketing-style
|
|
1918
|
+
document with a hero heading and value props that just restates what the canvas
|
|
1919
|
+
already shows. Never produce this.
|
|
1501
1920
|
|
|
1502
1921
|
<!-- SHARED-CORE:exemplar END -->
|
|
1503
1922
|
|
|
@@ -1505,15 +1924,24 @@ what the canvas already shows. Never produce this.
|
|
|
1505
1924
|
|
|
1506
1925
|
- \`visualize-plan\`: create the visual companion from the existing text plan.
|
|
1507
1926
|
- \`update-visual-plan\`: enrich the import; prefer targeted \`contentPatches\` over
|
|
1508
|
-
replacing the whole content.
|
|
1927
|
+
replacing the whole content. Use \`set-prototype\`, \`patch-prototype-html\`,
|
|
1928
|
+
\`update-prototype-screen\`, and \`patch-wireframe-html\` when revising
|
|
1929
|
+
functional prototype flows or their static frame counterparts.
|
|
1930
|
+
- \`convert-visual-plan-to-prototype\`: convert an existing HTML wireframe canvas
|
|
1931
|
+
into a functional prototype while preserving static mocks by default.
|
|
1932
|
+
- \`create-prototype-plan\`: use only when the user wants a prototype-first plan
|
|
1933
|
+
and there is no existing plan text that \`/visualize-plan\` should preserve.
|
|
1509
1934
|
- \`read-visual-plan-source\`: read the normalized plan as \`plan.mdx\`,
|
|
1510
|
-
optional \`canvas.mdx\`, optional \`.plan-state.json\`,
|
|
1935
|
+
optional \`canvas.mdx\`, optional \`prototype.mdx\`, optional \`.plan-state.json\`,
|
|
1936
|
+
and JSON.
|
|
1511
1937
|
- \`patch-visual-plan-source\`: apply granular MDX AST patches by stable block,
|
|
1512
|
-
artboard, annotation, component, or wireframe-node id.
|
|
1938
|
+
artboard, annotation, component, prototype screen, or wireframe-node id.
|
|
1513
1939
|
- \`import-visual-plan-source\`: create or replace a plan from an MDX folder.
|
|
1514
1940
|
- \`get-visual-plan\`: inspect the current structured plan, exported HTML, and
|
|
1515
1941
|
annotations; it also returns the MDX folder for source workflows.
|
|
1516
|
-
- \`get-plan-feedback\`: read unconsumed reviewer comments before coding
|
|
1942
|
+
- \`get-plan-feedback\`: read unconsumed reviewer comments before coding; it
|
|
1943
|
+
returns grouped threads, exact anchor details, expected resolver, and recent
|
|
1944
|
+
review-event payloads so agents can act only on the comments meant for them.
|
|
1517
1945
|
- \`export-visual-plan\`: export HTML, Markdown fallback, structured JSON, and MDX
|
|
1518
1946
|
files for repo check-in.
|
|
1519
1947
|
|
|
@@ -1533,8 +1961,8 @@ intended), so the first tool call does not hit an OAuth wall:
|
|
|
1533
1961
|
agent-native skills add visual-plan
|
|
1534
1962
|
\`\`\`
|
|
1535
1963
|
|
|
1536
|
-
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/
|
|
1537
|
-
\`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1964
|
+
After that, \`/visual-plan\` (and \`/ui-plan\`, \`/prototype-plan\`, \`/plan-design\`,
|
|
1965
|
+
\`/visual-questions\`, \`/visualize-plan\`) generate a plan and open the editor. Pass \`--no-connect\` to
|
|
1538
1966
|
register the connector without authenticating, then run
|
|
1539
1967
|
\`agent-native connect https://plan.agent-native.com\` whenever you are ready.
|
|
1540
1968
|
|
|
@@ -1650,6 +2078,8 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
1650
2078
|
extraSkills: {
|
|
1651
2079
|
"visual-questions": VISUAL_QUESTIONS_SKILL_MD,
|
|
1652
2080
|
"ui-plan": UI_PLAN_SKILL_MD,
|
|
2081
|
+
"prototype-plan": PROTOTYPE_PLAN_SKILL_MD,
|
|
2082
|
+
"plan-design": PLAN_DESIGN_SKILL_MD,
|
|
1653
2083
|
"visualize-plan": VISUALIZE_PLAN_SKILL_MD,
|
|
1654
2084
|
},
|
|
1655
2085
|
manifest: normalizeAppSkillManifest({
|
|
@@ -1664,7 +2094,7 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
1664
2094
|
mcp: { serverName: "agent-native-plans" },
|
|
1665
2095
|
auth: {
|
|
1666
2096
|
mode: "oauth",
|
|
1667
|
-
setup: "Install with the Agent-Native CLI to add /visual-plan, /
|
|
2097
|
+
setup: "Install with the Agent-Native CLI to add the /visual-plan, /ui-plan, /prototype-plan, /plan-design, /visual-questions, and /visualize-plan skills plus the Plans MCP connector. Authenticate only for hosted/account-backed sharing.",
|
|
1668
2098
|
},
|
|
1669
2099
|
surfaces: [
|
|
1670
2100
|
{
|
|
@@ -1684,6 +2114,18 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
1684
2114
|
path: "/plans",
|
|
1685
2115
|
description: "Create a UI-first Agent-Native plan with an optional top pan/zoom wireframe canvas and a refined rich document below.",
|
|
1686
2116
|
},
|
|
2117
|
+
{
|
|
2118
|
+
id: "prototype-plan",
|
|
2119
|
+
action: "create-prototype-plan",
|
|
2120
|
+
path: "/plans",
|
|
2121
|
+
description: "Create a prototype-first Agent-Native plan with a functional live prototype above the document.",
|
|
2122
|
+
},
|
|
2123
|
+
{
|
|
2124
|
+
id: "plan-design",
|
|
2125
|
+
action: "create-plan-design",
|
|
2126
|
+
path: "/plans",
|
|
2127
|
+
description: "Create a full-fidelity Agent-Native design plan with a Design canvas tab and optional matching Prototype tab.",
|
|
2128
|
+
},
|
|
1687
2129
|
{
|
|
1688
2130
|
id: "visualize-plan",
|
|
1689
2131
|
action: "visualize-plan",
|
|
@@ -1706,6 +2148,16 @@ const BUILT_IN_APP_SKILLS = {
|
|
|
1706
2148
|
visibility: "exported",
|
|
1707
2149
|
exportAs: "ui-plan",
|
|
1708
2150
|
},
|
|
2151
|
+
{
|
|
2152
|
+
path: "skills/prototype-plan",
|
|
2153
|
+
visibility: "exported",
|
|
2154
|
+
exportAs: "prototype-plan",
|
|
2155
|
+
},
|
|
2156
|
+
{
|
|
2157
|
+
path: "skills/plan-design",
|
|
2158
|
+
visibility: "exported",
|
|
2159
|
+
exportAs: "plan-design",
|
|
2160
|
+
},
|
|
1709
2161
|
{
|
|
1710
2162
|
path: "skills/visualize-plan",
|
|
1711
2163
|
visibility: "exported",
|
|
@@ -1778,6 +2230,13 @@ const BUILT_IN_APP_SKILL_ALIASES = {
|
|
|
1778
2230
|
"visual-question": "visual-plans",
|
|
1779
2231
|
"ui-plan": "visual-plans",
|
|
1780
2232
|
"ui-plans": "visual-plans",
|
|
2233
|
+
"prototype-plan": "visual-plans",
|
|
2234
|
+
"prototype-plans": "visual-plans",
|
|
2235
|
+
"plan-design": "visual-plans",
|
|
2236
|
+
"plan-designs": "visual-plans",
|
|
2237
|
+
"design-plan": "visual-plans",
|
|
2238
|
+
"design-plans": "visual-plans",
|
|
2239
|
+
prototype: "visual-plans",
|
|
1781
2240
|
"visualize-plan": "visual-plans",
|
|
1782
2241
|
"visualize-plans": "visual-plans",
|
|
1783
2242
|
"html-plan": "visual-plans",
|
|
@@ -1803,6 +2262,8 @@ const BUILT_IN_APP_SKILL_DISPLAY_ALIASES = {
|
|
|
1803
2262
|
"visual-plan",
|
|
1804
2263
|
"visual-questions",
|
|
1805
2264
|
"ui-plan",
|
|
2265
|
+
"prototype-plan",
|
|
2266
|
+
"plan-design",
|
|
1806
2267
|
"visualize-plan",
|
|
1807
2268
|
"html-plan",
|
|
1808
2269
|
"plannotate",
|