CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

netlify-functions

Write, configure, and deploy Netlify serverless functions in TypeScript, JavaScript, or Go. Use this when adding an API endpoint or backend route, adding a contact form handler, wiring auth or Identity signup/login hooks, identifying which Netlify user is calling a private or team-login-protected app, building streaming or AI-proxy responses, scheduling cron jobs, running long background jobs (batch processing/scraping), reacting to deploy or form events, setting up rate limiting or region/memory config, or reading environment variables and secrets inside a function. Covers file locations, the Request/Context/Response handler shape, path routing, config options, and local testing with netlify dev.

Quality

88%

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

The canonical home for this skill is netlify-functions in netlify/context-and-tools

SKILL.md
Quality
Evals
Security

Quality

Content

71%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 body is a dense, highly actionable Netlify Functions reference with copy-paste-ready examples, precise limits, and well-flagged pitfalls — clearly written by and for competent agents. Its weaknesses are structural: a ~68-line house-rules appendix that duplicates the body, leaked build-tooling comments, and no use of reference files to split the long tail of detail out of SKILL.md.

Suggestions

Collapse the duplicated "house rules" appendix: fold the non-duplicated rules (implement the work end to end; suspect tooling version skew before removing config.background) into their relevant body sections and drop the rest, which the body already states.

Move the long-tail catalogues — the platform-event handler table, region airport codes, memory/vCPU details, and the Legacy/Go section — into references/ files linked one level deep from SKILL.md, keeping the main body to the minimal-function, routing, context, and testing essentials.

Strip internal build artifacts ("<!-- Gap: ... -->" and the "system: agent-context/functions/system.md" ctx-gen marker) from the rendered skill, or keep them in the build source so they never consume consumer context or reference paths that don't ship in the bundle.

DimensionReasoningScore

Conciseness

The documentation body is lean and assumes competence (e.g., "⚠️ Same-name JS and TS files: the JS one wins"), but the trailing "Netlify house rules" appendix (~68 lines) restates rules already in the body — geo mocked under netlify dev (line 93 vs rule 5), no speculative memory/vcpu (lines 264–269 vs rule 6), headers apply only to static CDN responses (line 43 vs rule 13), context.user handling (line 97 vs rule 16). Internal build comments ("<!-- Gap: docs only show the .js/.ts same-name precedence -->", the ctx-gen system marker) add further noise. The duplication is more than minor, so this sits below the efficient-but-trimmable anchor.

3 / 5

Actionability

Every section ships executable, copy-paste-ready code with imports and config exports (hello.mts, travel.mts, whoami.mts, on-deploy.mts, the lambda-compat wrapper), concrete commands ("netlify dev --geo=mock --country=DE", "netlify functions:invoke <name>"), TOML snippets, and hard numeric limits (60s/20MB/256KB/4KB). The common cases — minimal function, custom path, scheduled, background, event handler — are each covered by a complete example.

5 / 5

Workflow Clarity

The write→configure→test→deploy progression is logically sequenced with concrete per-phase commands (authoring examples first, then "Local testing & deploy" with framework-specific dev servers and "netlify functions:invoke <name>"). It falls short of a 5 because verification is implicit rather than an explicit checkpoint loop — "verify on a deploy" and the version-skew checking guidance appear only in the appendix, not as a validate-before-deploy step.

4 / 5

Progressive Disclosure

The single file is well-organized with clear section headers and ⚠️ markers, but all ~320 lines are inlined: the platform-event handler catalogue, region/memory details, legacy Lambda compatibility, and the house-rules appendix would each fit a references/ file linked one level deep. The "system: agent-context/functions/system.md" comment also points to a path outside the bundle, signaling a reference the consumer cannot resolve.

3 / 5

Total

15

/

20

Passed

Description

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

An exemplary description: it states concrete capabilities in third person, enumerates ten natural-language trigger scenarios covering the skill's full surface, and stays tightly scoped to Netlify functions. Each clause carries a distinct trigger or capability, so the length reflects genuine coverage rather than padding.

DimensionReasoningScore

Specificity

"Write, configure, and deploy Netlify serverless functions in TypeScript, JavaScript, or Go" names the domain and multiple concrete actions, and "Covers file locations, the Request/Context/Response handler shape, path routing, config options, and local testing with netlify dev" closes remaining coverage gaps. This matches the anchor for multiple specific concrete actions with comprehensive coverage, not the level below, which requires minor gaps in coverage.

5 / 5

Completeness

It explicitly answers both questions: the what ("Write, configure, and deploy Netlify serverless functions... Covers file locations, the Request/Context/Response handler shape, path routing, config options") and the when ("Use this when adding an API endpoint or backend route..." with ten concrete trigger phrases). This is the anchor-5 pattern of a clear what plus explicit concrete triggers, not merely an explicit-but-generic when clause.

5 / 5

Trigger Term Quality

The trigger list is comprehensive and phrased the way users actually ask: "adding an API endpoint or backend route", "adding a contact form handler", "wiring auth or Identity signup/login hooks", "scheduling cron jobs", "running long background jobs (batch processing/scraping)", "setting up rate limiting or region/memory config", and "reading environment variables and secrets". No natural term category for this domain is missing.

5 / 5

Distinctiveness Conflict Risk

"Netlify" qualifies every capability ("Netlify serverless functions", "which Netlify user is calling a private or team-login-protected app", "Identity signup/login hooks"), carving out a clear niche with Netlify-specific triggers and minimal conflict risk against generic backend or deployment skills.

5 / 5

Total

20

/

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

netlify/context-and-tools

Path

agent-plugin/skills/netlify-functions/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.