🎉跨平台的剪贴板管理工具 | Cross-platform clipboard management tool
This report presents the forensic synthetic code analysis of EcoPasteHub/EcoPaste, a Rust project with 7,169 GitHub stars. SynthScan v2.0 examined 110,661 lines of code across 676 source files, recording 990 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 21.4 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 990 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .cursor/hooks/session-start.py | 0 | normalize unix-style shell paths to real windows paths. on windows, shells like git bash / msys2 / cygwin may report pat | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | normalize unix-style shell paths to real windows paths. on windows, shells like git bash / msys2 / cygwin may report pat | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | normalize unix-style shell paths to real windows paths. on windows, shells like git bash / msys2 / cygwin may report pat | STRING |
| HIGH | .codex/hooks/session-start.py | 0 | normalize unix-style shell paths to real windows paths. on windows, shells like git bash / msys2 / cygwin may report pat | STRING |
| HIGH | .github/copilot/hooks/session-start.py | 0 | normalize unix-style shell paths to real windows paths. on windows, shells like git bash / msys2 / cygwin may report pat | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | normalize unix-style shell paths to real windows paths. on windows, shells like git bash / msys2 / cygwin may report pat | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | <first-reply-notice> first visible reply: say once in chinese that trellis sessionstart context is loaded, then answer d | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | <first-reply-notice> first visible reply: say once in chinese that trellis sessionstart context is loaded, then answer d | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | <first-reply-notice> first visible reply: say once in chinese that trellis sessionstart context is loaded, then answer d | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | <first-reply-notice> first visible reply: say once in chinese that trellis sessionstart context is loaded, then answer d | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | return true iff jsonl has at least one row with a ``file`` field. a freshly seeded jsonl only contains a ``{"_example": | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | return true iff jsonl has at least one row with a ``file`` field. a freshly seeded jsonl only contains a ``{"_example": | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | return true iff jsonl has at least one row with a ``file`` field. a freshly seeded jsonl only contains a ``{"_example": | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | return true iff jsonl has at least one row with a ``file`` field. a freshly seeded jsonl only contains a ``{"_example": | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | check if any platform's non-interactive flag is set, or if trellis hooks are explicitly disabled via trellis_hooks=0 / t | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | check if any platform's non-interactive flag is set, or if trellis hooks are explicitly disabled via trellis_hooks=0 / t | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | check if any platform's non-interactive flag is set, or if trellis hooks are explicitly disabled via trellis_hooks=0 / t | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | check if any platform's non-interactive flag is set, or if trellis hooks are explicitly disabled via trellis_hooks=0 / t | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | expose trellis session identity to later claude code bash commands. claude code sessionstart hooks can append exports to | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | expose trellis session identity to later claude code bash commands. claude code sessionstart hooks can append exports to | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | expose trellis session identity to later claude code bash commands. claude code sessionstart hooks can append exports to | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | expose trellis session identity to later claude code bash commands. claude code sessionstart hooks can append exports to | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | return compact active-task status, artifact presence, and next action. | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | return compact active-task status, artifact presence, and next action. | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | return compact active-task status, artifact presence, and next action. | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | return compact active-task status, artifact presence, and next action. | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | load trellis config for session-start decisions. returns: (is_mono, packages_dict, spec_scope, task_pkg, default_pkg) | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | load trellis config for session-start decisions. returns: (is_mono, packages_dict, spec_scope, task_pkg, default_pkg) | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | load trellis config for session-start decisions. returns: (is_mono, packages_dict, spec_scope, task_pkg, default_pkg) | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | load trellis config for session-start decisions. returns: (is_mono, packages_dict, spec_scope, task_pkg, default_pkg) | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | check for legacy spec directory structure in monorepo. returns warning message if legacy structure detected, none otherw | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | check for legacy spec directory structure in monorepo. returns warning message if legacy structure detected, none otherw | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | check for legacy spec directory structure in monorepo. returns warning message if legacy structure detected, none otherw | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | check for legacy spec directory structure in monorepo. returns warning message if legacy structure detected, none otherw | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | resolve which packages should have their specs injected. returns: set of package names to include, or none for full scan | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | resolve which packages should have their specs injected. returns: set of package names to include, or none for full scan | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | resolve which packages should have their specs injected. returns: set of package names to include, or none for full scan | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | resolve which packages should have their specs injected. returns: set of package names to include, or none for full scan | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | extract lines starting at `## start_header` up to (but excluding) `## end_header`. both parameters are full header lines | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | extract lines starting at `## start_header` up to (but excluding) `## end_header`. both parameters are full header lines | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | extract lines starting at `## start_header` up to (but excluding) `## end_header`. both parameters are full header lines | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | extract lines starting at `## start_header` up to (but excluding) `## end_header`. both parameters are full header lines | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | remove `[workflow-state:status]...[/workflow-state:status]` blocks. the tag blocks live inside `## phase index` (since v | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | remove `[workflow-state:status]...[/workflow-state:status]` blocks. the tag blocks live inside `## phase index` (since v | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | remove `[workflow-state:status]...[/workflow-state:status]` blocks. the tag blocks live inside `## phase index` (since v | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | remove `[workflow-state:status]...[/workflow-state:status]` blocks. the tag blocks live inside `## phase index` (since v | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | .codex/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | .github/copilot/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | <session-context> trellis compact sessionstart context. use it to orient the session; load details on demand. </session- | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | <session-context> trellis compact sessionstart context. use it to orient the session; load details on demand. </session- | STRING |
| HIGH | .claude/hooks/session-start.py | 0 | <session-context> trellis compact sessionstart context. use it to orient the session; load details on demand. </session- | STRING |
| HIGH | .codex/hooks/session-start.py | 0 | <session-context> trellis compact sessionstart context. use it to orient the session; load details on demand. </session- | STRING |
| HIGH | .github/copilot/hooks/session-start.py | 0 | <session-context> trellis compact sessionstart context. use it to orient the session; load details on demand. </session- | STRING |
| HIGH | .kiro/hooks/session-start.py | 0 | <session-context> trellis compact sessionstart context. use it to orient the session; load details on demand. </session- | STRING |
| HIGH | .cursor/hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| HIGH | .gemini/hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| 111 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | .cursor/hooks/inject-subagent-context.py | 45 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .cursor/hooks/inject-subagent-context.py | 47 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .cursor/hooks/inject-subagent-context.py | 53 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .cursor/hooks/inject-subagent-context.py | 55 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .gemini/hooks/inject-workflow-state.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .gemini/hooks/inject-workflow-state.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .gemini/hooks/inject-workflow-state.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .gemini/hooks/inject-workflow-state.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .gemini/hooks/inject-workflow-state.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .gemini/hooks/inject-workflow-state.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .gemini/hooks/inject-workflow-state.py | 306 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .gemini/hooks/inject-workflow-state.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-workflow-state.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-workflow-state.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 306 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-subagent-context.py | 45 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-subagent-context.py | 47 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-subagent-context.py | 53 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-subagent-context.py | 55 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .codex/hooks/inject-workflow-state.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .codex/hooks/inject-workflow-state.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 306 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/copilot/hooks/inject-workflow-state.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .github/copilot/hooks/inject-workflow-state.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/copilot/hooks/inject-workflow-state.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/copilot/hooks/inject-workflow-state.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/copilot/hooks/inject-workflow-state.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/copilot/hooks/inject-workflow-state.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/copilot/hooks/inject-workflow-state.py | 306 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/copilot/hooks/inject-workflow-state.py | 308 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .trellis/config.yaml | 6 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .trellis/config.yaml | 8 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .trellis/config.yaml | 17 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .trellis/config.yaml | 19 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 35 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 37 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 53 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 55 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 79 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 81 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 99 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/config.yaml | 101 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 66 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 68 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 183 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 185 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 264 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 266 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 298 | # ============================================================================= | COMMENT |
| MEDIUM | .trellis/scripts/task.py | 300 | # ============================================================================= | COMMENT |
| 132 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/agents/trellis-check.md | 52 | ### Step 1: Get Changes | COMMENT |
| LOW | .cursor/agents/trellis-check.md | 59 | ### Step 2: Check Against Specs and Task Artifacts | COMMENT |
| LOW | .cursor/agents/trellis-check.md | 71 | ### Step 3: Self-Fix | COMMENT |
| LOW | .cursor/agents/trellis-check.md | 79 | ### Step 4: Run Verification | COMMENT |
| LOW⚡ | .cursor/agents/trellis-research.md | 29 | ### Step 1: Resolve Current Task | COMMENT |
| LOW⚡ | .cursor/agents/trellis-research.md | 39 | ### Step 2: Understand Search Request | COMMENT |
| LOW⚡ | .cursor/agents/trellis-research.md | 43 | ### Step 3: Execute Search | COMMENT |
| LOW⚡ | .cursor/agents/trellis-research.md | 47 | ### Step 4: Persist Each Topic | COMMENT |
| LOW⚡ | .cursor/agents/trellis-research.md | 51 | ### Step 5: Report to Main Agent | COMMENT |
| LOW⚡ | .cursor/commands/trellis-continue.md | 7 | ## Step 1: Load Current Context | COMMENT |
| LOW⚡ | .cursor/commands/trellis-continue.md | 15 | ## Step 2: Load the Phase Index | COMMENT |
| LOW⚡ | .cursor/commands/trellis-continue.md | 23 | ## Step 3: Decide Where You Are | COMMENT |
| LOW | .cursor/commands/trellis-continue.md | 42 | ## Step 4: Load the Specific Step | COMMENT |
| LOW | .cursor/commands/trellis-finish-work.md | 5 | ## Step 1: Survey current state | COMMENT |
| LOW | .cursor/commands/trellis-finish-work.md | 19 | ## Step 2: Sanity check — classify dirty paths | COMMENT |
| LOW | .cursor/commands/trellis-finish-work.md | 45 | ## Step 3: Archive task(s) | COMMENT |
| LOW | .cursor/commands/trellis-finish-work.md | 55 | ## Step 4: Record session journal | COMMENT |
| LOW | .cursor/skills/trellis-brainstorm/SKILL.md | 77 | ### Step 1: Restate the Problem | COMMENT |
| LOW | .cursor/skills/trellis-brainstorm/SKILL.md | 84 | ### Step 2: List Fundamental Truths | COMMENT |
| LOW⚡ | .cursor/skills/trellis-brainstorm/SKILL.md | 95 | ### Step 3: Challenge Assumptions | COMMENT |
| LOW⚡ | .cursor/skills/trellis-brainstorm/SKILL.md | 104 | ### Step 4: Build Up from Truths | COMMENT |
| LOW⚡ | .cursor/skills/trellis-brainstorm/SKILL.md | 110 | ### Step 5: Validate | COMMENT |
| LOW | .cursor/skills/trellis-break-loop/SKILL.md | 118 | ### Step 1: Establish Priors | COMMENT |
| LOW⚡ | .cursor/skills/trellis-break-loop/SKILL.md | 130 | ### Step 2: Observe Evidence | COMMENT |
| LOW⚡ | .cursor/skills/trellis-break-loop/SKILL.md | 138 | ### Step 3: Update Beliefs | COMMENT |
| LOW⚡ | .cursor/skills/trellis-break-loop/SKILL.md | 147 | ### Step 4: Seek Discriminating Evidence | COMMENT |
| LOW⚡ | .cursor/skills/trellis-break-loop/SKILL.md | 153 | ### Step 5: State Confidence | COMMENT |
| LOW | .cursor/skills/trellis-check/SKILL.md | 12 | ## Step 1: Identify What Changed | COMMENT |
| LOW | .cursor/skills/trellis-check/SKILL.md | 19 | ## Step 2: Read Task Artifacts and Applicable Specs | COMMENT |
| LOW | .cursor/skills/trellis-check/SKILL.md | 39 | ## Step 3: Run Project Checks | COMMENT |
| LOW | .cursor/skills/trellis-check/SKILL.md | 43 | ## Step 4: Review Against Checklist | COMMENT |
| LOW | .cursor/skills/trellis-check/SKILL.md | 65 | ## Step 5: Cross-Layer Dimensions (if applicable) | COMMENT |
| LOW | .cursor/skills/trellis-check/SKILL.md | 96 | ## Step 6: Report and Fix | COMMENT |
| LOW | .cursor/skills/trellis-update-spec/SKILL.md | 97 | ### Step 1: Identify What You Learned | COMMENT |
| LOW | .cursor/skills/trellis-update-spec/SKILL.md | 105 | ### Step 2: Classify the Update Type | COMMENT |
| LOW | .cursor/skills/trellis-update-spec/SKILL.md | 117 | ### Step 3: Read the Target Code-Spec | COMMENT |
| LOW | .cursor/skills/trellis-update-spec/SKILL.md | 128 | ### Step 4: Make the Update | COMMENT |
| LOW | .cursor/skills/trellis-update-spec/SKILL.md | 138 | ### Step 5: Update the Index (if needed) | COMMENT |
| LOW | .gemini/agents/trellis-implement.md | 11 | ### Step 1: Find the active task path | COMMENT |
| LOW | .gemini/agents/trellis-implement.md | 19 | ### Step 2: Load task context from the resolved path | COMMENT |
| LOW | .gemini/agents/trellis-check.md | 11 | ### Step 1: Find the active task path | COMMENT |
| LOW | .gemini/agents/trellis-check.md | 19 | ### Step 2: Load task context from the resolved path | COMMENT |
| LOW | .gemini/agents/trellis-check.md | 71 | ### Step 1: Get Changes | COMMENT |
| LOW | .gemini/agents/trellis-check.md | 78 | ### Step 2: Check Against Specs and Task Artifacts | COMMENT |
| LOW | .gemini/agents/trellis-check.md | 90 | ### Step 3: Self-Fix | COMMENT |
| LOW | .gemini/agents/trellis-check.md | 98 | ### Step 4: Run Verification | COMMENT |
| LOW⚡ | .gemini/agents/trellis-research.md | 29 | ### Step 1: Resolve Current Task | COMMENT |
| LOW⚡ | .gemini/agents/trellis-research.md | 39 | ### Step 2: Understand Search Request | COMMENT |
| LOW⚡ | .gemini/agents/trellis-research.md | 43 | ### Step 3: Execute Search | COMMENT |
| LOW⚡ | .gemini/agents/trellis-research.md | 47 | ### Step 4: Persist Each Topic | COMMENT |
| LOW⚡ | .gemini/agents/trellis-research.md | 51 | ### Step 5: Report to Main Agent | COMMENT |
| LOW⚡ | .gemini/commands/trellis/continue.toml | 10 | ## Step 1: Load Current Context | COMMENT |
| LOW⚡ | .gemini/commands/trellis/continue.toml | 18 | ## Step 2: Load the Phase Index | COMMENT |
| LOW⚡ | .gemini/commands/trellis/continue.toml | 26 | ## Step 3: Decide Where You Are | COMMENT |
| LOW | .gemini/commands/trellis/continue.toml | 45 | ## Step 4: Load the Specific Step | COMMENT |
| LOW | .gemini/commands/trellis/finish-work.toml | 8 | ## Step 1: Survey current state | COMMENT |
| LOW | .gemini/commands/trellis/finish-work.toml | 22 | ## Step 2: Sanity check — classify dirty paths | COMMENT |
| LOW⚡ | .gemini/commands/trellis/finish-work.toml | 48 | ## Step 3: Archive task(s) | COMMENT |
| LOW⚡ | .gemini/commands/trellis/finish-work.toml | 58 | ## Step 4: Record session journal | COMMENT |
| LOW | .opencode/agents/trellis-check.md | 60 | ### Step 1: Get Changes | COMMENT |
| 192 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/session-start.py | 89 | except Exception: | CODE |
| LOW | .cursor/hooks/session-start.py | 94 | except Exception: | CODE |
| LOW | .cursor/hooks/session-start.py | 460 | except Exception: | CODE |
| LOW | .cursor/hooks/session-start.py | 611 | except Exception: | CODE |
| LOW | .cursor/hooks/session-start.py | 644 | except Exception: | CODE |
| LOW | .cursor/hooks/inject-subagent-context.py | 123 | except Exception: | CODE |
| LOW | .cursor/hooks/inject-subagent-context.py | 141 | except Exception: | CODE |
| LOW | .cursor/hooks/inject-subagent-context.py | 182 | except Exception: | CODE |
| LOW | .cursor/hooks/inject-subagent-context.py | 184 | except Exception: | CODE |
| LOW | .cursor/hooks/inject-subagent-context.py | 245 | except Exception: | CODE |
| LOW | .gemini/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| LOW | .gemini/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| LOW | .gemini/hooks/inject-workflow-state.py | 218 | except Exception: | CODE |
| LOW | .gemini/hooks/inject-workflow-state.py | 222 | except Exception: | CODE |
| LOW | .gemini/hooks/session-start.py | 89 | except Exception: | CODE |
| LOW | .gemini/hooks/session-start.py | 94 | except Exception: | CODE |
| LOW | .gemini/hooks/session-start.py | 460 | except Exception: | CODE |
| LOW | .gemini/hooks/session-start.py | 611 | except Exception: | CODE |
| LOW | .gemini/hooks/session-start.py | 644 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 218 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 222 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 89 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 94 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 460 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 611 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 644 | except Exception: | CODE |
| LOW | .claude/hooks/inject-subagent-context.py | 123 | except Exception: | CODE |
| LOW | .claude/hooks/inject-subagent-context.py | 141 | except Exception: | CODE |
| LOW | .claude/hooks/inject-subagent-context.py | 182 | except Exception: | CODE |
| LOW | .claude/hooks/inject-subagent-context.py | 184 | except Exception: | CODE |
| LOW | .claude/hooks/inject-subagent-context.py | 245 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 218 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 222 | except Exception: | CODE |
| LOW⚡ | .codex/hooks/session-start.py | 35 | except Exception: | CODE |
| LOW⚡ | .codex/hooks/session-start.py | 40 | except Exception: | CODE |
| LOW | .codex/hooks/session-start.py | 118 | except Exception: | CODE |
| LOW | .codex/hooks/session-start.py | 158 | except Exception: | CODE |
| LOW | .codex/hooks/session-start.py | 367 | except Exception: | CODE |
| LOW | .codex/hooks/session-start.py | 400 | except Exception: | CODE |
| LOW | .github/copilot/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| LOW | .github/copilot/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| LOW | .github/copilot/hooks/inject-workflow-state.py | 218 | except Exception: | CODE |
| LOW | .github/copilot/hooks/inject-workflow-state.py | 222 | except Exception: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 36 | except Exception: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 41 | except Exception: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 123 | except Exception: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 163 | except Exception: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 372 | except Exception: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 405 | except Exception: | CODE |
| MEDIUM | .trellis/scripts/add_session.py | 234 | print("Error: Markers not found in index.md. Please ensure markers exist.", file=sys.stderr) | CODE |
| MEDIUM | .trellis/scripts/add_session.py | 410 | print("Error: Developer not initialized", file=sys.stderr) | CODE |
| MEDIUM | .trellis/scripts/add_session.py | 415 | print("Error: Workspace directory not found", file=sys.stderr) | CODE |
| MEDIUM | .trellis/scripts/add_session.py | 539 | print(f"Error: unknown package '{package}'. Available: {available}", file=sys.stderr) | CODE |
| LOW | .trellis/scripts/common/git.py | 30 | except Exception as e: | CODE |
| LOW | .trellis/scripts/common/task_store.py | 348 | except Exception: | CODE |
| LOW | .trellis/scripts/common/trellis_config.py | 129 | except Exception: | CODE |
| 29 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/session-start.py | 22 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .cursor/hooks/session-start.py | 235 | def _persist_context_key_for_bash(context_key: str | None) -> None: | CODE |
| LOW | .cursor/hooks/session-start.py | 569 | def _collect_spec_index_paths(trellis_dir: Path, allowed_pkgs: set | None) -> list[str]: | CODE |
| LOW | .cursor/hooks/session-start.py | 600 | def _build_compact_current_state( | CODE |
| LOW | .cursor/hooks/session-start.py | 691 | def _strip_breadcrumb_tag_blocks(content: str) -> str: | CODE |
| LOW | .cursor/hooks/inject-shell-session-context.py | 60 | def _load_active_task_resolver(root: Path): | CODE |
| LOW | .cursor/hooks/inject-shell-session-context.py | 69 | def _extract_task_subcommands(command: str) -> list[dict[str, str]]: | CODE |
| LOW | .gemini/hooks/session-start.py | 22 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .gemini/hooks/session-start.py | 235 | def _persist_context_key_for_bash(context_key: str | None) -> None: | CODE |
| LOW | .gemini/hooks/session-start.py | 569 | def _collect_spec_index_paths(trellis_dir: Path, allowed_pkgs: set | None) -> list[str]: | CODE |
| LOW | .gemini/hooks/session-start.py | 600 | def _build_compact_current_state( | CODE |
| LOW | .gemini/hooks/session-start.py | 691 | def _strip_breadcrumb_tag_blocks(content: str) -> str: | CODE |
| LOW | .opencode/plugins/inject-subagent-context.js | 314 | function buildTrellisContextPrefix( | CODE |
| LOW | .opencode/plugins/inject-subagent-context.js | 333 | function commandStartsWithTrellisContext(command) { | CODE |
| LOW | .opencode/plugins/inject-subagent-context.js | 349 | function injectTrellisContextIntoBash(ctx, input, output, hostPlatform, env) { | CODE |
| LOW | .opencode/lib/session-utils.js | 439 | export function hasInjectedTrellisContext(messages) { | CODE |
| LOW | .opencode/lib/session-utils.js | 453 | export async function hasPersistedInjectedContext( | CODE |
| LOW | .claude/hooks/session-start.py | 22 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .claude/hooks/session-start.py | 235 | def _persist_context_key_for_bash(context_key: str | None) -> None: | CODE |
| LOW | .claude/hooks/session-start.py | 569 | def _collect_spec_index_paths(trellis_dir: Path, allowed_pkgs: set | None) -> list[str]: | CODE |
| LOW | .claude/hooks/session-start.py | 600 | def _build_compact_current_state( | CODE |
| LOW | .claude/hooks/session-start.py | 691 | def _strip_breadcrumb_tag_blocks(content: str) -> str: | CODE |
| LOW⚡ | .codex/hooks/session-start.py | 44 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .codex/hooks/session-start.py | 108 | def configure_project_encoding(project_dir: Path) -> None: | CODE |
| LOW | .codex/hooks/session-start.py | 329 | def _collect_spec_index_paths(trellis_dir: Path) -> list[str]: | CODE |
| LOW | .codex/hooks/session-start.py | 356 | def _build_compact_current_state( | CODE |
| LOW | .codex/hooks/session-start.py | 442 | def _strip_breadcrumb_tag_blocks(content: str) -> str: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 54 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 113 | def configure_project_encoding(project_dir: Path) -> None: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 334 | def _collect_spec_index_paths(trellis_dir: Path) -> list[str]: | CODE |
| LOW | .github/copilot/hooks/session-start.py | 361 | def _build_compact_current_state( | CODE |
| LOW | .github/copilot/hooks/session-start.py | 447 | def _strip_breadcrumb_tag_blocks(content: str) -> str: | CODE |
| LOW | .trellis/scripts/common/safe_commit.py | 61 | def safe_trellis_paths_to_add( | CODE |
| LOW | .trellis/scripts/common/safe_commit.py | 144 | def safe_archive_paths_to_add( | CODE |
| LOW | .trellis/scripts/common/safe_commit.py | 202 | def _stderr_indicates_ignored(stderr: str) -> bool: | CODE |
| LOW | .trellis/scripts/common/session_context.py | 143 | def _discover_child_git_repos(repo_root: Path) -> list[tuple[str, str]]: | CODE |
| LOW | .trellis/scripts/common/session_context.py | 178 | def _collect_package_git_info( | CODE |
| LOW | .trellis/scripts/common/session_context.py | 246 | def _append_package_git_context(lines: list[str], package_git_info: list[dict]) -> None: | CODE |
| LOW | .trellis/scripts/common/session_context.py | 277 | def _fetch_trellis_version_output() -> str | None: | CODE |
| LOW | .trellis/scripts/common/session_context.py | 296 | def _extract_available_update_version(output: str) -> str | None: | CODE |
| LOW | .trellis/scripts/common/session_context.py | 308 | def _resolve_available_update_version() -> str | None: | CODE |
| LOW | .trellis/scripts/common/session_context.py | 383 | def _mark_update_check_attempted(repo_root: Path) -> bool: | CODE |
| LOW | .trellis/scripts/common/active_task.py | 281 | def _pending_ticket_matches_args(ticket: dict[str, Any], repo_root: Path) -> bool: | CODE |
| LOW | .trellis/scripts/common/active_task.py | 336 | def _matching_cursor_ticket_context_key( | CODE |
| LOW | .trellis/scripts/common/active_task.py | 353 | def _lookup_cursor_shell_ticket_context_key() -> str | None: | CODE |
| LOW | .trellis/scripts/common/active_task.py | 499 | def _resolve_single_session_fallback(repo_root: Path) -> ActiveTask | None: | CODE |
| LOW | .trellis/scripts/common/config.py | 199 | def get_session_commit_message(repo_root: Path | None = None) -> str: | CODE |
| LOW | .trellis/scripts/common/task_store.py | 86 | def _find_archived_task_by_dir_name(tasks_dir: Path, dir_name: str) -> Path | None: | CODE |
| LOW | .trellis/scripts/common/packages_context.py | 157 | def get_context_packages_text(repo_root: Path | None = None) -> str: | CODE |
| LOW | .trellis/scripts/common/packages_context.py | 213 | def get_context_packages_json(repo_root: Path | None = None) -> dict: | CODE |
| LOW⚡ | .trellis/scripts/common/paths.py | 381 | def generate_task_date_prefix() -> str: | CODE |
| LOW | .trellis/scripts/common/workflow_phase.py | 144 | def resolve_effective_platform(platform: str, config: dict) -> str: | CODE |
| LOW⚡ | .trellis/scripts/common/cli_adapter.py | 562 | def requires_agent_definition_file(self) -> bool: | CODE |
| LOW⚡ | .trellis/scripts/common/cli_adapter.py | 575 | def supports_session_id_on_create(self) -> bool: | CODE |
| LOW⚡ | .trellis/scripts/common/cli_adapter.py | 584 | def extract_session_id_from_log(self, log_content: str) -> str | None: | CODE |
| LOW | .trellis/scripts/hooks/linear_sync.py | 203 | def _resolve_parent_linear_issue(task: dict) -> str | None: | CODE |
| LOW | .kiro/hooks/session-start.py | 22 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .kiro/hooks/session-start.py | 235 | def _persist_context_key_for_bash(context_key: str | None) -> None: | CODE |
| LOW | .kiro/hooks/session-start.py | 569 | def _collect_spec_index_paths(trellis_dir: Path, allowed_pkgs: set | None) -> list[str]: | CODE |
| LOW | .kiro/hooks/session-start.py | 600 | def _build_compact_current_state( | CODE |
| 43 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/session-start.py | 6 | CODE | |
| LOW | .cursor/hooks/inject-shell-session-context.py | 9 | CODE | |
| LOW | .cursor/hooks/inject-subagent-context.py | 23 | CODE | |
| LOW | .gemini/hooks/inject-workflow-state.py | 31 | CODE | |
| LOW | .gemini/hooks/session-start.py | 6 | CODE | |
| LOW | .claude/hooks/inject-workflow-state.py | 31 | CODE | |
| LOW | .claude/hooks/session-start.py | 6 | CODE | |
| LOW | .claude/hooks/inject-subagent-context.py | 23 | CODE | |
| LOW | .codex/hooks/inject-workflow-state.py | 31 | CODE | |
| LOW | .codex/hooks/session-start.py | 10 | CODE | |
| LOW | .github/copilot/hooks/inject-workflow-state.py | 31 | CODE | |
| LOW | .github/copilot/hooks/session-start.py | 18 | CODE | |
| LOW | .trellis/scripts/task.py | 24 | CODE | |
| LOW | .trellis/scripts/get_developer.py | 8 | CODE | |
| LOW | .trellis/scripts/get_context.py | 10 | CODE | |
| LOW | .trellis/scripts/init_developer.py | 13 | CODE | |
| LOW | .trellis/scripts/add_session.py | 22 | CODE | |
| LOW | .trellis/scripts/common/safe_commit.py | 33 | CODE | |
| LOW | .trellis/scripts/common/session_context.py | 14 | CODE | |
| LOW | .trellis/scripts/common/active_task.py | 9 | CODE | |
| LOW | .trellis/scripts/common/git.py | 7 | CODE | |
| LOW | .trellis/scripts/common/git_context.py | 13 | CODE | |
| LOW | .trellis/scripts/common/git_context.py | 18 | CODE | |
| LOW | .trellis/scripts/common/git_context.py | 18 | CODE | |
| LOW | .trellis/scripts/common/task_queue.py | 13 | CODE | |
| LOW | .trellis/scripts/common/tasks.py | 13 | CODE | |
| LOW | .trellis/scripts/common/config.py | 8 | CODE | |
| LOW | .trellis/scripts/common/task_store.py | 16 | CODE | |
| LOW | .trellis/scripts/common/packages_context.py | 12 | CODE | |
| LOW | .trellis/scripts/common/paths.py | 13 | CODE | |
| LOW | .trellis/scripts/common/log.py | 8 | CODE | |
| LOW | .trellis/scripts/common/io.py | 8 | CODE | |
| LOW | .trellis/scripts/common/workflow_phase.py | 21 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 86 | CODE | |
| LOW | .trellis/scripts/common/__init__.py | 86 | CODE | |
| 13 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/session-start.py | 420 | CODE | |
| LOW | .cursor/hooks/session-start.py | 600 | CODE | |
| LOW | .cursor/hooks/inject-subagent-context.py | 146 | CODE | |
| LOW | .cursor/hooks/inject-subagent-context.py | 190 | CODE | |
| LOW | .cursor/hooks/inject-subagent-context.py | 577 | CODE | |
| LOW | .gemini/hooks/inject-workflow-state.py | 257 | CODE | |
| LOW | .gemini/hooks/session-start.py | 420 | CODE | |
| LOW | .gemini/hooks/session-start.py | 600 | CODE | |
| LOW | .claude/hooks/inject-workflow-state.py | 257 | CODE | |
| LOW | .claude/hooks/session-start.py | 420 | CODE | |
| LOW | .claude/hooks/session-start.py | 600 | CODE | |
| LOW | .claude/hooks/inject-subagent-context.py | 146 | CODE | |
| LOW | .claude/hooks/inject-subagent-context.py | 190 | CODE | |
| LOW | .claude/hooks/inject-subagent-context.py | 577 | CODE | |
| LOW | .codex/hooks/inject-workflow-state.py | 257 | CODE | |
| LOW | .codex/hooks/session-start.py | 356 | CODE | |
| LOW | .github/copilot/hooks/inject-workflow-state.py | 257 | CODE | |
| LOW | .github/copilot/hooks/session-start.py | 361 | CODE | |
| LOW | .trellis/scripts/task.py | 70 | CODE | |
| LOW | .trellis/scripts/task.py | 268 | CODE | |
| LOW | .trellis/scripts/common/safe_commit.py | 61 | CODE | |
| LOW | .trellis/scripts/common/git_context.py | 46 | CODE | |
| LOW | .trellis/scripts/common/config.py | 89 | CODE | |
| LOW | .trellis/scripts/common/task_store.py | 196 | CODE | |
| LOW | .trellis/scripts/common/task_store.py | 376 | CODE | |
| LOW | .trellis/scripts/common/trellis_config.py | 55 | CODE | |
| LOW | .trellis/scripts/common/task_utils.py | 218 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 688 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 98 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 234 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 282 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 321 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 424 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 518 | CODE | |
| LOW | .kiro/hooks/inject-workflow-state.py | 257 | CODE | |
| LOW | .kiro/hooks/session-start.py | 420 | CODE | |
| LOW | .kiro/hooks/session-start.py | 600 | CODE | |
| LOW | .kiro/hooks/inject-subagent-context.py | 146 | CODE | |
| LOW | .kiro/hooks/inject-subagent-context.py | 190 | CODE | |
| LOW | .kiro/hooks/inject-subagent-context.py | 577 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .codex/config.toml | 1 | # Project-scoped Codex defaults for Trellis workflows. | COMMENT |
| LOW | .codex/config.toml | 21 | # block here. Codex CLI changed `features` deserialization between 0.130 | COMMENT |
| LOW | src-tauri/src/core/paths.rs | 1 | //! app data 目录解析的单一入口。 | COMMENT |
| LOW | src-tauri/src/mouse/mod.rs | 1 | //! 剪贴板窗口 `focusable=false` 让 Tauri 在 Windows 上收不到 `tauri://blur`, | COMMENT |
| LOW | src-tauri/src/menu/context_window.rs | 1 | //! Windows 自定义右键菜单窗(webview)。 | COMMENT |
| LOW | src-tauri/src/menu/clipboard_item.rs | 1 | //! 列表项右键菜单(Rust 侧)。 | COMMENT |
| LOW | src-tauri/src/db/models.rs | 61 | pub is_pinned: bool, | COMMENT |
| LOW | src-tauri/src/db/models.rs | 81 | #[sqlx(default)] | COMMENT |
| LOW | src-tauri/src/db/models.rs | 101 | #[sqlx(skip)] | COMMENT |
| LOW | src-tauri/src/keystroke/mod.rs | 1 | //! 模拟系统级粘贴。 | COMMENT |
| LOW | src-tauri/src/commands/drag.rs | 21 | /// 文本类型。`plain` 总有;`html` / `rtf` 二选一或都无,由 sub_kind 决定(见 ingest): | COMMENT |
| LOW | src-tauri/src/backup/mod.rs | 61 | /// 经 ObjC `application:openURLs:` **同步**投递 `RunEvent::Opened`。此刻去建偏好窗口会 | COMMENT |
| LOW | src-tauri/src/drag_out/macos.rs | 1 | //! macOS drag-out 实现(vendor 自 `drag` v2.1.1 的 macOS 路径,做两点改造): | COMMENT |
| LOW | src-tauri/src/drag_out/windows_ghost.rs | 1 | //! 让 OLE 拖拽在「我们自己的窗口里」也能显示半透明 ghost 预览图。 | COMMENT |
| LOW | src-tauri/src/drag_out/mod.rs | 1 | //! OS 级 drag-out(把条目从列表拖到外部应用)。 | COMMENT |
| LOW | src-tauri/src/drag_out/windows.rs | 1 | //! Windows drag-out 实现。 | COMMENT |
| LOW | src-tauri/src/clipboard/write.rs | 1 | //! 剪贴板写回:把 [`ClipboardItem`] 按类型写回系统剪贴板(text / html / rtf / image / files)。 | COMMENT |
| LOW | src-tauri/src/clipboard/icon.rs | 1 | //! 跨平台从「任意文件路径」抽取图标,落地为 PNG 字节。 | COMMENT |
| LOW | src-tauri/src/clipboard/ingest.rs | 61 | width: Option<i64>, | COMMENT |
| LOW | src-tauri/src/clipboard/source.rs | 1 | //! 「这次剪贴板变更来自哪个应用」的探测:在剪贴板事件回调里调用, | COMMENT |
| LOW | src-tauri/src/clipboard/storage.rs | 1 | //! 图片落盘:按内容哈希分片存储原图与缩略图。 | COMMENT |
| LOW | src-tauri/src/clipboard/guard.rs | 1 | //! 写回回环抑制。 | COMMENT |
| LOW | src-tauri/src/clipboard/payload.rs | 1 | //! 一次剪贴板读取的「带类型标记」结果。 | COMMENT |
| LOW | .trellis/config.yaml | 1 | # Trellis Configuration | COMMENT |
| LOW | .trellis/config.yaml | 21 | # Auto-commit behavior for session journal + task archive operations. | COMMENT |
| LOW | .trellis/config.yaml | 41 | # Hook failures print a warning but do not block the main operation. | COMMENT |
| LOW | .trellis/config.yaml | 61 | # packages: | COMMENT |
| LOW | .trellis/config.yaml | 81 | #------------------------------------------------------------------------------- | COMMENT |
| LOW | .trellis/config.yaml | 101 | #------------------------------------------------------------------------------- | COMMENT |
| LOW | src/vite-env.d.ts | 1 | /// <reference types="vite/client" /> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | .gemini/commands/trellis/continue.toml | 10 | ## Step 1: Load Current Context | COMMENT |
| LOW⚡ | .gemini/commands/trellis/continue.toml | 18 | ## Step 2: Load the Phase Index | COMMENT |
| LOW⚡ | .gemini/commands/trellis/continue.toml | 26 | ## Step 3: Decide Where You Are | COMMENT |
| LOW | .gemini/commands/trellis/continue.toml | 45 | ## Step 4: Load the Specific Step | COMMENT |
| LOW | .gemini/commands/trellis/finish-work.toml | 8 | ## Step 1: Survey current state | COMMENT |
| LOW | .gemini/commands/trellis/finish-work.toml | 22 | ## Step 2: Sanity check — classify dirty paths | COMMENT |
| LOW⚡ | .gemini/commands/trellis/finish-work.toml | 48 | ## Step 3: Archive task(s) | COMMENT |
| LOW⚡ | .gemini/commands/trellis/finish-work.toml | 58 | ## Step 4: Record session journal | COMMENT |
| LOW⚡ | .codex/agents/trellis-check.toml | 10 | ### Step 1: Find the active task path | COMMENT |
| LOW⚡ | .codex/agents/trellis-check.toml | 18 | ### Step 2: Load task context from the resolved path | COMMENT |
| LOW⚡ | .codex/agents/trellis-implement.toml | 10 | ### Step 1: Find the active task path | COMMENT |
| LOW⚡ | .codex/agents/trellis-implement.toml | 18 | ### Step 2: Load task context from the resolved path | COMMENT |
| LOW⚡ | .kiro/agents/trellis-check.json | 12 | "prompt": "# Check Agent\n\nYou are the Check Agent in the Trellis workflow.\n\n## Recursion Guard\n\nYou are already | CODE |
| LOW⚡ | .kiro/agents/trellis-research.json | 20 | "prompt": "# Research Agent\n\nYou are the Research Agent in the Trellis workflow.\n\n## Core Principle\n\n**You do on | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | .gemini/hooks/inject-workflow-state.py | 74 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-workflow-state.py | 74 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| MEDIUM⚡ | .codex/hooks/inject-workflow-state.py | 74 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| MEDIUM⚡ | .github/copilot/hooks/inject-workflow-state.py | 74 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| MEDIUM⚡ | .kiro/agents/trellis-research.json | 20 | "prompt": "# Research Agent\n\nYou are the Research Agent in the Trellis workflow.\n\n## Core Principle\n\n**You do on | CODE |
| MEDIUM⚡ | .kiro/hooks/inject-workflow-state.py | 74 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/inject-subagent-context.py | 715 | # Check if task directory exists | COMMENT |
| LOW | .claude/hooks/inject-subagent-context.py | 715 | # Check if task directory exists | COMMENT |
| LOW | .trellis/scripts/init_developer.py | 36 | # Check if already initialized | COMMENT |
| LOW | .trellis/scripts/add_session.py | 377 | # Check if there are staged changes for the paths we just staged. | COMMENT |
| LOW | .trellis/scripts/common/task_store.py | 582 | # Check if child already has a parent | COMMENT |
| LOW | .trellis/scripts/common/task_context.py | 62 | # Check if already exists | COMMENT |
| LOW | .kiro/hooks/inject-subagent-context.py | 715 | # Check if task directory exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .trellis/scripts/common/task_queue.py | 121 | List tasks assigned to current developer. Args: filter_status: Optional status filter. repo_root: R | STRING |
| HIGH | .trellis/scripts/common/cli_adapter.py | 610 | Get CLI adapter for the specified platform. Args: platform: Platform name ('claude', 'opencode', 'cursor', | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src-tauri/src/clipboard/detect.rs | 166 | detect_text_sub_kind("user@example.com"), | CODE |
| LOW | src/locales/zh-CN/clipboard.json | 63 | "placeholder": "为这条记录添加备注...", | CODE |
| LOW | src/locales/zh-CN/preferences.json | 532 | "placeholder": "Alt+C", | CODE |
| LOW | src/locales/zh-CN/preferences.json | 537 | "placeholder": "Alt+X", | CODE |
| LOW | src/locales/zh-CN/preferences.json | 663 | "placeholder": "搜索配置项" | CODE |
| LOW | src/locales/en-US/clipboard.json | 63 | "placeholder": "Add a note for this item...", | CODE |
| LOW | src/locales/en-US/preferences.json | 532 | "placeholder": "Alt+C", | CODE |
| LOW | src/locales/en-US/preferences.json | 537 | "placeholder": "Alt+X", | CODE |
| LOW | src/locales/en-US/preferences.json | 663 | "placeholder": "Search settings" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | .kiro/agents/trellis-check.json | 12 | "prompt": "# Check Agent\n\nYou are the Check Agent in the Trellis workflow.\n\n## Recursion Guard\n\nYou are already | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .trellis/scripts/common/task_store.py | 68 | CODE |