Persistent file-based planning for AI coding agents and long-running tasks. Crash-proof markdown plans, session recovery after /clear and compaction, per-turn re-injection against context rot, deterministic completion gate. Manus-style. Install from npm, the Claude Code plugin marketplace, or npx skills. Codex, Cursor, OpenCode, 60+ agents.
This report presents the forensic synthetic code analysis of OthmanAdi/planning-with-files, a Shell project with 26,406 GitHub stars. SynthScan v2.0 examined 97,883 lines of code across 476 source files, recording 1493 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 32.0 places this repository in the Strong 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 1493 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | session catchup script for planning-with-files analyzes the previous session to find unsynced context after the last pla | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …i18n/planning-with-files-es/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …i18n/planning-with-files-zh/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …i18n/planning-with-files-de/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …18n/planning-with-files-zht/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …i18n/planning-with-files-ar/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | make catchup output deterministic on windows legacy code pages. codex sessions and planning files are utf-8 and can cont | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …i18n/planning-with-files-es/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …i18n/planning-with-files-zh/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …i18n/planning-with-files-de/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …18n/planning-with-files-zht/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …i18n/planning-with-files-ar/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | prefer optional orjson while keeping the hook dependency-free. | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …i18n/planning-with-files-es/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …i18n/planning-with-files-zh/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …i18n/planning-with-files-de/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …18n/planning-with-files-zht/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …i18n/planning-with-files-ar/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | normalize project path to match claude code's internal representation. claude code stores session directories using the | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | claude code's project-dir name for a project path. every character outside [a-za-z0-9_-] becomes '-', and the leading da | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | claude code's project-dir name for a project path. every character outside [a-za-z0-9_-] becomes '-', and the leading da | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | claude code's project-dir name for a project path. every character outside [a-za-z0-9_-] becomes '-', and the leading da | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | claude code's project-dir name for a project path. every character outside [a-za-z0-9_-] becomes '-', and the leading da | STRING |
| HIGH | …/skills/planning-with-files/scripts/session-catchup.py | 0 | claude code's project-dir name for a project path. every character outside [a-za-z0-9_-] becomes '-', and the leading da | STRING |
| 266 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | def _newest_session_cwd_matches(project_dir: Path, normalized: str) -> bool: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 289 | def find_current_codex_session(sessions: List[Path]) -> Optional[Path]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 393 | def _opencode_state_annotation(state: Any) -> str: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | def find_last_planning_update(messages: List[Dict[str, Any]]) -> Tuple[int, Optional[str]]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 690 | def collect_claude_tool_results(messages: List[Dict[str, Any]]) -> Dict[str, str]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | def _newest_session_cwd_matches(project_dir: Path, normalized: str) -> bool: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 289 | def find_current_codex_session(sessions: List[Path]) -> Optional[Path]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 393 | def _opencode_state_annotation(state: Any) -> str: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | def find_last_planning_update(messages: List[Dict[str, Any]]) -> Tuple[int, Optional[str]]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 690 | def collect_claude_tool_results(messages: List[Dict[str, Any]]) -> Dict[str, str]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 202 | def find_last_planning_update(messages: List[Dict]) -> Tuple[int, Optional[str]]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | def _newest_session_cwd_matches(project_dir: Path, normalized: str) -> bool: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 289 | def find_current_codex_session(sessions: List[Path]) -> Optional[Path]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 393 | def _opencode_state_annotation(state: Any) -> str: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | def find_last_planning_update(messages: List[Dict[str, Any]]) -> Tuple[int, Optional[str]]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 690 | def collect_claude_tool_results(messages: List[Dict[str, Any]]) -> Dict[str, str]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 93 | def _newest_session_cwd_matches(project_dir: Path, normalized: str) -> bool: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 265 | def find_current_codex_session(sessions: List[Path]) -> Optional[Path]: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 545 | def find_last_planning_update(messages: List[Dict[str, Any]]) -> Tuple[int, Optional[str]]: | CODE |
| LOW⚡ | tests/test_seo_docs_pages.py | 63 | def test_install_section_with_both_routes(self) -> None: | CODE |
| LOW⚡ | tests/test_seo_docs_pages.py | 72 | def test_links_to_readme_and_installation_guide(self) -> None: | CODE |
| LOW⚡ | tests/test_seo_docs_pages.py | 80 | def test_pages_cross_link_each_other(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 93 | def test_codex_user_prompt_submit_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 100 | def test_codex_stop_emits_no_followup_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 107 | def test_codex_pre_tool_use_still_allows_but_skips_context(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 112 | def test_codex_post_tool_use_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 116 | def test_codex_session_start_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 120 | def test_codex_pre_compact_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 124 | def test_codex_adapter_reports_not_attached_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 142 | def test_inject_plan_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 148 | def test_gate_stop_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 153 | def test_check_complete_stays_silent_when_disabled(self) -> None: | CODE |
| LOW⚡ | tests/test_planning_disabled_optout.py | 161 | def test_plan_files_unchanged_after_disabled_hook_pass(self) -> None: | CODE |
| LOW | tests/test_planning_disabled_optout.py | 179 | def test_copilot_shell_hooks_skip_context_when_disabled(self) -> None: | CODE |
| LOW | tests/test_planning_disabled_optout.py | 230 | def test_all_check_complete_copies_carry_the_guard(self) -> None: | CODE |
| LOW | tests/test_planning_disabled_optout.py | 257 | def test_copilot_powershell_hooks_skip_context_when_disabled(self) -> None: | CODE |
| LOW | tests/test_planning_disabled_optout.py | 321 | def test_cursor_shell_hooks_go_inert_when_disabled(self) -> None: | CODE |
| LOW | tests/test_planning_disabled_optout.py | 341 | def test_cursor_powershell_hooks_go_inert_when_disabled(self) -> None: | CODE |
| LOW | tests/test_check_complete_resolver.py | 86 | def test_explicit_path_arg_still_works(self) -> None: | STRING |
| LOW | tests/test_check_complete_resolver.py | 97 | def test_no_args_resolves_slug_plan_via_active_pointer(self) -> None: | STRING |
| LOW | tests/test_check_complete_resolver.py | 112 | def test_no_args_resolves_via_plan_id_env(self) -> None: | STRING |
| LOW | tests/test_check_complete_resolver.py | 129 | def test_no_args_legacy_root_plan_still_works(self) -> None: | STRING |
| LOW | tests/test_check_complete_resolver.py | 140 | def test_no_args_no_plan_anywhere_clean_message(self) -> None: | STRING |
| LOW⚡ | tests/test_check_complete_resolver.py | 180 | def test_canonical_templates_contain_next_step(self) -> None: | STRING |
| LOW⚡ | tests/test_check_complete_resolver.py | 190 | def test_root_template_copy_contains_next_step(self) -> None: | STRING |
| LOW⚡ | tests/test_check_complete_resolver.py | 197 | def test_next_step_sits_between_goal_and_current_phase(self) -> None: | STRING |
| LOW | tests/test_check_complete_resolver.py | 208 | def test_template_phase_counts_unchanged(self) -> None: | STRING |
| LOW | tests/test_check_complete_resolver.py | 241 | def test_init_session_output_contains_next_step(self): | STRING |
| LOW⚡ | tests/test_nested_plan_isolation.py | 203 | def test_unattached_session_notice_does_not_repeat_per_tool_call(self) -> None: | CODE |
| LOW⚡ | tests/test_nested_plan_isolation.py | 213 | def test_attached_session_injects_plan(self) -> None: | CODE |
| LOW⚡ | tests/test_nested_plan_isolation.py | 222 | def test_attached_session_is_explicit_and_beats_conflict_check(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 129 | def test_parent_cwd_with_nested_plan_injects_nothing(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 142 | def test_plan_root_pin_from_parent_cwd_injects_nested_plan(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 153 | def test_plan_root_broken_pin_notices_and_injects_nothing(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 166 | def test_valid_plan_id_at_parent_still_injects_despite_nested_plan(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 178 | def test_unattached_session_injects_no_plan_but_says_why(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 187 | def test_sessions_dir_with_empty_session_id_says_why(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 235 | def test_no_nested_plan_injects_exactly_as_before(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 245 | def test_nested_planning_without_competing_plan_is_no_conflict(self) -> None: | CODE |
| LOW | tests/test_nested_plan_isolation.py | 256 | def test_planning_disabled_silences_everything(self) -> None: | CODE |
| 410 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .cursor/hooks/user-prompt-submit.sh | 1 | #!/bin/bash | COMMENT |
| LOW | …sor/skills/planning-with-files/scripts/init-session.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/attest-plan.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/attest-plan.sh | 101 | rm -f "${attestation_file}" | COMMENT |
| LOW | …r/skills/planning-with-files/scripts/ledger-summary.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …r/skills/planning-with-files/scripts/ledger-summary.sh | 21 | # wins over self-resolution: inject-plan.sh passes the dir it resolved, | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/plan-doctor.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …r/skills/planning-with-files/scripts/check-complete.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …r/skills/planning-with-files/scripts/check-complete.sh | 21 | # 4. the block counter (<plan-dir>/.stop_blocks) is below cap (PWF_GATE_CAP, default 20) | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 21 | # root for threads whose cwd is a shared parent of the real project; a | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 61 | done | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 161 | # the hooks hash and inject an arbitrary file. On any violation we return 1 so | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 241 | # budget. A project nested two levels down is NOT detected; that ceiling is | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 321 | fi | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 521 | echo 'Run /plan-attest to re-approve current contents, or restore the file from git.' | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/inject-plan.sh | 541 | # grep -F. | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 21 | # A thread whose cwd is a shared PARENT of the real project (e.g. /workspace | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 121 | # string. On some Windows/MSYS setups (8.3 short names, the /tmp mount alias) | COMMENT |
| LOW | …ini/skills/planning-with-files/scripts/init-session.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …mini/skills/planning-with-files/scripts/attest-plan.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …mini/skills/planning-with-files/scripts/attest-plan.sh | 101 | rm -f "${attestation_file}" | COMMENT |
| LOW | …mini/skills/planning-with-files/scripts/plan-doctor.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …i/skills/planning-with-files/scripts/check-complete.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …i/skills/planning-with-files/scripts/check-complete.sh | 21 | # 4. the block counter (<plan-dir>/.stop_blocks) is below cap (PWF_GATE_CAP, default 20) | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 21 | # A thread whose cwd is a shared PARENT of the real project (e.g. /workspace | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 121 | # string. On some Windows/MSYS setups (8.3 short names, the /tmp mount alias) | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/ledger-summary.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/ledger-summary.sh | 21 | # wins over self-resolution: inject-plan.sh passes the dir it resolved, | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 21 | # root for threads whose cwd is a shared parent of the real project; a | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 61 | done | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 161 | # the hooks hash and inject an arbitrary file. On any violation we return 1 so | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 241 | # budget. A project nested two levels down is NOT detected; that ceiling is | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 321 | fi | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 521 | echo 'Run /plan-attest to re-approve current contents, or restore the file from git.' | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 541 | # grep -F. | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 21 | # A thread whose cwd is a shared PARENT of the real project (e.g. /workspace | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 121 | # string. On some Windows/MSYS setups (8.3 short names, the /tmp mount alias) | COMMENT |
| LOW | …nue/skills/planning-with-files/scripts/init-session.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …inue/skills/planning-with-files/scripts/attest-plan.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …inue/skills/planning-with-files/scripts/attest-plan.sh | 101 | rm -f "${attestation_file}" | COMMENT |
| LOW | …inue/skills/planning-with-files/scripts/plan-doctor.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/check-complete.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/check-complete.sh | 21 | # 4. the block counter (<plan-dir>/.stop_blocks) is below cap (PWF_GATE_CAP, default 20) | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 21 | # A thread whose cwd is a shared PARENT of the real project (e.g. /workspace | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 121 | # string. On some Windows/MSYS setups (8.3 short names, the /tmp mount alias) | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/ledger-summary.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/ledger-summary.sh | 21 | # wins over self-resolution: inject-plan.sh passes the dir it resolved, | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 1 | #!/bin/sh | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 21 | # root for threads whose cwd is a shared parent of the real project; a | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 61 | done | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 161 | # the hooks hash and inject an arbitrary file. On any violation we return 1 so | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 241 | # budget. A project nested two levels down is NOT detected; that ceiling is | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 321 | fi | COMMENT |
| LOW | …code/skills/planning-with-files/scripts/inject-plan.sh | 521 | echo 'Run /plan-attest to re-approve current contents, or restore the file from git.' | COMMENT |
| 270 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_ps1_windows_encoding.py | 114 | " $errors = $null; " | CODE |
| HIGH | tests/test_ps1_windows_encoding.py | 116 | "$f, [ref]$null, [ref]$errors); " | CODE |
| HIGH | tests/test_codex_hooks.py | 298 | (python3 alias stub, /dev/null, $HOME, the missing `true` command). Runs on | STRING |
| HIGH | tests/test_codex_hooks.py | 323 | f'python3 "$HOME/.codex/hooks/run_sh.py" {script} 2>/dev/null || true', | CODE |
| HIGH | tests/test_bsd_userland_sim.py | 88 | out="$("%(real_stat)s" -c '%%Y' "$@" 2>/dev/null)" && [ -n "$out" ] && { printf '%%s\\n' "$out"; exit 0; } | CODE |
| HIGH | tests/test_bsd_userland_sim.py | 89 | out="$("%(real_stat)s" -f '%%m' "$@" 2>/dev/null)" && [ -n "$out" ] && { printf '%%s\\n' "$out"; exit 0; } | CODE |
| HIGH | scripts/_v240_update_hook_bodies.py | 60 | "AP=$(tr -d '\\r\\n[:space:]' < .planning/.active_plan 2>/dev/null); " | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 71 | "m=$(stat -c '%Y' \"$d\" 2>/dev/null || stat -f '%m' \"$d\" 2>/dev/null || date -r \"$d\" +%s 2>/dev/null || echo 0) | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 72 | 'if [ "$m" -gt "$NEWEST_MT" ] 2>/dev/null; then NEWEST_MT="$m"; NEWEST="$d"; fi; ' | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 80 | "[ -f .plan-attestation ] && ATTEST=$(tr -d '\\r\\n[:space:]' < .plan-attestation 2>/dev/null); " | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 83 | "[ -f \"${RESOLVED}/.attestation\" ] && ATTEST=$(tr -d '\\r\\n[:space:]' < \"${RESOLVED}/.attestation\" 2>/dev/null) | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 88 | 'CD="${TMPDIR:-/tmp}/pwf-sha"; mkdir -p "$CD" 2>/dev/null; ' | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 89 | 'KEY=$(printf "%s" "$PLAN_FILE" | { sha256sum 2>/dev/null || shasum -a 256 2>/dev/null; } | awk \'{print $1}\' | cut | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 89 | 'KEY=$(printf "%s" "$PLAN_FILE" | { sha256sum 2>/dev/null || shasum -a 256 2>/dev/null; } | awk \'{print $1}\' | cut | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 90 | "MT=$(stat -c '%Y' \"$PLAN_FILE\" 2>/dev/null || stat -f '%m' \"$PLAN_FILE\" 2>/dev/null || date -r \"$PLAN_FILE\" + | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 92 | 'if [ -f "$CF" ]; then CM=$(sed -n 1p "$CF" 2>/dev/null); CS=$(sed -n 2p "$CF" 2>/dev/null); fi; ' | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 94 | 'else ACTUAL=$( (sha256sum "$PLAN_FILE" 2>/dev/null || shasum -a 256 "$PLAN_FILE" 2>/dev/null) | awk \'{print $1}\') | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 94 | 'else ACTUAL=$( (sha256sum "$PLAN_FILE" 2>/dev/null || shasum -a 256 "$PLAN_FILE" 2>/dev/null) | awk \'{print $1}\') | CODE |
| HIGH⚡ | scripts/_v240_update_hook_bodies.py | 95 | '[ -n "$ACTUAL" ] && [ -n "$MT" ] && printf "%s\\n%s\\n" "$MT" "$ACTUAL" > "$CF" 2>/dev/null; fi; ' | CODE |
| HIGH | scripts/_v240_update_hook_bodies.py | 129 | 'head -30 "$PLAN_FILE" 2>/dev/null; ' | CODE |
| HIGH | scripts/_v240_update_hook_bodies.py | 173 | 'powershell.exe -NoProfile -ExecutionPolicy RemoteSigned -File \\"$TARGET_PS1\\" 2>/dev/null; ' | CODE |
| HIGH | scripts/_v240_update_hook_bodies.py | 175 | 'sh \\"$TARGET_SH\\" 2>/dev/null; ' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …sor/skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | …rsor/skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …r/skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …/skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …ini/skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | …mini/skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …/skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …nue/skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | …inue/skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …/skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …nts/skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | …ents/skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …s/skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …nts/skills/planning-with-files/scripts/phase-status.sh | 19 | # Usage: | COMMENT |
| LOW | …/skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …ts/skills/planning-with-files/scripts/ledger-append.sh | 14 | # Usage: | COMMENT |
| LOW | …dex/skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | …odex/skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …x/skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …/skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | scripts/phase-status.sh | 19 | # Usage: | COMMENT |
| LOW | scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | scripts/ledger-append.sh | 14 | # Usage: | COMMENT |
| LOW | …ory/skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | …tory/skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …y/skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …/skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/init-session.sh | 4 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/phase-status.sh | 19 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | skills/planning-with-files/scripts/ledger-append.sh | 14 | # Usage: | COMMENT |
| LOW | …lls/i18n/planning-with-files-es/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …/i18n/planning-with-files-es/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …ls/i18n/planning-with-files-es/scripts/phase-status.sh | 19 | # Usage: | COMMENT |
| LOW | …i18n/planning-with-files-es/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …18n/planning-with-files-es/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …s/i18n/planning-with-files-es/scripts/ledger-append.sh | 14 | # Usage: | COMMENT |
| LOW | …lls/i18n/planning-with-files-zh/scripts/attest-plan.sh | 14 | # Usage: | COMMENT |
| LOW | …/i18n/planning-with-files-zh/scripts/ledger-summary.sh | 17 | # Usage: | COMMENT |
| LOW | …ls/i18n/planning-with-files-zh/scripts/phase-status.sh | 19 | # Usage: | COMMENT |
| LOW | …i18n/planning-with-files-zh/scripts/set-active-plan.sh | 4 | # Usage: | COMMENT |
| LOW | …18n/planning-with-files-zh/scripts/resolve-plan-dir.sh | 12 | # Usage: | COMMENT |
| LOW | …s/i18n/planning-with-files-zh/scripts/ledger-append.sh | 14 | # Usage: | COMMENT |
| 30 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …r/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …e/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …e/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 80 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 82 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 206 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 208 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 229 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 231 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 251 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_hook_resolver_integration.py | 253 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_codex_session_isolation.py | 56 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_codex_session_isolation.py | 58 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_codex_session_isolation.py | 76 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_codex_session_isolation.py | 78 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …s/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …x/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | scripts/sync-ide-folders.py | 28 | # ─── Canonical source ────────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/sync-ide-folders.py | 31 | # ─── Shared source files (relative to CANONICAL) ────────────────── | COMMENT |
| MEDIUM | scripts/sync-ide-folders.py | 90 | # ─── IDE sync manifests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/sync-ide-folders.py | 313 | # ─── Utility functions ───────────────────────────────────────────── | COMMENT |
| MEDIUM | scripts/sync-ide-folders.py | 346 | # ─── Main ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …y/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …/i18n/planning-with-files-es/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …/i18n/planning-with-files-zh/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …/i18n/planning-with-files-de/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …i18n/planning-with-files-zht/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …/i18n/planning-with-files-ar/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …y/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| MEDIUM | …skills/planning-with-files/scripts/sync-ide-folders.py | 28 | # ─── Canonical source ────────────────────────────────────────────── | COMMENT |
| MEDIUM | …skills/planning-with-files/scripts/sync-ide-folders.py | 31 | # ─── Shared source files (relative to CANONICAL) ────────────────── | COMMENT |
| MEDIUM | …skills/planning-with-files/scripts/sync-ide-folders.py | 51 | # ─── IDE sync manifests ─────────────────────────────────────────── | COMMENT |
| MEDIUM | …skills/planning-with-files/scripts/sync-ide-folders.py | 162 | # ─── Utility functions ───────────────────────────────────────────── | COMMENT |
| MEDIUM | …skills/planning-with-files/scripts/sync-ide-folders.py | 195 | # ─── Main ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | …i/skills/planning-with-files/scripts/ledger-summary.sh | 34 | # ================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 718 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 718 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 112 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 202 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 231 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 718 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 93 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 165 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 245 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 545 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 618 | CODE | |
| LOW | tests/test_hook_resolver_integration.py | 164 | CODE | |
| LOW | tests/test_session_catchup.py | 189 | CODE | |
| LOW | tests/test_codex_hooks.py | 293 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 304 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 319 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 348 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 376 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 396 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 428 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 450 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 490 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 532 | CODE | |
| LOW | tests/test_catchup_store_resolution_parity.py | 161 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 718 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 718 | CODE | |
| LOW | scripts/session-catchup.py | 144 | CODE | |
| LOW | scripts/session-catchup.py | 238 | CODE | |
| LOW | scripts/session-catchup.py | 255 | CODE | |
| LOW | scripts/session-catchup.py | 299 | CODE | |
| LOW | scripts/sync-ide-folders.py | 369 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 617 | CODE | |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 718 | CODE | |
| LOW | …/planning-with-files/assets/scripts/session-catchup.py | 51 | CODE | |
| LOW | skills/planning-with-files/scripts/session-catchup.py | 117 | CODE | |
| LOW | skills/planning-with-files/scripts/session-catchup.py | 189 | CODE | |
| LOW | skills/planning-with-files/scripts/session-catchup.py | 269 | CODE | |
| 44 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_seo_docs_pages.py | 10 | CODE | |
| LOW | tests/test_planning_disabled_optout.py | 9 | CODE | |
| LOW | tests/test_check_complete_resolver.py | 15 | CODE | |
| LOW | tests/test_nested_plan_isolation.py | 32 | CODE | |
| LOW | tests/test_v238_command_files.py | 8 | CODE | |
| LOW | tests/test_hook_resolver_integration.py | 8 | CODE | |
| LOW | tests/test_precompact_hook.py | 18 | CODE | |
| LOW | tests/test_resolver_plan_root_pin.py | 21 | CODE | |
| LOW | tests/test_hook_body_v240.py | 24 | CODE | |
| LOW | tests/test_injection_determinism.py | 31 | CODE | |
| LOW | tests/test_ledger_utf8.py | 20 | CODE | |
| LOW | tests/test_ps1_windows_encoding.py | 29 | CODE | |
| LOW | tests/test_cursor_nested_root_isolation.py | 20 | CODE | |
| LOW | tests/test_bump_version.py | 2 | CODE | |
| LOW | tests/test_resolver_parity.py | 9 | CODE | |
| LOW | tests/test_copilot_agent_stop.py | 3 | CODE | |
| LOW | tests/test_script_location_parity.py | 18 | CODE | |
| LOW | tests/test_bsd_userland_sim.py | 32 | CODE | |
| LOW | tests/test_resolve_plan_dir.py | 10 | CODE | |
| LOW | tests/test_plan_attestation.py | 12 | CODE | |
| LOW | tests/test_plan_attestation.py | 18 | CODE | |
| LOW | tests/test_codex_nested_root_isolation.py | 29 | CODE | |
| LOW | tests/test_init_session_slug.py | 9 | CODE | |
| LOW | tests/test_init_session_slug.py | 11 | CODE | |
| LOW | tests/test_catchup_project_dir.py | 10 | CODE | |
| LOW | tests/test_stop_hook_dispatch.py | 25 | CODE | |
| LOW | tests/test_plan_regression_guard.py | 19 | CODE | |
| LOW | tests/test_session_catchup_opencode.py | 11 | CODE | |
| LOW | tests/test_session_catchup_opencode.py | 18 | CODE | |
| LOW | tests/test_gate.py | 21 | CODE | |
| LOW | tests/test_line_endings.py | 19 | CODE | |
| LOW | tests/test_set_active_plan.py | 7 | CODE | |
| LOW | tests/test_pi_extension_packaging.py | 7 | CODE | |
| LOW | tests/test_skill_md_version_parity.py | 17 | CODE | |
| LOW | tests/test_containment.py | 17 | CODE | |
| LOW | tests/test_canonical_script_sync.py | 18 | CODE | |
| LOW | tests/test_init_modes.py | 14 | CODE | |
| LOW | tests/test_init_modes.py | 17 | CODE | |
| LOW | tests/test_skill_hook_dispatch_parity.py | 43 | CODE | |
| LOW | tests/test_plugin_skill_surface.py | 23 | CODE | |
| LOW | tests/test_catchup_store_resolution_parity.py | 23 | CODE | |
| LOW | tests/test_inject_smart.py | 15 | CODE | |
| LOW | tests/test_codex_session_isolation.py | 11 | CODE | |
| LOW | tests/test_pi_docs_hook_support.py | 5 | CODE | |
| LOW | tests/test_pi_extension_capabilities.py | 6 | CODE | |
| LOW | tests/test_ledger.py | 14 | CODE | |
| LOW | tests/test_catchup_cross_project_guard.py | 16 | CODE | |
| LOW | .codex/hooks/post_tool_use.py | 2 | CODE | |
| LOW | .codex/hooks/permission_request.py | 8 | CODE | |
| LOW | .codex/hooks/codex_hook_adapter.py | 2 | CODE | |
| LOW | .codex/hooks/stop.py | 2 | CODE | |
| LOW | .codex/hooks/pre_tool_use.py | 2 | CODE | |
| LOW | .codex/hooks/run_sh.py | 15 | CODE | |
| LOW | scripts/_v240_update_hook_bodies.py | 25 | CODE | |
| LOW | scripts/bump-version.py | 30 | CODE | |
| LOW | …/planning-with-files/assets/scripts/session-catchup.py | 12 | CODE | |
| LOW | .hermes/plugins/planning-with-files/hooks.py | 1 | CODE | |
| LOW | .hermes/plugins/planning-with-files/__init__.py | 1 | CODE | |
| LOW | .hermes/plugins/planning-with-files/hook_state.py | 1 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …r/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …i/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 295 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …e/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 705 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …s/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …x/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …y/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …i18n/planning-with-files-es/scripts/session-catchup.py | 544 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …i18n/planning-with-files-zh/scripts/session-catchup.py | 544 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …i18n/planning-with-files-de/scripts/session-catchup.py | 544 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …18n/planning-with-files-zht/scripts/session-catchup.py | 544 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …i18n/planning-with-files-ar/scripts/session-catchup.py | 544 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …y/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| LOW | …s/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …i/skills/planning-with-files/scripts/check-complete.sh | 2 | # Check if all phases in task_plan.md are complete | COMMENT |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 811 | # Check if planning files exist (indicates active task) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | MIGRATION.md | 43 | ### Step 1: Update the Plugin | COMMENT |
| LOW⚡ | MIGRATION.md | 54 | ### Step 2: Existing Files Continue Working | COMMENT |
| LOW⚡ | MIGRATION.md | 58 | ### Step 3: Adopt New Templates (Optional) | COMMENT |
| LOW⚡ | MIGRATION.md | 66 | ### Step 4: Update Phase Status Format (Recommended) | COMMENT |
| LOW | docs/quickstart.md | 7 | ## Step 1: Invoke the Skill and Describe Your Task | COMMENT |
| LOW | docs/quickstart.md | 28 | ## Step 2: Plan Your Phases | COMMENT |
| LOW | docs/quickstart.md | 52 | ## Step 3: Work and Document | COMMENT |
| LOW | docs/quickstart.md | 114 | ## Step 4: Re-read Before Decisions | COMMENT |
| LOW | docs/quickstart.md | 126 | ## Step 5: Complete and Verify | COMMENT |
| LOW | docs/opencode.md | 68 | ### Step 1: Install the skill | COMMENT |
| LOW | docs/opencode.md | 75 | ### Step 2: Configure oh-my-opencode | COMMENT |
| LOW | docs/opencode.md | 91 | ### Step 3: Verify loading | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_skill_frontmatter_valid.py | 87 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | .codex/hooks/codex_hook_adapter.py | 178 | except Exception as exc: # pragma: no cover | CODE |
| MEDIUM | .codex/hooks/codex_hook_adapter.py | 175 | def main_guard(func) -> int: | CODE |
| MEDIUM | scripts/bump-version.py | 161 | print(f"Error: '{new}' is not a valid semver string.", file=sys.stderr) | CODE |
| LOW | scripts/session-catchup.py | 293 | except Exception: | CODE |
| LOW | scripts/session-catchup.py | 377 | except Exception: | CODE |
| MEDIUM | scripts/sync-ide-folders.py | 376 | print(f"Error: Canonical source not found at {CANONICAL}/") | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 293 | except Exception: | CODE |
| LOW | …/skills/planning-with-files/scripts/session-catchup.py | 377 | except Exception: | CODE |
| MEDIUM | …skills/planning-with-files/scripts/sync-ide-folders.py | 225 | print(f"Error: Canonical source not found at {CANONICAL}/") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_bsd_userland_sim.py | 238 | # Self-check of the harness: if a runner image change or a stub bug | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_gate.py | 66 | def set_mode(self, mode: str | None) -> None: | CODE |
| LOW | tests/test_gate.py | 71 | def set_blocks(self, n: int) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/workflow.md | 119 | The behavior is consistent and intentional, though it was never stated as a rule until now (see [#14](https://github.com | CODE |