Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
113 changes: 61 additions & 52 deletions AGENTS.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/src/content/docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ cli/
│ │ ├── cli/ # defaults, feedback, fix, setup, upgrade
│ │ ├── dashboard/ # list, view, create, add, edit, delete
│ │ ├── event/ # view, list
│ │ ├── issue/ # list, events, explain, plan, view
│ │ ├── issue/ # list, events, explain, plan, view, resolve, unresolve, merge
│ │ ├── log/ # list, view
│ │ ├── org/ # list, view
│ │ ├── project/ # create, delete, list, view
Expand Down
56 changes: 56 additions & 0 deletions docs/src/fragments/commands/issue.md
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,59 @@ sentry issue plan 123456789 --cause 0
- GitHub integration configured with repository access
- Code mappings set up to link stack frames to source files
- Root cause analysis must be completed (`sentry issue explain`) before generating a plan

### Resolve and reopen issues

```bash
# Resolve immediately (no regression tracking)
sentry issue resolve CLI-G5

# Resolve in a specific release — future events on newer releases are
# regression-flagged
sentry issue resolve CLI-G5 --in 0.26.1

# Monorepo-style releases work too (no special parsing)
sentry issue resolve CLI-G5 --in spotlight@1.2.3

# Resolve in the next release (tied to current HEAD)
sentry issue resolve CLI-G5 --in @next
sentry issue resolve CLI-G5 -i @next

# Resolve in the current git HEAD — auto-detects the Sentry repo from
# your git origin remote (hard-errors if it can't)
sentry issue resolve CLI-G5 --in @commit

# Explicit commit + repo (no git inspection; repo must be registered in Sentry)
sentry issue resolve CLI-G5 --in @commit:getsentry/cli@abc123def

# Reopen a resolved issue
sentry issue unresolve CLI-G5
sentry issue reopen CLI-G5 # alias
```

:::note[How `@commit` auto-detects]
`--in @commit` reads `HEAD` and the `origin` remote, parses the remote as
`owner/repo`, then looks it up in your org's Sentry repositories (cached
locally for 7 days). If any step fails, the command stops with a clear
error pointing you at `--in @commit:<repo>@<sha>` or `sentry repo list <org>/`
— no silent fallback to a different resolution mode.
:::

### Merge fragmented issues

Consolidate multiple issues (e.g. same logical error split by Sentry's
default stack-trace grouping) into a single canonical group:

```bash
# Let Sentry auto-pick the parent (typically the largest by event count)
sentry issue merge CLI-K9 CLI-15H CLI-15N

# Pin the canonical parent explicitly — accepts the same formats as
# positional args, including org-qualified and project-alias forms
sentry issue merge CLI-K9 CLI-15H CLI-15N --into CLI-K9
sentry issue merge my-org/CLI-K9 my-org/CLI-15H --into my-org/CLI-K9
sentry issue merge cli-k9 cli-15h --into cli-k9 # alias form

# Cross-org merges are rejected — all issues must share an organization
# Non-error issue types (performance, info, etc.) cannot be merged
```
3 changes: 3 additions & 0 deletions plugins/sentry-cli/skills/sentry-cli/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,9 @@ Manage Sentry issues
- `sentry issue explain <issue>` — Analyze an issue's root cause using Seer AI
- `sentry issue plan <issue>` — Generate a solution plan using Seer AI
- `sentry issue view <issue>` — View details of a specific issue
- `sentry issue resolve <issue>` — Mark an issue as resolved
- `sentry issue unresolve <issue>` — Reopen a resolved issue
- `sentry issue merge <issue...>` — Merge 2+ issues into a single canonical group

→ Full flags and examples: `references/issue.md`

Expand Down
63 changes: 63 additions & 0 deletions plugins/sentry-cli/skills/sentry-cli/references/issue.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,4 +165,67 @@ sentry issue view FRONT-ABC
sentry issue view FRONT-ABC -w
```

### `sentry issue resolve <issue>`

Mark an issue as resolved

**Flags:**
- `-i, --in <value> - Resolve in a release, next release, or commit ('<version>' | '@next' | '@commit' | '@commit:<repo>@<sha>')`

**Examples:**

```bash
# Resolve immediately (no regression tracking)
sentry issue resolve CLI-G5

