🎉跨平台的剪贴板管理工具 | Cross-platform clipboard management tool
This report summarizes scanner evidence for EcoPasteHub/EcoPaste, a Rust project with 7,502 GitHub stars. SynthScan examined 111,715 lines of code across 682 source files, recording 1054 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 24.0 (Elevated 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.
Can maintainers explain intent, assumptions, and trade-offs? 456 finding(s).
Are imports declared and package/API names verified? 83 finding(s).
Are wrappers, guards, and repeated structures necessary? 619 finding(s).
Which changes need focused human review? 1054 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 1054 distinct pattern matches across 16 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 |
|---|---|---|---|---|
| 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 |
|---|---|---|---|---|
| HIGH | .cursor/hooks/session-start.py | 251 | except OSError: | CODE |
| HIGH | .cursor/hooks/session-start.py | 353 | except (json.JSONDecodeError, PermissionError): | CODE |
| HIGH | .cursor/hooks/session-start.py | 644 | except Exception: | CODE |
| HIGH | .cursor/hooks/session-start.py | 89 | except Exception: | CODE |
| HIGH | .cursor/hooks/session-start.py | 632 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .cursor/hooks/session-start.py | 94 | except Exception: | CODE |
| HIGH | .cursor/hooks/session-start.py | 455 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .cursor/hooks/inject-shell-session-context.py | 101 | except OSError: | CODE |
| HIGH | .cursor/hooks/inject-subagent-context.py | 184 | except Exception: | CODE |
| HIGH | .cursor/hooks/inject-subagent-context.py | 245 | except Exception: | CODE |
| HIGH | .gemini/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| HIGH | .gemini/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| HIGH | .gemini/hooks/session-start.py | 251 | except OSError: | CODE |
| HIGH | .gemini/hooks/session-start.py | 353 | except (json.JSONDecodeError, PermissionError): | CODE |
| HIGH | .gemini/hooks/session-start.py | 644 | except Exception: | CODE |
| HIGH | .gemini/hooks/session-start.py | 89 | except Exception: | CODE |
| HIGH | .gemini/hooks/session-start.py | 632 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .gemini/hooks/session-start.py | 94 | except Exception: | CODE |
| HIGH | .gemini/hooks/session-start.py | 455 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .claude/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| HIGH | .claude/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| HIGH | .claude/hooks/session-start.py | 251 | except OSError: | CODE |
| HIGH | .claude/hooks/session-start.py | 353 | except (json.JSONDecodeError, PermissionError): | CODE |
| HIGH | .claude/hooks/session-start.py | 644 | except Exception: | CODE |
| HIGH | .claude/hooks/session-start.py | 89 | except Exception: | CODE |
| HIGH | .claude/hooks/session-start.py | 632 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .claude/hooks/session-start.py | 94 | except Exception: | CODE |
| HIGH | .claude/hooks/session-start.py | 455 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .claude/hooks/inject-subagent-context.py | 184 | except Exception: | CODE |
| HIGH | .claude/hooks/inject-subagent-context.py | 245 | except Exception: | CODE |
| HIGH | .codex/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| HIGH | .codex/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| HIGH | .codex/hooks/session-start.py | 118 | except Exception: | CODE |
| HIGH | .codex/hooks/session-start.py | 245 | except (json.JSONDecodeError, PermissionError): | CODE |
| HIGH | .codex/hooks/session-start.py | 400 | except Exception: | CODE |
| HIGH | .codex/hooks/session-start.py | 35 | except Exception: | CODE |
| HIGH | .codex/hooks/session-start.py | 388 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .codex/hooks/session-start.py | 40 | except Exception: | CODE |
| HIGH | .github/copilot/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| HIGH | .github/copilot/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| HIGH | .github/copilot/hooks/session-start.py | 123 | except Exception: | CODE |
| HIGH | .github/copilot/hooks/session-start.py | 250 | except (json.JSONDecodeError, PermissionError): | CODE |
| HIGH | .github/copilot/hooks/session-start.py | 405 | except Exception: | CODE |
| HIGH | .github/copilot/hooks/session-start.py | 36 | except Exception: | CODE |
| HIGH | .github/copilot/hooks/session-start.py | 393 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .github/copilot/hooks/session-start.py | 41 | except Exception: | CODE |
| HIGH | .trellis/scripts/common/session_context.py | 390 | except OSError: | CODE |
| HIGH | .trellis/scripts/common/task_store.py | 348 | except Exception: | CODE |
| HIGH | .trellis/scripts/common/paths.py | 91 | except (OSError, IOError): | CODE |
| HIGH | .trellis/scripts/common/task_utils.py | 66 | except (OSError, IOError): | CODE |
| HIGH | .trellis/scripts/common/cli_adapter.py | 835 | except OSError: | CODE |
| HIGH | .trellis/scripts/hooks/linear_sync.py | 222 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .kiro/hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| HIGH | .kiro/hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| HIGH | .kiro/hooks/session-start.py | 251 | except OSError: | CODE |
| HIGH | .kiro/hooks/session-start.py | 353 | except (json.JSONDecodeError, PermissionError): | CODE |
| HIGH | .kiro/hooks/session-start.py | 644 | except Exception: | CODE |
| HIGH | .kiro/hooks/session-start.py | 89 | except Exception: | CODE |
| HIGH | .kiro/hooks/session-start.py | 632 | except (json.JSONDecodeError, OSError): | CODE |
| HIGH | .kiro/hooks/session-start.py | 94 | except Exception: | CODE |
| 3 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 | .agents/skills/sync-zh-changelog/scripts/check_sync.py | 4 | 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 | |
| 14 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 |