other
- Location
scripts/video.sh:28- Finding
Unconditional Promotional Content Injection into Generated Output
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This is mostly a local video-script template skill, but one bundled script can read or overwrite Markdown files outside its storage folder and logs user inputs locally without clear disclosure.
Review before installing. It appears local and does not fetch remote code or use credentials, but avoid using the save/show features with untrusted names and be aware it can keep local history of script topics. The publisher should fix path validation, disclose or disable logging, remove unsolicited branding from generated output, and make the documented launcher match the shipped files.
scripts/video.sh:28Unconditional Promotional Content Injection into Generated Output
scripts/script.sh:215Path Traversal in Script Save Function Allows Filesystem Writes Outside the Storage Directory
scripts/script.sh:222Path Traversal in Script Display Function Allows Reads Outside the Storage Directory
The code generally aligns with the broad domain of video script creation, so its primary purpose is related to the description. However, the declared description significantly overstates what the tool actually does. The implementation is mostly a template-based command-line helper for outlines, intros, hooks, CTAs, timelines, briefs, thumbnails, and simple local storage. It does not implement complete script generation beyond reusing the outline command for 'script', does not implement real storyboard/shotlist generation, does not provide series planning or performance/data review, and does not generate titles/tags as advertised. Additionally, it has undeclared local persistence features: saving user content to disk, listing/showing saved scripts, and logging history. These are not malicious, but they are capabilities not reflected in the description. Therefore, this is a description-behavior mismatch.
The code is related to video scripting, so it is not wholly unrelated, but the implemented behavior is much narrower than the declared description. It only supports three commands: 'outline' for a fixed generic outline template, 'hook' for a few static hook templates, and 'thumbnail' for thumbnail tips. The declared purpose promises substantially broader functionality including full scripts, CTA generation, storyboards, series planning, and data review/analysis, none of which are implemented beyond minimal template text. This is a material description-behavior mismatch due to overstated capabilities and a different practical scope.
The manifest description says the skill should be used for 'any platform' and lists many broad content-creation scenarios, ending with a generic trigger note. This makes invocation boundaries unclear and increases the chance the skill is selected for common creative-writing requests beyond a narrowly defined command or context.
The 'Use when' list ends with '任何与短视频脚本创作相关的任务' ('any task related to short-video script creation'), which is an open-ended catch-all rather than a specific trigger boundary. This provides little distinction between when this skill should activate and when a general-purpose writing skill should handle the request.
This file presents all instructions, examples, and the command usage note exclusively in Chinese. Under the policy, forcing a specific language without user opt-in can be a natural-language policy violation unless the locale restriction is explicitly documented and justified, which it is not here.
This code file contains natural-language strings and descriptions entirely in Chinese, beginning with the skill description on L003. The skill does not offer any user opt-in or locale selection despite supporting a global platform like YouTube, which can violate a language/locale policy requiring user choice rather than a forced language.
The documentation says script <topic> [duration] produces a 'Full script with timestamps', creating a clear expectation of richer functionality. However, the dispatcher routes script to cmd_outline, which only emits a generic outline rather than a full script, so the documented intent contradicts actual behavior.
The manifest describes generating complete video scripts, titles, tags, CTAs, storyboards, series planning, and performance/data review across many use cases. In reality, the code only supports three simple commands: a fixed outline template, fixed hook templates, and a thumbnail checklist, with no implementation for titles, tags, storyboards, series planning, or data review.
The natural-language description is predominantly Chinese and centers on Chinese platforms and Chinese scripting terminology, but does not explicitly state that language choice will follow user preference. This can create a locale/language policy concern if the skill defaults users into a specific language without offering a choice.
The help output at L888 documents hook as generating 5 opening hooks, but the command dispatcher at L960-L961 calls gen_hooks_10, whose docstring and implementation generate 10 hooks. This is an active documentation-to-code contradiction rather than a mere omission.
The inline usage documentation claims shotlist <script-file> will 'Generate shot list from script'. In reality, the command handler only echoes 'Analyze script and generate shot list' and performs no analysis or generation, which is an active mismatch between documented intent and implementation.
The documentation states export <name> <format> supports exporting content in txt|md|csv formats. The dispatcher instead only echoes a string indicating the format and does not read a saved script or produce any exported output, contradicting the command description.
cmd_save writes arbitrary user-provided stdin to a path derived from the user-controlled name argument with no validation or confirmation. This enables path traversal such as ../../... to overwrite files writable by the current user outside the intended data directory, which is more dangerous in an agent/skill context where parameters may be supplied indirectly.
The _log function silently records command names and user-supplied arguments to history.log without disclosure or consent. In this skill's context, topics and script names may contain sensitive project ideas, campaign plans, or personal data, so unexpected persistence increases privacy and data-retention risk.
The skill is presented primarily as a video script generator, with examples centered on scripts, hooks, outlines, CTAs, planning, and analytics. The code includes a separate thumbnail-design checklist feature, which is adjacent to content creation but not clearly described as part of the operational scope implemented by this script.
The file’s user-facing instructional content is written in Chinese, including the title and all tips, with no indication that the user can choose another language. Under the stated policy, forcing a specific language without user opt-in is a natural-language policy concern.
No suspicious patterns detected.