CtrlK
BlogDocsLog inGet started
Tessl Logo

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, 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.

70

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

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.

A dense, highly actionable reference: nearly all code is copy-paste executable, limits and gotchas are exact, and local-testing checkpoints are embedded at the risky spots. The two real weaknesses are the ~55-line duplicated 'house rules' section (which also contains maintainer-only meta rules) and the absence of any progressive disclosure — a 360-line monolith with the event-handler, region, and legacy/Go references all inlined where separate reference files belong.

Suggestions

Remove the appended 'Netlify house rules' section from the rendered body — its operative rules (mocked geo/ip, region/memory admonitions, 4 KB env-var cap, [[headers]] scope) are already stated inline at their point of use, and the merge artifact plus authoring rules (10–15) waste ~55 lines of context.

Split the platform-event handler reference (deploy/identity/form event tables), the Legacy/Go section, and the region airport-code list into references/ files linked one level deep from short summary sections, giving the main file a quick-start-to-advanced gradient.

Add an explicit validate-then-ship step to the Local testing section (e.g. 'run netlify functions:invoke and confirm on a deploy preview before declaring done') to close the local-mock vs. production gap that the geo and bundled-files warnings each describe separately.

DimensionReasoningScore

Conciseness

The body is mostly dense, fact-only reference material (terse bullets, tables like the Identity-events deny/mutate matrix, exact limits '60s execution, 20 MB response'), but the appended 'Netlify house rules' section duplicates content already stated inline — e.g. rules 5–9 restate the mocked 'context.geo'/'context.ip' warning, the region/memory admonitions, the '[[headers]]' rule, and the ~4 KB env-var limit verbatim, and rules 10–15 are instructions to skill authors about what the body must contain, not guidance for using the skill. That is ~55 lines of unnecessary duplication, matching the score-3 anchor ('mostly efficient but includes some unnecessary explanation or could be tightened'); score 4 would require only minor trimming, but this duplication is a whole padded section, so score 4 overstates it, and score 2's pervasive explainer padding understates how lean the rest is.

3 / 5

Actionability

Nearly every section is copy-paste-ready executable code with exact commands and values: the minimal handler ('export default async (req: Request, context: Context) => new Response("Hello, world!")'), path routing with 'path: "/travel-guide/:city/:country"', purgeCache, the OpenAI streaming proxy, background and scheduled config blocks, and netlify.toml snippets. Concrete commands and exact limits are given throughout ('netlify dev --geo=mock --country=DE', 'netlify functions:invoke <name>'). This matches the score-5 anchor ('Fully executable; copy-paste ready code or commands; specific examples cover the common cases'); the only placeholders (e.g. 'messages: [/* ... */]' in the streaming proxy) are inputs the user must supply, not missing detail, so score 4's 'minor gaps' does not apply.

5 / 5

Workflow Clarity

The write → test → deploy sequence is present with concrete checkpoints: 'verify on a real deploy' after exercising mocked geo branches locally, 'Scheduled functions don't fire on a schedule locally — invoke once with netlify functions:invoke <name>', 'After changing region, redeploy', and 'then redeploy' after the runtime override. This matches the score-4 anchor ('clear sequence with most checkpoints present; minor validation gaps'). Score 5 is not earned because there is no explicit validate-then-proceed loop for the local-to-production gap beyond scattered ⚠️ notes (e.g. the bundled-files ENOENT trap has a workaround but no 'confirm in production' step), and score 3 would ignore that checkpoints are consistently embedded at each risky transition.

4 / 5

Progressive Disclosure

The body has clear section headers and strong internal organization, but there are no bundle files at all — references/, scripts/, assets/ are absent — so everything is inlined in one ~360-line file. Content that clearly belongs one level deep is inline: the Legacy/Go Lambda-compat migration, the full platform-event handler reference (deploy/identity/form event tables), and the airport-code region list. This matches the score-3 anchor ('some structure... content that should be separate is inline') rather than score 4 ('most content is appropriately placed'), since none of the reference material is split out; score 2 is avoided because headers make navigation easy and nothing is buried.

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, gives an explicit 'Use this when' clause packed with natural user-trigger phrases and synonyms, and is firmly anchored to the Netlify-functions niche with minimal conflict risk. It is long, but every clause is a distinct trigger or capability, not padding, so the verbosity guideline is not violated in substance.

DimensionReasoningScore

Specificity

Quotes: 'Write, configure, and deploy Netlify serverless functions in TypeScript, JavaScript, or Go' and 'Covers file locations, the Request/Context/Response handler shape, path routing, config options, and local testing with netlify dev' — multiple concrete capabilities (write/configure/deploy, path routing, local testing) with comprehensive coverage of the domain. This matches the score-5 anchor ('Lists multiple specific concrete actions; comprehensive coverage') and exceeds the score-4 example, which shows only three actions with gaps; nothing here is vague or generic.

5 / 5

Completeness

The 'what' is explicit ('Write, configure, and deploy Netlify serverless functions in TypeScript, JavaScript, or Go... Covers file locations, the Request/Context/Response handler shape, path routing, config options') and the 'when' is explicit with an 'Use this when...' clause listing concrete triggers (API endpoint, form handler, auth hooks, streaming/AI-proxy, cron, background jobs, deploy/form events, rate limiting, env vars). This exactly matches the score-5 good example pattern and is clearly above the score-4 anchor where 'when' is present but less specific.

5 / 5

Trigger Term Quality

Quotes: 'adding an API endpoint or backend route', 'adding a contact form handler', 'scheduling cron jobs', 'running long background jobs', 'reacting to deploy or form events', 'setting up rate limiting', 'reading environment variables and secrets'. These are the exact natural phrases a user would say when needing this skill, with synonyms covered (API endpoint/backend route, env vars/secrets, cron jobs) plus product terms (Netlify, serverless functions, netlify dev). Matches the score-5 anchor's 'comprehensive coverage of natural terms including synonyms'; score 4 ('a few natural terms missing') would understate the coverage here.

5 / 5

Distinctiveness Conflict Risk

The description is anchored to a clear niche — 'Netlify serverless functions' — with product-specific triggers ('Identity signup/login hooks', 'netlify dev', 'deploy or form events') that no generic serverless or docs skill would claim. It matches the score-5 anchor ('Clear niche with distinct triggers; minimal conflict risk'); the score-4 anchor's 'minor overlap risk with closely related skills' (e.g., PDF vs Word) does not apply since the platform-specific terms disambiguate fully.

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