CtrlK
BlogDocsLog inGet started
Tessl Logo

generative-ui

Generate transient or saved inline chat UI with Alpine/Tailwind controls, outputs, app state, and extensions. Use for knobs, pickers, calculators, dashboards, widgets, or reusable mini-apps.

64

Quality

81%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

75%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.

A dense, environment-specific reference that tells the agent exactly which tools to pick and which APIs to call, with executable code for the core input/output paths. The gaps are minor: an unresolved <id> placeholder in the readAppState example, undocumented signatures for the data-access helpers, and a restated recap that could be tightened.

Suggestions

Make the readAppState example concrete by showing how the extension id is obtained or an actual value instead of the '<id>' placeholder.

Add one-line signatures or a minimal example for appAction, appFetch, and extensionFetch since they are prescribed without usage details.

Trim the recap sentence at the end of 'Transient extensionData Boundary' that repeats the output/app-state guidance from earlier sections.

DimensionReasoningScore

Conciseness

The body is lean and assumes competence — no explanation of Alpine.js or Tailwind basics — but the closing recap in 'Transient extensionData Boundary' ('use agentNative.ui.output, application state through appFetch, an appAction, or agentNative.chat.send') restates guidance from earlier sections and could be trimmed.

4 / 5

Actionability

The slotContext and agentNative.ui.output examples are concrete and executable, but readAppState("inline-ui:<id>:output") uses an unresolved <id> placeholder, and appAction, appFetch, and extensionFetch are named without signatures or usage examples — minor gaps that keep it below fully copy-paste-ready.

4 / 5

Workflow Clarity

'Pick the Lifetime' provides an unambiguous four-way decision list up front and sections are logically sequenced (lifetime, inputs, outputs, data, styling). No validation checkpoints are needed since nothing is destructive or batch, but there is no explicit multi-step sequence with checkpoints either — clear structure, not a fully checkpointed workflow.

4 / 5

Progressive Disclosure

Well-organized sections in a self-contained skill with no bundle files to reference. At roughly 110 lines, API-detail material (the output payload schema, chat.send semantics, the extensionData boundary rules) is inlined where it could arguably live in a one-level-deep reference file — good structure with minor organization gaps.

4 / 5

Total

16

/

20

Passed

Description

78%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 compact, third-person description that clearly states what the skill does and when to use it, with natural trigger terms. Its main weakness is specificity: a single 'Generate' verb carries the whole capability list instead of naming the distinct actions (create, save, reopen, update) the skill actually supports.

Suggestions

List the distinct actions as verbs rather than one — e.g. 'Create, update, and reopen transient or saved inline chat UI...' to raise specificity.

Add one or two missing natural trigger terms such as 'forms' or 'interactive controls' to broaden trigger coverage.

DimensionReasoningScore

Specificity

The description names the domain ('inline chat UI with Alpine/Tailwind controls, outputs, app state, and extensions') but rests on a single action verb ('Generate') — it does not list several distinct concrete actions like create, save, update, or reopen, matching the '1-2 concrete actions, but not comprehensive' anchor.

3 / 5

Completeness

It explicitly answers both 'what' ('Generate transient or saved inline chat UI with Alpine/Tailwind controls, outputs, app state, and extensions') and 'when' ('Use for knobs, pickers, calculators, dashboards, widgets, or reusable mini-apps') with concrete trigger phrases, matching anchor 5.

5 / 5

Trigger Term Quality

'knobs, pickers, calculators, dashboards, widgets, or reusable mini-apps' are natural phrases users would say, with only minor gaps ('chart', 'form', 'control panel') — good coverage but not the comprehensive synonym-level sweep of anchor 5.

4 / 5

Distinctiveness Conflict Risk

The sandboxed inline Alpine/Tailwind chat-UI niche is clearly distinct, but somewhat broad triggers like 'dashboards' and 'widgets' create minor overlap risk with general frontend or charting skills — mostly distinct, not a clear minimal-conflict niche.

4 / 5

Total

16

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
BuilderIO/agent-native
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.