CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

netlify-forms

Serverless form handling on Netlify-hosted sites — detects HTML forms at deploy time, stores submissions, filters spam, and sends notifications. Use when adding a contact form, lead-capture form, file-upload form, or newsletter signup to a Netlify site; wiring AJAX form submission; setting up a custom thank-you page; adding a honeypot or reCAPTCHA to a form; getting forms working in Next.js, Nuxt, SvelteKit, Astro, or Gatsby; reading form submissions via the Netlify API; setting up submission notifications or ChatGPT automations on form submission events; or debugging missing submissions and forms that silently fail to register.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

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

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 high-quality, dense reference: every section delivers non-obvious, Netlify-specific facts with executable code, exact limits, and a strong diagnostic checklist. The main defects are the duplicated trailing 'house rules' section (which re-states seven rules already in the body) and the absence of explicit post-setup verification checkpoints.

Suggestions

Deduplicate the trailing 'Netlify house rules (forms)' section: its seven rules (SSR POST target, Link-header paging, skeleton file, Astro on-demand routes, Akismet false positive, extensionless action paths, documented-surfaces-only) already appear in the body sections — keep one copy and drop the other to reclaim ~30 lines of tokens.

Add an explicit verification checkpoint to the setup workflows, e.g. after deploying a new form: 'submit a real test (real email, full sentences — test submissions get spam-flagged) and confirm it appears in Forms > Verified/Spam before finishing', turning the reactive debugging section into a proactive feedback loop.

Remove or externalize build artifacts that consume context without aiding the model: the ctx-gen merge comment ('edit system.md, not this section') and the two trailing 'Gap:' HTML comments could move to the human-owned source file instead of the rendered skill.

DimensionReasoningScore

Conciseness

The body is dense and assumes Claude's competence (no basic-concept explanations), but the trailing "Netlify house rules (forms)" section restates ~7 rules already covered verbatim above (SSR POST target, Link-header paging, skeleton file, Astro on-demand routes, Akismet false positive, extensionless action paths), and the ctx-gen merge preamble plus gap comments add redundant tokens. This fits 'Mostly efficient but... could be tightened'; it is not score 4 because the duplication is a substantial trim target (~17% of the body), not a minor instance of over-explanation.

3 / 5

Actionability

Guidance is fully executable throughout: copy-paste HTML/JSX/JS code blocks, exact attributes (data-netlify, netlify-honeypot, data-netlify-recaptcha), exact env vars (SITE_RECAPTCHA_KEY/SECRET), exact limits (8 MB, 30 s, 24 h), exact UI paths, and exact API query (?state=spam). This matches 'Fully executable; copy-paste ready code or commands; specific examples cover the common cases'.

5 / 5

Workflow Clarity

Scenario workflows are clearly sequenced (e.g., JS-rendered forms: skeleton file + matching form-name input, with SSR and Astro gotchas called out) and the debugging section is an explicit error-recovery checklist with feedback loops (check Spam list and mark verified; confirm detection is enabled and redeploy; verify skeleton field names). It falls short of 5 because the setup workflows lack an explicit verification checkpoint (e.g., 'submit a test and confirm it appears after deploy') — checkpoints appear only reactively in the debugging section.

4 / 5

Progressive Disclosure

The body is well organized into task-oriented sections with clear headers, flagged warnings, and clearly labeled external links, and each section is short enough that inlining is appropriate for a single-file skill with no bundle files. This fits 'Good structure; most content is appropriately placed... minor organization gaps'; it is not score 5 because nothing is layered into reference files and the duplicated house-rules appendix is an organizational defect, and not score 3 because the content is not a reference dump that clearly belongs in separate files.

4 / 5

Total

16

/

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 and scenario-rich 'Use when...' clause with natural trigger terms, and is tightly scoped to Netlify-hosted sites so conflict risk is minimal. Every dimension sits at the top anchor without padding or over-claiming.

DimensionReasoningScore

Specificity

The description lists multiple concrete, specific actions — "detects HTML forms at deploy time, stores submissions, filters spam, and sends notifications" — covering the full form-handling lifecycle (detection, storage, filtering, notification, API reading, debugging). This matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage'; it is not score 4 because there are no meaningful coverage gaps for the domain.

5 / 5

Completeness

Both 'what' and 'when' are explicitly and concretely answered: the 'what' is "Serverless form handling on Netlify-hosted sites — detects HTML forms at deploy time, stores submissions, filters spam, and sends notifications", and the 'when' is an explicit "Use when..." clause with a long list of concrete trigger scenarios. This exactly matches the anchor 'Clearly and explicitly answers both what AND when with concrete trigger phrases'.

5 / 5

Trigger Term Quality

Natural trigger phrases users would actually say are comprehensively covered: "contact form", "lead-capture form", "file-upload form", "newsletter signup", "AJAX form submission", "custom thank-you page", "honeypot", "reCAPTCHA", framework names (Next.js, Nuxt, SvelteKit, Astro, Gatsby), "reading form submissions via the Netlify API", and "debugging missing submissions". These are synonyms and phrasings a user would naturally produce; not score 4 because no common variations are missing.

5 / 5

Distinctiveness Conflict Risk

The description is scoped to a clear niche — "Serverless form handling on Netlify-hosted sites" — with all triggers anchored to Netlify ("a Netlify site", "the Netlify API", "Netlify site" framework setups). It matches the anchor 'Clear niche with distinct triggers; minimal conflict risk'; generic form work on other platforms would not trigger it.

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

codex/skills/netlify-forms/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.