Dashboard › cli › Distillation
8ff4118a-8f10-4d50-bb84-f2bd383ea0d7["lore_tm_v1_xJzeE4QTacKyarfjE0egrcLJWWOAwHx8KIZSPA5OHQU","lore_tm_v1_VSxi5-j5mncr3QchZnvXDcOiZu5S4w_iUb17hTnKgVA","lore_tm_v1_QAWs66E2gTGSCr5hPPJ6a0JgaVd_bCZQZLtRAiP4r5A","lore_tm_v1_2ebXG8O0hqEXIWSmN3p9OPLD8h7dPFNsYfbbW5HtHYc"]
/home/byk/.local/share/opencode/worktree/0e8c2f3bbe145a3280d6fb6ed900a5121f382cf0/toolkit-bridge-upgrade contained 19 entries: .craft.yml, .git, .github/, .gitignore, .lore.md, .nojekyll, .npmrc, AGENTS.md, apps/, CHANGELOG.md, codemods/, docs/, LICENSE.md, node_modules/, package.json, packages/, pnpm-lock.yaml, pnpm-workspace.yaml, README.md.dbee7e9f2a4555e044f74dfebad002cccfa43a1f and base revision ec83887a16f780f32fba4b7d710bad262dba3a22, each repeated consistently; the verification command also emitted SHA-256 a84a52f92f46526431f9d1572166676d68542683797142d9116d2bee61de48ea for stdin.repo-setup before situation skills..agents/skills/, generated from canonical skills/ by scripts/sync-skills.mjs.triage → explore → plan → implement → review → ship; worker is a deprecated alias of implement.explore uses OpenAI gpt-5-mini; implement uses Moonshot kimi-k2.7-code; ship uses xAI Grok grok-build-0.1.New operator chat or Operator guidance: skip triage and must be treated as the task and answered in the conversation..lore.md when present; target repositories require reading their AGENTS.md / CONTRIBUTING.md first.sentry api must preserve rawApiRequest() status text; empty textual non-2xx bodies must produce an HTTP status/request fallback; JSON mode must expose {status, statusText, body} so empty success and error responses remain distinguishable.Uint8Array successes must bypass formatters and remain raw; binary errors must emit only status/content-type/byte-count summaries, never bytes or JSON coercion; prompts must never block scripted runs or interleave with stdout JSON.applyPatch() always computes SHA-256 inline and returns it, with no separate verification step.bspatch.ts applies TRDIFF10 patches whose 32-byte header contains magic, controlLen, diffLen, and newSize, with integer fields encoded as i64 little-endian.zstdDecompressSync because it needs random access; diff and extra blocks stream through createZstdStreamReader using Node Transform → Web ReadableStream → BufferedStreamReader.loadOldBinary() copies the old binary to a temporary file using COPYFILE_FICLONE for a CoW reflink, falling back to a regular copy, then reads it into memory.cleanupPatchResources() must run every cleanup step regardless of earlier failures; write errors are captured early with writer.on('error') to prevent ERR_UNHANDLED_ERROR on ENOSPC or EIO.script/check-stale-references.ts reads packageManager from package.json (example pnpm@10.11.0), dynamically derives stale package managers, and scans developer-facing docs/scripts for stale <pm> run, <pm> remove, <pm> add -d, requires <pm>, and <pm> installed references.check:stale-refs excludes user-facing global-install instructions in fenced blocks containing install -g or add -g, excludes itself, and excludes node_modules/; it is included in the CI lint job. The script must exclude itself because its JSDoc examples otherwise cause false positives.check:stale-refs is intentionally package-manager-generic: changing packageManager from pnpm to yarn should automatically flag developer-facing pnpm run references without manual pattern updates.src/commands/issue/list.ts, LIFETIME_FIELDS = new Set(['count','userCount','firstSeen','lastSeen']); these fields are stripped by collapse=lifetime on the issue-list endpoint.buildListApiOptions(json, fields) sets collapseLifetime only when json && fields !== undefined && fields.length > 0 && !fields.some(f => LIFETIME_FIELDS.has(f)); human output never collapses lifetime.buildIssueListCollapse() always starts with ['filtered','unhandled'], conditionally followed by 'lifetime' and then 'stats'.ISSUE_DETAIL_COLLAPSE safely includes 'lifetime' because the detail endpoint preserves top-level fields; count, userCount, firstSeen, and lastSeen are always present for issue view and may be absent only for issue list when collapse=lifetime is active.IssueViewOutputSchema in src/types/sentry.ts extends SentryIssueSchema with event, org, replayIds, and trace, which are added by jsonTransformIssueView; view.ts wires this through schema: IssueViewOutputSchema in output configuration.generateProjectStructure() groups always use the ├── prefix because standalone entries always follow groups.generate-docs-sections.ts project-structure rendering adds help.ts manually before sorting; groups and standalones are each sorted alphabetically within their sections; the final standalone uses └──, other standalones use ├──; output is a fenced code block containing the cli/ tree.installAgentSkills() in src/lib/agent-skills.ts installs the sentry-cli skill only to ~/.agents/skills/sentry-cli/ and ~/.claude/skills/sentry-cli/; OpenCode is never an installation target.sentry-cli skill source of truth is plugins/sentry-cli/skills/sentry-cli/SKILL.md (602 lines) plus references/ containing 28 per-command .md files.OPENCODE_CLIENT in src/lib/detect-agent.ts only for telemetry, not skill installation; .opencode/ and opencode.json* are gitignored at lines 72–74..cursor/skills/sentry-cli/ and point into plugins/; OpenCode scans ~/.claude/skills/**/SKILL.md and ~/.agents/**/SKILL.md, but does not scan .cursor/.installAgentSkills() does not create top-level agent roots because their presence signals an already-installed compatible agent; skills update on every version bump, and writes use same-directory atomic rename from .<name>.<pid>.<rand>.tmp to prevent readers seeing partial files.bundle-sources was chosen before print-sources because SourceBundleWriter.writeObject() in @sentry/symbolic@13.4.0 provides the needed callback-provider shape for reading from disk.print-sources was deferred because ObjectFile in @sentry/symbolic@13.4.0 lacks a sourceFiles() enumeration method; it is blocked pending source enumeration from Dav1dde in a future @sentry/symbolic release.@sentry/symbolic@13.4.0 published, and CLI PR #1124 merged.