About descope-auth
descope-auth is a skill for integrating Descope passwordless authentication into frontend and backend projects. It directs developers to framework-specific guidance and emphasizes secure session validation.
Key features
- 01Framework-specific setup guidance
- 02Descope Flow selection
- 03OTP, magic link, and passkey methods
- 04OAuth and SSO options
- 05Secure session validation guidance
Use cases
- 01Adding passwordless sign-in to a Next.js app
- 02Integrating authentication in React or Angular
- 03Validating sessions in a backend
- 04Choosing a supported Descope Flow
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ descope/ skills --skill descope-authAfter installing, type/descope-authin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/angular.mdbackend.mdnextjs.mdreact.mdvanilla-js.mdDetails
From the project READMEDescope Authentication
Integrate secure, passwordless authentication using Descope Flows and SDKs.
Framework Detection
Detect the user's framework and use the appropriate reference:
| If project has... | Use reference |
|---|---|
next in package.json | references/nextjs.md |
react (no Next.js) | references/react.md |
@angular/core in package.json | references/angular.md |
| No frontend framework (plain HTML/JS) | references/vanilla-js.md |
| Python/Node.js backend only | references/backend.md |
Quick Start (all frameworks)
- Get Project ID from https://app.descope.com/settings/project
- Set environment variable:
NEXT_PUBLIC_DESCOPE_PROJECT_ID=<your-id> - Follow framework-specific reference
- Verify: After setup, confirm the
<Descope>component renders the login form. Check the browser console — a missing or invalid Project ID produces a clearCould not load flowserror.
Minimal Inline Example (Next.js)
// src/app/login/page.tsx
import { Descope } from '@descope/nextjs-sdk';
export default function LoginPage() {
return (
<Descope
flowId="sign-up-or-in"
onSuccess={(e) => console.log('Authenticated:', e.detail.user)}
onError={(e) => console.error('Auth failed:', e.detail)}
/>
);
}
For React SPA or backend-only setups, see the framework-specific references below.
Valid Flow IDs (CRITICAL - do not invent others)
| Flow ID | Purpose |
|---|---|
sign-up-or-in | Combined signup/login (RECOMMENDED) |
sign-up | Registration only |
sign-in | Login only |
step-up | MFA step-up authentication |
update-user | Profile updates, add auth methods |
Authentication Methods
| Method | When to use |
|---|---|
| OTP (Email/SMS) | Quick verification codes |
| Magic Link | Passwordless email links |
| Passkeys | Biometric/WebAuthn (most secure) |
| OAuth | Social login (Google, GitHub, etc.) |
| SSO | Enterprise SAML/OIDC |
| Passwords | Traditional auth (not recommended) |
DO NOT (Security Guardrails)
- DO NOT parse JWTs manually - always use SDK's
validateSession() - DO NOT store tokens in localStorage - SDK handles this securely
- DO NOT invent flow IDs - only use IDs from the table above
- DO NOT skip server-side validation - always validate on backend
- DO NOT expose DESCOPE_MANAGEMENT_KEY in client code
References
references/nextjs.md- Next.js App Router & Pages Router integrationreferences/react.md- React SPA integrationreferences/angular.md- Angular integrationreferences/vanilla-js.md- Vanilla JavaScript / plain HTML integrationreferences/backend.md- Backend session validation
Comments
Markdown supported