Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add tubecreate/tubecli --skill media_librarygit clone --depth 1 https://github.com/tubecreate/tubecliWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/tubecreate/tubecli/media_library)<a href="https://agentmods.dev/skills/tubecreate/tubecli/media_library"><img src="https://agentmods.dev/badge/skills/tubecreate/tubecli/media_library/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/tubecreate/tubecli/media_library"><img src="https://agentmods.dev/badge/skills/tubecreate/tubecli/media_library.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Tool Misuse · line 30 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
- high Tool Misuse · line 33 Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).Fix: Validate all tool parameters against an allowlist. Reject dangerous parameter values (shell=True, --force, -rf /) and use safe defaults.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.00600 |
| Opus 5 | $0.00000 | $0.00300 |
| Sonnet 5 | $0.00000 | $0.00120 |
| Haiku 4.5 | $0.00000 | $0.00060 |
Grade A, and why
media_library scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 5d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 64 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Media Library
A shared bag of raw material — images, GIFs and videos — that every extension can draw from. The user gathers material once; extensions point at a collection by id and the machine picks a file.
Why it exists
Each extension used to grow its own private store, so the same picture had to be uploaded several times and fixing it in one place left the other copies stale. One library, many consumers.
Concepts
- Collection: a named bag. It has an
id(ASCII, immutable, used as the folder name) and a displaynamethat can be renamed freely — renaming never touches the folder. - File: an image, GIF or video inside a collection. Order is stable.
- Picking:
random(any file),cycle(walks the whole collection before repeating, so two consecutive uses do not collide),ai(the caller supplies the filename a model chose).
Endpoints
Prefix /api/v1/media. Page at /media-library.
| Route | What it does |
|---|---|
GET/POST /collections |
list, create |
GET/PUT/DELETE /collections/{cid} |
open, rename, remove |
POST /collections/{cid}/files |
upload one file (multipart file) |
POST /collections/{cid}/import |
copy a file already on disk, {path} |
GET/DELETE /collections/{cid}/files/{name} |
serve, remove |
POST /collections/{cid}/pick |
{mode, commit, file, kind} → one file |
GET /health |
how many collections and files, and where they live |
Using it from another extension
from tubecli.extensions import media_library
for c in media_library.collections():
print(c["id"], c["name"], c["count"])
path, why = media_library.pick_media("kho_avatar", mode="cycle", kind="image")
if path:
... # dùng file
else:
log.warning("kho rỗng: %s", why)
Import it lazily and tolerate its absence: an older TubeCLI may not have it, and a missing library should degrade one layer, not break the whole job.
When an agent uses this
Ask for a collection by name, then pick. Pictures come from the bag; text does not — write the words from the actual content, and let the machine draw them with real fonts. That split is the whole point: material is reused, wording is written fresh for each video.
What ships with it
16 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- __init__.py 1.8 KB runs code
- extension.py 2.0 KB runs code
- library.py 16 KB runs code
- locales/en.json 13 KB
- locales/es.json 14 KB
- locales/ja.json 16 KB
- locales/ko.json 15 KB
- locales/ru.json 18 KB
- locales/tr.json 13 KB
- locales/vi.json 13 KB
- locales/zh-TW.json 13 KB
- locales/zh.json 13 KB
- routes.py 7.7 KB runs code
- static/app.css 35 KB
- static/app.js 78 KB runs code
- static/index.html 14 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 5d ago First seen · 64 lines · 0 tokens per session scan A fedc34942865
media_library is a skill published in the GitHub repository tubecreate/tubecli (167 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 600 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-06.
Other skills, from other repositories
cloud_api
Manages cloud AI provider API keys for Gemini, OpenAI, Claude, DeepSeek, Grok.
multi_agents
Enables multi-agent collaboration through teams, task delegation, and coordinated workflows.
auth_manager
Manage OAuth credentials & tokens for Google, Facebook, TikTok.
Browser Automation
Core browser automation features including profile management, fingerprint spoofing, and AI interaction.
ollama_manager
Manages local Ollama AI models for agents to use without cloud API keys.
brandkit
Premium brand-kit image generation skill for creating high-end brand-guidelines boards, logo systems, identity decks, and visual-world presentations. Trained for minimalist, cinematic, editorial, dark-tech, luxury, cultural, security, gaming, developer-tool, and consumer-app brand systems. Optimized for intentional…