Atlas / Skills / martindelophy / ai-video-editor

ai-video-editorBLOCK

skills/martindelophy/ai-video-editor

Open-source, local-first video editor where creators and AI agents edit the same real timeline.

Verdict
BLOCK
Grade
D
Trust score
61 /100
Version
—
Hosts
5 documented
License
MIT
Stars
924
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

English | 中文 | 日本語 | 한국어 | Español | Français | Deutsch | Português | ไทย | Tiếng Việt | Русский

[](https://video-editor.ai-creator.top/) [](LICENSE) [](https://skills.sh/MartinDelophy/ai-video-editor) [](CONTRIBUTING.md) [](https://linux.do)

Create with Anna

Try the Anna edition for AI-assisted editing and project continuity:

  • Describe your edit to Anna, review a plan based on your brief and clip metadata, then apply supported clip ordering and simple 1× video trims.
  • Projects and media save automatically to Anna cloud storage and can resume with the same Anna account in another browser. Local project checkpoints provide an additional recovery option.
  • Refine the editable multi-track timeline, add AI voiceovers and manual captions, and export MP4 using an available browser encoder.

This desktop preview plans from metadata, without analyzing video frames or audio; local AI features depend on the Anna container’s capabilities.

→ Try Timeline Studio on Anna

Responsible use of deep synthesis

This tool uses deep-synthesis technology and is intended solely fo

Read from source at commit c66af3fa18e4OBSERVED · 2026-10-12
Advertisement
02

Install

Commands as the repository documents them. They are shown, not run.

git clone https://github.com/MartinDelophy/ai-video-editor.git
npm install
npx skills add MartinDelophy/ai-video-editor --skill edit-timeline-studio
git clone https://github.com/MartinDelophy/ai-video-editor.git
npm install
npx skills add MartinDelophy/ai-video-editor --skill edit-timeline-studio
03

Host compatibility

What the documentation claims. We have not run a compatibility test.

HostStatusNotes
claude-codementioned
codexmentioned
copilotmentioned
cursormentioned
gemini-climentioned
04

What it tells the agent

The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.

---
name: develop-timeline-studio-plugin
description: Design, evaluate, implement, or review image and video generation connectors for Timeline Studio. Use when adding a provider plugin, extracting the generation plugin host or registry, or checking a connector against Timeline Studio's authentication, output, localization, and My assets contract. Do not use for ordinary video editing or Codex plugin packaging.
---

# Develop Timeline Studio generation plugins

Build a source-integrated generation connector that remains isolated from Timeline Studio's editing core and returns real downloadable media to My assets.

## Start with the contract

Read [../../docs/generation-plugin-development.md](../../docs/generation-plugin-development.md) completely before designing or changing a connector. Treat it as the source of truth for provider eligibility, runtime classes, manifest and adapter shapes, security, localization, output normalization, and completion criteria.

Also read the repository's `AGENTS.md` and inspect the current implementations in:

- `src/components/GenerationPlugins.jsx`
- `src/hooks/useGenerationPlugins.js`

Do not assume that an external installable plugin runtime already exists. Current plugins are reviewed source integrations. If the shared registry and host described by the contract are absent, make only the bounded extraction required for the requested provider and preserve existing provider behavior.

## Decide before implementing

Use the provider's current official documentation to establish:

- a stable task/result API or owned browser SDK;
- automatic retrieval of every generated image or video;
- authentication and credential ownership;
- browser and CORS requirements;
- real job, progress, error, and cancellation semantics;
- temporary-output lifetime, cost, region, and account constraints.

Reject a generic embed or manual result-URL workflow. Stop when the provider requires a developer secret in browser code or lacks a safe automatic output route. State the exact missing capability rather than simulating it.

## Preserve the host boundary

- Put provider transport and response parsing in an isolated adapter.
- Register identity and capabilities through one declarative manifest.
- Let the host own concurrency, cancellation arbitration, media validation, object URLs, notifications, and My assets commits.
- Never let a provider mutate the timeline or receive broad editor state.
- Download and decode output bytes before reporting completion.
- Import all declared outputs, not only the first.
- Use provider-backed progress or an indeterminate state; never fabricate percentages.
- Keep authentication, connection, running, cancelled, complete, and error states honest.

## Product and security requirements

- Completed media goes to My assets without automatic timeline insertion.
- Provider-managed browser sessions may remain inside the provider SDK boundary.
- Developer-owned secrets require a secure backend connection layer.
- Loopback plugins accept only `localhost`, `127.0.0.1`, or `::1` and must validate endpoint and CORS before showing connected.
- Do not recommend LAN exposure or wildcard CORS.
- Localize provider-specific copy directly in `zh`, `en`, `ja`, `ko`, `es`, `fr`, `de`, `pt`, `th`, `vi`, and `ru`.
- Convert raw transport failures into localized, actionable errors without leaking secrets.

## Finish visibly

Exercise the real states the provider supports, then run `npm run lint`, `npm run typecheck`, and `npm run build`. Do not add persistent test harnesses or test media to the product repository. Update maintained README project-update sections only after the connector actually ships.

In the final handoff, report the provider class, authentication boundary, supported modes, cancellation truth, output-download behavior, files changed, and validation results. Call out any capability that remains unavailable instead of presenting it as implemented.
05

Trust audit

BLOCKgrade D · trust 61/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryWARN
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (10 observation(s))
Shell
declared (8 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (25)

HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
scripts/export_joyvasa_runtime.py:40
template = pickle.load(handle)
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
MEDIUMInventory / provenance · inv.binary · CWE-1104
public/assets/effects/models/selfie_segmenter.tflite
selfie_segmenter.tflite
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
skills/edit-timeline-studio/scripts/setup-host.mjs:111
"        importlib.import_module(item)",
MEDIUMCode injection · code.dynamic_import · CWE-78, CWE-94, CWE-95
skills/edit-timeline-studio/scripts/setup-host.mjs:165
"        module = importlib.import_module(item['import'])",
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
scripts/serve-liveportrait-models.mjs:35
process.stdout.write(`LivePortrait model server: http://127.0.0.1:${port}/\n`);
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/components/GenerationPlugins.jsx:244
const [endpoint, setEndpoint] = useStoredValue("timeline-studio-comfyui-endpoint", "http://127.0.0.1:8188");
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/components/GenerationPlugins.jsx:251
return <LocalConnectionView copy={copy} name="ComfyUI" tone="mint" Icon={PlugsConnected} connection={connection} endpoint={endpoint} setEndpoint={setEndpoint} defaultEndpoint="http://127.0.0.1:8188" o
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/components/GenerationPlugins.jsx:267
const [endpoint, setEndpoint] = useStoredValue("timeline-studio-webui-endpoint", "http://127.0.0.1:7860");
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/components/GenerationPlugins.jsx:285
return <LocalConnectionView copy={copy} name="Stable Diffusion WebUI" tone="blue" Icon={ImageSquare} connection={connection} endpoint={endpoint} setEndpoint={setEndpoint} defaultEndpoint="http://127.0
MEDIUMObfuscation / stealth · obf.homoglyph · CWE-506, CWE-94
src/i18nMessages.js:2697
"analyzeVisualSubject 需要非空图片 Blob。": "для анализаVisualSubject требуется непустой BLOB-объект изображения.",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/i18nCompletion.js:350
"ttsErrorGenerationFailed": "生成に失敗しました。もう一度やり直してください。",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/i18nCompletion.js:3725
"noRecordings": "Записей пока нет. Начните запись, и она будет добавлена в дорожку закадрового голоса.",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/i18nCompletion.js:3910
"ttsNoticeGenerated": "Озвучка сгенерирована и добавлена на временную шкалу.",
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierrc.json
.prettierrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
skills/edit-timeline-studio/mcp/server.mjs:70
const candidates = [configuredRoot, process.cwd(), resolve(SERVER_DIR, "../../..")].filter(Boolean);
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/plugins/generation/providers/comfyui/adapter.js:1
import { inspectImageBlob, inspectVideoBlob } from "../../host.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/plugins/generation/providers/comfyui/manifest.js:2
import { defineGenerationProvider } from "../../contract.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/plugins/generation/providers/puter/adapter.js:7
} from "../../host.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/plugins/generation/providers/puter/manifest.js:2
import { defineGenerationProvider } from "../../contract.js";
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
public/vendor/mediapipe/vision/vision_wasm_internal.js:8193
return atob(encodedStr);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
public/vendor/mediapipe/vision/vision_wasm_module_internal.js:8196
return atob(encodedStr);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
public/vendor/mediapipe/vision/vision_wasm_nosimd_internal.js:8193
return atob(encodedStr);
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
src/plugins/generation/host.js:87
const bytes = Uint8Array.from(atob(payload), (character) => character.charCodeAt(0));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@diffusionstudio/vits-web, @ffmpeg/core, @ffmpeg/ffmpeg, @ffmpeg/util, @heyputer/puter.js, @huggingface/transformers, @libav.js/variant-webcodecs, @mediabunny/aac-encoder
Why it matters. 27 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha c66af3fa18e4full audit observations/trust-audit/skill/martindelophy__ai-video-editor.json · Report an issue / request a re-scan
06

Audit history

Every audit this skill has had.

DateSourceVerdictGradeScoreChange
2026-10-12c66af3fa18e4BLOCKD61first audit
07

Questions

What does the ai-video-editor skill do?

Open-source, local-first video editor where creators and AI agents edit the same real timeline.

Is ai-video-editor safe to install?

No — not without reading the findings first. The audit graded it D (61/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.

What can ai-video-editor access on my machine?

The audit observed that it reaches the network, runs shell commands and reads or writes files. Each of those is consistent with what it says it does. Secrets in the source: none found.

Which assistants does ai-video-editor work with?

Its documentation mentions claude-code, codex, copilot, cursor and gemini-cli. That is what the text claims, not a compatibility test we ran.

How current is this page?

The grade is for one exact copy of the source (c66af3fa18e4), read on 2026-10-12. The repository is watched, and a new audit runs when it changes — this is the first audit.

Advertisement