From auth-identity
Add a login method to an existing Supabase Auth app — Apple, Microsoft, GitHub social SSO, plus magic link, passkeys (WebAuthn), or email+password. The generic enable-provider procedure with each provider's gotchas (especially Apple's expiring ES256 secret + first-login name capture). Generalizes google-sso-setup to the variety pack.
How this skill is triggered — by the user, by Claude, or both
Slash command
/auth-identity:add-an-auth-providerThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Invoked by:** the `auth-identity` team when the user wants a *variety* of login options, or to add a second/third provider to an app that already has one. Also consulted by `ravenclaude-core/security-reviewer` on any provider-credential change.
Invoked by: the
auth-identityteam when the user wants a variety of login options, or to add a second/third provider to an app that already has one. Also consulted byravenclaude-core/security-revieweron any provider-credential change.When to invoke: "add Apple too", "let users sign in with Microsoft/GitHub", "add a magic-link fallback", "turn on passkeys". For the first Google setup, use
../google-sso-setup/SKILL.md— this skill generalizes from it.Output: the new method enabled in Supabase, the provider's console configured, redirect URIs registered, a test login passing, and the per-provider gotchas handled — with a security checklist signed off.
This skill authenticates the person — it adds how they prove identity. It never scopes data; whichever method they use, the same verified auth.uid() hands off to data-platform RLS. Don't duplicate RLS/embed mechanics. The method is interchangeable; the seam is not.
Adding a managed-provider social login is the same three moves regardless of provider — this is the payoff of the Supabase lean:
https://<project-ref>.supabase.co/auth/v1/callback in that console's allowed redirect URIs (plus your own …/auth/callback).supabase.auth.signInWithOAuth({ provider }). [verify-at-build — Supabase dashboard UI]Then handle the per-provider gotchas below. Keep scopes minimal (openid email profile equivalent) and route the concrete credential change through security-reviewer.
Before you start — do you have the access to register the app? Step 1 happens in the provider's developer portal, and each one gates app creation behind a role. If you don't hold it, the registration is an admin's task, not yours — surface that early rather than getting stuck mid-setup. The required role per provider is the first line of each walkthrough below (all
[verify-at-build]— portal roles + UIs move). Google's full worked example is../google-sso-setup/SKILL.md; the others are below.
Apple is not like Google. Budget extra time:
Portal: developer.apple.com/account → Certificates, Identifiers & Profiles.
[verify-at-build — Apple Developer UI moves]Who can do it: an Account Holder or Admin role in the Apple Developer team (and the team needs a paid Apple Developer Program membership). A team member without that role must ask the Account Holder.
[verify-at-build]
client_id. Enable Sign in with Apple on it and configure its domains + return URLs.https://<project-ref>.supabase.co/auth/v1/callback (Apple rejects localhost/plain-HTTP — use an HTTPS dev domain/tunnel)..p8 private key (one-time download — store it as a secret reference, never commit it). Note the Key ID and your Team ID..p8 (see the gotchas below); paste the Services ID + that JWT into Supabase's Apple provider.client_id), and a Sign in with Apple key (.p8)..p8 key — not a static string. (Apple — creating a client secret)client_id differ: web uses the Services ID, native iOS uses the bundle ID — a mismatch throws JWTClaimValidationFailed: unexpected "aud". (Better Auth — Apple)@privaterelay.appleid.com address; register your sending domain with Apple to email it. Treat it as the real email.localhost/HTTP — use an HTTPS dev domain/tunnel.With Supabase you paste the Services ID + the generated JWT secret into the Apple provider — but the 180-day rotation and first-login name capture remain your responsibility.
Portal: entra.microsoft.com (or portal.azure.com → Microsoft Entra ID) → App registrations → New registration.
[verify-at-build — Entra portal UI moves]Who can do it: the Application Developer Entra role (or any user, if the tenant leaves "users can register applications" on). Restrictive tenants disable that — then a Global Administrator / Cloud Application Administrator registers it for you.
[verify-at-build]
https://<project-ref>.supabase.co/auth/v1/callback.openid email profile).../../../azure-cloud/agents/entra-identity-engineer.md, don't force it through the generic path.Portal: github.com/settings/developers → OAuth Apps → New OAuth App (personal); for an org-owned app: Org → Settings → Developer settings → OAuth Apps.
[verify-at-build — GitHub settings UI moves]Who can do it: any GitHub user can create a personal OAuth App; an organization owner is required to create (or transfer) an org-owned app.
[verify-at-build]
https://<project-ref>.supabase.co/auth/v1/callback.user:email scope — GitHub emails can be private, and without it you may get no verified email back.signInWithOtp({ email }). No console app needed — it's email delivery.prefer-managed-auth-over-rolling-your-own). Require email verification; consider skipping standalone passwords entirely in favor of social + magic-link + passkeys.If the same person can sign in with Google and Apple (or social and magic link), decide whether that's one account or two. Keying on verified email usually works — but Apple's "Hide My Email" relay can fork an identity. If unified accounts matter, implement explicit account-linking and test it. Defer the deep version to auth-architect.
aud mismatch.azure-cloud.security-reviewer..p8 key + generated ES256 JWT)…/auth/callback tooNEXT_PUBLIC_, never committedauth.uid() resolves; account-linking behavior intendedravenclaude-core/security-reviewer)../google-sso-setup/SKILL.md — the worked example this generalizes from../../knowledge/social-and-passwordless-providers-2026.md — the full variety-pack reference (Apple gotchas, passkeys, magic link)../../knowledge/auth-identity-decision-trees.md — "Which auth providers should you offer?"../session-and-token-management/SKILL.md — token storage applies to every method../../../data-platform/skills/rls-policy-authoring/SKILL.md — auth.uid() → data scoping../../../ravenclaude-core/agents/security-reviewer.mdnpx claudepluginhub mcorbett51090/ravenclaude --plugin auth-identityGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.