Adaptive Cards reference
Claresia wraps every skill response in an Adaptive Card. This gives a consistent visual layout across Teams, Outlook, Webex, the browser extension, and (via a 1:1 schema mapping) Slack Block Kit.
The standard Card has:
- A header with skill title + invocation context
- A body rendered from the skill’s output (Markdown supported)
- A footer with cost, latency, tokens
- Actions —
View record,Re-run, optionallyCapture decision
Canonical Adaptive Card v1.5 shape
Section titled “Canonical Adaptive Card v1.5 shape”{ "type": "AdaptiveCard", "version": "1.5", "$schema": "http://adaptivecards.io/schemas/adaptive-card.json", "metadata": { "claresia": { "skill_id": "gatespic.incident-postmortem", "skill_version": "1.4.2", "tenant_slug": "dainese", "hub_record_id": "01933a8f-..." } }, "body": [ { "type": "Container", "items": [ { "type": "ColumnSet", "columns": [ { "type": "Column", "width": "auto", "items": [ { "type": "Image", "url": "https://docs.claresia.com/brand/claresia-mark.svg", "size": "Small" } ] }, { "type": "Column", "width": "stretch", "items": [ { "type": "TextBlock", "text": "Incident Postmortem", "weight": "Bolder", "size": "Large", "color": "Accent" }, { "type": "TextBlock", "text": "INC-2026-04-1873 · Marco Mazzolin · Firmware Engineer", "isSubtle": true, "spacing": "None" } ] } ] } ] }, { "type": "TextBlock", "text": "## Summary\nA firmware regression in branch `feat/v8-bms` caused…", "wrap": true, "separator": true }, { "type": "FactSet", "facts": [ { "title": "Cost", "value": "$0.04" }, { "title": "Latency", "value": "2.3 s" }, { "title": "Tokens in", "value": "4,823" }, { "title": "Tokens out", "value": "1,421" }, { "title": "Skill version", "value": "1.4.2" } ], "spacing": "Medium" } ], "actions": [ { "type": "Action.OpenUrl", "title": "View record", "url": "https://hub.dainese.claresia.com/records/01933a8f-..." }, { "type": "Action.Submit", "title": "Re-run", "data": { "intent": "rerun", "skill_id": "gatespic.incident-postmortem", "tenant_slug": "dainese" } }, { "type": "Action.Submit", "title": "Capture decision", "style": "positive", "data": { "intent": "decision_capture", "related_record_id": "01933a8f-...", "decision_subject": "approve_postmortem" } } ]}Sections
Section titled “Sections”Header
Section titled “Header”Always shows:
- Claresia mark
- Skill title
- Invocation context: input identifier (e.g., incident_id), user name, archetype
Rendered from the skill’s output_body (Markdown). Headings, lists, tables,
code blocks, links all supported.
Facts (footer)
Section titled “Facts (footer)”Always shows:
- Cost
- Latency
- Tokens in / out
- Skill version
Actions
Section titled “Actions”Always present:
- View record — deep-links to
hub.{tenant_slug}.claresia.com - Re-run — triggers the skill again with the same parameters
Conditionally present (per skill IR):
- Capture decision — opens a follow-up form to log a
decisionHub record - Approve / Reject — for skills that are part of a HITL workflow
Theming
Section titled “Theming”Adaptive Cards use the host’s color theme by default. Claresia ships an
accent color (#8B5CF6 violet) used for headings + the brand mark. In
dark mode (Teams, Outlook), the body text uses default. In light mode,
text is rendered against the host’s background.
Slack Block Kit equivalent
Section titled “Slack Block Kit equivalent”Slack Block Kit is the same canonical Card auto-translated. Field-by-field:
| Adaptive Card | Slack Block Kit |
|---|---|
TextBlock (Large, Bolder) | header block |
TextBlock (Markdown) | section with mrkdwn |
FactSet | section with fields |
Action.OpenUrl | button with url |
Action.Submit | button with value (handled via interactive endpoint) |
metadata.claresia.* | private_metadata (JSON-encoded) |
The translator is part of the Slack distribution plane publish step.
Decision-capture sub-card
Section titled “Decision-capture sub-card”When the user clicks Capture decision, the bot pushes a follow-up Adaptive Card (or Slack modal):
{ "type": "AdaptiveCard", "version": "1.5", "body": [ { "type": "TextBlock", "text": "Capture decision: approve postmortem?", "weight": "Bolder" }, { "type": "Input.ChoiceSet", "id": "decision_outcome", "style": "expanded", "choices": [ { "title": "Approve", "value": "approved" }, { "title": "Approve with changes", "value": "approved_with_changes" }, { "title": "Reject", "value": "rejected" } ] }, { "type": "Input.Text", "id": "decision_rationale", "isMultiline": true, "placeholder": "Brief rationale (1-3 sentences)…" } ], "actions": [ { "type": "Action.Submit", "title": "Submit decision", "style": "positive" }, { "type": "Action.Submit", "title": "Cancel", "data": { "intent": "cancel" } } ]}On submit, a decision Hub record is written, linked to the original output
record via related_records[].
Versioning
Section titled “Versioning”The Card schema is pinned to Adaptive Cards v1.5 (the version Teams, Outlook, and Webex all support as of 2026). When v1.6 ships and reaches >95% client coverage, Claresia bumps the canonical version.
Customization per tenant
Section titled “Customization per tenant”In Command Center → Surfaces → Adaptive Cards → Branding:
- Replace the Claresia mark with your tenant’s logo
- Override the accent color
- Add a custom footer URL (e.g., link to your internal AI policy page)
White-labeling is available on Mode B and Mode C.