Commit Graph

208 Commits

Author SHA1 Message Date
Benjamin Coe c7cea0ff1a fix: forensics feels a little alarming 2026-06-25 12:41:46 -04:00
Benjamin Coe 3f1a34a99d address code review 2026-06-25 12:20:31 -04:00
Benjamin Coe 1d53f99eb8 feat(references): add reference for logging
Adds a reference file for logging, stubs some other telemetry types so that they can be
    linked to by logging.
2026-06-25 09:13:42 -04:00
Matej Minar 7d311bc603 docs(ai-monitoring): Document gen_ai.request.reasoning_effort attribute (#208)
Add the gen_ai.request.reasoning_effort span attribute to the AI/agent
monitoring manual instrumentation references across the Python, Node,
Next.js, and NestJS SDK skills, plus the setup-ai-monitoring skill.

The attribute records the reasoning effort parameter (e.g. low, medium,
high) sent to reasoning-capable models. Supported values vary by
provider, so the docs note that rather than a fixed enum.

Also drop the other gen_ai.request.* model-config attributes
(temperature, max_tokens, top_p, frequency_penalty, presence_penalty)
from the skill references and the Python code sample, leaving
reasoning_effort as the only documented model-config attribute.

Refs TET-2506

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 10:21:35 +02:00
github-actions[bot] a241194e51 [skill-drift] update(sentry-cloudflare-sdk): v10.59.0 sync KV instrumentation (#209) 2026-06-24 21:16:14 +03:00
github-actions[bot] 4a25016e6a [skill-drift] fix(sentry-react-native-sdk): document network body capture in Session Replay (#210)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-23 10:29:25 +02:00
Evan Purkhiser bd84576db7 refactor(skills): standardize Configuration Reference across SDK skills (#205)
The SDK skills had drifted into two conventions for the same section:
15 of 19 used the heading "Configuration Reference" while 4 used the
short "Config Reference", and 14 of 19 placed it before "Verification"
while the same 4 placed it after. Align the four outliers (cloudflare,
dotnet, nextjs, node) with the majority so every SDK skill reads
Guide -> Configuration Reference -> Verification -> Cross-Link.

Pure reorder and rename; no content changed.
2026-06-22 12:41:45 -04:00
Evan Purkhiser 5bc1812108 refactor(skills): restore phase skeleton in mobile SDK skills (#206)
The mobile and native SDK skills had accreted extra top-level sections
over time (Environment Variables, Production Settings, Ecosystem
Integrations, Integration Reference, Expo Config Plugin Reference,
Default Auto-Enabled Integrations, SvelteKit File Summary), breaking the
canonical Phase 1-4 + Configuration Reference + Verification skeleton
that every SDK skill is meant to follow.

Relocate them without changing any content:

- Config-reference-grade material (env vars, default integrations,
  production hardening, file summaries) folds into Configuration
  Reference as ### subsections, matching the backend SDK skills.
- Longer standalone deep-dives (Android integrations, Flutter ecosystem
  packages, RN Expo config plugin) move to references/ files, pointed to
  from the Phase 3 feature table.

The React Native source-map and EAS Build sections are intentionally
left in place; a follow-up trims those. Pure relocation, no prose
changed.
2026-06-22 12:40:55 -04:00
Evan Purkhiser 9ab3551758 feat(installer): add a remove subcommand to uninstall the plugin (#201)
Installing the Sentry plugin was a one-way door — there was no built-in
way to take it back out. Add a `remove` subcommand that mirrors install:
it reuses the detect and select steps, then uninstalls the plugin from
each chosen agent (claude plugin uninstall, codex plugin remove, grok
plugin uninstall, and deleting the Cursor checkout).

Removal only takes out our own plugin. Any marketplace we registered is
left in place — Claude's is Anthropic's shared official one, so
deregistering it could pull it out from under other plugins — and the
install-time cleanup of conflicting plugins does not run.

The UI is factored into a shared runFlow driven by a FlowMode descriptor
so install and remove share detection, selection, concurrency, and
output streaming while differing only in their tagline, prompt copy,
per-agent action, and closing line. The remove flow leads with a static
"Neuralyzing your agents of Sentry." header (no shimmer).

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 12:19:12 -04:00
Evan Purkhiser d513605299 release: add 0.1.3 changelog entry (#203)
Ships the updated installer README (install command + demo) to the npm
package page. craft's "simple" changelog policy requires the entry to exist
before prepare.
2026-06-18 11:26:23 -04:00
Evan Purkhiser 47576c18fd docs(installer): lead README with the install command (#200) 2026-06-18 10:20:02 -04:00
Evan Purkhiser bae472b6b1 docs(installer): add install demo to README (#199) 2026-06-18 10:14:16 -04:00
Evan Purkhiser 133a03aeeb fix(claude): Add utm_source=plugin to inline MCP server URL (#196)
Aligns Claude's plugin.json with Cursor, Codex, and Grok which all
include ?utm_source=plugin in their distributed MCP configs, so
Claude-originated traffic is attributed under app.utm_source:plugin.
2026-06-18 09:50:16 -04:00
Evan Purkhiser 6f0544e3a4 release: add 0.1.2 changelog entry (#198)
Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
2026-06-18 07:03:57 -04:00
Evan Purkhiser 6c8608d24f feat(installer): add --no-telemetry flag and DO_NOT_TRACK support (#197)
* feat(installer): add --no-telemetry flag and DO_NOT_TRACK support

Co-Authored-By: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>

* fix(installer): accept true and yes as valid DO_NOT_TRACK values

Co-Authored-By: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>

* perf(installer): lazy-load @sentry/node to cut ~200ms off startup

Co-Authored-By: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>

---------

Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
2026-06-17 19:25:03 -07:00
David Cramer 06d681e3c3 docs: Add TELEMETRY.md (#195)
Documents the two telemetry surfaces for sentry-for-ai:

- Primary: sentry/mcp-server spans filtered by app.utm_source:plugin
  (Cursor, Codex, Grok attributed; Claude gap noted)
- Secondary: installer CLI errors in project 4511570959335425

Includes query recipes, investigation pivots, domains, configuration,
and attribute notes following the sentry-mcp/junior TELEMETRY.md pattern.

Co-authored-by: sentry-junior[bot] <264270552+sentry-junior[bot]@users.noreply.github.com>
2026-06-17 17:05:01 -07:00
Evan Purkhiser 88b2adfc59 ci(installer): bump release version with npm instead of pnpm (#194)
The preReleaseCommand failed in craft's container with "pnpm: command not
found" -- the image ships npm but not pnpm. Switch to `npm pkg set version`,
a plain package.json edit with no install, lockfile, or git-check side
effects.
2026-06-17 19:38:18 -04:00
Evan Purkhiser 222d923c66 feat(installer): give the install banner some brand voice (#193)
Add a tagline under the banner and rework the closing line so the run
opens and closes on the same beat ("teaching your agents to speak
Sentry" -> "your agents now speak Sentry") instead of a flat restart
hint.

On a color terminal the tagline animates: a bright band shimmers across
"speak Sentry" while the install runs, then settles to a static line.
It is painted as a header by a custom listr renderer (ShimmerRenderer)
so the step list renders normally beneath it; off a TTY (CI, pipes,
NO_COLOR) it stays a plain static line. The shimmer effect lives in its
own module, text-shimmer.ts.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 19:28:09 -04:00
Evan Purkhiser b4fb9c1f83 ci(installer): bump installer package.json during craft prepare (#192)
craft's default version bump targets the repo-root package.json, which is
private and unversioned. The published package lives in packages/installer,
so its version stayed at 0.1.0 and npm rejected the 0.1.1 publish as a
duplicate. Wire a preReleaseCommand that bumps packages/installer instead.
2026-06-17 18:47:17 -04:00
Evan Purkhiser 0694b6f873 feat(mcp): tag Sentry MCP server URL with utm_source (#191)
Adds ?utm_source=plugin to the Sentry MCP server URL so traffic
originating from the AI plugin can be attributed.
2026-06-17 18:43:07 -04:00
Evan Purkhiser b9a4a79183 release: add 0.1.1 changelog entry
craft's "simple" changelog policy requires an existing entry for the
version being prepared.
2026-06-17 18:31:30 -04:00
Evan Purkhiser 79869586a3 fix(installer): surface command stderr when streaming installs (#190)
When an install streams through an output sink, runStreaming piped the
command's stderr to the live view but never captured it, so a failure
fell through to runInstallCommand's generic "exit code N" message. The
interactive UI always passes a sink, so Listr failure text was almost
always that generic message instead of the agent's actual error.

Tee stderr: keep piping it to the sink for the live view, and also
buffer it into the result so the thrown error carries the real text.
2026-06-17 18:28:03 -04:00
Evan Purkhiser 81d6f2f5c1 feat(installer): stream live command output and theme the UI (#189)
Show what each agent is actually doing instead of a static spinner. An
optional output sink threads from the install task down through
install/update/cleanup to the shell runner; the real system spawns the
command and pipes its stdout/stderr into the task's stream, so progress
appears live under each agent's row. Detection probes still buffer and
parse as before — only the mutating commands stream.

Theme the renderer to match the Sentry banner: diamond task icons with a
small-to-large pulsing diamond spinner, streamed output grayed (per line,
so blank lines stay empty and removeEmptyLines can drop them) and kept on
screen via persistentOutput, an arrow prompt cursor with the gap moved
onto the checkbox icons to preserve alignment, and a blue hollow-diamond
prompt prefix. Also drop the Cursor restart note now that the closing
line covers it.
2026-06-17 18:12:43 -04:00
Evan Purkhiser 2de5972e3d feat(installer): keep per-agent install output on screen (#188)
The install subtasks run under a parent "Installing plugins" task, which
collapses its children once it completes — folding away each agent's
resolved command and cleanup note. Set collapseSubtasks: false so the
per-agent rows and their output stay visible after the group finishes.
2026-06-17 18:09:00 -04:00
Evan Purkhiser 1bf8008e15 feat(installer): name installed agents in the restart hint (#187)
The closing line said "Restart your AI tools to load the Sentry plugin",
which is vague when only some of the detected agents were installed.
List the agents that actually received the plugin instead, e.g. "Restart
Claude Code and Codex to use Sentry with AI". Blocked or failed agents
are excluded since there is nothing to restart for them.
2026-06-17 17:11:25 -04:00
Evan Purkhiser e79190d1ce feat(installer): detect via JSON and clean up conflicting plugins (#186)
Switch every harness's installed-probe from substring-grepping plain
`plugin list` output to parsing the `--json` variant and matching on the
plugin's real identity. Claude and Codex match a marketplace-qualified
id; Grok matches our repo source with no marketplace, since the source
alone cannot tell a direct repo install from one made through the "xAI
Official" marketplace.

Add an optional `cleanup` step that runs before install to remove a
conflicting or legacy Sentry plugin that would otherwise shadow ours:
Codex removes the curated `sentry@openai-curated`, and Grok uninstalls a
marketplace-installed sentry so our direct-repo install resolves.
`cleanup` returns a short description of what it removed, which the
installer surfaces as persistent task output so the removal is visible
rather than silent.

Split the single `install` method into explicit `install` and `update`
so the orchestrator picks based on what detection already found, instead
of each harness re-probing its own listing.
2026-06-17 17:09:28 -04:00
Evan Purkhiser 89c55f0d3d ci(installer): publish @sentry/ai to npm via craft (#185)
Add the Craft release pipeline so packages/installer can be published to
npm as @sentry/ai.

- .craft.yml configures a single npm target (public scoped access) with a
  tarball-name guard. There is deliberately no github target, so a release
  creates no git tags and no GitHub releases -- nothing repo-wide implying
  the skills/plugins are versioned by it.
- The release branch is scoped to `release-installer/<version>` via
  releaseBranchPrefix, so it reads as a package release. craft creates it
  during prepare and deletes it after publish, so it is transient.
- changelogPolicy is `simple` (matching sentry-javascript) and the
  changelog lives with the package at packages/installer/CHANGELOG.md. The
  entry is written by hand before releasing; `auto` would sweep this repo's
  skill-drift and plugin churn into the installer changelog.
- release.yml runs `craft prepare` via the Sentry release bot App token.
  It must be an App token rather than GITHUB_TOKEN so the pushed release
  branch triggers release-build.yml, which packs the tarball and uploads
  it as the SHA-named artifact Craft's GitHub provider expects.
- The package gains `files: ["dist", "CHANGELOG.md"]`, publishConfig.access
  public, and an explicit LICENSE so the published tarball is complete
  without relying on pnpm copying the root LICENSE.

Publishing runs from getsentry/publish after a team lead approves the
release issue; this repo only prepares the release and builds the artifact.
2026-06-17 15:14:05 -04:00
Evan Purkhiser d86aedebf5 feat(installer): add CLI to install the Sentry plugin across AI agents (#180)
Add a pnpm workspace with a `packages/installer` package (`@sentry/ai`)
that provides a single CLI for installing the Sentry plugin into any
supported AI coding assistant: Claude Code, Codex, Cursor, and Grok.

The CLI (built on citty) exposes an `install` subcommand. By default it
shows an interactive selector pre-selecting the detected agents;
`--no-interactive`/`--yes` skips the prompt and installs every detected
agent — used for CI and unattended runs.

Each agent is a self-contained harness implementing a common strategy
interface — detect, isInstalled, canInstall, install — so adding a new
agent is just another module. System access (shell, fs, platform,
homedir) is injected through a SystemDeps seam, keeping every harness
unit-testable without side effects.

Behavior:
- Already-installed agents update in place rather than erroring or
  no-opping: Cursor pulls, Grok/Claude use their update commands, Codex
  re-adds (idempotent; it has no update command).
- Claude refreshes its marketplace index before installing, since a fresh
  CLI ships a stale index that cannot resolve the plugin.
- canInstall gates prerequisites (Cursor needs git) and reports a clear
  skip instead of a cryptic failure.
- One agent failing does not abort the rest, and the CLI exits non-zero
  if any selected agent failed or was blocked.
- Cross-platform: binary detection uses where/which per OS, Cursor is
  located via its per-OS install path, and git paths are quoted for
  Windows spaces.

Distribution:
- rolldown bundles the npm package (deps external).
- fossilize builds standalone Node SEA binaries; --hole-punch drops
  non-English ICU data to cut the download ~30%.

CI:
- A smoke-test matrix (Linux, macOS, Windows) installs the real agent
  CLIs and runs the installer non-interactively, asserting the plugin
  lands for every detected agent.

Instrumented with the Sentry Node SDK.
2026-06-17 13:09:44 -04:00
github-actions[bot] 712a45882c [skill-drift] update(sentry-cloudflare-sdk): document dataCollection option (#148)
* [skill-drift] update(sentry-cloudflare-sdk): document dataCollection option

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* update(sentry-cloudflare-sdk): simplify dataCollection snippets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* update(sentry-cloudflare-sdk): align dataCollection docs with defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* update(sentry-cloudflare-sdk): correct SDK version to 10.57.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* simplify

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Michael Hoffmann <michi@sentry.io>
Co-authored-by: Charly Gomez <charly.gomez1310@gmail.com>
2026-06-17 18:47:42 +02:00
github-actions[bot] 34da65c94c [skill-drift] update(sentry-dotnet-sdk): add StrictTraceContinuation and OrgId config options (#150)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Stefan Pölz <38893694+Flash0ver@users.noreply.github.com>
2026-06-16 22:03:07 +02:00
github-actions[bot] 493841c1a6 [skill-drift] update(sentry-elixir-sdk): bump version to v13.2.0 (#170)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-16 21:03:51 +02:00
Michi Hoffmann e824014368 ci: Remove skill-drift reviewer assignment workflow (#182)
The hardcoded skill-to-team mapping in this workflow is now handled by
CODEOWNERS, which gives GitHub native reviewer assignment without a
separate Actions job.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-16 21:03:22 +02:00
github-actions[bot] a01a6273ec [skill-drift] fix(sentry-python-sdk): document ASGI query string gating behind send_default_pii (#172)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-16 20:46:38 +02:00
github-actions[bot] 498ad57cfd [skill-drift] update(sentry-ruby-sdk): bump SDK version reference to v6.6.2 (#174)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-16 20:46:22 +02:00
github-actions[bot] 7b52de3248 fix(sentry-nestjs-sdk): document dataCollection API replacing sendDefaultPii (#151)
* [skill-drift] update(sentry-nestjs-sdk): document dataCollection API replacing sendDefaultPii

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* update(sentry-nestjs-sdk): simplify dataCollection snippets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update skills/sentry-nestjs-sdk/SKILL.md

* Update skills/sentry-nestjs-sdk/SKILL.md

* update(sentry-nestjs-sdk): align dataCollection docs with defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Update skills/sentry-nestjs-sdk/SKILL.md

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Michael Hoffmann <michi@sentry.io>
Co-authored-by: Charly Gomez <charly.gomez1310@gmail.com>
2026-06-16 16:31:29 +02:00
github-actions[bot] 46bb550236 fix(sentry-react-sdk): document dataCollection option (#155)
* [skill-drift] update(sentry-react-sdk): document dataCollection option (v10.55.0)

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* update(sentry-react-sdk): simplify dataCollection snippets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* update(sentry-react-sdk): align dataCollection docs with defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* update(sentry-react-sdk): correct SDK version to 10.57.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Michael Hoffmann <michi@sentry.io>
2026-06-16 16:30:02 +02:00
github-actions[bot] 3232f8344b fix(sentry-browser-sdk): update dataCollection default values (#159)
* [skill-drift] fix(sentry-browser-sdk): update dataCollection default values

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* fix(sentry-browser-sdk): simplify dataCollection snippets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(sentry-browser-sdk): align dataCollection docs with defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Michael Hoffmann <michi@sentry.io>
2026-06-16 16:28:13 +02:00
github-actions[bot] bb821b4f19 fix(sentry-react-router-framework-sdk): migrate sendDefaultPii to dataCollection API (#161)
* [skill-drift] update(sentry-react-router-framework-sdk): migrate sendDefaultPii to dataCollection API

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* update(sentry-react-router-framework-sdk): simplify dataCollection snippets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* update(sentry-react-router-framework-sdk): align dataCollection docs with defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Michael Hoffmann <michi@sentry.io>
2026-06-16 16:27:39 +02:00
github-actions[bot] 2f5dd1f5f2 fix(sentry-svelte-sdk): replace deprecated sendDefaultPii with dataCollection (#162)
* [skill-drift] fix(sentry-svelte-sdk): replace deprecated sendDefaultPii with dataCollection

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* fix(sentry-svelte-sdk): simplify dataCollection snippets

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(sentry-svelte-sdk): align dataCollection docs with defaults

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(sentry-svelte-sdk): correct SDK version to 10.57.0

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Michael Hoffmann <michi@sentry.io>
2026-06-16 16:26:32 +02:00
Ogi d724747576 docs(sentry-setup-ai-monitoring): document thinking/reasoning messages (#168) 2026-06-16 10:07:21 +02:00
github-actions[bot] aea3cc840a [skill-drift] update(sentry-react-native-sdk): add TurboModuleContext integration (#173)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-16 09:12:52 +02:00
Evan Purkhiser 62f084f323 docs(claude): update install command to use claude-plugins-official marketplace (#177)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 16:17:25 -04:00
Evan Purkhiser 765cca4683 feat(grok): place plugin.json at .grok-plugin/plugin.json in dist (#175)
The xAI plugin marketplace scanner (generate-plugin-index.py) resolves
plugin manifests from MANIFEST_PATHS = ['.grok-plugin/plugin.json',
'.claude-plugin/plugin.json']. With the manifest at the repo root it was
silently ignored — components were still discovered via default paths, but
any manifest-level overrides (e.g. logo) would not have been picked up.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-15 13:06:52 -04:00
Evan Purkhiser bb5d41f8e6 docs: surface supported agents and availability channels in README (#167)
- Link each supported agent in the intro to its distribution repo.
- Note that the skill library is also browsable at skills.sentry.dev and
  installable via the skills.sh installer.
2026-06-15 11:47:28 -04:00
github-actions[bot] 427b24b2f6 [skill-drift] update(sentry-react-native-sdk): add enableAutoConsoleLogs option (#154)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-15 15:00:23 +02:00
github-actions[bot] a020f80111 [skill-drift] fix(sentry-python-sdk): add httpx2 integration (#153)
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-15 14:58:04 +02:00
github-actions[bot] e620e8e85a [skill-drift] fix(sentry-cocoa-sdk): app start limit + SentryObjC docs (#149)
* [skill-drift] fix(sentry-cocoa-sdk): app start limit + SentryObjC docs

Automated drift-fix run.

Co-Authored-By: Claude (claude-sonnet-4-5) <noreply@anthropic.com>

* fix(sentry-cocoa-sdk): address PR feedback on app start limit and SentryObjC docs

- Fix inconsistent 5s vs 180s app start threshold in troubleshooting table
- Remove experimental tag from SentryObjC (stable since 9.17.0)
- Bump SentryObjC min version to 9.17.1 for debug symbol support

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
Co-authored-by: Philip Niedertscheider <phil.niedertscheider@sentry.io>
2026-06-15 14:57:59 +02:00
github-actions[bot] 415c7edf29 [skill-drift] fix(sentry-elixir-sdk): add v13.1-13.2 config options (#160)
Automated drift-fix run.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Claude (claude-sonnet-4-5) <noreply@anthropic.com>
2026-06-15 14:44:51 +02:00
Evan Purkhiser d65bd23b67 feat(dist): build and publish per-agent plugin distributions (#158)
This repository is the single source of truth for skills and routing metadata,
but it is not itself an installable plugin, and each assistant (Claude Code,
Cursor, Codex, Grok) expects the plugin in a different on-disk shape. No plugin
ecosystem can consume a zip or release asset; all install from a git ref. So a
GitHub Actions workflow builds each agent's distribution from this repository
and deploys it to a dedicated repository whose root is exactly that agent's
plugin, which a marketplace points at as getsentry/plugin-<agent>.

Each agent has a `plugin-src/<agent>/` dir with its manifests, README, and a
`build.sh` that assembles the dist tree from shared repo content. Claude, Cursor,
and Grok consume the plugin at the repo root; Codex requires it under
`plugins/sentry/` and rejects the `disable-model-invocation` field the skill
tree relies on, so its build strips that field and emits a per-skill
`agents/openai.yaml` (see `hide-skills.py`). MCP config is built from the repo's
`mcp.json` source of truth: inline in Claude's manifest, and a file for the
others.

Cross-repo writes use a short-lived token from a dedicated GitHub App scoped to
contents:write on the plugin repos; the default GITHUB_TOKEN cannot push to
other repositories.

The root `.claude-plugin/`, `.cursor-plugin/`, and `.mcp.json` are retained so
existing installs that consumed the plugin from this repo's root keep working;
their READMEs announce removal on or after 2026-07-11.
2026-06-12 13:39:38 -04:00
Michi Hoffmann cb4cc530d7 meta: Add CODEOWNERS for SDK skills (#165)
Map each SDK skill directory to the GitHub team that owns the
corresponding SDK repository. This ensures the right team gets
requested for review when skill content changes.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-06-12 15:31:36 +02:00