CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

chat

Chat SDK renderer for json-render that turns JSON specs into native chat cards (Block Kit on Slack, Adaptive Cards on Teams, and the card format of other Chat SDK adapters). Use when working with @json-render/chat, building bots that post rich messages with tables, charts, fields, or buttons, streaming a generated card into a chat thread, or when the user mentions Chat SDK, Slack Block Kit, or Teams Adaptive Cards together with json-render.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

90%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An excellent, dense skill body: executable quick-start code, a concrete spec example, and API-specific facts (nesting limits, dead bindings, expansion caps, platform limits) with no padding. The only gaps are minor — error recovery for the streaming path is unspecified, and the full spec example keeps the body a bit longer than a pure overview.

DimensionReasoningScore

Conciseness

Every section carries API-specific knowledge Claude could not infer — 'An inner Card renders as a titled section, because chat cards cannot nest', '$bindState and $bindItem have no effect because posted messages have no inputs', 'Expansion stops at maxElements (default 1000 elements and table rows)' — with zero explanation of known concepts. Matches 'lean and efficient; assumes Claude's competence; every token earns its place'; the 4 anchor's over-explanation instances are absent.

5 / 5

Actionability

The Quick start is complete, copy-paste-ready TypeScript covering the primary streaming use case, and secondary APIs are given concretely — 'toCard(spec, options) converts a complete spec', 'Pass limits … for example { tables: 1, charts: 2 } for Slack', 'cardToSlackBlocks from @chat-adapter/slack/blocks'. Matches 'fully executable; copy-paste ready code or commands; specific examples cover the common cases'; not 4 because no guidance is left at the hint or pseudocode level.

5 / 5

Workflow Clarity

The Quick start sequences the full flow (defineCatalog → streamText with catalog.prompt() → streamCard) and the Validation section gives an explicit feedback loop — 'toCard throws CardSpecError with an issues array … Send the issues back to the model to repair the spec' — matching 'clear sequence with most checkpoints present; minor validation gaps'. Not 5 because the primary streamCard path only says it 'finishes with a validated card' without specifying error recovery if the stream produces an invalid spec; not 3 because a concrete validate-and-repair loop is explicitly written for toCard.

4 / 5

Progressive Disclosure

The body is well-organized into six clearly headed sections (Quick start, Spec structure, State/repeat/visibility, Validation and limits, Runtime) and no bundle files exist, so nothing is mis-placed across files. Matches 'good structure; most content is appropriately placed; minor organization gaps' — the ~30-line JSON spec example is inline and the body runs ~80 lines, beyond the under-50-line case where sections alone would earn a 5; not 3 because nothing that clearly belongs in a separate reference file is inlined.

4 / 5

Total

18

/

20

Passed

Description

87%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it states a clear capability in third person, enumerates the concrete platforms supported, and provides an explicit 'Use when' clause with natural trigger phrases. Keyword coverage is good though a few plain-language variations are missing, and only two core actions are named.

DimensionReasoningScore

Specificity

Quotes concrete actions — 'turns JSON specs into native chat cards (Block Kit on Slack, Adaptive Cards on Teams, and the card format of other Chat SDK adapters)' and 'streaming a generated card into a chat thread' — which matches the 'several specific actions; minor gaps' anchor. Not 5 because only two core actions are named (conversion and streaming), less comprehensive than the 5-anchor's multi-action example; not 3 because the actions are specific and multi-platform rather than minimal or generic.

4 / 5

Completeness

Explicitly answers both: what ('Chat SDK renderer for json-render that turns JSON specs into native chat cards…') and when ('Use when working with @json-render/chat, building bots…, streaming a generated card…, or when the user mentions Chat SDK, Slack Block Kit, or Teams Adaptive Cards together with json-render'). This matches the 5 anchor's clear what + when with concrete trigger phrases; the 4 anchor's weaker 'when' does not apply.

5 / 5

Trigger Term Quality

Includes natural terms users would say — 'Chat SDK', 'Slack Block Kit', 'Teams Adaptive Cards', '@json-render/chat', 'building bots that post rich messages with tables, charts, fields, or buttons' — matching 'good keyword coverage; a few natural terms missing'. Not 5 because common variations like bare 'chat cards', 'Slack bots', or 'posting cards to Slack/Teams' are absent and the platform terms are gated by 'together with json-render'; not 3 because coverage goes well beyond a single keyword with platform synonyms included.

4 / 5

Distinctiveness Conflict Risk

Clear niche (json-render chat card rendering) with distinct triggers tied to specific platform names, and the 'together with json-render' qualifier further reduces false triggering — matching 'clear niche with distinct triggers; minimal conflict risk'. Not 4 because overlap risk with generic chat/messaging skills is negligible given the tightly scoped triggers.

5 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Repository

vercel-labs/json-render

Path

skills/chat/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.