The best agent harness.
This report presents the forensic synthetic code analysis of mindfold-ai/Trellis, a TypeScript project with 12,561 GitHub stars. SynthScan v2.0 examined 382,757 lines of code across 1866 source files, recording 1656 pattern matches distributed across 18 syntactic categories. The overall adjusted score of 9.3 places this repository in the Low 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 1656 distinct pattern matches across 18 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 |
|---|---|---|---|---|
| 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 | …trellis-meta/references/claude-code/worktree-config.md | 50 | # ============================================================================= | COMMENT |
| MEDIUM | …trellis-meta/references/claude-code/worktree-config.md | 52 | # ============================================================================= | COMMENT |
| MEDIUM | …trellis-meta/references/claude-code/worktree-config.md | 77 | # ============================================================================= | COMMENT |
| MEDIUM | …trellis-meta/references/claude-code/worktree-config.md | 79 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-workflow-state.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .claude/hooks/inject-workflow-state.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 299 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .claude/hooks/inject-workflow-state.py | 301 | # --------------------------------------------------------------------------- | 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 | …trellis-meta/references/claude-code/worktree-config.md | 50 | # ============================================================================= | COMMENT |
| MEDIUM | …trellis-meta/references/claude-code/worktree-config.md | 52 | # ============================================================================= | COMMENT |
| MEDIUM | …trellis-meta/references/claude-code/worktree-config.md | 77 | # ============================================================================= | COMMENT |
| MEDIUM | …trellis-meta/references/claude-code/worktree-config.md | 79 | # ============================================================================= | COMMENT |
| MEDIUM⚡ | .codex/hooks/inject-workflow-state.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | .codex/hooks/inject-workflow-state.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 87 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 89 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 163 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 165 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 299 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .codex/hooks/inject-workflow-state.py | 301 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/cli/src/templates/markdown/worktree.yaml.txt | 6 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/cli/src/templates/markdown/worktree.yaml.txt | 8 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/cli/src/templates/markdown/worktree.yaml.txt | 14 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | packages/cli/src/templates/markdown/worktree.yaml.txt | 16 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/cli/src/templates/markdown/worktree.yaml.txt | 27 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/cli/src/templates/markdown/worktree.yaml.txt | 29 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/cli/src/templates/markdown/worktree.yaml.txt | 42 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | packages/cli/src/templates/markdown/worktree.yaml.txt | 44 | #------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 6 | // ── Types ────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 43 | // ── Lazy-load pi-tui (avoid failing top-level imports) ───────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 69 | // ── Constants ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 91 | // ── State types ─────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 140 | // ── Native partial-update card state ────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 387 | // ── Utilities ───────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 598 | // ── Pi CLI path resolution ──────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 683 | // ── BoundedBufferCollector ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 719 | // ── Trellis Context ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 852 | // ── Workflow State Breadcrumb ───────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 882 | // ── Session Overview ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 1001 | // ── Event parsing ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 1127 | // ── runPi: subprocess execution + event processing ─────────────────── | COMMENT |
| MEDIUM | …s/cli/src/templates/pi/extensions/trellis/index.ts.txt | 1379 | // ── Extension ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | …li/src/templates/shared-hooks/inject-workflow-state.py | 73 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | …li/src/templates/shared-hooks/inject-workflow-state.py | 75 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …li/src/templates/shared-hooks/inject-workflow-state.py | 91 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …li/src/templates/shared-hooks/inject-workflow-state.py | 93 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …li/src/templates/shared-hooks/inject-workflow-state.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …li/src/templates/shared-hooks/inject-workflow-state.py | 172 | # --------------------------------------------------------------------------- | COMMENT |
| 306 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-publish-skill.md | 11 | ### Step 1: Identify the Skill | COMMENT |
| LOW | .cursor/commands/trellis-publish-skill.md | 29 | ### Step 2: Check Existing Docs | COMMENT |
| LOW | .cursor/commands/trellis-publish-skill.md | 39 | ### Step 3: Create EN Detail Page | COMMENT |
| LOW⚡ | .cursor/commands/trellis-publish-skill.md | 86 | ### Step 4: Create ZH Detail Page | COMMENT |
| LOW⚡ | .cursor/commands/trellis-publish-skill.md | 90 | ### Step 5: Update Index Pages | COMMENT |
| LOW⚡ | .cursor/commands/trellis-publish-skill.md | 96 | ### Step 6: Update docs.json | COMMENT |
| LOW⚡ | .cursor/commands/trellis-publish-skill.md | 103 | ### Step 7: Commit and Push Docs | COMMENT |
| LOW⚡ | .cursor/commands/trellis-publish-skill.md | 113 | ### Step 8: Ensure Skill on Main Branch | COMMENT |
| LOW | .cursor/commands/trellis-publish-skill.md | 136 | ### Step 9: Confirm | COMMENT |
| LOW⚡ | .cursor/commands/trellis-create-manifest.md | 11 | ### Step 1: Identify Last Release | COMMENT |
| LOW⚡ | .cursor/commands/trellis-create-manifest.md | 20 | ### Step 2: Gather Changes | COMMENT |
| LOW⚡ | .cursor/commands/trellis-create-manifest.md | 30 | ### Step 3: Analyze Each Commit | COMMENT |
| LOW⚡ | .cursor/commands/trellis-create-manifest.md | 37 | ### Step 4: Draft Changelog | COMMENT |
| LOW | .cursor/commands/trellis-create-manifest.md | 49 | ### Step 5: Determine Manifest Fields | COMMENT |
| LOW | .cursor/commands/trellis-create-manifest.md | 58 | ### Step 6: Create Manifest | COMMENT |
| LOW | .cursor/commands/trellis-create-manifest.md | 70 | ### Step 7: Review and Confirm | 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 | 76 | ### Step 1: Restate the Problem | COMMENT |
| LOW | .cursor/skills/trellis-brainstorm/SKILL.md | 83 | ### Step 2: List Fundamental Truths | COMMENT |
| LOW⚡ | .cursor/skills/trellis-brainstorm/SKILL.md | 94 | ### Step 3: Challenge Assumptions | COMMENT |
| LOW⚡ | .cursor/skills/trellis-brainstorm/SKILL.md | 103 | ### Step 4: Build Up from Truths | COMMENT |
| LOW⚡ | .cursor/skills/trellis-brainstorm/SKILL.md | 109 | ### 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 | .opencode/agents/trellis-check.md | 60 | ### Step 1: Get Changes | COMMENT |
| LOW | .opencode/agents/trellis-check.md | 67 | ### Step 2: Check Against Specs and Task Artifacts | COMMENT |
| LOW | .opencode/agents/trellis-check.md | 79 | ### Step 3: Self-Fix | COMMENT |
| LOW | .opencode/agents/trellis-check.md | 87 | ### Step 4: Run Verification | COMMENT |
| LOW⚡ | .opencode/agents/trellis-research.md | 38 | ### Step 1: Resolve Current Task | COMMENT |
| LOW⚡ | .opencode/agents/trellis-research.md | 48 | ### Step 2: Understand Search Request | COMMENT |
| 493 more matches not shown… | ||||
| 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 | .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 | …kages/cli/src/templates/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 | packages/cli/src/templates/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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .claude/hooks/session-start.py | 0 | return compact active-task status, artifact presence, and next action. | STRING |
| HIGH | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …ckages/cli/src/templates/shared-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 | .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 | …kages/cli/src/templates/copilot/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | packages/cli/src/templates/codex/hooks/session-start.py | 0 | inject only the compact phase index summary for sessionstart. | STRING |
| HIGH | …ckages/cli/src/templates/shared-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 | .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 | …kages/cli/src/templates/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 | packages/cli/src/templates/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 | …ckages/cli/src/templates/shared-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 | .claude/hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| HIGH | .codex/hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| HIGH | …kages/cli/src/templates/copilot/hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| HIGH | packages/cli/src/templates/codex/hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| HIGH | …ckages/cli/src/templates/shared-hooks/session-start.py | 0 | <ready> context loaded. follow <task-status>. load workflow/spec/task details only when needed. </ready> | STRING |
| HIGH | .cursor/hooks/inject-subagent-context.py | 0 | multi-platform sub-agent context injection hook injects task-specific context when sub-agents (implement, check, researc | STRING |
| HIGH | .claude/hooks/inject-subagent-context.py | 0 | multi-platform sub-agent context injection hook injects task-specific context when sub-agents (implement, check, researc | STRING |
| HIGH | …/src/templates/shared-hooks/inject-subagent-context.py | 0 | multi-platform sub-agent context injection hook injects task-specific context when sub-agents (implement, check, researc | STRING |
| HIGH | .cursor/hooks/inject-subagent-context.py | 0 | find git repo root from start_path upwards returns: repo root path, or none if not found | STRING |
| HIGH | .claude/hooks/inject-subagent-context.py | 0 | find git repo root from start_path upwards returns: repo root path, or none if not found | STRING |
| HIGH | …/src/templates/shared-hooks/inject-subagent-context.py | 0 | find git repo root from start_path upwards returns: repo root path, or none if not found | STRING |
| 87 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 | 231 | def _persist_context_key_for_bash(context_key: str | None) -> None: | CODE |
| LOW | .cursor/hooks/session-start.py | 565 | def _collect_spec_index_paths(trellis_dir: Path, allowed_pkgs: set | None) -> list[str]: | CODE |
| LOW | .cursor/hooks/session-start.py | 596 | def _build_compact_current_state( | CODE |
| LOW | .cursor/hooks/session-start.py | 687 | 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 | .opencode/plugins/inject-subagent-context.js | 325 | function buildTrellisContextPrefix(contextKey, hostPlatform = process.platform, env = process.env) { | CODE |
| LOW | .opencode/plugins/inject-subagent-context.js | 340 | function commandStartsWithTrellisContext(command) { | CODE |
| LOW | .opencode/plugins/inject-subagent-context.js | 354 | function injectTrellisContextIntoBash(ctx, input, output, hostPlatform, env) { | CODE |
| LOW | .opencode/lib/session-utils.js | 487 | export function hasInjectedTrellisContext(messages) { | CODE |
| LOW | .opencode/lib/session-utils.js | 501 | export async function hasPersistedInjectedContext(client, directory, sessionID) { | CODE |
| LOW | .claude/hooks/session-start.py | 22 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| LOW | .claude/hooks/session-start.py | 231 | def _persist_context_key_for_bash(context_key: str | None) -> None: | CODE |
| LOW | .claude/hooks/session-start.py | 565 | def _collect_spec_index_paths(trellis_dir: Path, allowed_pkgs: set | None) -> list[str]: | CODE |
| LOW | .claude/hooks/session-start.py | 596 | def _build_compact_current_state( | CODE |
| LOW | .claude/hooks/session-start.py | 687 | 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 | packages/core/src/channel/internal/store/paths.ts | 208 | export function listChannelNamesInProject(project: string): string[] { | CODE |
| LOW | packages/core/src/channel/internal/store/paths.ts | 235 | export function resolveChannelProjectForCreate( | CODE |
| LOW | packages/core/src/channel/internal/store/paths.ts | 254 | export function resolveExistingChannelRef( | CODE |
| LOW | packages/core/src/channel/internal/store/paths.ts | 329 | export function selectExistingChannelProject(name: string): string { | CODE |
| LOW | packages/core/src/mem/sessions.ts | 161 | function searchSessionWithChildren( | CODE |
| LOW | packages/core/src/mem/adapters/claude.ts | 210 | export function collectClaudeTurnsAndEvents(s: MemSessionInfo): { | CODE |
| LOW | packages/core/src/mem/adapters/codex.ts | 72 | export function commandFromCodexArguments(argsRaw: unknown): string | undefined { | CODE |
| LOW | packages/core/src/mem/adapters/codex.ts | 210 | export function collectCodexTurnsAndEvents(s: MemSessionInfo): { | CODE |
| LOW | packages/cli/test/regression.test.ts | 895 | function runContextWithTrellisOutput( | CODE |
| LOW | packages/cli/test/regression.test.ts | 2370 | function statuslineRateLimitPayload(): string { | CODE |
| LOW | packages/cli/test/regression.test.ts | 3163 | function runInjectWorkflowStateWithInput(inputData: object): string { | CODE |
| LOW | packages/cli/test/regression.test.ts | 6390 | function expectTaskArtifactContract(content: string): void { | CODE |
| LOW | packages/cli/test/templates/opencode.test.ts | 32 | async function createOpenCodeInjectHooks( | CODE |
| LOW | packages/cli/test/commands/update.integration.test.ts | 143 | function stageVersionedUpgradeProject(options: { | CODE |
| LOW | packages/cli/test/commands/init.integration.test.ts | 1325 | async function installStatuslinePromptMock( | CODE |
| LOW | packages/cli/scripts/check-manifest-continuity.js | 59 | function readLocalManifestVersions() { | CODE |
| LOW | packages/cli/scripts/create-manifest.js | 71 | function guardAgainstPublishedManifest(version, manifestPath, allowOverwrite) { | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 45 | export function resetResolvedPythonCommand(): void { | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 57 | export function getPythonCommandForPlatform( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 78 | export function replacePythonCommandLiterals(content: string): string { | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 194 | export function resolvePlaceholdersNeutral( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 289 | export function wrapWithCommandFrontmatter( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 457 | export function resolveAllAsSkillsNeutral( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 614 | export function injectPullBasedPreludeMarkdown( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 631 | export function injectPullBasedPreludeToml( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 684 | export function applyPullBasedPreludeMarkdown( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 729 | function normalizeCopilotMarkdownAgentFrontmatter(content: string): string { | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 761 | export function normalizeCopilotMarkdownAgents( | CODE |
| LOW | packages/cli/src/configurators/shared.ts | 770 | export function applyPullBasedPreludeToml( | CODE |
| LOW | packages/cli/src/configurators/index.ts | 544 | export function getPlatformsWithPythonHooks(): AITool[] { | CODE |
| LOW | packages/cli/src/utils/project-detector.ts | 200 | export function getProjectTypeDescription(type: ProjectType): string { | CODE |
| LOW | packages/cli/src/utils/uninstall-scrubbers.ts | 34 | function commandMatchesDeletedPath( | CODE |
| LOW | packages/cli/src/utils/uninstall-scrubbers.ts | 379 | export function scrubManagedMarkdownBlock( | CODE |
| LOW | packages/cli/src/utils/template-fetcher.ts | 768 | function resolveInsideRegistryRoot( | CODE |
| LOW | packages/cli/src/utils/template-fetcher.ts | 1048 | async function copyDirectoryWithStrategy( | CODE |
| LOW | packages/cli/src/utils/template-fetcher.ts | 1097 | async function downloadGitRegistryDirect( | CODE |
| LOW | packages/cli/src/utils/template-fetcher.ts | 1362 | export async function fetchRegistrySpecTemplates( | CODE |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 54 | def _normalize_windows_shell_path(path_str: str) -> str: | CODE |
| 111 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 | 456 | except Exception: | CODE |
| LOW | .cursor/hooks/session-start.py | 607 | except Exception: | CODE |
| LOW | .cursor/hooks/session-start.py | 640 | 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 | .claude/hooks/inject-workflow-state.py | 51 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 56 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 211 | except Exception: | CODE |
| LOW | .claude/hooks/inject-workflow-state.py | 215 | 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 | 456 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 607 | except Exception: | CODE |
| LOW | .claude/hooks/session-start.py | 640 | 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 | 51 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 56 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 211 | except Exception: | CODE |
| LOW | .codex/hooks/inject-workflow-state.py | 215 | 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 | …kages/cli/src/templates/copilot/hooks/session-start.py | 36 | except Exception: | CODE |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 41 | except Exception: | CODE |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 123 | except Exception: | CODE |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 163 | except Exception: | CODE |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 372 | except Exception: | CODE |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 405 | except Exception: | CODE |
| LOW | packages/cli/src/templates/claude/hooks/statusline.py | 102 | except Exception: | CODE |
| LOW⚡ | packages/cli/src/templates/codex/hooks/session-start.py | 35 | except Exception: | CODE |
| LOW⚡ | packages/cli/src/templates/codex/hooks/session-start.py | 40 | except Exception: | CODE |
| LOW | packages/cli/src/templates/codex/hooks/session-start.py | 118 | except Exception: | CODE |
| LOW | packages/cli/src/templates/codex/hooks/session-start.py | 158 | except Exception: | CODE |
| LOW | packages/cli/src/templates/codex/hooks/session-start.py | 367 | except Exception: | CODE |
| LOW | packages/cli/src/templates/codex/hooks/session-start.py | 400 | except Exception: | CODE |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 55 | except Exception: | CODE |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 60 | except Exception: | CODE |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 218 | except Exception: | CODE |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 222 | except Exception: | CODE |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 324 | except Exception as exc: | CODE |
| MEDIUM | …li/src/templates/shared-hooks/inject-workflow-state.py | 321 | def _read() -> None: | CODE |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 89 | except Exception: | CODE |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 94 | except Exception: | CODE |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 460 | except Exception: | CODE |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 611 | except Exception: | CODE |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 644 | except Exception: | CODE |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 123 | except Exception: | CODE |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 141 | except Exception: | CODE |
| 52 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 | .claude/hooks/inject-workflow-state.py | 29 | 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 | 29 | CODE | |
| LOW | .codex/hooks/session-start.py | 10 | CODE | |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 18 | CODE | |
| LOW | packages/cli/src/templates/claude/hooks/statusline.py | 14 | CODE | |
| LOW | packages/cli/src/templates/codex/hooks/session-start.py | 10 | CODE | |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 31 | CODE | |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 6 | CODE | |
| LOW | …templates/shared-hooks/inject-shell-session-context.py | 9 | CODE | |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 23 | CODE | |
| LOW | packages/cli/src/templates/trellis/scripts/task.py | 24 | CODE | |
| LOW | …ges/cli/src/templates/trellis/scripts/get_developer.py | 8 | CODE | |
| LOW | …kages/cli/src/templates/trellis/scripts/get_context.py | 10 | CODE | |
| LOW | …es/cli/src/templates/trellis/scripts/init_developer.py | 13 | CODE | |
| LOW | …kages/cli/src/templates/trellis/scripts/add_session.py | 22 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/safe_commit.py | 33 | CODE | |
| LOW | …rc/templates/trellis/scripts/common/session_context.py | 14 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/active_task.py | 9 | CODE | |
| LOW | …ckages/cli/src/templates/trellis/scripts/common/git.py | 7 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/git_context.py | 13 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/git_context.py | 18 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/git_context.py | 18 | CODE | |
| LOW | …cli/src/templates/trellis/scripts/common/task_queue.py | 13 | CODE | |
| LOW | …ages/cli/src/templates/trellis/scripts/common/tasks.py | 13 | CODE | |
| LOW | …ges/cli/src/templates/trellis/scripts/common/config.py | 8 | CODE | |
| LOW | …cli/src/templates/trellis/scripts/common/task_store.py | 16 | CODE | |
| LOW | …c/templates/trellis/scripts/common/packages_context.py | 12 | CODE | |
| LOW | …ages/cli/src/templates/trellis/scripts/common/paths.py | 13 | CODE | |
| LOW | …ckages/cli/src/templates/trellis/scripts/common/log.py | 8 | CODE | |
| LOW | packages/cli/src/templates/trellis/scripts/common/io.py | 8 | CODE | |
| LOW | …src/templates/trellis/scripts/common/workflow_phase.py | 21 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| LOW | …s/cli/src/templates/trellis/scripts/common/__init__.py | 58 | CODE | |
| 71 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …kills/ts-sdk-author/references/workspace-and-layout.md | 550 | # Step 1 — Create the monorepo scaffold | COMMENT |
| MEDIUM | packages/cli/src/configurators/gemini.ts | 29 | * BeforeTool can fire but #18128 limits chain-of-thought visibility; sub-agents | COMMENT |
| MEDIUM⚡ | packages/cli/src/templates/markdown/worktree.yaml.txt | 2 | # Used for worktree initialization in multi-agent workflows | COMMENT |
| MEDIUM | …5/05-15-workflow-marketplace-feature-flag/implement.md | 20 | ## 0. Research and guardrails | COMMENT |
| MEDIUM | …hook-reliability-audit/research/platform-hook-audit.md | 70 | - [Issue #18128](https://github.com/google-gemini/gemini-cli/issues/18128) (OPEN, 2026-02-02) — *"the transcript is ne | CODE |
| MEDIUM | …hook-reliability-audit/research/platform-hook-audit.md | 73 | - #18128 未修:BeforeTool hook 在 sub-agent 场景下收不到主 agent 的 chain-of-thought/content(可以改 input,但判断依据受限) | CODE |
| MEDIUM | …30-workflow-state-commit-gap/research/hook-topology.md | 76 | | **Gemini** | `gemini.ts:29` | `.gemini/hooks/` | `.gemini/settings.json` | session-start.py | inject-workflow-state.py | CODE |
| MEDIUM | …/tasks/archive/2026-03/03-07-learn-openspec-prd/prd.md | 129 | - [SDD 工具对比:GSD vs Spec Kit vs OpenSpec vs Taskmaster AI](https://medium.com/@richardhightower/agentic-coding-gsd-vs-spe | CODE |
| MEDIUM | …/tasks/archive/2026-03/03-12-codex-review-fixes/prd.md | 132 | | **P1 应修** | CR#11 | 真问题 | submodule status 解析 bug,影响 multi-agent pipeline | | CODE |
| MEDIUM | …-plugin-system-design/research/claude-code-hook-api.md | 17 | 来自 [Hooks reference · Hook lifecycle](https://docs.anthropic.com/en/docs/claude-code/hooks#hook-lifecycle)。Cadence 分三类:* | CODE |
| MEDIUM | …-plugin-system-design/research/claude-code-hook-api.md | 17 | 来自 [Hooks reference · Hook lifecycle](https://docs.anthropic.com/en/docs/claude-code/hooks#hook-lifecycle)。Cadence 分三类:* | CODE |
| MEDIUM | …04-20-plugin-system-design/research/cursor-trace-ux.md | 83 | — [digitalapplied.com · Cursor Automations guide](https://www.digitalapplied.com/blog/cursor-automations-always-on-age | CODE |
| MEDIUM | …unding-benchmark-toy-phase/research/opencode-driver.md | 122 | steps: 200 # cap agentic iterations; tune after first dry runs | CODE |
| MEDIUM | …release-v0-6-0-ga/research/PRESHIP-VERIFY-changelog.md | 30 | | Tip anchor link | `#multi-agent-collaboration` → `## Multi-agent collaboration` | `#多-a | CODE |
| MEDIUM | …release-v0-6-0-ga/research/PRESHIP-VERIFY-changelog.md | 65 | 1. `docs-site/changelog/v0.6.0.mdx:174–183` — Bundled skills section listed only 2 of 4 skills (spec-bootstrap, session- | CODE |
| MEDIUM | …5-release-v0-6-0-ga/research/0.6.0-manifest-draft.json | 1 | {"version": "0.6.0", "description": "v0.6.0 stable — multi-agent channel runtime, `trellis mem`, `@mindfoldhq/trellis-co | CODE |
| MEDIUM | …e/2026-06/06-15-release-v0-6-0-ga/research/CRITIQUE.md | 31 | ### A4. SHOULD-FIX — `multi-agent-channel.md` defers all command syntax to "the bundled `trellis-channel` skill" without | COMMENT |
| MEDIUM | …e/2026-06/06-15-release-v0-6-0-ga/research/CRITIQUE.md | 107 | Mintlify generates anchors from heading text via a deterministic slugifier that handles CJK inconsistently. ZH H2 is `## | CODE |
| MEDIUM | …elease-v0-6-0-ga/research/v0.6.0-changelog-en-draft.md | 9 | **Multi-agent collaboration is now a first-class primitive.** `trellis channel` ships a worker-supervisor runtime with C | CODE |
| MEDIUM | …06/06-15-release-v0-6-0-ga/research/CRITIQUE-VERIFY.md | 31 | ### A4 — SHOULD-FIX — `multi-agent-channel.md` missing platform sub-agent vs channel-runtime distinction | COMMENT |
| MEDIUM | .trellis/tasks/archive/2026-01/01-30-bash2py/prd.md | 22 | ├── multi-agent/ # Shell multi-agent scripts | CODE |
| MEDIUM | .trellis/tasks/archive/2026-01/01-30-bash2py/prd.md | 40 | ├── multi_agent/ # Python multi-agent scripts | CODE |
| MEDIUM | …2026-01/01-19-readme-redesign-taosu/version3/README.md | 70 | ### Complex task: /parallel(这个 Case 可以深度考虑, 最好的效果是它用 TMUX 多开了好几个 session 同时做这事,举个例子让他做一个 open cowork,一个是 research 了解 cow | COMMENT |
| MEDIUM | …01-19-readme-redesign-taosu/competitors/superpowers.md | 8 | **Superpowers** 是由 Jesse Vincent ([@obra](https://github.com/obra)) 开发的 Claude Code 插件,目前在 GitHub 上有 **29.5k+ stars**。它是 | CODE |
| MEDIUM | .trellis/tasks/06-17-benchmark-showcase/implement.md | 15 | ## Phase 1 — Harness scaffolding | COMMENT |
| MEDIUM | .trellis/workspace/taosu/journal-5.md | 753 | ## Session 158: Trellis Channel Runtime — multi-agent collaboration layer | COMMENT |
| MEDIUM | .trellis/workspace/taosu/journal-2.md | 1863 | ## Session 67: Fix nested Claude Code session error in multi-agent pipeline | COMMENT |
| MEDIUM | .trellis/spec/cli/backend/directory-structure.md | 33 | │ │ └── channel/ # Channel command renderers and CLI orchestration | CODE |
| MEDIUM | .trellis/spec/cli/backend/platform-integration.md | 904 | | Gemini CLI | `BeforeTool` fires but [#18128](https://github.com/google-gemini/gemini-cli/issues/18128) hides chain-of- | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/session-start.py | 416 | CODE | |
| LOW | .cursor/hooks/session-start.py | 596 | 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 | .claude/hooks/inject-workflow-state.py | 250 | CODE | |
| LOW | .claude/hooks/session-start.py | 416 | CODE | |
| LOW | .claude/hooks/session-start.py | 596 | 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 | 250 | CODE | |
| LOW | .codex/hooks/session-start.py | 356 | CODE | |
| LOW | …kages/cli/src/templates/copilot/hooks/session-start.py | 361 | CODE | |
| LOW | packages/cli/src/templates/codex/hooks/session-start.py | 356 | CODE | |
| LOW | …li/src/templates/shared-hooks/inject-workflow-state.py | 257 | CODE | |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 420 | CODE | |
| LOW | …ckages/cli/src/templates/shared-hooks/session-start.py | 600 | CODE | |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 146 | CODE | |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 190 | CODE | |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 577 | CODE | |
| LOW | packages/cli/src/templates/trellis/scripts/task.py | 70 | CODE | |
| LOW | packages/cli/src/templates/trellis/scripts/task.py | 268 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/safe_commit.py | 61 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/git_context.py | 46 | CODE | |
| LOW | …ges/cli/src/templates/trellis/scripts/common/config.py | 89 | CODE | |
| LOW | …cli/src/templates/trellis/scripts/common/task_store.py | 203 | CODE | |
| LOW | …cli/src/templates/trellis/scripts/common/task_store.py | 436 | CODE | |
| LOW | …src/templates/trellis/scripts/common/trellis_config.py | 55 | CODE | |
| LOW | …cli/src/templates/trellis/scripts/common/task_utils.py | 240 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 718 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 99 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 248 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 298 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 339 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 446 | CODE | |
| LOW | …li/src/templates/trellis/scripts/common/cli_adapter.py | 544 | 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 | 201 | CODE | |
| LOW | .trellis/scripts/common/task_store.py | 434 | CODE | |
| LOW | .trellis/scripts/common/trellis_config.py | 55 | CODE | |
| LOW | .trellis/scripts/common/task_utils.py | 240 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 700 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 97 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 244 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 294 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 333 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 436 | CODE | |
| LOW | .trellis/scripts/common/cli_adapter.py | 530 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …kills/ts-sdk-author/references/workspace-and-layout.md | 581 | # In each imported package.json: | COMMENT |
| LOW | …trellis-meta/references/claude-code/worktree-config.md | 61 | copy: | COMMENT |
| LOW | …trellis-meta/references/claude-code/worktree-config.md | 461 | # "iteration": 2, | COMMENT |
| LOW | …trellis-meta/references/claude-code/worktree-config.md | 61 | copy: | COMMENT |
| LOW | …trellis-meta/references/claude-code/worktree-config.md | 461 | # "iteration": 2, | COMMENT |
| 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 | packages/cli/test/regression.test.ts | 6241 | // `f"{drive}:\\{rest.replace('/', '\\')}"` | COMMENT |
| LOW | packages/cli/test/regression.test.ts | 6301 | // codebuddy / droid) used to rely entirely on PreToolUse hook injection for | COMMENT |
| LOW | packages/cli/test/regression.test.ts | 6681 | expect(tmpl).toContain("# Codex (dispatch behavior)"); | COMMENT |
| LOW | packages/cli/test/regression.test.ts | 6701 | // That auto-`-f` was an over-fix — when a user gitignores `.trellis/` they | COMMENT |
| LOW | packages/cli/test/utils/uninstall-scrubbers.test.ts | 461 | # Codex loads this after ~/.codex/config.toml when you work in this project. | COMMENT |
| LOW | packages/cli/test/templates/claude.test.ts | 21 | // v0.5.0-beta.8: pin CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1 at the project | COMMENT |
| LOW | packages/cli/test/templates/codex.test.ts | 81 | // `data did not match any variant of untagged enum FeatureToml`. Trellis | COMMENT |
| LOW | packages/cli/scripts/migrate-features-to-tasks.sh | 1 | #!/bin/bash | COMMENT |
| LOW | packages/cli/src/templates/markdown/worktree.yaml.txt | 1 | # Worktree Configuration for Multi-Agent Pipeline | COMMENT |
| LOW | packages/cli/src/templates/markdown/worktree.yaml.txt | 21 | # Environment variables (uncomment and customize as needed) | COMMENT |
| LOW | packages/cli/src/templates/markdown/worktree.yaml.txt | 41 | COMMENT | |
| LOW | packages/cli/src/templates/codex/config.toml | 1 | # Project-scoped Codex defaults for Trellis workflows. | COMMENT |
| LOW | packages/cli/src/templates/codex/config.toml | 21 | # block here. Codex CLI changed `features` deserialization between 0.130 | COMMENT |
| LOW | …es/cli/src/templates/codex/skills/update-spec/SKILL.md | 141 | ```markdown | COMMENT |
| LOW | packages/cli/src/templates/trellis/config.yaml | 1 | # Trellis Configuration | COMMENT |
| LOW | packages/cli/src/templates/trellis/config.yaml | 21 | # Auto-commit behavior for session journal + task archive operations. | COMMENT |
| LOW | packages/cli/src/templates/trellis/config.yaml | 41 | # Hook failures print a warning but do not block the main operation. | COMMENT |
| LOW | packages/cli/src/templates/trellis/config.yaml | 61 | # packages: | COMMENT |
| LOW | packages/cli/src/templates/trellis/config.yaml | 81 | #------------------------------------------------------------------------------- | COMMENT |
| LOW | packages/cli/src/templates/trellis/config.yaml | 101 | #------------------------------------------------------------------------------- | COMMENT |
| LOW | packages/cli/src/commands/init.ts | 2001 | } catch { | 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 | path: docs-site | COMMENT |
| LOW | .trellis/config.yaml | 101 | # | COMMENT |
| LOW | .trellis/spec/cli/backend/commands-channel.md | 281 | readChannelMetadata(name, project?): Promise<ChannelMetadata> | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| 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⚡ | packages/cli/src/configurators/shared.ts | 589 | ### Step 1: Find the active task path | COMMENT |
| LOW⚡ | packages/cli/src/configurators/shared.ts | 597 | ### Step 2: Load task context from the resolved path | COMMENT |
| LOW⚡ | …kages/cli/src/templates/kiro/agents/trellis-check.json | 4 | "prompt": "# Check Agent\n\nYou are the Check Agent in the Trellis workflow.\n\n## Recursion Guard\n\nYou are already | CODE |
| LOW⚡ | …es/cli/src/templates/kiro/agents/trellis-research.json | 4 | "prompt": "# Research Agent\n\nYou are the Research Agent in the Trellis workflow.\n\n## Core Principle\n\n**You do on | CODE |
| LOW | packages/cli/src/commands/init.ts | 465 | ### Step 1: Import from existing convention files first (preferred) | COMMENT |
| LOW⚡ | packages/cli/src/commands/init.ts | 486 | ### Step 2: Analyze the codebase for anything not covered by existing docs | COMMENT |
| LOW⚡ | packages/cli/src/commands/init.ts | 493 | ### Step 3: Document reality, not ideals | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …commands/init-uninstall-overdelete.integration.test.ts | 268 | hashes["AGENTS.md"] = "fake-user-hash"; | CODE |
| LOW | …codex-schema/codex_app_server_protocol.v2.schemas.json | 2834 | "placeholder": { | CODE |
| LOW | …ch/codex-schema/codex_app_server_protocol.schemas.json | 7953 | "placeholder": { | CODE |
| LOW | …agent-runtime/research/codex-schema/ClientRequest.json | 5424 | "placeholder": { | CODE |
| LOW | …-runtime/research/codex-schema/ServerNotification.json | 4242 | "placeholder": { | CODE |
| LOW | …time/research/codex-schema/v2/ThreadStartResponse.json | 1378 | "placeholder": { | CODE |
| LOW | …-runtime/research/codex-schema/v2/TurnStartParams.json | 464 | "placeholder": { | CODE |
| LOW | …/research/codex-schema/v2/ItemStartedNotification.json | 505 | "placeholder": { | CODE |
| LOW | …esearch/codex-schema/v2/TurnCompletedNotification.json | 639 | "placeholder": { | CODE |
| LOW | …esearch/codex-schema/v2/ItemCompletedNotification.json | 505 | "placeholder": { | CODE |
| LOW | …esearch/codex-schema/v2/ThreadStartedNotification.json | 777 | "placeholder": { | CODE |
| LOW | …e/research/codex-schema/v2/ThreadRollbackResponse.json | 782 | "placeholder": { | CODE |
| LOW | …/research/codex-schema/v2/TurnStartedNotification.json | 639 | "placeholder": { | CODE |
| LOW | …ntime/research/codex-schema/v2/ThreadReadResponse.json | 777 | "placeholder": { | CODE |
| LOW | …-runtime/research/codex-schema/v2/TurnSteerParams.json | 59 | "placeholder": { | CODE |
| LOW | …untime/research/codex-schema/v2/TurnStartResponse.json | 635 | "placeholder": { | CODE |
| LOW | …/research/codex-schema/v2/ThreadUnarchiveResponse.json | 777 | "placeholder": { | CODE |
| LOW | …ntime/research/codex-schema/v2/ThreadForkResponse.json | 1378 | "placeholder": { | CODE |
| LOW | …arch/codex-schema/v2/ThreadMetadataUpdateResponse.json | 777 | "placeholder": { | CODE |
| LOW | …ntime/research/codex-schema/v2/ThreadListResponse.json | 794 | "placeholder": { | CODE |
| LOW | …ime/research/codex-schema/v2/ThreadResumeResponse.json | 1378 | "placeholder": { | CODE |
| LOW | …time/research/codex-schema/v2/ReviewStartResponse.json | 640 | "placeholder": { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …cli/src/templates/trellis/scripts/common/task_queue.py | 121 | List tasks assigned to current developer. Args: filter_status: Optional status filter. repo_root: R | STRING |
| HIGH | …li/src/templates/trellis/scripts/common/cli_adapter.py | 638 | Get CLI adapter for the specified platform. Args: platform: Platform name ('claude', 'opencode', 'cursor', | STRING |
| 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 | 622 | Get CLI adapter for the specified platform. Args: platform: Platform name ('claude', 'opencode', 'cursor', | STRING |
| 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 | packages/cli/scripts/migrate-features-to-tasks.sh | 36 | # Check if .trellis exists | COMMENT |
| LOW | …/src/templates/shared-hooks/inject-subagent-context.py | 715 | # Check if task directory exists | COMMENT |
| LOW | …es/cli/src/templates/trellis/scripts/init_developer.py | 36 | # Check if already initialized | COMMENT |
| LOW | …kages/cli/src/templates/trellis/scripts/add_session.py | 435 | # Check if there are staged changes for the paths we just staged. | COMMENT |
| LOW | …cli/src/templates/trellis/scripts/common/task_store.py | 653 | # Check if child already has a parent | COMMENT |
| LOW | …i/src/templates/trellis/scripts/common/task_context.py | 62 | # Check if already exists | COMMENT |
| LOW | …01-19-readme-redesign-taosu/bootstrap-skill/install.sh | 26 | # Check if already installed | COMMENT |
| LOW | .trellis/scripts/init_developer.py | 36 | # Check if already initialized | COMMENT |
| LOW | .trellis/scripts/add_session.py | 428 | # Check if there are staged changes for the paths we just staged. | COMMENT |
| LOW | .trellis/scripts/common/task_store.py | 651 | # Check if child already has a parent | COMMENT |
| LOW | .trellis/scripts/common/task_context.py | 62 | # Check if already exists | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | .claude/hooks/inject-workflow-state.py | 70 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| MEDIUM⚡ | .codex/hooks/inject-workflow-state.py | 70 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| MEDIUM⚡ | …es/cli/src/templates/kiro/agents/trellis-research.json | 4 | "prompt": "# Research Agent\n\nYou are the Research Agent in the Trellis workflow.\n\n## Core Principle\n\n**You do on | CODE |
| MEDIUM⚡ | …li/src/templates/shared-hooks/inject-workflow-state.py | 74 | # CWD-robust Trellis root discovery (fixes hook-path-robustness for this hook) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | packages/cli/test/regression.test.ts | 3635 | print(len(entries)) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | …kages/cli/src/templates/kiro/agents/trellis-check.json | 4 | "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 | …01-19-readme-redesign-taosu/bootstrap-skill/install.sh | 5 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …cli/src/templates/trellis/scripts/common/task_store.py | 70 | CODE | |
| LOW | .trellis/scripts/common/task_store.py | 70 | CODE |