Dashboard › cli › Distillation
12e57912-c7b4-4ec9-9b96-31026a86aadd["lore_tm_v1_rmuykSQtr70cz3_Z9nIiZYAl68K5QfMVao2EIyN33j8","lore_tm_v1_NRzXNxpDdFg5Cea9h48FzTCXRdXdipfaG3-aI7CZCNM","lore_tm_v1_WjcAxwCn8fuHO0ZzlsWItOafWa08DMjK0Ehuuqcv_BQ","lore_tm_v1_g5ZFu2Wg9Vtdp1J_L3LV5IglqiPgdfETp771-K2-fi4","lore_tm_v1_LiI9uXsjTmjTUJokI1R1rCW7TCfGiyCbC6p3tkFvH8k","lore_tm_v1_OZ5X_9EwZTRkySBYMFucjINSa8sHVK2J6zB81QCeWEs","lore_tm_v1_ByZDV7eqIgB4nClDWvu4YBd6KMPwldZWpv4e5Jud730","lore_tm_v1_-P_3qDrGovAyKbtIpCqvl11mEDNHTtyKmXlXAYcaeEA"]
Date: Sep 9, 2026
repo-setup before situation skills. Skills live under .agents/skills/, generated from canonical skills/ by scripts/sync-skills.mjs.package.json for the latest scripts. Run commands from packages/cli, or from the repository root via pnpm --filter sentry run <script>.devDependencies, never dependencies, because everything is bundled with esbuild and CI enforces this via pnpm run check:deps.pnpm add -D <package> with the -D flag.@sentry/api provides response types, import them directly rather than creating redundant Valibot schemas in src/types/sentry.ts.node:* standard-library APIs and do not reintroduce Bun.*, bun:test, or bun CLI commands.execFileSync with array arguments over string-based execSync to avoid shell injection.buildCommand from ../../lib/command.js, never directly from @stricli/core; the wrapper adds telemetry, --json/--fields, and output rendering. Command functions are async *func() generators that yield new CommandOutput(data) and may return { hint }; commands must not add their own json flag, call stdout.write(), or branch on flags.json.buildRouteMap from ../../lib/route-map.js, never directly from @stricli/core. Standard aliases are auto-generated as list → ls, view → show, delete → remove/rm, and create → new; these aliases must not be manually duplicated.value.split(",") or flags.x.flatMap((v) => v.split(",")).src/lib/formatters/<domain>.ts; command files should focus on argument parsing, API orchestration, and output dispatch. If a command file exceeds approximately 400 lines, extract formatting helpers.mdKvTable(), colorTag(), escapeMarkdownCell(), and renderMarkdown(); raw muted()/chalk must not appear in output strings.buildDeleteCommand() from src/lib/mutate-command.ts, which auto-injects --yes, --force, and --dry-run with -y, -f, and -n; create commands should use DRY_RUN_FLAG and DRY_RUN_ALIASES.-c next, -c prev, and -c first; "last" is a silent alias for "next". Navigation hints must use paginationHint() from src/lib/list-command.ts, not manually assembled navParts.buildOrgListCommand for fully automatic org-scoped lists, 2. dispatchOrgScopedList with overrides, 3. buildListCommand with manual pagination.--limit exceeds API_MAX_PER_PAGE (100), list commands must transparently fetch multiple pages, set perPage = Math.min(flags.limit, API_MAX_PER_PAGE), and continue until results.length >= limit or pages are exhausted.per_page value larger than API_MAX_PER_PAGE to the API; the server silently caps oversized values, causing commands to return fewer items than requested.validateHexId(value, label) for 32-character hex trace/log IDs with automatic UUID-dash stripping, validateSpanId(value) for 16-character hex span IDs with dash stripping, and validateTraceId(value) as a thin wrapper around validateHexId; all normalize to lowercase and throw ValidationError for invalid input."date", not "time", and sort types should be exported from the API layer, such as SpanSortValue from api/traces.ts.pnpm run generate:docs, which runs generate:command-docs then generate:skill; generation also runs automatically through dev, build, typecheck, and test.docs/src/content/docs/commands/*.md are gitignored; handwritten command content belongs in docs/src/fragments/commands/; generated skills under plugins/sentry-cli/skills/sentry-cli/ are committed; pnpm run check:fragments validates fragment-to-route consistency.CliError from src/lib/errors.ts; use EXIT.* constants rather than hardcoded numeric exit codes outside errors.ts. Relevant mappings include ContextError → 22 for omitted context, ResolutionError → 23 for a provided value not found, and ValidationError → 21 for malformed input.fuzzyMatch() from src/lib/fuzzy.ts and show at most 5 matches.catch blocks are prohibited in src/; every catch must rethrow, log with log.debug()/log.warn(), or return a fallback while logging the suppression. Command files should use logger.withTag("command-name")..github/workflows/pr-risk.yml; apps/cli-docs/src/fragments/commands/agent-conversation.md; packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md; references agent-conversation.md, alert.md, cli.md, explore.md, feedback.md, init.md, issue.md, monitor.md, org.md, project.md, release.md, replay.md, repo.md, team.md, trace.md, trial.md under packages/cli/plugins/sentry-cli/skills/sentry-cli/references/; scripts packages/cli/script/check-fragments.ts, packages/cli/script/generate-command-docs.ts, packages/cli/script/generate-skill-markdown.ts, packages/cli/script/generate-skill.ts; source files packages/cli/src/commands/agent-conversation/list.ts, packages/cli/src/commands/agent-conversation/view.ts, packages/cli/src/lib/command.ts, packages/cli/src/lib/introspect.ts, packages/cli/src/lib/list-command.ts, packages/cli/src/lib/mutate-command.ts; tests packages/cli/test/commands/agent-conversation/list.test.ts, packages/cli/test/commands/agent-conversation/view.test.ts, packages/cli/test/lib/command.test.ts, packages/cli/test/lib/introspect.property.test.ts, packages/cli/test/lib/introspect.test.ts, and packages/cli/test/script/generate-skill-markdown.test.ts.