painted-animation

Pass

Audited by Gen Agent Trust Hub on Sep 28, 2026

Risk Level: SAFECOMMAND_EXECUTIONDYNAMIC_EXECUTIONEXTERNAL_DOWNLOADSINDIRECT_PROMPT_INJECTION
Full Analysis
  • [COMMAND_EXECUTION]: The skill executes external commands to handle video and audio processing.
  • In scripts/beat_grid.py, subprocess.run is used to invoke ffmpeg for spectral analysis of audio files.
  • In template/render.mjs, spawn is used to call ffmpeg for encoding image sequences into MP4 videos and node to manage parallel worker processes.
  • These implementations use argument lists rather than shell strings, which is a safe practice that prevents shell injection attacks.
  • [DYNAMIC_EXECUTION]: The animation engine uses eval() in template/src/core.js within the headless Chrome environment. This is used to evaluate mathematical or helper-function expressions passed via the --crop-at command-line argument for camera tracking and review. Since this occurs in a sandboxed browser context driven by the user's agent, the security risk is minimal and serves a functional purpose.
  • [EXTERNAL_DOWNLOADS]: The skill manages several external dependencies and resources:
  • The scripts/new_project.sh script performs an npm install to download p5, p5.brush, and puppeteer-core from the official NPM registry.
  • The template/studio.html file loads fonts from fonts.googleapis.com (Google Fonts), a well-known and trusted service.
  • The scripts/beat_grid.py documentation mentions a dependency on numpy via pip.
  • [INDIRECT_PROMPT_INJECTION]: The skill handles untrusted external data which could serve as an attack surface for indirect prompt injection:
  • Ingestion points: Song lyrics (text), LRC files (timings), and audio files provided by the user or fetched by the agent.
  • Boundary markers: None explicitly defined in the prompts; the data is interpolated directly into JavaScript scene files (src/karaoke.js).
  • Capability inventory: The skill can write files to the local system, execute ffmpeg commands, and control a headless Chrome instance.
  • Sanitization: There is no explicit sanitization of lyric content before interpolation into the renderer's JavaScript context. However, the risk is mitigated by the fact that the resulting code is executed in a local development environment and typically reviewed by the agent before rendering.
  • [FILE_SYSTEM_ACCESS]: The renderer (render.mjs) manages extensive file system operations, including creating project directories, writing temporary JPEG/PNG frames, and outputting final MP4 videos. These operations are restricted to the project directory and the user-specified output paths.
Audit Metadata
Risk Level
SAFE
Analyzed
Sep 28, 2026, 06:38 PM