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

The canonical home for this skill is netlify-ai-gateway 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.

The body is a strong, highly actionable reference: executable examples for every provider, a realistic end-to-end app, and honest constraint documentation. Its main weakness is redundancy — the merged 'Netlify house rules' section duplicates the Footguns content and reads as internal maintainer instructions rather than skill guidance — plus version-sensitive details embedded in the main path.

Suggestions

Remove or collapse the trailing 'Netlify house rules' section: it duplicates the Footguns section almost line-for-line and contains maintainer meta-instructions ('The body must not present raw REST...') that add ~35 lines of tokens with no new guidance for the skill's runtime use.

Move version-sensitive details such as the 'OpenRouter SDK needs 1.2.43+' requirement into a clearly labeled compatibility note or 'old patterns' section so the main path stays stable over time.

Consider extracting the per-provider SDK snippets or the billing/limits details into a referenced file (e.g. references/providers.md) so SKILL.md remains a leaner overview with one-level-deep navigation, and add a short numbered quickstart sequence (create function → deploy --prod once → verify injected env var) to make the implicit workflow explicit.

DimensionReasoningScore

Conciseness

The body is mostly lean, code-first, and free of beginner explanations, but the trailing 'Netlify house rules' section (~35 lines) is maintainer meta-commentary that restates the Footguns section nearly verbatim (browser-callability, runtime-only credentials, 60s timeout, live providers endpoint), and version-pinned details like 'OpenRouter SDK needs 1.2.43+' sit in the main path rather than a deprecated/compat section. This matches the 3 anchor ('mostly efficient but includes some unnecessary explanation or could be tightened') — too much genuine duplication for the 4 anchor.

3 / 5

Actionability

Fully executable, copy-paste-ready code for all five provider SDKs, a complete runnable Function + React client example with error handling, a concrete setup flow ('npm install -g netlify-cli@latest... netlify deploy --prod'), and explicit env-var pairings per provider. Specific examples cover the common cases exactly as the 5 anchor requires.

5 / 5

Workflow Clarity

There is a clear implicit sequence (where code goes → SDK setup → env vars → deploy once → local dev) and the main example includes a validation checkpoint ('if (!process.env.OPENAI_BASE_URL)') plus try/catch error recovery. It falls short of the 5 anchor because the steps are distributed across sections rather than presented as one explicit ordered flow with feedback loops for the deploy-activation and streaming workarounds.

4 / 5

Progressive Disclosure

A single-file skill (no references/, scripts/, or assets/ bundle exists) with well-labeled sections (Footguns, Provider SDKs, Env vars, Local development, Billing) and a clear References section of external URLs, all one level deep. It fits the 4 anchor ('good structure; most content appropriately placed; minor organization gaps') — the inlined per-provider SDK examples and billing detail arguably could be split out, and the appended house-rules block is a structural oddity, keeping it below 5.

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: concrete and comprehensive on capabilities, rich in natural trigger terms, explicit on both what and when, and firmly scoped to the Netlify gateway niche. The single long sentence is dense but every clause carries information, so it reads as thorough rather than padded.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions — 'call OpenAI, Anthropic Claude, Google Gemini, TypeSafe (Jev), or OpenRouter-hosted models... from Netlify Functions or Edge Functions', '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' — with comprehensive coverage of the skill's capabilities. It clearly exceeds the 4 anchor ('several specific actions; minor gaps') since it covers calling, wiring, config, streaming, and debugging.

5 / 5

Completeness

Both 'what' ('Use Netlify AI Gateway to call [providers]... without managing provider accounts or API keys') and an explicit 'when' ('Reach for this when adding an AI feature to a Netlify app...') are clearly stated with concrete trigger phrases. This matches the 5 anchor verbatim in structure and cannot be the 4 anchor, whose 'when' is less explicit.

5 / 5

Trigger Term Quality

Natural user phrases are comprehensively covered: 'a chatbot, text summarizer, image generator, joke/content generator, form-submission routing or analysis, or any LLM call', plus 'env vars', 'streaming long generations', and 'return 401'. These are exactly the terms a user would say when needing this skill, including synonyms and failure-mode phrasing; nothing common is missing.

5 / 5

Distinctiveness Conflict Risk

The skill occupies a clear niche — AI calls specifically from Netlify Functions/Edge Functions via the Netlify AI Gateway — and every trigger is Netlify-bound ('a Netlify app', 'wiring... into a Netlify Function'), giving minimal conflict risk with generic provider-SDK or LLM skills. It is not the 4 anchor because the Netlify scoping removes even the minor overlap that anchor allows.

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