Claude Codeのdescopeプラグインで認証実装とAuth0移行を進める
Descopeプラグインは認証の実装、Auth0・Okta・WorkOSなどからの移行、Terraform、認可スキーマ、認証の静的レビューをスキルとして束ねます。入れ方と移行計画の読み方を説明します。
Descopeプラグインは、認証基盤Descopeの導入と、他社の認証サービスからの移行をClaude Codeに任せるためのスキル集です。マーケットプレイスの説明文には、認証の組み込み、Auth0・Okta・WorkOS・Stytch・PingOneからの移行、Terraform、FGAの認可スキーマ、セキュリティレビュー、BYOSのカスタムUIが並びます。
このうち手を動かす場面が多いのは、新規アプリに認証を足す作業と、Auth0からの乗り換えです。ここでは入れ方、スキルの使い分け、移行スキルが出す計画書の読み方、実行前に絞っておきたい権限を順に説明します。
Descopeプラグインに入っているスキル
プラグインの中身は、GitHubのdescope/skillsリポジトリにあるスキル群です。READMEの「Available Skills」には、次の10個が並びます。
| やりたいこと | スキル |
|---|---|
| アプリに認証を組み込む | スキルdescope-auth |
| 認証・認可の脆弱性を静的に点検する | スキルauth-review |
| プロジェクト設定をコードで管理する | スキルdescope-terraform |
| Auth0から移行する | スキルauth0-to-descope |
| Okta CISから移行する | スキルokta-cis-to-descope |
| WorkOSから移行する | スキルworkos-to-descope |
| Stytchから移行する | スキルstytch-to-descope |
| PingOne CIAMから移行する | スキルpingone-to-descope |
| FGAの認可スキーマを書く | スキルdescope-fga-schema |
| フロー上にReactのカスタム画面を作る | スキルdescope-byos-builder |
READMEの互換性の節は、Agent Skills形式に対応するエージェントなら動くとしています。Claude Code専用のものではなく、Cursorなど他のエージェントにも同じスキルを入れられます。
Claude Codeへの入れ方
Claude Codeでは、マーケットプレイスを追加してからプラグインを入れます。READMEの手順は次の2行です。
/plugin marketplace add descope/skills
/plugin install descope-skills入れたあとは、スキルを名前で呼ぶ必要はありません。READMEには「スキルは対応エージェントが自動で読み込む。必要なことを書けばよい」とあり、「Add Descope authentication to my Next.js app」のような依頼文がそのまま例になっています。READMEがスラッシュ形式(/auth-review、/descope-fga-schema)で呼ぶ例を載せているのは、この2つです。
Descopeのプロジェクトが無ければ、先に無料アカウントを作ります。READMEの「Getting Started」は、設定のProjectからProject IDを取る手順を挙げています。Terraformを使う場合は、管理キーもCompany Settingsから発行します。
認証を新規に組み込む(descope-auth)
descope-auth は、フレームワークを検出して、それに合う組み込み手順へ振り分ける作りです。READMEが挙げる対応は次の4つです。
- Next.js(App RouterとMiddleware)
- React(保護ルートを持つSPA)
- Node.jsのバックエンドでのセッション検証
- Pythonのバックエンドでのセッション検証
扱う認証方式は、メールやSMSのOTP、マジックリンク、パスキー、ソーシャルログインなどのOAuth、企業向けSSO、認証アプリによるTOTP、パスワードです。READMEはパスワードを「従来型で、ほかの方式の代替」と位置づけています。
依頼の書き方は、方式とフレームワークを両方入れると振り分けが早くなります。
Next.js(App Router)のアプリにDescopeでパスキーログインを足して。
未ログインのときは /login に飛ばすMiddlewareも入れて。ログイン画面が使うフローは、コンソールで先に作る進め方が基本です。READMEは auth0-to-descope の説明にも「コンソール優先(console-first)」と書いており、FlowやWidgetの設定はコンソール側で整えてからコードをつなぐ前提です。
Auth0からの移行(auth0-to-descope)
移行系のスキルは、いきなりコードを書き換えません。READMEは auth0-to-descope の流れを「MCPの確認、移行計画(人間のレビュー)、実行」の3段階とし、手順を飛ばさないと明記しています。
最初に出るMIGRATION-PLAN.mdを読む
計画段階の成果物は、人間が確認するための MIGRATION-PLAN.md です。Auth0を使っているコードの接点を洗い出した結果がここに載り、レビューを経て初めてコードの置き換えが始まります。
READMEが挙げる対応の例は次のとおりです。
| Auth0 | Descope |
|---|---|
| Actions | DescopeDescope flows |
| Organizations | DescopeTenants |
| Token Vault、CIBA | Descopeスキル内で個別に扱う対象 |
計画書では、この対応表のどこまでが自分のアプリに当てはまるかを見ます。Actionsで認証後に独自処理を挟んでいるなら、それがフローのどこに移るのかが焦点です。SDKの置き換え対象にはNext.js、React、Express、Pythonなどが含まれ、読み込むSDKの名前や引数の形は、利用可能ならDescope Docs MCPで確認するとされています。
計画書の確認をプロンプトで固定する
計画段階で止まらず先に進んでしまうのを避けたいなら、依頼文で止め位置を明示します。
nextjs-auth0を使っているこのリポジトリをDescopeに移したい。
まず MIGRATION-PLAN.md だけ作って、コードは変更しないで。
計画を私が確認するまで、実行段階には進まないで。スキル側も同じ順序を守る設計なので、二重の歯止めになります。計画書を直したいときは、ファイルを直接編集してから「この計画で実行して」と伝えると、人間が直した計画書を前提にできます。
READMEの例文にも「Migrate my Next.js app from nextjs-auth0 to Descope」「How do I replace Auth0 Actions with Descope?」のように、元のSDKや機能名を入れた依頼が並びます。移行元のパッケージ名を書くほど、スキルが接点を拾いやすくなります。
Okta・WorkOS・Stytch・PingOneからの移行
Auth0以外の移行スキルも、同じ「MCPの確認、計画、実行」の3段階を取ります。違うのは移行元の機能をどうDescopeに写すかです。
- Okta CIS: ホスト型のリダイレクトログインか、埋め込みウィジェットかを検出して、既定の移行経路を選びます。ホスト型ならissuerの設定を差し替えるOIDC互換の経路があります。Sign-On PoliciesはFlowsに、Authorization ServersはResourcesまたはInbound Appsに対応づけられます
- WorkOS: WorkOSは認証だけでなくB2B向けの機能をまとめて提供する基盤なので、スキルは最初にどの機能を使っているかを洗い出します。AuthKitはDescope Flowsに、OrganizationsはTenantsに、Directory SyncはDescope SCIMに写します
- Stytch: コンシューマー認証、B2B組織、エンタープライズSSO、不正対策、Connected Appsのどれを使っているかを最初に確認します
- PingOne CIAM: 顧客向け(CIAM)に限るスキルです。従業員向けのIAMやPingFederate、ForgeRockなどは、明示的に範囲に入れない限りスキルが止まると説明されています。PingOneからはパスワードやハッシュを書き出せないため、初回ログイン時の再設定かパスワードレスに切り替える前提です
WorkOSやStytchについては、各社のMCPをClaudeにつなぐ手順を別の記事にまとめています。移行元のダッシュボードを操作したい場合はWorkOS MCPコネクタやStytch MCPの設定が参考になります。移行スキルが相手にするのはアプリのコードと移行先のDescope側であり、移行元の管理画面を操作するものではない点が違いです。
Terraform・認可・レビュー・BYOS
実装と移行のほかに、運用に寄ったスキルが4つあります。
descope-terraform:設定をコードで管理する
公式のTerraformプロバイダーを使って、Descopeのプロジェクトを管理します。生成対象のリソースは次の3つです。
descope_project: 認証方式、RBAC、コネクタ、フロー、設定のすべてdescope_management_key: RBACで範囲を絞った管理キーdescope_descoper: ロールを割り当てたコンソールのユーザー
READMEが挙げる前提は、Terraform CLIのインストール、有料のDescopeライセンス(Pro以上)、Company Settingsで発行する管理キーの3つです。無料のプロジェクトでは、このスキルは前提を満たしません。
descope-fga-schema:認可の関係を書く
関係ベース(ReBAC)と属性ベース(ABAC)のDSLでFGAのスキーマを書き、適用前にdry runで検証します。データが消える変更には警告が出て、本番のスキーマを書き換える前にユーザーの確認を取ります。要件はDescope Management MCPのインストールと認可です。
auth-review:認証と認可の静的レビュー
DescopeやAuth0に依存しない、ベンダー非依存の静的レビューです。ルートとエンドポイントを洗い出して認可マトリクスを作り、OWASPのWebとAPIのトップ10に沿った脆弱性カタログを当てます。出力は ./auth-review/report-YYYY-MM-DD.md で、深刻度(High / Medium / Low)、CWE、ファイルと行、根拠、修正案が付き、GitHub issueにそのまま貼れる形の本文も含まれます。
READMEは、このスキルを静的で読み取り専用だと説明します。アプリを実行せず、ネットワークの探査もせず、コードを変更せず、issueを直接起票することもありません。リリース前の点検として単独で使えます。
descope-byos-builder:カスタム画面をフローに合わせて作る
Descopeのフローを書き出したJSONから、React用のカスタム画面(BYOS)を生成します。画面名、インタラクションID、入力名をJSONから読み取り、推測では書かないことが鉄則です。ボタンを押しても何も起きない、no handler for screen が出る、サインイン後もセッションが匿名のままといった症状には、19項目の失敗カタログが用意されています。
実行前に権限を絞る
認証の移行は、.env やAPIキーに近い場所で作業します。スキルの実行前に、読ませたくないファイルをdenyルールで外しておくと安全です。Claude Codeの権限ルールは、Read(./.env) のような形でファイル単位に読み取りを禁止できます。
{
"permissions": {
"deny": [
"Read(./.env)",
"Read(./secrets/**)"
]
}
}.claudeignore は効きません。除外したい項目はReadのdenyルールに移します。管理キーやProject IDはコードに埋め込まず、環境変数から読む形で依頼文に書いておくと、生成物の確認もしやすくなります。
使い分けの目安
どのスキルから始めるか
新規アプリに認証を足す
descope-auth。フレームワークを依頼文に入れます。他社サービスから乗り換える
移行元に合わせて
*-to-descope。最初に計画書だけ作らせます。本番に出す前に点検する
auth-review。読み取り専用なので、先に回しても影響しません。設定をチームで共有する
descope-terraform。Pro以上のライセンスが要ります。
プラグインとして配る側の事情は、プラグイン化の移行手順にまとめています。同じマーケットプレイスの仕組みで入れるDash0プラグインとは、スキルを束ねる点で作りが違います。
よくある質問
Descope以外のAuth0移行にも使えますか
移行先がDescopeであることが前提です。ほかの認証基盤への乗り換えでは、auth-review の静的レビューだけが基盤に依存しません。
まとめ
最初の一歩は、計画書だけを出させる移行スキルか、読み取り専用の auth-review です。どちらもコードを変えないので、出力の粒度がチームの基準に合うかを先に確かめられます。