ADE Mosaic cards

SkillCommunication

Use this skill when you want to ask the user for structured input (choices, toggles, numbers, short text, approvals) inside an ADE chat. Emit a fenced mosaic code block and ADE renders it as a native interactive card; the user's answers come back as your next user message.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the ADE Mosaic cards skill

What this skill tells your AI

The instructions your AI receives, as published by arul28/ade in apps/desktop/resources/agent-skills/ade-mosaic/SKILL.md and read by ahel’s review.

Emit a fenced code block with language mosaic containing strict JSON. ADE desktop renders it as an interactive card in the transcript. When the user submits, their selections arrive as the next user message: readable lines plus a json fence with {"mosaic":1,"values":{...}} keyed by element id.

The card is data only — no expressions, no code, no host actions. If the JSON is malformed or uses unknown element types or versions, ADE shows the raw fence instead, so validate your JSON.

Terminal (TUI) chats show a one-line summary; iOS shows the raw fence. Ask plain-text questions when the user is likely not on desktop.

Schema (v1)

Top level: {"v": 1, "title"?, "submitLabel"?, "elements": [...]} — 1 to 24 elements. Interactive elements need a unique id.

ElementShape
Text{"type":"text","text":"..."}
Single select{"type":"select","id":"env","label"?,"options":[{"value":"prod","label"?}],"value"?}
Multi select{"type":"multiselect","id":"features","label"?,"options":[...],"values"?}
Number / slider{"type":"number","id":"n","label"?,"min"?,"max"?,"step"?,"value"?} (renders a slider when both min and max are set)
Short text{"type":"input","id":"name","label"?,"placeholder"?,"value"?,"maxLength"?}
Approve / deny{"type":"approval","id":"go","label"?,"approveLabel"?,"denyLabel"?}
Key-value table{"type":"table","rows":[{"key":"...","value":"..."}]} (display only)

Limits: 40 options per select, 50 table rows, labels ≤ 200 chars, values ≤ 1000 chars.

Example

{
  "v": 1,
  "title": "Release checklist",
  "elements": [
    {"type": "text", "text": "v1.3.0 is tagged and CI is green."},
    {"type": "table", "rows": [
      {"key": "Commits", "value": "18"},
      {"key": "Risk", "value": "low"}
    ]},
    {"type": "select", "id": "channel", "label": "Channel",
     "options": [{"value": "beta"}, {"value": "stable"}], "value": "beta"},
    {"type": "multiselect", "id": "targets", "label": "Targets",
     "options": [{"value": "mac"}, {"value": "ios"}]},
    {"type": "number", "id": "rollout", "label": "Rollout %", "min": 5, "max": 100, "step": 5, "value": 25},
    {"type": "approval", "id": "ship", "label": "Publish the release?"}
  ],
  "submitLabel": "Send"
}

Guidance

  • text and table are display-only, so a card needs at least one interactive element to be submittable; use the display rows for the context the user needs to decide.
  • Do NOT use a mosaic card for plan approval or permission prompts — ADE has dedicated native surfaces for those.

Signals

GitHub stars
104
Forks
12
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
ade-mosaic
Source
github.com/arul28/ade