{"owner":"laravel","repo":"socialite","hasSkills":true,"totalSkillsCount":1,"totalTokensCount":1071,"categories":["anthropic-skill"],"hasMcp":false,"mcpConfig":null,"found":["resources/boost/skills/socialite-development/SKILL.md"],"skills":{"resources/boost/skills/socialite-development/SKILL.md":"---\nname: socialite-development\ndescription: \"Manages OAuth social authentication with Laravel Socialite. Activate when adding social login providers; configuring OAuth redirect/callback flows; retrieving authenticated user details; customizing scopes or parameters; setting up community providers; testing with Socialite fakes; or when the user mentions social login, OAuth, Socialite, or third-party authentication.\"\nlicense: MIT\nmetadata:\n  author: laravel\n---\n\n# Socialite Authentication\n\n## Documentation\n\nUse `search-docs` for detailed Socialite patterns and documentation (installation, configuration, routing, callbacks, testing, scopes, stateless auth).\n\n## Available Providers\n\nBuilt-in: `facebook`, `twitter`, `twitter-oauth-2`, `linkedin`, `linkedin-openid`, `google`, `github`, `gitlab`, `bitbucket`, `slack`, `slack-openid`, `twitch`\n\nCommunity: 150+ additional providers at [socialiteproviders.com](https://socialiteproviders.com). For provider-specific setup, use `WebFetch` on `https://socialiteproviders.com/{provider-name}`.\n\nConfiguration key in `config/services.php` must match the driver name exactly — note the hyphenated keys: `twitter-oauth-2`, `linkedin-openid`, `slack-openid`.\n\nTwitter/X: Use `twitter-oauth-2` (OAuth 2.0) for new projects. The legacy `twitter` driver is OAuth 1.0. Driver names remain unchanged despite the platform rebrand.\n\nCommunity providers differ from built-in providers in the following ways:\n- Installed via `composer require socialiteproviders/{name}`\n- Must register via event listener — NOT auto-discovered like built-in providers\n- Use `search-docs` for the registration pattern\n\n## Adding a Provider\n\n### 1. Configure the provider\n\nAdd the provider's `client_id`, `client_secret`, and `redirect` to `config/services.php`. The config key must match the driver name exactly.\n\n### 2. Create redirect and callback routes\n\nTwo routes are needed: one that calls `Socialite::driver('provider')->redirect()` to send the user to the OAuth provider, and one that calls `Socialite::driver('provider')->user()` to receive the callback and retrieve user details.\n\n### 3. Authenticate and store the user\n\nIn the callback, use `updateOrCreate` to find or create a user record from the provider's response (`id`, `name`, `email`, `token`, `refreshToken`), then call `Auth::login()`.\n\n### 4. Customize the redirect (optional)\n\n- `scopes()` — merge additional scopes with the provider's defaults\n- `setScopes()` — replace all scopes entirely\n- `with()` — pass optional parameters (e.g., `['hd' => 'example.com']` for Google)\n- `asBotUser()` — Slack only; generates a bot token (`xoxb-`) instead of a user token (`xoxp-`). Must be called before both `redirect()` and `user()`. Only the `token` property will be hydrated on the user object.\n- `stateless()` — for API/SPA contexts where session state is not maintained\n\n### 5. Verify\n\n1. Config key matches driver name exactly (check the list above for hyphenated names)\n2. `client_id`, `client_secret`, and `redirect` are all present\n3. Redirect URL matches what is registered in the provider's OAuth dashboard\n4. Callback route handles denied grants (when user declines authorization)\n\nUse `search-docs` for complete code examples of each step.\n\n## Additional Features\n\nUse `search-docs` for usage details on: `enablePKCE()`, `userFromToken($token)`, `userFromTokenAndSecret($token, $secret)` (OAuth 1.0), retrieving user details.\n\nUser object: `getId()`, `getName()`, `getEmail()`, `getAvatar()`, `getNickname()`, `token`, `refreshToken`, `expiresIn`, `approvedScopes`\n\n## Testing\n\nSocialite provides `Socialite::fake()` for testing redirects and callbacks. Use `search-docs` for faking redirects, callback user data, custom token properties, and assertion methods.\n\n## Common Pitfalls\n\n- Config key must match driver name exactly — hyphenated drivers need hyphenated keys (`linkedin-openid`, `slack-openid`, `twitter-oauth-2`). Mismatch silently fails.\n- Every provider needs `client_id`, `client_secret`, and `redirect` in `config/services.php`. Missing any one causes cryptic errors.\n- `scopes()` merges with defaults; `setScopes()` replaces all scopes entirely.\n- Missing `stateless()` in API/SPA contexts causes `InvalidStateException`.\n- Redirect URL in `config/services.php` must exactly match the provider's OAuth dashboard (including trailing slashes and protocol).\n- Do not pass `state`, `response_type`, `client_id`, `redirect_uri`, or `scope` via `with()` — these are reserved.\n- Community providers require event listener registration via `SocialiteWasCalled`.\n- `user()` throws when the user declines authorization. Always handle denied grants.\n"},"files":{"resources/boost/skills/socialite-development/SKILL.md":"---\nname: socialite-development\ndescription: \"Manages OAuth social authentication with Laravel Socialite. Activate when adding social login providers; configuring OAuth redirect/callback flows; retrieving authenticated user details; customizing scopes or parameters; setting up community providers; testing with Socialite fakes; or when the user mentions social login, OAuth, Socialite, or third-party authentication.\"\nlicense: MIT\nmetadata:\n  author: laravel\n---\n\n# Socialite Authentication\n\n## Documentation\n\nUse `search-docs` for detailed Socialite patterns and documentation (installation, configuration, routing, callbacks, testing, scopes, stateless auth).\n\n## Available Providers\n\nBuilt-in: `facebook`, `twitter`, `twitter-oauth-2`, `linkedin`, `linkedin-openid`, `google`, `github`, `gitlab`, `bitbucket`, `slack`, `slack-openid`, `twitch`\n\nCommunity: 150+ additional providers at [socialiteproviders.com](https://socialiteproviders.com). For provider-specific setup, use `WebFetch` on `https://socialiteproviders.com/{provider-name}`.\n\nConfiguration key in `config/services.php` must match the driver name exactly — note the hyphenated keys: `twitter-oauth-2`, `linkedin-openid`, `slack-openid`.\n\nTwitter/X: Use `twitter-oauth-2` (OAuth 2.0) for new projects. The legacy `twitter` driver is OAuth 1.0. Driver names remain unchanged despite the platform rebrand.\n\nCommunity providers differ from built-in providers in the following ways:\n- Installed via `composer require socialiteproviders/{name}`\n- Must register via event listener — NOT auto-discovered like built-in providers\n- Use `search-docs` for the registration pattern\n\n## Adding a Provider\n\n### 1. Configure the provider\n\nAdd the provider's `client_id`, `client_secret`, and `redirect` to `config/services.php`. The config key must match the driver name exactly.\n\n### 2. Create redirect and callback routes\n\nTwo routes are needed: one that calls `Socialite::driver('provider')->redirect()` to send the user to the OAuth provider, and one that calls `Socialite::driver('provider')->user()` to receive the callback and retrieve user details.\n\n### 3. Authenticate and store the user\n\nIn the callback, use `updateOrCreate` to find or create a user record from the provider's response (`id`, `name`, `email`, `token`, `refreshToken`), then call `Auth::login()`.\n\n### 4. Customize the redirect (optional)\n\n- `scopes()` — merge additional scopes with the provider's defaults\n- `setScopes()` — replace all scopes entirely\n- `with()` — pass optional parameters (e.g., `['hd' => 'example.com']` for Google)\n- `asBotUser()` — Slack only; generates a bot token (`xoxb-`) instead of a user token (`xoxp-`). Must be called before both `redirect()` and `user()`. Only the `token` property will be hydrated on the user object.\n- `stateless()` — for API/SPA contexts where session state is not maintained\n\n### 5. Verify\n\n1. Config key matches driver name exactly (check the list above for hyphenated names)\n2. `client_id`, `client_secret`, and `redirect` are all present\n3. Redirect URL matches what is registered in the provider's OAuth dashboard\n4. Callback route handles denied grants (when user declines authorization)\n\nUse `search-docs` for complete code examples of each step.\n\n## Additional Features\n\nUse `search-docs` for usage details on: `enablePKCE()`, `userFromToken($token)`, `userFromTokenAndSecret($token, $secret)` (OAuth 1.0), retrieving user details.\n\nUser object: `getId()`, `getName()`, `getEmail()`, `getAvatar()`, `getNickname()`, `token`, `refreshToken`, `expiresIn`, `approvedScopes`\n\n## Testing\n\nSocialite provides `Socialite::fake()` for testing redirects and callbacks. Use `search-docs` for faking redirects, callback user data, custom token properties, and assertion methods.\n\n## Common Pitfalls\n\n- Config key must match driver name exactly — hyphenated drivers need hyphenated keys (`linkedin-openid`, `slack-openid`, `twitter-oauth-2`). Mismatch silently fails.\n- Every provider needs `client_id`, `client_secret`, and `redirect` in `config/services.php`. Missing any one causes cryptic errors.\n- `scopes()` merges with defaults; `setScopes()` replaces all scopes entirely.\n- Missing `stateless()` in API/SPA contexts causes `InvalidStateException`.\n- Redirect URL in `config/services.php` must exactly match the provider's OAuth dashboard (including trailing slashes and protocol).\n- Do not pass `state`, `response_type`, `client_id`, `redirect_uri`, or `scope` via `with()` — these are reserved.\n- Community providers require event listener registration via `SocialiteWasCalled`.\n- `user()` throws when the user declines authorization. Always handle denied grants.\n"},"items":[{"name":"SKILL.md","path":"resources/boost/skills/socialite-development/SKILL.md","rawUrl":"https://raw.githubusercontent.com/laravel/socialite/HEAD/resources/boost/skills/socialite-development/SKILL.md","title":"socialite-development","category":"anthropic-skill","format":"markdown","content":"---\nname: socialite-development\ndescription: \"Manages OAuth social authentication with Laravel Socialite. Activate when adding social login providers; configuring OAuth redirect/callback flows; retrieving authenticated user details; customizing scopes or parameters; setting up community providers; testing with Socialite fakes; or when the user mentions social login, OAuth, Socialite, or third-party authentication.\"\nlicense: MIT\nmetadata:\n  author: laravel\n---\n\n# Socialite Authentication\n\n## Documentation\n\nUse `search-docs` for detailed Socialite patterns and documentation (installation, configuration, routing, callbacks, testing, scopes, stateless auth).\n\n## Available Providers\n\nBuilt-in: `facebook`, `twitter`, `twitter-oauth-2`, `linkedin`, `linkedin-openid`, `google`, `github`, `gitlab`, `bitbucket`, `slack`, `slack-openid`, `twitch`\n\nCommunity: 150+ additional providers at [socialiteproviders.com](https://socialiteproviders.com). For provider-specific setup, use `WebFetch` on `https://socialiteproviders.com/{provider-name}`.\n\nConfiguration key in `config/services.php` must match the driver name exactly — note the hyphenated keys: `twitter-oauth-2`, `linkedin-openid`, `slack-openid`.\n\nTwitter/X: Use `twitter-oauth-2` (OAuth 2.0) for new projects. The legacy `twitter` driver is OAuth 1.0. Driver names remain unchanged despite the platform rebrand.\n\nCommunity providers differ from built-in providers in the following ways:\n- Installed via `composer require socialiteproviders/{name}`\n- Must register via event listener — NOT auto-discovered like built-in providers\n- Use `search-docs` for the registration pattern\n\n## Adding a Provider\n\n### 1. Configure the provider\n\nAdd the provider's `client_id`, `client_secret`, and `redirect` to `config/services.php`. The config key must match the driver name exactly.\n\n### 2. Create redirect and callback routes\n\nTwo routes are needed: one that calls `Socialite::driver('provider')->redirect()` to send the user to the OAuth provider, and one that calls `Socialite::driver('provider')->user()` to receive the callback and retrieve user details.\n\n### 3. Authenticate and store the user\n\nIn the callback, use `updateOrCreate` to find or create a user record from the provider's response (`id`, `name`, `email`, `token`, `refreshToken`), then call `Auth::login()`.\n\n### 4. Customize the redirect (optional)\n\n- `scopes()` — merge additional scopes with the provider's defaults\n- `setScopes()` — replace all scopes entirely\n- `with()` — pass optional parameters (e.g., `['hd' => 'example.com']` for Google)\n- `asBotUser()` — Slack only; generates a bot token (`xoxb-`) instead of a user token (`xoxp-`). Must be called before both `redirect()` and `user()`. Only the `token` property will be hydrated on the user object.\n- `stateless()` — for API/SPA contexts where session state is not maintained\n\n### 5. Verify\n\n1. Config key matches driver name exactly (check the list above for hyphenated names)\n2. `client_id`, `client_secret`, and `redirect` are all present\n3. Redirect URL matches what is registered in the provider's OAuth dashboard\n4. Callback route handles denied grants (when user declines authorization)\n\nUse `search-docs` for complete code examples of each step.\n\n## Additional Features\n\nUse `search-docs` for usage details on: `enablePKCE()`, `userFromToken($token)`, `userFromTokenAndSecret($token, $secret)` (OAuth 1.0), retrieving user details.\n\nUser object: `getId()`, `getName()`, `getEmail()`, `getAvatar()`, `getNickname()`, `token`, `refreshToken`, `expiresIn`, `approvedScopes`\n\n## Testing\n\nSocialite provides `Socialite::fake()` for testing redirects and callbacks. Use `search-docs` for faking redirects, callback user data, custom token properties, and assertion methods.\n\n## Common Pitfalls\n\n- Config key must match driver name exactly — hyphenated drivers need hyphenated keys (`linkedin-openid`, `slack-openid`, `twitter-oauth-2`). Mismatch silently fails.\n- Every provider needs `client_id`, `client_secret`, and `redirect` in `config/services.php`. Missing any one causes cryptic errors.\n- `scopes()` merges with defaults; `setScopes()` replaces all scopes entirely.\n- Missing `stateless()` in API/SPA contexts causes `InvalidStateException`.\n- Redirect URL in `config/services.php` must exactly match the provider's OAuth dashboard (including trailing slashes and protocol).\n- Do not pass `state`, `response_type`, `client_id`, `redirect_uri`, or `scope` via `with()` — these are reserved.\n- Community providers require event listener registration via `SocialiteWasCalled`.\n- `user()` throws when the user declines authorization. Always handle denied grants.\n","frontmatter":{"name":"socialite-development","description":"Manages OAuth social authentication with Laravel Socialite. Activate when adding social login providers; configuring OAuth redirect/callback flows; retrieving authenticated user details; customizing scopes or parameters; setting up community providers; testing with Socialite fakes; or when the user mentions social login, OAuth, Socialite, or third-party authentication.","license":"MIT","metadata":{"author":"laravel"}},"isInternal":false,"tokens":1071,"sizeBytes":4668}],"systemPromptSnippet":"<yakaai_skills repo=\"laravel/socialite\">\n<!-- File: resources/boost/skills/socialite-development/SKILL.md (Tokens: ~1071 | Category: anthropic-skill) -->\n---\nname: socialite-development\ndescription: \"Manages OAuth social authentication with Laravel Socialite. Activate when adding social login providers; configuring OAuth redirect/callback flows; retrieving authenticated user details; customizing scopes or parameters; setting up community providers; testing with Socialite fakes; or when the user mentions social login, OAuth, Socialite, or third-party authentication.\"\nlicense: MIT\nmetadata:\n  author: laravel\n---\n\n# Socialite Authentication\n\n## Documentation\n\nUse `search-docs` for detailed Socialite patterns and documentation (installation, configuration, routing, callbacks, testing, scopes, stateless auth).\n\n## Available Providers\n\nBuilt-in: `facebook`, `twitter`, `twitter-oauth-2`, `linkedin`, `linkedin-openid`, `google`, `github`, `gitlab`, `bitbucket`, `slack`, `slack-openid`, `twitch`\n\nCommunity: 150+ additional providers at [socialiteproviders.com](https://socialiteproviders.com). For provider-specific setup, use `WebFetch` on `https://socialiteproviders.com/{provider-name}`.\n\nConfiguration key in `config/services.php` must match the driver name exactly — note the hyphenated keys: `twitter-oauth-2`, `linkedin-openid`, `slack-openid`.\n\nTwitter/X: Use `twitter-oauth-2` (OAuth 2.0) for new projects. The legacy `twitter` driver is OAuth 1.0. Driver names remain unchanged despite the platform rebrand.\n\nCommunity providers differ from built-in providers in the following ways:\n- Installed via `composer require socialiteproviders/{name}`\n- Must register via event listener — NOT auto-discovered like built-in providers\n- Use `search-docs` for the registration pattern\n\n## Adding a Provider\n\n### 1. Configure the provider\n\nAdd the provider's `client_id`, `client_secret`, and `redirect` to `config/services.php`. The config key must match the driver name exactly.\n\n### 2. Create redirect and callback routes\n\nTwo routes are needed: one that calls `Socialite::driver('provider')->redirect()` to send the user to the OAuth provider, and one that calls `Socialite::driver('provider')->user()` to receive the callback and retrieve user details.\n\n### 3. Authenticate and store the user\n\nIn the callback, use `updateOrCreate` to find or create a user record from the provider's response (`id`, `name`, `email`, `token`, `refreshToken`), then call `Auth::login()`.\n\n### 4. Customize the redirect (optional)\n\n- `scopes()` — merge additional scopes with the provider's defaults\n- `setScopes()` — replace all scopes entirely\n- `with()` — pass optional parameters (e.g., `['hd' => 'example.com']` for Google)\n- `asBotUser()` — Slack only; generates a bot token (`xoxb-`) instead of a user token (`xoxp-`). Must be called before both `redirect()` and `user()`. Only the `token` property will be hydrated on the user object.\n- `stateless()` — for API/SPA contexts where session state is not maintained\n\n### 5. Verify\n\n1. Config key matches driver name exactly (check the list above for hyphenated names)\n2. `client_id`, `client_secret`, and `redirect` are all present\n3. Redirect URL matches what is registered in the provider's OAuth dashboard\n4. Callback route handles denied grants (when user declines authorization)\n\nUse `search-docs` for complete code examples of each step.\n\n## Additional Features\n\nUse `search-docs` for usage details on: `enablePKCE()`, `userFromToken($token)`, `userFromTokenAndSecret($token, $secret)` (OAuth 1.0), retrieving user details.\n\nUser object: `getId()`, `getName()`, `getEmail()`, `getAvatar()`, `getNickname()`, `token`, `refreshToken`, `expiresIn`, `approvedScopes`\n\n## Testing\n\nSocialite provides `Socialite::fake()` for testing redirects and callbacks. Use `search-docs` for faking redirects, callback user data, custom token properties, and assertion methods.\n\n## Common Pitfalls\n\n- Config key must match driver name exactly — hyphenated drivers need hyphenated keys (`linkedin-openid`, `slack-openid`, `twitter-oauth-2`). Mismatch silently fails.\n- Every provider needs `client_id`, `client_secret`, and `redirect` in `config/services.php`. Missing any one causes cryptic errors.\n- `scopes()` merges with defaults; `setScopes()` replaces all scopes entirely.\n- Missing `stateless()` in API/SPA contexts causes `InvalidStateException`.\n- Redirect URL in `config/services.php` must exactly match the provider's OAuth dashboard (including trailing slashes and protocol).\n- Do not pass `state`, `response_type`, `client_id`, `redirect_uri`, or `scope` via `with()` — these are reserved.\n- Community providers require event listener registration via `SocialiteWasCalled`.\n- `user()` throws when the user declines authorization. Always handle denied grants.\n</yakaai_skills>"}