CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

netlify-identity

Add user authentication to a Netlify site with @netlify/identity, covering signup/login/logout, Google/GitHub/GitLab/Bitbucket OAuth, server-side getUser() checks, role-based access control, and Identity event functions. Use it when a task involves adding a login or signup form, gating content to members or roles, "auth middleware" or verifying users in Netlify Functions or Edge Functions, handling OAuth or email-confirmation callbacks, accepting user invites, assigning roles at signup, or customizing Identity emails. For locking a whole site to your company or employees-only access, use netlify-access-control instead.

Quality

93%

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-identity in netlify/context-and-tools

SKILL.md
Quality
Evals
Security

Quality

Content

82%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 strong, dense reference skill: executable code throughout, critical gotchas (invite flow, role-refresh delay, CSRF, netlify dev) placed next to the code they govern, and sensible splitting of deep material into two reference files. The main costs are a duplicated house-rules tail that re-states earlier warnings, a missing end-to-end setup order, and one reference pointer whose target lacks the promised content.

Suggestions

Trim or de-duplicate the trailing 'Netlify house rules' section — it restates ~8 rules already covered in the body (netlify dev, dashboard-only config, raw OAuth, v2 functions, getSettings, failure protocol, site-gating), saving ~40 lines of token budget.

Fix the dangling pointer in the Identity event functions section: it directs readers to references/authorization-and-sessions.md for the legacy filename convention (identity-signup.ts), but that file covers admin runtime, redirect gating, and JWT refresh only — either add the legacy-filename content there or point elsewhere.

Add a short ordered getting-started sequence at the top (enable Identity in the dashboard → install @netlify/identity → add handleAuthCallback() to the landing page → test on a deploy) so configuration precedes the code that depends on it.

DimensionReasoningScore

Conciseness

The core body is lean and code-heavy with no re-teaching of known concepts, but the ~43-line trailing "Netlify house rules" section restates roughly eight rules already covered above (netlify dev limitation, dashboard-only config, raw OAuth warning, v2 functions, getSettings, failure protocol, site-gating), which is more than the "minor instances" of anchor 4's trimmable material yet well short of anchor 3's pervasive padding.

4 / 5

Actionability

Every section ships fully executable, copy-paste-ready TypeScript or commands — client auth calls, the handleAuthCallback/acceptInvite branch, v2 function examples with getUser and role checks, verifyRequestOrigin CSRF guard, typed Identity event handlers, and _redirects/netlify.toml rules — covering the common cases across client, server, and edge. Matches the anchor-5 example standard.

5 / 5

Workflow Clarity

Individual flows are well sequenced with real checkpoints (mandatory handleAuthCallback on the landing page, the invite branch with its skip-consequence, verifyRequestOrigin at handler top, and the numbered "On failure — stop, don't guess" recovery protocol), but there is no ordered getting-started sequence: dashboard configuration appears near the end, after the code that depends on it. Clear sequence with minor gaps fits anchor 4 rather than anchor 5's explicit checklists for the whole process.

4 / 5

Progressive Disclosure

Good structure: an overview body with two real, clearly signaled, one-level-deep references ("Deep guides for SSR/session hydration and authorization live in references/advanced-patterns.md and references/authorization-and-sessions.md") whose contents match their promises. However, the event-functions section points to references/authorization-and-sessions.md for the "legacy filename convention (identity-signup.ts, etc.)", which that file never mentions — a misdirected pointer that constitutes the minor organization gap of anchor 4 rather than the fully clean navigation of anchor 5.

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.

An exemplary description: concrete capability list, explicit and natural "Use it when" triggers, and an explicit boundary against the adjacent access-control skill. All four dimensions sit at the top anchor with no vagueness, padding, or overlap risk.

DimensionReasoningScore

Specificity

The description enumerates six concrete capabilities — "signup/login/logout", "Google/GitHub/GitLab/Bitbucket OAuth", "server-side getUser() checks", "role-based access control", and "Identity event functions" — comprehensively covering client, server, event, and RBAC surfaces of the domain. This matches the comprehensive anchor rather than anchor 4, which is reserved for coverage with minor gaps.

5 / 5

Completeness

It explicitly answers both questions: the first sentence states what the skill does, and "Use it when a task involves..." lists concrete trigger phrases. This mirrors the anchor-5 example pattern (clear what + explicit when with concrete triggers), not the anchor-4 case of a when-clause that could be more specific.

5 / 5

Trigger Term Quality

Nine natural trigger phrases users would actually say ("adding a login or signup form", "gating content to members or roles", "auth middleware", "handling OAuth or email-confirmation callbacks", "accepting user invites", "assigning roles at signup") including synonyms like login/signup and members/roles. Coverage is comprehensive rather than merely good, so anchor 5 fits better than anchor 4's "a few natural terms missing".

5 / 5

Distinctiveness Conflict Risk

It carves a clear Netlify Identity niche and explicitly disambiguates the nearest competing skill: "For locking a whole site to your company or employees-only access, use netlify-access-control instead." Minimal conflict risk, matching the clear-niche anchor.

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