CtrlK
BlogDocsLog inGet started
Tessl Logo

extension-points

How extensions render as widgets inside other apps via named UI slots — the framework's optional extension system. Use when an extension-enabled app needs to wire an ExtensionSlot or make an existing one-off custom block installable into a slot.

68

Quality

85%

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

82%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 well-crafted single-file skill: concrete code and commands for both extension authors and app hosts, clearly sequenced workflows with failure-mode guidance, and disciplined delegation of substrate detail to sibling skills. The main improvement opportunity is consolidating the repeated back-compat naming disclaimers into a single table and moving lifecycle/permissions reference detail out of the main file.

Suggestions

Consolidate the six scattered back-compat naming notes (tool_slots/EmbeddedTool/toolClassName/toolFetch/agent-native-tool-resize/legacy import path) into one short 'Legacy names' table near the terminology note to cut repetition.

Move the Lifecycle and Permissions internals into a references file (e.g. references/lifecycle.md) and keep a two-line summary in SKILL.md, tightening progressive disclosure.

Add an explicit verification step to the authoring workflow (e.g. confirm the install renders via list-extensions-for-slot or the ≤2s sync note) to close the workflow-clarity gap.

DimensionReasoningScore

Conciseness

The body assumes Claude's competence throughout (no explanation of iframes, React, or postMessage) and every section carries framework-specific detail, but the back-compat naming disclaimer pattern repeats roughly six times ('tool_slots... for back-compat', 'still exported as EmbeddedTool', 'toolClassName kept for back-compat', 'toolFetch / toolData legacy aliases', 'agent-native-tool-resize... kept for back-compat', legacy import path) where one consolidated naming table would do.

4 / 5

Actionability

Fully executable end to end: a complete Alpine.js HTML example, a copy-paste tsx snippet with import path and props, exact agent-action invocations with concrete slot IDs, and a decision flow covering the common user request; there are no meaningful gaps.

5 / 5

Workflow Clarity

The authoring flow is a clearly numbered three-step sequence (create, declare target, install) plus a typical-flow decision branch, and failure paths are addressed ('won't render anywhere — the install record is harmless', 'null-check fields and fail gracefully'); it falls short of 5 only because there is no explicit post-install verification step.

4 / 5

Progressive Disclosure

No bundle files exist, and substrate details are properly delegated to sibling skills via a clearly signaled one-level-deep 'Cross-references' section with well-organized sections throughout; a minor gap is that lifecycle and permissions internals (~40 lines of reference-grade detail) are inlined in SKILL.md rather than split into a reference file.

4 / 5

Total

17

/

20

Passed

Description

83%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 concrete capability, scopes itself to the framework's optional extension system, and provides an explicit, specific 'Use when' trigger clause. Third-person voice and slot-specific vocabulary keep it distinct from neighboring skills.

DimensionReasoningScore

Specificity

Names several concrete capabilities ('render as widgets inside other apps via named UI slots', 'wire an ExtensionSlot', 'make an existing one-off custom block installable into a slot') in third person, with minor coverage gaps such as declaring slots in an app.

4 / 5

Completeness

Explicitly answers both what ('How extensions render as widgets inside other apps via named UI slots — the framework's optional extension system') and when with a concrete 'Use when...' clause naming two specific triggers; the when-clause is specific, not merely present.

5 / 5

Trigger Term Quality

Good natural-keyword coverage ('widgets', 'slots', 'extensions', 'ExtensionSlot', 'custom block', 'installable') that a user would plausibly say, though common synonyms like 'embed' or 'panel' are missing.

4 / 5

Distinctiveness Conflict Risk

The slot-system framing ('named UI slots', 'wire an ExtensionSlot') carves a clear niche distinct from generic extension authoring, with only minor overlap risk against the sibling 'extensions' skill.

4 / 5

Total

17

/

20

Passed

Validation

87%

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

Validation — 14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

metadata_field

'metadata' should map string keys to string values

Warning

Total

14

/

16

Passed

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.