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

92%

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

81%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-sequenced reference: executable code for every provider, explicit footguns tied to exact error signatures, and validation embedded in the examples. The main costs are token efficiency — a generic React UI example and a trailing house-rules section that duplicates the footguns — and the absence of any file-level split for a skill this size.

Suggestions

Cut the src/App.jsx client example (a generic fetch-button React component Claude can write unaided) and keep only the function-side code plus a one-line note that the client just fetches the function path.

Remove or de-duplicate the trailing 'Netlify house rules' section, which restates the footguns and env-var guidance already covered above — at minimum replace it with a short pointer so the rules appear once in the context window.

Move the billing/limits detail and the per-provider SDK snippets into a references/ file (e.g. references/providers.md, references/billing.md) linked from a short overview section, so SKILL.md stays a lean entry point.

DimensionReasoningScore

Conciseness

The body is dense and operational with no concept explanations, but it carries two real token costs: a generic React fetch-button App.jsx that Claude could write unaided, and the trailing ~34-line 'Netlify house rules' block that restates footguns already covered verbatim above (browser-callable, runtime-only creds, 60s timeout, no hardcoded model lists, SDK-vs-fetch, env var guidance). This is 'mostly efficient but could be tightened' (anchor 3) rather than anchor 4's 'minor instances', since the duplication is a whole repeated section.

3 / 5

Actionability

Copy-paste-ready code for all five providers with exact no-arg constructors and the env pairs they consume, a complete function example with its config export, an ordered setup shell sequence, the vite config, and precise failure signatures ('401 Missing Authentication header', OpenRouter SDK 1.2.43+). Fully executable and covers the common cases, matching anchor 5.

5 / 5

Workflow Clarity

Setup is sequenced with the gating step annotated ('netlify deploy --prod --open # required: activates the gateway'), validation is embedded in executable code (the OPENAI_BASE_URL availability check), errors are surfaced via try/catch, and the footguns-first section maps failure signatures to fixes. The core action (instantiate SDK with no args) is unambiguous — anchor 5, not anchor 4 which expects missing checkpoints.

5 / 5

Progressive Disclosure

No bundle files exist, so everything is inline in one ~14KB file; headers are clear, the References section is well signaled and one level deep (external URLs), and navigation is easy. Anchor 4 ('good structure; minor organization gaps') fits: the full Vite+React app example, the billing detail, and especially the duplicated house-rules block could live in separate files. Not anchor 3 since nothing is buried or poorly organized; not anchor 5 since a file this size has no progressive split at all.

4 / 5

Total

17

/

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.

The description is exemplary: it states a concrete, comprehensive capability set in third-person imperative voice, includes an explicit 'Reach for this when' trigger clause with natural user phrasing and synonyms, and is tightly scoped to the Netlify niche so conflict risk is minimal. All four dimensions sit at the top anchor.

DimensionReasoningScore

Specificity

Names five concrete provider families ("OpenAI, Anthropic Claude, Google Gemini, TypeSafe (Jev), or OpenRouter-hosted models"), two runtimes ("Netlify Functions or Edge Functions"), and concrete wiring actions (instantiate SDKs, choose env vars, stream, debug 401s) with comprehensive coverage — matches the anchor-5 example of multiple specific concrete actions, and exceeds anchor 4 which expects gaps.

5 / 5

Completeness

Explicitly answers both halves: what ("call ... models from Netlify Functions or Edge Functions without managing provider accounts or API keys") and when ("Reach for this when adding an AI feature to a Netlify app ... or when wiring the OpenAI/Anthropic/Gemini/TypeSafe/OpenRouter SDK into a Netlify Function"). Both are concrete with explicit trigger phrases, matching anchor 5 rather than the anchor-4 'when could be more specific'.

5 / 5

Trigger Term Quality

Covers natural phrases users would actually say — "chatbot, text summarizer, image generator, joke/content generator, form-submission routing", "streaming long generations", "choosing which env vars to use", "return 401" — plus synonyms ("AI feature", "any LLM call") and every provider SDK name. Not anchor 4, which expects a few natural terms missing.

5 / 5

Distinctiveness Conflict Risk

Clear niche (Netlify AI Gateway) with all triggers scoped to Netlify apps, Functions, and gateway-specific failures, so it will not fire for generic provider-SDK work outside Netlify. Minimal conflict risk, matching anchor 5.

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

agent-plugin/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.