CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

netlify-ai-gateway

Use Netlify AI Gateway to call OpenAI, Anthropic Claude, Google Gemini, TypeSafe (Jev), or OpenRouter-hosted models (xAI/DeepSeek/Meta/Mistral/Qwen) from Netlify Functions or Edge Functions without managing provider accounts or API keys. Reach for this when adding an AI feature to a Netlify app — a chatbot, text summarizer, image generator, joke/content generator, form-submission routing or analysis, or any LLM call — or when wiring the OpenAI/Anthropic/Gemini/TypeSafe/OpenRouter SDK into a Netlify Function, choosing which env vars to use, streaming long generations, or debugging why gateway calls fail at build time or return 401.

Quality

90%

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

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 highly actionable, well-structured body whose SDK snippets and setup flow are copy-paste ready and whose footguns section front-loads the real failure modes. Its main weaknesses are token efficiency — the house-rules section duplicates the footguns and the React frontend example pads the length — and a missing explicit debug/retry loop for the documented failure paths.

Suggestions

Deduplicate the trailing 'Netlify house rules' section against the 'Footguns (read first)' section — the six shared rules are stated twice; keep one normative copy and reference it, saving roughly a third of the house-rules block.

Trim or drop the App.jsx example: fetching an endpoint and rendering JSON in React is knowledge Claude already has; the function-side example plus a one-line note that the frontend calls /api/joke is sufficient.

For workflow_clarity, add a short failure-recovery loop for the documented error paths (e.g., 401 Missing Authentication header → check OpenRouter SDK >= 1.2.43; gateway-inactive error → run netlify deploy --prod once) so debugging is a checklist rather than scattered footgun notes.

DimensionReasoningScore

Conciseness

The instructional core is lean, but the trailing "Netlify house rules" section restates roughly six footguns nearly verbatim (SDK-not-fetch, browser-callability, runtime-only credentials, 60s timeout, model-list drift, env-var default), and the ~25-line App.jsx React fetch boilerplate is knowledge Claude already has. This is more than the "minor instances" of the 4 anchor, fitting "mostly efficient but ... could be tightened", though not pervasively padded enough for a 2.

3 / 5

Actionability

Five complete, copy-paste-ready SDK snippets (Anthropic, OpenAI, Gemini, TypeSafe, OpenRouter) with the exact env vars each consumes, a full function including a gateway-availability guard and try/catch error handling, a vite.config.js, and a sequenced shell setup flow. Fully executable and covering the common cases, matching the 5 anchor; model-ID drift is explicitly flagged as examples to check against the live endpoint.

5 / 5

Workflow Clarity

The setup flow is clearly sequenced with the critical ordering checkpoint made explicit ("netlify deploy --prod --open # required: activates the gateway"), the footguns section acts as pre-flight checks, and the full example validates before calling and returns a 500 with the error on failure. It falls short of the 5 anchor because there is no explicit debug/retry loop (e.g., a checklist for the 401 → OpenRouter SDK-version failure path), leaving minor validation gaps at the 4 anchor.

4 / 5

Progressive Disclosure

No bundle files exist (single-file skill), and the body is well organized with clear, well-ordered section headers, plainly labeled external doc links, and no nested referencing — matching the 4 anchor. It is not a 5 because at ~270 lines the full app example (function + App.jsx) and the house-rules block are inline content that could appropriately live in separate files, and it does not qualify for the under-50-line simple-skill exception.

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, enumerates the exact providers and runtimes, and gives an explicit, richly trigger-laden "when" clause covering feature-addition, SDK wiring, env-var choice, streaming, and debugging scenarios. Dense but every phrase is load-bearing, so verbosity is not penalized.

DimensionReasoningScore

Specificity

Lists multiple concrete actions spanning the skill's full capability space — "call OpenAI, Anthropic Claude, Google Gemini, TypeSafe (Jev), or OpenRouter-hosted models ... from Netlify Functions or Edge Functions", "wiring the ... SDK into a Netlify Function", "choosing which env vars to use", "streaming long generations", "debugging why gateway calls fail at build time or return 401" — with no meaningful coverage gap, matching the comprehensive-coverage anchor rather than the minor-gaps anchor below it.

5 / 5

Completeness

Explicitly answers both questions: what ("Use Netlify AI Gateway to call ... models ... without managing provider accounts or API keys") and when ("Reach for this when adding an AI feature to a Netlify app — a chatbot, ... — or when wiring ..., streaming long generations, or debugging ..."). Both are explicit with concrete trigger phrases, matching the 5 anchor; the 4 anchor's "when could be more explicit" does not apply.

5 / 5

Trigger Term Quality

Covers natural user phrasing comprehensively with synonyms: "chatbot", "text summarizer", "image generator", "joke/content generator", "form-submission routing or analysis", "any LLM call", "adding an AI feature to a Netlify app", plus failure-mode triggers "fail at build time" and "return 401". This exceeds the 4 anchor ("a few natural terms missing") — no commonly said phrase for this domain is absent.

5 / 5

Distinctiveness Conflict Risk

The scope is tightly Netlify-bound ("Netlify AI Gateway", "Netlify Functions or Edge Functions", "Netlify app") with provider names enumerated, giving it a clear niche distinct from generic LLM-API skills and minimal conflict risk. It is not the 4 anchor because the triggers are domain-unique rather than merely "mostly distinct".

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-ai-gateway/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.