[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sentry-sentry-php-sdk":3,"mdc--nx5aov-key":36,"related-repo-sentry-sentry-php-sdk":4263,"related-org-sentry-sentry-php-sdk":4371},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":31,"sourceUrl":34,"mdContent":35},"sentry-php-sdk","integrate Sentry SDK into PHP applications","Full Sentry SDK setup for PHP. Use when asked to \"add Sentry to PHP\", \"install sentry\u002Fsentry\", \"setup Sentry in PHP\", or configure error monitoring, tracing, profiling, logging, metrics, crons, or AI monitoring for PHP applications. Supports plain PHP, Laravel, and Symfony.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sentry","Sentry","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsentry.png","getsentry",[13,17,20,23],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"PHP","php",{"name":21,"slug":22,"type":16},"Monitoring","monitoring",{"name":9,"slug":8,"type":16},237,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai","2026-07-18T05:13:15.440758","Apache-2.0",30,[30],"tag-production",{"repoUrl":25,"stars":24,"forks":28,"topics":32,"description":33},[30],"Teach your AI coding assistant how to use Sentry - setup, debugging, alerts, and more","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai\u002Ftree\u002FHEAD\u002Fskills-legacy\u002Fsentry-php-sdk","---\nname: sentry-php-sdk\ndescription: Full Sentry SDK setup for PHP. Use when asked to \"add Sentry to PHP\", \"install sentry\u002Fsentry\", \"setup Sentry in PHP\", or configure error monitoring, tracing, profiling, logging, metrics, crons, or AI monitoring for PHP applications. Supports plain PHP, Laravel, and Symfony.\nlicense: Apache-2.0\ncategory: sdk-setup\nparent: sentry-sdk-setup\ndisable-model-invocation: true\n---\n\n> [All Skills](..\u002F..\u002FSKILL_TREE.md) > [SDK Setup](..\u002Fsentry-sdk-setup\u002FSKILL.md) > PHP SDK\n\n# Sentry PHP SDK\n\nOpinionated wizard that scans your PHP project and guides you through complete Sentry setup.\n\n## Invoke This Skill When\n\n- User asks to \"add Sentry to PHP\" or \"setup Sentry\" in a PHP app\n- User wants error monitoring, tracing, profiling, logging, metrics, or crons in PHP\n- User mentions `sentry\u002Fsentry`, `sentry\u002Fsentry-laravel`, `sentry\u002Fsentry-symfony`, or Sentry + any PHP framework\n- User wants to monitor Laravel routes, Symfony controllers, queues, scheduled tasks, or plain PHP scripts\n\n> **Note:** SDK versions and APIs below reflect Sentry docs at time of writing (sentry\u002Fsentry 4.x, sentry\u002Fsentry-laravel 4.x, sentry\u002Fsentry-symfony 5.x).\n> Always verify against [docs.sentry.io\u002Fplatforms\u002Fphp\u002F](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fphp\u002F) before implementing.\n\n---\n\n## Phase 1: Detect\n\nRun these commands to understand the project before making recommendations:\n\n```bash\n# Check existing Sentry\ngrep -i sentry composer.json composer.lock 2>\u002Fdev\u002Fnull\n\n# Detect framework\ncat composer.json | grep -E '\"laravel\u002Fframework\"|\"symfony\u002Fframework-bundle\"|\"illuminate\u002F'\n\n# Confirm framework via filesystem markers\nls artisan 2>\u002Fdev\u002Fnull && echo \"Laravel detected\"\nls bin\u002Fconsole 2>\u002Fdev\u002Fnull && echo \"Symfony detected\"\n\n# Detect queue systems\ngrep -E '\"laravel\u002Fhorizon\"|\"symfony\u002Fmessenger\"' composer.json 2>\u002Fdev\u002Fnull\n\n# Detect AI libraries\ngrep -E '\"(laravel\u002Fai|openai-php|openai\u002F|anthropic|llm)' composer.json 2>\u002Fdev\u002Fnull\n\n# Check for companion frontend\nls frontend\u002F resources\u002Fjs\u002F assets\u002F 2>\u002Fdev\u002Fnull\ncat package.json 2>\u002Fdev\u002Fnull | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"'\n```\n\n**What to note:**\n- Is `sentry\u002Fsentry` (or `-laravel` \u002F `-symfony`) already in `composer.json`? If yes, check if the init call exists — may just need feature config.\n- Framework detected? **Laravel** (has `artisan` + `laravel\u002Fframework` in composer.json), **Symfony** (has `bin\u002Fconsole` + `symfony\u002Fframework-bundle`), or **plain PHP**.\n- Queue system? (Laravel Queue \u002F Horizon, Symfony Messenger need queue worker configuration.)\n- AI libraries? (`laravel\u002Fai` is auto-instrumented by `sentry\u002Fsentry-laravel >= 4.27.0` when tracing is enabled; other PHP AI libraries need manual spans.)\n- Companion frontend? (Triggers Phase 4 cross-link.)\n\n---\n\n## Phase 2: Recommend\n\nBased on what you found, present a concrete proposal. Don't ask open-ended questions — lead with a recommendation:\n\n**Always recommended (core coverage):**\n- ✅ **Error Monitoring** — captures unhandled exceptions and PHP errors\n- ✅ **Logging** — Monolog integration (Laravel\u002FSymfony auto-configure; plain PHP uses `MonologHandler`)\n\n**Recommend when detected:**\n- ✅ **Tracing** — web framework detected (Laravel\u002FSymfony auto-instrument HTTP, DB, Twig\u002FBlade, cache)\n- ⚡ **Profiling** — production apps where performance matters (requires `excimer` PHP extension, Linux\u002FmacOS only)\n- ⚡ **Crons** — scheduler patterns detected (Laravel Scheduler, Symfony Scheduler, custom cron jobs)\n- ⚡ **Metrics** — business KPIs or SLO tracking (uses `TraceMetrics` API)\n- ✅ **AI Monitoring** — `laravel\u002Fai` detected in a Laravel app (auto-instrumented in `sentry\u002Fsentry-laravel >= 4.27.0`)\n\n**Recommendation matrix:**\n\n| Feature | Recommend when... | Reference |\n|---------|------------------|-----------|\n| Error Monitoring | **Always** — non-negotiable baseline | `${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md` |\n| Tracing | Laravel\u002FSymfony detected, or manual spans needed | `${SKILL_ROOT}\u002Freferences\u002Ftracing.md` |\n| Profiling | Production + `excimer` extension available | `${SKILL_ROOT}\u002Freferences\u002Fprofiling.md` |\n| Logging | **Always**; Monolog for Laravel\u002FSymfony | `${SKILL_ROOT}\u002Freferences\u002Flogging.md` |\n| Metrics | Business events or SLO tracking needed | `${SKILL_ROOT}\u002Freferences\u002Fmetrics.md` |\n| Crons | Scheduler or cron patterns detected | `${SKILL_ROOT}\u002Freferences\u002Fcrons.md` |\n| AI Monitoring | `laravel\u002Fai` detected in a Laravel app, or manual PHP AI spans needed | `${SKILL_ROOT}\u002Freferences\u002Fai-monitoring.md` |\n\nPropose: *\"I recommend Error Monitoring + Tracing [+ Logging]. Want Profiling, Crons, Metrics, or AI Monitoring too?\"*\n\n---\n\n## Phase 3: Guide\n\n### Install\n\n```bash\n# Plain PHP\ncomposer require sentry\u002Fsentry \"^4.0\"\n\n# Laravel\ncomposer require sentry\u002Fsentry-laravel \"^4.0\"\n\n# Laravel with Laravel AI monitoring\ncomposer require sentry\u002Fsentry-laravel \"^4.27.0\"\n\n# Symfony\ncomposer require sentry\u002Fsentry-symfony \"^5.0\"\n```\n\n**System requirements:**\n- PHP 7.2 or later\n- Extensions: `ext-json`, `ext-mbstring`, `ext-curl` (all required)\n- `excimer` PECL extension (Linux\u002FmacOS only — required for profiling)\n\n### Framework-Specific Initialization\n\n#### Plain PHP\n\nPlace `\\Sentry\\init()` at the top of your entry point (`index.php`, `bootstrap.php`, or equivalent), before any application code:\n\n```php\n\u003C?php\n\nrequire_once 'vendor\u002Fautoload.php';\n\n\\Sentry\\init([\n    'dsn'                  => $_SERVER['SENTRY_DSN'] ?? '',\n    'environment'          => $_SERVER['SENTRY_ENVIRONMENT'] ?? 'production',\n    'release'              => $_SERVER['SENTRY_RELEASE'] ?? null,\n    'send_default_pii'     => true,\n    'traces_sample_rate'   => 1.0,\n    'profiles_sample_rate' => 1.0,\n    'enable_logs'          => true,\n]);\n\n\u002F\u002F rest of application...\n```\n\n#### Laravel\n\n**Step 1 — Register exception handler** in `bootstrap\u002Fapp.php`:\n\n```php\nuse Sentry\\Laravel\\Integration;\n\nreturn Application::configure(basePath: dirname(__DIR__))\n    ->withExceptions(function (Exceptions $exceptions) {\n        Integration::handles($exceptions);\n    })->create();\n```\n\n**Step 2 — Publish config and set DSN:**\n\n```bash\nphp artisan sentry:publish --dsn=YOUR_DSN\n```\n\nThis creates `config\u002Fsentry.php` and adds `SENTRY_LARAVEL_DSN` to `.env`.\n\n**Step 3 — Configure `.env`:**\n\n```ini\nSENTRY_LARAVEL_DSN=https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\nSENTRY_TRACES_SAMPLE_RATE=1.0\nSENTRY_PROFILES_SAMPLE_RATE=1.0\n```\n\n> For full Laravel configuration options, read `${SKILL_ROOT}\u002Freferences\u002Flaravel.md`.\n\n#### Symfony\n\n**Step 1 — Register the bundle** in `config\u002Fbundles.php` (auto-done by Symfony Flex):\n\n```php\nSentry\\SentryBundle\\SentryBundle::class => ['all' => true],\n```\n\n**Step 2 — Create `config\u002Fpackages\u002Fsentry.yaml`:**\n\n```yaml\nsentry:\n    dsn: '%env(SENTRY_DSN)%'\n    options:\n        environment: '%env(APP_ENV)%'\n        release: '%env(SENTRY_RELEASE)%'\n        send_default_pii: true\n        traces_sample_rate: 1.0\n        profiles_sample_rate: 1.0\n        enable_logs: true\n```\n\n**Step 3 — Set the DSN in `.env`:**\n\n```ini\nSENTRY_DSN=https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\n```\n\n> For full Symfony configuration options, read `${SKILL_ROOT}\u002Freferences\u002Fsymfony.md`.\n\n### Quick Start — Recommended Init (Plain PHP)\n\nFull init enabling the most features with sensible defaults:\n\n```php\n\\Sentry\\init([\n    'dsn'                     => $_SERVER['SENTRY_DSN'] ?? '',\n    'environment'             => $_SERVER['SENTRY_ENVIRONMENT'] ?? 'production',\n    'release'                 => $_SERVER['SENTRY_RELEASE'] ?? null,\n    'send_default_pii'        => true,\n\n    \u002F\u002F Tracing (lower to 0.1–0.2 in high-traffic production)\n    'traces_sample_rate'      => 1.0,\n\n    \u002F\u002F Profiling — requires excimer extension (Linux\u002FmacOS only)\n    'profiles_sample_rate'    => 1.0,\n\n    \u002F\u002F Structured logs (sentry\u002Fsentry >=4.12.0)\n    'enable_logs'             => true,\n]);\n```\n\n### For Each Agreed Feature\n\nWalk through features one at a time. Load the reference, follow its steps, verify before moving on:\n\n| Feature | Reference file | Load when... |\n|---------|---------------|-------------|\n| Error Monitoring | `${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md` | Always (baseline) |\n| Tracing | `${SKILL_ROOT}\u002Freferences\u002Ftracing.md` | HTTP handlers \u002F distributed tracing |\n| Profiling | `${SKILL_ROOT}\u002Freferences\u002Fprofiling.md` | Performance-sensitive production |\n| Logging | `${SKILL_ROOT}\u002Freferences\u002Flogging.md` | Always; Monolog for Laravel\u002FSymfony |\n| Metrics | `${SKILL_ROOT}\u002Freferences\u002Fmetrics.md` | Business KPIs \u002F SLO tracking |\n| Crons | `${SKILL_ROOT}\u002Freferences\u002Fcrons.md` | Scheduler \u002F cron patterns detected |\n| AI Monitoring | `${SKILL_ROOT}\u002Freferences\u002Fai-monitoring.md` | `laravel\u002Fai` detected in Laravel, or manual PHP AI spans needed |\n\nFor each feature: `Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md`, follow steps exactly, verify it works.\n\n---\n\n## Configuration Reference\n\n### Key `\\Sentry\\init()` Options (Plain PHP)\n\n| Option | Type | Default | Purpose |\n|--------|------|---------|---------|\n| `dsn` | `string\\|bool\\|null` | `$_SERVER['SENTRY_DSN']` | SDK disabled if empty or `false` |\n| `environment` | `string\\|null` | `$_SERVER['SENTRY_ENVIRONMENT']` | e.g., `\"staging\"` |\n| `release` | `string\\|null` | `$_SERVER['SENTRY_RELEASE']` | e.g., `\"myapp@1.0.0\"` |\n| `send_default_pii` | `bool` | `false` | Include request headers, cookies, IP |\n| `sample_rate` | `float` | `1.0` | Error event sample rate (0.0–1.0) |\n| `traces_sample_rate` | `float\\|null` | `null` | Transaction sample rate; `null` disables tracing |\n| `traces_sampler` | `callable\\|null` | `null` | Custom per-transaction sampling (overrides rate) |\n| `profiles_sample_rate` | `float\\|null` | `null` | Profiling rate relative to traces; requires `excimer` |\n| `enable_logs` | `bool` | `false` | Send structured logs to Sentry (>=4.12.0) |\n| `max_breadcrumbs` | `int` | `100` | Max breadcrumbs per event |\n| `attach_stacktrace` | `bool` | `false` | Stack traces on `captureMessage()` |\n| `in_app_include` | `string[]` | `[]` | Path prefixes belonging to your app |\n| `in_app_exclude` | `string[]` | `[]` | Path prefixes for third-party code (hidden in traces) |\n| `ignore_exceptions` | `string[]` | `[]` | Exception FQCNs to never report |\n| `ignore_transactions` | `string[]` | `[]` | Transaction names to never report |\n| `error_types` | `int\\|null` | `error_reporting()` | PHP error bitmask (e.g., `E_ALL & ~E_NOTICE`) |\n| `capture_silenced_errors` | `bool` | `false` | Capture errors suppressed by `@` operator |\n| `max_request_body_size` | `string` | `\"medium\"` | `\"none\"` \u002F `\"small\"` \u002F `\"medium\"` \u002F `\"always\"` |\n| `before_send` | `callable` | identity | `fn(Event $event, ?EventHint $hint): ?Event` — return `null` to drop |\n| `before_breadcrumb` | `callable` | identity | `fn(Breadcrumb $b): ?Breadcrumb` — return `null` to discard |\n| `trace_propagation_targets` | `string[]\\|null` | `null` | Downstream hosts to inject `sentry-trace` headers into; `null` = all, `[]` = none |\n| `strict_trace_continuation` | `bool` | `false` | Only continue an incoming distributed trace if the `sentry-org_id` baggage matches the SDK's org ID; prevents trace contamination from third-party Sentry-instrumented services (>=4.21.0) |\n| `debug` | `bool` | `false` | Verbose SDK output (use a PSR-3 `logger` option instead for structured output) |\n\n### Environment Variables\n\n| Variable | Maps to | Notes |\n|----------|---------|-------|\n| `SENTRY_DSN` | `dsn` | Also `$_SERVER['SENTRY_DSN']` |\n| `SENTRY_ENVIRONMENT` | `environment` | |\n| `SENTRY_RELEASE` | `release` | Also reads `$_SERVER['AWS_LAMBDA_FUNCTION_VERSION']` |\n| `SENTRY_SPOTLIGHT` | `spotlight` | |\n\n> **Laravel note:** Uses `SENTRY_LARAVEL_DSN` (falls back to `SENTRY_DSN`). Other options follow `SENTRY_TRACES_SAMPLE_RATE`, `SENTRY_PROFILES_SAMPLE_RATE`, etc.\n\n---\n\n## Verification\n\nTest that Sentry is receiving events:\n\n```php\n\u002F\u002F Trigger a real error event — check the Sentry dashboard within seconds\nthrow new \\Exception('Sentry PHP SDK test');\n```\n\nOr for a non-crashing check:\n\n```php\n\\Sentry\\captureMessage('Sentry PHP SDK test');\n```\n\n**Laravel:**\n```bash\nphp artisan sentry:test\n```\n\nIf nothing appears:\n1. Enable debug output:\n   ```php\n   \\Sentry\\init([\n       'dsn' => '...',\n       'logger' => new \\Sentry\\Logger\\DebugStdOutLogger(),\n   ]);\n   ```\n2. Verify the DSN is correct (format: `https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>`)\n3. Check `SENTRY_DSN` (or `SENTRY_LARAVEL_DSN`) env var is set in the running process\n4. For queue workers: ensure Sentry is initialized **inside the worker process**, not just the web process\n\n---\n\n## Phase 4: Cross-Link\n\nAfter completing PHP setup, check for a companion frontend missing Sentry:\n\n```bash\nls frontend\u002F resources\u002Fjs\u002F assets\u002F public\u002F 2>\u002Fdev\u002Fnull\ncat package.json frontend\u002Fpackage.json 2>\u002Fdev\u002Fnull \\\n  | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"|\"nuxt\"'\n```\n\nIf a frontend exists without Sentry, suggest the matching skill:\n\n| Frontend detected | Suggest skill |\n|-------------------|--------------|\n| React \u002F Next.js | `sentry-react-sdk` |\n| Svelte \u002F SvelteKit | `sentry-svelte-sdk` |\n| Vue \u002F Nuxt | Use `@sentry\u002Fvue` — see [docs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F) |\n| Other JS\u002FTS | `sentry-react-sdk` (covers generic browser JS patterns) |\n\n---\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Events not appearing | Enable `logger` option (`DebugStdOutLogger`), verify DSN, check env vars in the running process |\n| Malformed DSN error | Format: `https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>` |\n| Laravel exceptions not captured | Ensure `Integration::handles($exceptions)` is in `bootstrap\u002Fapp.php` |\n| Symfony exceptions not captured | Verify `SentryBundle` is registered in `config\u002Fbundles.php` |\n| No traces appearing | Set `traces_sample_rate` (not `null`); confirm auto-instrumentation is enabled |\n| Profiling not working | `excimer` extension required (Linux\u002FmacOS only; not available on Windows); requires `traces_sample_rate > 0` |\n| `enable_logs` not working | Requires `sentry\u002Fsentry >= 4.12.0`, `sentry\u002Fsentry-laravel >= 4.15.0`, or `sentry\u002Fsentry-symfony >= 5.4.0` |\n| Queue worker errors missing | Init Sentry in the worker process itself, not just the web process; for Laravel use `SENTRY_LARAVEL_DSN` in worker `.env` |\n| Too many transactions | Lower `traces_sample_rate` or use `traces_sampler` to drop health check routes |\n| PII not captured | Set `send_default_pii: true`; for Laravel set `send_default_pii: true` in `config\u002Fsentry.php` |\n| `@`-suppressed errors missing | Set `capture_silenced_errors: true` |\n| Cross-service traces broken | Check `trace_propagation_targets`; ensure downstream services have Sentry installed |\n| Trace contamination from third-party services | Set `strict_trace_continuation: true` to only continue traces where the incoming `sentry-org_id` baggage matches your SDK's org ID (>=4.21.0) |\n",{"data":37,"body":41},{"name":4,"description":6,"license":27,"category":38,"parent":39,"disable-model-invocation":40},"sdk-setup","sentry-sdk-setup",true,{"type":42,"children":43},"root",[44,71,77,82,89,138,162,166,172,177,614,622,748,751,757,762,770,804,812,900,908,1109,1127,1130,1136,1143,1319,1327,1372,1378,1385,1413,1538,1543,1561,1615,1623,1651,1679,1693,1726,1741,1746,1763,1777,1792,1969,1983,1997,2012,2018,2023,2145,2151,2156,2327,2340,2343,2349,2362,3304,3310,3445,3487,3490,3496,3501,3524,3529,3543,3551,3574,3579,3667,3670,3676,3681,3779,3784,3886,3889,3895,4257],{"type":45,"tag":46,"props":47,"children":48},"element","blockquote",{},[49],{"type":45,"tag":50,"props":51,"children":52},"p",{},[53,61,63,69],{"type":45,"tag":54,"props":55,"children":57},"a",{"href":56},"..\u002F..\u002FSKILL_TREE.md",[58],{"type":59,"value":60},"text","All Skills",{"type":59,"value":62}," > ",{"type":45,"tag":54,"props":64,"children":66},{"href":65},"..\u002Fsentry-sdk-setup\u002FSKILL.md",[67],{"type":59,"value":68},"SDK Setup",{"type":59,"value":70}," > PHP SDK",{"type":45,"tag":72,"props":73,"children":74},"h1",{"id":4},[75],{"type":59,"value":76},"Sentry PHP SDK",{"type":45,"tag":50,"props":78,"children":79},{},[80],{"type":59,"value":81},"Opinionated wizard that scans your PHP project and guides you through complete Sentry setup.",{"type":45,"tag":83,"props":84,"children":86},"h2",{"id":85},"invoke-this-skill-when",[87],{"type":59,"value":88},"Invoke This Skill When",{"type":45,"tag":90,"props":91,"children":92},"ul",{},[93,99,104,133],{"type":45,"tag":94,"props":95,"children":96},"li",{},[97],{"type":59,"value":98},"User asks to \"add Sentry to PHP\" or \"setup Sentry\" in a PHP app",{"type":45,"tag":94,"props":100,"children":101},{},[102],{"type":59,"value":103},"User wants error monitoring, tracing, profiling, logging, metrics, or crons in PHP",{"type":45,"tag":94,"props":105,"children":106},{},[107,109,116,118,124,125,131],{"type":59,"value":108},"User mentions ",{"type":45,"tag":110,"props":111,"children":113},"code",{"className":112},[],[114],{"type":59,"value":115},"sentry\u002Fsentry",{"type":59,"value":117},", ",{"type":45,"tag":110,"props":119,"children":121},{"className":120},[],[122],{"type":59,"value":123},"sentry\u002Fsentry-laravel",{"type":59,"value":117},{"type":45,"tag":110,"props":126,"children":128},{"className":127},[],[129],{"type":59,"value":130},"sentry\u002Fsentry-symfony",{"type":59,"value":132},", or Sentry + any PHP framework",{"type":45,"tag":94,"props":134,"children":135},{},[136],{"type":59,"value":137},"User wants to monitor Laravel routes, Symfony controllers, queues, scheduled tasks, or plain PHP scripts",{"type":45,"tag":46,"props":139,"children":140},{},[141],{"type":45,"tag":50,"props":142,"children":143},{},[144,150,152,160],{"type":45,"tag":145,"props":146,"children":147},"strong",{},[148],{"type":59,"value":149},"Note:",{"type":59,"value":151}," SDK versions and APIs below reflect Sentry docs at time of writing (sentry\u002Fsentry 4.x, sentry\u002Fsentry-laravel 4.x, sentry\u002Fsentry-symfony 5.x).\nAlways verify against ",{"type":45,"tag":54,"props":153,"children":157},{"href":154,"rel":155},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fphp\u002F",[156],"nofollow",[158],{"type":59,"value":159},"docs.sentry.io\u002Fplatforms\u002Fphp\u002F",{"type":59,"value":161}," before implementing.",{"type":45,"tag":163,"props":164,"children":165},"hr",{},[],{"type":45,"tag":83,"props":167,"children":169},{"id":168},"phase-1-detect",[170],{"type":59,"value":171},"Phase 1: Detect",{"type":45,"tag":50,"props":173,"children":174},{},[175],{"type":59,"value":176},"Run these commands to understand the project before making recommendations:",{"type":45,"tag":178,"props":179,"children":184},"pre",{"className":180,"code":181,"language":182,"meta":183,"style":183},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Check existing Sentry\ngrep -i sentry composer.json composer.lock 2>\u002Fdev\u002Fnull\n\n# Detect framework\ncat composer.json | grep -E '\"laravel\u002Fframework\"|\"symfony\u002Fframework-bundle\"|\"illuminate\u002F'\n\n# Confirm framework via filesystem markers\nls artisan 2>\u002Fdev\u002Fnull && echo \"Laravel detected\"\nls bin\u002Fconsole 2>\u002Fdev\u002Fnull && echo \"Symfony detected\"\n\n# Detect queue systems\ngrep -E '\"laravel\u002Fhorizon\"|\"symfony\u002Fmessenger\"' composer.json 2>\u002Fdev\u002Fnull\n\n# Detect AI libraries\ngrep -E '\"(laravel\u002Fai|openai-php|openai\u002F|anthropic|llm)' composer.json 2>\u002Fdev\u002Fnull\n\n# Check for companion frontend\nls frontend\u002F resources\u002Fjs\u002F assets\u002F 2>\u002Fdev\u002Fnull\ncat package.json 2>\u002Fdev\u002Fnull | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"'\n","bash","",[185],{"type":45,"tag":110,"props":186,"children":187},{"__ignoreMap":183},[188,200,242,251,260,303,311,320,369,411,419,428,466,474,483,520,528,537,568],{"type":45,"tag":189,"props":190,"children":193},"span",{"class":191,"line":192},"line",1,[194],{"type":45,"tag":189,"props":195,"children":197},{"style":196},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[198],{"type":59,"value":199},"# Check existing Sentry\n",{"type":45,"tag":189,"props":201,"children":203},{"class":191,"line":202},2,[204,210,216,221,226,231,237],{"type":45,"tag":189,"props":205,"children":207},{"style":206},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[208],{"type":59,"value":209},"grep",{"type":45,"tag":189,"props":211,"children":213},{"style":212},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[214],{"type":59,"value":215}," -i",{"type":45,"tag":189,"props":217,"children":218},{"style":212},[219],{"type":59,"value":220}," sentry",{"type":45,"tag":189,"props":222,"children":223},{"style":212},[224],{"type":59,"value":225}," composer.json",{"type":45,"tag":189,"props":227,"children":228},{"style":212},[229],{"type":59,"value":230}," composer.lock",{"type":45,"tag":189,"props":232,"children":234},{"style":233},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[235],{"type":59,"value":236}," 2>",{"type":45,"tag":189,"props":238,"children":239},{"style":212},[240],{"type":59,"value":241},"\u002Fdev\u002Fnull\n",{"type":45,"tag":189,"props":243,"children":245},{"class":191,"line":244},3,[246],{"type":45,"tag":189,"props":247,"children":248},{"emptyLinePlaceholder":40},[249],{"type":59,"value":250},"\n",{"type":45,"tag":189,"props":252,"children":254},{"class":191,"line":253},4,[255],{"type":45,"tag":189,"props":256,"children":257},{"style":196},[258],{"type":59,"value":259},"# Detect framework\n",{"type":45,"tag":189,"props":261,"children":263},{"class":191,"line":262},5,[264,269,273,278,283,288,293,298],{"type":45,"tag":189,"props":265,"children":266},{"style":206},[267],{"type":59,"value":268},"cat",{"type":45,"tag":189,"props":270,"children":271},{"style":212},[272],{"type":59,"value":225},{"type":45,"tag":189,"props":274,"children":275},{"style":233},[276],{"type":59,"value":277}," |",{"type":45,"tag":189,"props":279,"children":280},{"style":206},[281],{"type":59,"value":282}," grep",{"type":45,"tag":189,"props":284,"children":285},{"style":212},[286],{"type":59,"value":287}," -E",{"type":45,"tag":189,"props":289,"children":290},{"style":233},[291],{"type":59,"value":292}," '",{"type":45,"tag":189,"props":294,"children":295},{"style":212},[296],{"type":59,"value":297},"\"laravel\u002Fframework\"|\"symfony\u002Fframework-bundle\"|\"illuminate\u002F",{"type":45,"tag":189,"props":299,"children":300},{"style":233},[301],{"type":59,"value":302},"'\n",{"type":45,"tag":189,"props":304,"children":306},{"class":191,"line":305},6,[307],{"type":45,"tag":189,"props":308,"children":309},{"emptyLinePlaceholder":40},[310],{"type":59,"value":250},{"type":45,"tag":189,"props":312,"children":314},{"class":191,"line":313},7,[315],{"type":45,"tag":189,"props":316,"children":317},{"style":196},[318],{"type":59,"value":319},"# Confirm framework via filesystem markers\n",{"type":45,"tag":189,"props":321,"children":323},{"class":191,"line":322},8,[324,329,334,338,343,348,354,359,364],{"type":45,"tag":189,"props":325,"children":326},{"style":206},[327],{"type":59,"value":328},"ls",{"type":45,"tag":189,"props":330,"children":331},{"style":212},[332],{"type":59,"value":333}," artisan",{"type":45,"tag":189,"props":335,"children":336},{"style":233},[337],{"type":59,"value":236},{"type":45,"tag":189,"props":339,"children":340},{"style":212},[341],{"type":59,"value":342},"\u002Fdev\u002Fnull",{"type":45,"tag":189,"props":344,"children":345},{"style":233},[346],{"type":59,"value":347}," &&",{"type":45,"tag":189,"props":349,"children":351},{"style":350},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[352],{"type":59,"value":353}," echo",{"type":45,"tag":189,"props":355,"children":356},{"style":233},[357],{"type":59,"value":358}," \"",{"type":45,"tag":189,"props":360,"children":361},{"style":212},[362],{"type":59,"value":363},"Laravel detected",{"type":45,"tag":189,"props":365,"children":366},{"style":233},[367],{"type":59,"value":368},"\"\n",{"type":45,"tag":189,"props":370,"children":372},{"class":191,"line":371},9,[373,377,382,386,390,394,398,402,407],{"type":45,"tag":189,"props":374,"children":375},{"style":206},[376],{"type":59,"value":328},{"type":45,"tag":189,"props":378,"children":379},{"style":212},[380],{"type":59,"value":381}," bin\u002Fconsole",{"type":45,"tag":189,"props":383,"children":384},{"style":233},[385],{"type":59,"value":236},{"type":45,"tag":189,"props":387,"children":388},{"style":212},[389],{"type":59,"value":342},{"type":45,"tag":189,"props":391,"children":392},{"style":233},[393],{"type":59,"value":347},{"type":45,"tag":189,"props":395,"children":396},{"style":350},[397],{"type":59,"value":353},{"type":45,"tag":189,"props":399,"children":400},{"style":233},[401],{"type":59,"value":358},{"type":45,"tag":189,"props":403,"children":404},{"style":212},[405],{"type":59,"value":406},"Symfony detected",{"type":45,"tag":189,"props":408,"children":409},{"style":233},[410],{"type":59,"value":368},{"type":45,"tag":189,"props":412,"children":414},{"class":191,"line":413},10,[415],{"type":45,"tag":189,"props":416,"children":417},{"emptyLinePlaceholder":40},[418],{"type":59,"value":250},{"type":45,"tag":189,"props":420,"children":422},{"class":191,"line":421},11,[423],{"type":45,"tag":189,"props":424,"children":425},{"style":196},[426],{"type":59,"value":427},"# Detect queue systems\n",{"type":45,"tag":189,"props":429,"children":431},{"class":191,"line":430},12,[432,436,440,444,449,454,458,462],{"type":45,"tag":189,"props":433,"children":434},{"style":206},[435],{"type":59,"value":209},{"type":45,"tag":189,"props":437,"children":438},{"style":212},[439],{"type":59,"value":287},{"type":45,"tag":189,"props":441,"children":442},{"style":233},[443],{"type":59,"value":292},{"type":45,"tag":189,"props":445,"children":446},{"style":212},[447],{"type":59,"value":448},"\"laravel\u002Fhorizon\"|\"symfony\u002Fmessenger\"",{"type":45,"tag":189,"props":450,"children":451},{"style":233},[452],{"type":59,"value":453},"'",{"type":45,"tag":189,"props":455,"children":456},{"style":212},[457],{"type":59,"value":225},{"type":45,"tag":189,"props":459,"children":460},{"style":233},[461],{"type":59,"value":236},{"type":45,"tag":189,"props":463,"children":464},{"style":212},[465],{"type":59,"value":241},{"type":45,"tag":189,"props":467,"children":469},{"class":191,"line":468},13,[470],{"type":45,"tag":189,"props":471,"children":472},{"emptyLinePlaceholder":40},[473],{"type":59,"value":250},{"type":45,"tag":189,"props":475,"children":477},{"class":191,"line":476},14,[478],{"type":45,"tag":189,"props":479,"children":480},{"style":196},[481],{"type":59,"value":482},"# Detect AI libraries\n",{"type":45,"tag":189,"props":484,"children":486},{"class":191,"line":485},15,[487,491,495,499,504,508,512,516],{"type":45,"tag":189,"props":488,"children":489},{"style":206},[490],{"type":59,"value":209},{"type":45,"tag":189,"props":492,"children":493},{"style":212},[494],{"type":59,"value":287},{"type":45,"tag":189,"props":496,"children":497},{"style":233},[498],{"type":59,"value":292},{"type":45,"tag":189,"props":500,"children":501},{"style":212},[502],{"type":59,"value":503},"\"(laravel\u002Fai|openai-php|openai\u002F|anthropic|llm)",{"type":45,"tag":189,"props":505,"children":506},{"style":233},[507],{"type":59,"value":453},{"type":45,"tag":189,"props":509,"children":510},{"style":212},[511],{"type":59,"value":225},{"type":45,"tag":189,"props":513,"children":514},{"style":233},[515],{"type":59,"value":236},{"type":45,"tag":189,"props":517,"children":518},{"style":212},[519],{"type":59,"value":241},{"type":45,"tag":189,"props":521,"children":523},{"class":191,"line":522},16,[524],{"type":45,"tag":189,"props":525,"children":526},{"emptyLinePlaceholder":40},[527],{"type":59,"value":250},{"type":45,"tag":189,"props":529,"children":531},{"class":191,"line":530},17,[532],{"type":45,"tag":189,"props":533,"children":534},{"style":196},[535],{"type":59,"value":536},"# Check for companion frontend\n",{"type":45,"tag":189,"props":538,"children":540},{"class":191,"line":539},18,[541,545,550,555,560,564],{"type":45,"tag":189,"props":542,"children":543},{"style":206},[544],{"type":59,"value":328},{"type":45,"tag":189,"props":546,"children":547},{"style":212},[548],{"type":59,"value":549}," frontend\u002F",{"type":45,"tag":189,"props":551,"children":552},{"style":212},[553],{"type":59,"value":554}," resources\u002Fjs\u002F",{"type":45,"tag":189,"props":556,"children":557},{"style":212},[558],{"type":59,"value":559}," assets\u002F",{"type":45,"tag":189,"props":561,"children":562},{"style":233},[563],{"type":59,"value":236},{"type":45,"tag":189,"props":565,"children":566},{"style":212},[567],{"type":59,"value":241},{"type":45,"tag":189,"props":569,"children":571},{"class":191,"line":570},19,[572,576,581,585,589,593,597,601,605,610],{"type":45,"tag":189,"props":573,"children":574},{"style":206},[575],{"type":59,"value":268},{"type":45,"tag":189,"props":577,"children":578},{"style":212},[579],{"type":59,"value":580}," package.json",{"type":45,"tag":189,"props":582,"children":583},{"style":233},[584],{"type":59,"value":236},{"type":45,"tag":189,"props":586,"children":587},{"style":212},[588],{"type":59,"value":342},{"type":45,"tag":189,"props":590,"children":591},{"style":233},[592],{"type":59,"value":277},{"type":45,"tag":189,"props":594,"children":595},{"style":206},[596],{"type":59,"value":282},{"type":45,"tag":189,"props":598,"children":599},{"style":212},[600],{"type":59,"value":287},{"type":45,"tag":189,"props":602,"children":603},{"style":233},[604],{"type":59,"value":292},{"type":45,"tag":189,"props":606,"children":607},{"style":212},[608],{"type":59,"value":609},"\"react\"|\"svelte\"|\"vue\"|\"next\"",{"type":45,"tag":189,"props":611,"children":612},{"style":233},[613],{"type":59,"value":302},{"type":45,"tag":50,"props":615,"children":616},{},[617],{"type":45,"tag":145,"props":618,"children":619},{},[620],{"type":59,"value":621},"What to note:",{"type":45,"tag":90,"props":623,"children":624},{},[625,661,717,722,743],{"type":45,"tag":94,"props":626,"children":627},{},[628,630,635,637,643,645,651,653,659],{"type":59,"value":629},"Is ",{"type":45,"tag":110,"props":631,"children":633},{"className":632},[],[634],{"type":59,"value":115},{"type":59,"value":636}," (or ",{"type":45,"tag":110,"props":638,"children":640},{"className":639},[],[641],{"type":59,"value":642},"-laravel",{"type":59,"value":644}," \u002F ",{"type":45,"tag":110,"props":646,"children":648},{"className":647},[],[649],{"type":59,"value":650},"-symfony",{"type":59,"value":652},") already in ",{"type":45,"tag":110,"props":654,"children":656},{"className":655},[],[657],{"type":59,"value":658},"composer.json",{"type":59,"value":660},"? If yes, check if the init call exists — may just need feature config.",{"type":45,"tag":94,"props":662,"children":663},{},[664,666,671,673,679,681,687,689,694,695,701,702,708,710,715],{"type":59,"value":665},"Framework detected? ",{"type":45,"tag":145,"props":667,"children":668},{},[669],{"type":59,"value":670},"Laravel",{"type":59,"value":672}," (has ",{"type":45,"tag":110,"props":674,"children":676},{"className":675},[],[677],{"type":59,"value":678},"artisan",{"type":59,"value":680}," + ",{"type":45,"tag":110,"props":682,"children":684},{"className":683},[],[685],{"type":59,"value":686},"laravel\u002Fframework",{"type":59,"value":688}," in composer.json), ",{"type":45,"tag":145,"props":690,"children":691},{},[692],{"type":59,"value":693},"Symfony",{"type":59,"value":672},{"type":45,"tag":110,"props":696,"children":698},{"className":697},[],[699],{"type":59,"value":700},"bin\u002Fconsole",{"type":59,"value":680},{"type":45,"tag":110,"props":703,"children":705},{"className":704},[],[706],{"type":59,"value":707},"symfony\u002Fframework-bundle",{"type":59,"value":709},"), or ",{"type":45,"tag":145,"props":711,"children":712},{},[713],{"type":59,"value":714},"plain PHP",{"type":59,"value":716},".",{"type":45,"tag":94,"props":718,"children":719},{},[720],{"type":59,"value":721},"Queue system? (Laravel Queue \u002F Horizon, Symfony Messenger need queue worker configuration.)",{"type":45,"tag":94,"props":723,"children":724},{},[725,727,733,735,741],{"type":59,"value":726},"AI libraries? (",{"type":45,"tag":110,"props":728,"children":730},{"className":729},[],[731],{"type":59,"value":732},"laravel\u002Fai",{"type":59,"value":734}," is auto-instrumented by ",{"type":45,"tag":110,"props":736,"children":738},{"className":737},[],[739],{"type":59,"value":740},"sentry\u002Fsentry-laravel >= 4.27.0",{"type":59,"value":742}," when tracing is enabled; other PHP AI libraries need manual spans.)",{"type":45,"tag":94,"props":744,"children":745},{},[746],{"type":59,"value":747},"Companion frontend? (Triggers Phase 4 cross-link.)",{"type":45,"tag":163,"props":749,"children":750},{},[],{"type":45,"tag":83,"props":752,"children":754},{"id":753},"phase-2-recommend",[755],{"type":59,"value":756},"Phase 2: Recommend",{"type":45,"tag":50,"props":758,"children":759},{},[760],{"type":59,"value":761},"Based on what you found, present a concrete proposal. Don't ask open-ended questions — lead with a recommendation:",{"type":45,"tag":50,"props":763,"children":764},{},[765],{"type":45,"tag":145,"props":766,"children":767},{},[768],{"type":59,"value":769},"Always recommended (core coverage):",{"type":45,"tag":90,"props":771,"children":772},{},[773,785],{"type":45,"tag":94,"props":774,"children":775},{},[776,778,783],{"type":59,"value":777},"✅ ",{"type":45,"tag":145,"props":779,"children":780},{},[781],{"type":59,"value":782},"Error Monitoring",{"type":59,"value":784}," — captures unhandled exceptions and PHP errors",{"type":45,"tag":94,"props":786,"children":787},{},[788,789,794,796,802],{"type":59,"value":777},{"type":45,"tag":145,"props":790,"children":791},{},[792],{"type":59,"value":793},"Logging",{"type":59,"value":795}," — Monolog integration (Laravel\u002FSymfony auto-configure; plain PHP uses ",{"type":45,"tag":110,"props":797,"children":799},{"className":798},[],[800],{"type":59,"value":801},"MonologHandler",{"type":59,"value":803},")",{"type":45,"tag":50,"props":805,"children":806},{},[807],{"type":45,"tag":145,"props":808,"children":809},{},[810],{"type":59,"value":811},"Recommend when detected:",{"type":45,"tag":90,"props":813,"children":814},{},[815,826,846,857,876],{"type":45,"tag":94,"props":816,"children":817},{},[818,819,824],{"type":59,"value":777},{"type":45,"tag":145,"props":820,"children":821},{},[822],{"type":59,"value":823},"Tracing",{"type":59,"value":825}," — web framework detected (Laravel\u002FSymfony auto-instrument HTTP, DB, Twig\u002FBlade, cache)",{"type":45,"tag":94,"props":827,"children":828},{},[829,831,836,838,844],{"type":59,"value":830},"⚡ ",{"type":45,"tag":145,"props":832,"children":833},{},[834],{"type":59,"value":835},"Profiling",{"type":59,"value":837}," — production apps where performance matters (requires ",{"type":45,"tag":110,"props":839,"children":841},{"className":840},[],[842],{"type":59,"value":843},"excimer",{"type":59,"value":845}," PHP extension, Linux\u002FmacOS only)",{"type":45,"tag":94,"props":847,"children":848},{},[849,850,855],{"type":59,"value":830},{"type":45,"tag":145,"props":851,"children":852},{},[853],{"type":59,"value":854},"Crons",{"type":59,"value":856}," — scheduler patterns detected (Laravel Scheduler, Symfony Scheduler, custom cron jobs)",{"type":45,"tag":94,"props":858,"children":859},{},[860,861,866,868,874],{"type":59,"value":830},{"type":45,"tag":145,"props":862,"children":863},{},[864],{"type":59,"value":865},"Metrics",{"type":59,"value":867}," — business KPIs or SLO tracking (uses ",{"type":45,"tag":110,"props":869,"children":871},{"className":870},[],[872],{"type":59,"value":873},"TraceMetrics",{"type":59,"value":875}," API)",{"type":45,"tag":94,"props":877,"children":878},{},[879,880,885,887,892,894,899],{"type":59,"value":777},{"type":45,"tag":145,"props":881,"children":882},{},[883],{"type":59,"value":884},"AI Monitoring",{"type":59,"value":886}," — ",{"type":45,"tag":110,"props":888,"children":890},{"className":889},[],[891],{"type":59,"value":732},{"type":59,"value":893}," detected in a Laravel app (auto-instrumented in ",{"type":45,"tag":110,"props":895,"children":897},{"className":896},[],[898],{"type":59,"value":740},{"type":59,"value":803},{"type":45,"tag":50,"props":901,"children":902},{},[903],{"type":45,"tag":145,"props":904,"children":905},{},[906],{"type":59,"value":907},"Recommendation matrix:",{"type":45,"tag":909,"props":910,"children":911},"table",{},[912,936],{"type":45,"tag":913,"props":914,"children":915},"thead",{},[916],{"type":45,"tag":917,"props":918,"children":919},"tr",{},[920,926,931],{"type":45,"tag":921,"props":922,"children":923},"th",{},[924],{"type":59,"value":925},"Feature",{"type":45,"tag":921,"props":927,"children":928},{},[929],{"type":59,"value":930},"Recommend when...",{"type":45,"tag":921,"props":932,"children":933},{},[934],{"type":59,"value":935},"Reference",{"type":45,"tag":937,"props":938,"children":939},"tbody",{},[940,967,988,1016,1041,1062,1083],{"type":45,"tag":917,"props":941,"children":942},{},[943,948,958],{"type":45,"tag":944,"props":945,"children":946},"td",{},[947],{"type":59,"value":782},{"type":45,"tag":944,"props":949,"children":950},{},[951,956],{"type":45,"tag":145,"props":952,"children":953},{},[954],{"type":59,"value":955},"Always",{"type":59,"value":957}," — non-negotiable baseline",{"type":45,"tag":944,"props":959,"children":960},{},[961],{"type":45,"tag":110,"props":962,"children":964},{"className":963},[],[965],{"type":59,"value":966},"${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md",{"type":45,"tag":917,"props":968,"children":969},{},[970,974,979],{"type":45,"tag":944,"props":971,"children":972},{},[973],{"type":59,"value":823},{"type":45,"tag":944,"props":975,"children":976},{},[977],{"type":59,"value":978},"Laravel\u002FSymfony detected, or manual spans needed",{"type":45,"tag":944,"props":980,"children":981},{},[982],{"type":45,"tag":110,"props":983,"children":985},{"className":984},[],[986],{"type":59,"value":987},"${SKILL_ROOT}\u002Freferences\u002Ftracing.md",{"type":45,"tag":917,"props":989,"children":990},{},[991,995,1007],{"type":45,"tag":944,"props":992,"children":993},{},[994],{"type":59,"value":835},{"type":45,"tag":944,"props":996,"children":997},{},[998,1000,1005],{"type":59,"value":999},"Production + ",{"type":45,"tag":110,"props":1001,"children":1003},{"className":1002},[],[1004],{"type":59,"value":843},{"type":59,"value":1006}," extension available",{"type":45,"tag":944,"props":1008,"children":1009},{},[1010],{"type":45,"tag":110,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":59,"value":1015},"${SKILL_ROOT}\u002Freferences\u002Fprofiling.md",{"type":45,"tag":917,"props":1017,"children":1018},{},[1019,1023,1032],{"type":45,"tag":944,"props":1020,"children":1021},{},[1022],{"type":59,"value":793},{"type":45,"tag":944,"props":1024,"children":1025},{},[1026,1030],{"type":45,"tag":145,"props":1027,"children":1028},{},[1029],{"type":59,"value":955},{"type":59,"value":1031},"; Monolog for Laravel\u002FSymfony",{"type":45,"tag":944,"props":1033,"children":1034},{},[1035],{"type":45,"tag":110,"props":1036,"children":1038},{"className":1037},[],[1039],{"type":59,"value":1040},"${SKILL_ROOT}\u002Freferences\u002Flogging.md",{"type":45,"tag":917,"props":1042,"children":1043},{},[1044,1048,1053],{"type":45,"tag":944,"props":1045,"children":1046},{},[1047],{"type":59,"value":865},{"type":45,"tag":944,"props":1049,"children":1050},{},[1051],{"type":59,"value":1052},"Business events or SLO tracking needed",{"type":45,"tag":944,"props":1054,"children":1055},{},[1056],{"type":45,"tag":110,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":59,"value":1061},"${SKILL_ROOT}\u002Freferences\u002Fmetrics.md",{"type":45,"tag":917,"props":1063,"children":1064},{},[1065,1069,1074],{"type":45,"tag":944,"props":1066,"children":1067},{},[1068],{"type":59,"value":854},{"type":45,"tag":944,"props":1070,"children":1071},{},[1072],{"type":59,"value":1073},"Scheduler or cron patterns detected",{"type":45,"tag":944,"props":1075,"children":1076},{},[1077],{"type":45,"tag":110,"props":1078,"children":1080},{"className":1079},[],[1081],{"type":59,"value":1082},"${SKILL_ROOT}\u002Freferences\u002Fcrons.md",{"type":45,"tag":917,"props":1084,"children":1085},{},[1086,1090,1100],{"type":45,"tag":944,"props":1087,"children":1088},{},[1089],{"type":59,"value":884},{"type":45,"tag":944,"props":1091,"children":1092},{},[1093,1098],{"type":45,"tag":110,"props":1094,"children":1096},{"className":1095},[],[1097],{"type":59,"value":732},{"type":59,"value":1099}," detected in a Laravel app, or manual PHP AI spans needed",{"type":45,"tag":944,"props":1101,"children":1102},{},[1103],{"type":45,"tag":110,"props":1104,"children":1106},{"className":1105},[],[1107],{"type":59,"value":1108},"${SKILL_ROOT}\u002Freferences\u002Fai-monitoring.md",{"type":45,"tag":50,"props":1110,"children":1111},{},[1112,1114],{"type":59,"value":1113},"Propose: ",{"type":45,"tag":1115,"props":1116,"children":1117},"em",{},[1118,1120,1125],{"type":59,"value":1119},"\"I recommend Error Monitoring + Tracing ",{"type":45,"tag":189,"props":1121,"children":1122},{},[1123],{"type":59,"value":1124},"+ Logging",{"type":59,"value":1126},". Want Profiling, Crons, Metrics, or AI Monitoring too?\"",{"type":45,"tag":163,"props":1128,"children":1129},{},[],{"type":45,"tag":83,"props":1131,"children":1133},{"id":1132},"phase-3-guide",[1134],{"type":59,"value":1135},"Phase 3: Guide",{"type":45,"tag":1137,"props":1138,"children":1140},"h3",{"id":1139},"install",[1141],{"type":59,"value":1142},"Install",{"type":45,"tag":178,"props":1144,"children":1146},{"className":180,"code":1145,"language":182,"meta":183,"style":183},"# Plain PHP\ncomposer require sentry\u002Fsentry \"^4.0\"\n\n# Laravel\ncomposer require sentry\u002Fsentry-laravel \"^4.0\"\n\n# Laravel with Laravel AI monitoring\ncomposer require sentry\u002Fsentry-laravel \"^4.27.0\"\n\n# Symfony\ncomposer require sentry\u002Fsentry-symfony \"^5.0\"\n",[1147],{"type":45,"tag":110,"props":1148,"children":1149},{"__ignoreMap":183},[1150,1158,1189,1196,1204,1232,1239,1247,1275,1282,1290],{"type":45,"tag":189,"props":1151,"children":1152},{"class":191,"line":192},[1153],{"type":45,"tag":189,"props":1154,"children":1155},{"style":196},[1156],{"type":59,"value":1157},"# Plain PHP\n",{"type":45,"tag":189,"props":1159,"children":1160},{"class":191,"line":202},[1161,1166,1171,1176,1180,1185],{"type":45,"tag":189,"props":1162,"children":1163},{"style":206},[1164],{"type":59,"value":1165},"composer",{"type":45,"tag":189,"props":1167,"children":1168},{"style":212},[1169],{"type":59,"value":1170}," require",{"type":45,"tag":189,"props":1172,"children":1173},{"style":212},[1174],{"type":59,"value":1175}," sentry\u002Fsentry",{"type":45,"tag":189,"props":1177,"children":1178},{"style":233},[1179],{"type":59,"value":358},{"type":45,"tag":189,"props":1181,"children":1182},{"style":212},[1183],{"type":59,"value":1184},"^4.0",{"type":45,"tag":189,"props":1186,"children":1187},{"style":233},[1188],{"type":59,"value":368},{"type":45,"tag":189,"props":1190,"children":1191},{"class":191,"line":244},[1192],{"type":45,"tag":189,"props":1193,"children":1194},{"emptyLinePlaceholder":40},[1195],{"type":59,"value":250},{"type":45,"tag":189,"props":1197,"children":1198},{"class":191,"line":253},[1199],{"type":45,"tag":189,"props":1200,"children":1201},{"style":196},[1202],{"type":59,"value":1203},"# Laravel\n",{"type":45,"tag":189,"props":1205,"children":1206},{"class":191,"line":262},[1207,1211,1215,1220,1224,1228],{"type":45,"tag":189,"props":1208,"children":1209},{"style":206},[1210],{"type":59,"value":1165},{"type":45,"tag":189,"props":1212,"children":1213},{"style":212},[1214],{"type":59,"value":1170},{"type":45,"tag":189,"props":1216,"children":1217},{"style":212},[1218],{"type":59,"value":1219}," sentry\u002Fsentry-laravel",{"type":45,"tag":189,"props":1221,"children":1222},{"style":233},[1223],{"type":59,"value":358},{"type":45,"tag":189,"props":1225,"children":1226},{"style":212},[1227],{"type":59,"value":1184},{"type":45,"tag":189,"props":1229,"children":1230},{"style":233},[1231],{"type":59,"value":368},{"type":45,"tag":189,"props":1233,"children":1234},{"class":191,"line":305},[1235],{"type":45,"tag":189,"props":1236,"children":1237},{"emptyLinePlaceholder":40},[1238],{"type":59,"value":250},{"type":45,"tag":189,"props":1240,"children":1241},{"class":191,"line":313},[1242],{"type":45,"tag":189,"props":1243,"children":1244},{"style":196},[1245],{"type":59,"value":1246},"# Laravel with Laravel AI monitoring\n",{"type":45,"tag":189,"props":1248,"children":1249},{"class":191,"line":322},[1250,1254,1258,1262,1266,1271],{"type":45,"tag":189,"props":1251,"children":1252},{"style":206},[1253],{"type":59,"value":1165},{"type":45,"tag":189,"props":1255,"children":1256},{"style":212},[1257],{"type":59,"value":1170},{"type":45,"tag":189,"props":1259,"children":1260},{"style":212},[1261],{"type":59,"value":1219},{"type":45,"tag":189,"props":1263,"children":1264},{"style":233},[1265],{"type":59,"value":358},{"type":45,"tag":189,"props":1267,"children":1268},{"style":212},[1269],{"type":59,"value":1270},"^4.27.0",{"type":45,"tag":189,"props":1272,"children":1273},{"style":233},[1274],{"type":59,"value":368},{"type":45,"tag":189,"props":1276,"children":1277},{"class":191,"line":371},[1278],{"type":45,"tag":189,"props":1279,"children":1280},{"emptyLinePlaceholder":40},[1281],{"type":59,"value":250},{"type":45,"tag":189,"props":1283,"children":1284},{"class":191,"line":413},[1285],{"type":45,"tag":189,"props":1286,"children":1287},{"style":196},[1288],{"type":59,"value":1289},"# Symfony\n",{"type":45,"tag":189,"props":1291,"children":1292},{"class":191,"line":421},[1293,1297,1301,1306,1310,1315],{"type":45,"tag":189,"props":1294,"children":1295},{"style":206},[1296],{"type":59,"value":1165},{"type":45,"tag":189,"props":1298,"children":1299},{"style":212},[1300],{"type":59,"value":1170},{"type":45,"tag":189,"props":1302,"children":1303},{"style":212},[1304],{"type":59,"value":1305}," sentry\u002Fsentry-symfony",{"type":45,"tag":189,"props":1307,"children":1308},{"style":233},[1309],{"type":59,"value":358},{"type":45,"tag":189,"props":1311,"children":1312},{"style":212},[1313],{"type":59,"value":1314},"^5.0",{"type":45,"tag":189,"props":1316,"children":1317},{"style":233},[1318],{"type":59,"value":368},{"type":45,"tag":50,"props":1320,"children":1321},{},[1322],{"type":45,"tag":145,"props":1323,"children":1324},{},[1325],{"type":59,"value":1326},"System requirements:",{"type":45,"tag":90,"props":1328,"children":1329},{},[1330,1335,1362],{"type":45,"tag":94,"props":1331,"children":1332},{},[1333],{"type":59,"value":1334},"PHP 7.2 or later",{"type":45,"tag":94,"props":1336,"children":1337},{},[1338,1340,1346,1347,1353,1354,1360],{"type":59,"value":1339},"Extensions: ",{"type":45,"tag":110,"props":1341,"children":1343},{"className":1342},[],[1344],{"type":59,"value":1345},"ext-json",{"type":59,"value":117},{"type":45,"tag":110,"props":1348,"children":1350},{"className":1349},[],[1351],{"type":59,"value":1352},"ext-mbstring",{"type":59,"value":117},{"type":45,"tag":110,"props":1355,"children":1357},{"className":1356},[],[1358],{"type":59,"value":1359},"ext-curl",{"type":59,"value":1361}," (all required)",{"type":45,"tag":94,"props":1363,"children":1364},{},[1365,1370],{"type":45,"tag":110,"props":1366,"children":1368},{"className":1367},[],[1369],{"type":59,"value":843},{"type":59,"value":1371}," PECL extension (Linux\u002FmacOS only — required for profiling)",{"type":45,"tag":1137,"props":1373,"children":1375},{"id":1374},"framework-specific-initialization",[1376],{"type":59,"value":1377},"Framework-Specific Initialization",{"type":45,"tag":1379,"props":1380,"children":1382},"h4",{"id":1381},"plain-php",[1383],{"type":59,"value":1384},"Plain PHP",{"type":45,"tag":50,"props":1386,"children":1387},{},[1388,1390,1396,1398,1404,1405,1411],{"type":59,"value":1389},"Place ",{"type":45,"tag":110,"props":1391,"children":1393},{"className":1392},[],[1394],{"type":59,"value":1395},"\\Sentry\\init()",{"type":59,"value":1397}," at the top of your entry point (",{"type":45,"tag":110,"props":1399,"children":1401},{"className":1400},[],[1402],{"type":59,"value":1403},"index.php",{"type":59,"value":117},{"type":45,"tag":110,"props":1406,"children":1408},{"className":1407},[],[1409],{"type":59,"value":1410},"bootstrap.php",{"type":59,"value":1412},", or equivalent), before any application code:",{"type":45,"tag":178,"props":1414,"children":1417},{"className":1415,"code":1416,"language":19,"meta":183,"style":183},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\nrequire_once 'vendor\u002Fautoload.php';\n\n\\Sentry\\init([\n    'dsn'                  => $_SERVER['SENTRY_DSN'] ?? '',\n    'environment'          => $_SERVER['SENTRY_ENVIRONMENT'] ?? 'production',\n    'release'              => $_SERVER['SENTRY_RELEASE'] ?? null,\n    'send_default_pii'     => true,\n    'traces_sample_rate'   => 1.0,\n    'profiles_sample_rate' => 1.0,\n    'enable_logs'          => true,\n]);\n\n\u002F\u002F rest of application...\n",[1418],{"type":45,"tag":110,"props":1419,"children":1420},{"__ignoreMap":183},[1421,1429,1436,1444,1451,1459,1467,1475,1483,1491,1499,1507,1515,1523,1530],{"type":45,"tag":189,"props":1422,"children":1423},{"class":191,"line":192},[1424],{"type":45,"tag":189,"props":1425,"children":1426},{},[1427],{"type":59,"value":1428},"\u003C?php\n",{"type":45,"tag":189,"props":1430,"children":1431},{"class":191,"line":202},[1432],{"type":45,"tag":189,"props":1433,"children":1434},{"emptyLinePlaceholder":40},[1435],{"type":59,"value":250},{"type":45,"tag":189,"props":1437,"children":1438},{"class":191,"line":244},[1439],{"type":45,"tag":189,"props":1440,"children":1441},{},[1442],{"type":59,"value":1443},"require_once 'vendor\u002Fautoload.php';\n",{"type":45,"tag":189,"props":1445,"children":1446},{"class":191,"line":253},[1447],{"type":45,"tag":189,"props":1448,"children":1449},{"emptyLinePlaceholder":40},[1450],{"type":59,"value":250},{"type":45,"tag":189,"props":1452,"children":1453},{"class":191,"line":262},[1454],{"type":45,"tag":189,"props":1455,"children":1456},{},[1457],{"type":59,"value":1458},"\\Sentry\\init([\n",{"type":45,"tag":189,"props":1460,"children":1461},{"class":191,"line":305},[1462],{"type":45,"tag":189,"props":1463,"children":1464},{},[1465],{"type":59,"value":1466},"    'dsn'                  => $_SERVER['SENTRY_DSN'] ?? '',\n",{"type":45,"tag":189,"props":1468,"children":1469},{"class":191,"line":313},[1470],{"type":45,"tag":189,"props":1471,"children":1472},{},[1473],{"type":59,"value":1474},"    'environment'          => $_SERVER['SENTRY_ENVIRONMENT'] ?? 'production',\n",{"type":45,"tag":189,"props":1476,"children":1477},{"class":191,"line":322},[1478],{"type":45,"tag":189,"props":1479,"children":1480},{},[1481],{"type":59,"value":1482},"    'release'              => $_SERVER['SENTRY_RELEASE'] ?? null,\n",{"type":45,"tag":189,"props":1484,"children":1485},{"class":191,"line":371},[1486],{"type":45,"tag":189,"props":1487,"children":1488},{},[1489],{"type":59,"value":1490},"    'send_default_pii'     => true,\n",{"type":45,"tag":189,"props":1492,"children":1493},{"class":191,"line":413},[1494],{"type":45,"tag":189,"props":1495,"children":1496},{},[1497],{"type":59,"value":1498},"    'traces_sample_rate'   => 1.0,\n",{"type":45,"tag":189,"props":1500,"children":1501},{"class":191,"line":421},[1502],{"type":45,"tag":189,"props":1503,"children":1504},{},[1505],{"type":59,"value":1506},"    'profiles_sample_rate' => 1.0,\n",{"type":45,"tag":189,"props":1508,"children":1509},{"class":191,"line":430},[1510],{"type":45,"tag":189,"props":1511,"children":1512},{},[1513],{"type":59,"value":1514},"    'enable_logs'          => true,\n",{"type":45,"tag":189,"props":1516,"children":1517},{"class":191,"line":468},[1518],{"type":45,"tag":189,"props":1519,"children":1520},{},[1521],{"type":59,"value":1522},"]);\n",{"type":45,"tag":189,"props":1524,"children":1525},{"class":191,"line":476},[1526],{"type":45,"tag":189,"props":1527,"children":1528},{"emptyLinePlaceholder":40},[1529],{"type":59,"value":250},{"type":45,"tag":189,"props":1531,"children":1532},{"class":191,"line":485},[1533],{"type":45,"tag":189,"props":1534,"children":1535},{},[1536],{"type":59,"value":1537},"\u002F\u002F rest of application...\n",{"type":45,"tag":1379,"props":1539,"children":1541},{"id":1540},"laravel",[1542],{"type":59,"value":670},{"type":45,"tag":50,"props":1544,"children":1545},{},[1546,1551,1553,1559],{"type":45,"tag":145,"props":1547,"children":1548},{},[1549],{"type":59,"value":1550},"Step 1 — Register exception handler",{"type":59,"value":1552}," in ",{"type":45,"tag":110,"props":1554,"children":1556},{"className":1555},[],[1557],{"type":59,"value":1558},"bootstrap\u002Fapp.php",{"type":59,"value":1560},":",{"type":45,"tag":178,"props":1562,"children":1564},{"className":1415,"code":1563,"language":19,"meta":183,"style":183},"use Sentry\\Laravel\\Integration;\n\nreturn Application::configure(basePath: dirname(__DIR__))\n    ->withExceptions(function (Exceptions $exceptions) {\n        Integration::handles($exceptions);\n    })->create();\n",[1565],{"type":45,"tag":110,"props":1566,"children":1567},{"__ignoreMap":183},[1568,1576,1583,1591,1599,1607],{"type":45,"tag":189,"props":1569,"children":1570},{"class":191,"line":192},[1571],{"type":45,"tag":189,"props":1572,"children":1573},{},[1574],{"type":59,"value":1575},"use Sentry\\Laravel\\Integration;\n",{"type":45,"tag":189,"props":1577,"children":1578},{"class":191,"line":202},[1579],{"type":45,"tag":189,"props":1580,"children":1581},{"emptyLinePlaceholder":40},[1582],{"type":59,"value":250},{"type":45,"tag":189,"props":1584,"children":1585},{"class":191,"line":244},[1586],{"type":45,"tag":189,"props":1587,"children":1588},{},[1589],{"type":59,"value":1590},"return Application::configure(basePath: dirname(__DIR__))\n",{"type":45,"tag":189,"props":1592,"children":1593},{"class":191,"line":253},[1594],{"type":45,"tag":189,"props":1595,"children":1596},{},[1597],{"type":59,"value":1598},"    ->withExceptions(function (Exceptions $exceptions) {\n",{"type":45,"tag":189,"props":1600,"children":1601},{"class":191,"line":262},[1602],{"type":45,"tag":189,"props":1603,"children":1604},{},[1605],{"type":59,"value":1606},"        Integration::handles($exceptions);\n",{"type":45,"tag":189,"props":1608,"children":1609},{"class":191,"line":305},[1610],{"type":45,"tag":189,"props":1611,"children":1612},{},[1613],{"type":59,"value":1614},"    })->create();\n",{"type":45,"tag":50,"props":1616,"children":1617},{},[1618],{"type":45,"tag":145,"props":1619,"children":1620},{},[1621],{"type":59,"value":1622},"Step 2 — Publish config and set DSN:",{"type":45,"tag":178,"props":1624,"children":1626},{"className":180,"code":1625,"language":182,"meta":183,"style":183},"php artisan sentry:publish --dsn=YOUR_DSN\n",[1627],{"type":45,"tag":110,"props":1628,"children":1629},{"__ignoreMap":183},[1630],{"type":45,"tag":189,"props":1631,"children":1632},{"class":191,"line":192},[1633,1637,1641,1646],{"type":45,"tag":189,"props":1634,"children":1635},{"style":206},[1636],{"type":59,"value":19},{"type":45,"tag":189,"props":1638,"children":1639},{"style":212},[1640],{"type":59,"value":333},{"type":45,"tag":189,"props":1642,"children":1643},{"style":212},[1644],{"type":59,"value":1645}," sentry:publish",{"type":45,"tag":189,"props":1647,"children":1648},{"style":212},[1649],{"type":59,"value":1650}," --dsn=YOUR_DSN\n",{"type":45,"tag":50,"props":1652,"children":1653},{},[1654,1656,1662,1664,1670,1672,1678],{"type":59,"value":1655},"This creates ",{"type":45,"tag":110,"props":1657,"children":1659},{"className":1658},[],[1660],{"type":59,"value":1661},"config\u002Fsentry.php",{"type":59,"value":1663}," and adds ",{"type":45,"tag":110,"props":1665,"children":1667},{"className":1666},[],[1668],{"type":59,"value":1669},"SENTRY_LARAVEL_DSN",{"type":59,"value":1671}," to ",{"type":45,"tag":110,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":59,"value":1677},".env",{"type":59,"value":716},{"type":45,"tag":50,"props":1680,"children":1681},{},[1682],{"type":45,"tag":145,"props":1683,"children":1684},{},[1685,1687,1692],{"type":59,"value":1686},"Step 3 — Configure ",{"type":45,"tag":110,"props":1688,"children":1690},{"className":1689},[],[1691],{"type":59,"value":1677},{"type":59,"value":1560},{"type":45,"tag":178,"props":1694,"children":1698},{"className":1695,"code":1696,"language":1697,"meta":183,"style":183},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","SENTRY_LARAVEL_DSN=https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\nSENTRY_TRACES_SAMPLE_RATE=1.0\nSENTRY_PROFILES_SAMPLE_RATE=1.0\n","ini",[1699],{"type":45,"tag":110,"props":1700,"children":1701},{"__ignoreMap":183},[1702,1710,1718],{"type":45,"tag":189,"props":1703,"children":1704},{"class":191,"line":192},[1705],{"type":45,"tag":189,"props":1706,"children":1707},{},[1708],{"type":59,"value":1709},"SENTRY_LARAVEL_DSN=https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\n",{"type":45,"tag":189,"props":1711,"children":1712},{"class":191,"line":202},[1713],{"type":45,"tag":189,"props":1714,"children":1715},{},[1716],{"type":59,"value":1717},"SENTRY_TRACES_SAMPLE_RATE=1.0\n",{"type":45,"tag":189,"props":1719,"children":1720},{"class":191,"line":244},[1721],{"type":45,"tag":189,"props":1722,"children":1723},{},[1724],{"type":59,"value":1725},"SENTRY_PROFILES_SAMPLE_RATE=1.0\n",{"type":45,"tag":46,"props":1727,"children":1728},{},[1729],{"type":45,"tag":50,"props":1730,"children":1731},{},[1732,1734,1740],{"type":59,"value":1733},"For full Laravel configuration options, read ",{"type":45,"tag":110,"props":1735,"children":1737},{"className":1736},[],[1738],{"type":59,"value":1739},"${SKILL_ROOT}\u002Freferences\u002Flaravel.md",{"type":59,"value":716},{"type":45,"tag":1379,"props":1742,"children":1744},{"id":1743},"symfony",[1745],{"type":59,"value":693},{"type":45,"tag":50,"props":1747,"children":1748},{},[1749,1754,1755,1761],{"type":45,"tag":145,"props":1750,"children":1751},{},[1752],{"type":59,"value":1753},"Step 1 — Register the bundle",{"type":59,"value":1552},{"type":45,"tag":110,"props":1756,"children":1758},{"className":1757},[],[1759],{"type":59,"value":1760},"config\u002Fbundles.php",{"type":59,"value":1762}," (auto-done by Symfony Flex):",{"type":45,"tag":178,"props":1764,"children":1766},{"className":1415,"code":1765,"language":19,"meta":183,"style":183},"Sentry\\SentryBundle\\SentryBundle::class => ['all' => true],\n",[1767],{"type":45,"tag":110,"props":1768,"children":1769},{"__ignoreMap":183},[1770],{"type":45,"tag":189,"props":1771,"children":1772},{"class":191,"line":192},[1773],{"type":45,"tag":189,"props":1774,"children":1775},{},[1776],{"type":59,"value":1765},{"type":45,"tag":50,"props":1778,"children":1779},{},[1780],{"type":45,"tag":145,"props":1781,"children":1782},{},[1783,1785,1791],{"type":59,"value":1784},"Step 2 — Create ",{"type":45,"tag":110,"props":1786,"children":1788},{"className":1787},[],[1789],{"type":59,"value":1790},"config\u002Fpackages\u002Fsentry.yaml",{"type":59,"value":1560},{"type":45,"tag":178,"props":1793,"children":1797},{"className":1794,"code":1795,"language":1796,"meta":183,"style":183},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sentry:\n    dsn: '%env(SENTRY_DSN)%'\n    options:\n        environment: '%env(APP_ENV)%'\n        release: '%env(SENTRY_RELEASE)%'\n        send_default_pii: true\n        traces_sample_rate: 1.0\n        profiles_sample_rate: 1.0\n        enable_logs: true\n","yaml",[1798],{"type":45,"tag":110,"props":1799,"children":1800},{"__ignoreMap":183},[1801,1814,1839,1851,1876,1901,1919,1937,1953],{"type":45,"tag":189,"props":1802,"children":1803},{"class":191,"line":192},[1804,1809],{"type":45,"tag":189,"props":1805,"children":1807},{"style":1806},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[1808],{"type":59,"value":8},{"type":45,"tag":189,"props":1810,"children":1811},{"style":233},[1812],{"type":59,"value":1813},":\n",{"type":45,"tag":189,"props":1815,"children":1816},{"class":191,"line":202},[1817,1822,1826,1830,1835],{"type":45,"tag":189,"props":1818,"children":1819},{"style":1806},[1820],{"type":59,"value":1821},"    dsn",{"type":45,"tag":189,"props":1823,"children":1824},{"style":233},[1825],{"type":59,"value":1560},{"type":45,"tag":189,"props":1827,"children":1828},{"style":233},[1829],{"type":59,"value":292},{"type":45,"tag":189,"props":1831,"children":1832},{"style":212},[1833],{"type":59,"value":1834},"%env(SENTRY_DSN)%",{"type":45,"tag":189,"props":1836,"children":1837},{"style":233},[1838],{"type":59,"value":302},{"type":45,"tag":189,"props":1840,"children":1841},{"class":191,"line":244},[1842,1847],{"type":45,"tag":189,"props":1843,"children":1844},{"style":1806},[1845],{"type":59,"value":1846},"    options",{"type":45,"tag":189,"props":1848,"children":1849},{"style":233},[1850],{"type":59,"value":1813},{"type":45,"tag":189,"props":1852,"children":1853},{"class":191,"line":253},[1854,1859,1863,1867,1872],{"type":45,"tag":189,"props":1855,"children":1856},{"style":1806},[1857],{"type":59,"value":1858},"        environment",{"type":45,"tag":189,"props":1860,"children":1861},{"style":233},[1862],{"type":59,"value":1560},{"type":45,"tag":189,"props":1864,"children":1865},{"style":233},[1866],{"type":59,"value":292},{"type":45,"tag":189,"props":1868,"children":1869},{"style":212},[1870],{"type":59,"value":1871},"%env(APP_ENV)%",{"type":45,"tag":189,"props":1873,"children":1874},{"style":233},[1875],{"type":59,"value":302},{"type":45,"tag":189,"props":1877,"children":1878},{"class":191,"line":262},[1879,1884,1888,1892,1897],{"type":45,"tag":189,"props":1880,"children":1881},{"style":1806},[1882],{"type":59,"value":1883},"        release",{"type":45,"tag":189,"props":1885,"children":1886},{"style":233},[1887],{"type":59,"value":1560},{"type":45,"tag":189,"props":1889,"children":1890},{"style":233},[1891],{"type":59,"value":292},{"type":45,"tag":189,"props":1893,"children":1894},{"style":212},[1895],{"type":59,"value":1896},"%env(SENTRY_RELEASE)%",{"type":45,"tag":189,"props":1898,"children":1899},{"style":233},[1900],{"type":59,"value":302},{"type":45,"tag":189,"props":1902,"children":1903},{"class":191,"line":305},[1904,1909,1913],{"type":45,"tag":189,"props":1905,"children":1906},{"style":1806},[1907],{"type":59,"value":1908},"        send_default_pii",{"type":45,"tag":189,"props":1910,"children":1911},{"style":233},[1912],{"type":59,"value":1560},{"type":45,"tag":189,"props":1914,"children":1916},{"style":1915},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1917],{"type":59,"value":1918}," true\n",{"type":45,"tag":189,"props":1920,"children":1921},{"class":191,"line":313},[1922,1927,1931],{"type":45,"tag":189,"props":1923,"children":1924},{"style":1806},[1925],{"type":59,"value":1926},"        traces_sample_rate",{"type":45,"tag":189,"props":1928,"children":1929},{"style":233},[1930],{"type":59,"value":1560},{"type":45,"tag":189,"props":1932,"children":1934},{"style":1933},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1935],{"type":59,"value":1936}," 1.0\n",{"type":45,"tag":189,"props":1938,"children":1939},{"class":191,"line":322},[1940,1945,1949],{"type":45,"tag":189,"props":1941,"children":1942},{"style":1806},[1943],{"type":59,"value":1944},"        profiles_sample_rate",{"type":45,"tag":189,"props":1946,"children":1947},{"style":233},[1948],{"type":59,"value":1560},{"type":45,"tag":189,"props":1950,"children":1951},{"style":1933},[1952],{"type":59,"value":1936},{"type":45,"tag":189,"props":1954,"children":1955},{"class":191,"line":371},[1956,1961,1965],{"type":45,"tag":189,"props":1957,"children":1958},{"style":1806},[1959],{"type":59,"value":1960},"        enable_logs",{"type":45,"tag":189,"props":1962,"children":1963},{"style":233},[1964],{"type":59,"value":1560},{"type":45,"tag":189,"props":1966,"children":1967},{"style":1915},[1968],{"type":59,"value":1918},{"type":45,"tag":50,"props":1970,"children":1971},{},[1972],{"type":45,"tag":145,"props":1973,"children":1974},{},[1975,1977,1982],{"type":59,"value":1976},"Step 3 — Set the DSN in ",{"type":45,"tag":110,"props":1978,"children":1980},{"className":1979},[],[1981],{"type":59,"value":1677},{"type":59,"value":1560},{"type":45,"tag":178,"props":1984,"children":1986},{"className":1695,"code":1985,"language":1697,"meta":183,"style":183},"SENTRY_DSN=https:\u002F\u002FexamplePublicKey@o0.ingest.sentry.io\u002F0\n",[1987],{"type":45,"tag":110,"props":1988,"children":1989},{"__ignoreMap":183},[1990],{"type":45,"tag":189,"props":1991,"children":1992},{"class":191,"line":192},[1993],{"type":45,"tag":189,"props":1994,"children":1995},{},[1996],{"type":59,"value":1985},{"type":45,"tag":46,"props":1998,"children":1999},{},[2000],{"type":45,"tag":50,"props":2001,"children":2002},{},[2003,2005,2011],{"type":59,"value":2004},"For full Symfony configuration options, read ",{"type":45,"tag":110,"props":2006,"children":2008},{"className":2007},[],[2009],{"type":59,"value":2010},"${SKILL_ROOT}\u002Freferences\u002Fsymfony.md",{"type":59,"value":716},{"type":45,"tag":1137,"props":2013,"children":2015},{"id":2014},"quick-start-recommended-init-plain-php",[2016],{"type":59,"value":2017},"Quick Start — Recommended Init (Plain PHP)",{"type":45,"tag":50,"props":2019,"children":2020},{},[2021],{"type":59,"value":2022},"Full init enabling the most features with sensible defaults:",{"type":45,"tag":178,"props":2024,"children":2026},{"className":1415,"code":2025,"language":19,"meta":183,"style":183},"\\Sentry\\init([\n    'dsn'                     => $_SERVER['SENTRY_DSN'] ?? '',\n    'environment'             => $_SERVER['SENTRY_ENVIRONMENT'] ?? 'production',\n    'release'                 => $_SERVER['SENTRY_RELEASE'] ?? null,\n    'send_default_pii'        => true,\n\n    \u002F\u002F Tracing (lower to 0.1–0.2 in high-traffic production)\n    'traces_sample_rate'      => 1.0,\n\n    \u002F\u002F Profiling — requires excimer extension (Linux\u002FmacOS only)\n    'profiles_sample_rate'    => 1.0,\n\n    \u002F\u002F Structured logs (sentry\u002Fsentry >=4.12.0)\n    'enable_logs'             => true,\n]);\n",[2027],{"type":45,"tag":110,"props":2028,"children":2029},{"__ignoreMap":183},[2030,2037,2045,2053,2061,2069,2076,2084,2092,2099,2107,2115,2122,2130,2138],{"type":45,"tag":189,"props":2031,"children":2032},{"class":191,"line":192},[2033],{"type":45,"tag":189,"props":2034,"children":2035},{},[2036],{"type":59,"value":1458},{"type":45,"tag":189,"props":2038,"children":2039},{"class":191,"line":202},[2040],{"type":45,"tag":189,"props":2041,"children":2042},{},[2043],{"type":59,"value":2044},"    'dsn'                     => $_SERVER['SENTRY_DSN'] ?? '',\n",{"type":45,"tag":189,"props":2046,"children":2047},{"class":191,"line":244},[2048],{"type":45,"tag":189,"props":2049,"children":2050},{},[2051],{"type":59,"value":2052},"    'environment'             => $_SERVER['SENTRY_ENVIRONMENT'] ?? 'production',\n",{"type":45,"tag":189,"props":2054,"children":2055},{"class":191,"line":253},[2056],{"type":45,"tag":189,"props":2057,"children":2058},{},[2059],{"type":59,"value":2060},"    'release'                 => $_SERVER['SENTRY_RELEASE'] ?? null,\n",{"type":45,"tag":189,"props":2062,"children":2063},{"class":191,"line":262},[2064],{"type":45,"tag":189,"props":2065,"children":2066},{},[2067],{"type":59,"value":2068},"    'send_default_pii'        => true,\n",{"type":45,"tag":189,"props":2070,"children":2071},{"class":191,"line":305},[2072],{"type":45,"tag":189,"props":2073,"children":2074},{"emptyLinePlaceholder":40},[2075],{"type":59,"value":250},{"type":45,"tag":189,"props":2077,"children":2078},{"class":191,"line":313},[2079],{"type":45,"tag":189,"props":2080,"children":2081},{},[2082],{"type":59,"value":2083},"    \u002F\u002F Tracing (lower to 0.1–0.2 in high-traffic production)\n",{"type":45,"tag":189,"props":2085,"children":2086},{"class":191,"line":322},[2087],{"type":45,"tag":189,"props":2088,"children":2089},{},[2090],{"type":59,"value":2091},"    'traces_sample_rate'      => 1.0,\n",{"type":45,"tag":189,"props":2093,"children":2094},{"class":191,"line":371},[2095],{"type":45,"tag":189,"props":2096,"children":2097},{"emptyLinePlaceholder":40},[2098],{"type":59,"value":250},{"type":45,"tag":189,"props":2100,"children":2101},{"class":191,"line":413},[2102],{"type":45,"tag":189,"props":2103,"children":2104},{},[2105],{"type":59,"value":2106},"    \u002F\u002F Profiling — requires excimer extension (Linux\u002FmacOS only)\n",{"type":45,"tag":189,"props":2108,"children":2109},{"class":191,"line":421},[2110],{"type":45,"tag":189,"props":2111,"children":2112},{},[2113],{"type":59,"value":2114},"    'profiles_sample_rate'    => 1.0,\n",{"type":45,"tag":189,"props":2116,"children":2117},{"class":191,"line":430},[2118],{"type":45,"tag":189,"props":2119,"children":2120},{"emptyLinePlaceholder":40},[2121],{"type":59,"value":250},{"type":45,"tag":189,"props":2123,"children":2124},{"class":191,"line":468},[2125],{"type":45,"tag":189,"props":2126,"children":2127},{},[2128],{"type":59,"value":2129},"    \u002F\u002F Structured logs (sentry\u002Fsentry >=4.12.0)\n",{"type":45,"tag":189,"props":2131,"children":2132},{"class":191,"line":476},[2133],{"type":45,"tag":189,"props":2134,"children":2135},{},[2136],{"type":59,"value":2137},"    'enable_logs'             => true,\n",{"type":45,"tag":189,"props":2139,"children":2140},{"class":191,"line":485},[2141],{"type":45,"tag":189,"props":2142,"children":2143},{},[2144],{"type":59,"value":1522},{"type":45,"tag":1137,"props":2146,"children":2148},{"id":2147},"for-each-agreed-feature",[2149],{"type":59,"value":2150},"For Each Agreed Feature",{"type":45,"tag":50,"props":2152,"children":2153},{},[2154],{"type":59,"value":2155},"Walk through features one at a time. Load the reference, follow its steps, verify before moving on:",{"type":45,"tag":909,"props":2157,"children":2158},{},[2159,2179],{"type":45,"tag":913,"props":2160,"children":2161},{},[2162],{"type":45,"tag":917,"props":2163,"children":2164},{},[2165,2169,2174],{"type":45,"tag":921,"props":2166,"children":2167},{},[2168],{"type":59,"value":925},{"type":45,"tag":921,"props":2170,"children":2171},{},[2172],{"type":59,"value":2173},"Reference file",{"type":45,"tag":921,"props":2175,"children":2176},{},[2177],{"type":59,"value":2178},"Load when...",{"type":45,"tag":937,"props":2180,"children":2181},{},[2182,2202,2222,2242,2262,2282,2302],{"type":45,"tag":917,"props":2183,"children":2184},{},[2185,2189,2197],{"type":45,"tag":944,"props":2186,"children":2187},{},[2188],{"type":59,"value":782},{"type":45,"tag":944,"props":2190,"children":2191},{},[2192],{"type":45,"tag":110,"props":2193,"children":2195},{"className":2194},[],[2196],{"type":59,"value":966},{"type":45,"tag":944,"props":2198,"children":2199},{},[2200],{"type":59,"value":2201},"Always (baseline)",{"type":45,"tag":917,"props":2203,"children":2204},{},[2205,2209,2217],{"type":45,"tag":944,"props":2206,"children":2207},{},[2208],{"type":59,"value":823},{"type":45,"tag":944,"props":2210,"children":2211},{},[2212],{"type":45,"tag":110,"props":2213,"children":2215},{"className":2214},[],[2216],{"type":59,"value":987},{"type":45,"tag":944,"props":2218,"children":2219},{},[2220],{"type":59,"value":2221},"HTTP handlers \u002F distributed tracing",{"type":45,"tag":917,"props":2223,"children":2224},{},[2225,2229,2237],{"type":45,"tag":944,"props":2226,"children":2227},{},[2228],{"type":59,"value":835},{"type":45,"tag":944,"props":2230,"children":2231},{},[2232],{"type":45,"tag":110,"props":2233,"children":2235},{"className":2234},[],[2236],{"type":59,"value":1015},{"type":45,"tag":944,"props":2238,"children":2239},{},[2240],{"type":59,"value":2241},"Performance-sensitive production",{"type":45,"tag":917,"props":2243,"children":2244},{},[2245,2249,2257],{"type":45,"tag":944,"props":2246,"children":2247},{},[2248],{"type":59,"value":793},{"type":45,"tag":944,"props":2250,"children":2251},{},[2252],{"type":45,"tag":110,"props":2253,"children":2255},{"className":2254},[],[2256],{"type":59,"value":1040},{"type":45,"tag":944,"props":2258,"children":2259},{},[2260],{"type":59,"value":2261},"Always; Monolog for Laravel\u002FSymfony",{"type":45,"tag":917,"props":2263,"children":2264},{},[2265,2269,2277],{"type":45,"tag":944,"props":2266,"children":2267},{},[2268],{"type":59,"value":865},{"type":45,"tag":944,"props":2270,"children":2271},{},[2272],{"type":45,"tag":110,"props":2273,"children":2275},{"className":2274},[],[2276],{"type":59,"value":1061},{"type":45,"tag":944,"props":2278,"children":2279},{},[2280],{"type":59,"value":2281},"Business KPIs \u002F SLO tracking",{"type":45,"tag":917,"props":2283,"children":2284},{},[2285,2289,2297],{"type":45,"tag":944,"props":2286,"children":2287},{},[2288],{"type":59,"value":854},{"type":45,"tag":944,"props":2290,"children":2291},{},[2292],{"type":45,"tag":110,"props":2293,"children":2295},{"className":2294},[],[2296],{"type":59,"value":1082},{"type":45,"tag":944,"props":2298,"children":2299},{},[2300],{"type":59,"value":2301},"Scheduler \u002F cron patterns detected",{"type":45,"tag":917,"props":2303,"children":2304},{},[2305,2309,2317],{"type":45,"tag":944,"props":2306,"children":2307},{},[2308],{"type":59,"value":884},{"type":45,"tag":944,"props":2310,"children":2311},{},[2312],{"type":45,"tag":110,"props":2313,"children":2315},{"className":2314},[],[2316],{"type":59,"value":1108},{"type":45,"tag":944,"props":2318,"children":2319},{},[2320,2325],{"type":45,"tag":110,"props":2321,"children":2323},{"className":2322},[],[2324],{"type":59,"value":732},{"type":59,"value":2326}," detected in Laravel, or manual PHP AI spans needed",{"type":45,"tag":50,"props":2328,"children":2329},{},[2330,2332,2338],{"type":59,"value":2331},"For each feature: ",{"type":45,"tag":110,"props":2333,"children":2335},{"className":2334},[],[2336],{"type":59,"value":2337},"Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md",{"type":59,"value":2339},", follow steps exactly, verify it works.",{"type":45,"tag":163,"props":2341,"children":2342},{},[],{"type":45,"tag":83,"props":2344,"children":2346},{"id":2345},"configuration-reference",[2347],{"type":59,"value":2348},"Configuration Reference",{"type":45,"tag":1137,"props":2350,"children":2352},{"id":2351},"key-sentryinit-options-plain-php",[2353,2355,2360],{"type":59,"value":2354},"Key ",{"type":45,"tag":110,"props":2356,"children":2358},{"className":2357},[],[2359],{"type":59,"value":1395},{"type":59,"value":2361}," Options (Plain PHP)",{"type":45,"tag":909,"props":2363,"children":2364},{},[2365,2391],{"type":45,"tag":913,"props":2366,"children":2367},{},[2368],{"type":45,"tag":917,"props":2369,"children":2370},{},[2371,2376,2381,2386],{"type":45,"tag":921,"props":2372,"children":2373},{},[2374],{"type":59,"value":2375},"Option",{"type":45,"tag":921,"props":2377,"children":2378},{},[2379],{"type":59,"value":2380},"Type",{"type":45,"tag":921,"props":2382,"children":2383},{},[2384],{"type":59,"value":2385},"Default",{"type":45,"tag":921,"props":2387,"children":2388},{},[2389],{"type":59,"value":2390},"Purpose",{"type":45,"tag":937,"props":2392,"children":2393},{},[2394,2435,2476,2515,2549,2584,2626,2660,2698,2731,2766,2805,2840,2873,2906,2939,2981,3022,3081,3125,3166,3222,3263],{"type":45,"tag":917,"props":2395,"children":2396},{},[2397,2406,2415,2424],{"type":45,"tag":944,"props":2398,"children":2399},{},[2400],{"type":45,"tag":110,"props":2401,"children":2403},{"className":2402},[],[2404],{"type":59,"value":2405},"dsn",{"type":45,"tag":944,"props":2407,"children":2408},{},[2409],{"type":45,"tag":110,"props":2410,"children":2412},{"className":2411},[],[2413],{"type":59,"value":2414},"string|bool|null",{"type":45,"tag":944,"props":2416,"children":2417},{},[2418],{"type":45,"tag":110,"props":2419,"children":2421},{"className":2420},[],[2422],{"type":59,"value":2423},"$_SERVER['SENTRY_DSN']",{"type":45,"tag":944,"props":2425,"children":2426},{},[2427,2429],{"type":59,"value":2428},"SDK disabled if empty or ",{"type":45,"tag":110,"props":2430,"children":2432},{"className":2431},[],[2433],{"type":59,"value":2434},"false",{"type":45,"tag":917,"props":2436,"children":2437},{},[2438,2447,2456,2465],{"type":45,"tag":944,"props":2439,"children":2440},{},[2441],{"type":45,"tag":110,"props":2442,"children":2444},{"className":2443},[],[2445],{"type":59,"value":2446},"environment",{"type":45,"tag":944,"props":2448,"children":2449},{},[2450],{"type":45,"tag":110,"props":2451,"children":2453},{"className":2452},[],[2454],{"type":59,"value":2455},"string|null",{"type":45,"tag":944,"props":2457,"children":2458},{},[2459],{"type":45,"tag":110,"props":2460,"children":2462},{"className":2461},[],[2463],{"type":59,"value":2464},"$_SERVER['SENTRY_ENVIRONMENT']",{"type":45,"tag":944,"props":2466,"children":2467},{},[2468,2470],{"type":59,"value":2469},"e.g., ",{"type":45,"tag":110,"props":2471,"children":2473},{"className":2472},[],[2474],{"type":59,"value":2475},"\"staging\"",{"type":45,"tag":917,"props":2477,"children":2478},{},[2479,2488,2496,2505],{"type":45,"tag":944,"props":2480,"children":2481},{},[2482],{"type":45,"tag":110,"props":2483,"children":2485},{"className":2484},[],[2486],{"type":59,"value":2487},"release",{"type":45,"tag":944,"props":2489,"children":2490},{},[2491],{"type":45,"tag":110,"props":2492,"children":2494},{"className":2493},[],[2495],{"type":59,"value":2455},{"type":45,"tag":944,"props":2497,"children":2498},{},[2499],{"type":45,"tag":110,"props":2500,"children":2502},{"className":2501},[],[2503],{"type":59,"value":2504},"$_SERVER['SENTRY_RELEASE']",{"type":45,"tag":944,"props":2506,"children":2507},{},[2508,2509],{"type":59,"value":2469},{"type":45,"tag":110,"props":2510,"children":2512},{"className":2511},[],[2513],{"type":59,"value":2514},"\"myapp@1.0.0\"",{"type":45,"tag":917,"props":2516,"children":2517},{},[2518,2527,2536,2544],{"type":45,"tag":944,"props":2519,"children":2520},{},[2521],{"type":45,"tag":110,"props":2522,"children":2524},{"className":2523},[],[2525],{"type":59,"value":2526},"send_default_pii",{"type":45,"tag":944,"props":2528,"children":2529},{},[2530],{"type":45,"tag":110,"props":2531,"children":2533},{"className":2532},[],[2534],{"type":59,"value":2535},"bool",{"type":45,"tag":944,"props":2537,"children":2538},{},[2539],{"type":45,"tag":110,"props":2540,"children":2542},{"className":2541},[],[2543],{"type":59,"value":2434},{"type":45,"tag":944,"props":2545,"children":2546},{},[2547],{"type":59,"value":2548},"Include request headers, cookies, IP",{"type":45,"tag":917,"props":2550,"children":2551},{},[2552,2561,2570,2579],{"type":45,"tag":944,"props":2553,"children":2554},{},[2555],{"type":45,"tag":110,"props":2556,"children":2558},{"className":2557},[],[2559],{"type":59,"value":2560},"sample_rate",{"type":45,"tag":944,"props":2562,"children":2563},{},[2564],{"type":45,"tag":110,"props":2565,"children":2567},{"className":2566},[],[2568],{"type":59,"value":2569},"float",{"type":45,"tag":944,"props":2571,"children":2572},{},[2573],{"type":45,"tag":110,"props":2574,"children":2576},{"className":2575},[],[2577],{"type":59,"value":2578},"1.0",{"type":45,"tag":944,"props":2580,"children":2581},{},[2582],{"type":59,"value":2583},"Error event sample rate (0.0–1.0)",{"type":45,"tag":917,"props":2585,"children":2586},{},[2587,2596,2605,2614],{"type":45,"tag":944,"props":2588,"children":2589},{},[2590],{"type":45,"tag":110,"props":2591,"children":2593},{"className":2592},[],[2594],{"type":59,"value":2595},"traces_sample_rate",{"type":45,"tag":944,"props":2597,"children":2598},{},[2599],{"type":45,"tag":110,"props":2600,"children":2602},{"className":2601},[],[2603],{"type":59,"value":2604},"float|null",{"type":45,"tag":944,"props":2606,"children":2607},{},[2608],{"type":45,"tag":110,"props":2609,"children":2611},{"className":2610},[],[2612],{"type":59,"value":2613},"null",{"type":45,"tag":944,"props":2615,"children":2616},{},[2617,2619,2624],{"type":59,"value":2618},"Transaction sample rate; ",{"type":45,"tag":110,"props":2620,"children":2622},{"className":2621},[],[2623],{"type":59,"value":2613},{"type":59,"value":2625}," disables tracing",{"type":45,"tag":917,"props":2627,"children":2628},{},[2629,2638,2647,2655],{"type":45,"tag":944,"props":2630,"children":2631},{},[2632],{"type":45,"tag":110,"props":2633,"children":2635},{"className":2634},[],[2636],{"type":59,"value":2637},"traces_sampler",{"type":45,"tag":944,"props":2639,"children":2640},{},[2641],{"type":45,"tag":110,"props":2642,"children":2644},{"className":2643},[],[2645],{"type":59,"value":2646},"callable|null",{"type":45,"tag":944,"props":2648,"children":2649},{},[2650],{"type":45,"tag":110,"props":2651,"children":2653},{"className":2652},[],[2654],{"type":59,"value":2613},{"type":45,"tag":944,"props":2656,"children":2657},{},[2658],{"type":59,"value":2659},"Custom per-transaction sampling (overrides rate)",{"type":45,"tag":917,"props":2661,"children":2662},{},[2663,2672,2680,2688],{"type":45,"tag":944,"props":2664,"children":2665},{},[2666],{"type":45,"tag":110,"props":2667,"children":2669},{"className":2668},[],[2670],{"type":59,"value":2671},"profiles_sample_rate",{"type":45,"tag":944,"props":2673,"children":2674},{},[2675],{"type":45,"tag":110,"props":2676,"children":2678},{"className":2677},[],[2679],{"type":59,"value":2604},{"type":45,"tag":944,"props":2681,"children":2682},{},[2683],{"type":45,"tag":110,"props":2684,"children":2686},{"className":2685},[],[2687],{"type":59,"value":2613},{"type":45,"tag":944,"props":2689,"children":2690},{},[2691,2693],{"type":59,"value":2692},"Profiling rate relative to traces; requires ",{"type":45,"tag":110,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":59,"value":843},{"type":45,"tag":917,"props":2699,"children":2700},{},[2701,2710,2718,2726],{"type":45,"tag":944,"props":2702,"children":2703},{},[2704],{"type":45,"tag":110,"props":2705,"children":2707},{"className":2706},[],[2708],{"type":59,"value":2709},"enable_logs",{"type":45,"tag":944,"props":2711,"children":2712},{},[2713],{"type":45,"tag":110,"props":2714,"children":2716},{"className":2715},[],[2717],{"type":59,"value":2535},{"type":45,"tag":944,"props":2719,"children":2720},{},[2721],{"type":45,"tag":110,"props":2722,"children":2724},{"className":2723},[],[2725],{"type":59,"value":2434},{"type":45,"tag":944,"props":2727,"children":2728},{},[2729],{"type":59,"value":2730},"Send structured logs to Sentry (>=4.12.0)",{"type":45,"tag":917,"props":2732,"children":2733},{},[2734,2743,2752,2761],{"type":45,"tag":944,"props":2735,"children":2736},{},[2737],{"type":45,"tag":110,"props":2738,"children":2740},{"className":2739},[],[2741],{"type":59,"value":2742},"max_breadcrumbs",{"type":45,"tag":944,"props":2744,"children":2745},{},[2746],{"type":45,"tag":110,"props":2747,"children":2749},{"className":2748},[],[2750],{"type":59,"value":2751},"int",{"type":45,"tag":944,"props":2753,"children":2754},{},[2755],{"type":45,"tag":110,"props":2756,"children":2758},{"className":2757},[],[2759],{"type":59,"value":2760},"100",{"type":45,"tag":944,"props":2762,"children":2763},{},[2764],{"type":59,"value":2765},"Max breadcrumbs per event",{"type":45,"tag":917,"props":2767,"children":2768},{},[2769,2778,2786,2794],{"type":45,"tag":944,"props":2770,"children":2771},{},[2772],{"type":45,"tag":110,"props":2773,"children":2775},{"className":2774},[],[2776],{"type":59,"value":2777},"attach_stacktrace",{"type":45,"tag":944,"props":2779,"children":2780},{},[2781],{"type":45,"tag":110,"props":2782,"children":2784},{"className":2783},[],[2785],{"type":59,"value":2535},{"type":45,"tag":944,"props":2787,"children":2788},{},[2789],{"type":45,"tag":110,"props":2790,"children":2792},{"className":2791},[],[2793],{"type":59,"value":2434},{"type":45,"tag":944,"props":2795,"children":2796},{},[2797,2799],{"type":59,"value":2798},"Stack traces on ",{"type":45,"tag":110,"props":2800,"children":2802},{"className":2801},[],[2803],{"type":59,"value":2804},"captureMessage()",{"type":45,"tag":917,"props":2806,"children":2807},{},[2808,2817,2826,2835],{"type":45,"tag":944,"props":2809,"children":2810},{},[2811],{"type":45,"tag":110,"props":2812,"children":2814},{"className":2813},[],[2815],{"type":59,"value":2816},"in_app_include",{"type":45,"tag":944,"props":2818,"children":2819},{},[2820],{"type":45,"tag":110,"props":2821,"children":2823},{"className":2822},[],[2824],{"type":59,"value":2825},"string[]",{"type":45,"tag":944,"props":2827,"children":2828},{},[2829],{"type":45,"tag":110,"props":2830,"children":2832},{"className":2831},[],[2833],{"type":59,"value":2834},"[]",{"type":45,"tag":944,"props":2836,"children":2837},{},[2838],{"type":59,"value":2839},"Path prefixes belonging to your app",{"type":45,"tag":917,"props":2841,"children":2842},{},[2843,2852,2860,2868],{"type":45,"tag":944,"props":2844,"children":2845},{},[2846],{"type":45,"tag":110,"props":2847,"children":2849},{"className":2848},[],[2850],{"type":59,"value":2851},"in_app_exclude",{"type":45,"tag":944,"props":2853,"children":2854},{},[2855],{"type":45,"tag":110,"props":2856,"children":2858},{"className":2857},[],[2859],{"type":59,"value":2825},{"type":45,"tag":944,"props":2861,"children":2862},{},[2863],{"type":45,"tag":110,"props":2864,"children":2866},{"className":2865},[],[2867],{"type":59,"value":2834},{"type":45,"tag":944,"props":2869,"children":2870},{},[2871],{"type":59,"value":2872},"Path prefixes for third-party code (hidden in traces)",{"type":45,"tag":917,"props":2874,"children":2875},{},[2876,2885,2893,2901],{"type":45,"tag":944,"props":2877,"children":2878},{},[2879],{"type":45,"tag":110,"props":2880,"children":2882},{"className":2881},[],[2883],{"type":59,"value":2884},"ignore_exceptions",{"type":45,"tag":944,"props":2886,"children":2887},{},[2888],{"type":45,"tag":110,"props":2889,"children":2891},{"className":2890},[],[2892],{"type":59,"value":2825},{"type":45,"tag":944,"props":2894,"children":2895},{},[2896],{"type":45,"tag":110,"props":2897,"children":2899},{"className":2898},[],[2900],{"type":59,"value":2834},{"type":45,"tag":944,"props":2902,"children":2903},{},[2904],{"type":59,"value":2905},"Exception FQCNs to never report",{"type":45,"tag":917,"props":2907,"children":2908},{},[2909,2918,2926,2934],{"type":45,"tag":944,"props":2910,"children":2911},{},[2912],{"type":45,"tag":110,"props":2913,"children":2915},{"className":2914},[],[2916],{"type":59,"value":2917},"ignore_transactions",{"type":45,"tag":944,"props":2919,"children":2920},{},[2921],{"type":45,"tag":110,"props":2922,"children":2924},{"className":2923},[],[2925],{"type":59,"value":2825},{"type":45,"tag":944,"props":2927,"children":2928},{},[2929],{"type":45,"tag":110,"props":2930,"children":2932},{"className":2931},[],[2933],{"type":59,"value":2834},{"type":45,"tag":944,"props":2935,"children":2936},{},[2937],{"type":59,"value":2938},"Transaction names to never report",{"type":45,"tag":917,"props":2940,"children":2941},{},[2942,2951,2960,2969],{"type":45,"tag":944,"props":2943,"children":2944},{},[2945],{"type":45,"tag":110,"props":2946,"children":2948},{"className":2947},[],[2949],{"type":59,"value":2950},"error_types",{"type":45,"tag":944,"props":2952,"children":2953},{},[2954],{"type":45,"tag":110,"props":2955,"children":2957},{"className":2956},[],[2958],{"type":59,"value":2959},"int|null",{"type":45,"tag":944,"props":2961,"children":2962},{},[2963],{"type":45,"tag":110,"props":2964,"children":2966},{"className":2965},[],[2967],{"type":59,"value":2968},"error_reporting()",{"type":45,"tag":944,"props":2970,"children":2971},{},[2972,2974,2980],{"type":59,"value":2973},"PHP error bitmask (e.g., ",{"type":45,"tag":110,"props":2975,"children":2977},{"className":2976},[],[2978],{"type":59,"value":2979},"E_ALL & ~E_NOTICE",{"type":59,"value":803},{"type":45,"tag":917,"props":2982,"children":2983},{},[2984,2993,3001,3009],{"type":45,"tag":944,"props":2985,"children":2986},{},[2987],{"type":45,"tag":110,"props":2988,"children":2990},{"className":2989},[],[2991],{"type":59,"value":2992},"capture_silenced_errors",{"type":45,"tag":944,"props":2994,"children":2995},{},[2996],{"type":45,"tag":110,"props":2997,"children":2999},{"className":2998},[],[3000],{"type":59,"value":2535},{"type":45,"tag":944,"props":3002,"children":3003},{},[3004],{"type":45,"tag":110,"props":3005,"children":3007},{"className":3006},[],[3008],{"type":59,"value":2434},{"type":45,"tag":944,"props":3010,"children":3011},{},[3012,3014,3020],{"type":59,"value":3013},"Capture errors suppressed by ",{"type":45,"tag":110,"props":3015,"children":3017},{"className":3016},[],[3018],{"type":59,"value":3019},"@",{"type":59,"value":3021}," operator",{"type":45,"tag":917,"props":3023,"children":3024},{},[3025,3034,3043,3052],{"type":45,"tag":944,"props":3026,"children":3027},{},[3028],{"type":45,"tag":110,"props":3029,"children":3031},{"className":3030},[],[3032],{"type":59,"value":3033},"max_request_body_size",{"type":45,"tag":944,"props":3035,"children":3036},{},[3037],{"type":45,"tag":110,"props":3038,"children":3040},{"className":3039},[],[3041],{"type":59,"value":3042},"string",{"type":45,"tag":944,"props":3044,"children":3045},{},[3046],{"type":45,"tag":110,"props":3047,"children":3049},{"className":3048},[],[3050],{"type":59,"value":3051},"\"medium\"",{"type":45,"tag":944,"props":3053,"children":3054},{},[3055,3061,3062,3068,3069,3074,3075],{"type":45,"tag":110,"props":3056,"children":3058},{"className":3057},[],[3059],{"type":59,"value":3060},"\"none\"",{"type":59,"value":644},{"type":45,"tag":110,"props":3063,"children":3065},{"className":3064},[],[3066],{"type":59,"value":3067},"\"small\"",{"type":59,"value":644},{"type":45,"tag":110,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":59,"value":3051},{"type":59,"value":644},{"type":45,"tag":110,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":59,"value":3080},"\"always\"",{"type":45,"tag":917,"props":3082,"children":3083},{},[3084,3093,3102,3107],{"type":45,"tag":944,"props":3085,"children":3086},{},[3087],{"type":45,"tag":110,"props":3088,"children":3090},{"className":3089},[],[3091],{"type":59,"value":3092},"before_send",{"type":45,"tag":944,"props":3094,"children":3095},{},[3096],{"type":45,"tag":110,"props":3097,"children":3099},{"className":3098},[],[3100],{"type":59,"value":3101},"callable",{"type":45,"tag":944,"props":3103,"children":3104},{},[3105],{"type":59,"value":3106},"identity",{"type":45,"tag":944,"props":3108,"children":3109},{},[3110,3116,3118,3123],{"type":45,"tag":110,"props":3111,"children":3113},{"className":3112},[],[3114],{"type":59,"value":3115},"fn(Event $event, ?EventHint $hint): ?Event",{"type":59,"value":3117}," — return ",{"type":45,"tag":110,"props":3119,"children":3121},{"className":3120},[],[3122],{"type":59,"value":2613},{"type":59,"value":3124}," to drop",{"type":45,"tag":917,"props":3126,"children":3127},{},[3128,3137,3145,3149],{"type":45,"tag":944,"props":3129,"children":3130},{},[3131],{"type":45,"tag":110,"props":3132,"children":3134},{"className":3133},[],[3135],{"type":59,"value":3136},"before_breadcrumb",{"type":45,"tag":944,"props":3138,"children":3139},{},[3140],{"type":45,"tag":110,"props":3141,"children":3143},{"className":3142},[],[3144],{"type":59,"value":3101},{"type":45,"tag":944,"props":3146,"children":3147},{},[3148],{"type":59,"value":3106},{"type":45,"tag":944,"props":3150,"children":3151},{},[3152,3158,3159,3164],{"type":45,"tag":110,"props":3153,"children":3155},{"className":3154},[],[3156],{"type":59,"value":3157},"fn(Breadcrumb $b): ?Breadcrumb",{"type":59,"value":3117},{"type":45,"tag":110,"props":3160,"children":3162},{"className":3161},[],[3163],{"type":59,"value":2613},{"type":59,"value":3165}," to discard",{"type":45,"tag":917,"props":3167,"children":3168},{},[3169,3178,3187,3195],{"type":45,"tag":944,"props":3170,"children":3171},{},[3172],{"type":45,"tag":110,"props":3173,"children":3175},{"className":3174},[],[3176],{"type":59,"value":3177},"trace_propagation_targets",{"type":45,"tag":944,"props":3179,"children":3180},{},[3181],{"type":45,"tag":110,"props":3182,"children":3184},{"className":3183},[],[3185],{"type":59,"value":3186},"string[]|null",{"type":45,"tag":944,"props":3188,"children":3189},{},[3190],{"type":45,"tag":110,"props":3191,"children":3193},{"className":3192},[],[3194],{"type":59,"value":2613},{"type":45,"tag":944,"props":3196,"children":3197},{},[3198,3200,3206,3208,3213,3215,3220],{"type":59,"value":3199},"Downstream hosts to inject ",{"type":45,"tag":110,"props":3201,"children":3203},{"className":3202},[],[3204],{"type":59,"value":3205},"sentry-trace",{"type":59,"value":3207}," headers into; ",{"type":45,"tag":110,"props":3209,"children":3211},{"className":3210},[],[3212],{"type":59,"value":2613},{"type":59,"value":3214}," = all, ",{"type":45,"tag":110,"props":3216,"children":3218},{"className":3217},[],[3219],{"type":59,"value":2834},{"type":59,"value":3221}," = none",{"type":45,"tag":917,"props":3223,"children":3224},{},[3225,3234,3242,3250],{"type":45,"tag":944,"props":3226,"children":3227},{},[3228],{"type":45,"tag":110,"props":3229,"children":3231},{"className":3230},[],[3232],{"type":59,"value":3233},"strict_trace_continuation",{"type":45,"tag":944,"props":3235,"children":3236},{},[3237],{"type":45,"tag":110,"props":3238,"children":3240},{"className":3239},[],[3241],{"type":59,"value":2535},{"type":45,"tag":944,"props":3243,"children":3244},{},[3245],{"type":45,"tag":110,"props":3246,"children":3248},{"className":3247},[],[3249],{"type":59,"value":2434},{"type":45,"tag":944,"props":3251,"children":3252},{},[3253,3255,3261],{"type":59,"value":3254},"Only continue an incoming distributed trace if the ",{"type":45,"tag":110,"props":3256,"children":3258},{"className":3257},[],[3259],{"type":59,"value":3260},"sentry-org_id",{"type":59,"value":3262}," baggage matches the SDK's org ID; prevents trace contamination from third-party Sentry-instrumented services (>=4.21.0)",{"type":45,"tag":917,"props":3264,"children":3265},{},[3266,3275,3283,3291],{"type":45,"tag":944,"props":3267,"children":3268},{},[3269],{"type":45,"tag":110,"props":3270,"children":3272},{"className":3271},[],[3273],{"type":59,"value":3274},"debug",{"type":45,"tag":944,"props":3276,"children":3277},{},[3278],{"type":45,"tag":110,"props":3279,"children":3281},{"className":3280},[],[3282],{"type":59,"value":2535},{"type":45,"tag":944,"props":3284,"children":3285},{},[3286],{"type":45,"tag":110,"props":3287,"children":3289},{"className":3288},[],[3290],{"type":59,"value":2434},{"type":45,"tag":944,"props":3292,"children":3293},{},[3294,3296,3302],{"type":59,"value":3295},"Verbose SDK output (use a PSR-3 ",{"type":45,"tag":110,"props":3297,"children":3299},{"className":3298},[],[3300],{"type":59,"value":3301},"logger",{"type":59,"value":3303}," option instead for structured output)",{"type":45,"tag":1137,"props":3305,"children":3307},{"id":3306},"environment-variables",[3308],{"type":59,"value":3309},"Environment Variables",{"type":45,"tag":909,"props":3311,"children":3312},{},[3313,3334],{"type":45,"tag":913,"props":3314,"children":3315},{},[3316],{"type":45,"tag":917,"props":3317,"children":3318},{},[3319,3324,3329],{"type":45,"tag":921,"props":3320,"children":3321},{},[3322],{"type":59,"value":3323},"Variable",{"type":45,"tag":921,"props":3325,"children":3326},{},[3327],{"type":59,"value":3328},"Maps to",{"type":45,"tag":921,"props":3330,"children":3331},{},[3332],{"type":59,"value":3333},"Notes",{"type":45,"tag":937,"props":3335,"children":3336},{},[3337,3367,3390,3421],{"type":45,"tag":917,"props":3338,"children":3339},{},[3340,3349,3357],{"type":45,"tag":944,"props":3341,"children":3342},{},[3343],{"type":45,"tag":110,"props":3344,"children":3346},{"className":3345},[],[3347],{"type":59,"value":3348},"SENTRY_DSN",{"type":45,"tag":944,"props":3350,"children":3351},{},[3352],{"type":45,"tag":110,"props":3353,"children":3355},{"className":3354},[],[3356],{"type":59,"value":2405},{"type":45,"tag":944,"props":3358,"children":3359},{},[3360,3362],{"type":59,"value":3361},"Also ",{"type":45,"tag":110,"props":3363,"children":3365},{"className":3364},[],[3366],{"type":59,"value":2423},{"type":45,"tag":917,"props":3368,"children":3369},{},[3370,3379,3387],{"type":45,"tag":944,"props":3371,"children":3372},{},[3373],{"type":45,"tag":110,"props":3374,"children":3376},{"className":3375},[],[3377],{"type":59,"value":3378},"SENTRY_ENVIRONMENT",{"type":45,"tag":944,"props":3380,"children":3381},{},[3382],{"type":45,"tag":110,"props":3383,"children":3385},{"className":3384},[],[3386],{"type":59,"value":2446},{"type":45,"tag":944,"props":3388,"children":3389},{},[],{"type":45,"tag":917,"props":3391,"children":3392},{},[3393,3402,3410],{"type":45,"tag":944,"props":3394,"children":3395},{},[3396],{"type":45,"tag":110,"props":3397,"children":3399},{"className":3398},[],[3400],{"type":59,"value":3401},"SENTRY_RELEASE",{"type":45,"tag":944,"props":3403,"children":3404},{},[3405],{"type":45,"tag":110,"props":3406,"children":3408},{"className":3407},[],[3409],{"type":59,"value":2487},{"type":45,"tag":944,"props":3411,"children":3412},{},[3413,3415],{"type":59,"value":3414},"Also reads ",{"type":45,"tag":110,"props":3416,"children":3418},{"className":3417},[],[3419],{"type":59,"value":3420},"$_SERVER['AWS_LAMBDA_FUNCTION_VERSION']",{"type":45,"tag":917,"props":3422,"children":3423},{},[3424,3433,3442],{"type":45,"tag":944,"props":3425,"children":3426},{},[3427],{"type":45,"tag":110,"props":3428,"children":3430},{"className":3429},[],[3431],{"type":59,"value":3432},"SENTRY_SPOTLIGHT",{"type":45,"tag":944,"props":3434,"children":3435},{},[3436],{"type":45,"tag":110,"props":3437,"children":3439},{"className":3438},[],[3440],{"type":59,"value":3441},"spotlight",{"type":45,"tag":944,"props":3443,"children":3444},{},[],{"type":45,"tag":46,"props":3446,"children":3447},{},[3448],{"type":45,"tag":50,"props":3449,"children":3450},{},[3451,3456,3458,3463,3465,3470,3472,3478,3479,3485],{"type":45,"tag":145,"props":3452,"children":3453},{},[3454],{"type":59,"value":3455},"Laravel note:",{"type":59,"value":3457}," Uses ",{"type":45,"tag":110,"props":3459,"children":3461},{"className":3460},[],[3462],{"type":59,"value":1669},{"type":59,"value":3464}," (falls back to ",{"type":45,"tag":110,"props":3466,"children":3468},{"className":3467},[],[3469],{"type":59,"value":3348},{"type":59,"value":3471},"). Other options follow ",{"type":45,"tag":110,"props":3473,"children":3475},{"className":3474},[],[3476],{"type":59,"value":3477},"SENTRY_TRACES_SAMPLE_RATE",{"type":59,"value":117},{"type":45,"tag":110,"props":3480,"children":3482},{"className":3481},[],[3483],{"type":59,"value":3484},"SENTRY_PROFILES_SAMPLE_RATE",{"type":59,"value":3486},", etc.",{"type":45,"tag":163,"props":3488,"children":3489},{},[],{"type":45,"tag":83,"props":3491,"children":3493},{"id":3492},"verification",[3494],{"type":59,"value":3495},"Verification",{"type":45,"tag":50,"props":3497,"children":3498},{},[3499],{"type":59,"value":3500},"Test that Sentry is receiving events:",{"type":45,"tag":178,"props":3502,"children":3504},{"className":1415,"code":3503,"language":19,"meta":183,"style":183},"\u002F\u002F Trigger a real error event — check the Sentry dashboard within seconds\nthrow new \\Exception('Sentry PHP SDK test');\n",[3505],{"type":45,"tag":110,"props":3506,"children":3507},{"__ignoreMap":183},[3508,3516],{"type":45,"tag":189,"props":3509,"children":3510},{"class":191,"line":192},[3511],{"type":45,"tag":189,"props":3512,"children":3513},{},[3514],{"type":59,"value":3515},"\u002F\u002F Trigger a real error event — check the Sentry dashboard within seconds\n",{"type":45,"tag":189,"props":3517,"children":3518},{"class":191,"line":202},[3519],{"type":45,"tag":189,"props":3520,"children":3521},{},[3522],{"type":59,"value":3523},"throw new \\Exception('Sentry PHP SDK test');\n",{"type":45,"tag":50,"props":3525,"children":3526},{},[3527],{"type":59,"value":3528},"Or for a non-crashing check:",{"type":45,"tag":178,"props":3530,"children":3532},{"className":1415,"code":3531,"language":19,"meta":183,"style":183},"\\Sentry\\captureMessage('Sentry PHP SDK test');\n",[3533],{"type":45,"tag":110,"props":3534,"children":3535},{"__ignoreMap":183},[3536],{"type":45,"tag":189,"props":3537,"children":3538},{"class":191,"line":192},[3539],{"type":45,"tag":189,"props":3540,"children":3541},{},[3542],{"type":59,"value":3531},{"type":45,"tag":50,"props":3544,"children":3545},{},[3546],{"type":45,"tag":145,"props":3547,"children":3548},{},[3549],{"type":59,"value":3550},"Laravel:",{"type":45,"tag":178,"props":3552,"children":3554},{"className":180,"code":3553,"language":182,"meta":183,"style":183},"php artisan sentry:test\n",[3555],{"type":45,"tag":110,"props":3556,"children":3557},{"__ignoreMap":183},[3558],{"type":45,"tag":189,"props":3559,"children":3560},{"class":191,"line":192},[3561,3565,3569],{"type":45,"tag":189,"props":3562,"children":3563},{"style":206},[3564],{"type":59,"value":19},{"type":45,"tag":189,"props":3566,"children":3567},{"style":212},[3568],{"type":59,"value":333},{"type":45,"tag":189,"props":3570,"children":3571},{"style":212},[3572],{"type":59,"value":3573}," sentry:test\n",{"type":45,"tag":50,"props":3575,"children":3576},{},[3577],{"type":59,"value":3578},"If nothing appears:",{"type":45,"tag":3580,"props":3581,"children":3582},"ol",{},[3583,3625,3637,3655],{"type":45,"tag":94,"props":3584,"children":3585},{},[3586,3588],{"type":59,"value":3587},"Enable debug output:\n",{"type":45,"tag":178,"props":3589,"children":3591},{"className":1415,"code":3590,"language":19,"meta":183,"style":183},"\\Sentry\\init([\n    'dsn' => '...',\n    'logger' => new \\Sentry\\Logger\\DebugStdOutLogger(),\n]);\n",[3592],{"type":45,"tag":110,"props":3593,"children":3594},{"__ignoreMap":183},[3595,3602,3610,3618],{"type":45,"tag":189,"props":3596,"children":3597},{"class":191,"line":192},[3598],{"type":45,"tag":189,"props":3599,"children":3600},{},[3601],{"type":59,"value":1458},{"type":45,"tag":189,"props":3603,"children":3604},{"class":191,"line":202},[3605],{"type":45,"tag":189,"props":3606,"children":3607},{},[3608],{"type":59,"value":3609},"    'dsn' => '...',\n",{"type":45,"tag":189,"props":3611,"children":3612},{"class":191,"line":244},[3613],{"type":45,"tag":189,"props":3614,"children":3615},{},[3616],{"type":59,"value":3617},"    'logger' => new \\Sentry\\Logger\\DebugStdOutLogger(),\n",{"type":45,"tag":189,"props":3619,"children":3620},{"class":191,"line":253},[3621],{"type":45,"tag":189,"props":3622,"children":3623},{},[3624],{"type":59,"value":1522},{"type":45,"tag":94,"props":3626,"children":3627},{},[3628,3630,3636],{"type":59,"value":3629},"Verify the DSN is correct (format: ",{"type":45,"tag":110,"props":3631,"children":3633},{"className":3632},[],[3634],{"type":59,"value":3635},"https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>",{"type":59,"value":803},{"type":45,"tag":94,"props":3638,"children":3639},{},[3640,3642,3647,3648,3653],{"type":59,"value":3641},"Check ",{"type":45,"tag":110,"props":3643,"children":3645},{"className":3644},[],[3646],{"type":59,"value":3348},{"type":59,"value":636},{"type":45,"tag":110,"props":3649,"children":3651},{"className":3650},[],[3652],{"type":59,"value":1669},{"type":59,"value":3654},") env var is set in the running process",{"type":45,"tag":94,"props":3656,"children":3657},{},[3658,3660,3665],{"type":59,"value":3659},"For queue workers: ensure Sentry is initialized ",{"type":45,"tag":145,"props":3661,"children":3662},{},[3663],{"type":59,"value":3664},"inside the worker process",{"type":59,"value":3666},", not just the web process",{"type":45,"tag":163,"props":3668,"children":3669},{},[],{"type":45,"tag":83,"props":3671,"children":3673},{"id":3672},"phase-4-cross-link",[3674],{"type":59,"value":3675},"Phase 4: Cross-Link",{"type":45,"tag":50,"props":3677,"children":3678},{},[3679],{"type":59,"value":3680},"After completing PHP setup, check for a companion frontend missing Sentry:",{"type":45,"tag":178,"props":3682,"children":3684},{"className":180,"code":3683,"language":182,"meta":183,"style":183},"ls frontend\u002F resources\u002Fjs\u002F assets\u002F public\u002F 2>\u002Fdev\u002Fnull\ncat package.json frontend\u002Fpackage.json 2>\u002Fdev\u002Fnull \\\n  | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"|\"nuxt\"'\n",[3685],{"type":45,"tag":110,"props":3686,"children":3687},{"__ignoreMap":183},[3688,3720,3750],{"type":45,"tag":189,"props":3689,"children":3690},{"class":191,"line":192},[3691,3695,3699,3703,3707,3712,3716],{"type":45,"tag":189,"props":3692,"children":3693},{"style":206},[3694],{"type":59,"value":328},{"type":45,"tag":189,"props":3696,"children":3697},{"style":212},[3698],{"type":59,"value":549},{"type":45,"tag":189,"props":3700,"children":3701},{"style":212},[3702],{"type":59,"value":554},{"type":45,"tag":189,"props":3704,"children":3705},{"style":212},[3706],{"type":59,"value":559},{"type":45,"tag":189,"props":3708,"children":3709},{"style":212},[3710],{"type":59,"value":3711}," public\u002F",{"type":45,"tag":189,"props":3713,"children":3714},{"style":233},[3715],{"type":59,"value":236},{"type":45,"tag":189,"props":3717,"children":3718},{"style":212},[3719],{"type":59,"value":241},{"type":45,"tag":189,"props":3721,"children":3722},{"class":191,"line":202},[3723,3727,3731,3736,3740,3744],{"type":45,"tag":189,"props":3724,"children":3725},{"style":206},[3726],{"type":59,"value":268},{"type":45,"tag":189,"props":3728,"children":3729},{"style":212},[3730],{"type":59,"value":580},{"type":45,"tag":189,"props":3732,"children":3733},{"style":212},[3734],{"type":59,"value":3735}," frontend\u002Fpackage.json",{"type":45,"tag":189,"props":3737,"children":3738},{"style":233},[3739],{"type":59,"value":236},{"type":45,"tag":189,"props":3741,"children":3742},{"style":212},[3743],{"type":59,"value":342},{"type":45,"tag":189,"props":3745,"children":3747},{"style":3746},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[3748],{"type":59,"value":3749}," \\\n",{"type":45,"tag":189,"props":3751,"children":3752},{"class":191,"line":244},[3753,3758,3762,3766,3770,3775],{"type":45,"tag":189,"props":3754,"children":3755},{"style":233},[3756],{"type":59,"value":3757},"  |",{"type":45,"tag":189,"props":3759,"children":3760},{"style":206},[3761],{"type":59,"value":282},{"type":45,"tag":189,"props":3763,"children":3764},{"style":212},[3765],{"type":59,"value":287},{"type":45,"tag":189,"props":3767,"children":3768},{"style":233},[3769],{"type":59,"value":292},{"type":45,"tag":189,"props":3771,"children":3772},{"style":212},[3773],{"type":59,"value":3774},"\"react\"|\"svelte\"|\"vue\"|\"next\"|\"nuxt\"",{"type":45,"tag":189,"props":3776,"children":3777},{"style":233},[3778],{"type":59,"value":302},{"type":45,"tag":50,"props":3780,"children":3781},{},[3782],{"type":59,"value":3783},"If a frontend exists without Sentry, suggest the matching skill:",{"type":45,"tag":909,"props":3785,"children":3786},{},[3787,3803],{"type":45,"tag":913,"props":3788,"children":3789},{},[3790],{"type":45,"tag":917,"props":3791,"children":3792},{},[3793,3798],{"type":45,"tag":921,"props":3794,"children":3795},{},[3796],{"type":59,"value":3797},"Frontend detected",{"type":45,"tag":921,"props":3799,"children":3800},{},[3801],{"type":59,"value":3802},"Suggest skill",{"type":45,"tag":937,"props":3804,"children":3805},{},[3806,3823,3840,3868],{"type":45,"tag":917,"props":3807,"children":3808},{},[3809,3814],{"type":45,"tag":944,"props":3810,"children":3811},{},[3812],{"type":59,"value":3813},"React \u002F Next.js",{"type":45,"tag":944,"props":3815,"children":3816},{},[3817],{"type":45,"tag":110,"props":3818,"children":3820},{"className":3819},[],[3821],{"type":59,"value":3822},"sentry-react-sdk",{"type":45,"tag":917,"props":3824,"children":3825},{},[3826,3831],{"type":45,"tag":944,"props":3827,"children":3828},{},[3829],{"type":59,"value":3830},"Svelte \u002F SvelteKit",{"type":45,"tag":944,"props":3832,"children":3833},{},[3834],{"type":45,"tag":110,"props":3835,"children":3837},{"className":3836},[],[3838],{"type":59,"value":3839},"sentry-svelte-sdk",{"type":45,"tag":917,"props":3841,"children":3842},{},[3843,3848],{"type":45,"tag":944,"props":3844,"children":3845},{},[3846],{"type":59,"value":3847},"Vue \u002F Nuxt",{"type":45,"tag":944,"props":3849,"children":3850},{},[3851,3853,3859,3861],{"type":59,"value":3852},"Use ",{"type":45,"tag":110,"props":3854,"children":3856},{"className":3855},[],[3857],{"type":59,"value":3858},"@sentry\u002Fvue",{"type":59,"value":3860}," — see ",{"type":45,"tag":54,"props":3862,"children":3865},{"href":3863,"rel":3864},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F",[156],[3866],{"type":59,"value":3867},"docs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F",{"type":45,"tag":917,"props":3869,"children":3870},{},[3871,3876],{"type":45,"tag":944,"props":3872,"children":3873},{},[3874],{"type":59,"value":3875},"Other JS\u002FTS",{"type":45,"tag":944,"props":3877,"children":3878},{},[3879,3884],{"type":45,"tag":110,"props":3880,"children":3882},{"className":3881},[],[3883],{"type":59,"value":3822},{"type":59,"value":3885}," (covers generic browser JS patterns)",{"type":45,"tag":163,"props":3887,"children":3888},{},[],{"type":45,"tag":83,"props":3890,"children":3892},{"id":3891},"troubleshooting",[3893],{"type":59,"value":3894},"Troubleshooting",{"type":45,"tag":909,"props":3896,"children":3897},{},[3898,3914],{"type":45,"tag":913,"props":3899,"children":3900},{},[3901],{"type":45,"tag":917,"props":3902,"children":3903},{},[3904,3909],{"type":45,"tag":921,"props":3905,"children":3906},{},[3907],{"type":59,"value":3908},"Issue",{"type":45,"tag":921,"props":3910,"children":3911},{},[3912],{"type":59,"value":3913},"Solution",{"type":45,"tag":937,"props":3915,"children":3916},{},[3917,3945,3963,3989,4015,4042,4066,4105,4130,4157,4188,4211,4230],{"type":45,"tag":917,"props":3918,"children":3919},{},[3920,3925],{"type":45,"tag":944,"props":3921,"children":3922},{},[3923],{"type":59,"value":3924},"Events not appearing",{"type":45,"tag":944,"props":3926,"children":3927},{},[3928,3930,3935,3937,3943],{"type":59,"value":3929},"Enable ",{"type":45,"tag":110,"props":3931,"children":3933},{"className":3932},[],[3934],{"type":59,"value":3301},{"type":59,"value":3936}," option (",{"type":45,"tag":110,"props":3938,"children":3940},{"className":3939},[],[3941],{"type":59,"value":3942},"DebugStdOutLogger",{"type":59,"value":3944},"), verify DSN, check env vars in the running process",{"type":45,"tag":917,"props":3946,"children":3947},{},[3948,3953],{"type":45,"tag":944,"props":3949,"children":3950},{},[3951],{"type":59,"value":3952},"Malformed DSN error",{"type":45,"tag":944,"props":3954,"children":3955},{},[3956,3958],{"type":59,"value":3957},"Format: ",{"type":45,"tag":110,"props":3959,"children":3961},{"className":3960},[],[3962],{"type":59,"value":3635},{"type":45,"tag":917,"props":3964,"children":3965},{},[3966,3971],{"type":45,"tag":944,"props":3967,"children":3968},{},[3969],{"type":59,"value":3970},"Laravel exceptions not captured",{"type":45,"tag":944,"props":3972,"children":3973},{},[3974,3976,3982,3984],{"type":59,"value":3975},"Ensure ",{"type":45,"tag":110,"props":3977,"children":3979},{"className":3978},[],[3980],{"type":59,"value":3981},"Integration::handles($exceptions)",{"type":59,"value":3983}," is in ",{"type":45,"tag":110,"props":3985,"children":3987},{"className":3986},[],[3988],{"type":59,"value":1558},{"type":45,"tag":917,"props":3990,"children":3991},{},[3992,3997],{"type":45,"tag":944,"props":3993,"children":3994},{},[3995],{"type":59,"value":3996},"Symfony exceptions not captured",{"type":45,"tag":944,"props":3998,"children":3999},{},[4000,4002,4008,4010],{"type":59,"value":4001},"Verify ",{"type":45,"tag":110,"props":4003,"children":4005},{"className":4004},[],[4006],{"type":59,"value":4007},"SentryBundle",{"type":59,"value":4009}," is registered in ",{"type":45,"tag":110,"props":4011,"children":4013},{"className":4012},[],[4014],{"type":59,"value":1760},{"type":45,"tag":917,"props":4016,"children":4017},{},[4018,4023],{"type":45,"tag":944,"props":4019,"children":4020},{},[4021],{"type":59,"value":4022},"No traces appearing",{"type":45,"tag":944,"props":4024,"children":4025},{},[4026,4028,4033,4035,4040],{"type":59,"value":4027},"Set ",{"type":45,"tag":110,"props":4029,"children":4031},{"className":4030},[],[4032],{"type":59,"value":2595},{"type":59,"value":4034}," (not ",{"type":45,"tag":110,"props":4036,"children":4038},{"className":4037},[],[4039],{"type":59,"value":2613},{"type":59,"value":4041},"); confirm auto-instrumentation is enabled",{"type":45,"tag":917,"props":4043,"children":4044},{},[4045,4050],{"type":45,"tag":944,"props":4046,"children":4047},{},[4048],{"type":59,"value":4049},"Profiling not working",{"type":45,"tag":944,"props":4051,"children":4052},{},[4053,4058,4060],{"type":45,"tag":110,"props":4054,"children":4056},{"className":4055},[],[4057],{"type":59,"value":843},{"type":59,"value":4059}," extension required (Linux\u002FmacOS only; not available on Windows); requires ",{"type":45,"tag":110,"props":4061,"children":4063},{"className":4062},[],[4064],{"type":59,"value":4065},"traces_sample_rate > 0",{"type":45,"tag":917,"props":4067,"children":4068},{},[4069,4079],{"type":45,"tag":944,"props":4070,"children":4071},{},[4072,4077],{"type":45,"tag":110,"props":4073,"children":4075},{"className":4074},[],[4076],{"type":59,"value":2709},{"type":59,"value":4078}," not working",{"type":45,"tag":944,"props":4080,"children":4081},{},[4082,4084,4090,4091,4097,4099],{"type":59,"value":4083},"Requires ",{"type":45,"tag":110,"props":4085,"children":4087},{"className":4086},[],[4088],{"type":59,"value":4089},"sentry\u002Fsentry >= 4.12.0",{"type":59,"value":117},{"type":45,"tag":110,"props":4092,"children":4094},{"className":4093},[],[4095],{"type":59,"value":4096},"sentry\u002Fsentry-laravel >= 4.15.0",{"type":59,"value":4098},", or ",{"type":45,"tag":110,"props":4100,"children":4102},{"className":4101},[],[4103],{"type":59,"value":4104},"sentry\u002Fsentry-symfony >= 5.4.0",{"type":45,"tag":917,"props":4106,"children":4107},{},[4108,4113],{"type":45,"tag":944,"props":4109,"children":4110},{},[4111],{"type":59,"value":4112},"Queue worker errors missing",{"type":45,"tag":944,"props":4114,"children":4115},{},[4116,4118,4123,4125],{"type":59,"value":4117},"Init Sentry in the worker process itself, not just the web process; for Laravel use ",{"type":45,"tag":110,"props":4119,"children":4121},{"className":4120},[],[4122],{"type":59,"value":1669},{"type":59,"value":4124}," in worker ",{"type":45,"tag":110,"props":4126,"children":4128},{"className":4127},[],[4129],{"type":59,"value":1677},{"type":45,"tag":917,"props":4131,"children":4132},{},[4133,4138],{"type":45,"tag":944,"props":4134,"children":4135},{},[4136],{"type":59,"value":4137},"Too many transactions",{"type":45,"tag":944,"props":4139,"children":4140},{},[4141,4143,4148,4150,4155],{"type":59,"value":4142},"Lower ",{"type":45,"tag":110,"props":4144,"children":4146},{"className":4145},[],[4147],{"type":59,"value":2595},{"type":59,"value":4149}," or use ",{"type":45,"tag":110,"props":4151,"children":4153},{"className":4152},[],[4154],{"type":59,"value":2637},{"type":59,"value":4156}," to drop health check routes",{"type":45,"tag":917,"props":4158,"children":4159},{},[4160,4165],{"type":45,"tag":944,"props":4161,"children":4162},{},[4163],{"type":59,"value":4164},"PII not captured",{"type":45,"tag":944,"props":4166,"children":4167},{},[4168,4169,4175,4177,4182,4183],{"type":59,"value":4027},{"type":45,"tag":110,"props":4170,"children":4172},{"className":4171},[],[4173],{"type":59,"value":4174},"send_default_pii: true",{"type":59,"value":4176},"; for Laravel set ",{"type":45,"tag":110,"props":4178,"children":4180},{"className":4179},[],[4181],{"type":59,"value":4174},{"type":59,"value":1552},{"type":45,"tag":110,"props":4184,"children":4186},{"className":4185},[],[4187],{"type":59,"value":1661},{"type":45,"tag":917,"props":4189,"children":4190},{},[4191,4201],{"type":45,"tag":944,"props":4192,"children":4193},{},[4194,4199],{"type":45,"tag":110,"props":4195,"children":4197},{"className":4196},[],[4198],{"type":59,"value":3019},{"type":59,"value":4200},"-suppressed errors missing",{"type":45,"tag":944,"props":4202,"children":4203},{},[4204,4205],{"type":59,"value":4027},{"type":45,"tag":110,"props":4206,"children":4208},{"className":4207},[],[4209],{"type":59,"value":4210},"capture_silenced_errors: true",{"type":45,"tag":917,"props":4212,"children":4213},{},[4214,4219],{"type":45,"tag":944,"props":4215,"children":4216},{},[4217],{"type":59,"value":4218},"Cross-service traces broken",{"type":45,"tag":944,"props":4220,"children":4221},{},[4222,4223,4228],{"type":59,"value":3641},{"type":45,"tag":110,"props":4224,"children":4226},{"className":4225},[],[4227],{"type":59,"value":3177},{"type":59,"value":4229},"; ensure downstream services have Sentry installed",{"type":45,"tag":917,"props":4231,"children":4232},{},[4233,4238],{"type":45,"tag":944,"props":4234,"children":4235},{},[4236],{"type":59,"value":4237},"Trace contamination from third-party services",{"type":45,"tag":944,"props":4239,"children":4240},{},[4241,4242,4248,4250,4255],{"type":59,"value":4027},{"type":45,"tag":110,"props":4243,"children":4245},{"className":4244},[],[4246],{"type":59,"value":4247},"strict_trace_continuation: true",{"type":59,"value":4249}," to only continue traces where the incoming ",{"type":45,"tag":110,"props":4251,"children":4253},{"className":4252},[],[4254],{"type":59,"value":3260},{"type":59,"value":4256}," baggage matches your SDK's org ID (>=4.21.0)",{"type":45,"tag":4258,"props":4259,"children":4260},"style",{},[4261],{"type":59,"value":4262},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4264,"total":4370},[4265,4283,4296,4312,4328,4342,4357],{"slug":4266,"name":4266,"fn":4267,"description":4268,"org":4269,"tags":4270,"stars":24,"repoUrl":25,"updatedAt":4282},"sentry-android-sdk","setup Sentry SDK for Android","Full Sentry SDK setup for Android. Use when asked to \"add Sentry to Android\", \"install sentry-android\", \"setup Sentry in Android\", or configure error monitoring, tracing, profiling, session replay, or logging for Android applications. Supports Kotlin and Java codebases.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4271,4274,4277,4278,4281],{"name":4272,"slug":4273,"type":16},"Android","android",{"name":4275,"slug":4276,"type":16},"Debugging","debugging",{"name":14,"slug":15,"type":16},{"name":4279,"slug":4280,"type":16},"SDK","sdk",{"name":9,"slug":8,"type":16},"2026-07-12T06:08:32.396344",{"slug":4284,"name":4284,"fn":4285,"description":4286,"org":4287,"tags":4288,"stars":24,"repoUrl":25,"updatedAt":4295},"sentry-browser-sdk","setup Sentry error monitoring for browser applications","Full Sentry SDK setup for browser JavaScript. Use when asked to \"add Sentry to a website\", \"install @sentry\u002Fbrowser\", or configure error monitoring, tracing, session replay, or logging for vanilla JavaScript, jQuery, static sites, or WordPress.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4289,4290,4293,4294],{"name":4275,"slug":4276,"type":16},{"name":4291,"slug":4292,"type":16},"JavaScript","javascript",{"name":21,"slug":22,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:44.437436",{"slug":4297,"name":4297,"fn":4298,"description":4299,"org":4300,"tags":4301,"stars":24,"repoUrl":25,"updatedAt":4311},"sentry-cloudflare-sdk","setup Sentry monitoring for Cloudflare","Full Sentry SDK setup for Cloudflare Workers and Pages. Use when asked to \"add Sentry to Cloudflare Workers\", \"install @sentry\u002Fcloudflare\", or configure error monitoring, tracing, logging, crons, or AI monitoring for Cloudflare Workers, Pages, Durable Objects, Queues, Workflows, or Hono on Cloudflare.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4302,4305,4308,4309,4310],{"name":4303,"slug":4304,"type":16},"Cloudflare","cloudflare",{"name":4306,"slug":4307,"type":16},"Edge Functions","edge-functions",{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:25.361175",{"slug":4313,"name":4313,"fn":4314,"description":4315,"org":4316,"tags":4317,"stars":24,"repoUrl":25,"updatedAt":4327},"sentry-cocoa-sdk","integrate Sentry SDK into Apple applications","Full Sentry SDK setup for Apple platforms (iOS, macOS, tvOS, watchOS, visionOS). Use when asked to \"add Sentry to iOS\", \"add Sentry to Swift\", \"install sentry-cocoa\", or configure error monitoring, tracing, profiling, session replay, logging, or metrics for Apple applications. Supports SwiftUI and UIKit.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4318,4321,4324,4325,4326],{"name":4319,"slug":4320,"type":16},"iOS","ios",{"name":4322,"slug":4323,"type":16},"macOS","macos",{"name":21,"slug":22,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:52:57.042493",{"slug":4329,"name":4329,"fn":4330,"description":4331,"org":4332,"tags":4333,"stars":24,"repoUrl":25,"updatedAt":4341},"sentry-dotnet-sdk","setup Sentry SDK for .NET","Full Sentry SDK setup for .NET. Use when asked to \"add Sentry to .NET\", \"install Sentry for C#\", or configure error monitoring, tracing, profiling, logging, or crons for ASP.NET Core, MAUI, WPF, WinForms, Blazor, Azure Functions, or any other .NET application.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4334,4337,4338,4339,4340],{"name":4335,"slug":4336,"type":16},".NET","net",{"name":4275,"slug":4276,"type":16},{"name":14,"slug":15,"type":16},{"name":4279,"slug":4280,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:33.793148",{"slug":4343,"name":4343,"fn":4344,"description":4345,"org":4346,"tags":4347,"stars":24,"repoUrl":25,"updatedAt":4356},"sentry-elixir-sdk","setup Sentry SDK for Elixir","Full Sentry SDK setup for Elixir. Use when asked to \"add Sentry to Elixir\", \"install sentry for Elixir\", or configure error monitoring, tracing, logging, or crons for Elixir, Phoenix, or Plug applications. Supports Phoenix, Plug, LiveView, Oban, and Quantum.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4348,4351,4354,4355],{"name":4349,"slug":4350,"type":16},"Backend","backend",{"name":4352,"slug":4353,"type":16},"Elixir","elixir",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:11.69581",{"slug":4358,"name":4358,"fn":4359,"description":4360,"org":4361,"tags":4362,"stars":24,"repoUrl":25,"updatedAt":4369},"sentry-fix-issues","fix production issues with Sentry","Find and fix issues from Sentry using MCP. Use when asked to fix Sentry errors, debug production issues, investigate exceptions, or resolve bugs reported in Sentry. Methodically analyzes stack traces, breadcrumbs, traces, and context to identify root causes.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4363,4364,4367,4368],{"name":4275,"slug":4276,"type":16},{"name":4365,"slug":4366,"type":16},"Incident Response","incident-response",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:35.550824",27,{"items":4372,"total":4544},[4373,4392,4406,4421,4435,4452,4468,4482,4492,4503,4513,4531],{"slug":4374,"name":4374,"fn":4375,"description":4376,"org":4377,"tags":4378,"stars":4389,"repoUrl":4390,"updatedAt":4391},"xcodebuildmcp","build and test Apple apps with XcodeBuildMCP","Official skill for XcodeBuildMCP. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4379,4380,4381,4382,4383,4386],{"name":4275,"slug":4276,"type":16},{"name":4319,"slug":4320,"type":16},{"name":4322,"slug":4323,"type":16},{"name":9,"slug":8,"type":16},{"name":4384,"slug":4385,"type":16},"Testing","testing",{"name":4387,"slug":4388,"type":16},"Xcode","xcode",6176,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002FXcodeBuildMCP","2026-04-06T18:13:34.8719",{"slug":4393,"name":4393,"fn":4394,"description":4395,"org":4396,"tags":4397,"stars":4389,"repoUrl":4390,"updatedAt":4405},"xcodebuildmcp-cli","build and test Apple apps via CLI","Official skill for the XcodeBuildMCP CLI. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4398,4401,4402,4403,4404],{"name":4399,"slug":4400,"type":16},"CLI","cli",{"name":4319,"slug":4320,"type":16},{"name":4322,"slug":4323,"type":16},{"name":4384,"slug":4385,"type":16},{"name":4387,"slug":4388,"type":16},"2026-04-06T18:13:36.13414",{"slug":4407,"name":4407,"fn":4408,"description":4409,"org":4410,"tags":4411,"stars":4418,"repoUrl":4419,"updatedAt":4420},"agents-md","maintain project instruction files","Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update AGENTS.md, maintain agent docs, set up CLAUDE.md, document repository agent conventions, or keep coding-agent instructions minimal and reference-backed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4412,4415],{"name":4413,"slug":4414,"type":16},"Documentation","documentation",{"name":4416,"slug":4417,"type":16},"Engineering","engineering",861,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills","2026-05-15T06:16:29.695991",{"slug":4422,"name":4422,"fn":4423,"description":4424,"org":4425,"tags":4426,"stars":4418,"repoUrl":4419,"updatedAt":4434},"blog-writing-guide","write and review engineering blog posts","Write, review, and improve blog posts for the Sentry engineering blog following Sentry's specific writing standards, voice, and quality bar. Use this skill whenever someone asks to write a blog post, draft a technical article, review blog content, improve a draft, write a product announcement, create an engineering deep-dive, or produce any written content destined for the Sentry blog or developer audience. Also trigger when the user mentions \"blog post,\" \"blog draft,\" \"write-up,\" \"announcement post,\" \"engineering post,\" \"deep dive,\" \"postmortem,\" or asks for help with technical writing for Sentry. Even if the user just says \"help me write about [feature\u002Ftopic]\" — if it sounds like it could become a Sentry blog post, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4427,4430,4431],{"name":4428,"slug":4429,"type":16},"Communications","communications",{"name":9,"slug":8,"type":16},{"name":4432,"slug":4433,"type":16},"Technical Writing","technical-writing","2026-05-15T06:16:33.38217",{"slug":4436,"name":4436,"fn":4437,"description":4438,"org":4439,"tags":4440,"stars":4418,"repoUrl":4419,"updatedAt":4451},"brand-guidelines","write copy following Sentry brand guidelines","Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404 pages, documentation, marketing copy, or any user-facing content. Covers both Plain Speech (default) and Sentry Voice tones.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4441,4444,4447,4448],{"name":4442,"slug":4443,"type":16},"Branding","branding",{"name":4445,"slug":4446,"type":16},"Content Creation","content-creation",{"name":9,"slug":8,"type":16},{"name":4449,"slug":4450,"type":16},"UX Copy","ux-copy","2026-05-15T06:16:22.395707",{"slug":4453,"name":4453,"fn":4454,"description":4455,"org":4456,"tags":4457,"stars":4418,"repoUrl":4419,"updatedAt":4467},"claude-settings-audit","generate Claude Code settings permissions","Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing existing settings, or determining which read-only bash commands to allow. Detects tech stack, build tools, and monorepo structure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4458,4461,4464],{"name":4459,"slug":4460,"type":16},"Claude Code","claude-code",{"name":4462,"slug":4463,"type":16},"Configuration","configuration",{"name":4465,"slug":4466,"type":16},"Security","security","2026-05-15T06:16:44.335977",{"slug":4469,"name":4469,"fn":4470,"description":4471,"org":4472,"tags":4473,"stars":4418,"repoUrl":4419,"updatedAt":4481},"code-review","perform code reviews for Sentry projects","Perform code reviews following Sentry engineering practices. Use when reviewing pull requests, examining code changes, or providing feedback on code quality. Covers security, performance, testing, and design review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4474,4476,4477,4480],{"name":4475,"slug":4469,"type":16},"Code Review",{"name":4416,"slug":4417,"type":16},{"name":4478,"slug":4479,"type":16},"Performance","performance",{"name":4465,"slug":4466,"type":16},"2026-05-15T06:16:35.824864",{"slug":4483,"name":4483,"fn":4484,"description":4485,"org":4486,"tags":4487,"stars":4418,"repoUrl":4419,"updatedAt":4491},"code-simplifier","simplify and refine source code","Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to \"simplify code\", \"clean up code\", \"refactor for clarity\", \"improve readability\", or review recently modified code for elegance. Focuses on project-specific best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4488],{"name":4489,"slug":4490,"type":16},"Code Analysis","code-analysis","2026-05-15T06:16:32.127981",{"slug":4493,"name":4493,"fn":4494,"description":4495,"org":4496,"tags":4497,"stars":4418,"repoUrl":4419,"updatedAt":4502},"commit","create commits with Sentry conventions","Use for every request to commit changes or draft a commit message. Creates Sentry-style conventional commits with issue references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4498,4501],{"name":4499,"slug":4500,"type":16},"Git","git",{"name":9,"slug":8,"type":16},"2026-07-18T05:15:10.723937",{"slug":4504,"name":4504,"fn":4505,"description":4506,"org":4507,"tags":4508,"stars":4418,"repoUrl":4419,"updatedAt":4512},"create-branch","create git branches for Sentry workflows","Create a git branch following Sentry naming conventions. Use when asked to \"create a branch\", \"new branch\", \"start a branch\", \"make a branch\", \"switch to a new branch\", or when starting new work on the default branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4509,4510,4511],{"name":4416,"slug":4417,"type":16},{"name":4499,"slug":4500,"type":16},{"name":9,"slug":8,"type":16},"2026-05-15T06:16:39.458431",{"slug":4514,"name":4514,"fn":4515,"description":4516,"org":4517,"tags":4518,"stars":4418,"repoUrl":4419,"updatedAt":4530},"django-access-review","review Django access control and IDOR","Django access control and IDOR security review. Use when reviewing Django views, DRF viewsets, ORM queries, or any Python\u002FDjango code handling user authorization. Trigger keywords: \"IDOR\", \"access control\", \"authorization\", \"Django permissions\", \"object permissions\", \"tenant isolation\", \"broken access\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4519,4522,4523,4526,4529],{"name":4520,"slug":4521,"type":16},"Access Control","access-control",{"name":4489,"slug":4490,"type":16},{"name":4524,"slug":4525,"type":16},"Django","django",{"name":4527,"slug":4528,"type":16},"Python","python",{"name":4465,"slug":4466,"type":16},"2026-05-15T06:16:43.098698",{"slug":4532,"name":4532,"fn":4533,"description":4534,"org":4535,"tags":4536,"stars":4418,"repoUrl":4419,"updatedAt":4543},"django-perf-review","review and optimize Django performance","Django performance code review. Use when asked to \"review Django performance\", \"find N+1 queries\", \"optimize Django\", \"check queryset performance\", \"database performance\", \"Django ORM issues\", or audit Django code for performance problems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[4537,4538,4541,4542],{"name":4475,"slug":4469,"type":16},{"name":4539,"slug":4540,"type":16},"Database","database",{"name":4524,"slug":4525,"type":16},{"name":4478,"slug":4479,"type":16},"2026-05-15T06:16:24.832813",88]