{"schema_version":"2","scorer_version":"0.1.0","scoring_version":"prov-4+qual-2+sec-2","generated_at":"2026-11-14T00:15:15.972504Z","repo":{"ref":{"host":"github.com","owner":"Vincentwei1021","name":"video-talkcraft"},"default_branch":"main","clone_url":"https://github.com/Vincentwei1021/video-talkcraft.git","html_url":"https://github.com/Vincentwei1021/video-talkcraft","description":"Agent skill that turns Claude Code / Codex into a motion-design studio for voiceover-driven explainer videos — word-level voiceover sync, 109 motion recipe cards, an anti-slideshow camera system, Remotion rendering.","stars":2312,"forks":235,"is_fork":false,"is_archived":false,"is_private":false,"size_kb":31520,"primary_language":"HTML","license_spdx":"NOASSERTION","created_at":"2026-08-22T17:11:05Z","pushed_at":"2026-11-09T02:29:30Z","security_policy_url":null,"distribution":{"owner_created_at":"2016-04-03T03:09:10Z","owner_type":"User","release_assets":[{"name":"alt-block-lines.mp4","size":292950,"download_count":261,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/alt-block-lines.mp4"},{"name":"bar-chart-growth.mp4","size":314122,"download_count":241,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/bar-chart-growth.mp4"},{"name":"bed-echo-blur.mp4","size":2421921,"download_count":193,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/bed-echo-blur.mp4"},{"name":"behind-text-title.mp4","size":5101646,"download_count":238,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/behind-text-title.mp4"},{"name":"black-slam-transition.mp4","size":184200,"download_count":228,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/black-slam-transition.mp4"},{"name":"callout-line-label.mp4","size":68458,"download_count":231,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/callout-line-label.mp4"},{"name":"caret-wipe-transition.mp4","size":305402,"download_count":224,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/caret-wipe-transition.mp4"},{"name":"chapter-progress-list.mp4","size":335051,"download_count":227,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chapter-progress-list.mp4"},{"name":"chapter-title-card.mp4","size":580757,"download_count":235,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chapter-title-card.mp4"},{"name":"chart-grow.mp4","size":65446,"download_count":225,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chart-grow.mp4"},{"name":"chat-gpt.mp4","size":209546,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chat-gpt.mp4"},{"name":"chat-message-flow.mp4","size":247362,"download_count":225,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chat-message-flow.mp4"},{"name":"chevron-lower-third.mp4","size":310755,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chevron-lower-third.mp4"},{"name":"chip-grid-single-select.mp4","size":283248,"download_count":188,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/chip-grid-single-select.mp4"},{"name":"claude-code.mp4","size":769439,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/claude-code.mp4"},{"name":"color-slam-beat-card.mp4","size":592015,"download_count":221,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/color-slam-beat-card.mp4"},{"name":"converging-arrows.mp4","size":292928,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/converging-arrows.mp4"},{"name":"corner-bracket-frame.mp4","size":290123,"download_count":218,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/corner-bracket-frame.mp4"},{"name":"count-badge-title.mp4","size":324789,"download_count":217,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/count-badge-title.mp4"},{"name":"countdown-arc-scatter.mp4","size":148488,"download_count":187,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/countdown-arc-scatter.mp4"},{"name":"crash-zoom-punch.mp4","size":122454,"download_count":186,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/crash-zoom-punch.mp4"},{"name":"cursor-actor-demo.mp4","size":201424,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/cursor-actor-demo.mp4"},{"name":"cursor-locked-zoom.mp4","size":487714,"download_count":217,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/cursor-locked-zoom.mp4"},{"name":"danmu-bubble-praise.mp4","size":374847,"download_count":216,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/danmu-bubble-praise.mp4"},{"name":"doc-park-left-pill-deal.mp4","size":467812,"download_count":187,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/doc-park-left-pill-deal.mp4"},{"name":"douyin-follow-card.mp4","size":275992,"download_count":190,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/douyin-follow-card.mp4"},{"name":"error-retype.mp4","size":94563,"download_count":188,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/error-retype.mp4"},{"name":"evidence-scroll-tour.mp4","size":1134385,"download_count":236,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/evidence-scroll-tour.mp4"},{"name":"filmstrip-conveyor.mp4","size":2344643,"download_count":185,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/filmstrip-conveyor.mp4"},{"name":"flying-words.mp4","size":990681,"download_count":190,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/flying-words.mp4"},{"name":"focus-dim-spotlight.mp4","size":538177,"download_count":225,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/focus-dim-spotlight.mp4"},{"name":"gallery-wall-dolly.mp4","size":2875866,"download_count":186,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/gallery-wall-dolly.mp4"},{"name":"glass-code-walk.mp4","size":2110766,"download_count":218,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/glass-code-walk.mp4"},{"name":"gooey-morph.mp4","size":300795,"download_count":218,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/gooey-morph.mp4"},{"name":"grid-to-hero.mp4","size":3944943,"download_count":191,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/grid-to-hero.mp4"},{"name":"hand-drawn-ellipse.mp4","size":296969,"download_count":221,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/hand-drawn-ellipse.mp4"},{"name":"highlighter-sweep.mp4","size":216201,"download_count":224,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/highlighter-sweep.mp4"},{"name":"host-card-glass-board.mp4","size":1267030,"download_count":195,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/host-card-glass-board.mp4"},{"name":"host-shrink-to-chip.mp4","size":341936,"download_count":226,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/host-shrink-to-chip.mp4"},{"name":"impact-open-title.mp4","size":342821,"download_count":227,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/impact-open-title.mp4"},{"name":"info-card-assemble.mp4","size":736903,"download_count":186,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/info-card-assemble.mp4"},{"name":"info-term-card.mp4","size":594473,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/info-term-card.mp4"},{"name":"ink-underline.mp4","size":317077,"download_count":221,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/ink-underline.mp4"},{"name":"keyword-pop-highlight.mp4","size":178618,"download_count":228,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/keyword-pop-highlight.mp4"},{"name":"lead-word-zoom-assemble.mp4","size":235711,"download_count":188,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/lead-word-zoom-assemble.mp4"},{"name":"line-by-line-slide.mp4","size":266389,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/line-by-line-slide.mp4"},{"name":"line-carry-transition.mp4","size":527104,"download_count":183,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/line-carry-transition.mp4"},{"name":"line-chart-story-draw.mp4","size":247020,"download_count":240,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/line-chart-story-draw.mp4"},{"name":"logo-enter.mp4","size":76218,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/logo-enter.mp4"},{"name":"long-take-world.mp4","size":772254,"download_count":221,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/long-take-world.mp4"},{"name":"lower-third-nameplate.mp4","size":262113,"download_count":217,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/lower-third-nameplate.mp4"},{"name":"magnifier-detail.mp4","size":1305950,"download_count":245,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/magnifier-detail.mp4"},{"name":"map-route-pin.mp4","size":180265,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/map-route-pin.mp4"},{"name":"media-pop-in.mp4","size":3807405,"download_count":223,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/media-pop-in.mp4"},{"name":"metric-with-sparkline.mp4","size":334176,"download_count":216,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/metric-with-sparkline.mp4"},{"name":"motion-blur-slam-in.mp4","size":157297,"download_count":217,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/motion-blur-slam-in.mp4"},{"name":"news-card-desk.mp4","size":1334731,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/news-card-desk.mp4"},{"name":"number-counter.mp4","size":431807,"download_count":249,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/number-counter.mp4"},{"name":"number-slab-pop.mp4","size":331500,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/number-slab-pop.mp4"},{"name":"numbered-step-stack.mp4","size":414059,"download_count":220,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/numbered-step-stack.mp4"},{"name":"orbit-drift.mp4","size":763248,"download_count":215,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/orbit-drift.mp4"},{"name":"outline-box-title.mp4","size":287777,"download_count":216,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/outline-box-title.mp4"},{"name":"overexpose-flip-transition.mp4","size":239785,"download_count":215,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/overexpose-flip-transition.mp4"},{"name":"parallel-items-with-host.mp4","size":7565420,"download_count":192,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/parallel-items-with-host.mp4"},{"name":"particle-weld-transition.mp4","size":213306,"download_count":214,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/particle-weld-transition.mp4"},{"name":"pencil-sketch-draw.mp4","size":519300,"download_count":215,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/pencil-sketch-draw.mp4"},{"name":"per-character-rise.mp4","size":87290,"download_count":216,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/per-character-rise.mp4"},{"name":"pip-zoom-box.mp4","size":483600,"download_count":215,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/pip-zoom-box.mp4"},{"name":"pullback-cool-transition.mp4","size":179056,"download_count":212,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/pullback-cool-transition.mp4"},{"name":"push-through-transition.mp4","size":138468,"download_count":213,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/push-through-transition.mp4"},{"name":"quote-bracket-pull.mp4","size":151884,"download_count":214,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/quote-bracket-pull.mp4"},{"name":"quote-card.mp4","size":437385,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/quote-card.mp4"},{"name":"quote-hold-arrow.mp4","size":421266,"download_count":213,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/quote-hold-arrow.mp4"},{"name":"rack-focus-pair.mp4","size":1302961,"download_count":180,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/rack-focus-pair.mp4"},{"name":"reticle-lock-on.mp4","size":136548,"download_count":184,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/reticle-lock-on.mp4"},{"name":"scanline-annotate.mp4","size":259963,"download_count":184,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/scanline-annotate.mp4"},{"name":"scribble-annotation.mp4","size":103974,"download_count":212,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/scribble-annotation.mp4"},{"name":"shape-wipe-transition.mp4","size":145587,"download_count":212,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/shape-wipe-transition.mp4"},{"name":"slab-punch-title.mp4","size":303479,"download_count":219,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/slab-punch-title.mp4"},{"name":"slow-pull-reveal.mp4","size":1771834,"download_count":213,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/slow-pull-reveal.mp4"},{"name":"slow-push-in.mp4","size":1516506,"download_count":218,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/slow-push-in.mp4"},{"name":"soft-blur-in.mp4","size":123948,"download_count":213,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/soft-blur-in.mp4"},{"name":"source-converge.mp4","size":316478,"download_count":187,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/source-converge.mp4"},{"name":"speed-slab-title.mp4","size":397413,"download_count":213,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/speed-slab-title.mp4"},{"name":"split-60-40-story.mp4","size":2096094,"download_count":199,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/split-60-40-story.mp4"},{"name":"split-compare-slider.mp4","size":5756235,"download_count":202,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/split-compare-slider.mp4"},{"name":"split-text-stagger.mp4","size":90640,"download_count":183,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/split-text-stagger.mp4"},{"name":"stack-fan-out.mp4","size":1126999,"download_count":177,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/stack-fan-out.mp4"},{"name":"stage-keyframe-tour.mp4","size":1497218,"download_count":214,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/stage-keyframe-tour.mp4"},{"name":"step-timeline-vertical.mp4","size":331610,"download_count":216,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/step-timeline-vertical.mp4"},{"name":"still-layout-relay.mp4","size":4022753,"download_count":181,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/still-layout-relay.mp4"},{"name":"strike-and-replace.mp4","size":262055,"download_count":216,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/strike-and-replace.mp4"},{"name":"subscribe-cta.mp4","size":925445,"download_count":212,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/subscribe-cta.mp4"},{"name":"sway-parallax.mp4","size":524946,"download_count":212,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/sway-parallax.mp4"},{"name":"terminal-typing-log.mp4","size":338884,"download_count":232,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/terminal-typing-log.mp4"},{"name":"tilt-3d-page.mp4","size":788160,"download_count":233,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/tilt-3d-page.mp4"},{"name":"timeline-photo-strip.mp4","size":1866839,"download_count":200,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/timeline-photo-strip.mp4"},{"name":"title-demote-to-label.mp4","size":335383,"download_count":183,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/title-demote-to-label.mp4"},{"name":"tracking-in.mp4","size":67721,"download_count":217,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/tracking-in.mp4"},{"name":"type-contrast-emphasis.mp4","size":218049,"download_count":210,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/type-contrast-emphasis.mp4"},{"name":"typewriter-reveal.mp4","size":2267296,"download_count":233,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/typewriter-reveal.mp4"},{"name":"ui-flow-theater.mp4","size":278235,"download_count":211,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/ui-flow-theater.mp4"},{"name":"ui-prop-theater.mp4","size":227533,"download_count":210,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/ui-prop-theater.mp4"},{"name":"unit-grid-proportion.mp4","size":329911,"download_count":183,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/unit-grid-proportion.mp4"},{"name":"whip-pan-transition.mp4","size":121229,"download_count":232,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/whip-pan-transition.mp4"},{"name":"word-relay-filmstrip.mp4","size":1358621,"download_count":179,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/word-relay-filmstrip.mp4"},{"name":"word-slot-cycle.mp4","size":154096,"download_count":185,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/word-slot-cycle.mp4"},{"name":"x-follow-card.mp4","size":393876,"download_count":212,"release_tag":"gallery-media","url":"https://github.com/Vincentwei1021/video-talkcraft/releases/download/gallery-media/x-follow-card.mp4"}]}},"commit_sha":"501708856fbfdf596e27dba3200e12cf95da57be","profile":{"lines_by_language":{"TypeScript":50722,"Python":5464,"JavaScript":4197,"Shell":176},"files_by_category":{"source":388,"docs":240,"binary":160,"other":116,"config":12,"test":5,"oversized":4,"vendored":2,"generated":2},"source_lines":59517,"test_lines":1042},"pillars":{"ai_provenance":{"score":98.6,"confidence":0.86,"coverage":1.0,"label":"explicit","breakdown":{"attributed_share":0.9863,"suspected_share":0.0,"estimated_share":0.9863,"ai_artifacts":0.0,"flagged_work_units":2.0,"flagged_releases":null},"summary":"Explicit AI attribution on 99% of first-party code added; an estimated 99% including velocity signals."},"quality":{"score":53.1,"confidence":0.9,"coverage":1.0,"label":"weak","breakdown":{"complexity":49.7,"duplication":48.1,"lint":58.1,"testing":42.7,"docs":65.0,"type_safety":94.7,"process":null},"summary":"Code quality is weak: test-to-source ratio 0.02, no CI test run detected; 23% of function code in complex or long functions; 12% duplicated lines. Weakest area: testing."},"security":{"score":70.8,"confidence":0.85,"coverage":1.0,"label":"adequate","breakdown":{"secrets":100.0,"sast":96.8,"dependencies":63.8,"ci_actions":44.0,"posture":0.0,"scorecard":null},"summary":"Security posture is adequate: 11 known vulnerabilities in 4 dependencies; 3 high-severity SAST findings; 4 high-severity workflow issues. Weakest area: posture."}},"analyzer_results":[{"analyzer":"sec-scorecard","pillar":"security","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":"no published OpenSSF Scorecard result for this repo"},{"analyzer":"sec-registry","pillar":"security","status":"ok","tool_version":null,"metrics":{"declared":29.0,"checked":29.0,"missing":0.0,"recent":0.0,"lookup_errors":0.0},"findings":[],"evidence":[],"data":{"phantom":false},"error":null},{"analyzer":"ai-attribution","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"commits":65.0,"attributed_commits":59.0,"attributed_commit_share":0.9076923076923077,"effective_loc":63688.0,"attributed_loc":62813.0,"attributed_loc_share":0.9862611480969727,"tools_detected":2.0},"findings":[],"evidence":[{"kind":"attribution-summary","description":"Claude Code: 55 attributed commits, 61,356 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attribution-summary","description":"OpenAI Codex: 4 attributed commits, 1,457 lines added","ref":null,"url":null,"weight":1.0},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"fd7cf593ea675ed68e30c022a0be518e4eb7a340","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/fd7cf593ea675ed68e30c022a0be518e4eb7a340","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"8b6b7cdab0d8faf2e91e0d8b7d588b7457ae204b","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/8b6b7cdab0d8faf2e91e0d8b7d588b7457ae204b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"e18cecff9ef44b53620f6f0c632d5c6ccfbc772b","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/e18cecff9ef44b53620f6f0c632d5c6ccfbc772b","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"b5a6cfdf0062a526af0267f9c01f45cbb12df444","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/b5a6cfdf0062a526af0267f9c01f45cbb12df444","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"61cfd09a7722cabc50bd5e7614cc9fe8c05fb9df","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/61cfd09a7722cabc50bd5e7614cc9fe8c05fb9df","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"64b2efd18e0099f8c6841983040e7f5ce64c06a1","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/64b2efd18e0099f8c6841983040e7f5ce64c06a1","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"06a018340911385e4c890eb1a9a70f7e6835aa2d","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/06a018340911385e4c890eb1a9a70f7e6835aa2d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4192edbdcc07d913a6d3223c655dca1b18e707e8","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/4192edbdcc07d913a6d3223c655dca1b18e707e8","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"97bc55b9aaf054cbf23282abd3f182115084cc38","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/97bc55b9aaf054cbf23282abd3f182115084cc38","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"a22ac356deb67ae32a0efada839760ba36a81f14","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/a22ac356deb67ae32a0efada839760ba36a81f14","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c22291f45358d1a88e0f155e8e07710533ba396a","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/c22291f45358d1a88e0f155e8e07710533ba396a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"028f8250e12d1f8490af8b7261bb8724d984531e","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/028f8250e12d1f8490af8b7261bb8724d984531e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"47bb5bcb44ae7a095b44f95161027d2b9f5c443d","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/47bb5bcb44ae7a095b44f95161027d2b9f5c443d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"91106d77c381595093f9a9b7283dadc49c09903d","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/91106d77c381595093f9a9b7283dadc49c09903d","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c1012c4f59dcd089193da235f6a195dd909f461a","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/c1012c4f59dcd089193da235f6a195dd909f461a","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"dca729b05bc3cd36c41656eed26a879646c693ee","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/dca729b05bc3cd36c41656eed26a879646c693ee","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"0e56915c7a2047c016dd70360d1f934fff2fb5bc","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/0e56915c7a2047c016dd70360d1f934fff2fb5bc","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: PR branch 'codex/update-readme-qr-20260917'","ref":"ccb8a571f4bd620b5588bef4b264b5120f5042fc","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/ccb8a571f4bd620b5588bef4b264b5120f5042fc","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (8c791781cb)","ref":"6f2524e09f0fe1a19e1dcae76e28cb049ad5190e","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/6f2524e09f0fe1a19e1dcae76e28cb049ad5190e","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"687c8607f2de15724758e00dcd2ae092d33aef17","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/687c8607f2de15724758e00dcd2ae092d33aef17","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"c60abe45f9f6d24923c21722b0b1b9a96998fc12","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/c60abe45f9f6d24923c21722b0b1b9a96998fc12","weight":0.9},{"kind":"attributed-commit","description":"OpenAI Codex: on merged branch (8c791781cb)","ref":"b71b644a82e1f3a05feb6d42c74565da27913827","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/b71b644a82e1f3a05feb6d42c74565da27913827","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4830093f6342a2e672acc0f063dead8e5d2173c9","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/4830093f6342a2e672acc0f063dead8e5d2173c9","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"4d873354755fb342cafdacfff8e192e884c390aa","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/4d873354755fb342cafdacfff8e192e884c390aa","weight":0.9},{"kind":"attributed-commit","description":"Claude Code: trailer 'Co-Authored-By: Claude'","ref":"5d7bdfd2c504b353f1a51dc91cc4729fce78e2ee","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/5d7bdfd2c504b353f1a51dc91cc4729fce78e2ee","weight":0.9}],"data":{"attributed_loc_by_commit":{"88971d69004f7f8104bbd1952305be9d682236dc":4928,"cb7054a907293cb6c0ae685f6a79575a8d05dcf3":47,"8dd528ccba65e1e6fd6d63724c1df2f352ba66ce":382,"5d6637f1749bf046236c6b8b81eb2aa83f3499d3":14896,"05691f5f25d91d211f793f5bb0d6941d3ef5723d":254,"d2e1db9a9c354c28224e8f0b37717d15efe254ec":145,"1ca169cb9aa81f901a57039f081afe80c9323fb9":29,"082a896c120c3b0ce70f6fffc4d82c6cff4b4f9e":24768,"0e11d24efd330ed462e0d9de55915c50c9a6f443":127,"6c43c0f8c7f260d372610c25ac9587f720db8d14":102,"b1609ce185c7956fbee239ea7012b5506eb1f6b5":3007,"bf61c2b19b2bec2f7c01fe972c98ee4bf2748880":0,"d89a15af4c3357fab2b051f425db4cf66c612cbc":0,"367b53fef6b9f71f249500e6c87f5eab1e9c2069":4006,"5110948f46ea136b8869f31831c72e0dffa447aa":32,"ad2f40b2cf4bb0a0eccb3950d4fc4d3d1a6a6d0d":892,"8a9b4150dcc660d090f8e314605e77a8791949c4":479,"3f5d164878d8469c5964efd2e35ed86f2494323d":0,"51a3bb2e6e804a52c6bb9a5909b74260cf113287":76,"55ae179700effb2c335a41c15a9f4d9c97fa689a":20,"e3eb3be65683b3cc7bc5b295b9805c03352d02f3":664,"9d76dbe92698f9b6478403b3bfad1d4ded0e5b51":0,"b7fb9ac943c64b1d6dd61f9576635b173602a4a4":0,"6b7d26d56dbb1fe33f07a2675647c661e933ad3b":50,"78b96416dc1d81229b814928dbea6fc556658d0c":169,"1813ed810cca21abaf809a8722d09f89f97ed3d2":616,"5fc32c20e180f4286804388a9b9070c5c0fc8120":339,"effa44c912619e2ce39cdcd5b8178f69cc1cfa49":0,"5369aff2a4fef36397c8a02675520c7eecdd64f2":474,"f581379ea2c0a567bc10b37974e662466a9870f7":1170,"97061f97d34371306d7bc0dd405670d43a965a06":63,"97a323ed2740d73093891873e7f77d787f52e821":164,"8b57565d5323cc15796b88017769cf4415b46c63":183,"0b217999fa4f108221d435e028326319db0f278f":732,"5d7bdfd2c504b353f1a51dc91cc4729fce78e2ee":294,"4d873354755fb342cafdacfff8e192e884c390aa":10,"4830093f6342a2e672acc0f063dead8e5d2173c9":131,"b71b644a82e1f3a05feb6d42c74565da27913827":680,"c60abe45f9f6d24923c21722b0b1b9a96998fc12":22,"687c8607f2de15724758e00dcd2ae092d33aef17":46,"6f2524e09f0fe1a19e1dcae76e28cb049ad5190e":608,"ccb8a571f4bd620b5588bef4b264b5120f5042fc":0,"0e56915c7a2047c016dd70360d1f934fff2fb5bc":309,"dca729b05bc3cd36c41656eed26a879646c693ee":39,"c1012c4f59dcd089193da235f6a195dd909f461a":338,"91106d77c381595093f9a9b7283dadc49c09903d":46,"47bb5bcb44ae7a095b44f95161027d2b9f5c443d":0,"028f8250e12d1f8490af8b7261bb8724d984531e":0,"c22291f45358d1a88e0f155e8e07710533ba396a":219,"a22ac356deb67ae32a0efada839760ba36a81f14":5,"97bc55b9aaf054cbf23282abd3f182115084cc38":580,"4192edbdcc07d913a6d3223c655dca1b18e707e8":509,"06a018340911385e4c890eb1a9a70f7e6835aa2d":46,"64b2efd18e0099f8c6841983040e7f5ce64c06a1":7,"61cfd09a7722cabc50bd5e7614cc9fe8c05fb9df":32,"b5a6cfdf0062a526af0267f9c01f45cbb12df444":1,"e18cecff9ef44b53620f6f0c632d5c6ccfbc772b":11,"8b6b7cdab0d8faf2e91e0d8b7d588b7457ae204b":34,"fd7cf593ea675ed68e30c022a0be518e4eb7a340":32},"tools":{"claude-code":{"name":"Claude Code","commits":55,"loc":61356,"first_seen":1787910552,"last_seen":1790082801},"openai-codex":{"name":"OpenAI Codex","commits":4,"loc":1457,"first_seen":1788940902,"last_seen":1789637461}},"monthly":{"2026-08":{"loc":20652,"attributed_loc":20652},"2026-09":{"loc":43036,"attributed_loc":42161},"2026-10":{"loc":0,"attributed_loc":0},"2026-11":{"loc":0,"attributed_loc":0}}},"error":null},{"analyzer":"ai-artifacts","pillar":"ai_provenance","status":"ok","tool_version":"signatures-v1","metrics":{"artifacts":0.0,"workflow_agents":0.0,"tools_configured":0.0},"findings":[],"evidence":[],"data":{"artifacts":[],"workflows":[],"tools":[]},"error":null},{"analyzer":"ai-velocity","pillar":"ai_provenance","status":"ok","tool_version":"prov-4","metrics":{"work_units":34.0,"flagged_units":2.0,"pre_ai_era_bursts":0.0,"pre_ai_era_measured_loc":0.0,"pre_ai_era_burst_loc":0.0,"measured_loc":15090.0,"flagged_loc":2819.0,"flagged_loc_share":0.18681245858184228,"max_loc_per_hour":983.6130962273558,"median_loc_per_hour":138.36633800860992,"pr_timed_units":14.0,"excluded_import_loc":48598.0},"findings":[],"evidence":[{"kind":"velocity-burst","description":"1,644 lines of first-party code in ~1.7h (984 lines/hour, 2 commit session)","ref":"f581379ea2c0a567bc10b37974e662466a9870f7","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/f581379ea2c0a567bc10b37974e662466a9870f7","weight":0.2950839288682067},{"kind":"velocity-burst","description":"1,175 lines of first-party code in ~2.2h (530 lines/hour, 6 commit session)","ref":"b5a6cfdf0062a526af0267f9c01f45cbb12df444","url":"https://github.com/Vincentwei1021/video-talkcraft/commit/b5a6cfdf0062a526af0267f9c01f45cbb12df444","weight":0.15898271109997492}],"data":{"flagged_loc_by_commit":{"5369aff2a4fef36397c8a02675520c7eecdd64f2":474,"f581379ea2c0a567bc10b37974e662466a9870f7":1170,"97bc55b9aaf054cbf23282abd3f182115084cc38":580,"4192edbdcc07d913a6d3223c655dca1b18e707e8":509,"06a018340911385e4c890eb1a9a70f7e6835aa2d":46,"64b2efd18e0099f8c6841983040e7f5ce64c06a1":7,"61cfd09a7722cabc50bd5e7614cc9fe8c05fb9df":32,"b5a6cfdf0062a526af0267f9c01f45cbb12df444":1},"excluded_import_commits":["082a896c120c3b0ce70f6fffc4d82c6cff4b4f9e","367b53fef6b9f71f249500e6c87f5eab1e9c2069","5d6637f1749bf046236c6b8b81eb2aa83f3499d3","88971d69004f7f8104bbd1952305be9d682236dc"]},"error":null},{"analyzer":"ai-release-velocity","pillar":"ai_provenance","status":"skipped","tool_version":null,"metrics":{},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"ai-stylometry","pillar":"ai_provenance","status":"ok","tool_version":null,"metrics":{"lines_scanned":59517.0,"index":0.134,"count:narrated_steps":0.0,"per_kloc:narrated_steps":0.0,"files:narrated_steps":0.0,"count:placeholder":0.0,"per_kloc:placeholder":0.0,"files:placeholder":0.0,"count:emoji_in_code":16.0,"per_kloc:emoji_in_code":0.269,"files:emoji_in_code":12.0,"count:assistant_voice":0.0,"per_kloc:assistant_voice":0.0,"files:assistant_voice":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-secrets","pillar":"security","status":"ok","tool_version":"gitleaks 8.30.1","metrics":{"secrets_current":0.0,"secrets_history":0.0,"secrets_nonprod":0.0,"secrets_low_confidence":0.0},"findings":[],"evidence":[],"data":{},"error":null},{"analyzer":"sec-sast","pillar":"security","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":15.0,"findings_high":3.0,"findings_medium":12.0,"findings_low":0.0,"weighted_findings":5.6,"scanned_lines":59517.0,"parse_errors":5.0},"findings":[{"rule_id":"opengrep/javascript.browser.security.insecure-document-method","severity":"high","message":"User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"demos/_lib/demo-shell.js","line":155,"fingerprint":"javascript.browser.security.insecure-document-method:demos/_lib/demo-shell.js:155"},{"rule_id":"opengrep/javascript.browser.security.insecure-innerhtml","severity":"high","message":"User controlled data in a `btn.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low]","path":"demos/_lib/demo-shell.js","line":155,"fingerprint":"javascript.browser.security.insecure-innerhtml:demos/_lib/demo-shell.js:155"},{"rule_id":"opengrep/python.lang.security.audit.dangerous-subprocess-use-audit","severity":"high","message":"Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low]","path":"scripts/freeze_probe.py","line":48,"fingerprint":"python.lang.security.audit.dangerous-subprocess-use-audit:scripts/freeze_probe.py:48"},{"rule_id":"opengrep/javascript.browser.security.wildcard-postmessage-configuration","severity":"medium","message":"The target origin of the window.postMessage() API is set to \"*\". This could allow for information disclosure due to the possibility of any origin allowed to receive the message. [confidence medium]","path":"demos/_lib/sfx.js","line":47,"fingerprint":"javascript.browser.security.wildcard-postmessage-configuration:demos/_lib/sfx.js:47"},{"rule_id":"opengrep/javascript.lang.security.audit.unsafe-dynamic-method","severity":"medium","message":"Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low]","path":"demos/_lib/sfx.js","line":346,"fingerprint":"javascript.lang.security.audit.unsafe-dynamic-method:demos/_lib/sfx.js:346"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"gallery/build.mjs","line":70,"fingerprint":"javascript.lang.security.html-in-template-string:gallery/build.mjs:70"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"gallery/build.mjs","line":85,"fingerprint":"javascript.lang.security.html-in-template-string:gallery/build.mjs:85"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"gallery/build.mjs","line":92,"fingerprint":"javascript.lang.security.html-in-template-string:gallery/build.mjs:92"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"gallery/build.mjs","line":176,"fingerprint":"javascript.lang.security.html-in-template-string:gallery/build.mjs:176"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"gallery/build.mjs","line":757,"fingerprint":"javascript.lang.security.html-in-template-string:gallery/build.mjs:757"},{"rule_id":"opengrep/python.lang.security.audit.dynamic-urllib-use-detected","severity":"medium","message":"Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control the URLs, or consider using the 'requests' library instead. [confidence low]","path":"scripts/face_bbox.py","line":34,"fingerprint":"python.lang.security.audit.dynamic-urllib-use-detected:scripts/face_bbox.py:34"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `id` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled i [confidence low]","path":"scripts/pipeline_state.mjs","line":251,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:scripts/pipeline_state.mjs:251"},{"rule_id":"opengrep/javascript.lang.security.audit.detect-non-literal-regexp","severity":"medium","message":"RegExp() called with a `k` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlled in [confidence low]","path":"workbench/scripts/gen-index.mjs","line":121,"fingerprint":"javascript.lang.security.audit.detect-non-literal-regexp:workbench/scripts/gen-index.mjs:121"},{"rule_id":"opengrep/javascript.lang.security.html-in-template-string","severity":"medium","message":"This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS). [confidence low]","path":"workbench/scripts/gen-index.mjs","line":182,"fingerprint":"javascript.lang.security.html-in-template-string:workbench/scripts/gen-index.mjs:182"},{"rule_id":"opengrep/javascript.playwright.security.audit.playwright-goto-injection","severity":"medium","message":"If unverified user data can reach the `goto` method it can result in Server-Side Request Forgery vulnerabilities [confidence low]","path":"workbench/scripts/screenshots.mjs","line":40,"fingerprint":"javascript.playwright.security.audit.playwright-goto-injection:workbench/scripts/screenshots.mjs:40"}],"evidence":[],"data":{"rulesets":["typescript","javascript","python","bash"]},"error":null},{"analyzer":"sec-deps","pillar":"security","status":"ok","tool_version":"osv-scanner version: 2.7.1","metrics":{"vulnerable_packages":4.0,"vulnerabilities":11.0,"vulns_critical":0.0,"vulns_high":3.0,"vulns_medium":5.0,"vulns_low":3.0,"vulns_unknown":0.0,"penalty":27.0},"findings":[{"rule_id":"osv/GHSA-68fv-2mgg-jv7q","severity":"high","message":"source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q","path":"runtime/package-lock.json","line":null,"fingerprint":"source-map-js@1.2.1 (npm):GHSA-68fv-2mgg-jv7q"},{"rule_id":"osv/GHSA-587h-7wmj-h5pm","severity":"high","message":"vite@6.4.3 (npm) is affected by GHSA-587h-7wmj-h5pm","path":"runtime/package-lock.json","line":null,"fingerprint":"vite@6.4.3 (npm):GHSA-587h-7wmj-h5pm"},{"rule_id":"osv/GHSA-mrhx-c7xc-m3w5","severity":"high","message":"zod@4.4.3 (npm) is affected by GHSA-mrhx-c7xc-m3w5","path":"runtime/package-lock.json","line":null,"fingerprint":"zod@4.4.3 (npm):GHSA-mrhx-c7xc-m3w5"},{"rule_id":"osv/GHSA-w74x-v6f9-j3xg","severity":"medium","message":"fast-uri@3.1.8 (npm) is affected by GHSA-w74x-v6f9-j3xg","path":"runtime/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-w74x-v6f9-j3xg"},{"rule_id":"osv/GHSA-wjr9-j795-jxcr","severity":"medium","message":"fast-uri@3.1.8 (npm) is affected by GHSA-wjr9-j795-jxcr","path":"runtime/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-wjr9-j795-jxcr"},{"rule_id":"osv/GHSA-698v-4r3x-3vcv","severity":"medium","message":"vite@6.4.3 (npm) is affected by GHSA-698v-4r3x-3vcv","path":"runtime/package-lock.json","line":null,"fingerprint":"vite@6.4.3 (npm):GHSA-698v-4r3x-3vcv"},{"rule_id":"osv/GHSA-r825-w8mm-5pxw","severity":"medium","message":"vite@6.4.3 (npm) is affected by GHSA-r825-w8mm-5pxw","path":"runtime/package-lock.json","line":null,"fingerprint":"vite@6.4.3 (npm):GHSA-r825-w8mm-5pxw"},{"rule_id":"osv/GHSA-rq7h-c2jc-7f22","severity":"medium","message":"vite@6.4.3 (npm) is affected by GHSA-rq7h-c2jc-7f22","path":"runtime/package-lock.json","line":null,"fingerprint":"vite@6.4.3 (npm):GHSA-rq7h-c2jc-7f22"},{"rule_id":"osv/GHSA-333x-w4r6-6crp","severity":"low","message":"fast-uri@3.1.8 (npm) is affected by GHSA-333x-w4r6-6crp","path":"runtime/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-333x-w4r6-6crp"},{"rule_id":"osv/GHSA-xhq7-xmqj-769h","severity":"low","message":"fast-uri@3.1.8 (npm) is affected by GHSA-xhq7-xmqj-769h","path":"runtime/package-lock.json","line":null,"fingerprint":"fast-uri@3.1.8 (npm):GHSA-xhq7-xmqj-769h"},{"rule_id":"osv/GHSA-9jrq-w75r-8gcw","severity":"low","message":"vite@6.4.3 (npm) is affected by GHSA-9jrq-w75r-8gcw","path":"runtime/package-lock.json","line":null,"fingerprint":"vite@6.4.3 (npm):GHSA-9jrq-w75r-8gcw"}],"evidence":[],"data":{"ecosystems":["npm"]},"error":null},{"analyzer":"sec-actions","pillar":"security","status":"ok","tool_version":"zizmor 1.32.0","metrics":{"workflows":1.0,"findings":5.0,"findings_high":4.0,"findings_medium":1.0,"findings_low":0.0,"penalty":49.2},"findings":[{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy-pages.yml","line":35,"fingerprint":"unpinned-uses:.github/workflows/deploy-pages.yml:35"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy-pages.yml","line":37,"fingerprint":"unpinned-uses:.github/workflows/deploy-pages.yml:37"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy-pages.yml","line":74,"fingerprint":"unpinned-uses:.github/workflows/deploy-pages.yml:74"},{"rule_id":"zizmor/unpinned-uses","severity":"high","message":"unpinned action reference [confidence high]","path":".github/workflows/deploy-pages.yml","line":79,"fingerprint":"unpinned-uses:.github/workflows/deploy-pages.yml:79"},{"rule_id":"zizmor/artipacked","severity":"medium","message":"credential persistence through GitHub Actions artifacts [confidence low]","path":".github/workflows/deploy-pages.yml","line":35,"fingerprint":"artipacked:.github/workflows/deploy-pages.yml:35"}],"evidence":[],"data":{},"error":null},{"analyzer":"sec-posture","pillar":"security","status":"ok","tool_version":null,"metrics":{"check:security_policy":0.0,"check:dependency_updates":0.0,"check:signed_commits":0.0,"check:lockfiles":0.0,"signed_commit_share":0.3538,"unpinned_manifests":1.0},"findings":[],"evidence":[{"kind":"posture","description":"workbench/package.json has no lockfile alongside it (unpinned dependencies)","ref":"workbench/package.json","url":null,"weight":0.3}],"data":{},"error":null},{"analyzer":"sec-distribution","pillar":"security","status":"ok","tool_version":null,"metrics":{"signals":1.0,"binary_assets":0.0,"suspicious":0.0},"findings":[],"evidence":[{"kind":"star-burst","description":"2312 stars in 83 days (28/day)","ref":null,"url":null,"weight":0.0}],"data":{"signals":["star-burst"],"suspicious":false,"unusual_traction":false,"metadata":true},"error":null},{"analyzer":"qual-complexity","pillar":"quality","status":"ok","tool_version":"lizard 1.25.1","metrics":{"functions":3303.0,"function_nloc":29377.0,"mean_ccn":2.89,"p90_ccn":6.0,"complex_functions":80.0,"long_functions":24.0,"many_param_functions":1.0,"risky_nloc_share":0.2331},"findings":[],"evidence":[{"kind":"complex-function","description":"check_semantics in scripts/preflight.py: complexity 104, 182 lines","ref":"scripts/preflight.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/preflight.py#L429","weight":1.0},{"kind":"complex-function","description":"main in scripts/workbench_contract_lint.py: complexity 95, 166 lines","ref":"scripts/workbench_contract_lint.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/workbench_contract_lint.py#L118","weight":1.0},{"kind":"complex-function","description":"cmd_check in scripts/semantic_annotate.py: complexity 85, 133 lines","ref":"scripts/semantic_annotate.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/semantic_annotate.py#L198","weight":1.0},{"kind":"complex-function","description":"main in scripts/card_match.py: complexity 76, 136 lines","ref":"scripts/card_match.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/card_match.py#L76","weight":1.0},{"kind":"complex-function","description":"check_variety in scripts/preflight.py: complexity 65, 96 lines","ref":"scripts/preflight.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/preflight.py#L300","weight":1.0},{"kind":"complex-function","description":"main in scripts/voice_trim.py: complexity 55, 132 lines","ref":"scripts/voice_trim.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/voice_trim.py#L593","weight":0.9166666666666666},{"kind":"complex-function","description":"(anonymous) in workbench/vite.config.ts: complexity 49, 89 lines","ref":"workbench/vite.config.ts","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/workbench/vite.config.ts#L261","weight":0.8166666666666667},{"kind":"complex-function","description":"plan_cuts in scripts/voice_trim.py: complexity 45, 49 lines","ref":"scripts/voice_trim.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/voice_trim.py#L390","weight":0.75},{"kind":"complex-function","description":"align in scripts/timestamps_cpu.py: complexity 42, 80 lines","ref":"scripts/timestamps_cpu.py","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/timestamps_cpu.py#L164","weight":0.7},{"kind":"complex-function","description":"UiFlowTheater in workbench/src/cards/gen/ui-flow-theater.tsx: complexity 42, 182 lines","ref":"workbench/src/cards/gen/ui-flow-theater.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/workbench/src/cards/gen/ui-flow-theater.tsx#L278","weight":0.7}],"data":{},"error":null},{"analyzer":"qual-duplication","pillar":"quality","status":"ok","tool_version":"repotrust-dup-w6","metrics":{"compared_lines":48184.0,"duplicated_lines":5879.0,"duplicated_share":0.122,"files":388.0},"findings":[],"evidence":[{"kind":"duplicate-code","description":"6+ duplicated lines: gallery/build.mjs:32 and gallery/build.mjs:51","ref":"gallery/build.mjs","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/gallery/build.mjs#L32","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: scripts/render_shots.mjs:134 and scripts/render_stills.mjs:60","ref":"scripts/render_shots.mjs","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/scripts/render_shots.mjs#L134","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/alt-block-lines.tsx:40 and template/cards/corner-bracket-frame.tsx:41","ref":"template/cards/alt-block-lines.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/alt-block-lines.tsx#L40","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/alt-block-lines.tsx:42 and template/cards/bar-chart-growth.tsx:52","ref":"template/cards/alt-block-lines.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/alt-block-lines.tsx#L42","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/alt-block-lines.tsx:99 and template/cards/danmu-bubble-praise.tsx:92","ref":"template/cards/alt-block-lines.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/alt-block-lines.tsx#L99","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/alt-block-lines.tsx:101 and template/cards/gooey-morph.tsx:133","ref":"template/cards/alt-block-lines.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/alt-block-lines.tsx#L101","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/bar-chart-growth.tsx:40 and template/cards/behind-text-title.tsx:28","ref":"template/cards/bar-chart-growth.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/bar-chart-growth.tsx#L40","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/bar-chart-growth.tsx:42 and template/cards/chapter-progress-list.tsx:43","ref":"template/cards/bar-chart-growth.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/bar-chart-growth.tsx#L42","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/bar-chart-growth.tsx:45 and template/cards/number-slab-pop.tsx:39","ref":"template/cards/bar-chart-growth.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/bar-chart-growth.tsx#L45","weight":0.3},{"kind":"duplicate-code","description":"6+ duplicated lines: template/cards/bar-chart-growth.tsx:47 and template/cards/keyword-pop-highlight.tsx:31","ref":"template/cards/bar-chart-growth.tsx","url":"https://github.com/Vincentwei1021/video-talkcraft/blob/501708856fbfdf596e27dba3200e12cf95da57be/template/cards/bar-chart-growth.tsx#L47","weight":0.3}],"data":{},"error":null},{"analyzer":"qual-lint","pillar":"quality","status":"ok","tool_version":"opengrep 1.33.1; rules f1d2b562b414","metrics":{"findings":384.0,"weighted_findings":129.25,"scanned_lines":59517.0,"category:best-practice":36.0,"category:correctness":348.0},"findings":[{"rule_id":"opengrep/python.lang.correctness.tempfile.tempfile-without-flush","severity":"high","message":"Using 'file.name' without '.flush()' or '.close()' may cause an error because the file may not exist when 'file.name' is used. Use '.flush()' or close the file before using 'file.name'.","path":"scripts/tts_fishaudio.py","line":274,"fingerprint":"python.lang.correctness.tempfile.tempfile-without-flush:scripts/tts_fishaudio.py:274"},{"rule_id":"opengrep/python.lang.correctness.tempfile.tempfile-without-flush","severity":"high","message":"Using 'f.name' without '.flush()' or '.close()' may cause an error because the file may not exist when 'f.name' is used. Use '.flush()' or close the file before using 'f.name'.","path":"scripts/voice_trim.py","line":571,"fingerprint":"python.lang.correctness.tempfile.tempfile-without-flush:scripts/voice_trim.py:571"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/beat_gap_check.py","line":31,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/beat_gap_check.py:31"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/beat_gap_check.py","line":32,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/beat_gap_check.py:32"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/beat_lint.py","line":62,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/beat_lint.py:62"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/beat_lint.py","line":63,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/beat_lint.py:63"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/beat_lint.py","line":64,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/beat_lint.py:64"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/beat_lint.py","line":69,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/beat_lint.py:69"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/freeze_probe.py","line":95,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/freeze_probe.py:95"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/motion_check.py","line":192,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/motion_check.py:192"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/preflight.py","line":710,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/preflight.py:710"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/qa_extract.py","line":39,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/qa_extract.py:39"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/qa_extract.py","line":52,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/qa_extract.py:52"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"scripts/remotion_project_config.mjs","line":21,"fingerprint":"javascript.lang.best-practice.lazy-load-module:scripts/remotion_project_config.mjs:21"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"scripts/remotion_project_config.mjs","line":22,"fingerprint":"javascript.lang.best-practice.lazy-load-module:scripts/remotion_project_config.mjs:22"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"scripts/remotion_project_config.mjs","line":48,"fingerprint":"javascript.lang.best-practice.lazy-load-module:scripts/remotion_project_config.mjs:48"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"scripts/remotion_project_config.mjs","line":65,"fingerprint":"javascript.lang.best-practice.lazy-load-module:scripts/remotion_project_config.mjs:65"},{"rule_id":"opengrep/javascript.lang.best-practice.lazy-load-module","severity":"medium","message":"Lazy loading can complicate code bundling if care is not taken, also `require`s are run synchronously by Node.js. If they are called from within a function, it may block other requests from being handled at a more critical time. The best practice is to `require` modules at the beginning of each file","path":"scripts/remotion_project_config.mjs","line":89,"fingerprint":"javascript.lang.best-practice.lazy-load-module:scripts/remotion_project_config.mjs:89"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/sfx_check.py","line":70,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/sfx_check.py:70"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/sfx_check.py","line":89,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/sfx_check.py:89"},{"rule_id":"opengrep/python.lang.best-practice.unspecified-open-encoding","severity":"medium","message":"Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding=\"utf-8\").","path":"scripts/sfx_check.py","line":123,"fingerprint":"python.lang.best-practice.unspecified-open-encoding:scripts/sfx_check.py:123"},{"rule_id":"opengrep/python.requests.best-practice.use-raise-for-status","severity":"medium","message":"There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a 500 error while you're only checking for a 401.","path":"scripts/tts_fishaudio.py","line":107,"fingerprint":"python.requests.best-practice.use-raise-for-status:scripts/tts_fishaudio.py:107"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/cards/line-chart-story-draw.tsx","line":327,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/cards/line-chart-story-draw.tsx:327"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/cards/line-chart-story-draw.tsx","line":333,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/cards/line-chart-story-draw.tsx:333"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/components/theme-frame.tsx","line":166,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/components/theme-frame.tsx:166"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/components/theme-frame.tsx","line":167,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/components/theme-frame.tsx:167"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/components/theme-frame.tsx","line":168,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/components/theme-frame.tsx:168"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/components/theme-frame.tsx","line":169,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/components/theme-frame.tsx:169"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"template/components/theme-frame.tsx","line":212,"fingerprint":"typescript.react.best-practice.react-props-spreading:template/components/theme-frame.tsx:212"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-in-state","severity":"medium","message":"Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state.","path":"workbench/src/App.tsx","line":34,"fingerprint":"typescript.react.best-practice.react-props-in-state:workbench/src/App.tsx:34"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/cards/gen/line-chart-story-draw.tsx","line":346,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/cards/gen/line-chart-story-draw.tsx:346"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/cards/gen/line-chart-story-draw.tsx","line":351,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/cards/gen/line-chart-story-draw.tsx:351"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/cards/koubo-skill.tsx","line":97,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/cards/koubo-skill.tsx:97"},{"rule_id":"opengrep/javascript.lang.correctness.no-stringify-keys","severity":"medium","message":"JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead.","path":"workbench/src/overridesSync.ts","line":26,"fingerprint":"javascript.lang.correctness.no-stringify-keys:workbench/src/overridesSync.ts:26"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/panels/LibraryPanel.tsx","line":141,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/panels/LibraryPanel.tsx:141"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/preview/Composition.tsx","line":86,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/preview/Composition.tsx:86"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/preview/Composition.tsx","line":107,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/preview/Composition.tsx:107"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-spreading","severity":"medium","message":"It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious actors a way to inject unexpected attributes.","path":"workbench/src/preview/Composition.tsx","line":110,"fingerprint":"typescript.react.best-practice.react-props-spreading:workbench/src/preview/Composition.tsx:110"},{"rule_id":"opengrep/typescript.react.best-practice.react-props-in-state","severity":"medium","message":"Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state.","path":"workbench/src/timeline/ContextMenu.tsx","line":24,"fingerprint":"typescript.react.best-practice.react-props-in-state:workbench/src/timeline/ContextMenu.tsx:24"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"gallery/build.mjs","line":190,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:gallery/build.mjs:190"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"gallery/build.mjs","line":433,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:gallery/build.mjs:433"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"gallery/build.mjs","line":442,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:gallery/build.mjs:442"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"gallery/build.mjs","line":442,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:gallery/build.mjs:442"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"gallery/build.mjs","line":442,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:gallery/build.mjs:442"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"gallery/build.mjs","line":559,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:gallery/build.mjs:559"},{"rule_id":"opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command","severity":"low","message":"Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may use a variable that starts with an underscore e.g. $_X instead of ","path":"runtime/check-runtime.sh","line":50,"fingerprint":"bash.lang.correctness.unquoted-variable-expansion-in-command:runtime/check-runtime.sh:50"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`const` is assigned twice; the first assignment is useless","path":"scripts/render_shots.mjs","line":131,"fingerprint":"javascript.lang.correctness.useless-assignment:scripts/render_shots.mjs:131"},{"rule_id":"opengrep/javascript.lang.correctness.useless-assignment","severity":"low","message":"`const` is assigned twice; the first assignment is useless","path":"scripts/render_stills.mjs","line":57,"fingerprint":"javascript.lang.correctness.useless-assignment:scripts/render_stills.mjs:57"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/alt-block-lines.tsx","line":61,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/alt-block-lines.tsx:61"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/alt-block-lines.tsx","line":61,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/alt-block-lines.tsx:61"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/bar-chart-growth.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/bar-chart-growth.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/bar-chart-growth.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/bar-chart-growth.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/bar-chart-growth.tsx","line":79,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/bar-chart-growth.tsx:79"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/bed-echo-blur.tsx","line":48,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/bed-echo-blur.tsx:48"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/bed-echo-blur.tsx","line":48,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/bed-echo-blur.tsx:48"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/behind-text-title.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/behind-text-title.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/behind-text-title.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/behind-text-title.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/black-slam-transition.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/black-slam-transition.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/black-slam-transition.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/black-slam-transition.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/callout-line-label.tsx","line":67,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/callout-line-label.tsx:67"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/callout-line-label.tsx","line":67,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/callout-line-label.tsx:67"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/caret-wipe-transition.tsx","line":67,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/caret-wipe-transition.tsx:67"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/caret-wipe-transition.tsx","line":67,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/caret-wipe-transition.tsx:67"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chapter-progress-list.tsx","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chapter-progress-list.tsx:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chapter-progress-list.tsx","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chapter-progress-list.tsx:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chapter-title-card.tsx","line":83,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chapter-title-card.tsx:83"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chapter-title-card.tsx","line":83,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chapter-title-card.tsx:83"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chart-grow.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chart-grow.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chart-grow.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chart-grow.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chat-gpt.tsx","line":109,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chat-gpt.tsx:109"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chat-gpt.tsx","line":109,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chat-gpt.tsx:109"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chat-message-flow.tsx","line":110,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chat-message-flow.tsx:110"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chat-message-flow.tsx","line":110,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chat-message-flow.tsx:110"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chevron-lower-third.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chevron-lower-third.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chevron-lower-third.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chevron-lower-third.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chip-grid-single-select.tsx","line":58,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chip-grid-single-select.tsx:58"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/chip-grid-single-select.tsx","line":58,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/chip-grid-single-select.tsx:58"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/claude-code.tsx","line":111,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/claude-code.tsx:111"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/claude-code.tsx","line":111,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/claude-code.tsx:111"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/color-slam-beat-card.tsx","line":73,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/color-slam-beat-card.tsx:73"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/color-slam-beat-card.tsx","line":73,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/color-slam-beat-card.tsx:73"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/converging-arrows.tsx","line":141,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/converging-arrows.tsx:141"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/converging-arrows.tsx","line":141,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/converging-arrows.tsx:141"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/corner-bracket-frame.tsx","line":63,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/corner-bracket-frame.tsx:63"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/corner-bracket-frame.tsx","line":63,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/corner-bracket-frame.tsx:63"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/count-badge-title.tsx","line":73,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/count-badge-title.tsx:73"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/count-badge-title.tsx","line":73,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/count-badge-title.tsx:73"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/countdown-arc-scatter.tsx","line":65,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/countdown-arc-scatter.tsx:65"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/countdown-arc-scatter.tsx","line":65,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/countdown-arc-scatter.tsx:65"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/crash-zoom-punch.tsx","line":52,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/crash-zoom-punch.tsx:52"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/crash-zoom-punch.tsx","line":52,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/crash-zoom-punch.tsx:52"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/cursor-actor-demo.tsx","line":92,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/cursor-actor-demo.tsx:92"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/cursor-actor-demo.tsx","line":92,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/cursor-actor-demo.tsx:92"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/cursor-locked-zoom.tsx","line":45,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/cursor-locked-zoom.tsx:45"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/cursor-locked-zoom.tsx","line":45,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/cursor-locked-zoom.tsx:45"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/danmu-bubble-praise.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/danmu-bubble-praise.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/danmu-bubble-praise.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/danmu-bubble-praise.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/doc-park-left-pill-deal.tsx","line":53,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/doc-park-left-pill-deal.tsx:53"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/doc-park-left-pill-deal.tsx","line":53,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/doc-park-left-pill-deal.tsx:53"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":104,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:104"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":104,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:104"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":134,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:134"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":179,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:179"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":208,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:208"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":212,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:212"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":226,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:226"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/douyin-follow-card.tsx","line":241,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/douyin-follow-card.tsx:241"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/error-retype.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/error-retype.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/error-retype.tsx","line":49,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/error-retype.tsx:49"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/evidence-scroll-tour.tsx","line":62,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/evidence-scroll-tour.tsx:62"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/evidence-scroll-tour.tsx","line":62,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/evidence-scroll-tour.tsx:62"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/filmstrip-conveyor.tsx","line":64,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/filmstrip-conveyor.tsx:64"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/filmstrip-conveyor.tsx","line":64,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/filmstrip-conveyor.tsx:64"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/flying-words.tsx","line":48,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/flying-words.tsx:48"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/flying-words.tsx","line":48,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/flying-words.tsx:48"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/focus-dim-spotlight.tsx","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/focus-dim-spotlight.tsx:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/focus-dim-spotlight.tsx","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/focus-dim-spotlight.tsx:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/gallery-wall-dolly.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/gallery-wall-dolly.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/gallery-wall-dolly.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/gallery-wall-dolly.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/glass-code-walk.tsx","line":106,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/glass-code-walk.tsx:106"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/glass-code-walk.tsx","line":106,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/glass-code-walk.tsx:106"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/gooey-morph.tsx","line":80,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/gooey-morph.tsx:80"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/gooey-morph.tsx","line":80,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/gooey-morph.tsx:80"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/grid-to-hero.tsx","line":60,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/grid-to-hero.tsx:60"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/grid-to-hero.tsx","line":60,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/grid-to-hero.tsx:60"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/hand-drawn-ellipse.tsx","line":70,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/hand-drawn-ellipse.tsx:70"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/hand-drawn-ellipse.tsx","line":70,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/hand-drawn-ellipse.tsx:70"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/highlighter-sweep.tsx","line":32,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/highlighter-sweep.tsx:32"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/highlighter-sweep.tsx","line":32,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/highlighter-sweep.tsx:32"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/host-card-glass-board.tsx","line":60,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/host-card-glass-board.tsx:60"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/host-card-glass-board.tsx","line":60,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/host-card-glass-board.tsx:60"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/host-shrink-to-chip.tsx","line":64,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/host-shrink-to-chip.tsx:64"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/host-shrink-to-chip.tsx","line":64,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/host-shrink-to-chip.tsx:64"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/impact-open-title.tsx","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/impact-open-title.tsx:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/impact-open-title.tsx","line":77,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/impact-open-title.tsx:77"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/info-card-assemble.tsx","line":46,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/info-card-assemble.tsx:46"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/info-card-assemble.tsx","line":46,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/info-card-assemble.tsx:46"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/info-term-card.tsx","line":67,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/info-term-card.tsx:67"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/info-term-card.tsx","line":67,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/info-term-card.tsx:67"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/ink-underline.tsx","line":127,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/ink-underline.tsx:127"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/ink-underline.tsx","line":127,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/ink-underline.tsx:127"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/keyword-pop-highlight.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/keyword-pop-highlight.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/keyword-pop-highlight.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/keyword-pop-highlight.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/lead-word-zoom-assemble.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/lead-word-zoom-assemble.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/lead-word-zoom-assemble.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/lead-word-zoom-assemble.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-by-line-slide.tsx","line":65,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-by-line-slide.tsx:65"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-by-line-slide.tsx","line":65,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-by-line-slide.tsx:65"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-carry-transition.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-carry-transition.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-carry-transition.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-carry-transition.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-carry-transition.tsx","line":79,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-carry-transition.tsx:79"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-chart-story-draw.tsx","line":128,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-chart-story-draw.tsx:128"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/line-chart-story-draw.tsx","line":128,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/line-chart-story-draw.tsx:128"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/logo-enter.tsx","line":47,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/logo-enter.tsx:47"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/logo-enter.tsx","line":47,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/logo-enter.tsx:47"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/long-take-world.tsx","line":43,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/long-take-world.tsx:43"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/long-take-world.tsx","line":43,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/long-take-world.tsx:43"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/lower-third-nameplate.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/lower-third-nameplate.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/lower-third-nameplate.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/lower-third-nameplate.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/magnifier-detail.tsx","line":42,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/magnifier-detail.tsx:42"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/magnifier-detail.tsx","line":42,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/magnifier-detail.tsx:42"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/map-route-pin.tsx","line":103,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/map-route-pin.tsx:103"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/map-route-pin.tsx","line":103,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/map-route-pin.tsx:103"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/media-pop-in.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/media-pop-in.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/media-pop-in.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/media-pop-in.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/metric-with-sparkline.tsx","line":74,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/metric-with-sparkline.tsx:74"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/metric-with-sparkline.tsx","line":74,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/metric-with-sparkline.tsx:74"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/motion-blur-slam-in.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/motion-blur-slam-in.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/motion-blur-slam-in.tsx","line":55,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/motion-blur-slam-in.tsx:55"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/news-card-desk.tsx","line":42,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/news-card-desk.tsx:42"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/news-card-desk.tsx","line":42,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/news-card-desk.tsx:42"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/number-counter.tsx","line":63,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/number-counter.tsx:63"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/number-counter.tsx","line":63,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/number-counter.tsx:63"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/number-slab-pop.tsx","line":65,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/number-slab-pop.tsx:65"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/number-slab-pop.tsx","line":65,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/number-slab-pop.tsx:65"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/numbered-step-stack.tsx","line":66,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/numbered-step-stack.tsx:66"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/numbered-step-stack.tsx","line":66,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/numbered-step-stack.tsx:66"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/orbit-drift.tsx","line":35,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/orbit-drift.tsx:35"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/orbit-drift.tsx","line":35,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/orbit-drift.tsx:35"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/outline-box-title.tsx","line":68,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/outline-box-title.tsx:68"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/outline-box-title.tsx","line":68,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/outline-box-title.tsx:68"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/overexpose-flip-transition.tsx","line":50,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/overexpose-flip-transition.tsx:50"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/overexpose-flip-transition.tsx","line":50,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/overexpose-flip-transition.tsx:50"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/parallel-items-with-host.tsx","line":83,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/parallel-items-with-host.tsx:83"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/parallel-items-with-host.tsx","line":83,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/parallel-items-with-host.tsx:83"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/particle-weld-transition.tsx","line":68,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/particle-weld-transition.tsx:68"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/particle-weld-transition.tsx","line":68,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/particle-weld-transition.tsx:68"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/pencil-sketch-draw.tsx","line":152,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/pencil-sketch-draw.tsx:152"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/pencil-sketch-draw.tsx","line":152,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/pencil-sketch-draw.tsx:152"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/per-character-rise.tsx","line":54,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/per-character-rise.tsx:54"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/per-character-rise.tsx","line":54,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/per-character-rise.tsx:54"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/pip-zoom-box.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/pip-zoom-box.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/pip-zoom-box.tsx","line":71,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/pip-zoom-box.tsx:71"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/pullback-cool-transition.tsx","line":48,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/pullback-cool-transition.tsx:48"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/pullback-cool-transition.tsx","line":48,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/pullback-cool-transition.tsx:48"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/push-through-transition.tsx","line":46,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/push-through-transition.tsx:46"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/push-through-transition.tsx","line":46,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/push-through-transition.tsx:46"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/quote-bracket-pull.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/quote-bracket-pull.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/quote-bracket-pull.tsx","line":59,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/quote-bracket-pull.tsx:59"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/quote-card.tsx","line":58,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/quote-card.tsx:58"},{"rule_id":"opengrep/javascript.lang.correctness.missing-template-string-indicator","severity":"low","message":"This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'?","path":"template/cards/quote-card.tsx","line":58,"fingerprint":"javascript.lang.correctness.missing-template-string-indicator:template/cards/quote-card.tsx:58"}],"evidence":[],"data":{},"error":null},{"analyzer":"qual-testing","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:has_tests":1.0,"check:test_ratio":0.035,"check:ci_present":1.0,"check:ci_runs_tests":0.0,"check:ci_runs_lint":0.0,"check:tests_cochange":0.6792,"test_lines":1042.0,"source_lines":59517.0,"test_ratio":0.0175,"ci_files":1.0,"cochange_share":0.1698,"cochange_commits":53.0},"findings":[],"evidence":[{"kind":"ci","description":"CI config: .github/workflows/deploy-pages.yml","ref":".github/workflows/deploy-pages.yml","url":null,"weight":0.0}],"data":{"test_commands":[],"lint_commands":[]},"error":null},{"analyzer":"qual-docs","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:readme":1.0,"check:license":1.0,"check:contributing":0.0,"check:changelog":0.0,"readme_lines":211.0},"findings":[],"evidence":[{"kind":"docs","description":"README.md","ref":"README.md","url":null,"weight":0.0},{"kind":"docs","description":"LICENSE","ref":"LICENSE","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"qual-type-safety","pillar":"quality","status":"ok","tool_version":null,"metrics":{"check:strict_config":0.9123,"check:low_escape_density":1.0,"escapes":0.0,"escapes_per_kloc":0.0},"findings":[],"evidence":[{"kind":"typing","description":"TypeScript strict type checking: runtime/tsconfig.json","ref":"runtime/tsconfig.json","url":null,"weight":0.0}],"data":{},"error":null},{"analyzer":"x-blame","pillar":"ai_provenance","status":"ok","tool_version":"git-blame","metrics":{"ai_lines":58973.0,"other_lines":544.0,"files_blamed":388.0,"blame_failures":0.0,"quality:ai_findings":192.0,"quality:ai_per_kloc":3.256,"quality:other_findings":8.0,"quality:other_per_kloc":14.706,"quality:ratio":0.22,"security:ai_findings":15.0,"security:ai_per_kloc":0.254,"security:other_findings":0.0,"security:other_per_kloc":0.0},"findings":[],"evidence":[],"data":{"sampled":false,"comparable":true},"error":null}],"flags":["unreviewed-ai-risk"]}