CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

setup-python-tools

Pyodide Python tools for an already-approved in-app useAtlasChat UI. EOS sidebar Python tools run from agent CDF config — do not vendor Pyodide. Triggers: Pyodide, pythonRuntime, usePyodideRuntime, runPythonCode.

Quality

65%

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 ./skills/setup-python-tools/SKILL.md
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 tight, well-sequenced setup guide with pinned versions, per-package-manager commands, and copy-paste wiring examples — appropriately concise and clearly structured. Its main flaws are the absence of any verification step and small internal inconsistencies (the stray 'useDune()' call, undefined placeholders) that keep the code from being fully turnkey.

Suggestions

Add a short final verification step (e.g. run the app, send a test message, confirm the Python runtime pill appears and resolves) so the workflow has a validation checkpoint.

Fix the Step 3 snippet's 'const { sdk, isLoading } = useDune();' — the hook name is inconsistent with the rest of the skill and its provenance is never explained; align it with how 'sdk' is actually obtained.

Consider moving the hook API reference table and loading-state JSX into a small references file to keep the main flow lean and improve progressive disclosure.

DimensionReasoningScore

Conciseness

The body is lean and assumes competence — it never explains what Pyodide or React hooks are, and every section carries new information ('Install exactly pyodide@0.29.3… This version must match the CDN artifacts'). Minor trims exist: the ~30MB load cost and timing ('~30-60s', 'cached after first load') is stated twice (intro and Step 3), and the hook API table plus loading-UI JSX could be slightly condensed — hence 4 rather than 5.

4 / 5

Actionability

Guidance is mostly copy-paste ready: per-package-manager pinned install commands ('pnpm add pyodide@0.29.3'), complete wiring snippets for usePyodideRuntime and useAtlasChat, and concrete disabled-state JSX. It falls short of 5 because the Step 3 snippet calls an unexplained 'useDune()' inconsistent with the surrounding code, and placeholders like 'renderTimeSeries' / 'handleSend' appear without being introduced — small gaps the reader must repair.

4 / 5

Workflow Clarity

Steps 1-5 are clearly sequenced with a prerequisite block and a 'read these files before touching anything' first step, plus explicit ordering constraints ('Place the loading indicator above the chat input, not in the message list'). No verification checkpoint exists (e.g. confirming the runtime loads or a build passes), which is a minor gap typical of anchor 4 rather than 5; the skill is not destructive/batch, so no workflow cap applies.

4 / 5

Progressive Disclosure

No bundle files exist, and the body is well-sectioned with each topic (install, hook, wiring, input state) in its own short section — good structure with everything appropriately placed at one level. It scores 4 rather than 5 because at ~155 lines the hook API reference table and the loading-state UI JSX are borderline candidates for a separate reference file, and no 'references' split is signalled.

4 / 5

Total

16

/

20

Passed

Description

41%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 distinct and niche-specific but fails at its primary jobs: it never states concrete capabilities (no action verbs at all) and its trigger terms are API identifiers rather than natural user language. It reads as an internal scoping note for someone who already knows the skill exists, not a self-describing trigger.

Suggestions

State the concrete action up front, e.g. 'Sets up client-side Python tool execution via Pyodide for an in-app useAtlasChat UI' — currently the description contains no verb or capability statement.

Replace or augment the 'Triggers:' list of code identifiers (usePyodideRuntime, runPythonCode) with natural trigger phrases a user would actually say, e.g. 'Use when adding Python execution or Pyodide-based tools to an Atlas chat app'.

Add an explicit 'Use when…' clause covering the positive case (app uses useAtlasChat and needs agent Python tools) and the negative case (EOS sidebar apps should skip this), instead of the terse 'do not vendor Pyodide' aside.

DimensionReasoningScore

Specificity

The description names the domain ('Pyodide Python tools for an already-approved in-app useAtlasChat UI') but contains no verbs or concrete actions — it never says what the skill does (set up, configure, wire up). This matches anchor 2 ('names the domain but actions are minimal or generic'), not anchor 3 which requires 1-2 concrete stated actions.

2 / 5

Completeness

The 'what' is only weakly discernible (enabling Python tools in a useAtlasChat UI is implied, never stated as a capability), and the 'when' exists only as a bare 'Triggers:' list of technical terms with no 'Use when…' clause. Per the guideline capping completeness at 3 without explicit trigger guidance, and anchor 3 ('what present but when weakly implied'), this fits 3 rather than 4 (no clear explicit when) or 2 (a what is at least discernible).

3 / 5

Trigger Term Quality

'Triggers: Pyodide, pythonRuntime, usePyodideRuntime, runPythonCode' are mostly code-level identifiers (hook and tool-config names) rather than natural phrases a user would say; only 'Pyodide' is a term a user might naturally utter. This sits between anchor 1 ('only technical jargon') and anchor 3 ('some relevant keywords'), fitting anchor 2 best.

2 / 5

Distinctiveness Conflict Risk

The Pyodide/useAtlasChat/EOS-sidebar framing carves a clear niche with distinct trigger terms and even a boundary warning ('do not vendor Pyodide'), giving minimal conflict risk. It scores 4 rather than 5 because the description never states its actual purpose (setup), so a generic 'run Python in the browser with Pyodide' request could plausibly match it or a sibling skill.

4 / 5

Total

11

/

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

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

metadata_version

'metadata.version' is missing

Warning

Total

14

/

16

Passed

Repository

cognitedata/builder-skills

Path

skills/setup-python-tools/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.