AI turns documents or topics into real, native PowerPoint decks—with native shapes, transitions and animations, data-backed charts and tables on demand, audio narration from speaker notes, and support for your own .pptx templates. · by Hugo He
This report summarizes scanner evidence for hugohe3/ppt-master, a Python project with 59,790 GitHub stars. SynthScan examined 289,392 lines of code across 619 source files, recording 3319 pattern matches distributed across 21 syntactic categories. The legacy adjusted pattern signal is 14.1 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 2272 finding(s).
Are imports declared and package/API names verified? 398 finding(s).
Are wrappers, guards, and repeated structures necessary? 2390 finding(s).
Which changes need focused human review? 3319 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 3319 distinct pattern matches across 21 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 92 | def roundtrip_source_fingerprint(project_path: Path) -> dict[str, object]: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 272 | def _roundtrip_source_svg_names( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 915 | def _generate_baseline_bundle( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 985 | def _collapse_hash_only_groups(root: ET.Element) -> None: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1069 | def _contextual_authoring_element(element: ET.Element, root: ET.Element | None) -> ET.Element: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1125 | def preserve_adopted_source_links( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1163 | def authoring_source_ref_is_unchanged( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1258 | def _outer_source_ref_elements(root: ET.Element) -> list[ET.Element]: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1345 | def _referenced_definition_ids(element: ET.Element) -> set[str]: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1355 | def _definition_reference_ids(element: ET.Element) -> set[str]: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1366 | def _prune_unreferenced_definitions(root: ET.Element) -> None: | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1476 | def _rebase_resource_references( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1517 | def _restore_preserved_effect_metadata( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1541 | def _restore_unchanged_text_body( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1567 | def _apply_authoring_root_attributes( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1579 | def _native_restore_placeholder( | CODE |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 2028 | def materialize_flat_authoring_roundtrip( | CODE |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1000 | def _strongly_connected_components(edges: Iterable[tuple[str, str]]) -> list[list[str]]: | CODE |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1086 | def _structured_registry_expected_order(config: dict[str, Any]) -> list[str]: | CODE |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1663 | def _schema_owner_fingerprint( | CODE |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1700 | def _has_schema_grammar_signal(line: str, schema_field: str) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/pptx_intake.py | 290 | def _upsert_source_index_unlocked( | CODE |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 275 | def _declared_content_type_for_part( | CODE |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 452 | def _relationship_problem_code(problem: str) -> str: | CODE |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 510 | def _motion_and_hidden_summary( | CODE |
| LOW | skills/ppt-master/scripts/pptx_effects.py | 42 | def project_effect_status_errors(root: ET.Element) -> list[str]: | CODE |
| LOW | skills/ppt-master/scripts/pptx_effects.py | 109 | def preserved_native_effect_xml(elem: ET.Element) -> str | None: | CODE |
| LOW | skills/ppt-master/scripts/pptx_effects.py | 136 | def _validate_native_effect_container(effect_container: ET.Element) -> None: | CODE |
| LOW | skills/ppt-master/scripts/pptx_effects.py | 155 | def unsupported_effect_metadata(*reasons: str) -> dict[str, str]: | CODE |
| LOW | skills/ppt-master/scripts/semantic_table.py | 260 | def expand_semantic_table_payload(payload: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | skills/ppt-master/scripts/semantic_table.py | 382 | def _compact_plain_paragraphs(payload: dict[str, Any]) -> None: | CODE |
| LOW | skills/ppt-master/scripts/semantic_table.py | 454 | def compact_semantic_table_payload(payload: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 128 | def _publish_candidate_directory(candidate_dir: Path, output_dir: Path) -> None: | CODE |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 176 | def _process_candidate_directory( | CODE |
| LOW | skills/ppt-master/scripts/register_template.py | 354 | def _qualified_template_specs(directory: Path) -> list[tuple[Path, str]]: | CODE |
| LOW | skills/ppt-master/scripts/register_template.py | 366 | def validate_qualified_spec_identity( | CODE |
| LOW | skills/ppt-master/scripts/register_template.py | 428 | def _has_qualified_roster_spec(template_dir: Path) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/register_template.py | 495 | def _style_value_is_substantive(value: str | None) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/register_template.py | 991 | def _validate_svg_template_spec( | CODE |
| LOW | skills/ppt-master/scripts/register_template.py | 1127 | def validate_shadowed_deck_spec( | CODE |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 271 | def _rewrite_reference_values( | CODE |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 520 | def _icon_asset_for_namespace(icon_name: str, icon_namespace: str) -> str | None: | CODE |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 535 | def _has_namespace_placeholder(root: ET.Element, icon_namespace: str) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 592 | def _existing_placeholder_entries( | CODE |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 758 | def _fresh_native_fallback_markers(root: ET.Element) -> set[ET.Element]: | CODE |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 777 | def _normalize_authoring_tree( | CODE |
| LOW | skills/ppt-master/scripts/visualization_catalog.py | 132 | def legacy_structure_intent_keys() -> tuple[str, ...]: | CODE |
| LOW | skills/ppt-master/scripts/visualization_catalog.py | 222 | def load_visualization_catalog( | CODE |
| LOW | skills/ppt-master/scripts/visualization_catalog.py | 241 | def load_visualization_entries( | CODE |
| LOW | skills/ppt-master/scripts/visualization_catalog.py | 262 | def resolve_visualization_reference( | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 205 | def semantic_shape_text_component( | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 360 | def _index_initial_authoring_references( | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 389 | def _fresh_native_fallback_markers(root: ET.Element) -> set[ET.Element]: | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 503 | def _is_hidden_geometry_carrier(element: ET.Element) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 517 | def _is_semantic_shape_candidate(element: ET.Element) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 628 | def _make_geometry_carrier_visible(element: ET.Element) -> int: | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 688 | def _semantic_text_has_content(element: ET.Element) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 692 | def _normalize_semantic_text_lines(text: ET.Element) -> bool: | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 760 | def _semantic_paragraph_from_text( | CODE |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 791 | def _merge_semantic_shape_texts( | CODE |
| 1665 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | requirements.txt | 2 | # ============================================= | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 32 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 34 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 44 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 46 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 75 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 77 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 85 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 87 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 98 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 100 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 106 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | skills/ppt-master/requirements.txt | 108 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skills/ppt-master/requirements.txt | 2 | # ============================================= | COMMENT |
| MEDIUM | skills/ppt-master/requirements.txt | 13 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skills/ppt-master/requirements.txt | 15 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skills/ppt-master/requirements.txt | 58 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skills/ppt-master/requirements.txt | 60 | # ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 249 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 251 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1151 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1153 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1338 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1340 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1419 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1421 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 28 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 30 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 49 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 51 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 162 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 164 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 242 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 244 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 316 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 318 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 408 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 410 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 431 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 433 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 487 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 489 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 507 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 509 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 640 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/config.py | 642 | # ============================================================ | COMMENT |
| MEDIUM | skills/ppt-master/scripts/apply_template.py | 128 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/apply_template.py | 130 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/apply_template.py | 266 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/apply_template.py | 268 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/apply_template.py | 382 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/apply_template.py | 384 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 55 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 57 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 152 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 154 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 303 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 305 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 452 | # ============================================================================= | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 454 | # ============================================================================= | COMMENT |
| 224 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skills/ppt-master/scripts/pptx_intake.py | 67 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/pptx_effects.py | 166 | except json.JSONDecodeError: | CODE |
| HIGH | skills/ppt-master/scripts/visual_review.py | 93 | except FileNotFoundError: | CODE |
| HIGH | skills/ppt-master/scripts/visual_review.py | 231 | except Exception: # noqa: BLE001 — cleanup is best-effort | CODE |
| HIGH | skills/ppt-master/scripts/workflow_transcript.py | 135 | except (OSError, ValueError): | CODE |
| HIGH | skills/ppt-master/scripts/workflow_transcript.py | 333 | except (OSError, ValueError): | CODE |
| HIGH | skills/ppt-master/scripts/project_utils.py | 138 | except ValueError: | CODE |
| HIGH | …ills/ppt-master/scripts/mirror_template_materialize.py | 2780 | except ValueError: | CODE |
| HIGH | …ills/ppt-master/scripts/mirror_template_materialize.py | 2788 | except ValueError: | CODE |
| HIGH | …ills/ppt-master/scripts/mirror_template_materialize.py | 1473 | except ValueError: | CODE |
| HIGH | …ills/ppt-master/scripts/mirror_template_materialize.py | 2912 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_gen.py | 873 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 728 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 1871 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 2904 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 483 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 617 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 1435 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 1681 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 2882 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 765 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 999 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 2143 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_search.py | 2409 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_treat.py | 524 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/image_treat.py | 552 | except FileNotFoundError: | CODE |
| HIGH | skills/ppt-master/scripts/pptx_transitions.py | 900 | except (AttributeError, ValueError): | CODE |
| HIGH | skills/ppt-master/scripts/server_common.py | 305 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/server_common.py | 313 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/rotate_images.py | 491 | except Exception: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/svg_contracts.py | 710 | except _UseExpansionError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/svg_contracts.py | 1015 | except _UseExpansionError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 2922 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 5361 | except ImportError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 5363 | except Exception: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 6594 | except _UseExpansionError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 4523 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 541 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/svg_quality/checker.py | 5300 | except ValueError: | CODE |
| HIGH | …lls/ppt-master/scripts/pptx_to_svg/preset_authoring.py | 799 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/pptx_to_svg/converter.py | 1265 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/pptx_to_svg/converter.py | 1202 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/pptx_to_svg/emu_units.py | 42 | except (ValueError, AttributeError): | CODE |
| HIGH | skills/ppt-master/scripts/template_import/manifest.py | 321 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/pptx_shapes/formula.py | 188 | except ValueError: | CODE |
| HIGH | skills/ppt-master/scripts/confirm_ui/server.py | 2964 | except (ValueError, OSError): | CODE |
| HIGH | skills/ppt-master/scripts/confirm_ui/server.py | 185 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/confirm_ui/server.py | 2197 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/confirm_ui/server.py | 2206 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/confirm_ui/server.py | 2665 | except (OSError, json.JSONDecodeError, ValueError): | CODE |
| HIGH | skills/ppt-master/scripts/project_management/cli.py | 417 | except FileNotFoundError: | CODE |
| HIGH | skills/ppt-master/scripts/project_management/cli.py | 431 | except FileNotFoundError: | CODE |
| HIGH | skills/ppt-master/scripts/project_management/cli.py | 659 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/project_management/cli.py | 213 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/project_management/cli.py | 565 | except FileNotFoundError: | CODE |
| HIGH | skills/ppt-master/scripts/project_management/cli.py | 677 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/source_to_md/web_to_md.py | 1116 | except (ValueError, TypeError): | CODE |
| HIGH | skills/ppt-master/scripts/source_to_md/doc_to_md.py | 1601 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/source_to_md/doc_to_md.py | 1121 | except OSError: | CODE |
| HIGH | skills/ppt-master/scripts/source_to_md/doc_to_md.py | 1126 | except OSError: | CODE |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 17 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 22 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_intake.py | 20 | CODE | |
| LOW | skills/ppt-master/scripts/video_sound_mix.py | 24 | CODE | |
| LOW | skills/ppt-master/scripts/video_subtitles.py | 21 | CODE | |
| LOW | skills/ppt-master/scripts/video_motion_plan.py | 23 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 18 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 23 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_effects.py | 4 | CODE | |
| LOW | skills/ppt-master/scripts/semantic_table.py | 4 | CODE | |
| LOW | skills/ppt-master/scripts/visual_review.py | 28 | CODE | |
| LOW | skills/ppt-master/scripts/beautify_inventory.py | 30 | CODE | |
| LOW | skills/ppt-master/scripts/check_spec_annotations.py | 20 | CODE | |
| LOW | skills/ppt-master/scripts/register_template.py | 46 | CODE | |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 34 | CODE | |
| LOW | skills/ppt-master/scripts/config.py | 21 | CODE | |
| LOW | skills/ppt-master/scripts/visualization_catalog.py | 21 | CODE | |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 34 | CODE | |
| LOW | skills/ppt-master/scripts/apply_template.py | 21 | CODE | |
| LOW | skills/ppt-master/scripts/slide_roster.py | 17 | CODE | |
| LOW | skills/ppt-master/scripts/sound_sync.py | 24 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_workspace.py | 19 | CODE | |
| LOW | skills/ppt-master/scripts/shape_boolean_svg.py | 28 | CODE | |
| LOW | skills/ppt-master/scripts/batch_validate.py | 22 | CODE | |
| LOW | skills/ppt-master/scripts/template_text_slots.py | 3 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg.py | 35 | CODE | |
| LOW | skills/ppt-master/scripts/animation_config.py | 21 | CODE | |
| LOW | skills/ppt-master/scripts/svg_authoring_contract.py | 9 | CODE | |
| LOW | skills/ppt-master/scripts/workflow_transcript.py | 12 | CODE | |
| LOW | skills/ppt-master/scripts/latex_render.py | 23 | CODE | |
| LOW | skills/ppt-master/scripts/preset_shape_svg.py | 26 | CODE | |
| LOW | skills/ppt-master/scripts/workflow_log.py | 18 | CODE | |
| LOW | skills/ppt-master/scripts/powerpoint_video.py | 22 | CODE | |
| LOW | …ills/ppt-master/scripts/mirror_template_materialize.py | 19 | CODE | |
| LOW | skills/ppt-master/scripts/update_repo.py | 19 | CODE | |
| LOW | skills/ppt-master/scripts/stamp_native_fallbacks.py | 19 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_opc_validation.py | 4 | CODE | |
| LOW | skills/ppt-master/scripts/narration_sync.py | 29 | CODE | |
| LOW | skills/ppt-master/scripts/image_search.py | 40 | CODE | |
| LOW | skills/ppt-master/scripts/console_encoding.py | 4 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_embedded_fonts.py | 10 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 33 | CODE | |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 44 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_template_import.py | 23 | CODE | |
| LOW | skills/ppt-master/scripts/update_spec.py | 25 | CODE | |
| LOW | skills/ppt-master/scripts/beautify_identity.py | 29 | CODE | |
| LOW | skills/ppt-master/scripts/image_treat.py | 23 | CODE | |
| LOW | skills/ppt-master/scripts/native_payloads.py | 19 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_transitions.py | 21 | CODE | |
| LOW | skills/ppt-master/scripts/compact_svg_styles.py | 20 | CODE | |
| LOW | skills/ppt-master/scripts/icon_sync.py | 26 | CODE | |
| LOW | skills/ppt-master/scripts/project_specs.py | 18 | CODE | |
| 306 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 318 | CODE | |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 985 | CODE | |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1007 | CODE | |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1416 | CODE | |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1625 | CODE | |
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 1801 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 124 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 419 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 848 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 932 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1115 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1274 | CODE | |
| LOW | skills/ppt-master/scripts/prompt_audit.py | 1769 | CODE | |
| LOW | skills/ppt-master/scripts/video_sound_mix.py | 679 | CODE | |
| LOW | skills/ppt-master/scripts/video_sound_mix.py | 1069 | CODE | |
| LOW | skills/ppt-master/scripts/slice_images.py | 629 | CODE | |
| LOW | skills/ppt-master/scripts/slice_images.py | 860 | CODE | |
| LOW | skills/ppt-master/scripts/slice_images.py | 937 | CODE | |
| LOW | skills/ppt-master/scripts/video_motion_plan.py | 273 | CODE | |
| LOW | skills/ppt-master/scripts/video_motion_plan.py | 382 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 291 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 341 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 462 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 510 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_delivery_check.py | 727 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_effects.py | 187 | CODE | |
| LOW | skills/ppt-master/scripts/semantic_table.py | 305 | CODE | |
| LOW | skills/ppt-master/scripts/visual_review.py | 158 | CODE | |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 128 | CODE | |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 176 | CODE | |
| LOW | skills/ppt-master/scripts/register_template.py | 1155 | CODE | |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 299 | CODE | |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 592 | CODE | |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 791 | CODE | |
| LOW | skills/ppt-master/scripts/config.py | 672 | CODE | |
| LOW | skills/ppt-master/scripts/total_md_split.py | 137 | CODE | |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 949 | CODE | |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 1060 | CODE | |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 1960 | CODE | |
| LOW | skills/ppt-master/scripts/svg_authoring_view.py | 2524 | CODE | |
| LOW | skills/ppt-master/scripts/apply_template.py | 508 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_workspace.py | 486 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_workspace.py | 592 | CODE | |
| LOW | skills/ppt-master/scripts/batch_validate.py | 216 | CODE | |
| LOW | skills/ppt-master/scripts/svg_position_calculator.py | 1061 | CODE | |
| LOW | skills/ppt-master/scripts/svg_position_calculator.py | 1156 | CODE | |
| LOW | skills/ppt-master/scripts/svg_position_calculator.py | 1311 | CODE | |
| LOW | skills/ppt-master/scripts/svg_position_calculator.py | 1378 | CODE | |
| LOW | skills/ppt-master/scripts/svg_position_calculator.py | 871 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 219 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 558 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 1241 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 1845 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 2382 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 2504 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 2716 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 2998 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 3033 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 3587 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_animations.py | 1243 | CODE | |
| 378 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/authoring_roundtrip.py | 980 | except Exception: | CODE |
| MEDIUM | skills/ppt-master/scripts/prompt_audit.py | 2384 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| LOW | skills/ppt-master/scripts/pptx_intake.py | 64 | except Exception: | CODE |
| MEDIUM | skills/ppt-master/scripts/pptx_intake.py | 358 | print(f"Error: source not found: {source}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/pptx_intake.py | 363 | print(f"Error: PPTX intake failed: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/video_subtitles.py | 409 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/video_motion_plan.py | 681 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| LOW | skills/ppt-master/scripts/visual_review.py | 195 | except Exception as e: # noqa: BLE001 | STRING |
| LOW | skills/ppt-master/scripts/visual_review.py | 225 | except Exception as e: # noqa: BLE001 — best-effort per-page | STRING |
| LOW | skills/ppt-master/scripts/visual_review.py | 231 | except Exception: # noqa: BLE001 — cleanup is best-effort | STRING |
| LOW | skills/ppt-master/scripts/visual_review.py | 366 | except Exception as e: # noqa: BLE001 — browser launch failure | CODE |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 115 | except Exception as exc: | CODE |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 383 | except Exception as exc: | CODE |
| MEDIUM | skills/ppt-master/scripts/check_spec_annotations.py | 57 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/check_annotations.py | 125 | print(f"Error: Path not found: {target}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/check_annotations.py | 138 | print(f"Error: Expected a project directory or .svg file, got: {target}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1461 | print(f"Error: {args.kind} directory not found: {spec_dir}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/register_template.py | 1469 | print(f"Error: {tid}: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/total_md_split.py | 131 | print(f"Error: {svg_dir} directory does not exist") | CODE |
| MEDIUM⚡ | skills/ppt-master/scripts/total_md_split.py | 152 | print(f"Error: {md_path} file does not exist") | CODE |
| LOW⚡ | skills/ppt-master/scripts/total_md_split.py | 158 | except Exception as e: | CODE |
| MEDIUM⚡ | skills/ppt-master/scripts/total_md_split.py | 159 | print(f"Error: Unable to read file {md_path}: {e}") | CODE |
| MEDIUM | skills/ppt-master/scripts/total_md_split.py | 248 | print("Error: No notes content found") | CODE |
| LOW | skills/ppt-master/scripts/total_md_split.py | 268 | except Exception as e: | CODE |
| MEDIUM | skills/ppt-master/scripts/total_md_split.py | 305 | print(f"Error: Path does not exist: {project_path}") | STRING |
| MEDIUM | skills/ppt-master/scripts/total_md_split.py | 327 | print("Error: No SVG files found") | STRING |
| MEDIUM | skills/ppt-master/scripts/total_md_split.py | 339 | print("Error: No notes content found") | STRING |
| MEDIUM | skills/ppt-master/scripts/total_md_split.py | 350 | print("Error: SVG files and notes do not match") | STRING |
| MEDIUM⚡ | skills/ppt-master/scripts/svg_authoring_view.py | 2779 | print(f"Error: output path is not a directory: {output_dir}", file=sys.stderr) | CODE |
| MEDIUM⚡ | skills/ppt-master/scripts/svg_authoring_view.py | 2782 | print("Error: output directory must not be inside the input directory", file=sys.stderr) | CODE |
| MEDIUM⚡ | skills/ppt-master/scripts/svg_authoring_view.py | 2788 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM⚡ | skills/ppt-master/scripts/svg_authoring_view.py | 2793 | print(f"Error: output would overwrite source SVG: {same_file[0]}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/svg_authoring_view.py | 2730 | print(f"Error: input does not exist: {input_path}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/svg_authoring_view.py | 2750 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/svg_authoring_view.py | 2766 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/svg_authoring_view.py | 2823 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/shape_boolean_svg.py | 145 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/batch_validate.py | 30 | print("Error: Unable to import project_utils module") | CODE |
| MEDIUM | skills/ppt-master/scripts/pptx_to_svg.py | 155 | print(f"Error: file does not exist: {pptx_path}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/pptx_to_svg.py | 158 | print(f"Error: expected a .pptx file, got: {pptx_path.name}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/pptx_to_svg.py | 180 | print(f"Error: PPTX-to-SVG conversion failed: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/animation_config.py | 82 | print(f'Error: Project path does not exist: {project_path}', file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/animation_config.py | 101 | print(f'Error: {exc}', file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/animation_config.py | 112 | print(f'Error: {exc}', file=sys.stderr) | CODE |
| LOW | skills/ppt-master/scripts/animation_config.py | 123 | except Exception as exc: | CODE |
| MEDIUM | skills/ppt-master/scripts/animation_config.py | 124 | print(f'Error: {exc}', file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/animation_config.py | 135 | print(f'Error: {error}', file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/animation_config.py | 150 | print(f'Error: {error}', file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 1306 | print(f"Error: {e}") | CODE |
| LOW | skills/ppt-master/scripts/svg_position_calculator.py | 1305 | except Exception as e: | CODE |
| MEDIUM | skills/ppt-master/scripts/gemini_watermark_remover.py | 174 | print(f"Error: Watermark background image not found: {bg_path}") | CODE |
| MEDIUM | skills/ppt-master/scripts/gemini_watermark_remover.py | 218 | print(f"Error: File not found: {args.input}") | STRING |
| MEDIUM | skills/ppt-master/scripts/latex_render.py | 595 | print(f"Error: project directory not found: {project_path}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/latex_render.py | 614 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/preset_shape_svg.py | 294 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/preset_shape_svg.py | 344 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/preset_shape_svg.py | 363 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | …ills/ppt-master/scripts/mirror_template_materialize.py | 3422 | print(f"Error: import workspace does not exist: {import_workspace}", file=sys.stderr) | CODE |
| MEDIUM | …ills/ppt-master/scripts/mirror_template_materialize.py | 3427 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| MEDIUM | skills/ppt-master/scripts/stamp_native_fallbacks.py | 307 | print(f"Error: {exc}", file=sys.stderr) | CODE |
| 192 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/workflows/generate-pptx.md | 32 | ### Step 1: Source Content Processing | COMMENT |
| LOW | skills/ppt-master/workflows/generate-pptx.md | 53 | ### Step 2: Project Initialization | COMMENT |
| LOW | skills/ppt-master/workflows/generate-pptx.md | 72 | ### Step 3: Template Candidate Preparation | COMMENT |
| LOW | skills/ppt-master/workflows/generate-pptx.md | 91 | ### Step 4: Strategist Phase (MANDATORY in the default pipeline) | COMMENT |
| LOW | skills/ppt-master/workflows/generate-pptx.md | 183 | ### Step 5: Image Acquisition Phase (Conditional) | COMMENT |
| LOW | skills/ppt-master/workflows/generate-pptx.md | 220 | ### Step 6: Executor Phase | COMMENT |
| LOW | skills/ppt-master/workflows/generate-pptx.md | 320 | ### Step 7: Post-processing & Export | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 50 | ## Step 1: Reference Bundle Intake & Analysis | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 140 | ## Step 2: Fact-Based Brief Proposal | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 192 | ## Step 3: User Confirmation Gate | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 210 | ## Step 4: Preflight Output + Invoke the Selected Child | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 276 | ## Step 5: Validate Template Assets | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 309 | ## Step 6: Template Review PPTX and Multi-Master Package Gate | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 335 | ## Step 7: Register Template in Library Index (Library Scope Only) | COMMENT |
| LOW | skills/ppt-master/workflows/create-template.md | 346 | ## Step 8: Output Confirmation | COMMENT |
| LOW | skills/ppt-master/workflows/stages/refine-spec.md | 17 | ## Step 1: Produce the complete Design Spec | COMMENT |
| LOW | skills/ppt-master/workflows/stages/refine-spec.md | 50 | ## Step 3: Approve and author the lock | COMMENT |
| LOW | skills/ppt-master/workflows/stages/verify-charts.md | 18 | ## Step 1: Build the chart-object list from the active profile authority | COMMENT |
| LOW | skills/ppt-master/workflows/stages/verify-charts.md | 49 | ## Step 2: Per object — read its SVG scope, calculate, compare, update | COMMENT |
| LOW | skills/ppt-master/workflows/stages/verify-charts.md | 70 | ## Step 3: Per-object receipt | COMMENT |
| LOW | skills/ppt-master/workflows/stages/generate-audio.md | 23 | ## Step 1: Determine the deck's language | COMMENT |
| LOW | skills/ppt-master/workflows/stages/generate-audio.md | 29 | ## Step 2: Choose audio backend and pull the voice catalog | COMMENT |
| LOW | skills/ppt-master/workflows/stages/generate-audio.md | 42 | ## Step 3: Resolve generation settings | COMMENT |
| LOW | skills/ppt-master/workflows/stages/generate-audio.md | 72 | ## Step 4: Execute (no further interaction) | COMMENT |
| LOW | skills/ppt-master/workflows/stages/generate-audio.md | 123 | ## Step 5: Completion report | COMMENT |
| LOW | skills/ppt-master/workflows/stages/topic-research.md | 24 | ## Step 1: Define the gap brief | COMMENT |
| LOW | skills/ppt-master/workflows/stages/topic-research.md | 50 | ## Step 2: Gather factual sources | COMMENT |
| LOW | skills/ppt-master/workflows/stages/topic-research.md | 60 | ## Step 3: Save the factual supplement | COMMENT |
| LOW | skills/ppt-master/workflows/stages/live-preview.md | 18 | ## Step 1: Start / reopen the editor | COMMENT |
| LOW | skills/ppt-master/workflows/stages/live-preview.md | 33 | ## Step 2: Apply submitted annotations | COMMENT |
| LOW⚡ | skills/ppt-master/workflows/stages/resume-execute.md | 17 | ## Step 1: Sanity check | COMMENT |
| LOW⚡ | skills/ppt-master/workflows/stages/resume-execute.md | 23 | ## Step 2: Load the Generate authority, proceed from Step 6 | COMMENT |
| LOW⚡ | skills/ppt-master/workflows/stages/resume-execute.md | 25 | Read `skills/ppt-master/workflows/generate-pptx.md` and jump to `### Step 6: Executor Phase`, which loads `executor-base | CODE |
| LOW | skills/ppt-master/workflows/stages/resume-execute.md | 53 | ## Step 3: Hand-back | COMMENT |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 198 | # Step 1: Expand project icons, then standard same-document use references. | COMMENT |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 244 | # Step 2: Align (slice/meet) and Base64-embed all <image> in one pass. | COMMENT |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 292 | # Step 3: Flatten text. | COMMENT |
| LOW | skills/ppt-master/scripts/svg_editor/static/app.js | 1793 | // Step 2: save annotations. Service lifetime is controlled only by Exit preview. | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 593 | # Step 1: Compute (x1', y1') | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 599 | # Step 2: Compute (cx', cy') | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 624 | # Step 3: Compute (cx, cy) | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 628 | # Step 4: Compute theta1 and dtheta | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skills/ppt-master/scripts/rotate_images.py | 695 | tasks.push({ | CODE |
| HIGH | skills/ppt-master/scripts/rotate_images.py | 702 | const jsonStr = JSON.stringify(tasks, null, 2); | CODE |
| HIGH | skills/ppt-master/scripts/extract_svg_pictures.py | 287 | const root = element && element.ownerSVGElement; | CODE |
| HIGH | skills/ppt-master/scripts/extract_svg_pictures.py | 288 | const rootMatrix = root && root.getScreenCTM(); | CODE |
| HIGH⚡ | …/ppt-master/scripts/tests/test_template_flow_batch1.py | 343 | getElementById: id => id === 'confirm-status' ? status : null, | CODE |
| HIGH⚡ | …/ppt-master/scripts/tests/test_template_flow_batch1.py | 349 | var element = {children: [], appendChild(child) { this.children.push(child); }, | CODE |
| HIGH⚡ | …/ppt-master/scripts/tests/test_template_flow_batch1.py | 351 | if (tag === 'input') inputs.push(element); | CODE |
| HIGH | …aster/scripts/svg_to_pptx/native_objects/chart_data.py | 834 | "colours (only a line series may leave a point null)" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/pptx_workspace.py | 953 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/svg_quality_checker.py | 46 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/pptx_transitions.py | 3134 | def set_package_kiosk_show(parts: MutableMapping[str, bytes]) -> None: | CODE |
| LOW | skills/ppt-master/scripts/project_specs.py | 34 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/project_manager.py | 58 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/hyperlink_contract.py | 390 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/page_context.py | 35 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/pptx_to_svg/notes_import.py | 114 | __all__ = ["ImportedSpeakerNote", "import_speaker_notes"] | CODE |
| LOW | …ls/ppt-master/scripts/pptx_to_svg/transition_import.py | 200 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/pptx_to_svg/__init__.py | 12 | __all__ = ["convert_pptx_to_svg"] | CODE |
| LOW | …lls/ppt-master/scripts/pptx_to_svg/animation_import.py | 282 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/pptx_to_svg/formula_import.py | 605 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/pptx_to_svg/hyperlinks.py | 93 | __all__ = ["HyperlinkResolution", "resolve_click_hyperlink"] | CODE |
| LOW | skills/ppt-master/scripts/pptx_shapes/__init__.py | 81 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/source_to_md/ppt_to_md.py | 1007 | def _update_manifest_usage(entry: dict[str, object]) -> None: | CODE |
| LOW | skills/ppt-master/scripts/pptx_ooxml/__init__.py | 11 | __all__ = [ | CODE |
| LOW | skills/ppt-master/scripts/pptx_ooxml/clone.py | 576 | def _update_app_slide_count(entries: dict[str, bytes], slide_count: int) -> None: | CODE |
| LOW | skills/ppt-master/scripts/svg_to_pptx/__init__.py | 13 | __all__ = [ | CODE |
| LOW | …r/scripts/svg_to_pptx/native_objects/formula_parser.py | 2181 | __all__ = ["FormulaCompileError", "parse_latex_formula"] | CODE |
| LOW | …/scripts/svg_to_pptx/native_objects/formula_profile.py | 714 | __all__ = [ | CODE |
| LOW | …scripts/svg_to_pptx/native_objects/formula_compiler.py | 90 | __all__ = [ | CODE |
| LOW | …-master/scripts/svg_to_pptx/native_objects/__init__.py | 95 | __all__ = [ | CODE |
| LOW | …ster/scripts/svg_to_pptx/native_objects/formula_ast.py | 563 | __all__ = [ | CODE |
| LOW | …s/svg_to_pptx/native_objects/formula_run_properties.py | 230 | __all__ = [ | CODE |
| LOW | …r/scripts/svg_to_pptx/native_objects/inline_formula.py | 306 | __all__ = [ | CODE |
| LOW | …ter/scripts/svg_to_pptx/native_objects/formula_omml.py | 1043 | __all__ = [ | CODE |
| LOW | …t-master/scripts/svg_to_pptx/drawingml/theme_colors.py | 228 | def _set_scheme_color(parent: ET.Element, slot: str, color: str) -> None: | CODE |
| LOW | …ppt-master/scripts/svg_to_pptx/drawingml/hyperlinks.py | 155 | __all__ = [ | CODE |
| LOW | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 186 | def _set_slide_size_type(presentation, width_emu: int, height_emu: int) -> None: | CODE |
| LOW | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 599 | def _set_shape_name(elem: ET.Element, name: str) -> None: | CODE |
| LOW | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 2311 | def _set_master_picker_name(master_path: Path, master_name: str) -> None: | CODE |
| LOW | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 2568 | def _set_slide_layout_target(rels_path: Path, target: str) -> None: | CODE |
| LOW | …/ppt-master/scripts/svg_finalize/align_embed_images.py | 326 | def _set_href(image: ET.Element, value: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/technical-design.md | 856 | ChartEx import is deliberately closed to seven validated data models: `treemap`, `sunburst`, `histogram`, `pareto`, `box | CODE |
| LOW | skills/ppt-master/scripts/pptx_to_svg.py | 81 | if fallback_kind != "placeholder": | CODE |
| LOW | skills/ppt-master/scripts/README.md | 384 | Supported parsed column/bar/line/area, pie/doughnut, scatter, and bubble charts without a baked preview receive a determ | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/slot_capacity.py | 96 | yield {'file': str(path), 'slot_id': slot.get('id'), 'source': 'placeholder', | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/slot_capacity.py | 97 | 'placeholder': placeholder, 'bounds': bounds}, carriers[0] | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/slot_capacity.py | 123 | 'source': 'mirror-text-slot', 'placeholder': None, 'bounds': None} | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 6054 | if fallback_kind == 'placeholder': | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 8569 | 'placeholder', | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 8580 | 'placeholder', | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 8587 | 'placeholder': {'placeholder'}, | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 8698 | in {'ai', 'web', 'user', 'formula', 'placeholder', 'slice'} | CODE |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 8888 | acquire != 'placeholder' | CODE |
| LOW | skills/ppt-master/scripts/pptx_to_svg/slide_to_svg.py | 2198 | replacement_attrs.append('data-pptx-fallback-kind="placeholder"') | CODE |
| LOW | …lls/ppt-master/scripts/confirm_ui/static/catalogs.json | 1424 | "id": "placeholder", | CODE |
| LOW | …ppt-master/scripts/project_management/project_specs.py | 122 | {"ai", "web", "user", "formula", "placeholder", "slice"} | CODE |
| LOW | skills/ppt-master/scripts/docs/conversion.md | 426 | `data-pptx-fallback-kind="placeholder"`. Validation and export report that | CODE |
| LOW | …cripts/svg_to_pptx/native_objects/marker_attributes.py | 186 | f"because {FALLBACK_KIND_ATTR}='placeholder' already implies the " | CODE |
| LOW | …er/scripts/svg_to_pptx/native_objects/marker_status.py | 27 | VISUAL_STATUSES = frozenset({"source-preview", "normalized", "placeholder"}) | CODE |
| LOW⚡ | …er/scripts/svg_to_pptx/native_objects/marker_status.py | 173 | and visual == "placeholder" | CODE |
| LOW⚡ | …er/scripts/svg_to_pptx/native_objects/marker_status.py | 177 | f"{LEGACY_FALLBACK_KIND_ATTR}='placeholder' requires " | CODE |
| LOW⚡ | …er/scripts/svg_to_pptx/native_objects/marker_status.py | 180 | if route == "reconstruction-only" and visual != "placeholder": | CODE |
| LOW⚡ | …er/scripts/svg_to_pptx/native_objects/marker_status.py | 183 | f"{FALLBACK_KIND_ATTR}='placeholder'" | CODE |
| LOW | …lls/ppt-master/scripts/svg_to_pptx/pptx_package/cli.py | 1835 | if native_fallback_kind(elem) != 'placeholder': | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skills/ppt-master/scripts/total_md_split.py | 212 | Check the mapping between SVG files and speaker notes Args: svg_files: List of SVG files notes | STRING |
| HIGH | skills/ppt-master/scripts/total_md_split.py | 236 | Split and save notes dictionary into multiple files Args: notes: Notes dictionary (key is heading, val | STRING |
| HIGH | …-master/scripts/svg_to_pptx/pptx_package/dimensions.py | 105 | Extract pixel dimensions from SVG viewBox. Args: svg_path: Path to the SVG file. Returns: (wid | STRING |
| HIGH | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 6680 | Create a PPTX file with native DrawingML shapes. Args: svg_files: List of SVG files. output_path: O | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …t-master/scripts/image_backends/backend_siliconflow.py | 0 | resolve the target resolution for a ratio and logical size preset. | STRING |
| HIGH | …ills/ppt-master/scripts/image_backends/backend_qwen.py | 0 | resolve the target resolution for a ratio and logical size preset. | STRING |
| HIGH | …lls/ppt-master/scripts/image_backends/backend_zhipu.py | 0 | resolve the target resolution for a ratio and logical size preset. | STRING |
| HIGH | …pt-master/scripts/image_backends/backend_volcengine.py | 0 | resolve the target resolution for a ratio and logical size preset. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/faq.md | 114 | ## Q: Can I use AI-generated images in my presentation? | COMMENT |
| HIGH | docs/faq.md | 132 | ## Q: Can I turn AI-generated slide mockups or screenshots into editable PowerPoint slides? | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/finalize_svg.py | 198 | # Step 1: Expand project icons, then standard same-document use references. | COMMENT |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 244 | # Step 2: Align (slice/meet) and Base64-embed all <image> in one pass. | COMMENT |
| LOW | skills/ppt-master/scripts/finalize_svg.py | 292 | # Step 3: Flatten text. | COMMENT |
| LOW | skills/ppt-master/scripts/svg_editor/static/app.js | 1793 | // Step 2: save annotations. Service lifetime is controlled only by Exit preview. | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 593 | # Step 1: Compute (x1', y1') | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 599 | # Step 2: Compute (cx', cy') | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 624 | # Step 3: Compute (cx, cy) | COMMENT |
| LOW⚡ | …ills/ppt-master/scripts/svg_to_pptx/drawingml/paths.py | 628 | # Step 4: Compute theta1 and dtheta | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/finalize_svg.py | 345 | # Check if svg_output exists | COMMENT |
| LOW | skills/ppt-master/scripts/total_md_split.py | 228 | # Check if a corresponding heading exists in the notes | COMMENT |
| LOW | skills/ppt-master/scripts/batch_validate.py | 142 | # Print result | COMMENT |
| LOW | skills/ppt-master/scripts/project_utils.py | 627 | # Check if directory exists | COMMENT |
| LOW | skills/ppt-master/scripts/project_utils.py | 766 | # Check if it's a valid project directory (contains svg_output or design spec) | COMMENT |
| LOW | skills/ppt-master/scripts/source_to_md/web_to_md.py | 690 | # Check if image is webp and convert to png | COMMENT |
| LOW | skills/ppt-master/scripts/source_to_md/web_to_md.py | 928 | # Check if it has lots of text even without p tags (br tags?) | COMMENT |
| LOW | skills/ppt-master/scripts/source_to_md/pdf_to_md.py | 1648 | # Check if this is table content | COMMENT |
| LOW | skills/ppt-master/scripts/source_to_md/pdf_to_md.py | 1660 | # Check if this is noise text to be filtered (whole block match) | COMMENT |
| LOW | …ls/ppt-master/scripts/svg_finalize/fix_image_aspect.py | 299 | # Check if modification is needed | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/faq.md | 372 | ## Q: Will long decks blow out the context window in one shot? | COMMENT |
| MEDIUM | skills/ppt-master/references/animations.md | 49 | python3 skills/ppt-master/scripts/animation_config.py scaffold <project> # neutral editable scaffold (effect: none, | CODE |
| MEDIUM | …ls/ppt-master/workflows/create-template/create-deck.md | 61 | In addition to Create Template Steps 5–6: the spec contains `deck_id`, `kind: deck`, `summary` (naming the family/outcom | CODE |
| MEDIUM | …lls/ppt-master/scripts/svg_to_pptx/animation_config.py | 298 | # scaffold, listing, and automatic animation) but not structural: an | COMMENT |
| MEDIUM | skills/ppt-master/templates/spec_lock_reference.md | 7 | After Generate Step 4 Gate 1, read the completed Design Spec and current page/resource/template context, compose the ent | CODE |
| MEDIUM | skills/ppt-master/templates/design_spec_reference.md | 9 | **Mandatory — new-project write**: the first non-empty line is exactly `<!-- ppt-master-schema: design-spec/v1 -->`, the | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # PPT Master Dependencies / PPT Master 依赖 | COMMENT |
| LOW | skills/ppt-master/requirements.txt | 1 | # PPT Master Dependencies / PPT Master 依赖 | COMMENT |
| LOW | skills/ppt-master/requirements.txt | 21 | XlsxWriter>=3.0.0 | COMMENT |
| LOW | skills/ppt-master/requirements.txt | 41 | # 不转换 PDF 源可跳过此行;若要连同依赖一起再分发,请先核对 AGPL 条款。 | COMMENT |
| LOW | skills/ppt-master/requirements.txt | 61 | # Converts .xlsx/.xlsm workbooks to Markdown while preserving sheet structure. | COMMENT |
| LOW | skills/ppt-master/requirements.txt | 81 | # gemini_watermark_remover.py - 去除 Gemini 生成图片的水印 | COMMENT |
| LOW | skills/ppt-master/requirements.txt | 101 | # Gemini backend / Gemini 后端 (IMAGE_BACKEND=gemini) | COMMENT |
| LOW | skills/ppt-master/scripts/slice_images.py | 61 | _BG_SAMPLE_BORDER = 2 | COMMENT |
| LOW | skills/ppt-master/scripts/svg_quality/checker.py | 1141 | continue | COMMENT |
| LOW | …ls/ppt-master/scripts/image_sources/provider_common.py | 41 | # Project-wide constants | COMMENT |
| LOW | skills/ppt-master/scripts/docs/image.md | 81 | OPENAI_MODEL=gpt-image-2 | COMMENT |
| LOW | …s/ppt-master/scripts/svg_to_pptx/drawingml/elements.py | 1721 | # headEnd / tailEnd in most PowerPoint versions. | COMMENT |
| LOW | …s/ppt-master/scripts/svg_to_pptx/drawingml/elements.py | 2221 | base + (ceiling - base) * caps | COMMENT |
| LOW | …ls/ppt-master/scripts/svg_to_pptx/drawingml/context.py | 101 | # property. DrawingML has no equivalent group alpha, so native export | COMMENT |
| LOW | …lls/ppt-master/scripts/svg_to_pptx/drawingml/styles.py | 421 | f' Warning: marker "{marker_id}" shape cannot be classified; ' | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | skills/ppt-master/scripts/svg_position_calculator.py | 1080 | # Use more robust element extraction (attribute order independent) | COMMENT |
| MEDIUM | skills/ppt-master/scripts/confirm_ui/server.py | 141 | # parent (waiting) command returns before the calling harness kills it. The | COMMENT |
| MEDIUM | skills/ppt-master/scripts/source_to_md/doc_to_md.py | 1449 | # Map both full and basename for robust lookup | COMMENT |
| MEDIUM | skills/ppt-master/scripts/svg_editor/static/app.js | 998 | // element's own getCTM ∘ getScreenCTM⁻¹ is robust to how a browser splits | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | skills/ppt-master/scripts/slice_images.py | 937 | CODE | |
| LOW | skills/ppt-master/scripts/extract_svg_assets.py | 1041 | CODE | |
| LOW | skills/ppt-master/scripts/image_search.py | 1743 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/slide_to_svg.py | 229 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/slide_to_svg.py | 339 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/emu_units.py | 130 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/txbody_to_svg.py | 125 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/txbody_to_svg.py | 272 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/txbody_to_svg.py | 621 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/txbody_to_svg.py | 666 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/txbody_to_svg.py | 838 | CODE | |
| LOW | skills/ppt-master/scripts/pptx_to_svg/tbl_to_svg.py | 279 | CODE | |
| LOW | …master/scripts/svg_to_pptx/native_objects/chart_xml.py | 470 | CODE | |
| LOW | …/ppt-master/scripts/svg_to_pptx/drawingml/converter.py | 1950 | CODE | |
| LOW | …ls/ppt-master/scripts/svg_to_pptx/drawingml/context.py | 192 | CODE | |
| LOW | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 6619 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | skills/ppt-master/scripts/generate_examples_index.py | 177 | content.append("### Create a New Project\n") | CODE |
| MEDIUM | …ppt-master/scripts/svg_to_pptx/pptx_package/builder.py | 7122 | # Create the standard base PPTX with python-pptx. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | skills/ppt-master/scripts/docs/image.md | 149 | MINIMAX_API_KEY=your-api-key | CODE |