The open source coding agent.
This report summarizes scanner evidence for anomalyco/opencode, a TypeScript project with 223,389 GitHub stars. SynthScan examined 1,181,666 lines of code across 6457 source files, recording 619 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.3 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 485 finding(s).
Are imports declared and package/API names verified? 123 finding(s).
Are wrappers, guards, and repeated structures necessary? 414 finding(s).
Which changes need focused human review? 619 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 619 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | packages/core/src/tool/plugin/opencode.ts | 74 | released: Model.Info.fields.time.fields.released.annotate({ | CODE |
| CRITICAL | packages/app/src/shell/titlebar/inbox-model.ts | 174 | entry.ctx.data.session.permission.sync(entry.session.id), | CODE |
| CRITICAL | packages/app/src/shell/titlebar/inbox-model.ts | 175 | entry.ctx.data.session.form.sync(entry.session.id), | CODE |
| CRITICAL | packages/app/src/shell/titlebar/inbox-model.ts | 253 | void entry.ctx.data.session.message.sync(entry.session.id).catch((error) => { | CODE |
| CRITICAL | packages/app/src/shell/titlebar/inbox-model.ts | 298 | !vcs.settled[locationKey(entry)] && !entry.ctx.data.location.vcs.info(entry.session.location), | CODE |
| CRITICAL | packages/app/src/shell/titlebar/inbox-model.ts | 300 | entry.ctx.data.location.vcs.info(entry.session.location)?.branch.current ?? undefined, | CODE |
| CRITICAL⚡ | …ages/app/src/runtime/server/global-sync/child-store.ts | 241 | return input.data.location.mcp.server.list({ directory }) !== undefined | CODE |
| CRITICAL⚡ | …ages/app/src/runtime/server/global-sync/child-store.ts | 245 | (input.data.location.mcp.server.list({ directory }) ?? []).map((server) => [ | CODE |
| CRITICAL⚡ | …ages/app/src/runtime/server/global-sync/child-store.ts | 253 | (input.data.location.mcp.resource.list({ directory }) ?? []).map((resource) => [ | CODE |
| CRITICAL | packages/app/src/voice/tools.ts | 54 | const result = await this.ctx.sdk.api.message.list( | CODE |
| CRITICAL | packages/app/src/voice/transport.ts | 89 | const offered = await this.inputOptions.api.experimental.voice.models({ signal }) | CODE |
| CRITICAL | packages/app/src/voice/transport.ts | 117 | const response = await this.inputOptions.api.experimental.voice.session( | CODE |
| CRITICAL | packages/app/src/session/screen.tsx | 336 | (sessionID) => server.ctx.data.session.message.list(sessionID), | CODE |
| CRITICAL⚡ | packages/app/src/session/session-identity-header.tsx | 135 | props.directory ? server.ctx.data.location.vcs.info({ directory: props.directory })?.branch.current : undefined | CODE |
| CRITICAL⚡ | packages/app/src/session/session-identity-header.tsx | 138 | props.project ? server.ctx.data.location.vcs.info({ directory: props.project.worktree })?.branch.current : undefined | CODE |
| CRITICAL⚡ | packages/app/src/session/session-identity-header.tsx | 148 | void server.ctx.data.location.vcs.sync({ directory: props.directory }).catch(() => undefined) | CODE |
| CRITICAL⚡ | packages/app/src/session/session-identity-header.tsx | 151 | void server.ctx.data.location.vcs.sync({ directory: props.project.worktree }).catch(() => undefined) | CODE |
| CRITICAL | packages/app/src/session/session-identity-header.tsx | 608 | ) ?? server.ctx.sync.data.project.find((item) => isProjectDirectory(item, value)) | CODE |
| CRITICAL | packages/app/src/session/composer/location-missing.tsx | 75 | await server.ctx.sdk.api.session.move({ sessionID: props.sessionID, directory: destination }) | CODE |
| CRITICAL | packages/app/src/session/composer/region.tsx | 436 | props.model.region.state.background.subagents().map((task) => ({ | CODE |
| CRITICAL | packages/tui/test/cli/tui/dialog-select.test.tsx | 395 | expect(app.renderer.getCursorState().color.toInts()).toEqual(theme.background.action.primary.focused.toInts()) | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/v1-migrate.test.ts | 53 | expect(resolved.background.action.primary.selected.toInts()).toEqual([0, 0, 0, 0]) | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/v1-migrate.test.ts | 54 | expect(resolved.text.action.primary.selected.toInts()).toEqual(legacy.primary.toInts()) | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/v1-migrate.test.ts | 55 | expect(resolved.text.action.secondary.base.toInts()).toEqual(legacy.textMuted.toInts()) | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/v1-migrate.test.ts | 56 | expect(resolved.text.action.secondary.hovered.toInts()).toEqual(legacy.text.toInts()) | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/v1-migrate.test.ts | 57 | expect(resolved.background.feedback.error.base.toInts()).toEqual(legacy.background.toInts()) | CODE |
| CRITICAL | packages/tui/test/theme/v2/v1-migrate.test.ts | 365 | expect(resolved.background.action.primary.focused.toInts()[3]).toBe(255) | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/resolve.test.ts | 163 | expect(dialog.background.action.primary.base.equals(lightTheme.background.action.primary.base)).toBeTrue() | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/resolve.test.ts | 164 | expect(dialog.background.action.primary.focused.equals(lightTheme.background.action.primary.focused)).toBeTrue() | CODE |
| CRITICAL⚡ | packages/tui/test/theme/v2/resolve.test.ts | 165 | expect(dialog.text.action.primary.base.equals(lightTheme.text.action.primary.base)).toBeTrue() | CODE |
| CRITICAL | packages/tui/test/theme/v2/resolve.test.ts | 240 | expect(lightTheme.text.action.secondary.base.toInts()).toEqual([18, 52, 86, 255]) | CODE |
| CRITICAL | packages/tui/test/theme/v2/resolve.test.ts | 241 | expect(lightTheme.text.action.secondary.hovered.toInts()).toEqual([35, 69, 103, 255]) | CODE |
| CRITICAL | packages/tui/test/theme/v2/resolve.test.ts | 258 | expect(expanded.background.action.primary.pressed.toInts()).toEqual([18, 52, 86, 255]) | CODE |
| CRITICAL | packages/tui/test/theme/v2/resolve.test.ts | 336 | expect(raised.text.action.primary.pressed.toInts()).toEqual([68, 68, 68, 255]) | CODE |
| CRITICAL | packages/tui/test/theme/v2/resolve.test.ts | 337 | expect(raised.text.action.primary.focused.toInts()).toEqual([85, 85, 85, 255]) | CODE |
| CRITICAL | packages/tui/src/feature-plugins/sidebar/todo.tsx | 11 | props.context.data.session.message.list(props.sessionID), | CODE |
| CRITICAL | packages/tui/src/feature-plugins/sidebar/footer.tsx | 16 | props.context.data.location.integration.list(session()?.location ?? props.context.location), | CODE |
| CRITICAL | packages/tui/src/feature-plugins/sidebar/footer.tsx | 90 | const branch = props.context.data.location.vcs.info(props.context.location)?.branch.current | CODE |
| CRITICAL | packages/tui/src/feature-plugins/sidebar/mcp.tsx | 9 | const list = createMemo(() => props.context.data.location.mcp.server.list(session()?.location) ?? []) | CODE |
| CRITICAL | packages/tui/src/feature-plugins/sidebar/context.tsx | 12 | const msg = createMemo(() => props.context.data.session.message.list(props.sessionID)) | CODE |
| CRITICAL | packages/tui/src/feature-plugins/sidebar/context.tsx | 17 | contextUsage(msg(), props.context.data.location.model.list(session()?.location), session()?.revert?.messageID), | CODE |
| CRITICAL | packages/tui/src/feature-plugins/home/footer.tsx | 18 | const list = createMemo(() => props.context.data.location.mcp.server.list(props.context.location) ?? []) | CODE |
| CRITICAL | packages/tui/src/feature-plugins/system/diff-viewer.tsx | 118 | JSON.stringify([locationKey(location()), props.context.data.location.vcs.info(location())?.branch.current]), | CODE |
| CRITICAL | packages/tui/src/feature-plugins/system/diff-viewer.tsx | 268 | props.context.client.vcs.branch.list({ location: props.location, search, limit: 100 }), | CODE |
| CRITICAL | packages/tui/src/feature-plugins/system/stats.tsx | 143 | return props.context.client.experimental.session.stats({ | CODE |
| CRITICAL | packages/tui/src/feature-plugins/prompt/footer.tsx | 42 | props.context.data.session.message.list(props.sessionID), | CODE |
| CRITICAL | packages/tui/src/feature-plugins/prompt/footer.tsx | 43 | props.context.data.location.model.list(session.location), | CODE |
| CRITICAL | packages/tui/src/component/migration-overlay.tsx | 22 | const status = await client.api.experimental.migration.v1.status({ signal: abort.signal }) | CODE |
| CRITICAL | packages/plugin/src/gui/context.typecheck.ts | 160 | ctx.stores.prefs.value.items.push({ shown: true }) | CODE |
| CRITICAL | packages/gui-plugins/src/btw/model.ts | 35 | const messages = session.id ? session.server.data.session.message.list(session.id) : [] | CODE |
| CRITICAL | packages/gui-plugins/src/btw/panel.tsx | 41 | const models = props.session.server.data.location.model.list(ref) | CODE |
| CRITICAL | packages/gui-plugins/src/context/indicator.tsx | 31 | props.session.id ? props.session.server.data.session.message.list(props.session.id) : [], | CODE |
| CRITICAL | packages/gui-plugins/src/context/indicator.tsx | 43 | props.session.id ? props.session.server.data.session.get(props.session.id) : undefined, | CODE |
| CRITICAL | packages/gui-plugins/src/context/indicator.tsx | 73 | const spent = createMemo(() => (props.session.id ? props.session.server.data.session.cost(props.session.id) : 0)) | CODE |
| CRITICAL | packages/gui-plugins/src/context/catalog.ts | 52 | const providers = session.server.data.location.provider.list(ref) | CODE |
| CRITICAL | packages/gui-plugins/src/context/catalog.ts | 53 | const models = session.server.data.location.model.list(ref) | CODE |
| CRITICAL | packages/gui-plugins/src/terminal/model.ts | 80 | const list = await session.server.client.experimental.persistentPty.list({ sessionID: session.id }) | CODE |
| CRITICAL | packages/gui-plugins/src/details/location-workspace.tsx | 21 | when={!props.session.server.data.session.get(props.session.id)?.parentID} | CODE |
| CRITICAL | packages/gui-plugins/src/details/server-panel.tsx | 727 | const result = await props.session.server.client.plugin.list({ location: { directory } }) | CODE |
| CRITICAL | packages/gui-plugins/src/sources/renderer.tsx | 37 | turnSources(turnMessages(session.server.data.session.message.list(session.id), id)).sources.length | CODE |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | script/oxlint/anti-slop/shared/function-parameters.ts | 13 | export function functionParameterTypeAnnotation( | CODE |
| LOW | script/oxlint/anti-slop/shared/function-parameters.ts | 29 | export function functionParameterBindingName( | CODE |
| LOW | script/oxlint/anti-slop/shared/reflect-method.ts | 13 | export function isGlobalReflectMethodCall( | CODE |
| LOW | script/oxlint/anti-slop/shared/dictionary-types.ts | 128 | function isEffectivelyEmptyTypeLiteral(type: ESTree.TSTypeLiteral): boolean { | CODE |
| LOW | script/oxlint/anti-slop/shared/dictionary-types.ts | 132 | function isEffectivelyEmptyInterface( | CODE |
| LOW | script/oxlint/anti-slop/shared/dictionary-types.ts | 144 | function resolvedSubstitutionArgument( | CODE |
| LOW | script/oxlint/anti-slop/shared/dictionary-types.ts | 296 | export function classifyUnsafeDictionaryValue( | CODE |
| LOW | script/oxlint/anti-slop/shared/dictionary-types.ts | 480 | export function isPopulatedObjectExpression(expression: ESTree.Expression): boolean { | CODE |
| LOW | script/oxlint/anti-slop/shared/dictionary-types.ts | 493 | export function isKnownEvidenceExpression(expression: ESTree.Expression): boolean { | CODE |
| LOW | script/oxlint/anti-slop/shared/type-alias-resolution.ts | 117 | export function createTypeAliasEnvironment( | CODE |
| LOW | …ipt/oxlint/anti-slop/shared/lexical-type-parameters.ts | 14 | function collectInferTypeParameterNames( | CODE |
| LOW | …ipt/oxlint/anti-slop/shared/lexical-type-parameters.ts | 35 | export function lexicalTypeParameterNames( | CODE |
| LOW | script/oxlint/anti-slop/rules/no-widen-then-assert.ts | 18 | function unwrapExpressionParentheses(expression: ESTree.Expression): ESTree.Expression { | CODE |
| LOW | script/oxlint/anti-slop/rules/no-widen-then-assert.ts | 143 | function isDefinitelyNarrowerRecordType(type: ESTree.TSType): boolean { | CODE |
| LOW | script/oxlint/anti-slop/rules/no-widen-then-assert.ts | 171 | function resolvedVariableForIdentifier( | CODE |
| LOW | …t/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 6 | function isTypeAssertionExpression(node: ESTree.Node): node is TypeAssertionExpression { | CODE |
| LOW | …t/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 10 | function unwrapParenthesizedExpression(expression: ESTree.Expression): ESTree.Expression { | CODE |
| LOW | …t/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 27 | function isOutermostAssertionInChain(node: TypeAssertionExpression): boolean { | CODE |
| LOW | …t/oxlint/anti-slop/rules/no-chained-type-assertions.ts | 39 | function isForbiddenAssertionChain(node: TypeAssertionExpression): boolean { | CODE |
| LOW | …ript/oxlint/anti-slop/rules/no-known-value-widening.ts | 138 | function hasKnownCallArgumentEvidence( | CODE |
| LOW | …ript/oxlint/anti-slop/rules/no-known-value-widening.ts | 192 | function typePredicateSubjectIndex( | CODE |
| LOW | …ript/oxlint/anti-slop/rules/no-known-value-widening.ts | 253 | function isDictionaryAccumulatorTarget(destination: WideningTarget): boolean { | CODE |
| LOW | …/anti-slop/rules/no-conditional-empty-object-spread.ts | 16 | function isConditionalEmptyObjectSpread(node: ESTree.Expression): boolean { | CODE |
| LOW | …pt/oxlint/anti-slop/rules/no-unsafe-dictionary-type.ts | 61 | function isInsideTypeAliasDeclaration(node: ESTree.Node): boolean { | CODE |
| LOW | …pt/oxlint/anti-slop/rules/no-unsafe-dictionary-type.ts | 80 | function isInsideTypeParameterConstraint(node: ESTree.TSType): boolean { | CODE |
| LOW | …lop/rules/require-safety-comment-for-type-assertion.ts | 47 | function hasSafetyJustificationBefore( | CODE |
| LOW | …ipt/oxlint/anti-slop/rules/no-shape-in-symbol-names.ts | 6 | function containsForbiddenSymbolName(name: string): boolean { | CODE |
| LOW | script/github/close-prs.ts | 369 | function requireNonNegativeInteger(name: string, value: string | undefined) { | CODE |
| LOW | packages/merman/src/markdown.ts | 261 | export function createMermaidMarkdownRenderer( | CODE |
| LOW | packages/merman/src/markdown.ts | 268 | export function createMermaidCodeBlockRenderer( | CODE |
| LOW | packages/merman/src/palette.ts | 19 | export function createOpenCodeDiagramPalette(input: OpenCodeDiagramPaletteInput) { | CODE |
| LOW | packages/merman/src/palette.ts | 46 | export function resolveOpenCodeDiagramPalette( | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 402 | function horizontalSubgraphEntryTravel(subgraph: FlowchartSubgraph): HorizontalTravel { | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 406 | function horizontalSubgraphEntryLane(subgraph: FlowchartSubgraph, subgraphBound: FlowchartSubgraphBounds): number { | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 424 | function horizontalSubgraphExitJoinY( | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 462 | function alignClusteredVerticalSources(records: readonly EdgeRecord[]): EdgeRecord[] { | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 627 | function routeHorizontalSubgraphExitFanIn( | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 696 | function routeHorizontalSubgraphEntries( | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 789 | function labelIntersectsSubgraphFrame( | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 834 | function labelIntersectsRoutePaths( | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 879 | function endpointConflictsWithRoutes(route: FlowchartEdgeRoute, otherRoutes: readonly FlowchartEdgeRoute[]): boolean { | CODE |
| LOW | packages/merman/src/flowchart/routing.ts | 1448 | export function avoidFlowchartFrameBorders( | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 52 | function routeRunsAlongHorizontalBorder( | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 69 | function routeRunsAlongVerticalBorder( | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 116 | function terminalPointsTowardBounds( | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 168 | function expectResponsiveFlowchartValid(content: string, layoutMaxWidth: number) { | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 218 | function generatedWideRankFlowchart(count: number): string { | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 248 | function expectFlowchartRoutesAvoidUnrelatedNodes(layout: ReturnType<typeof layoutFlowchartDiagram>): void { | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 257 | function expectFinalFlowchartLabelLayoutUnobstructed(layout: ReturnType<typeof layoutFlowchartDiagram>) { | CODE |
| LOW | packages/merman/src/flowchart/flowchart.test.ts | 289 | function expectFlowchartLabelsUnobstructed(content: string): ReturnType<typeof layoutFlowchartDiagram> { | CODE |
| LOW | packages/merman/src/flowchart/parser.ts | 243 | function hasInternalStatementSeparator(line: string): boolean { | CODE |
| LOW | packages/merman/src/flowchart/parser.ts | 332 | export function isMermaidFlowchartDiagram(content: string): boolean { | CODE |
| LOW | packages/merman/src/flowchart/parser.ts | 336 | export function parseMermaidFlowchartDiagram(content: string): FlowchartDiagram { | CODE |
| LOW | packages/merman/src/flowchart/layout.ts | 346 | function subgraphBoundFromChildren( | CODE |
| LOW | packages/merman/src/flowchart/layout.ts | 769 | function layoutLocalSubgraphDirections( | CODE |
| LOW | packages/merman/src/flowchart/layout.ts | 910 | function collectDescendantSubgraphIds(diagram: FlowchartDiagram, subgraphId: string): Set<string> { | CODE |
| LOW | packages/merman/src/flowchart/layout.ts | 1294 | function layoutFlowchartWithDirection( | CODE |
| LOW | packages/merman/src/flowchart/style.ts | 46 | export function resolveFlowchartStyleColors( | CODE |
| LOW | packages/merman/src/flowchart/labels.ts | 41 | export function flowchartHorizontalLabelRankGap(labelWidth: number): number { | CODE |
| LOW | packages/merman/src/flowchart/labels.ts | 45 | export function flowchartVerticalBranchLabelGap(labelWidth: number): number { | CODE |
| 343 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 65 | ### Step 1: Understand the Deliverable | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 75 | ### Step 2: Collect Component Keys, Variables, and Styles | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 150 | // Step 1: Discover available libraries | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 158 | // Step 2: Search within a specific library using its libraryKey | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 213 | ### Step 3: Create the Wrapper Frame First | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 246 | ### Step 4: Build the Sections Inside the Wrapper | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 359 | ### Step 5: Validate the Full View and Transfer Images | COMMENT |
| LOW | …es/plugins/figma/skills/figma-generate-design/SKILL.md | 405 | ### Step 6: Updating an Existing View | COMMENT |
| LOW | …s/plugins/figma/skills/figma-implement-motion/SKILL.md | 46 | ### Step 1: Confirm static design context is available | COMMENT |
| LOW | …s/plugins/figma/skills/figma-implement-motion/SKILL.md | 56 | ### Step 2: Fetch authoritative motion data | COMMENT |
| LOW | …s/plugins/figma/skills/figma-implement-motion/SKILL.md | 77 | ### Step 3: Merge static and motion context | COMMENT |
| LOW | …s/plugins/figma/skills/figma-implement-motion/SKILL.md | 99 | ### Step 4: Apply the motion in code | COMMENT |
| LOW | …s/plugins/figma/skills/figma-implement-motion/SKILL.md | 105 | ### Step 5: Validate | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 12 | ## Step 1: Is `generate_diagram` the right tool? | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 32 | ## Step 2: Pick the diagram type | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 47 | ## Step 3: Universal constraints (apply to every diagram type) | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 59 | ## Step 4: Garbage in, garbage out | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 73 | ## Step 5: Will the diagram need more than Mermaid can express? | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 81 | ## Step 6: Calling the tool | COMMENT |
| LOW | …s/plugins/figma/skills/figma-generate-diagram/SKILL.md | 94 | ## Step 7: After generation | COMMENT |
| LOW | …es/plugins/figma/skills/figma-create-new-file/SKILL.md | 11 | ## Step 1: Resolve the `planKey` and `editorType` | COMMENT |
| LOW | …es/plugins/figma/skills/figma-create-new-file/SKILL.md | 21 | ## Step 2: Call create_new_file | COMMENT |
| LOW | …ls/figma-generate-library/references/error-recovery.md | 220 | ### Step 1: Inventory deterministic names | COMMENT |
| LOW | …ls/figma-generate-library/references/error-recovery.md | 244 | ### Step 2: Reconstruct state from inventory | COMMENT |
| LOW | …ls/figma-generate-library/references/error-recovery.md | 256 | ### Step 3: Identify the resume point | COMMENT |
| LOW | …s/figma-generate-library/references/discovery-phase.md | 309 | ### Step 1: Discover available libraries with `get_libraries` | COMMENT |
| LOW | …s/figma-generate-library/references/discovery-phase.md | 337 | ### Step 2: Search with `search_design_system` | COMMENT |
| LOW | …kages/plugins/figma/skills/figma-code-connect/SKILL.md | 30 | ## Step 1: Parse the Figma URL | COMMENT |
| LOW | …kages/plugins/figma/skills/figma-code-connect/SKILL.md | 48 | ## Step 2: Discover Unmapped Components | COMMENT |
| LOW | …kages/plugins/figma/skills/figma-code-connect/SKILL.md | 63 | ## Step 3: Fetch Component Properties | COMMENT |
| LOW | …kages/plugins/figma/skills/figma-code-connect/SKILL.md | 82 | ## Step 4: Identify the Code Component | COMMENT |
| LOW | …kages/plugins/figma/skills/figma-code-connect/SKILL.md | 98 | ## Step 5: Create the Template File (.figma.ts) | COMMENT |
| LOW | …kages/plugins/figma/skills/figma-code-connect/SKILL.md | 317 | ## Step 6: Validate | COMMENT |
| LOW | .github/workflows/triage-pr-standards.yml | 86 | // Step 1: Check title format | COMMENT |
| LOW | .github/workflows/triage-pr-standards.yml | 111 | // Step 2: Check for linked issue (skip for docs/refactor/feat PRs) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | patches/install-korean-ime-fix.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | script/sdk-docs.ts | 1 | #!/usr/bin/env bun | COMMENT |
| LOW | packages/ui/src/components/thinking-heading.stories.tsx | 41 | // Custom properties driven by sliders: | COMMENT |
| LOW | packages/ui/src/icons/new-icons.ts | 121 | "square-arrow-top-right": { name: "square-arrow" }, | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 541 | methodID: "chatgpt-token-sharing", | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 561 | // model.capabilities = { tools: true, input: ["text", "image", "pdf"], output: ["text"] } | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 581 | // display_name: "GPT-6-Future", | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 601 | // | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 621 | // }), | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 641 | // slug: "gpt-6-future", | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 661 | // value: Credential.OAuth.make({ | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 681 | // until: (current) => current.some((model) => model.providerID === Provider.ID.openai && model.id === "gpt-6- | COMMENT |
| LOW | packages/core/test/plugin/provider-chatgpt.test.ts | 1001 | type: "oauth", | COMMENT |
| LOW | packages/core/src/workspace.ts | 361 | // KeyedMutex at end-of-series consolidation; filesystem/search.ts and session/run-coordinator.ts hand-roll the same | COMMENT |
| LOW | packages/core/src/instance.ts | 121 | export type Error = FileSystem.DirectoryNotFoundError | COMMENT |
| LOW | packages/core/src/oauth/page.ts | 1 | // Branded HTML pages for local OAuth callback servers. | COMMENT |
| LOW | packages/core/src/shell/scan.ts | 1241 | // Arithmetic evaluation expands `name[subscript]` again, so a literal expansion in text the shell evaluates as | COMMENT |
| LOW | packages/core/src/plugin/provider/chatgpt.ts | 321 | draft.enabled = false | COMMENT |
| LOW | packages/core/src/plugin/provider/chatgpt.ts | 341 | // if (!metadata) return | COMMENT |
| LOW | packages/core/src/image/photon-wasm.workerd.ts | 1 | // workerd has no filesystem path to a photon wasm artifact. Image.Photon only | COMMENT |
| LOW | packages/app/src/composer/submit.ts | 641 | const request = await buildSubmissionRequest(session, value) | COMMENT |
| LOW | packages/app/src/session/session-resolution.ts | 21 | // Reactive target session for the session route, read from the data store. | COMMENT |
| LOW | packages/app/src/session/requests/auto-approve.ts | 81 | ) | COMMENT |
| LOW | packages/tui/test/mini/scrollback.surface.test.ts | 701 | } finally { | COMMENT |
| LOW | packages/tui/test/mini/scrollback.surface.test.ts | 721 | // 2. `RunScrollbackStream.writeStreaming` sets `renderable.content = ...` | COMMENT |
| LOW | packages/tui/src/mini/tool.ts | 1 | // Per-tool display rules shared across `opencode run` output paths. | COMMENT |
| LOW | packages/tui/src/mini/demo.ts | 1 | // Demo mode for testing direct interactive mode without a real SDK. | COMMENT |
| LOW | packages/tui/src/mini/stream-v2.subagent.ts | 1 | // Current-native subagent (child Session) tracking for the mini transport. | COMMENT |
| LOW | packages/tui/src/mini/footer.ts | 1 | // RunFooter -- the mutable control surface for direct interactive mode. | COMMENT |
| LOW | packages/tui/src/mini/footer.permission.tsx | 1 | // Permission UI body for the direct-mode footer. | COMMENT |
| LOW | packages/tui/src/mini/types.ts | 1 | // Shared type vocabulary for the direct interactive mode (`opencode mini`). | COMMENT |
| LOW | packages/tui/src/plugin/watch.ts | 1 | import path from "path" | COMMENT |
| LOW | …s/plugins/figma/skills/figma-use/references/gotchas.md | 841 | // Figma limits modes per collection based on the team/org plan: | COMMENT |
| LOW | packages/web/src/components/share/content-diff.tsx | 201 | // @@ -1,21 +1,25 @@ | COMMENT |
| LOW | packages/web/src/components/share/content-diff.tsx | 221 | // +normalized content with consistent spacing | COMMENT |
| LOW | packages/desktop/script/bench-startup.ts | 1 | #!/usr/bin/env bun | COMMENT |
| LOW | packages/desktop/script/bench-startup.ts | 21 | // main-process CPU profile from the first statement (via --inspect-brk) on the first run, | COMMENT |
| LOW | packages/process-daemon/src/transport/mod.rs | 1 | //! Local byte-stream transport boundary. Protocol framing and authentication live | COMMENT |
| LOW | packages/ai/example/tutorial.ts | 41 | // Options can live on both the configured route/provider facade and the request: | COMMENT |
| LOW | packages/ai/src/cache-policy.ts | 1 | // Apply an `LLMRequest.cache` policy by injecting `CacheHint`s onto the parts | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | packages/ui/src/forms/select/select.tsx | 82 | "placeholder", | CODE |
| LOW | …ages/ui/src/data-display/line-comment/line-comment.tsx | 143 | "placeholder", | CODE |
| LOW | packages/core/test/tool-subagent.test.ts | 710 | input: { agent: "reviewer", description: "follow up", prompt: "continue", sessionID: "placeholder" }, | CODE |
| LOW | packages/core/test/plugin/provider-opencode.test.ts | 100 | if (path === "/api/user") return Response.json({ id: "user", email: "user@example.com" }) | CODE |
| LOW | packages/core/test/plugin/provider-opencode.test.ts | 188 | if (url.pathname.endsWith("/api/user")) return Response.json({ id: "user", email: "user@example.com" }) | CODE |
| LOW | packages/core/test/plugin/provider-opencode.test.ts | 295 | email: "user@example.com", | CODE |
| LOW | packages/app/component-tests/browser-pane.spec.ts | 260 | await expect(editor).toHaveAttribute("placeholder", "Add an optional comment...") | CODE |
| LOW | packages/app/e2e/regression/timeline-stream.spec.ts | 2036 | await expect(comment).toHaveAttribute("placeholder", "Add an optional comment...") | CODE |
| LOW | packages/app/e2e/regression/command-palette.spec.ts | 121 | await expect(input).toHaveAttribute("placeholder", "Search sessions") | CODE |
| LOW | packages/app/e2e/regression/command-palette.spec.ts | 162 | await expect(search).toHaveAttribute("placeholder", "Search commands") | CODE |
| LOW | packages/app/e2e/regression/command-palette.spec.ts | 490 | await expect(dialog.getByRole("combobox")).toHaveAttribute("placeholder", "Search files, commands, and sessions") | CODE |
| LOW | packages/session-ui/src/components/line-comment.tsx | 184 | "placeholder", | CODE |
| LOW | packages/tui/test/prompt/display.test.ts | 45 | "foo@bar.com", | CODE |
| LOW | packages/tui/src/component/prompt/index.tsx | 413 | setStore("placeholder", randomIndex(list().length)) | CODE |
| LOW | packages/tui/src/component/prompt/index.tsx | 983 | setStore("placeholder", randomIndex(shell().length)) | CODE |
| LOW | …kages/desktop/src/main/files/attachment-picker.test.ts | 31 | await writeFile(file, "lorem ipsum") | CODE |
| LOW | …kages/desktop/src/main/files/attachment-picker.test.ts | 32 | expect(new TextDecoder().decode(await run(readAttachment(file)))).toBe("lorem ipsum") | CODE |
| LOW | packages/protocol/openapi.json | 18286 | "placeholder": { | CODE |
| LOW | packages/protocol/openapi.json | 18350 | "placeholder": { | CODE |
| LOW | packages/gui-plugins/src/browser/address.test.ts | 32 | "user@example.com", | CODE |
| LOW | packages/gui-plugins/src/browser/address.test.ts | 57 | search("user@example.com"), | CODE |
| LOW | packages/gui-plugins/src/ssh/dialog.tsx | 155 | placeholder={plugin.t("placeholder")} | CODE |
| LOW | packages/console/app/src/i18n/da.ts | 355 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/de.ts | 358 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/ar.ts | 348 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/it.ts | 355 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/es.ts | 358 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/br.ts | 357 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/tr.ts | 358 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/en.ts | 353 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/uk.ts | 354 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/zh.ts | 337 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/zht.ts | 337 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/fr.ts | 361 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/th.ts | 352 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/ru.ts | 360 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/no.ts | 356 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/pl.ts | 356 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/ko.ts | 346 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| LOW | packages/console/app/src/i18n/ja.ts | 353 | "enterprise.form.company.placeholder": "Acme Inc", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | patches/install-korean-ime-fix.sh | 41 | # ── 1. Clone or update fork ──────────────────────────────────────────── | COMMENT |
| MEDIUM | patches/install-korean-ime-fix.sh | 52 | # ── 2. Verify the IME fix is present in source ──────────────────────── | COMMENT |
| MEDIUM⚡ | patches/install-korean-ime-fix.sh | 73 | # ── 3. Install dependencies ──────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | patches/install-korean-ime-fix.sh | 78 | # ── 4. Build (current platform only) ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | patches/install-korean-ime-fix.sh | 83 | # ── 5. Install binary ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/app/src/providers/connect/go-upsell-hero-art.ts | 55 | // ── math ────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/app/src/providers/connect/go-upsell-hero-art.ts | 102 | // ── timeline (art ms) ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/app/src/providers/connect/go-upsell-hero-art.ts | 190 | // ── geometry ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/app/src/providers/connect/go-upsell-hero-art.ts | 297 | // ── one frame ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/app/src/providers/connect/go-upsell-hero-art.ts | 541 | // ── theme ───────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …ckages/app/src/providers/connect/go-upsell-hero-art.ts | 585 | // ── lifecycle ───────────────────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | packages/core/script/benchmark-location.ts | 65 | print("first", [first]) | CODE |
| HIGH⚡ | packages/core/script/benchmark-location.ts | 66 | print("cached", cached) | CODE |
| HIGH⚡ | packages/core/script/benchmark-location.ts | 67 | print("cold", cold) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …igma/skills/figma-swiftui/references/code-to-design.md | 153 | - **Preview providers** — `#Preview { … }` (iOS 17+ macro form) and the older `struct ContentView_Previews: PreviewProvi | CODE |
| MEDIUM | …igma/skills/figma-swiftui/references/design-to-code.md | 18 | ## 2. Multi-screen files: scaffold navigation first | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …igma-generate-library/references/code-connect-setup.md | 248 | 4. In the Inspect panel, the code snippet should show the Code Connect output instead of auto-generated code. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | patches/install-korean-ime-fix.sh | 10 | # Usage: | COMMENT |
| LOW | …skills/figma-use/references/plugin-api-standalone.d.ts | 1309 | * ## Example usage | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/triage-pr-standards.yml | 86 | // Step 1: Check title format | COMMENT |
| LOW | .github/workflows/triage-pr-standards.yml | 111 | // Step 2: Check for linked issue (skip for docs/refactor/feat PRs) | COMMENT |