[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sentry-sentry-go-sdk":3,"mdc--anlb2v-key":36,"related-repo-sentry-sentry-go-sdk":3766,"related-org-sentry-sentry-go-sdk":3874},{"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-go-sdk","integrate Sentry SDK into Go applications","Full Sentry SDK setup for Go. Use when asked to \"add Sentry to Go\", \"install sentry-go\", \"setup Sentry in Go\", or configure error monitoring, tracing, logging, metrics, or crons for Go applications. Supports net\u002Fhttp, Gin, Echo, Fiber, FastHTTP, Iris, Negroni, and gRPC.",{"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,21],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"Monitoring","monitoring",{"name":9,"slug":8,"type":16},{"name":22,"slug":23,"type":16},"Go","go",237,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-for-ai","2026-07-11T05:52:48.979549","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-go-sdk","---\nname: sentry-go-sdk\ndescription: Full Sentry SDK setup for Go. Use when asked to \"add Sentry to Go\", \"install sentry-go\", \"setup Sentry in Go\", or configure error monitoring, tracing, logging, metrics, or crons for Go applications. Supports net\u002Fhttp, Gin, Echo, Fiber, FastHTTP, Iris, Negroni, and gRPC.\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) > Go SDK\n\n# Sentry Go SDK\n\nOpinionated wizard that scans your Go project and guides you through complete Sentry setup.\n\n## Invoke This Skill When\n\n- User asks to \"add Sentry to Go\" or \"setup Sentry\" in a Go app\n- User wants error monitoring, tracing, logging, metrics, or crons in Go\n- User mentions `sentry-go`, `github.com\u002Fgetsentry\u002Fsentry-go`, or Go Sentry SDK\n- User wants to monitor panics, HTTP handlers, or scheduled jobs in Go\n\n> **Note:** SDK versions and APIs below reflect Sentry docs at time of writing (sentry-go v0.43.0+).\n> As of v0.33.0+, the SDK requires **Go 1.25 or later** (supports the two most recent Go major versions).\n> Always verify against [docs.sentry.io\u002Fplatforms\u002Fgo\u002F](https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fgo\u002F) before implementing.\n\n---\n\n## Phase 1: Detect\n\nRun these commands to understand the project before making any recommendations:\n\n```bash\n# Check existing Sentry dependency\ngrep -i sentry go.mod 2>\u002Fdev\u002Fnull\n\n# Detect web framework\ngrep -E \"gin-gonic\u002Fgin|labstack\u002Fecho|gofiber\u002Ffiber|valyala\u002Ffasthttp|kataras\u002Firis|urfave\u002Fnegroni\" go.mod 2>\u002Fdev\u002Fnull\n\n# Detect gRPC\ngrep \"google.golang.org\u002Fgrpc\" go.mod 2>\u002Fdev\u002Fnull\n\n# Detect logging libraries\ngrep -E \"sirupsen\u002Flogrus|go.uber.org\u002Fzap|rs\u002Fzerolog|log\u002Fslog\" go.mod go.sum 2>\u002Fdev\u002Fnull\n\n# Detect cron \u002F scheduler patterns\ngrep -E \"robfig\u002Fcron|go-co-op\u002Fgocron|jasonlvhit\u002Fgocron\" go.mod 2>\u002Fdev\u002Fnull\n\n# Detect OpenTelemetry usage\ngrep \"go.opentelemetry.io\" go.mod 2>\u002Fdev\u002Fnull\n\n# Check for companion frontend\nls frontend\u002F web\u002F client\u002F ui\u002F 2>\u002Fdev\u002Fnull\n```\n\n**What to note:**\n- Is `sentry-go` already in `go.mod`? If yes, skip to Phase 2 (configure features).\n- Which framework is used? (Determines which sub-package and middleware to install.)\n- Which logging library? (Enables automatic log capture.)\n- Are cron\u002Fscheduler patterns present? (Triggers Crons recommendation.)\n- Is there a companion frontend directory? (Triggers Phase 4 cross-link.)\n\n---\n\n## Phase 2: Recommend\n\nBased on what you found, present a concrete recommendation. Don't ask open-ended questions — lead with a proposal:\n\n**Recommended (core coverage):**\n- ✅ **Error Monitoring** — always; captures panics and unhandled errors\n- ✅ **Tracing** — if HTTP handlers, gRPC, or DB calls are detected\n- ✅ **Logging** — if logrus, zap, zerolog, or slog is detected\n\n**Optional (enhanced observability):**\n- ⚡ **Metrics** — custom counters and gauges for business KPIs \u002F SLOs\n- ⚡ **Crons** — detect silent failures in scheduled jobs\n- ⚠️ **Profiling** — removed in sentry-go v0.31.0; see `references\u002Fprofiling.md` for alternatives\n\n**Recommendation logic:**\n\n| Feature | Recommend when... |\n|---------|------------------|\n| Error Monitoring | **Always** — non-negotiable baseline |\n| Tracing | `net\u002Fhttp`, gin, echo, fiber, gRPC, or DB calls detected |\n| Logging | logrus, zap, zerolog, or `log\u002Fslog` imports detected |\n| Metrics | Business events, SLO tracking, or counters needed |\n| Crons | `robfig\u002Fcron`, `gocron`, or scheduled job patterns detected |\n| Profiling | ⚠️ **Removed in v0.31.0** — do not recommend; see `references\u002Fprofiling.md` |\n\nPropose: *\"I recommend setting up Error Monitoring + Tracing [+ Logging if applicable]. Want me to also add Metrics or Crons?\"*\n\n---\n\n## Phase 3: Guide\n\n### Install\n\n```bash\n# Core SDK (always required)\ngo get github.com\u002Fgetsentry\u002Fsentry-go\n\n# Framework sub-package — install only what matches detected framework:\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fhttp      # net\u002Fhttp\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fgin       # Gin\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fecho      # Echo\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Ffiber     # Fiber\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Ffasthttp  # FastHTTP\n\n# Logging sub-packages — install only what matches detected logging lib:\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Flogrus    # Logrus\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fslog      # slog (stdlib, Go 1.21+)\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fzap       # Zap\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fzerolog   # Zerolog\n\n# gRPC interceptors (only if google.golang.org\u002Fgrpc is detected):\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fgrpc\n\n# OpenTelemetry bridge (only if OTel is already in use):\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fotel\n```\n\n### Quick Start — Recommended Init\n\nAdd to `main()` before any other code. This config enables the most features with sensible defaults:\n\n```go\nimport (\n    \"log\"\n    \"os\"\n    \"time\"\n    \"github.com\u002Fgetsentry\u002Fsentry-go\"\n)\n\nerr := sentry.Init(sentry.ClientOptions{\n    Dsn:              os.Getenv(\"SENTRY_DSN\"),\n    Environment:      os.Getenv(\"SENTRY_ENVIRONMENT\"), \u002F\u002F \"production\", \"staging\", etc.\n    Release:          release,                          \u002F\u002F inject via -ldflags at build time\n    SendDefaultPII:   true,\n    AttachStacktrace: true,\n\n    \u002F\u002F Tracing (adjust sample rate for production)\n    EnableTracing:    true,\n    TracesSampleRate: 1.0, \u002F\u002F lower to 0.1–0.2 in high-traffic production\n\n    \u002F\u002F Logs\n    EnableLogs: true,\n})\nif err != nil {\n    log.Fatalf(\"sentry.Init: %s\", err)\n}\ndefer sentry.Flush(2 * time.Second)\n```\n\n**Injecting `Release` at build time (recommended):**\n```go\nvar release string \u002F\u002F set by -ldflags\n\n\u002F\u002F go build -ldflags=\"-X main.release=my-app@$(git describe --tags)\"\n```\n\n### Framework Middleware\n\nAfter `sentry.Init`, register the Sentry middleware for your framework:\n\n| Framework | Import path | Middleware call | `Repanic` | `WaitForDelivery` |\n|-----------|------------|----------------|-----------|-------------------|\n| `net\u002Fhttp` | `...\u002Fsentry-go\u002Fhttp` | `sentryhttp.New(opts).Handle(h)` | `true` | `false` |\n| Gin | `...\u002Fsentry-go\u002Fgin` | `router.Use(sentrygin.New(opts))` | `true` | `false` |\n| Echo | `...\u002Fsentry-go\u002Fecho` | `e.Use(sentryecho.New(opts))` | `true` | `false` |\n| Fiber | `...\u002Fsentry-go\u002Ffiber` | `app.Use(sentryfiber.New(opts))` | `false` | `true` |\n| FastHTTP | `...\u002Fsentry-go\u002Ffasthttp` | `sentryfasthttp.New(opts).Handle(h)` | `false` | `true` |\n| Iris | `...\u002Fsentry-go\u002Firis` | `app.Use(sentryiris.New(opts))` | `true` | `false` |\n| Negroni | `...\u002Fsentry-go\u002Fnegroni` | `n.Use(sentrynegroni.New(opts))` | `true` | `false` |\n\n> **Note:** Fiber and FastHTTP are built on `valyala\u002Ffasthttp` which has no built-in recovery. Use `Repanic: false, WaitForDelivery: true` for those.\n\n**Hub access in handlers:**\n```go\n\u002F\u002F net\u002Fhttp, Negroni:\nhub := sentry.GetHubFromContext(r.Context())\n\n\u002F\u002F Gin:\nhub := sentrygin.GetHubFromContext(c)\n\n\u002F\u002F Echo:\nhub := sentryecho.GetHubFromContext(c)\n\n\u002F\u002F Fiber:\nhub := sentryfiber.GetHubFromContext(c)\n```\n\n### gRPC Integration\n\nFor gRPC servers and clients, use the `sentrygrpc` interceptors instead:\n\n```go\nimport sentrygrpc \"github.com\u002Fgetsentry\u002Fsentry-go\u002Fgrpc\"\n\n\u002F\u002F Server: register interceptors when creating the gRPC server\nserver := grpc.NewServer(\n    grpc.UnaryInterceptor(sentrygrpc.UnaryServerInterceptor()),\n    grpc.StreamInterceptor(sentrygrpc.StreamServerInterceptor()),\n)\n\n\u002F\u002F Client: register interceptors when dialing\nconn, err := grpc.NewClient(\n    address,\n    grpc.WithUnaryInterceptor(sentrygrpc.UnaryClientInterceptor()),\n    grpc.WithStreamInterceptor(sentrygrpc.StreamClientInterceptor()),\n)\n\n\u002F\u002F Hub access inside a gRPC handler:\nhub := sentry.GetHubFromContext(ctx)\n```\n\n### For Each Agreed Feature\n\nWalk through features one at a time. Load the reference file for each, follow its steps, and verify before moving to the next:\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 apps |\n| Logging | `${SKILL_ROOT}\u002Freferences\u002Flogging.md` | logrus \u002F zap \u002F zerolog \u002F slog detected |\n| Metrics | `${SKILL_ROOT}\u002Freferences\u002Fmetrics.md` | Business KPIs \u002F SLO tracking |\n| Crons | `${SKILL_ROOT}\u002Freferences\u002Fcrons.md` | Scheduler \u002F cron job patterns detected |\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 `ClientOptions` Fields\n\n| Option | Type | Default | Purpose |\n|--------|------|---------|---------|\n| `Dsn` | `string` | `\"\"` | SDK disabled if empty; env: `SENTRY_DSN` |\n| `Environment` | `string` | `\"\"` | e.g., `\"production\"`; env: `SENTRY_ENVIRONMENT` |\n| `Release` | `string` | `\"\"` | e.g., `\"my-app@1.0.0\"`; env: `SENTRY_RELEASE` |\n| `SendDefaultPII` | `bool` | `false` | Include IP, request headers |\n| `AttachStacktrace` | `bool` | `false` | Stack traces on `CaptureMessage` calls |\n| `SampleRate` | `float64` | `1.0` | Error event sample rate (0.0 treated as 1.0) |\n| `EnableTracing` | `bool` | `false` | Enable performance tracing |\n| `TracesSampleRate` | `float64` | `0.0` | Transaction sample rate |\n| `TracesSampler` | `TracesSampler` | `nil` | Custom per-transaction sampling (overrides rate) |\n| `EnableLogs` | `bool` | `false` | Enable Sentry Logs feature |\n| `MaxBreadcrumbs` | `int` | `100` | Max breadcrumbs per event |\n| `MaxErrorDepth` | `int` | `100` | Max depth for unwrapping error chains |\n| `Debug` | `bool` | `false` | Verbose SDK debug output |\n| `BeforeSend` | `func` | `nil` | Hook to mutate\u002Fdrop error events |\n| `BeforeSendTransaction` | `func` | `nil` | Hook to mutate\u002Fdrop transaction events |\n| `IgnoreErrors` | `[]string` | `nil` | Regex patterns for errors to drop |\n| `IgnoreTransactions` | `[]string` | `nil` | Regex patterns for transactions to drop |\n\n### Environment Variables\n\n| Variable | Maps to | Purpose |\n|----------|---------|---------|\n| `SENTRY_DSN` | `Dsn` | Data Source Name |\n| `SENTRY_RELEASE` | `Release` | App version (e.g., `my-app@1.0.0`) |\n| `SENTRY_ENVIRONMENT` | `Environment` | Deployment environment |\n| `HTTP_PROXY` \u002F `HTTPS_PROXY` | `HTTPProxy` \u002F `HTTPSProxy` | Outbound proxy |\n\nOptions set in `ClientOptions` **override** environment variables.\n\n---\n\n## Verification\n\nTest that Sentry is receiving events:\n\n```go\n\u002F\u002F In a handler or test — triggers a real error event:\nsentry.CaptureMessage(\"Sentry Go SDK test\")\n\n\u002F\u002F Or trigger a captured panic (with recovery middleware in place):\npanic(\"sentry test panic\")\n```\n\nCheck the Sentry dashboard within a few seconds. If nothing appears:\n1. Set `Debug: true` in `ClientOptions` — prints SDK internals to stdout\n2. Verify the DSN is correct and the project exists\n3. Ensure `sentry.Flush(2 * time.Second)` is called (events are async by default)\n\n---\n\n## Phase 4: Cross-Link\n\nAfter completing Go setup, check for a companion frontend missing Sentry coverage:\n\n```bash\nls frontend\u002F web\u002F client\u002F ui\u002F 2>\u002Fdev\u002Fnull\ncat frontend\u002Fpackage.json web\u002Fpackage.json 2>\u002Fdev\u002Fnull | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"'\n```\n\nIf a frontend directory exists without Sentry configured, 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 | 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 | Set `Debug: true`, check DSN, verify `sentry.Flush()` is called |\n| `sentry.Init` returns error | Malformed DSN — check format: `https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>` |\n| Panics not captured | Ensure framework middleware is registered before handlers |\n| `defer sentry.Flush` not running | `os.Exit()` skips `defer` — call `sentry.Flush()` explicitly before `os.Exit()` |\n| Missing stack traces | Set `AttachStacktrace: true` for `CaptureMessage`; works automatically for `CaptureException` |\n| Goroutine events missing context | Clone hub before spawning goroutine: `hub := sentry.CurrentHub().Clone()` |\n| Too many transactions | Lower `TracesSampleRate` or use `TracesSampler` to drop health checks \u002F metrics endpoints |\n| Fiber\u002FFastHTTP not recovering | Use `Repanic: false, WaitForDelivery: true` for fasthttp-based frameworks |\n| `SampleRate: 0.0` sending all events | `0.0` is treated as `1.0`; to drop all, set `Dsn: \"\"` instead |\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,131,162,166,172,177,562,570,613,616,622,627,635,672,680,726,734,877,895,898,904,911,1225,1231,1244,1453,1469,1499,1505,1518,1862,1890,1898,1990,1996,2009,2147,2153,2158,2310,2323,2326,2332,2346,2989,2995,3142,3161,3164,3170,3175,3221,3226,3268,3271,3277,3282,3376,3381,3483,3486,3492,3760],{"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}," > Go SDK",{"type":45,"tag":72,"props":73,"children":74},"h1",{"id":4},[75],{"type":59,"value":76},"Sentry Go SDK",{"type":45,"tag":50,"props":78,"children":79},{},[80],{"type":59,"value":81},"Opinionated wizard that scans your Go 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,126],{"type":45,"tag":94,"props":95,"children":96},"li",{},[97],{"type":59,"value":98},"User asks to \"add Sentry to Go\" or \"setup Sentry\" in a Go app",{"type":45,"tag":94,"props":100,"children":101},{},[102],{"type":59,"value":103},"User wants error monitoring, tracing, logging, metrics, or crons in Go",{"type":45,"tag":94,"props":105,"children":106},{},[107,109,116,118,124],{"type":59,"value":108},"User mentions ",{"type":45,"tag":110,"props":111,"children":113},"code",{"className":112},[],[114],{"type":59,"value":115},"sentry-go",{"type":59,"value":117},", ",{"type":45,"tag":110,"props":119,"children":121},{"className":120},[],[122],{"type":59,"value":123},"github.com\u002Fgetsentry\u002Fsentry-go",{"type":59,"value":125},", or Go Sentry SDK",{"type":45,"tag":94,"props":127,"children":128},{},[129],{"type":59,"value":130},"User wants to monitor panics, HTTP handlers, or scheduled jobs in Go",{"type":45,"tag":46,"props":132,"children":133},{},[134],{"type":45,"tag":50,"props":135,"children":136},{},[137,143,145,150,152,160],{"type":45,"tag":138,"props":139,"children":140},"strong",{},[141],{"type":59,"value":142},"Note:",{"type":59,"value":144}," SDK versions and APIs below reflect Sentry docs at time of writing (sentry-go v0.43.0+).\nAs of v0.33.0+, the SDK requires ",{"type":45,"tag":138,"props":146,"children":147},{},[148],{"type":59,"value":149},"Go 1.25 or later",{"type":59,"value":151}," (supports the two most recent Go major versions).\nAlways verify against ",{"type":45,"tag":54,"props":153,"children":157},{"href":154,"rel":155},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fgo\u002F",[156],"nofollow",[158],{"type":59,"value":159},"docs.sentry.io\u002Fplatforms\u002Fgo\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 any 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 dependency\ngrep -i sentry go.mod 2>\u002Fdev\u002Fnull\n\n# Detect web framework\ngrep -E \"gin-gonic\u002Fgin|labstack\u002Fecho|gofiber\u002Ffiber|valyala\u002Ffasthttp|kataras\u002Firis|urfave\u002Fnegroni\" go.mod 2>\u002Fdev\u002Fnull\n\n# Detect gRPC\ngrep \"google.golang.org\u002Fgrpc\" go.mod 2>\u002Fdev\u002Fnull\n\n# Detect logging libraries\ngrep -E \"sirupsen\u002Flogrus|go.uber.org\u002Fzap|rs\u002Fzerolog|log\u002Fslog\" go.mod go.sum 2>\u002Fdev\u002Fnull\n\n# Detect cron \u002F scheduler patterns\ngrep -E \"robfig\u002Fcron|go-co-op\u002Fgocron|jasonlvhit\u002Fgocron\" go.mod 2>\u002Fdev\u002Fnull\n\n# Detect OpenTelemetry usage\ngrep \"go.opentelemetry.io\" go.mod 2>\u002Fdev\u002Fnull\n\n# Check for companion frontend\nls frontend\u002F web\u002F client\u002F ui\u002F 2>\u002Fdev\u002Fnull\n","bash","",[185],{"type":45,"tag":110,"props":186,"children":187},{"__ignoreMap":183},[188,200,237,246,255,295,303,312,345,353,362,404,412,421,458,466,475,508,516,525],{"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 dependency\n",{"type":45,"tag":189,"props":201,"children":203},{"class":191,"line":202},2,[204,210,216,221,226,232],{"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}," go.mod",{"type":45,"tag":189,"props":227,"children":229},{"style":228},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[230],{"type":59,"value":231}," 2>",{"type":45,"tag":189,"props":233,"children":234},{"style":212},[235],{"type":59,"value":236},"\u002Fdev\u002Fnull\n",{"type":45,"tag":189,"props":238,"children":240},{"class":191,"line":239},3,[241],{"type":45,"tag":189,"props":242,"children":243},{"emptyLinePlaceholder":40},[244],{"type":59,"value":245},"\n",{"type":45,"tag":189,"props":247,"children":249},{"class":191,"line":248},4,[250],{"type":45,"tag":189,"props":251,"children":252},{"style":196},[253],{"type":59,"value":254},"# Detect web framework\n",{"type":45,"tag":189,"props":256,"children":258},{"class":191,"line":257},5,[259,263,268,273,278,283,287,291],{"type":45,"tag":189,"props":260,"children":261},{"style":206},[262],{"type":59,"value":209},{"type":45,"tag":189,"props":264,"children":265},{"style":212},[266],{"type":59,"value":267}," -E",{"type":45,"tag":189,"props":269,"children":270},{"style":228},[271],{"type":59,"value":272}," \"",{"type":45,"tag":189,"props":274,"children":275},{"style":212},[276],{"type":59,"value":277},"gin-gonic\u002Fgin|labstack\u002Fecho|gofiber\u002Ffiber|valyala\u002Ffasthttp|kataras\u002Firis|urfave\u002Fnegroni",{"type":45,"tag":189,"props":279,"children":280},{"style":228},[281],{"type":59,"value":282},"\"",{"type":45,"tag":189,"props":284,"children":285},{"style":212},[286],{"type":59,"value":225},{"type":45,"tag":189,"props":288,"children":289},{"style":228},[290],{"type":59,"value":231},{"type":45,"tag":189,"props":292,"children":293},{"style":212},[294],{"type":59,"value":236},{"type":45,"tag":189,"props":296,"children":298},{"class":191,"line":297},6,[299],{"type":45,"tag":189,"props":300,"children":301},{"emptyLinePlaceholder":40},[302],{"type":59,"value":245},{"type":45,"tag":189,"props":304,"children":306},{"class":191,"line":305},7,[307],{"type":45,"tag":189,"props":308,"children":309},{"style":196},[310],{"type":59,"value":311},"# Detect gRPC\n",{"type":45,"tag":189,"props":313,"children":315},{"class":191,"line":314},8,[316,320,324,329,333,337,341],{"type":45,"tag":189,"props":317,"children":318},{"style":206},[319],{"type":59,"value":209},{"type":45,"tag":189,"props":321,"children":322},{"style":228},[323],{"type":59,"value":272},{"type":45,"tag":189,"props":325,"children":326},{"style":212},[327],{"type":59,"value":328},"google.golang.org\u002Fgrpc",{"type":45,"tag":189,"props":330,"children":331},{"style":228},[332],{"type":59,"value":282},{"type":45,"tag":189,"props":334,"children":335},{"style":212},[336],{"type":59,"value":225},{"type":45,"tag":189,"props":338,"children":339},{"style":228},[340],{"type":59,"value":231},{"type":45,"tag":189,"props":342,"children":343},{"style":212},[344],{"type":59,"value":236},{"type":45,"tag":189,"props":346,"children":348},{"class":191,"line":347},9,[349],{"type":45,"tag":189,"props":350,"children":351},{"emptyLinePlaceholder":40},[352],{"type":59,"value":245},{"type":45,"tag":189,"props":354,"children":356},{"class":191,"line":355},10,[357],{"type":45,"tag":189,"props":358,"children":359},{"style":196},[360],{"type":59,"value":361},"# Detect logging libraries\n",{"type":45,"tag":189,"props":363,"children":365},{"class":191,"line":364},11,[366,370,374,378,383,387,391,396,400],{"type":45,"tag":189,"props":367,"children":368},{"style":206},[369],{"type":59,"value":209},{"type":45,"tag":189,"props":371,"children":372},{"style":212},[373],{"type":59,"value":267},{"type":45,"tag":189,"props":375,"children":376},{"style":228},[377],{"type":59,"value":272},{"type":45,"tag":189,"props":379,"children":380},{"style":212},[381],{"type":59,"value":382},"sirupsen\u002Flogrus|go.uber.org\u002Fzap|rs\u002Fzerolog|log\u002Fslog",{"type":45,"tag":189,"props":384,"children":385},{"style":228},[386],{"type":59,"value":282},{"type":45,"tag":189,"props":388,"children":389},{"style":212},[390],{"type":59,"value":225},{"type":45,"tag":189,"props":392,"children":393},{"style":212},[394],{"type":59,"value":395}," go.sum",{"type":45,"tag":189,"props":397,"children":398},{"style":228},[399],{"type":59,"value":231},{"type":45,"tag":189,"props":401,"children":402},{"style":212},[403],{"type":59,"value":236},{"type":45,"tag":189,"props":405,"children":407},{"class":191,"line":406},12,[408],{"type":45,"tag":189,"props":409,"children":410},{"emptyLinePlaceholder":40},[411],{"type":59,"value":245},{"type":45,"tag":189,"props":413,"children":415},{"class":191,"line":414},13,[416],{"type":45,"tag":189,"props":417,"children":418},{"style":196},[419],{"type":59,"value":420},"# Detect cron \u002F scheduler patterns\n",{"type":45,"tag":189,"props":422,"children":424},{"class":191,"line":423},14,[425,429,433,437,442,446,450,454],{"type":45,"tag":189,"props":426,"children":427},{"style":206},[428],{"type":59,"value":209},{"type":45,"tag":189,"props":430,"children":431},{"style":212},[432],{"type":59,"value":267},{"type":45,"tag":189,"props":434,"children":435},{"style":228},[436],{"type":59,"value":272},{"type":45,"tag":189,"props":438,"children":439},{"style":212},[440],{"type":59,"value":441},"robfig\u002Fcron|go-co-op\u002Fgocron|jasonlvhit\u002Fgocron",{"type":45,"tag":189,"props":443,"children":444},{"style":228},[445],{"type":59,"value":282},{"type":45,"tag":189,"props":447,"children":448},{"style":212},[449],{"type":59,"value":225},{"type":45,"tag":189,"props":451,"children":452},{"style":228},[453],{"type":59,"value":231},{"type":45,"tag":189,"props":455,"children":456},{"style":212},[457],{"type":59,"value":236},{"type":45,"tag":189,"props":459,"children":461},{"class":191,"line":460},15,[462],{"type":45,"tag":189,"props":463,"children":464},{"emptyLinePlaceholder":40},[465],{"type":59,"value":245},{"type":45,"tag":189,"props":467,"children":469},{"class":191,"line":468},16,[470],{"type":45,"tag":189,"props":471,"children":472},{"style":196},[473],{"type":59,"value":474},"# Detect OpenTelemetry usage\n",{"type":45,"tag":189,"props":476,"children":478},{"class":191,"line":477},17,[479,483,487,492,496,500,504],{"type":45,"tag":189,"props":480,"children":481},{"style":206},[482],{"type":59,"value":209},{"type":45,"tag":189,"props":484,"children":485},{"style":228},[486],{"type":59,"value":272},{"type":45,"tag":189,"props":488,"children":489},{"style":212},[490],{"type":59,"value":491},"go.opentelemetry.io",{"type":45,"tag":189,"props":493,"children":494},{"style":228},[495],{"type":59,"value":282},{"type":45,"tag":189,"props":497,"children":498},{"style":212},[499],{"type":59,"value":225},{"type":45,"tag":189,"props":501,"children":502},{"style":228},[503],{"type":59,"value":231},{"type":45,"tag":189,"props":505,"children":506},{"style":212},[507],{"type":59,"value":236},{"type":45,"tag":189,"props":509,"children":511},{"class":191,"line":510},18,[512],{"type":45,"tag":189,"props":513,"children":514},{"emptyLinePlaceholder":40},[515],{"type":59,"value":245},{"type":45,"tag":189,"props":517,"children":519},{"class":191,"line":518},19,[520],{"type":45,"tag":189,"props":521,"children":522},{"style":196},[523],{"type":59,"value":524},"# Check for companion frontend\n",{"type":45,"tag":189,"props":526,"children":528},{"class":191,"line":527},20,[529,534,539,544,549,554,558],{"type":45,"tag":189,"props":530,"children":531},{"style":206},[532],{"type":59,"value":533},"ls",{"type":45,"tag":189,"props":535,"children":536},{"style":212},[537],{"type":59,"value":538}," frontend\u002F",{"type":45,"tag":189,"props":540,"children":541},{"style":212},[542],{"type":59,"value":543}," web\u002F",{"type":45,"tag":189,"props":545,"children":546},{"style":212},[547],{"type":59,"value":548}," client\u002F",{"type":45,"tag":189,"props":550,"children":551},{"style":212},[552],{"type":59,"value":553}," ui\u002F",{"type":45,"tag":189,"props":555,"children":556},{"style":228},[557],{"type":59,"value":231},{"type":45,"tag":189,"props":559,"children":560},{"style":212},[561],{"type":59,"value":236},{"type":45,"tag":50,"props":563,"children":564},{},[565],{"type":45,"tag":138,"props":566,"children":567},{},[568],{"type":59,"value":569},"What to note:",{"type":45,"tag":90,"props":571,"children":572},{},[573,593,598,603,608],{"type":45,"tag":94,"props":574,"children":575},{},[576,578,583,585,591],{"type":59,"value":577},"Is ",{"type":45,"tag":110,"props":579,"children":581},{"className":580},[],[582],{"type":59,"value":115},{"type":59,"value":584}," already in ",{"type":45,"tag":110,"props":586,"children":588},{"className":587},[],[589],{"type":59,"value":590},"go.mod",{"type":59,"value":592},"? If yes, skip to Phase 2 (configure features).",{"type":45,"tag":94,"props":594,"children":595},{},[596],{"type":59,"value":597},"Which framework is used? (Determines which sub-package and middleware to install.)",{"type":45,"tag":94,"props":599,"children":600},{},[601],{"type":59,"value":602},"Which logging library? (Enables automatic log capture.)",{"type":45,"tag":94,"props":604,"children":605},{},[606],{"type":59,"value":607},"Are cron\u002Fscheduler patterns present? (Triggers Crons recommendation.)",{"type":45,"tag":94,"props":609,"children":610},{},[611],{"type":59,"value":612},"Is there a companion frontend directory? (Triggers Phase 4 cross-link.)",{"type":45,"tag":163,"props":614,"children":615},{},[],{"type":45,"tag":83,"props":617,"children":619},{"id":618},"phase-2-recommend",[620],{"type":59,"value":621},"Phase 2: Recommend",{"type":45,"tag":50,"props":623,"children":624},{},[625],{"type":59,"value":626},"Based on what you found, present a concrete recommendation. Don't ask open-ended questions — lead with a proposal:",{"type":45,"tag":50,"props":628,"children":629},{},[630],{"type":45,"tag":138,"props":631,"children":632},{},[633],{"type":59,"value":634},"Recommended (core coverage):",{"type":45,"tag":90,"props":636,"children":637},{},[638,650,661],{"type":45,"tag":94,"props":639,"children":640},{},[641,643,648],{"type":59,"value":642},"✅ ",{"type":45,"tag":138,"props":644,"children":645},{},[646],{"type":59,"value":647},"Error Monitoring",{"type":59,"value":649}," — always; captures panics and unhandled errors",{"type":45,"tag":94,"props":651,"children":652},{},[653,654,659],{"type":59,"value":642},{"type":45,"tag":138,"props":655,"children":656},{},[657],{"type":59,"value":658},"Tracing",{"type":59,"value":660}," — if HTTP handlers, gRPC, or DB calls are detected",{"type":45,"tag":94,"props":662,"children":663},{},[664,665,670],{"type":59,"value":642},{"type":45,"tag":138,"props":666,"children":667},{},[668],{"type":59,"value":669},"Logging",{"type":59,"value":671}," — if logrus, zap, zerolog, or slog is detected",{"type":45,"tag":50,"props":673,"children":674},{},[675],{"type":45,"tag":138,"props":676,"children":677},{},[678],{"type":59,"value":679},"Optional (enhanced observability):",{"type":45,"tag":90,"props":681,"children":682},{},[683,695,706],{"type":45,"tag":94,"props":684,"children":685},{},[686,688,693],{"type":59,"value":687},"⚡ ",{"type":45,"tag":138,"props":689,"children":690},{},[691],{"type":59,"value":692},"Metrics",{"type":59,"value":694}," — custom counters and gauges for business KPIs \u002F SLOs",{"type":45,"tag":94,"props":696,"children":697},{},[698,699,704],{"type":59,"value":687},{"type":45,"tag":138,"props":700,"children":701},{},[702],{"type":59,"value":703},"Crons",{"type":59,"value":705}," — detect silent failures in scheduled jobs",{"type":45,"tag":94,"props":707,"children":708},{},[709,711,716,718,724],{"type":59,"value":710},"⚠️ ",{"type":45,"tag":138,"props":712,"children":713},{},[714],{"type":59,"value":715},"Profiling",{"type":59,"value":717}," — removed in sentry-go v0.31.0; see ",{"type":45,"tag":110,"props":719,"children":721},{"className":720},[],[722],{"type":59,"value":723},"references\u002Fprofiling.md",{"type":59,"value":725}," for alternatives",{"type":45,"tag":50,"props":727,"children":728},{},[729],{"type":45,"tag":138,"props":730,"children":731},{},[732],{"type":59,"value":733},"Recommendation logic:",{"type":45,"tag":735,"props":736,"children":737},"table",{},[738,757],{"type":45,"tag":739,"props":740,"children":741},"thead",{},[742],{"type":45,"tag":743,"props":744,"children":745},"tr",{},[746,752],{"type":45,"tag":747,"props":748,"children":749},"th",{},[750],{"type":59,"value":751},"Feature",{"type":45,"tag":747,"props":753,"children":754},{},[755],{"type":59,"value":756},"Recommend when...",{"type":45,"tag":758,"props":759,"children":760},"tbody",{},[761,779,797,817,829,854],{"type":45,"tag":743,"props":762,"children":763},{},[764,769],{"type":45,"tag":765,"props":766,"children":767},"td",{},[768],{"type":59,"value":647},{"type":45,"tag":765,"props":770,"children":771},{},[772,777],{"type":45,"tag":138,"props":773,"children":774},{},[775],{"type":59,"value":776},"Always",{"type":59,"value":778}," — non-negotiable baseline",{"type":45,"tag":743,"props":780,"children":781},{},[782,786],{"type":45,"tag":765,"props":783,"children":784},{},[785],{"type":59,"value":658},{"type":45,"tag":765,"props":787,"children":788},{},[789,795],{"type":45,"tag":110,"props":790,"children":792},{"className":791},[],[793],{"type":59,"value":794},"net\u002Fhttp",{"type":59,"value":796},", gin, echo, fiber, gRPC, or DB calls detected",{"type":45,"tag":743,"props":798,"children":799},{},[800,804],{"type":45,"tag":765,"props":801,"children":802},{},[803],{"type":59,"value":669},{"type":45,"tag":765,"props":805,"children":806},{},[807,809,815],{"type":59,"value":808},"logrus, zap, zerolog, or ",{"type":45,"tag":110,"props":810,"children":812},{"className":811},[],[813],{"type":59,"value":814},"log\u002Fslog",{"type":59,"value":816}," imports detected",{"type":45,"tag":743,"props":818,"children":819},{},[820,824],{"type":45,"tag":765,"props":821,"children":822},{},[823],{"type":59,"value":692},{"type":45,"tag":765,"props":825,"children":826},{},[827],{"type":59,"value":828},"Business events, SLO tracking, or counters needed",{"type":45,"tag":743,"props":830,"children":831},{},[832,836],{"type":45,"tag":765,"props":833,"children":834},{},[835],{"type":59,"value":703},{"type":45,"tag":765,"props":837,"children":838},{},[839,845,846,852],{"type":45,"tag":110,"props":840,"children":842},{"className":841},[],[843],{"type":59,"value":844},"robfig\u002Fcron",{"type":59,"value":117},{"type":45,"tag":110,"props":847,"children":849},{"className":848},[],[850],{"type":59,"value":851},"gocron",{"type":59,"value":853},", or scheduled job patterns detected",{"type":45,"tag":743,"props":855,"children":856},{},[857,861],{"type":45,"tag":765,"props":858,"children":859},{},[860],{"type":59,"value":715},{"type":45,"tag":765,"props":862,"children":863},{},[864,865,870,872],{"type":59,"value":710},{"type":45,"tag":138,"props":866,"children":867},{},[868],{"type":59,"value":869},"Removed in v0.31.0",{"type":59,"value":871}," — do not recommend; see ",{"type":45,"tag":110,"props":873,"children":875},{"className":874},[],[876],{"type":59,"value":723},{"type":45,"tag":50,"props":878,"children":879},{},[880,882],{"type":59,"value":881},"Propose: ",{"type":45,"tag":883,"props":884,"children":885},"em",{},[886,888,893],{"type":59,"value":887},"\"I recommend setting up Error Monitoring + Tracing ",{"type":45,"tag":189,"props":889,"children":890},{},[891],{"type":59,"value":892},"+ Logging if applicable",{"type":59,"value":894},". Want me to also add Metrics or Crons?\"",{"type":45,"tag":163,"props":896,"children":897},{},[],{"type":45,"tag":83,"props":899,"children":901},{"id":900},"phase-3-guide",[902],{"type":59,"value":903},"Phase 3: Guide",{"type":45,"tag":905,"props":906,"children":908},"h3",{"id":907},"install",[909],{"type":59,"value":910},"Install",{"type":45,"tag":178,"props":912,"children":914},{"className":180,"code":913,"language":182,"meta":183,"style":183},"# Core SDK (always required)\ngo get github.com\u002Fgetsentry\u002Fsentry-go\n\n# Framework sub-package — install only what matches detected framework:\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fhttp      # net\u002Fhttp\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fgin       # Gin\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fecho      # Echo\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Ffiber     # Fiber\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Ffasthttp  # FastHTTP\n\n# Logging sub-packages — install only what matches detected logging lib:\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Flogrus    # Logrus\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fslog      # slog (stdlib, Go 1.21+)\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fzap       # Zap\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fzerolog   # Zerolog\n\n# gRPC interceptors (only if google.golang.org\u002Fgrpc is detected):\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fgrpc\n\n# OpenTelemetry bridge (only if OTel is already in use):\ngo get github.com\u002Fgetsentry\u002Fsentry-go\u002Fotel\n",[915],{"type":45,"tag":110,"props":916,"children":917},{"__ignoreMap":183},[918,926,943,950,958,979,1000,1021,1042,1063,1070,1078,1099,1120,1141,1162,1169,1177,1193,1200,1208],{"type":45,"tag":189,"props":919,"children":920},{"class":191,"line":192},[921],{"type":45,"tag":189,"props":922,"children":923},{"style":196},[924],{"type":59,"value":925},"# Core SDK (always required)\n",{"type":45,"tag":189,"props":927,"children":928},{"class":191,"line":202},[929,933,938],{"type":45,"tag":189,"props":930,"children":931},{"style":206},[932],{"type":59,"value":23},{"type":45,"tag":189,"props":934,"children":935},{"style":212},[936],{"type":59,"value":937}," get",{"type":45,"tag":189,"props":939,"children":940},{"style":212},[941],{"type":59,"value":942}," github.com\u002Fgetsentry\u002Fsentry-go\n",{"type":45,"tag":189,"props":944,"children":945},{"class":191,"line":239},[946],{"type":45,"tag":189,"props":947,"children":948},{"emptyLinePlaceholder":40},[949],{"type":59,"value":245},{"type":45,"tag":189,"props":951,"children":952},{"class":191,"line":248},[953],{"type":45,"tag":189,"props":954,"children":955},{"style":196},[956],{"type":59,"value":957},"# Framework sub-package — install only what matches detected framework:\n",{"type":45,"tag":189,"props":959,"children":960},{"class":191,"line":257},[961,965,969,974],{"type":45,"tag":189,"props":962,"children":963},{"style":206},[964],{"type":59,"value":23},{"type":45,"tag":189,"props":966,"children":967},{"style":212},[968],{"type":59,"value":937},{"type":45,"tag":189,"props":970,"children":971},{"style":212},[972],{"type":59,"value":973}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fhttp",{"type":45,"tag":189,"props":975,"children":976},{"style":196},[977],{"type":59,"value":978},"      # net\u002Fhttp\n",{"type":45,"tag":189,"props":980,"children":981},{"class":191,"line":297},[982,986,990,995],{"type":45,"tag":189,"props":983,"children":984},{"style":206},[985],{"type":59,"value":23},{"type":45,"tag":189,"props":987,"children":988},{"style":212},[989],{"type":59,"value":937},{"type":45,"tag":189,"props":991,"children":992},{"style":212},[993],{"type":59,"value":994}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fgin",{"type":45,"tag":189,"props":996,"children":997},{"style":196},[998],{"type":59,"value":999},"       # Gin\n",{"type":45,"tag":189,"props":1001,"children":1002},{"class":191,"line":305},[1003,1007,1011,1016],{"type":45,"tag":189,"props":1004,"children":1005},{"style":206},[1006],{"type":59,"value":23},{"type":45,"tag":189,"props":1008,"children":1009},{"style":212},[1010],{"type":59,"value":937},{"type":45,"tag":189,"props":1012,"children":1013},{"style":212},[1014],{"type":59,"value":1015}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fecho",{"type":45,"tag":189,"props":1017,"children":1018},{"style":196},[1019],{"type":59,"value":1020},"      # Echo\n",{"type":45,"tag":189,"props":1022,"children":1023},{"class":191,"line":314},[1024,1028,1032,1037],{"type":45,"tag":189,"props":1025,"children":1026},{"style":206},[1027],{"type":59,"value":23},{"type":45,"tag":189,"props":1029,"children":1030},{"style":212},[1031],{"type":59,"value":937},{"type":45,"tag":189,"props":1033,"children":1034},{"style":212},[1035],{"type":59,"value":1036}," github.com\u002Fgetsentry\u002Fsentry-go\u002Ffiber",{"type":45,"tag":189,"props":1038,"children":1039},{"style":196},[1040],{"type":59,"value":1041},"     # Fiber\n",{"type":45,"tag":189,"props":1043,"children":1044},{"class":191,"line":347},[1045,1049,1053,1058],{"type":45,"tag":189,"props":1046,"children":1047},{"style":206},[1048],{"type":59,"value":23},{"type":45,"tag":189,"props":1050,"children":1051},{"style":212},[1052],{"type":59,"value":937},{"type":45,"tag":189,"props":1054,"children":1055},{"style":212},[1056],{"type":59,"value":1057}," github.com\u002Fgetsentry\u002Fsentry-go\u002Ffasthttp",{"type":45,"tag":189,"props":1059,"children":1060},{"style":196},[1061],{"type":59,"value":1062},"  # FastHTTP\n",{"type":45,"tag":189,"props":1064,"children":1065},{"class":191,"line":355},[1066],{"type":45,"tag":189,"props":1067,"children":1068},{"emptyLinePlaceholder":40},[1069],{"type":59,"value":245},{"type":45,"tag":189,"props":1071,"children":1072},{"class":191,"line":364},[1073],{"type":45,"tag":189,"props":1074,"children":1075},{"style":196},[1076],{"type":59,"value":1077},"# Logging sub-packages — install only what matches detected logging lib:\n",{"type":45,"tag":189,"props":1079,"children":1080},{"class":191,"line":406},[1081,1085,1089,1094],{"type":45,"tag":189,"props":1082,"children":1083},{"style":206},[1084],{"type":59,"value":23},{"type":45,"tag":189,"props":1086,"children":1087},{"style":212},[1088],{"type":59,"value":937},{"type":45,"tag":189,"props":1090,"children":1091},{"style":212},[1092],{"type":59,"value":1093}," github.com\u002Fgetsentry\u002Fsentry-go\u002Flogrus",{"type":45,"tag":189,"props":1095,"children":1096},{"style":196},[1097],{"type":59,"value":1098},"    # Logrus\n",{"type":45,"tag":189,"props":1100,"children":1101},{"class":191,"line":414},[1102,1106,1110,1115],{"type":45,"tag":189,"props":1103,"children":1104},{"style":206},[1105],{"type":59,"value":23},{"type":45,"tag":189,"props":1107,"children":1108},{"style":212},[1109],{"type":59,"value":937},{"type":45,"tag":189,"props":1111,"children":1112},{"style":212},[1113],{"type":59,"value":1114}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fslog",{"type":45,"tag":189,"props":1116,"children":1117},{"style":196},[1118],{"type":59,"value":1119},"      # slog (stdlib, Go 1.21+)\n",{"type":45,"tag":189,"props":1121,"children":1122},{"class":191,"line":423},[1123,1127,1131,1136],{"type":45,"tag":189,"props":1124,"children":1125},{"style":206},[1126],{"type":59,"value":23},{"type":45,"tag":189,"props":1128,"children":1129},{"style":212},[1130],{"type":59,"value":937},{"type":45,"tag":189,"props":1132,"children":1133},{"style":212},[1134],{"type":59,"value":1135}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fzap",{"type":45,"tag":189,"props":1137,"children":1138},{"style":196},[1139],{"type":59,"value":1140},"       # Zap\n",{"type":45,"tag":189,"props":1142,"children":1143},{"class":191,"line":460},[1144,1148,1152,1157],{"type":45,"tag":189,"props":1145,"children":1146},{"style":206},[1147],{"type":59,"value":23},{"type":45,"tag":189,"props":1149,"children":1150},{"style":212},[1151],{"type":59,"value":937},{"type":45,"tag":189,"props":1153,"children":1154},{"style":212},[1155],{"type":59,"value":1156}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fzerolog",{"type":45,"tag":189,"props":1158,"children":1159},{"style":196},[1160],{"type":59,"value":1161},"   # Zerolog\n",{"type":45,"tag":189,"props":1163,"children":1164},{"class":191,"line":468},[1165],{"type":45,"tag":189,"props":1166,"children":1167},{"emptyLinePlaceholder":40},[1168],{"type":59,"value":245},{"type":45,"tag":189,"props":1170,"children":1171},{"class":191,"line":477},[1172],{"type":45,"tag":189,"props":1173,"children":1174},{"style":196},[1175],{"type":59,"value":1176},"# gRPC interceptors (only if google.golang.org\u002Fgrpc is detected):\n",{"type":45,"tag":189,"props":1178,"children":1179},{"class":191,"line":510},[1180,1184,1188],{"type":45,"tag":189,"props":1181,"children":1182},{"style":206},[1183],{"type":59,"value":23},{"type":45,"tag":189,"props":1185,"children":1186},{"style":212},[1187],{"type":59,"value":937},{"type":45,"tag":189,"props":1189,"children":1190},{"style":212},[1191],{"type":59,"value":1192}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fgrpc\n",{"type":45,"tag":189,"props":1194,"children":1195},{"class":191,"line":518},[1196],{"type":45,"tag":189,"props":1197,"children":1198},{"emptyLinePlaceholder":40},[1199],{"type":59,"value":245},{"type":45,"tag":189,"props":1201,"children":1202},{"class":191,"line":527},[1203],{"type":45,"tag":189,"props":1204,"children":1205},{"style":196},[1206],{"type":59,"value":1207},"# OpenTelemetry bridge (only if OTel is already in use):\n",{"type":45,"tag":189,"props":1209,"children":1211},{"class":191,"line":1210},21,[1212,1216,1220],{"type":45,"tag":189,"props":1213,"children":1214},{"style":206},[1215],{"type":59,"value":23},{"type":45,"tag":189,"props":1217,"children":1218},{"style":212},[1219],{"type":59,"value":937},{"type":45,"tag":189,"props":1221,"children":1222},{"style":212},[1223],{"type":59,"value":1224}," github.com\u002Fgetsentry\u002Fsentry-go\u002Fotel\n",{"type":45,"tag":905,"props":1226,"children":1228},{"id":1227},"quick-start-recommended-init",[1229],{"type":59,"value":1230},"Quick Start — Recommended Init",{"type":45,"tag":50,"props":1232,"children":1233},{},[1234,1236,1242],{"type":59,"value":1235},"Add to ",{"type":45,"tag":110,"props":1237,"children":1239},{"className":1238},[],[1240],{"type":59,"value":1241},"main()",{"type":59,"value":1243}," before any other code. This config enables the most features with sensible defaults:",{"type":45,"tag":178,"props":1245,"children":1248},{"className":1246,"code":1247,"language":23,"meta":183,"style":183},"language-go shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import (\n    \"log\"\n    \"os\"\n    \"time\"\n    \"github.com\u002Fgetsentry\u002Fsentry-go\"\n)\n\nerr := sentry.Init(sentry.ClientOptions{\n    Dsn:              os.Getenv(\"SENTRY_DSN\"),\n    Environment:      os.Getenv(\"SENTRY_ENVIRONMENT\"), \u002F\u002F \"production\", \"staging\", etc.\n    Release:          release,                          \u002F\u002F inject via -ldflags at build time\n    SendDefaultPII:   true,\n    AttachStacktrace: true,\n\n    \u002F\u002F Tracing (adjust sample rate for production)\n    EnableTracing:    true,\n    TracesSampleRate: 1.0, \u002F\u002F lower to 0.1–0.2 in high-traffic production\n\n    \u002F\u002F Logs\n    EnableLogs: true,\n})\nif err != nil {\n    log.Fatalf(\"sentry.Init: %s\", err)\n}\ndefer sentry.Flush(2 * time.Second)\n",[1249],{"type":45,"tag":110,"props":1250,"children":1251},{"__ignoreMap":183},[1252,1260,1268,1276,1284,1292,1300,1307,1315,1323,1331,1339,1347,1355,1362,1370,1378,1386,1393,1401,1409,1417,1426,1435,1444],{"type":45,"tag":189,"props":1253,"children":1254},{"class":191,"line":192},[1255],{"type":45,"tag":189,"props":1256,"children":1257},{},[1258],{"type":59,"value":1259},"import (\n",{"type":45,"tag":189,"props":1261,"children":1262},{"class":191,"line":202},[1263],{"type":45,"tag":189,"props":1264,"children":1265},{},[1266],{"type":59,"value":1267},"    \"log\"\n",{"type":45,"tag":189,"props":1269,"children":1270},{"class":191,"line":239},[1271],{"type":45,"tag":189,"props":1272,"children":1273},{},[1274],{"type":59,"value":1275},"    \"os\"\n",{"type":45,"tag":189,"props":1277,"children":1278},{"class":191,"line":248},[1279],{"type":45,"tag":189,"props":1280,"children":1281},{},[1282],{"type":59,"value":1283},"    \"time\"\n",{"type":45,"tag":189,"props":1285,"children":1286},{"class":191,"line":257},[1287],{"type":45,"tag":189,"props":1288,"children":1289},{},[1290],{"type":59,"value":1291},"    \"github.com\u002Fgetsentry\u002Fsentry-go\"\n",{"type":45,"tag":189,"props":1293,"children":1294},{"class":191,"line":297},[1295],{"type":45,"tag":189,"props":1296,"children":1297},{},[1298],{"type":59,"value":1299},")\n",{"type":45,"tag":189,"props":1301,"children":1302},{"class":191,"line":305},[1303],{"type":45,"tag":189,"props":1304,"children":1305},{"emptyLinePlaceholder":40},[1306],{"type":59,"value":245},{"type":45,"tag":189,"props":1308,"children":1309},{"class":191,"line":314},[1310],{"type":45,"tag":189,"props":1311,"children":1312},{},[1313],{"type":59,"value":1314},"err := sentry.Init(sentry.ClientOptions{\n",{"type":45,"tag":189,"props":1316,"children":1317},{"class":191,"line":347},[1318],{"type":45,"tag":189,"props":1319,"children":1320},{},[1321],{"type":59,"value":1322},"    Dsn:              os.Getenv(\"SENTRY_DSN\"),\n",{"type":45,"tag":189,"props":1324,"children":1325},{"class":191,"line":355},[1326],{"type":45,"tag":189,"props":1327,"children":1328},{},[1329],{"type":59,"value":1330},"    Environment:      os.Getenv(\"SENTRY_ENVIRONMENT\"), \u002F\u002F \"production\", \"staging\", etc.\n",{"type":45,"tag":189,"props":1332,"children":1333},{"class":191,"line":364},[1334],{"type":45,"tag":189,"props":1335,"children":1336},{},[1337],{"type":59,"value":1338},"    Release:          release,                          \u002F\u002F inject via -ldflags at build time\n",{"type":45,"tag":189,"props":1340,"children":1341},{"class":191,"line":406},[1342],{"type":45,"tag":189,"props":1343,"children":1344},{},[1345],{"type":59,"value":1346},"    SendDefaultPII:   true,\n",{"type":45,"tag":189,"props":1348,"children":1349},{"class":191,"line":414},[1350],{"type":45,"tag":189,"props":1351,"children":1352},{},[1353],{"type":59,"value":1354},"    AttachStacktrace: true,\n",{"type":45,"tag":189,"props":1356,"children":1357},{"class":191,"line":423},[1358],{"type":45,"tag":189,"props":1359,"children":1360},{"emptyLinePlaceholder":40},[1361],{"type":59,"value":245},{"type":45,"tag":189,"props":1363,"children":1364},{"class":191,"line":460},[1365],{"type":45,"tag":189,"props":1366,"children":1367},{},[1368],{"type":59,"value":1369},"    \u002F\u002F Tracing (adjust sample rate for production)\n",{"type":45,"tag":189,"props":1371,"children":1372},{"class":191,"line":468},[1373],{"type":45,"tag":189,"props":1374,"children":1375},{},[1376],{"type":59,"value":1377},"    EnableTracing:    true,\n",{"type":45,"tag":189,"props":1379,"children":1380},{"class":191,"line":477},[1381],{"type":45,"tag":189,"props":1382,"children":1383},{},[1384],{"type":59,"value":1385},"    TracesSampleRate: 1.0, \u002F\u002F lower to 0.1–0.2 in high-traffic production\n",{"type":45,"tag":189,"props":1387,"children":1388},{"class":191,"line":510},[1389],{"type":45,"tag":189,"props":1390,"children":1391},{"emptyLinePlaceholder":40},[1392],{"type":59,"value":245},{"type":45,"tag":189,"props":1394,"children":1395},{"class":191,"line":518},[1396],{"type":45,"tag":189,"props":1397,"children":1398},{},[1399],{"type":59,"value":1400},"    \u002F\u002F Logs\n",{"type":45,"tag":189,"props":1402,"children":1403},{"class":191,"line":527},[1404],{"type":45,"tag":189,"props":1405,"children":1406},{},[1407],{"type":59,"value":1408},"    EnableLogs: true,\n",{"type":45,"tag":189,"props":1410,"children":1411},{"class":191,"line":1210},[1412],{"type":45,"tag":189,"props":1413,"children":1414},{},[1415],{"type":59,"value":1416},"})\n",{"type":45,"tag":189,"props":1418,"children":1420},{"class":191,"line":1419},22,[1421],{"type":45,"tag":189,"props":1422,"children":1423},{},[1424],{"type":59,"value":1425},"if err != nil {\n",{"type":45,"tag":189,"props":1427,"children":1429},{"class":191,"line":1428},23,[1430],{"type":45,"tag":189,"props":1431,"children":1432},{},[1433],{"type":59,"value":1434},"    log.Fatalf(\"sentry.Init: %s\", err)\n",{"type":45,"tag":189,"props":1436,"children":1438},{"class":191,"line":1437},24,[1439],{"type":45,"tag":189,"props":1440,"children":1441},{},[1442],{"type":59,"value":1443},"}\n",{"type":45,"tag":189,"props":1445,"children":1447},{"class":191,"line":1446},25,[1448],{"type":45,"tag":189,"props":1449,"children":1450},{},[1451],{"type":59,"value":1452},"defer sentry.Flush(2 * time.Second)\n",{"type":45,"tag":50,"props":1454,"children":1455},{},[1456],{"type":45,"tag":138,"props":1457,"children":1458},{},[1459,1461,1467],{"type":59,"value":1460},"Injecting ",{"type":45,"tag":110,"props":1462,"children":1464},{"className":1463},[],[1465],{"type":59,"value":1466},"Release",{"type":59,"value":1468}," at build time (recommended):",{"type":45,"tag":178,"props":1470,"children":1472},{"className":1246,"code":1471,"language":23,"meta":183,"style":183},"var release string \u002F\u002F set by -ldflags\n\n\u002F\u002F go build -ldflags=\"-X main.release=my-app@$(git describe --tags)\"\n",[1473],{"type":45,"tag":110,"props":1474,"children":1475},{"__ignoreMap":183},[1476,1484,1491],{"type":45,"tag":189,"props":1477,"children":1478},{"class":191,"line":192},[1479],{"type":45,"tag":189,"props":1480,"children":1481},{},[1482],{"type":59,"value":1483},"var release string \u002F\u002F set by -ldflags\n",{"type":45,"tag":189,"props":1485,"children":1486},{"class":191,"line":202},[1487],{"type":45,"tag":189,"props":1488,"children":1489},{"emptyLinePlaceholder":40},[1490],{"type":59,"value":245},{"type":45,"tag":189,"props":1492,"children":1493},{"class":191,"line":239},[1494],{"type":45,"tag":189,"props":1495,"children":1496},{},[1497],{"type":59,"value":1498},"\u002F\u002F go build -ldflags=\"-X main.release=my-app@$(git describe --tags)\"\n",{"type":45,"tag":905,"props":1500,"children":1502},{"id":1501},"framework-middleware",[1503],{"type":59,"value":1504},"Framework Middleware",{"type":45,"tag":50,"props":1506,"children":1507},{},[1508,1510,1516],{"type":59,"value":1509},"After ",{"type":45,"tag":110,"props":1511,"children":1513},{"className":1512},[],[1514],{"type":59,"value":1515},"sentry.Init",{"type":59,"value":1517},", register the Sentry middleware for your framework:",{"type":45,"tag":735,"props":1519,"children":1520},{},[1521,1560],{"type":45,"tag":739,"props":1522,"children":1523},{},[1524],{"type":45,"tag":743,"props":1525,"children":1526},{},[1527,1532,1537,1542,1551],{"type":45,"tag":747,"props":1528,"children":1529},{},[1530],{"type":59,"value":1531},"Framework",{"type":45,"tag":747,"props":1533,"children":1534},{},[1535],{"type":59,"value":1536},"Import path",{"type":45,"tag":747,"props":1538,"children":1539},{},[1540],{"type":59,"value":1541},"Middleware call",{"type":45,"tag":747,"props":1543,"children":1544},{},[1545],{"type":45,"tag":110,"props":1546,"children":1548},{"className":1547},[],[1549],{"type":59,"value":1550},"Repanic",{"type":45,"tag":747,"props":1552,"children":1553},{},[1554],{"type":45,"tag":110,"props":1555,"children":1557},{"className":1556},[],[1558],{"type":59,"value":1559},"WaitForDelivery",{"type":45,"tag":758,"props":1561,"children":1562},{},[1563,1610,1652,1694,1736,1778,1820],{"type":45,"tag":743,"props":1564,"children":1565},{},[1566,1574,1583,1592,1601],{"type":45,"tag":765,"props":1567,"children":1568},{},[1569],{"type":45,"tag":110,"props":1570,"children":1572},{"className":1571},[],[1573],{"type":59,"value":794},{"type":45,"tag":765,"props":1575,"children":1576},{},[1577],{"type":45,"tag":110,"props":1578,"children":1580},{"className":1579},[],[1581],{"type":59,"value":1582},"...\u002Fsentry-go\u002Fhttp",{"type":45,"tag":765,"props":1584,"children":1585},{},[1586],{"type":45,"tag":110,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":59,"value":1591},"sentryhttp.New(opts).Handle(h)",{"type":45,"tag":765,"props":1593,"children":1594},{},[1595],{"type":45,"tag":110,"props":1596,"children":1598},{"className":1597},[],[1599],{"type":59,"value":1600},"true",{"type":45,"tag":765,"props":1602,"children":1603},{},[1604],{"type":45,"tag":110,"props":1605,"children":1607},{"className":1606},[],[1608],{"type":59,"value":1609},"false",{"type":45,"tag":743,"props":1611,"children":1612},{},[1613,1618,1627,1636,1644],{"type":45,"tag":765,"props":1614,"children":1615},{},[1616],{"type":59,"value":1617},"Gin",{"type":45,"tag":765,"props":1619,"children":1620},{},[1621],{"type":45,"tag":110,"props":1622,"children":1624},{"className":1623},[],[1625],{"type":59,"value":1626},"...\u002Fsentry-go\u002Fgin",{"type":45,"tag":765,"props":1628,"children":1629},{},[1630],{"type":45,"tag":110,"props":1631,"children":1633},{"className":1632},[],[1634],{"type":59,"value":1635},"router.Use(sentrygin.New(opts))",{"type":45,"tag":765,"props":1637,"children":1638},{},[1639],{"type":45,"tag":110,"props":1640,"children":1642},{"className":1641},[],[1643],{"type":59,"value":1600},{"type":45,"tag":765,"props":1645,"children":1646},{},[1647],{"type":45,"tag":110,"props":1648,"children":1650},{"className":1649},[],[1651],{"type":59,"value":1609},{"type":45,"tag":743,"props":1653,"children":1654},{},[1655,1660,1669,1678,1686],{"type":45,"tag":765,"props":1656,"children":1657},{},[1658],{"type":59,"value":1659},"Echo",{"type":45,"tag":765,"props":1661,"children":1662},{},[1663],{"type":45,"tag":110,"props":1664,"children":1666},{"className":1665},[],[1667],{"type":59,"value":1668},"...\u002Fsentry-go\u002Fecho",{"type":45,"tag":765,"props":1670,"children":1671},{},[1672],{"type":45,"tag":110,"props":1673,"children":1675},{"className":1674},[],[1676],{"type":59,"value":1677},"e.Use(sentryecho.New(opts))",{"type":45,"tag":765,"props":1679,"children":1680},{},[1681],{"type":45,"tag":110,"props":1682,"children":1684},{"className":1683},[],[1685],{"type":59,"value":1600},{"type":45,"tag":765,"props":1687,"children":1688},{},[1689],{"type":45,"tag":110,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":59,"value":1609},{"type":45,"tag":743,"props":1695,"children":1696},{},[1697,1702,1711,1720,1728],{"type":45,"tag":765,"props":1698,"children":1699},{},[1700],{"type":59,"value":1701},"Fiber",{"type":45,"tag":765,"props":1703,"children":1704},{},[1705],{"type":45,"tag":110,"props":1706,"children":1708},{"className":1707},[],[1709],{"type":59,"value":1710},"...\u002Fsentry-go\u002Ffiber",{"type":45,"tag":765,"props":1712,"children":1713},{},[1714],{"type":45,"tag":110,"props":1715,"children":1717},{"className":1716},[],[1718],{"type":59,"value":1719},"app.Use(sentryfiber.New(opts))",{"type":45,"tag":765,"props":1721,"children":1722},{},[1723],{"type":45,"tag":110,"props":1724,"children":1726},{"className":1725},[],[1727],{"type":59,"value":1609},{"type":45,"tag":765,"props":1729,"children":1730},{},[1731],{"type":45,"tag":110,"props":1732,"children":1734},{"className":1733},[],[1735],{"type":59,"value":1600},{"type":45,"tag":743,"props":1737,"children":1738},{},[1739,1744,1753,1762,1770],{"type":45,"tag":765,"props":1740,"children":1741},{},[1742],{"type":59,"value":1743},"FastHTTP",{"type":45,"tag":765,"props":1745,"children":1746},{},[1747],{"type":45,"tag":110,"props":1748,"children":1750},{"className":1749},[],[1751],{"type":59,"value":1752},"...\u002Fsentry-go\u002Ffasthttp",{"type":45,"tag":765,"props":1754,"children":1755},{},[1756],{"type":45,"tag":110,"props":1757,"children":1759},{"className":1758},[],[1760],{"type":59,"value":1761},"sentryfasthttp.New(opts).Handle(h)",{"type":45,"tag":765,"props":1763,"children":1764},{},[1765],{"type":45,"tag":110,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":59,"value":1609},{"type":45,"tag":765,"props":1771,"children":1772},{},[1773],{"type":45,"tag":110,"props":1774,"children":1776},{"className":1775},[],[1777],{"type":59,"value":1600},{"type":45,"tag":743,"props":1779,"children":1780},{},[1781,1786,1795,1804,1812],{"type":45,"tag":765,"props":1782,"children":1783},{},[1784],{"type":59,"value":1785},"Iris",{"type":45,"tag":765,"props":1787,"children":1788},{},[1789],{"type":45,"tag":110,"props":1790,"children":1792},{"className":1791},[],[1793],{"type":59,"value":1794},"...\u002Fsentry-go\u002Firis",{"type":45,"tag":765,"props":1796,"children":1797},{},[1798],{"type":45,"tag":110,"props":1799,"children":1801},{"className":1800},[],[1802],{"type":59,"value":1803},"app.Use(sentryiris.New(opts))",{"type":45,"tag":765,"props":1805,"children":1806},{},[1807],{"type":45,"tag":110,"props":1808,"children":1810},{"className":1809},[],[1811],{"type":59,"value":1600},{"type":45,"tag":765,"props":1813,"children":1814},{},[1815],{"type":45,"tag":110,"props":1816,"children":1818},{"className":1817},[],[1819],{"type":59,"value":1609},{"type":45,"tag":743,"props":1821,"children":1822},{},[1823,1828,1837,1846,1854],{"type":45,"tag":765,"props":1824,"children":1825},{},[1826],{"type":59,"value":1827},"Negroni",{"type":45,"tag":765,"props":1829,"children":1830},{},[1831],{"type":45,"tag":110,"props":1832,"children":1834},{"className":1833},[],[1835],{"type":59,"value":1836},"...\u002Fsentry-go\u002Fnegroni",{"type":45,"tag":765,"props":1838,"children":1839},{},[1840],{"type":45,"tag":110,"props":1841,"children":1843},{"className":1842},[],[1844],{"type":59,"value":1845},"n.Use(sentrynegroni.New(opts))",{"type":45,"tag":765,"props":1847,"children":1848},{},[1849],{"type":45,"tag":110,"props":1850,"children":1852},{"className":1851},[],[1853],{"type":59,"value":1600},{"type":45,"tag":765,"props":1855,"children":1856},{},[1857],{"type":45,"tag":110,"props":1858,"children":1860},{"className":1859},[],[1861],{"type":59,"value":1609},{"type":45,"tag":46,"props":1863,"children":1864},{},[1865],{"type":45,"tag":50,"props":1866,"children":1867},{},[1868,1872,1874,1880,1882,1888],{"type":45,"tag":138,"props":1869,"children":1870},{},[1871],{"type":59,"value":142},{"type":59,"value":1873}," Fiber and FastHTTP are built on ",{"type":45,"tag":110,"props":1875,"children":1877},{"className":1876},[],[1878],{"type":59,"value":1879},"valyala\u002Ffasthttp",{"type":59,"value":1881}," which has no built-in recovery. Use ",{"type":45,"tag":110,"props":1883,"children":1885},{"className":1884},[],[1886],{"type":59,"value":1887},"Repanic: false, WaitForDelivery: true",{"type":59,"value":1889}," for those.",{"type":45,"tag":50,"props":1891,"children":1892},{},[1893],{"type":45,"tag":138,"props":1894,"children":1895},{},[1896],{"type":59,"value":1897},"Hub access in handlers:",{"type":45,"tag":178,"props":1899,"children":1901},{"className":1246,"code":1900,"language":23,"meta":183,"style":183},"\u002F\u002F net\u002Fhttp, Negroni:\nhub := sentry.GetHubFromContext(r.Context())\n\n\u002F\u002F Gin:\nhub := sentrygin.GetHubFromContext(c)\n\n\u002F\u002F Echo:\nhub := sentryecho.GetHubFromContext(c)\n\n\u002F\u002F Fiber:\nhub := sentryfiber.GetHubFromContext(c)\n",[1902],{"type":45,"tag":110,"props":1903,"children":1904},{"__ignoreMap":183},[1905,1913,1921,1928,1936,1944,1951,1959,1967,1974,1982],{"type":45,"tag":189,"props":1906,"children":1907},{"class":191,"line":192},[1908],{"type":45,"tag":189,"props":1909,"children":1910},{},[1911],{"type":59,"value":1912},"\u002F\u002F net\u002Fhttp, Negroni:\n",{"type":45,"tag":189,"props":1914,"children":1915},{"class":191,"line":202},[1916],{"type":45,"tag":189,"props":1917,"children":1918},{},[1919],{"type":59,"value":1920},"hub := sentry.GetHubFromContext(r.Context())\n",{"type":45,"tag":189,"props":1922,"children":1923},{"class":191,"line":239},[1924],{"type":45,"tag":189,"props":1925,"children":1926},{"emptyLinePlaceholder":40},[1927],{"type":59,"value":245},{"type":45,"tag":189,"props":1929,"children":1930},{"class":191,"line":248},[1931],{"type":45,"tag":189,"props":1932,"children":1933},{},[1934],{"type":59,"value":1935},"\u002F\u002F Gin:\n",{"type":45,"tag":189,"props":1937,"children":1938},{"class":191,"line":257},[1939],{"type":45,"tag":189,"props":1940,"children":1941},{},[1942],{"type":59,"value":1943},"hub := sentrygin.GetHubFromContext(c)\n",{"type":45,"tag":189,"props":1945,"children":1946},{"class":191,"line":297},[1947],{"type":45,"tag":189,"props":1948,"children":1949},{"emptyLinePlaceholder":40},[1950],{"type":59,"value":245},{"type":45,"tag":189,"props":1952,"children":1953},{"class":191,"line":305},[1954],{"type":45,"tag":189,"props":1955,"children":1956},{},[1957],{"type":59,"value":1958},"\u002F\u002F Echo:\n",{"type":45,"tag":189,"props":1960,"children":1961},{"class":191,"line":314},[1962],{"type":45,"tag":189,"props":1963,"children":1964},{},[1965],{"type":59,"value":1966},"hub := sentryecho.GetHubFromContext(c)\n",{"type":45,"tag":189,"props":1968,"children":1969},{"class":191,"line":347},[1970],{"type":45,"tag":189,"props":1971,"children":1972},{"emptyLinePlaceholder":40},[1973],{"type":59,"value":245},{"type":45,"tag":189,"props":1975,"children":1976},{"class":191,"line":355},[1977],{"type":45,"tag":189,"props":1978,"children":1979},{},[1980],{"type":59,"value":1981},"\u002F\u002F Fiber:\n",{"type":45,"tag":189,"props":1983,"children":1984},{"class":191,"line":364},[1985],{"type":45,"tag":189,"props":1986,"children":1987},{},[1988],{"type":59,"value":1989},"hub := sentryfiber.GetHubFromContext(c)\n",{"type":45,"tag":905,"props":1991,"children":1993},{"id":1992},"grpc-integration",[1994],{"type":59,"value":1995},"gRPC Integration",{"type":45,"tag":50,"props":1997,"children":1998},{},[1999,2001,2007],{"type":59,"value":2000},"For gRPC servers and clients, use the ",{"type":45,"tag":110,"props":2002,"children":2004},{"className":2003},[],[2005],{"type":59,"value":2006},"sentrygrpc",{"type":59,"value":2008}," interceptors instead:",{"type":45,"tag":178,"props":2010,"children":2012},{"className":1246,"code":2011,"language":23,"meta":183,"style":183},"import sentrygrpc \"github.com\u002Fgetsentry\u002Fsentry-go\u002Fgrpc\"\n\n\u002F\u002F Server: register interceptors when creating the gRPC server\nserver := grpc.NewServer(\n    grpc.UnaryInterceptor(sentrygrpc.UnaryServerInterceptor()),\n    grpc.StreamInterceptor(sentrygrpc.StreamServerInterceptor()),\n)\n\n\u002F\u002F Client: register interceptors when dialing\nconn, err := grpc.NewClient(\n    address,\n    grpc.WithUnaryInterceptor(sentrygrpc.UnaryClientInterceptor()),\n    grpc.WithStreamInterceptor(sentrygrpc.StreamClientInterceptor()),\n)\n\n\u002F\u002F Hub access inside a gRPC handler:\nhub := sentry.GetHubFromContext(ctx)\n",[2013],{"type":45,"tag":110,"props":2014,"children":2015},{"__ignoreMap":183},[2016,2024,2031,2039,2047,2055,2063,2070,2077,2085,2093,2101,2109,2117,2124,2131,2139],{"type":45,"tag":189,"props":2017,"children":2018},{"class":191,"line":192},[2019],{"type":45,"tag":189,"props":2020,"children":2021},{},[2022],{"type":59,"value":2023},"import sentrygrpc \"github.com\u002Fgetsentry\u002Fsentry-go\u002Fgrpc\"\n",{"type":45,"tag":189,"props":2025,"children":2026},{"class":191,"line":202},[2027],{"type":45,"tag":189,"props":2028,"children":2029},{"emptyLinePlaceholder":40},[2030],{"type":59,"value":245},{"type":45,"tag":189,"props":2032,"children":2033},{"class":191,"line":239},[2034],{"type":45,"tag":189,"props":2035,"children":2036},{},[2037],{"type":59,"value":2038},"\u002F\u002F Server: register interceptors when creating the gRPC server\n",{"type":45,"tag":189,"props":2040,"children":2041},{"class":191,"line":248},[2042],{"type":45,"tag":189,"props":2043,"children":2044},{},[2045],{"type":59,"value":2046},"server := grpc.NewServer(\n",{"type":45,"tag":189,"props":2048,"children":2049},{"class":191,"line":257},[2050],{"type":45,"tag":189,"props":2051,"children":2052},{},[2053],{"type":59,"value":2054},"    grpc.UnaryInterceptor(sentrygrpc.UnaryServerInterceptor()),\n",{"type":45,"tag":189,"props":2056,"children":2057},{"class":191,"line":297},[2058],{"type":45,"tag":189,"props":2059,"children":2060},{},[2061],{"type":59,"value":2062},"    grpc.StreamInterceptor(sentrygrpc.StreamServerInterceptor()),\n",{"type":45,"tag":189,"props":2064,"children":2065},{"class":191,"line":305},[2066],{"type":45,"tag":189,"props":2067,"children":2068},{},[2069],{"type":59,"value":1299},{"type":45,"tag":189,"props":2071,"children":2072},{"class":191,"line":314},[2073],{"type":45,"tag":189,"props":2074,"children":2075},{"emptyLinePlaceholder":40},[2076],{"type":59,"value":245},{"type":45,"tag":189,"props":2078,"children":2079},{"class":191,"line":347},[2080],{"type":45,"tag":189,"props":2081,"children":2082},{},[2083],{"type":59,"value":2084},"\u002F\u002F Client: register interceptors when dialing\n",{"type":45,"tag":189,"props":2086,"children":2087},{"class":191,"line":355},[2088],{"type":45,"tag":189,"props":2089,"children":2090},{},[2091],{"type":59,"value":2092},"conn, err := grpc.NewClient(\n",{"type":45,"tag":189,"props":2094,"children":2095},{"class":191,"line":364},[2096],{"type":45,"tag":189,"props":2097,"children":2098},{},[2099],{"type":59,"value":2100},"    address,\n",{"type":45,"tag":189,"props":2102,"children":2103},{"class":191,"line":406},[2104],{"type":45,"tag":189,"props":2105,"children":2106},{},[2107],{"type":59,"value":2108},"    grpc.WithUnaryInterceptor(sentrygrpc.UnaryClientInterceptor()),\n",{"type":45,"tag":189,"props":2110,"children":2111},{"class":191,"line":414},[2112],{"type":45,"tag":189,"props":2113,"children":2114},{},[2115],{"type":59,"value":2116},"    grpc.WithStreamInterceptor(sentrygrpc.StreamClientInterceptor()),\n",{"type":45,"tag":189,"props":2118,"children":2119},{"class":191,"line":423},[2120],{"type":45,"tag":189,"props":2121,"children":2122},{},[2123],{"type":59,"value":1299},{"type":45,"tag":189,"props":2125,"children":2126},{"class":191,"line":460},[2127],{"type":45,"tag":189,"props":2128,"children":2129},{"emptyLinePlaceholder":40},[2130],{"type":59,"value":245},{"type":45,"tag":189,"props":2132,"children":2133},{"class":191,"line":468},[2134],{"type":45,"tag":189,"props":2135,"children":2136},{},[2137],{"type":59,"value":2138},"\u002F\u002F Hub access inside a gRPC handler:\n",{"type":45,"tag":189,"props":2140,"children":2141},{"class":191,"line":477},[2142],{"type":45,"tag":189,"props":2143,"children":2144},{},[2145],{"type":59,"value":2146},"hub := sentry.GetHubFromContext(ctx)\n",{"type":45,"tag":905,"props":2148,"children":2150},{"id":2149},"for-each-agreed-feature",[2151],{"type":59,"value":2152},"For Each Agreed Feature",{"type":45,"tag":50,"props":2154,"children":2155},{},[2156],{"type":59,"value":2157},"Walk through features one at a time. Load the reference file for each, follow its steps, and verify before moving to the next:",{"type":45,"tag":735,"props":2159,"children":2160},{},[2161,2181],{"type":45,"tag":739,"props":2162,"children":2163},{},[2164],{"type":45,"tag":743,"props":2165,"children":2166},{},[2167,2171,2176],{"type":45,"tag":747,"props":2168,"children":2169},{},[2170],{"type":59,"value":751},{"type":45,"tag":747,"props":2172,"children":2173},{},[2174],{"type":59,"value":2175},"Reference file",{"type":45,"tag":747,"props":2177,"children":2178},{},[2179],{"type":59,"value":2180},"Load when...",{"type":45,"tag":758,"props":2182,"children":2183},{},[2184,2205,2226,2247,2268,2289],{"type":45,"tag":743,"props":2185,"children":2186},{},[2187,2191,2200],{"type":45,"tag":765,"props":2188,"children":2189},{},[2190],{"type":59,"value":647},{"type":45,"tag":765,"props":2192,"children":2193},{},[2194],{"type":45,"tag":110,"props":2195,"children":2197},{"className":2196},[],[2198],{"type":59,"value":2199},"${SKILL_ROOT}\u002Freferences\u002Ferror-monitoring.md",{"type":45,"tag":765,"props":2201,"children":2202},{},[2203],{"type":59,"value":2204},"Always (baseline)",{"type":45,"tag":743,"props":2206,"children":2207},{},[2208,2212,2221],{"type":45,"tag":765,"props":2209,"children":2210},{},[2211],{"type":59,"value":658},{"type":45,"tag":765,"props":2213,"children":2214},{},[2215],{"type":45,"tag":110,"props":2216,"children":2218},{"className":2217},[],[2219],{"type":59,"value":2220},"${SKILL_ROOT}\u002Freferences\u002Ftracing.md",{"type":45,"tag":765,"props":2222,"children":2223},{},[2224],{"type":59,"value":2225},"HTTP handlers \u002F distributed tracing",{"type":45,"tag":743,"props":2227,"children":2228},{},[2229,2233,2242],{"type":45,"tag":765,"props":2230,"children":2231},{},[2232],{"type":59,"value":715},{"type":45,"tag":765,"props":2234,"children":2235},{},[2236],{"type":45,"tag":110,"props":2237,"children":2239},{"className":2238},[],[2240],{"type":59,"value":2241},"${SKILL_ROOT}\u002Freferences\u002Fprofiling.md",{"type":45,"tag":765,"props":2243,"children":2244},{},[2245],{"type":59,"value":2246},"Performance-sensitive production apps",{"type":45,"tag":743,"props":2248,"children":2249},{},[2250,2254,2263],{"type":45,"tag":765,"props":2251,"children":2252},{},[2253],{"type":59,"value":669},{"type":45,"tag":765,"props":2255,"children":2256},{},[2257],{"type":45,"tag":110,"props":2258,"children":2260},{"className":2259},[],[2261],{"type":59,"value":2262},"${SKILL_ROOT}\u002Freferences\u002Flogging.md",{"type":45,"tag":765,"props":2264,"children":2265},{},[2266],{"type":59,"value":2267},"logrus \u002F zap \u002F zerolog \u002F slog detected",{"type":45,"tag":743,"props":2269,"children":2270},{},[2271,2275,2284],{"type":45,"tag":765,"props":2272,"children":2273},{},[2274],{"type":59,"value":692},{"type":45,"tag":765,"props":2276,"children":2277},{},[2278],{"type":45,"tag":110,"props":2279,"children":2281},{"className":2280},[],[2282],{"type":59,"value":2283},"${SKILL_ROOT}\u002Freferences\u002Fmetrics.md",{"type":45,"tag":765,"props":2285,"children":2286},{},[2287],{"type":59,"value":2288},"Business KPIs \u002F SLO tracking",{"type":45,"tag":743,"props":2290,"children":2291},{},[2292,2296,2305],{"type":45,"tag":765,"props":2293,"children":2294},{},[2295],{"type":59,"value":703},{"type":45,"tag":765,"props":2297,"children":2298},{},[2299],{"type":45,"tag":110,"props":2300,"children":2302},{"className":2301},[],[2303],{"type":59,"value":2304},"${SKILL_ROOT}\u002Freferences\u002Fcrons.md",{"type":45,"tag":765,"props":2306,"children":2307},{},[2308],{"type":59,"value":2309},"Scheduler \u002F cron job patterns detected",{"type":45,"tag":50,"props":2311,"children":2312},{},[2313,2315,2321],{"type":59,"value":2314},"For each feature: ",{"type":45,"tag":110,"props":2316,"children":2318},{"className":2317},[],[2319],{"type":59,"value":2320},"Read ${SKILL_ROOT}\u002Freferences\u002F\u003Cfeature>.md",{"type":59,"value":2322},", follow steps exactly, verify it works.",{"type":45,"tag":163,"props":2324,"children":2325},{},[],{"type":45,"tag":83,"props":2327,"children":2329},{"id":2328},"configuration-reference",[2330],{"type":59,"value":2331},"Configuration Reference",{"type":45,"tag":905,"props":2333,"children":2335},{"id":2334},"key-clientoptions-fields",[2336,2338,2344],{"type":59,"value":2337},"Key ",{"type":45,"tag":110,"props":2339,"children":2341},{"className":2340},[],[2342],{"type":59,"value":2343},"ClientOptions",{"type":59,"value":2345}," Fields",{"type":45,"tag":735,"props":2347,"children":2348},{},[2349,2375],{"type":45,"tag":739,"props":2350,"children":2351},{},[2352],{"type":45,"tag":743,"props":2353,"children":2354},{},[2355,2360,2365,2370],{"type":45,"tag":747,"props":2356,"children":2357},{},[2358],{"type":59,"value":2359},"Option",{"type":45,"tag":747,"props":2361,"children":2362},{},[2363],{"type":59,"value":2364},"Type",{"type":45,"tag":747,"props":2366,"children":2367},{},[2368],{"type":59,"value":2369},"Default",{"type":45,"tag":747,"props":2371,"children":2372},{},[2373],{"type":59,"value":2374},"Purpose",{"type":45,"tag":758,"props":2376,"children":2377},{},[2378,2419,2466,2510,2544,2585,2620,2653,2687,2721,2754,2789,2822,2855,2889,2922,2956],{"type":45,"tag":743,"props":2379,"children":2380},{},[2381,2390,2399,2408],{"type":45,"tag":765,"props":2382,"children":2383},{},[2384],{"type":45,"tag":110,"props":2385,"children":2387},{"className":2386},[],[2388],{"type":59,"value":2389},"Dsn",{"type":45,"tag":765,"props":2391,"children":2392},{},[2393],{"type":45,"tag":110,"props":2394,"children":2396},{"className":2395},[],[2397],{"type":59,"value":2398},"string",{"type":45,"tag":765,"props":2400,"children":2401},{},[2402],{"type":45,"tag":110,"props":2403,"children":2405},{"className":2404},[],[2406],{"type":59,"value":2407},"\"\"",{"type":45,"tag":765,"props":2409,"children":2410},{},[2411,2413],{"type":59,"value":2412},"SDK disabled if empty; env: ",{"type":45,"tag":110,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":59,"value":2418},"SENTRY_DSN",{"type":45,"tag":743,"props":2420,"children":2421},{},[2422,2431,2439,2447],{"type":45,"tag":765,"props":2423,"children":2424},{},[2425],{"type":45,"tag":110,"props":2426,"children":2428},{"className":2427},[],[2429],{"type":59,"value":2430},"Environment",{"type":45,"tag":765,"props":2432,"children":2433},{},[2434],{"type":45,"tag":110,"props":2435,"children":2437},{"className":2436},[],[2438],{"type":59,"value":2398},{"type":45,"tag":765,"props":2440,"children":2441},{},[2442],{"type":45,"tag":110,"props":2443,"children":2445},{"className":2444},[],[2446],{"type":59,"value":2407},{"type":45,"tag":765,"props":2448,"children":2449},{},[2450,2452,2458,2460],{"type":59,"value":2451},"e.g., ",{"type":45,"tag":110,"props":2453,"children":2455},{"className":2454},[],[2456],{"type":59,"value":2457},"\"production\"",{"type":59,"value":2459},"; env: ",{"type":45,"tag":110,"props":2461,"children":2463},{"className":2462},[],[2464],{"type":59,"value":2465},"SENTRY_ENVIRONMENT",{"type":45,"tag":743,"props":2467,"children":2468},{},[2469,2477,2485,2493],{"type":45,"tag":765,"props":2470,"children":2471},{},[2472],{"type":45,"tag":110,"props":2473,"children":2475},{"className":2474},[],[2476],{"type":59,"value":1466},{"type":45,"tag":765,"props":2478,"children":2479},{},[2480],{"type":45,"tag":110,"props":2481,"children":2483},{"className":2482},[],[2484],{"type":59,"value":2398},{"type":45,"tag":765,"props":2486,"children":2487},{},[2488],{"type":45,"tag":110,"props":2489,"children":2491},{"className":2490},[],[2492],{"type":59,"value":2407},{"type":45,"tag":765,"props":2494,"children":2495},{},[2496,2497,2503,2504],{"type":59,"value":2451},{"type":45,"tag":110,"props":2498,"children":2500},{"className":2499},[],[2501],{"type":59,"value":2502},"\"my-app@1.0.0\"",{"type":59,"value":2459},{"type":45,"tag":110,"props":2505,"children":2507},{"className":2506},[],[2508],{"type":59,"value":2509},"SENTRY_RELEASE",{"type":45,"tag":743,"props":2511,"children":2512},{},[2513,2522,2531,2539],{"type":45,"tag":765,"props":2514,"children":2515},{},[2516],{"type":45,"tag":110,"props":2517,"children":2519},{"className":2518},[],[2520],{"type":59,"value":2521},"SendDefaultPII",{"type":45,"tag":765,"props":2523,"children":2524},{},[2525],{"type":45,"tag":110,"props":2526,"children":2528},{"className":2527},[],[2529],{"type":59,"value":2530},"bool",{"type":45,"tag":765,"props":2532,"children":2533},{},[2534],{"type":45,"tag":110,"props":2535,"children":2537},{"className":2536},[],[2538],{"type":59,"value":1609},{"type":45,"tag":765,"props":2540,"children":2541},{},[2542],{"type":59,"value":2543},"Include IP, request headers",{"type":45,"tag":743,"props":2545,"children":2546},{},[2547,2556,2564,2572],{"type":45,"tag":765,"props":2548,"children":2549},{},[2550],{"type":45,"tag":110,"props":2551,"children":2553},{"className":2552},[],[2554],{"type":59,"value":2555},"AttachStacktrace",{"type":45,"tag":765,"props":2557,"children":2558},{},[2559],{"type":45,"tag":110,"props":2560,"children":2562},{"className":2561},[],[2563],{"type":59,"value":2530},{"type":45,"tag":765,"props":2565,"children":2566},{},[2567],{"type":45,"tag":110,"props":2568,"children":2570},{"className":2569},[],[2571],{"type":59,"value":1609},{"type":45,"tag":765,"props":2573,"children":2574},{},[2575,2577,2583],{"type":59,"value":2576},"Stack traces on ",{"type":45,"tag":110,"props":2578,"children":2580},{"className":2579},[],[2581],{"type":59,"value":2582},"CaptureMessage",{"type":59,"value":2584}," calls",{"type":45,"tag":743,"props":2586,"children":2587},{},[2588,2597,2606,2615],{"type":45,"tag":765,"props":2589,"children":2590},{},[2591],{"type":45,"tag":110,"props":2592,"children":2594},{"className":2593},[],[2595],{"type":59,"value":2596},"SampleRate",{"type":45,"tag":765,"props":2598,"children":2599},{},[2600],{"type":45,"tag":110,"props":2601,"children":2603},{"className":2602},[],[2604],{"type":59,"value":2605},"float64",{"type":45,"tag":765,"props":2607,"children":2608},{},[2609],{"type":45,"tag":110,"props":2610,"children":2612},{"className":2611},[],[2613],{"type":59,"value":2614},"1.0",{"type":45,"tag":765,"props":2616,"children":2617},{},[2618],{"type":59,"value":2619},"Error event sample rate (0.0 treated as 1.0)",{"type":45,"tag":743,"props":2621,"children":2622},{},[2623,2632,2640,2648],{"type":45,"tag":765,"props":2624,"children":2625},{},[2626],{"type":45,"tag":110,"props":2627,"children":2629},{"className":2628},[],[2630],{"type":59,"value":2631},"EnableTracing",{"type":45,"tag":765,"props":2633,"children":2634},{},[2635],{"type":45,"tag":110,"props":2636,"children":2638},{"className":2637},[],[2639],{"type":59,"value":2530},{"type":45,"tag":765,"props":2641,"children":2642},{},[2643],{"type":45,"tag":110,"props":2644,"children":2646},{"className":2645},[],[2647],{"type":59,"value":1609},{"type":45,"tag":765,"props":2649,"children":2650},{},[2651],{"type":59,"value":2652},"Enable performance tracing",{"type":45,"tag":743,"props":2654,"children":2655},{},[2656,2665,2673,2682],{"type":45,"tag":765,"props":2657,"children":2658},{},[2659],{"type":45,"tag":110,"props":2660,"children":2662},{"className":2661},[],[2663],{"type":59,"value":2664},"TracesSampleRate",{"type":45,"tag":765,"props":2666,"children":2667},{},[2668],{"type":45,"tag":110,"props":2669,"children":2671},{"className":2670},[],[2672],{"type":59,"value":2605},{"type":45,"tag":765,"props":2674,"children":2675},{},[2676],{"type":45,"tag":110,"props":2677,"children":2679},{"className":2678},[],[2680],{"type":59,"value":2681},"0.0",{"type":45,"tag":765,"props":2683,"children":2684},{},[2685],{"type":59,"value":2686},"Transaction sample rate",{"type":45,"tag":743,"props":2688,"children":2689},{},[2690,2699,2707,2716],{"type":45,"tag":765,"props":2691,"children":2692},{},[2693],{"type":45,"tag":110,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":59,"value":2698},"TracesSampler",{"type":45,"tag":765,"props":2700,"children":2701},{},[2702],{"type":45,"tag":110,"props":2703,"children":2705},{"className":2704},[],[2706],{"type":59,"value":2698},{"type":45,"tag":765,"props":2708,"children":2709},{},[2710],{"type":45,"tag":110,"props":2711,"children":2713},{"className":2712},[],[2714],{"type":59,"value":2715},"nil",{"type":45,"tag":765,"props":2717,"children":2718},{},[2719],{"type":59,"value":2720},"Custom per-transaction sampling (overrides rate)",{"type":45,"tag":743,"props":2722,"children":2723},{},[2724,2733,2741,2749],{"type":45,"tag":765,"props":2725,"children":2726},{},[2727],{"type":45,"tag":110,"props":2728,"children":2730},{"className":2729},[],[2731],{"type":59,"value":2732},"EnableLogs",{"type":45,"tag":765,"props":2734,"children":2735},{},[2736],{"type":45,"tag":110,"props":2737,"children":2739},{"className":2738},[],[2740],{"type":59,"value":2530},{"type":45,"tag":765,"props":2742,"children":2743},{},[2744],{"type":45,"tag":110,"props":2745,"children":2747},{"className":2746},[],[2748],{"type":59,"value":1609},{"type":45,"tag":765,"props":2750,"children":2751},{},[2752],{"type":59,"value":2753},"Enable Sentry Logs feature",{"type":45,"tag":743,"props":2755,"children":2756},{},[2757,2766,2775,2784],{"type":45,"tag":765,"props":2758,"children":2759},{},[2760],{"type":45,"tag":110,"props":2761,"children":2763},{"className":2762},[],[2764],{"type":59,"value":2765},"MaxBreadcrumbs",{"type":45,"tag":765,"props":2767,"children":2768},{},[2769],{"type":45,"tag":110,"props":2770,"children":2772},{"className":2771},[],[2773],{"type":59,"value":2774},"int",{"type":45,"tag":765,"props":2776,"children":2777},{},[2778],{"type":45,"tag":110,"props":2779,"children":2781},{"className":2780},[],[2782],{"type":59,"value":2783},"100",{"type":45,"tag":765,"props":2785,"children":2786},{},[2787],{"type":59,"value":2788},"Max breadcrumbs per event",{"type":45,"tag":743,"props":2790,"children":2791},{},[2792,2801,2809,2817],{"type":45,"tag":765,"props":2793,"children":2794},{},[2795],{"type":45,"tag":110,"props":2796,"children":2798},{"className":2797},[],[2799],{"type":59,"value":2800},"MaxErrorDepth",{"type":45,"tag":765,"props":2802,"children":2803},{},[2804],{"type":45,"tag":110,"props":2805,"children":2807},{"className":2806},[],[2808],{"type":59,"value":2774},{"type":45,"tag":765,"props":2810,"children":2811},{},[2812],{"type":45,"tag":110,"props":2813,"children":2815},{"className":2814},[],[2816],{"type":59,"value":2783},{"type":45,"tag":765,"props":2818,"children":2819},{},[2820],{"type":59,"value":2821},"Max depth for unwrapping error chains",{"type":45,"tag":743,"props":2823,"children":2824},{},[2825,2834,2842,2850],{"type":45,"tag":765,"props":2826,"children":2827},{},[2828],{"type":45,"tag":110,"props":2829,"children":2831},{"className":2830},[],[2832],{"type":59,"value":2833},"Debug",{"type":45,"tag":765,"props":2835,"children":2836},{},[2837],{"type":45,"tag":110,"props":2838,"children":2840},{"className":2839},[],[2841],{"type":59,"value":2530},{"type":45,"tag":765,"props":2843,"children":2844},{},[2845],{"type":45,"tag":110,"props":2846,"children":2848},{"className":2847},[],[2849],{"type":59,"value":1609},{"type":45,"tag":765,"props":2851,"children":2852},{},[2853],{"type":59,"value":2854},"Verbose SDK debug output",{"type":45,"tag":743,"props":2856,"children":2857},{},[2858,2867,2876,2884],{"type":45,"tag":765,"props":2859,"children":2860},{},[2861],{"type":45,"tag":110,"props":2862,"children":2864},{"className":2863},[],[2865],{"type":59,"value":2866},"BeforeSend",{"type":45,"tag":765,"props":2868,"children":2869},{},[2870],{"type":45,"tag":110,"props":2871,"children":2873},{"className":2872},[],[2874],{"type":59,"value":2875},"func",{"type":45,"tag":765,"props":2877,"children":2878},{},[2879],{"type":45,"tag":110,"props":2880,"children":2882},{"className":2881},[],[2883],{"type":59,"value":2715},{"type":45,"tag":765,"props":2885,"children":2886},{},[2887],{"type":59,"value":2888},"Hook to mutate\u002Fdrop error events",{"type":45,"tag":743,"props":2890,"children":2891},{},[2892,2901,2909,2917],{"type":45,"tag":765,"props":2893,"children":2894},{},[2895],{"type":45,"tag":110,"props":2896,"children":2898},{"className":2897},[],[2899],{"type":59,"value":2900},"BeforeSendTransaction",{"type":45,"tag":765,"props":2902,"children":2903},{},[2904],{"type":45,"tag":110,"props":2905,"children":2907},{"className":2906},[],[2908],{"type":59,"value":2875},{"type":45,"tag":765,"props":2910,"children":2911},{},[2912],{"type":45,"tag":110,"props":2913,"children":2915},{"className":2914},[],[2916],{"type":59,"value":2715},{"type":45,"tag":765,"props":2918,"children":2919},{},[2920],{"type":59,"value":2921},"Hook to mutate\u002Fdrop transaction events",{"type":45,"tag":743,"props":2923,"children":2924},{},[2925,2934,2943,2951],{"type":45,"tag":765,"props":2926,"children":2927},{},[2928],{"type":45,"tag":110,"props":2929,"children":2931},{"className":2930},[],[2932],{"type":59,"value":2933},"IgnoreErrors",{"type":45,"tag":765,"props":2935,"children":2936},{},[2937],{"type":45,"tag":110,"props":2938,"children":2940},{"className":2939},[],[2941],{"type":59,"value":2942},"[]string",{"type":45,"tag":765,"props":2944,"children":2945},{},[2946],{"type":45,"tag":110,"props":2947,"children":2949},{"className":2948},[],[2950],{"type":59,"value":2715},{"type":45,"tag":765,"props":2952,"children":2953},{},[2954],{"type":59,"value":2955},"Regex patterns for errors to drop",{"type":45,"tag":743,"props":2957,"children":2958},{},[2959,2968,2976,2984],{"type":45,"tag":765,"props":2960,"children":2961},{},[2962],{"type":45,"tag":110,"props":2963,"children":2965},{"className":2964},[],[2966],{"type":59,"value":2967},"IgnoreTransactions",{"type":45,"tag":765,"props":2969,"children":2970},{},[2971],{"type":45,"tag":110,"props":2972,"children":2974},{"className":2973},[],[2975],{"type":59,"value":2942},{"type":45,"tag":765,"props":2977,"children":2978},{},[2979],{"type":45,"tag":110,"props":2980,"children":2982},{"className":2981},[],[2983],{"type":59,"value":2715},{"type":45,"tag":765,"props":2985,"children":2986},{},[2987],{"type":59,"value":2988},"Regex patterns for transactions to drop",{"type":45,"tag":905,"props":2990,"children":2992},{"id":2991},"environment-variables",[2993],{"type":59,"value":2994},"Environment Variables",{"type":45,"tag":735,"props":2996,"children":2997},{},[2998,3018],{"type":45,"tag":739,"props":2999,"children":3000},{},[3001],{"type":45,"tag":743,"props":3002,"children":3003},{},[3004,3009,3014],{"type":45,"tag":747,"props":3005,"children":3006},{},[3007],{"type":59,"value":3008},"Variable",{"type":45,"tag":747,"props":3010,"children":3011},{},[3012],{"type":59,"value":3013},"Maps to",{"type":45,"tag":747,"props":3015,"children":3016},{},[3017],{"type":59,"value":2374},{"type":45,"tag":758,"props":3019,"children":3020},{},[3021,3045,3077,3101],{"type":45,"tag":743,"props":3022,"children":3023},{},[3024,3032,3040],{"type":45,"tag":765,"props":3025,"children":3026},{},[3027],{"type":45,"tag":110,"props":3028,"children":3030},{"className":3029},[],[3031],{"type":59,"value":2418},{"type":45,"tag":765,"props":3033,"children":3034},{},[3035],{"type":45,"tag":110,"props":3036,"children":3038},{"className":3037},[],[3039],{"type":59,"value":2389},{"type":45,"tag":765,"props":3041,"children":3042},{},[3043],{"type":59,"value":3044},"Data Source Name",{"type":45,"tag":743,"props":3046,"children":3047},{},[3048,3056,3064],{"type":45,"tag":765,"props":3049,"children":3050},{},[3051],{"type":45,"tag":110,"props":3052,"children":3054},{"className":3053},[],[3055],{"type":59,"value":2509},{"type":45,"tag":765,"props":3057,"children":3058},{},[3059],{"type":45,"tag":110,"props":3060,"children":3062},{"className":3061},[],[3063],{"type":59,"value":1466},{"type":45,"tag":765,"props":3065,"children":3066},{},[3067,3069,3075],{"type":59,"value":3068},"App version (e.g., ",{"type":45,"tag":110,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":59,"value":3074},"my-app@1.0.0",{"type":59,"value":3076},")",{"type":45,"tag":743,"props":3078,"children":3079},{},[3080,3088,3096],{"type":45,"tag":765,"props":3081,"children":3082},{},[3083],{"type":45,"tag":110,"props":3084,"children":3086},{"className":3085},[],[3087],{"type":59,"value":2465},{"type":45,"tag":765,"props":3089,"children":3090},{},[3091],{"type":45,"tag":110,"props":3092,"children":3094},{"className":3093},[],[3095],{"type":59,"value":2430},{"type":45,"tag":765,"props":3097,"children":3098},{},[3099],{"type":59,"value":3100},"Deployment environment",{"type":45,"tag":743,"props":3102,"children":3103},{},[3104,3121,3137],{"type":45,"tag":765,"props":3105,"children":3106},{},[3107,3113,3115],{"type":45,"tag":110,"props":3108,"children":3110},{"className":3109},[],[3111],{"type":59,"value":3112},"HTTP_PROXY",{"type":59,"value":3114}," \u002F ",{"type":45,"tag":110,"props":3116,"children":3118},{"className":3117},[],[3119],{"type":59,"value":3120},"HTTPS_PROXY",{"type":45,"tag":765,"props":3122,"children":3123},{},[3124,3130,3131],{"type":45,"tag":110,"props":3125,"children":3127},{"className":3126},[],[3128],{"type":59,"value":3129},"HTTPProxy",{"type":59,"value":3114},{"type":45,"tag":110,"props":3132,"children":3134},{"className":3133},[],[3135],{"type":59,"value":3136},"HTTPSProxy",{"type":45,"tag":765,"props":3138,"children":3139},{},[3140],{"type":59,"value":3141},"Outbound proxy",{"type":45,"tag":50,"props":3143,"children":3144},{},[3145,3147,3152,3154,3159],{"type":59,"value":3146},"Options set in ",{"type":45,"tag":110,"props":3148,"children":3150},{"className":3149},[],[3151],{"type":59,"value":2343},{"type":59,"value":3153}," ",{"type":45,"tag":138,"props":3155,"children":3156},{},[3157],{"type":59,"value":3158},"override",{"type":59,"value":3160}," environment variables.",{"type":45,"tag":163,"props":3162,"children":3163},{},[],{"type":45,"tag":83,"props":3165,"children":3167},{"id":3166},"verification",[3168],{"type":59,"value":3169},"Verification",{"type":45,"tag":50,"props":3171,"children":3172},{},[3173],{"type":59,"value":3174},"Test that Sentry is receiving events:",{"type":45,"tag":178,"props":3176,"children":3178},{"className":1246,"code":3177,"language":23,"meta":183,"style":183},"\u002F\u002F In a handler or test — triggers a real error event:\nsentry.CaptureMessage(\"Sentry Go SDK test\")\n\n\u002F\u002F Or trigger a captured panic (with recovery middleware in place):\npanic(\"sentry test panic\")\n",[3179],{"type":45,"tag":110,"props":3180,"children":3181},{"__ignoreMap":183},[3182,3190,3198,3205,3213],{"type":45,"tag":189,"props":3183,"children":3184},{"class":191,"line":192},[3185],{"type":45,"tag":189,"props":3186,"children":3187},{},[3188],{"type":59,"value":3189},"\u002F\u002F In a handler or test — triggers a real error event:\n",{"type":45,"tag":189,"props":3191,"children":3192},{"class":191,"line":202},[3193],{"type":45,"tag":189,"props":3194,"children":3195},{},[3196],{"type":59,"value":3197},"sentry.CaptureMessage(\"Sentry Go SDK test\")\n",{"type":45,"tag":189,"props":3199,"children":3200},{"class":191,"line":239},[3201],{"type":45,"tag":189,"props":3202,"children":3203},{"emptyLinePlaceholder":40},[3204],{"type":59,"value":245},{"type":45,"tag":189,"props":3206,"children":3207},{"class":191,"line":248},[3208],{"type":45,"tag":189,"props":3209,"children":3210},{},[3211],{"type":59,"value":3212},"\u002F\u002F Or trigger a captured panic (with recovery middleware in place):\n",{"type":45,"tag":189,"props":3214,"children":3215},{"class":191,"line":257},[3216],{"type":45,"tag":189,"props":3217,"children":3218},{},[3219],{"type":59,"value":3220},"panic(\"sentry test panic\")\n",{"type":45,"tag":50,"props":3222,"children":3223},{},[3224],{"type":59,"value":3225},"Check the Sentry dashboard within a few seconds. If nothing appears:",{"type":45,"tag":3227,"props":3228,"children":3229},"ol",{},[3230,3250,3255],{"type":45,"tag":94,"props":3231,"children":3232},{},[3233,3235,3241,3243,3248],{"type":59,"value":3234},"Set ",{"type":45,"tag":110,"props":3236,"children":3238},{"className":3237},[],[3239],{"type":59,"value":3240},"Debug: true",{"type":59,"value":3242}," in ",{"type":45,"tag":110,"props":3244,"children":3246},{"className":3245},[],[3247],{"type":59,"value":2343},{"type":59,"value":3249}," — prints SDK internals to stdout",{"type":45,"tag":94,"props":3251,"children":3252},{},[3253],{"type":59,"value":3254},"Verify the DSN is correct and the project exists",{"type":45,"tag":94,"props":3256,"children":3257},{},[3258,3260,3266],{"type":59,"value":3259},"Ensure ",{"type":45,"tag":110,"props":3261,"children":3263},{"className":3262},[],[3264],{"type":59,"value":3265},"sentry.Flush(2 * time.Second)",{"type":59,"value":3267}," is called (events are async by default)",{"type":45,"tag":163,"props":3269,"children":3270},{},[],{"type":45,"tag":83,"props":3272,"children":3274},{"id":3273},"phase-4-cross-link",[3275],{"type":59,"value":3276},"Phase 4: Cross-Link",{"type":45,"tag":50,"props":3278,"children":3279},{},[3280],{"type":59,"value":3281},"After completing Go setup, check for a companion frontend missing Sentry coverage:",{"type":45,"tag":178,"props":3283,"children":3285},{"className":180,"code":3284,"language":182,"meta":183,"style":183},"ls frontend\u002F web\u002F client\u002F ui\u002F 2>\u002Fdev\u002Fnull\ncat frontend\u002Fpackage.json web\u002Fpackage.json 2>\u002Fdev\u002Fnull | grep -E '\"react\"|\"svelte\"|\"vue\"|\"next\"'\n",[3286],{"type":45,"tag":110,"props":3287,"children":3288},{"__ignoreMap":183},[3289,3320],{"type":45,"tag":189,"props":3290,"children":3291},{"class":191,"line":192},[3292,3296,3300,3304,3308,3312,3316],{"type":45,"tag":189,"props":3293,"children":3294},{"style":206},[3295],{"type":59,"value":533},{"type":45,"tag":189,"props":3297,"children":3298},{"style":212},[3299],{"type":59,"value":538},{"type":45,"tag":189,"props":3301,"children":3302},{"style":212},[3303],{"type":59,"value":543},{"type":45,"tag":189,"props":3305,"children":3306},{"style":212},[3307],{"type":59,"value":548},{"type":45,"tag":189,"props":3309,"children":3310},{"style":212},[3311],{"type":59,"value":553},{"type":45,"tag":189,"props":3313,"children":3314},{"style":228},[3315],{"type":59,"value":231},{"type":45,"tag":189,"props":3317,"children":3318},{"style":212},[3319],{"type":59,"value":236},{"type":45,"tag":189,"props":3321,"children":3322},{"class":191,"line":202},[3323,3328,3333,3338,3342,3347,3352,3357,3361,3366,3371],{"type":45,"tag":189,"props":3324,"children":3325},{"style":206},[3326],{"type":59,"value":3327},"cat",{"type":45,"tag":189,"props":3329,"children":3330},{"style":212},[3331],{"type":59,"value":3332}," frontend\u002Fpackage.json",{"type":45,"tag":189,"props":3334,"children":3335},{"style":212},[3336],{"type":59,"value":3337}," web\u002Fpackage.json",{"type":45,"tag":189,"props":3339,"children":3340},{"style":228},[3341],{"type":59,"value":231},{"type":45,"tag":189,"props":3343,"children":3344},{"style":212},[3345],{"type":59,"value":3346},"\u002Fdev\u002Fnull",{"type":45,"tag":189,"props":3348,"children":3349},{"style":228},[3350],{"type":59,"value":3351}," |",{"type":45,"tag":189,"props":3353,"children":3354},{"style":206},[3355],{"type":59,"value":3356}," grep",{"type":45,"tag":189,"props":3358,"children":3359},{"style":212},[3360],{"type":59,"value":267},{"type":45,"tag":189,"props":3362,"children":3363},{"style":228},[3364],{"type":59,"value":3365}," '",{"type":45,"tag":189,"props":3367,"children":3368},{"style":212},[3369],{"type":59,"value":3370},"\"react\"|\"svelte\"|\"vue\"|\"next\"",{"type":45,"tag":189,"props":3372,"children":3373},{"style":228},[3374],{"type":59,"value":3375},"'\n",{"type":45,"tag":50,"props":3377,"children":3378},{},[3379],{"type":59,"value":3380},"If a frontend directory exists without Sentry configured, suggest the matching skill:",{"type":45,"tag":735,"props":3382,"children":3383},{},[3384,3400],{"type":45,"tag":739,"props":3385,"children":3386},{},[3387],{"type":45,"tag":743,"props":3388,"children":3389},{},[3390,3395],{"type":45,"tag":747,"props":3391,"children":3392},{},[3393],{"type":59,"value":3394},"Frontend detected",{"type":45,"tag":747,"props":3396,"children":3397},{},[3398],{"type":59,"value":3399},"Suggest skill",{"type":45,"tag":758,"props":3401,"children":3402},{},[3403,3420,3437,3465],{"type":45,"tag":743,"props":3404,"children":3405},{},[3406,3411],{"type":45,"tag":765,"props":3407,"children":3408},{},[3409],{"type":59,"value":3410},"React \u002F Next.js",{"type":45,"tag":765,"props":3412,"children":3413},{},[3414],{"type":45,"tag":110,"props":3415,"children":3417},{"className":3416},[],[3418],{"type":59,"value":3419},"sentry-react-sdk",{"type":45,"tag":743,"props":3421,"children":3422},{},[3423,3428],{"type":45,"tag":765,"props":3424,"children":3425},{},[3426],{"type":59,"value":3427},"Svelte \u002F SvelteKit",{"type":45,"tag":765,"props":3429,"children":3430},{},[3431],{"type":45,"tag":110,"props":3432,"children":3434},{"className":3433},[],[3435],{"type":59,"value":3436},"sentry-svelte-sdk",{"type":45,"tag":743,"props":3438,"children":3439},{},[3440,3445],{"type":45,"tag":765,"props":3441,"children":3442},{},[3443],{"type":59,"value":3444},"Vue",{"type":45,"tag":765,"props":3446,"children":3447},{},[3448,3450,3456,3458],{"type":59,"value":3449},"Use ",{"type":45,"tag":110,"props":3451,"children":3453},{"className":3452},[],[3454],{"type":59,"value":3455},"@sentry\u002Fvue",{"type":59,"value":3457}," — see ",{"type":45,"tag":54,"props":3459,"children":3462},{"href":3460,"rel":3461},"https:\u002F\u002Fdocs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F",[156],[3463],{"type":59,"value":3464},"docs.sentry.io\u002Fplatforms\u002Fjavascript\u002Fguides\u002Fvue\u002F",{"type":45,"tag":743,"props":3466,"children":3467},{},[3468,3473],{"type":45,"tag":765,"props":3469,"children":3470},{},[3471],{"type":59,"value":3472},"Other JS\u002FTS",{"type":45,"tag":765,"props":3474,"children":3475},{},[3476,3481],{"type":45,"tag":110,"props":3477,"children":3479},{"className":3478},[],[3480],{"type":59,"value":3419},{"type":59,"value":3482}," (covers generic browser JS patterns)",{"type":45,"tag":163,"props":3484,"children":3485},{},[],{"type":45,"tag":83,"props":3487,"children":3489},{"id":3488},"troubleshooting",[3490],{"type":59,"value":3491},"Troubleshooting",{"type":45,"tag":735,"props":3493,"children":3494},{},[3495,3511],{"type":45,"tag":739,"props":3496,"children":3497},{},[3498],{"type":45,"tag":743,"props":3499,"children":3500},{},[3501,3506],{"type":45,"tag":747,"props":3502,"children":3503},{},[3504],{"type":59,"value":3505},"Issue",{"type":45,"tag":747,"props":3507,"children":3508},{},[3509],{"type":59,"value":3510},"Solution",{"type":45,"tag":758,"props":3512,"children":3513},{},[3514,3541,3565,3578,3623,3656,3675,3702,3721],{"type":45,"tag":743,"props":3515,"children":3516},{},[3517,3522],{"type":45,"tag":765,"props":3518,"children":3519},{},[3520],{"type":59,"value":3521},"Events not appearing",{"type":45,"tag":765,"props":3523,"children":3524},{},[3525,3526,3531,3533,3539],{"type":59,"value":3234},{"type":45,"tag":110,"props":3527,"children":3529},{"className":3528},[],[3530],{"type":59,"value":3240},{"type":59,"value":3532},", check DSN, verify ",{"type":45,"tag":110,"props":3534,"children":3536},{"className":3535},[],[3537],{"type":59,"value":3538},"sentry.Flush()",{"type":59,"value":3540}," is called",{"type":45,"tag":743,"props":3542,"children":3543},{},[3544,3554],{"type":45,"tag":765,"props":3545,"children":3546},{},[3547,3552],{"type":45,"tag":110,"props":3548,"children":3550},{"className":3549},[],[3551],{"type":59,"value":1515},{"type":59,"value":3553}," returns error",{"type":45,"tag":765,"props":3555,"children":3556},{},[3557,3559],{"type":59,"value":3558},"Malformed DSN — check format: ",{"type":45,"tag":110,"props":3560,"children":3562},{"className":3561},[],[3563],{"type":59,"value":3564},"https:\u002F\u002F\u003Ckey>@o\u003Corg>.ingest.sentry.io\u002F\u003Cproject>",{"type":45,"tag":743,"props":3566,"children":3567},{},[3568,3573],{"type":45,"tag":765,"props":3569,"children":3570},{},[3571],{"type":59,"value":3572},"Panics not captured",{"type":45,"tag":765,"props":3574,"children":3575},{},[3576],{"type":59,"value":3577},"Ensure framework middleware is registered before handlers",{"type":45,"tag":743,"props":3579,"children":3580},{},[3581,3592],{"type":45,"tag":765,"props":3582,"children":3583},{},[3584,3590],{"type":45,"tag":110,"props":3585,"children":3587},{"className":3586},[],[3588],{"type":59,"value":3589},"defer sentry.Flush",{"type":59,"value":3591}," not running",{"type":45,"tag":765,"props":3593,"children":3594},{},[3595,3601,3603,3609,3611,3616,3618],{"type":45,"tag":110,"props":3596,"children":3598},{"className":3597},[],[3599],{"type":59,"value":3600},"os.Exit()",{"type":59,"value":3602}," skips ",{"type":45,"tag":110,"props":3604,"children":3606},{"className":3605},[],[3607],{"type":59,"value":3608},"defer",{"type":59,"value":3610}," — call ",{"type":45,"tag":110,"props":3612,"children":3614},{"className":3613},[],[3615],{"type":59,"value":3538},{"type":59,"value":3617}," explicitly before ",{"type":45,"tag":110,"props":3619,"children":3621},{"className":3620},[],[3622],{"type":59,"value":3600},{"type":45,"tag":743,"props":3624,"children":3625},{},[3626,3631],{"type":45,"tag":765,"props":3627,"children":3628},{},[3629],{"type":59,"value":3630},"Missing stack traces",{"type":45,"tag":765,"props":3632,"children":3633},{},[3634,3635,3641,3643,3648,3650],{"type":59,"value":3234},{"type":45,"tag":110,"props":3636,"children":3638},{"className":3637},[],[3639],{"type":59,"value":3640},"AttachStacktrace: true",{"type":59,"value":3642}," for ",{"type":45,"tag":110,"props":3644,"children":3646},{"className":3645},[],[3647],{"type":59,"value":2582},{"type":59,"value":3649},"; works automatically for ",{"type":45,"tag":110,"props":3651,"children":3653},{"className":3652},[],[3654],{"type":59,"value":3655},"CaptureException",{"type":45,"tag":743,"props":3657,"children":3658},{},[3659,3664],{"type":45,"tag":765,"props":3660,"children":3661},{},[3662],{"type":59,"value":3663},"Goroutine events missing context",{"type":45,"tag":765,"props":3665,"children":3666},{},[3667,3669],{"type":59,"value":3668},"Clone hub before spawning goroutine: ",{"type":45,"tag":110,"props":3670,"children":3672},{"className":3671},[],[3673],{"type":59,"value":3674},"hub := sentry.CurrentHub().Clone()",{"type":45,"tag":743,"props":3676,"children":3677},{},[3678,3683],{"type":45,"tag":765,"props":3679,"children":3680},{},[3681],{"type":59,"value":3682},"Too many transactions",{"type":45,"tag":765,"props":3684,"children":3685},{},[3686,3688,3693,3695,3700],{"type":59,"value":3687},"Lower ",{"type":45,"tag":110,"props":3689,"children":3691},{"className":3690},[],[3692],{"type":59,"value":2664},{"type":59,"value":3694}," or use ",{"type":45,"tag":110,"props":3696,"children":3698},{"className":3697},[],[3699],{"type":59,"value":2698},{"type":59,"value":3701}," to drop health checks \u002F metrics endpoints",{"type":45,"tag":743,"props":3703,"children":3704},{},[3705,3710],{"type":45,"tag":765,"props":3706,"children":3707},{},[3708],{"type":59,"value":3709},"Fiber\u002FFastHTTP not recovering",{"type":45,"tag":765,"props":3711,"children":3712},{},[3713,3714,3719],{"type":59,"value":3449},{"type":45,"tag":110,"props":3715,"children":3717},{"className":3716},[],[3718],{"type":59,"value":1887},{"type":59,"value":3720}," for fasthttp-based frameworks",{"type":45,"tag":743,"props":3722,"children":3723},{},[3724,3735],{"type":45,"tag":765,"props":3725,"children":3726},{},[3727,3733],{"type":45,"tag":110,"props":3728,"children":3730},{"className":3729},[],[3731],{"type":59,"value":3732},"SampleRate: 0.0",{"type":59,"value":3734}," sending all events",{"type":45,"tag":765,"props":3736,"children":3737},{},[3738,3743,3745,3750,3752,3758],{"type":45,"tag":110,"props":3739,"children":3741},{"className":3740},[],[3742],{"type":59,"value":2681},{"type":59,"value":3744}," is treated as ",{"type":45,"tag":110,"props":3746,"children":3748},{"className":3747},[],[3749],{"type":59,"value":2614},{"type":59,"value":3751},"; to drop all, set ",{"type":45,"tag":110,"props":3753,"children":3755},{"className":3754},[],[3756],{"type":59,"value":3757},"Dsn: \"\"",{"type":59,"value":3759}," instead",{"type":45,"tag":3761,"props":3762,"children":3763},"style",{},[3764],{"type":59,"value":3765},"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":3767,"total":3873},[3768,3786,3799,3815,3831,3845,3860],{"slug":3769,"name":3769,"fn":3770,"description":3771,"org":3772,"tags":3773,"stars":24,"repoUrl":25,"updatedAt":3785},"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},[3774,3777,3780,3781,3784],{"name":3775,"slug":3776,"type":16},"Android","android",{"name":3778,"slug":3779,"type":16},"Debugging","debugging",{"name":14,"slug":15,"type":16},{"name":3782,"slug":3783,"type":16},"SDK","sdk",{"name":9,"slug":8,"type":16},"2026-07-12T06:08:32.396344",{"slug":3787,"name":3787,"fn":3788,"description":3789,"org":3790,"tags":3791,"stars":24,"repoUrl":25,"updatedAt":3798},"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},[3792,3793,3796,3797],{"name":3778,"slug":3779,"type":16},{"name":3794,"slug":3795,"type":16},"JavaScript","javascript",{"name":18,"slug":19,"type":16},{"name":9,"slug":8,"type":16},"2026-07-18T05:47:44.437436",{"slug":3800,"name":3800,"fn":3801,"description":3802,"org":3803,"tags":3804,"stars":24,"repoUrl":25,"updatedAt":3814},"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},[3805,3808,3811,3812,3813],{"name":3806,"slug":3807,"type":16},"Cloudflare","cloudflare",{"name":3809,"slug":3810,"type":16},"Edge Functions","edge-functions",{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:25.361175",{"slug":3816,"name":3816,"fn":3817,"description":3818,"org":3819,"tags":3820,"stars":24,"repoUrl":25,"updatedAt":3830},"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},[3821,3824,3827,3828,3829],{"name":3822,"slug":3823,"type":16},"iOS","ios",{"name":3825,"slug":3826,"type":16},"macOS","macos",{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:52:57.042493",{"slug":3832,"name":3832,"fn":3833,"description":3834,"org":3835,"tags":3836,"stars":24,"repoUrl":25,"updatedAt":3844},"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},[3837,3840,3841,3842,3843],{"name":3838,"slug":3839,"type":16},".NET","net",{"name":3778,"slug":3779,"type":16},{"name":14,"slug":15,"type":16},{"name":3782,"slug":3783,"type":16},{"name":9,"slug":8,"type":16},"2026-07-12T06:08:33.793148",{"slug":3846,"name":3846,"fn":3847,"description":3848,"org":3849,"tags":3850,"stars":24,"repoUrl":25,"updatedAt":3859},"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},[3851,3854,3857,3858],{"name":3852,"slug":3853,"type":16},"Backend","backend",{"name":3855,"slug":3856,"type":16},"Elixir","elixir",{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16},"2026-07-11T05:53:11.69581",{"slug":3861,"name":3861,"fn":3862,"description":3863,"org":3864,"tags":3865,"stars":24,"repoUrl":25,"updatedAt":3872},"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},[3866,3867,3870,3871],{"name":3778,"slug":3779,"type":16},{"name":3868,"slug":3869,"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":3875,"total":4047},[3876,3895,3909,3924,3938,3955,3971,3985,3995,4006,4016,4034],{"slug":3877,"name":3877,"fn":3878,"description":3879,"org":3880,"tags":3881,"stars":3892,"repoUrl":3893,"updatedAt":3894},"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},[3882,3883,3884,3885,3886,3889],{"name":3778,"slug":3779,"type":16},{"name":3822,"slug":3823,"type":16},{"name":3825,"slug":3826,"type":16},{"name":9,"slug":8,"type":16},{"name":3887,"slug":3888,"type":16},"Testing","testing",{"name":3890,"slug":3891,"type":16},"Xcode","xcode",6176,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002FXcodeBuildMCP","2026-04-06T18:13:34.8719",{"slug":3896,"name":3896,"fn":3897,"description":3898,"org":3899,"tags":3900,"stars":3892,"repoUrl":3893,"updatedAt":3908},"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},[3901,3904,3905,3906,3907],{"name":3902,"slug":3903,"type":16},"CLI","cli",{"name":3822,"slug":3823,"type":16},{"name":3825,"slug":3826,"type":16},{"name":3887,"slug":3888,"type":16},{"name":3890,"slug":3891,"type":16},"2026-04-06T18:13:36.13414",{"slug":3910,"name":3910,"fn":3911,"description":3912,"org":3913,"tags":3914,"stars":3921,"repoUrl":3922,"updatedAt":3923},"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},[3915,3918],{"name":3916,"slug":3917,"type":16},"Documentation","documentation",{"name":3919,"slug":3920,"type":16},"Engineering","engineering",861,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills","2026-05-15T06:16:29.695991",{"slug":3925,"name":3925,"fn":3926,"description":3927,"org":3928,"tags":3929,"stars":3921,"repoUrl":3922,"updatedAt":3937},"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},[3930,3933,3934],{"name":3931,"slug":3932,"type":16},"Communications","communications",{"name":9,"slug":8,"type":16},{"name":3935,"slug":3936,"type":16},"Technical Writing","technical-writing","2026-05-15T06:16:33.38217",{"slug":3939,"name":3939,"fn":3940,"description":3941,"org":3942,"tags":3943,"stars":3921,"repoUrl":3922,"updatedAt":3954},"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},[3944,3947,3950,3951],{"name":3945,"slug":3946,"type":16},"Branding","branding",{"name":3948,"slug":3949,"type":16},"Content Creation","content-creation",{"name":9,"slug":8,"type":16},{"name":3952,"slug":3953,"type":16},"UX Copy","ux-copy","2026-05-15T06:16:22.395707",{"slug":3956,"name":3956,"fn":3957,"description":3958,"org":3959,"tags":3960,"stars":3921,"repoUrl":3922,"updatedAt":3970},"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},[3961,3964,3967],{"name":3962,"slug":3963,"type":16},"Claude Code","claude-code",{"name":3965,"slug":3966,"type":16},"Configuration","configuration",{"name":3968,"slug":3969,"type":16},"Security","security","2026-05-15T06:16:44.335977",{"slug":3972,"name":3972,"fn":3973,"description":3974,"org":3975,"tags":3976,"stars":3921,"repoUrl":3922,"updatedAt":3984},"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},[3977,3979,3980,3983],{"name":3978,"slug":3972,"type":16},"Code Review",{"name":3919,"slug":3920,"type":16},{"name":3981,"slug":3982,"type":16},"Performance","performance",{"name":3968,"slug":3969,"type":16},"2026-05-15T06:16:35.824864",{"slug":3986,"name":3986,"fn":3987,"description":3988,"org":3989,"tags":3990,"stars":3921,"repoUrl":3922,"updatedAt":3994},"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},[3991],{"name":3992,"slug":3993,"type":16},"Code Analysis","code-analysis","2026-05-15T06:16:32.127981",{"slug":3996,"name":3996,"fn":3997,"description":3998,"org":3999,"tags":4000,"stars":3921,"repoUrl":3922,"updatedAt":4005},"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},[4001,4004],{"name":4002,"slug":4003,"type":16},"Git","git",{"name":9,"slug":8,"type":16},"2026-07-18T05:15:10.723937",{"slug":4007,"name":4007,"fn":4008,"description":4009,"org":4010,"tags":4011,"stars":3921,"repoUrl":3922,"updatedAt":4015},"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},[4012,4013,4014],{"name":3919,"slug":3920,"type":16},{"name":4002,"slug":4003,"type":16},{"name":9,"slug":8,"type":16},"2026-05-15T06:16:39.458431",{"slug":4017,"name":4017,"fn":4018,"description":4019,"org":4020,"tags":4021,"stars":3921,"repoUrl":3922,"updatedAt":4033},"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},[4022,4025,4026,4029,4032],{"name":4023,"slug":4024,"type":16},"Access Control","access-control",{"name":3992,"slug":3993,"type":16},{"name":4027,"slug":4028,"type":16},"Django","django",{"name":4030,"slug":4031,"type":16},"Python","python",{"name":3968,"slug":3969,"type":16},"2026-05-15T06:16:43.098698",{"slug":4035,"name":4035,"fn":4036,"description":4037,"org":4038,"tags":4039,"stars":3921,"repoUrl":3922,"updatedAt":4046},"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},[4040,4041,4044,4045],{"name":3978,"slug":3972,"type":16},{"name":4042,"slug":4043,"type":16},"Database","database",{"name":4027,"slug":4028,"type":16},{"name":3981,"slug":3982,"type":16},"2026-05-15T06:16:24.832813",88]