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.

65

Quality

79%

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

Fix and improve this skill with Tessl

tessl review fix ./.agents/skills/extension-points/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

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

The content is highly actionable with executable code and clear multi-step workflows, well-structured and assuming of Claude's competence. It loses a little on conciseness due to repeated back-compat caveats and on workflow clarity due to mostly-implicit rather than explicit validation checkpoints.

Suggestions

Consolidate the scattered back-compat notes ('tool_slots' / 'EmbeddedTool' / 'toolClassName' / legacy import paths) into a single 'Back-compat aliases' subsection to reduce repeated verbosity.

Add explicit validation checkpoints to the authoring flow, e.g., after declaring a slot target, verify with `list-extensions-for-slot` that it appears before installing.

Make cross-references to sibling skills more visually signaled (e.g., a short 'Prerequisites: read the `extensions` skill first' line) so the dependency ordering is unambiguous.

DimensionReasoningScore

Conciseness

The body is mostly lean and assumes Claude's competence (terse tables, short primitives, no basic-concept padding), with minor over-explanation in the extensive back-compat asides ('still physically named', 'kept for back-compat') that could be trimmed.

4 / 5

Actionability

Provides copy-paste-ready code for both extension authoring (Alpine.js HTML reading window.slotContext) and slot declaration (tsx import + props), plus executable action invocations like 'add-extension-slot-target { extensionId: ..., slotId: ... }' covering the common cases.

5 / 5

Workflow Clarity

Sequences are clear (the 3-step authoring flow and the typical 'add a CRM widget' flow with numbered steps), but validation/checkpoint feedback loops are largely implicit (e.g., 'pick up the install on its next render') rather than explicit verify-then-proceed steps.

4 / 5

Progressive Disclosure

Well-organized into clear sections with a useful 'What this is NOT' and 'Cross-references' pointing one level deep to sibling skills; no bundle files exist, and the content is appropriately self-contained with minor gaps in signaling some references.

4 / 5

Total

17

/

20

Passed

Description

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

The description is concrete, third-person, and answers both what and when with explicit trigger guidance, placing it solidly in the upper range. Its main weakness is a slightly narrow action set and minor overlap with the closely related `extensions` skill.

Suggestions

Add one or two more concrete actions (e.g., 'declare a slot in app JSX', 'install or uninstall a widget into a slot') to broaden specificity coverage.

Include natural synonym phrasings users might say, such as 'widget slots' or 'embed a widget in an app', to improve trigger-term coverage.

Sharpen the 'when' clause to separate this skill from the `extensions` skill, e.g., 'Use when wiring slots specifically, not when authoring an extension itself.'

DimensionReasoningScore

Specificity

Lists several concrete actions ('render as widgets inside other apps via named UI slots', 'wire an ExtensionSlot', 'make an existing one-off custom block installable into a slot'), though coverage is somewhat narrow around the slot-wiring niche rather than a broad action set.

4 / 5

Completeness

Clearly answers 'what' (how extensions render as widgets via named UI slots) and 'when' ('Use when an extension-enabled app needs to wire an ExtensionSlot...'), with the 'when' explicit but somewhat conditional and could be more specific.

4 / 5

Trigger Term Quality

Includes natural terms users would say ('extension-enabled app', 'ExtensionSlot', 'custom block', 'installable into a slot') but lacks synonym coverage and common variations, missing a few natural phrasings.

4 / 5

Distinctiveness Conflict Risk

The slot-wiring niche is fairly distinct from sibling skills like `extensions`, but there is residual overlap risk since it shares the extension primitive and could be confused with the general `extensions` skill.

4 / 5

Total

16

/

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.

Validation14 / 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.