Back to skill

Security audit

hyperframes-core

Security checks for vulnerabilities and agentic risk

Overview

The skill is mostly a coherent HyperFrames video-building guide, but it needs review because its included packet script can read unintended Markdown files from crafted storyboard input and its documented commands run unpinned npm packages.

Review before installing. Prefer a patched version that validates blueprint IDs against a strict allowlist and verifies the resolved path stays inside the blueprint directory. Run HyperFrames through a project-local, lockfile-pinned binary instead of bare `npx hyperframes`, and avoid using untrusted STORYBOARD.md files or blueprint values until that boundary check exists. Be aware that the workflow can spawn workers, run previews/renders, and remember a limited set of confirmed preferences through the related media-use tooling.

Vulnerability Patterns
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
Findings (3)

T09 · Insecure Skill Coding Practices

Warning
Location
scripts/lib/frame-packets-core.mjs:90
Finding
Storyboard-Controlled Blueprint Path Traversal<![CDATA[ ## Vulnerability Details **File Location**: `scripts/lib/frame-packets-core.mjs:90-119` **Vulnerability Type**: Path traversal and unauthorized local file read **Risk Level**: Medium ### Complete Code Snippet ```js export function blueprintId(block) { const raw = field(block, "blueprint"); if (!raw) return null; const id = raw.replace(/\s*\([^)]*\)\s*$/, "").trim(); return id && id.toLowerCase() !== "compose" ? id : null; } export function resourceSections(block, { animationDir, ruleIds, frameId }) { let sections = ""; const blueprint = blueprintId(block); if (blueprint) { const blueprintsDir = join(animationDir, "blueprints"); const path = join(blueprintsDir, `${blueprint}.md`); // A blueprint that resolved to nothing used to inline an empty string, so the // packet shipped without the one document the frame was designed against and // the run still reported success. Name it instead — but only when the library // is actually there to be named against. The animation skill installs on // demand, so an absent blueprints/ is a missing install, not a bad id, and it // degrades with a warning exactly like an absent rules/ (see knownRuleIds). if (!existsSync(blueprintsDir)) { console.warn( `frame-packets: no blueprints dir at ${blueprintsDir} — packets will inline no blueprint`, ); } else if (!existsSync(path)) { throw new Error(`${frameId ?? "frame"}: blueprint "${blueprint}" has no file at ${path}`); } else { sections += selectedFile(path, `Selected blueprint: ${blueprint}`); } } ``` ### Technical Analysis The `blueprint` value is extracted from a storyboard block and used as part of a filesystem path without validating that it is a simple blueprint identifier. In particular, the code does not reject absolute paths, path separators, or `..` traversal components. `join(blueprintsDir, `${blueprint}.md`)` normalizes traversal sequences. Consequently, a valu ...[truncated 1811 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Restrict blueprint identifiers to a conservative allowlist, for example: ```js if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(id)) { throw new Error(`Invalid blueprint id: ${id}`); } ``` 2. Resolve and verify directory containment before any file operation: ```js const root = realpathSync(blueprintsDir); const candidate = resolve(root, `${blueprint}.md`); const relative = relative(root, candidate); if (relative.startsWith("..") || isAbsolute(relative)) { throw new Error("Blueprint path escapes the blueprint directory"); } ``` 3. Prefer selecting from the directory-derived list of known blueprint IDs rather than accepting arbitrary path-like input. 4. If symbolic links are allowed in the blueprint directory, compare real paths after resolving the target to prevent symlink-based escapes. 5. Add tests covering `../`, absolute paths, nested separators, encoded separators, Windows separators, and symlinks. 6. Treat inlined storyboard and blueprint content as untrusted data when constructing child-agent prompts; explicitly delimit it and instruct workers not to interpret embedded content as higher-priority instructions. ]]>

T08 · Insecure Dependencies

Warning
Location
SKILL.md:91
Finding
Unpinned Package Execution Through npx<![CDATA[ ## Vulnerability Details **File Location**: `SKILL.md:91-94` **Additional Locations**: `references/production-loop.md:9-16`, `references/tailwind.md:107-123` **Vulnerability Type**: Unsafe third-party package resolution and execution **Risk Level**: Medium ### Complete Code Snippet ```markdown ## Validation Use `hyperframes-cli` for command details - [ ] `npx hyperframes check` passes (0 findings across lint, runtime, layout, motion, and contrast) - [ ] Projects with sub-compositions: `npx hyperframes snapshot --at <midpoints>` and eyeball each frame - [ ] `npx hyperframes preview --background` for review (the user can edit anything in Studio's timeline, and the server survives the invoking command) - [ ] `npx hyperframes render` only after the user approves ``` The same unsafe execution pattern is also documented elsewhere: ```bash npx hyperframes check npx hyperframes render . --workers 1 --quality draft --output tailwind-proof.mp4 ``` ### Technical Analysis The documented commands invoke `npx hyperframes` without requiring a locally installed, lockfile-controlled version and without using `--no-install`. When a suitable local executable is unavailable, `npx` may resolve and download a package from the configured npm registry and immediately execute it. This makes the executed implementation dependent on mutable registry state, local npm configuration, and package resolution at the time of invocation. The Skill does not specify an exact reviewed package version, integrity metadata, a trusted registry, or a local-only execution requirement. Although the package name is not a demonstrated typosquat, the execution pattern creates a supply-chain exposure because externally resolved package code runs with the invoking user's privileges. ### Attack Path 1. A user or agent follows the Skill's validation instructions. 2. The project does not contain a trusted local `hyperframes` executable, or local resolution otherwise fails. 3. `npx` querie ...[truncated 824 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Declare an exact reviewed `hyperframes` version in the project manifest and commit the corresponding lockfile. 2. Install dependencies through a reproducible, integrity-verifying command such as `npm ci`. 3. Invoke only the local executable: ```bash npx --no-install hyperframes check npx --no-install hyperframes preview --background npx --no-install hyperframes render ``` Alternatively, use a package-manager command that is guaranteed not to download missing packages. 4. Fail with a clear message if the expected local binary is absent rather than downloading it automatically. 5. Pin and document the trusted npm registry, especially in automated or enterprise environments. 6. Apply the same change consistently to `SKILL.md`, `references/production-loop.md`, `references/tailwind.md`, and every other command example. 7. Consider verifying package provenance, signatures, and lockfile integrity in CI before allowing rendering or preview commands to run. ]]>

T03 · Remote Payload Retrieval and Execution

Note
Location
references/minimal-composition.md:12
Finding
Remote JavaScript Execution Without Subresource Integrity<![CDATA[ ## Vulnerability Details **File Location**: `references/minimal-composition.md:12` **Additional Location**: `references/composition-patterns.md:46` **Vulnerability Type**: Remote payload retrieval and browser execution **Risk Level**: Low ### Complete Code Snippet ```html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=1920, height=1080" /> <title>Minimal HyperFrames Composition</title> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> ``` The modular composition example repeats the same dependency: ```html <!doctype html> <html lang="en"> <head> <meta charset="UTF-8" /> <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script> <style> ``` ### Technical Analysis The templates instruct users and agents to execute JavaScript directly from jsDelivr. The dependency version is pinned to `3.14.2`, which limits ordinary version drift, but the script tag contains no Subresource Integrity hash. The browser therefore trusts whatever bytes the remote endpoint returns for that URL. This introduces a runtime dependency on external infrastructure and conflicts with the project's deterministic-render guidance, which states that required assets should be inlined or pre-bundled rather than fetched during rendering. The repository does not itself contain a malicious remote payload. The vulnerability is the absence of cryptographic verification and local bundling for code executed in generated compositions. ### Attack Path 1. A user or agent copies one of the documented composition templates. 2. The composition is opened for preview or rendering with network access. 3. The browser requests GSAP from `cdn.jsdelivr.net`. 4. If the CDN, upstream package artifact, DNS/network trust path, or serving account is compromised, altered JavaScript is returned. 5. Because no `integrity` attribute is present, the brows ...[truncated 626 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Prefer a reviewed local GSAP asset committed to the project or installed through a lockfile-controlled dependency. 2. Reference the local file from generated compositions so rendering does not require network access: ```html <script src="./assets/vendor/gsap.min.js"></script> ``` 3. If a CDN must be supported, publish and verify a Subresource Integrity hash: ```html <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js" integrity="sha384-<verified-hash>" crossorigin="anonymous" ></script> ``` 4. Generate the hash from independently verified release bytes rather than trusting the CDN response used at runtime. 5. Apply a restrictive Content Security Policy that limits scripts to approved local assets or explicitly trusted hashed resources. 6. Update both `references/minimal-composition.md` and `references/composition-patterns.md` so new projects do not inherit the unsafe pattern. 7. Add an offline validation test ensuring previews and renders succeed with network access disabled. ]]>
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Supply ChainUnpinned Dependencies, External Script Fetching, Obfuscated Code
  • Memory PoisoningPersistent Context Injection, Context Window Stuffing, Memory Manipulation
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
Findings (87)

Ae1

High
Category
analysis-evasion
Content
| `references/data-attributes.md` | look up any `data-*` (root / clip / sub-comp host / legacy aliases); use `class="clip"` |
Confidence
100% confidence
Finding
Referenced artifact was not completely inspected

Hidden Instructions

High
Category
Prompt Injection
Content
<html>
  <head>
    <meta charset="UTF-8" />
    <!-- head is metadata for the source file only; the runtime ignores it -->
  </head>
  <body>
    <template>
Confidence
70% confidence
Finding
Hidden instructions were detected in comments or invisible text. These could contain malicious directives. Manual review is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
## References

| File                                    | Read it to…                                                                                                                                                                        |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `references/minimal-composition.md`     | start from the smallest renderable composition skeleton                                                                                                                            |
| `references/composition-patterns.md`    | choose monolithic vs modular; structure a modular `index.html`; pick a sub-comp archetype                                                                                          |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| File                                    | Read it to…                                                                                                                                                                        |
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `references/minimal-composition.md`     | start from the smallest renderable composition skeleton                                                                                                                            |
| `references/composition-patterns.md`    | choose monolithic vs modular; structure a modular `index.html`; pick a sub-comp archetype                                                                                          |
| `references/data-attributes.md`         | look up any `data-*` (root / clip / sub-comp host / legacy aliases); use `class="clip"`                                                                                            |
| `references/tracks-and-clips.md`        | understand what `data-track-index` does (and does not) control, z-index, time a clip relative to another                                                                           |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `references/minimal-composition.md`     | start from the smallest renderable composition skeleton                                                                                                                            |
| `references/composition-patterns.md`    | choose monolithic vs modular; structure a modular `index.html`; pick a sub-comp archetype                                                                                          |
| `references/data-attributes.md`         | look up any `data-*` (root / clip / sub-comp host / legacy aliases); use `class="clip"`                                                                                            |
| `references/tracks-and-clips.md`        | understand what `data-track-index` does (and does not) control, z-index, time a clip relative to another                                                                           |
| `references/creator-editing-recipes.md` | copy truthful cut/trim/reorder/retime/freeze/camera/mask/crossfade/audio editing recipes and their limits                                                                          |
| `references/sub-compositions.md`        | wire a sub-composition (host attrs, `<template>`, per-instance vars) and animate inside it                                                                                         |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `references/data-attributes.md`         | look up any `data-*` (root / clip / sub-comp host / legacy aliases); use `class="clip"`                                                                                            |
| `references/tracks-and-clips.md`        | understand what `data-track-index` does (and does not) control, z-index, time a clip relative to another                                                                           |
| `references/creator-editing-recipes.md` | copy truthful cut/trim/reorder/retime/freeze/camera/mask/crossfade/audio editing recipes and their limits                                                                          |
| `references/sub-compositions.md`        | wire a sub-composition (host attrs, `<template>`, per-instance vars) and animate inside it                                                                                         |
| `references/variables-and-media.md`     | declare variables; place `<video>`/`<audio>`, set volume, trim                                                                                                                     |
| `references/determinism-rules.md`       | build a seekable timeline; determinism bans; layout / text fit                                                                                                                     |
| `references/full-screen-motion.md`      | author full-frame motion with shared backgrounds                                                                                                                                   |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `references/tracks-and-clips.md`        | understand what `data-track-index` does (and does not) control, z-index, time a clip relative to another                                                                           |
| `references/creator-editing-recipes.md` | copy truthful cut/trim/reorder/retime/freeze/camera/mask/crossfade/audio editing recipes and their limits                                                                          |
| `references/sub-compositions.md`        | wire a sub-composition (host attrs, `<template>`, per-instance vars) and animate inside it                                                                                         |
| `references/variables-and-media.md`     | declare variables; place `<video>`/`<audio>`, set volume, trim                                                                                                                     |
| `references/determinism-rules.md`       | build a seekable timeline; determinism bans; layout / text fit                                                                                                                     |
| `references/full-screen-motion.md`      | author full-frame motion with shared backgrounds                                                                                                                                   |
| `references/storyboard-format.md`       | author a `STORYBOARD.md` plan (+ the parsed manifest)                                                                                                                              |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `references/tracks-and-clips.md`        | understand what `data-track-index` does (and does not) control, z-index, time a clip relative to another                                                                           |
| `references/creator-editing-recipes.md` | copy truthful cut/trim/reorder/retime/freeze/camera/mask/crossfade/audio editing recipes and their limits                                                                          |
| `references/sub-compositions.md`        | wire a sub-composition (host attrs, `<template>`, per-instance vars) and animate inside it                                                                                         |
| `references/variables-and-media.md`     | declare variables; place `<video>`/`<audio>`, set volume, trim                                                                                                                     |
| `references/determinism-rules.md`       | build a seekable timeline; determinism bans; layout / text fit                                                                                                                     |
| `references/full-screen-motion.md`      | author full-frame motion with shared backgrounds                                                                                                                                   |
| `references/storyboard-format.md`       | author a `STORYBOARD.md` plan (+ the parsed manifest)                                                                                                                              |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `references/variables-and-media.md`     | declare variables; place `<video>`/`<audio>`, set volume, trim                                                                                                                     |
| `references/determinism-rules.md`       | build a seekable timeline; determinism bans; layout / text fit                                                                                                                     |
| `references/full-screen-motion.md`      | author full-frame motion with shared backgrounds                                                                                                                                   |
| `references/storyboard-format.md`       | author a `STORYBOARD.md` plan (+ the parsed manifest)                                                                                                                              |
| `references/review-loop.md`             | run the plan → sketch → build review passes on a live board — shared by every storyboard-planning workflow                                                                         |
| `references/production-loop.md`         | take an approved plan to a delivered video — the stage dependencies (audio, frames, assembly, transitions, captions, verify, deliver) a freeform build follows directly            |
| `references/brief-contract.md`          | the brief's ground rules — mode derivation (collaborative / autonomous), shared field registry, question invariants (the asking itself lives in `/hyperframes` → the intent layer) |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `references/script-format.md`           | author the optional `SCRIPT.md` locked narration                                                                                                                                   |
| `references/subagent-dispatch.md`       | map subagent dispatch verbs (parallel fan-out / background / wait) to your harness                                                                                                 |
| `references/frame-worker-core.md`       | the shared frame-worker role contract — each narrative workflow's packet builder prepends it to that workflow's `sub-agents/frame-worker.md` delta                                 |
| `references/tailwind.md`                | work in a Tailwind v4 project (`init --tailwind`; runtime contract differs from Studio's v3)                                                                                       |

For animation runtime specifics (GSAP API, Lottie, Three.js, etc.) go to `hyperframes-animation` → `adapters/<runtime>.md`.
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The skill instructs users to run `npx hyperframes check` without pinning a version. `npx` resolves and may download the latest package at execution time, which creates a supply-chain risk: a compromised or maliciously updated package could execute arbitrary code on the user's machine. In a skill that operationalizes CLI execution, this guidance materially increases risk.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The command `npx hyperframes snapshot --at <midpoints>` is unpinned, so it can fetch whatever package version is current when executed. That exposes users to remote code execution through package substitution, account compromise, or a malicious upstream release. Because this is an explicit operational step in the validation workflow, the risk is practical rather than theoretical.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
`npx hyperframes preview --background` is another unpinned package execution path. If the package registry entry or dependency chain is compromised, following this documentation could run attacker-controlled code during preview setup. The danger is amplified because users are likely to copy/paste these commands directly from the skill.

Rp1

Medium
Category
MCP Rug Pull
Confidence
91% confidence
Finding
The skill recommends `npx hyperframes render` without a version pin, which can cause execution of an unreviewed package version at render time. Since CLI packages can run lifecycle scripts and arbitrary Node.js code, this presents a credible supply-chain and code-execution risk on the operator's system. The skill context makes this more dangerous because render is a natural final step users are expected to execute.

Whitespace Padding

Medium
Category
Prompt Injection
Content
Three terms describe different concerns. Do not substitute one for another.

| Term         | Values                          | Owns                                                                                          |
| ------------ | ------------------------------- | --------------------------------------------------------------------------------------------- |
| `flow`       | `automation` or `companion`     | Who drives execution. `companion` always executes in `/general-video`.                        |
| `storyboard` | `yes` or `no`                   | Whether the live board is used for plan and layout review.                                    |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
Three terms describe different concerns. Do not substitute one for another.

| Term         | Values                          | Owns                                                                                          |
| ------------ | ------------------------------- | --------------------------------------------------------------------------------------------- |
| `flow`       | `automation` or `companion`     | Who drives execution. `companion` always executes in `/general-video`.                        |
| `storyboard` | `yes` or `no`                   | Whether the live board is used for plan and layout review.                                    |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
Three terms describe different concerns. Do not substitute one for another.

| Term         | Values                          | Owns                                                                                          |
| ------------ | ------------------------------- | --------------------------------------------------------------------------------------------- |
| `flow`       | `automation` or `companion`     | Who drives execution. `companion` always executes in `/general-video`.                        |
| `storyboard` | `yes` or `no`                   | Whether the live board is used for plan and layout review.                                    |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
Ask only fields used by the selected route. Route entries identify their must-have questions and deferred questions. Values inferred or derived by policy are stated in the brief, not asked.

| Field         | Meaning                                              | Policy                                                                                                                                              |
| ------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `flow`        | Who drives execution                                 | Ask at the end of intent capture when the route supports both flows. An autonomous signal answers it.                                               |
| `storyboard`  | Whether to review on the live board                  | Ask before `flow` when the route supports a board. A storyboard request answers it.                                                                 |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `destination` | Where the video will play                            | Infer from the request. Ask only when unknown and the answer changes aspect, type scale, or composition.                                            |
| `aspect`      | Canvas size                                          | Derive from destination: social feed → `1080x1080`; TikTok/Reels/Shorts → `1080x1920`; YouTube/website/desktop → `1920x1080`. State the derivation. |
| `length`      | Target duration                                      | Let the workflow recommend a range supported by the material; include the reason.                                                                   |
| `language`    | Narration and caption language                       | Use the user's language and state it.                                                                                                               |
| `audience`    | Who will watch                                       | Infer when clear. Ask only when a different answer changes the story or terminology.                                                                |
| `message`     | The one thing the video must communicate             | Derive and echo one sentence. Do not storyboard until this is clear.                                                                                |
| `angle`       | Route-specific story shape                           | Recommend one route-defined option with a reason.                                                                                                   |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `length`      | Target duration                                      | Let the workflow recommend a range supported by the material; include the reason.                                                                   |
| `language`    | Narration and caption language                       | Use the user's language and state it.                                                                                                               |
| `audience`    | Who will watch                                       | Infer when clear. Ask only when a different answer changes the story or terminology.                                                                |
| `message`     | The one thing the video must communicate             | Derive and echo one sentence. Do not storyboard until this is clear.                                                                                |
| `angle`       | Route-specific story shape                           | Recommend one route-defined option with a reason.                                                                                                   |
| `narration`   | `yes`, `minimal`, or `no`, plus route-specific modes | Follow the selected route.                                                                                                                          |
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `language`    | Narration and caption language                       | Use the user's language and state it.                                                                                                               |
| `audience`    | Who will watch                                       | Infer when clear. Ask only when a different answer changes the story or terminology.                                                                |
| `message`     | The one thing the video must communicate             | Derive and echo one sentence. Do not storyboard until this is clear.                                                                                |
| `angle`       | Route-specific story shape                           | Recommend one route-defined option with a reason.                                                                                                   |
| `narration`   | `yes`, `minimal`, or `no`, plus route-specific modes | Follow the selected route.                                                                                                                          |

### Remembered defaults
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `audience`    | Who will watch                                       | Infer when clear. Ask only when a different answer changes the story or terminology.                                                                |
| `message`     | The one thing the video must communicate             | Derive and echo one sentence. Do not storyboard until this is clear.                                                                                |
| `angle`       | Route-specific story shape                           | Recommend one route-defined option with a reason.                                                                                                   |
| `narration`   | `yes`, `minimal`, or `no`, plus route-specific modes | Follow the selected route.                                                                                                                          |

### Remembered defaults
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `workflow`                                                                | the executing workflow (companion runs record `general-video`)                                                             | `faceless-explainer`        |
| `flow`                                                                    | `automation` — the matched workflow's pipeline · `companion` — co-creation in `/general-video`                             | `automation`                |
| `storyboard`                                                              | `yes` — plan, sketches, and build reviewed on the live board (`review-loop.md`) · `no` — one shot from the confirmed brief | `yes`                       |
| `message`                                                                 | the ONE thing the video must communicate                                                                                   | `"Ship it in an afternoon"` |
| `destination` / `aspect` / `language` / `audience` / `length` / `angle` … | the registry fields this route confirmed                                                                                   | —                           |

**Which keys are memory.** Only the preference-backed subset — `destination`, `aspect`, `language`, `flow`, `storyboard`, `voice`, `style_preset` — is recorded with `media-use` → `scripts/prefs.mjs record` (the store rejects any other key). `style_preset` is stored per workflow: record it with `--workflow <w>` (the store refuses it bare — a look confirmed for one genre is not a default for the others). `message`, `audience`, `length`, `angle` live in the frontmatter only: they describe this video, not the user.
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Whitespace Padding

Medium
Category
Prompt Injection
Content
| `workflow`                                                                | the executing workflow (companion runs record `general-video`)                                                             | `faceless-explainer`        |
| `flow`                                                                    | `automation` — the matched workflow's pipeline · `companion` — co-creation in `/general-video`                             | `automation`                |
| `storyboard`                                                              | `yes` — plan, sketches, and build reviewed on the live board (`review-loop.md`) · `no` — one shot from the confirmed brief | `yes`                       |
| `message`                                                                 | the ONE thing the video must communicate                                                                                   | `"Ship it in an afternoon"` |
| `destination` / `aspect` / `language` / `audience` / `length` / `angle` … | the registry fields this route confirmed                                                                                   | —                           |

**Which keys are memory.** Only the preference-backed subset — `destination`, `aspect`, `language`, `flow`, `storyboard`, `voice`, `style_preset` — is recorded with `media-use` → `scripts/prefs.mjs record` (the store rejects any other key). `style_preset` is stored per workflow: record it with `--workflow <w>` (the store refuses it bare — a look confirmed for one genre is not a default for the others). `message`, `audience`, `length`, `angle` live in the frontmatter only: they describe this video, not the user.
Confidence
70% confidence
Finding
Large whitespace padding was detected (a block of blank lines or a long run of spaces). This can push injected instructions below or to the right of the visible area so a human reviewer never sees them while the agent still reads them. Manual review of the hidden content is recommended.

Context Window Stuffing

Medium
Category
Memory Poisoning
Content
Every renderable composition needs one root element:

| Attribute                    | Required      | Meaning                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ---------------------------- | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data-composition-id`        | Yes           | Unique ID. Must match the animation registry key on `window.__timelines`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
...[truncated 25 chars]
Confidence
80% confidence
Finding
Skill attempts to fill the context window with filler content, displacing legitimate instructions and safety constraints. This can degrade agent performance or bypass safety boundaries.

Static analysis

No suspicious patterns detected.