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

91%

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

SKILL.md
Quality
Evals
Security

Quality

Content

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

Highly actionable and lean reference content with excellent executable examples, precise gotchas (SSR POST target, extensionless action paths), and a well-ordered debugging triage. The two structural weaknesses are the fully duplicated house-rules appendix and the absence of any progressive-disclosure layer for a 200+ line single-file skill.

Suggestions

Remove or deduplicate the trailing 'system.md house rules' section — all seven rules already appear in the main body, so this appendix costs ~35 lines of tokens for zero new information.

Split specialized material into reference files (e.g. references/framework-forms.md for Next.js/Nuxt/SvelteKit/Astro/Gatsby gotchas, references/api.md for submission reading, references/notifications.md for email/ChatGPT setup) and keep SKILL.md as a lean overview with one-level-deep, clearly signaled links.

Promote the debugging section's triage list into an explicit numbered workflow with verification checkpoints (e.g. '1. Check Forms > Form detection is enabled → 2. Query ?state=spam → 3. Verify skeleton field names match exactly'), strengthening the feedback loop for the most common failure scenarios.

DimensionReasoningScore

Conciseness

The body is dense and prescriptive ("Body MUST be URL-encoded. JSON is NOT supported.", "8 MB max request size · 30 s upload timeout"), but the appended "system.md house rules" section (lines ~173–206) restates rules already covered verbatim above — SSR POST target, skeleton file, Astro on-demand routes, Link-header paging, Akismet false positive, extensionless paths — a ~35-line redundancy worth trimming.

4 / 5

Actionability

Fully executable, copy-paste-ready code for static forms, the public/__forms.html skeleton, JSX forms, AJAX submission, file uploads, and honeypots, plus exact UI paths ("Forms > Enable form detection"), env var names, and concrete limits — covering all common cases.

5 / 5

Workflow Clarity

Framework forms are sequenced as "Two required pieces" and the debugging section is an ordered triage list with error-recovery loops ("First suspect: Akismet false positive... check the Spam list... mark it verified"), and the destructive form-deletion op carries a "Export CSV first" checkpoint. It is a recipe collection rather than a single workflow with explicit validation checkpoints, so it falls just short of the top anchor.

4 / 5

Progressive Disclosure

No bundle files exist and all ~206 lines are inline: framework-specific gotchas, API usage, notification setup, and the duplicated house-rules block are reference material that could be split into separate files with SKILL.md as an overview. Section headers are clear and external doc links are used well, but content that should be separate is inline, matching the mid anchor.

3 / 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: concrete capabilities stated in third person, an explicit and thorough "Use when..." clause covering frameworks, features, and debugging scenarios, and unambiguous Netlify scoping. No fluff despite its length — every clause is a distinct trigger or capability.

DimensionReasoningScore

Specificity

"detects HTML forms at deploy time, stores submissions, filters spam, and sends notifications" lists multiple concrete actions covering the full form-handling lifecycle with no capability gaps, matching the comprehensive-coverage anchor.

5 / 5

Completeness

Explicitly answers both parts: what ("Serverless form handling on Netlify-hosted sites — detects... stores... filters spam, and sends notifications") and when ("Use when adding a contact form... or debugging missing submissions"), with an exhaustive, concrete trigger list.

5 / 5

Trigger Term Quality

Natural user phrasing is extensively covered: "contact form, lead-capture form, file-upload form, newsletter signup", "honeypot or reCAPTCHA", "Next.js, Nuxt, SvelteKit, Astro, or Gatsby", "debugging missing submissions", "forms that silently fail to register" — including framework names and failure-mode synonyms.

5 / 5

Distinctiveness Conflict Risk

"Netlify-hosted sites", "a Netlify site", and "via the Netlify API" pin the skill to a clear niche with distinct triggers; minimal overlap risk with generic form or static-site 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

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.