# Resolve in a specific release — future events on newer releases are
# regression-flagged
sentry issue resolve CLI-G5 --in 0.26.1

# Monorepo-style releases work too (no special parsing)
sentry issue resolve CLI-G5 --in spotlight@1.2.3

# Resolve in the next release (tied to current HEAD)
sentry issue resolve CLI-G5 --in @next
sentry issue resolve CLI-G5 -i @next

# Resolve in the current git HEAD — auto-detects the Sentry repo from
# your git origin remote (hard-errors if it can't)
sentry issue resolve CLI-G5 --in @commit

# Explicit commit + repo (no git inspection; repo must be registered in Sentry)
sentry issue resolve CLI-G5 --in @commit:getsentry/cli@abc123def

# Reopen a resolved issue
sentry issue unresolve CLI-G5
sentry issue reopen CLI-G5 # alias
```

### `sentry issue unresolve <issue>`

Reopen a resolved issue

### `sentry issue merge <issue...>`

Merge 2+ issues into a single canonical group

**Flags:**
- `-i, --into <value> - Prefer this issue as the canonical parent (must match one of the provided IDs)`

**Examples:**

```bash
# Let Sentry auto-pick the parent (typically the largest by event count)
sentry issue merge CLI-K9 CLI-15H CLI-15N

# Pin the canonical parent explicitly — accepts the same formats as
# positional args, including org-qualified and project-alias forms
sentry issue merge CLI-K9 CLI-15H CLI-15N --into CLI-K9
sentry issue merge my-org/CLI-K9 my-org/CLI-15H --into my-org/CLI-K9
sentry issue merge cli-k9 cli-15h --into cli-k9 # alias form

# Cross-org merges are rejected — all issues must share an organization
# Non-error issue types (performance, info, etc.) cannot be merged
```

All commands also support `--json`, `--fields`, `--help`, `--log-level`, and `--verbose` flags.
26 changes: 20 additions & 6 deletions src/commands/issue/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@ import { buildRouteMap } from "../../lib/route-map.js";
import { eventsCommand } from "./events.js";
import { explainCommand } from "./explain.js";
import { listCommand } from "./list.js";
import { mergeCommand } from "./merge.js";
import { planCommand } from "./plan.js";
import { resolveCommand } from "./resolve.js";
import { unresolveCommand } from "./unresolve.js";
import { viewCommand } from "./view.js";

export const issueRoute = buildRouteMap({
Expand All @@ -12,24 +15,35 @@ export const issueRoute = buildRouteMap({
explain: explainCommand,
plan: planCommand,
view: viewCommand,
resolve: resolveCommand,
unresolve: unresolveCommand,
merge: mergeCommand,
},
// `reopen` is a friendlier synonym for `unresolve` — shipped as an alias
// so either command works identically.
aliases: { reopen: "unresolve" },
defaultCommand: "view",
docs: {
brief: "Manage Sentry issues",
fullDescription:
"View and manage issues from your Sentry projects.\n\n" +
"Commands:\n" +
" list List issues in a project\n" +
" events List events for a specific issue\n" +
" view View details of a specific issue\n" +
" explain Analyze an issue using Seer AI\n" +
" plan Generate a solution plan using Seer AI\n\n" +
"Magic selectors (available for view, events, explain, plan):\n" +
" list List issues in a project\n" +
" events List events for a specific issue\n" +
" view View details of a specific issue\n" +
" explain Analyze an issue using Seer AI\n" +
" plan Generate a solution plan using Seer AI\n" +
" resolve Mark an issue as resolved (optionally in a release)\n" +
" unresolve Reopen a resolved issue (alias: reopen)\n" +
" merge Merge 2+ issues into a single group\n\n" +
"Magic selectors (available for view, events, explain, plan, resolve, unresolve):\n" +
" @latest Most recent unresolved issue\n" +
" @most_frequent Issue with the highest event frequency\n\n" +
"Examples:\n" +
" sentry issue view @latest\n" +
" sentry issue events CLI-G\n" +
" sentry issue resolve CLI-12Z --in 0.26.1\n" +
" sentry issue merge CLI-K9 CLI-15H CLI-15N\n" +
" sentry issue explain @most_frequent\n" +
" sentry issue plan my-org/@latest\n\n" +
"Alias: `sentry issues` → `sentry issue list`",
Expand Down
Loading
Loading