CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

vercel-sandbox

Vercel Sandbox guidance — ephemeral Firecracker microVMs for running untrusted code safely. Supports AI agents, code generation, and experimentation. Use when executing user-generated or AI-generated code in isolation.

Quality

80%

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/vercel-sandbox/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

85%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 unusually strong reference body: fully executable examples with explicit validation checkpoints and checklists, packed with non-obvious operational gotchas and no filler. The one structural weakness is progressive disclosure — everything lives inline in SKILL.md with no bundled references, leaving reference-grade material (images, CLI, drives, limits) in the always-loaded file.

Suggestions

Split reference-grade sections (Images, Drives, CLI, Limits and cost) into bundled files under references/ and keep one-line pointers in SKILL.md, e.g. 'See [images.md](references/images.md) for the managed-image table and custom-image builds'.

Trim the duplication between the Best-practice checklist and the body — keep the checklist as terse one-liners and drop the re-explanations (e.g. the full bash -c / exitCode rationale appears in both).

Consolidate the credential-brokering explanation (currently detailed in both Network policy and Running AI agents) into one section and cross-link the applied AI-gateway case to it.

DimensionReasoningScore

Conciseness

The body is dense with non-obvious, API-specific gotchas ("runCommand runs a binary directly — there is no shell", "it does not throw on a non-zero exit", "package lists ship empty, so install fails without it", "listening on 0.0.0.0 (not 127.0.0.1)", "Hooks are per call... a different process resuming via Sandbox.get won't run them") and assumes Claude's competence rather than explaining background concepts. It misses the top anchor only because of minor padding: the Best-practice checklist restates body content nearly verbatim, and credential brokering is explained in both the Network policy and Running AI agents sections.

4 / 5

Actionability

Every section carries copy-paste-ready, executable code covering the common cases: the create/run/stop loop with try/finally, bash -c shell wrapping with an exit-code check, sudo apt-get install, the writeFiles/readFileToBuffer buffer handling with a null guard, the port-poll readiness loop, the snapshot workflow, concrete networkPolicy objects, and CLI commands. Phrases evaluated: "const sandbox = await Sandbox.create(); try { ... } finally { await sandbox.stop(); }", "if (r.exitCode !== 0) throw new Error(await r.stderr())", "sandbox create --name my-box", "sandbox run --rm -- node --version".

5 / 5

Workflow Clarity

The core workflow is explicitly sequenced (create → run → stop, with stop in a finally so a thrown error can't leak a running VM) and includes explicit validation checkpoints: exit-code checks that throw with stderr, a poll-until-the-port-answers loop with retry, a null guard on readFileToBuffer, and a best-practice checklist for the complex cases (untrusted code gets deny-all, short timeout, vcpus: 1, persistent: false). Phrases evaluated: "stop in a finally so a thrown error can't leak a running VM", "if (install.exitCode !== 0) throw new Error(await install.stderr())", "for (let i = 0; i < 30; i++) { ... if ((await ping.stdout()).includes(\"up\")) break; }".

5 / 5

Progressive Disclosure

The body is well-sectioned with clear, navigable headers and working intra-document links, but it is a monolithic ~330-line document with no bundle files at all — reference-style material that would naturally live one level deep (the Images table, Drives details, CLI command list, Limits and cost tables) is fully inlined. This matches the 'content that should be separate is inline' anchor; it avoids a 2 because the sections are well-organized and clearly signaled rather than a wall of text.

3 / 5

Total

17

/

20

Passed

Description

70%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 solid description with an explicit 'Use when...' trigger, third-person voice, and a clearly named, distinctive niche. Its main weakness is specificity: the capability statement leans on a generic use-case list ('Supports AI agents, code generation, and experimentation') instead of enumerating the concrete operations the skill covers.

Suggestions

Replace the generic 'Supports AI agents, code generation, and experimentation' with concrete capabilities, e.g. 'Create ephemeral Firecracker microVMs, run commands and manage files, snapshot or resume sandboxes, and lock down egress with network policies'.

Broaden the 'Use when' clause to cover more natural trigger phrases users would say, such as 'Use when running untrusted, user-generated, or AI-generated code in isolation, sandboxing builds or experiments, or needing a disposable code-execution environment'.

DimensionReasoningScore

Specificity

The description names the domain concretely ("ephemeral Firecracker microVMs for running untrusted code safely") plus one or two concrete actions ("executing user-generated or AI-generated code in isolation"), but "Supports AI agents, code generation, and experimentation" is a generic use-case list rather than concrete capabilities, so coverage is not comprehensive. It sits at the 'domain plus 1-2 concrete actions' anchor rather than the 'several specific actions' anchor, which would list operations like create/run/stop, snapshots, or network policies.

3 / 5

Completeness

Both halves are explicit: what it does ("ephemeral Firecracker microVMs for running untrusted code safely. Supports AI agents, code generation, and experimentation") and an explicit trigger clause ("Use when executing user-generated or AI-generated code in isolation"). It falls just short of the top anchor because the 'when' covers a single condition family rather than the broader set of concrete trigger phrases the domain supports (e.g., sandboxing builds, experiments, or long-running agent workspaces).

4 / 5

Trigger Term Quality

Natural phrases a user would say are present — "untrusted code", "AI agents", "user-generated code", "in isolation", "code generation" — giving good keyword coverage. A few natural variations users might say ("code playground", "sandboxed execution", "isolated environment", "code runner") are missing, matching the 'good coverage, a few natural terms missing' anchor rather than the comprehensive one.

4 / 5

Distinctiveness Conflict Risk

"Vercel Sandbox guidance — ephemeral Firecracker microVMs" establishes a clear, product-specific niche with minimal risk of triggering for unrelated skills. It is not a 5 because the generic word "sandbox" and the broad clause "Supports AI agents, code generation, and experimentation" carry minor overlap risk with other code-isolation or code-generation skills.

4 / 5

Total

15

/

20

Passed

Validation

81%

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

Validation — 13 / 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

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

13

/

16

Passed

Repository

vercel/vercel-plugin

Path

skills/vercel-sandbox/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.