Payload of a companion.skill_card event — the rendered card_template of
a skill whose tool the companion just ran server-side, so your app can show
the result as a CARD instead of only hearing it described in the reply.
The shape is bounded by the skill AUTHOR, not by the model: card_template
is a manifest field written at authoring time, parsed and safety-reviewed at
install. This event carries that template substituted against the skill's own
HTTP response — it is a delivery channel for a declared shape, never an
arbitrary payload the model can compose.
markdown is TEXT, deliberately not HTML: a host handed HTML tends to put it
in innerHTML, and the non-web SDKs cannot use it anyway. Render it with
whatever markdown path your app already has. Placeholders the response did
not fill are stripped, so a card never shows {{price}} to a user.
Delivered only to sessions holding skills.execute — the scope that let the
call happen — and only for skills whose author shipped a template, so a
handler that never fires means "no template", not "no result".
Ordering: like every outbound event it carries the session's monotonic seq,
so it is totally ordered against the companion.message that describes it.
Payload of a
companion.skill_cardevent — the renderedcard_templateof a skill whose tool the companion just ran server-side, so your app can show the result as a CARD instead of only hearing it described in the reply.The shape is bounded by the skill AUTHOR, not by the model:
card_templateis a manifest field written at authoring time, parsed and safety-reviewed at install. This event carries that template substituted against the skill's own HTTP response — it is a delivery channel for a declared shape, never an arbitrary payload the model can compose.markdownis TEXT, deliberately not HTML: a host handed HTML tends to put it ininnerHTML, and the non-web SDKs cannot use it anyway. Render it with whatever markdown path your app already has. Placeholders the response did not fill are stripped, so a card never shows{{price}}to a user.Delivered only to sessions holding
skills.execute— the scope that let the call happen — and only for skills whose author shipped a template, so a handler that never fires means "no template", not "no result".Ordering: like every outbound event it carries the session's monotonic
seq, so it is totally ordered against thecompanion.messagethat describes it.