Dashboard › cli › Distillation
28a257c1-17c4-4b86-9e83-cf75ba5b82d2["lore_tm_v1_Lo75V0Xrk2jUV0mExjGzWuXrLHwkl1v5y2Z3bMzSBBE","lore_tm_v1_sLkTs5nVotwtNiJGzydY-Rjq7oSMURjc4YvWW_MMiyM","lore_tm_v1_aqQ_7dalH2Jib10V5T-9diwHEeOeyl18zbXeibdiBHw","lore_tm_v1_P8f3_eql0iDu7-vyXhQ2Qk5jhTmQ1ODQxY_4EP8CrZE","lore_tm_v1_2ciQDcI96R77U90_vVlQmhfPUqDE6IV9VD1nOBKgqKo","lore_tm_v1_L-9_ZPKUA4J3qRAcBAFtzdIH-pCimQ6lbtji_-E2mVI","lore_tm_v1_4-79ALaR2ByXMdFlVcGe5Pioob1-IpMeZwd-3iwBAY0","lore_tm_v1_Df24VvJRikXOYP6nKp0Ttlqu3kceqzGVIqU1XPNchFw","lore_tm_v1_L8HtxT-KpNxDfAAZjD-KeAajtnmrZ-jajxg3XbyoYxk","lore_tm_v1_ksLZRXqaBGmVgZcjqeWZAoGdAoQXPYmdudGHOGPO8SI","lore_tm_v1_-0WFIGrBPR_APFB-6nRiKpSfWr-MBxJHs7uifvO76Kk","lore_tm_v1_PIdX-Ub68-5Ksq8Sh5w-2l-sEzeMmoZTT0mc74TDMpE","lore_tm_v1_E9YoW3O53fDDrIoZVEGKiakbClrIhxHjKzNoj-94cPg","lore_tm_v1_taylH6K9LkidEBee6DXobx8YxhF37OuFanDcdVGMmdw","lore_tm_v1_cx9TfskO8aVYjK_wcayFKPEb-Fa2C5o-CJFiSHM1gMU","lore_tm_v1_rZKG9DtZpZrtj8MPiROTGk6TOAe22ZXZzGldEj9AUuA","lore_tm_v1_VfaVtb5ehte85rdKj2-2Da0V7-vnQGRL5tzdAlWmKEs","lore_tm_v1_AoxghVQhOYap3ibcoFTmd2T9DWtfJS4tyZswKeHHCTo","lore_tm_v1_4FEAW9Gm-yjLVAIP68XhGFceDaJzMCzV4i_SQ9a0AV4","lore_tm_v1_4XO2B9Vz65O-xqH9L8PSqOReNxqNMDEePm-M7unNLjc","lore_tm_v1_U7ZHeshJbN_VeboclvW37sR9smjYc2RmwL1HN33Wo44","lore_tm_v1_3Q9lLFwASSO9boB9OEBCo4qzLj52CavVBraP5lXFGh4","lore_tm_v1_dYB__zq2MQUzavUTqJ9heWTQrsNE7MuEfncnWUBoe0k","lore_tm_v1_idNPfD71zgri-TQsrZiDoX9GDYpPLJI9YuUYP8RG1dk","lore_tm_v1_LLPgx-xNq78rozd2UXi6TGyDSpQ3SWhlrnw-hxTK6kI","lore_tm_v1_Alj7HW6BY4R2oGiBCbXLAT_mDpptzqzeIDD0Qp34Bm4","lore_tm_v1_wOS4Etj7qfvKmJf_5JQRm0yMkvdjynQCtWzJh_LEYGA","lore_tm_v1_BNje3lE7a8FE2hbaPm8WmAKfks567jlXjs5rXR2_aLU","lore_tm_v1_Wfi_SzWxL8JZm5EO2EUweloehAJIQifmlFN3VHtmrWk","lore_tm_v1_YqjjDHLqqeNx3n8J6RT6xz1DmbLbnV6kBTL23jjLAts","lore_tm_v1_yG8q-THos2G5P4KU9Tlqq6B7zGKuRqtbtaJ2E2ftyQI","lore_tm_v1_M7KWiBwT2SQFqUNV2hirBNhbI3kNdFoGlWjT-092EdU"]
dfcceb584e52de2d477015a74dfe42ac1e26e5f44ede4bf5da2afc9e343179d8.packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md contains exactly 3 agent-conversation matches: line 459 documents sentry agent-conversation list [<org>]; line 460 documents sentry agent-conversation view [<org>/]<conversation-id>; line 462 links to references/agent-conversation.md.packages/cli/src/app.ts maps plural "agent-conversations" to singular "agent-conversation" in PLURAL_TO_SINGULAR; exposes "agent-conversation": conversationRoute; retains hidden backward-compatible alias "agent-conversations": conversationListCommand; and sets hideRoute["agent-conversations"] = true.packages/cli/script/generate-skill.ts generates files with generateAllSkillFiles(routes as unknown as RouteMap), removes REFERENCES_DIR, writes each generated file under SKILL_DIR, writes index.json, and generates src/generated/skill-content.ts as SKILL_FILES: ReadonlyMap<string, string>.\, backticks, and ${ before placing content in template literals. Generated-output reporting is Generated ${OUTPUT_PATH} + ${refCount} reference files + ${INDEX_JSON_PATH} + ${SKILL_CONTENT_PATH}.packages/cli/src/generated/skill-content.ts, including sentry agent-conversation list [<org>], 5 list examples, sentry org view [<org>], 2 org-view examples, the gh conventions section, and index entries for org view and agent-conversation list..gitignore and packages/cli/.gitignore: packages/cli/src/generated/, src/generated/, packages/cli/src/sdk.generated.ts, packages/cli/src/sdk.generated.d.cts, src/sdk.generated.ts, and src/sdk.generated.d.cts; banner-sixel.ts is explicitly unignored.packages/cli/test/script/generate-skill-markdown.test.ts tests extractCommandPathFromHeading(), formatCommandExamples(), and matchExampleToCommand(), using listCommand, viewCommand, and buildCommandInfo().`sentry issue view <issue-id>` β sentry issue view, `sentry project create [<org>/]<name>:<platform>...` β sentry project create, and `sentry auth status` β sentry auth status; descriptive heading Create a project returns undefined.listCommand.__primaryUsage is undefined, list positional syntax is [<org>], and list examples include # Explicit organization\nsentry agent-conversation list my-org.[<org>/]<conversation-id> and exactly 3 ordered examples: 1. auto-detected organization via sentry agent-conversation view conv-123; 2. explicit organization via sentry agent-conversation view my-org/conv-123; 3. JSON output via sentry agent-conversation view my-org/conv-123 --json.formatCommandExamples(view.examples) is expected to produce one **Examples:** section with a fenced bash block containing the 3 view examples and their comments, separated by blank lines.sentry project create web:javascript api:python-django to map to sentry project create; bare sentry auth examples to map to default sentry auth login; and longer command path sentry auth login to win over shorter prefixes.plugins/sentry-cli/skills/sentry-cli/references/project.md and requires heading ### `sentry project create [<org>/]<name>:<platform>...` .:βthere is no space-separated form.sentry project create "My New App":, sentry project create my-new-app javascript-nextjs, and sentry project create my-org/my-new-app javascript-nextjs; they require sentry project create web:javascript api:python-django worker:node and sentry project create my-new-app:javascript-nextjs.packages/cli/src/lib/agent-skills.ts imports rename, rm, and writeFile from node:fs/promises, and imports embedded SKILL_FILES from ../generated/skill-content.js.atomicWriteFile(destPath, content) writes to a uniquely named temp file in the destination directory, then calls rename(tempPath, destPath). Because the temp and destination share a filesystem, the POSIX rename is atomic and a concurrent reader never observes a truncated or partially-written file.writeFile truncates SKILL.md before rewriting it, allowing agents scanning the skill tree to read empty frontmatter and silently drop the skill..<basename>.<pid>.<rand>.tmp, such as .SKILL.md.1234.ab12.tmp.SKILL.md/*.md globs agents use.atomicWriteFile() requires dirname(destPath) to exist. On failure it best-effort removes the temp path with rm(tempPath, { force: true }), captures cleanup failures at debug level with tag "setup.step": "agent-skills-cleanup", then rethrows the original error.writeSkillFiles(skillPath) iterates over every [relativePath, content] in SKILL_FILES, creates missing parent directories recursively with mode 0o755, calls atomicWriteFile() for each file, counts paths beginning with references/, and returns { path, created: !alreadyExists, referenceCount }.writeSkillFiles() captures the exception at warning level with tag "setup.step": "agent-skills" and returns null.installAgentSkills(homeDir) detects existing ~/.agents and ~/.claude roots, checks each detected root with accessSync(parentDir, constants.W_OK), skips absent or non-writable roots, and writes embedded skill files only beneath detected roots.packages/cli/src/commands/init.ts documents sentry init as experimental and potentially source-modifying. It supports <org>/<project>, <org>/, <project>, and directory-path positionals; path-like arguments begin with ., /, or ~.sentry init examples are ordered as: 1. sentry init; 2. sentry init acme/; 3. sentry init acme/my-app; 4. sentry init my-app; 5. sentry init acme/my-app ./my-project; 6. sentry init ./my-project.sentry init flags include --yes; --dry-run; variadic --features supporting errors,tracing,logs,replay,profiling,crons,agent-tracing,mcp-observability; --team/-t; --app; and --tui, defaulting to true with --no-tui as the plain-log fallback.sentry init callers must provide all interactive choices required to start setup. validateNonInteractiveInit() runs before project lookup, organization prefetch, or UI creation; failures set wizard.outcome=context_error.sentry.apps/cli-docs/src/fragments/commands/agent-conversation.md is an empty file with exactly 0 lines.packages/cli/test/lib/introspect.test.ts tests buildCommandInfo, extractAllRoutes, extractFlags, extractRouteGroupCommands, getPositionalString, isCommand, isRouteMap, and resolveCommandPath.getPositionalString() tests require: undefined β ""; tuple org, project β <org> <project>; optional tuple member β <required> [<optional>]; unnamed tuple members β <arg0> <arg1>; named array β <command...>; unnamed array β <args...>.extractFlags() tests require undefined flags to return []; boolean json to retain brief Output JSON, default false, optional: true, variadic: false, and hidden: false; parsed limit to retain default 25 and optional: false; and hidden verbose to yield hidden: true.buildCommandInfo() tests require path, brief, full description, positional syntax, flags, aliases, and examples to be preserved; no-positionals commands yield ""; __primaryUsage: "<name>:<kind>..." overrides introspected array syntax; and structured __examples take precedence over stale legacy document examples.# Use automatic organization detection\nsentry thing list; 2. # Select an organization explicitly\nsentry thing list my-org; legacy sentry thing list stale-org is excluded.extractRouteGroupCommands() tests require visible list and view commands to become sentry thing list and sentry thing view, while hidden secret and nested route-map entries are skipped.packages/cli/test/lib/help.test.ts, packages/cli/test/lib/help-positional.test.ts, packages/cli/test/lib/help-json.test.ts, packages/cli/test/commands/help.test.ts, and packages/cli/test/lib/bench/helpers.test.ts.renderJsonHelp/JSON-related matches in packages/cli/test/lib/help-json.test.ts.renderJsonHelp() tests require no --json to return undefined; bare app plus --json to emit the full tree with routes and flags; command prefix plus --json to emit command metadata; and JSON output to be pretty-printed with 2-space indentation and a trailing newline.--fields path, inline --fields=path, and comma-separated --fields path,brief; resulting objects contain only the requested keys.--json occurring after -- is treated as the wrapped commandβs flag and ignored by renderJsonHelp().sentry issue nope --help --json, and top-level unknown tokens to return JSON error objects. Spaced values of value-taking globals, such as --org acme, must be consumed as flag values rather than treated as route segments.rewriteHelpJsonToHelpCommand() returns undefined unless both help and JSON are requested; rewrites ["cli","nope","--help","--json"] to ["help","--json","cli","nope"]; recognizes -h regardless of ordering; and carries --fields through.bbaa7b3b722b87f1bccfe84063269cbbcabe2741.apps/cli-docs/src/fragments/commands/agent-conversation.md; packages/cli/plugins/sentry-cli/skills/sentry-cli/SKILL.md; 15 skill references (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); scripts check-fragments.ts, generate-command-docs.ts, generate-skill-markdown.ts, and generate-skill.ts; commands agent-conversation/list.ts and agent-conversation/view.ts; libraries command.ts, introspect.ts, list-command.ts, and mutate-command.ts; tests agent-conversation/list.test.ts, command.test.ts, introspect.property.test.ts, introspect.test.ts, and generate-skill-markdown.test.ts.formatCommandExamples() emits raw fenced Bash blocks in packages/cli/script/generate-skill-markdown.ts:39-47, but inputs come only from repository-owned command metadata in packages/cli/src/commands/agent-conversation/list.ts:117-138 and view.ts:68-81; all 8 examples were single-line, fence-free, control-free, and non-destructive; generated website and skill blocks were balanced and identical.prepareNativeDocs() in packages/cli/src/lib/command.ts:440-455; the fixed route tree in packages/cli/src/app.ts:111-150 supplies command definitions; no user, API, environment, or plugin data reaches the path; and the patch adds no escape sequences or control characters.string[] contract in packages/cli/src/lib/introspect.ts:101-113,304-308; JSON help still uses JSON.stringify through formatJson() in packages/cli/src/lib/help.ts:421-428 and packages/cli/src/lib/formatters/json.ts:169-170, preserving embedded newlines as valid JSON strings.packages/cli/script/generate-skill.ts:929-954; packages/cli/src/lib/agent-skills.ts:105-123 writes skills but never executes them; examples contain no credentials or local data.CommandDocumentation adds documentation-only fields in packages/cli/src/lib/command.ts:97-114; list and delete wrappers only pass the object to buildCommand() in packages/cli/src/lib/list-command.ts:544-623 and packages/cli/src/lib/mutate-command.ts:328-410; authentication, flags, confirmation guards, and command functions are unaffected.packages/cli/script/check-fragments.ts:250-287; route, frontmatter, marker, and required-fragment checks remain active in check-fragments.ts:74-129; the empty agent-conversation fragment was deemed safe; canonical examples appear in packages/cli/plugins/sentry-cli/skills/sentry-cli/references/agent-conversation.md:47-84.MERGE.bbaa7b3b722b87f1bccfe84063269cbbcabe2741; unchanged patch SHA-256 dfcceb584e52de2d477015a74dfe42ac1e26e5f44ede4bf5da2afc9e343179d8; all 32 changed files reviewed; git diff --check passed; no C0, C1, DEL, bidi, or selected invisible controls; closed fences in all 37 website pages and all 37 skill Markdown files; matching 59 headings across 15 changed skill references; and byte identity for all 37 embedded skill entries.