Avatar Video
calesthio/OpenMontage
Create AI avatar videos with precise control over avatars, voices, scripts, scenes, and backgrounds using HeyGen's v2 API.
Auto-fix lint and formatting, then report types and tests. An agent skill from ffroliva/gflow-cli.
$ npx skills add ffroliva/gflow-cli --skill check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ffroliva/gflow-cli check --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/check .claude/skills/check && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "check" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/check into .claude/skills/check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ffroliva/gflow-cli/tree/develop/skills/checkType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ffroliva/gflow-cli --skill check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ffroliva/gflow-cli check --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/check .agents/skills/check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "check" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/check into .agents/skills/check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ffroliva/gflow-cli --skill check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ffroliva/gflow-cli check --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/check .cursor/skills/check && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "check" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/check into .cursor/skills/check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ffroliva/gflow-cli.git --path skills/check--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ffroliva/gflow-cli --skill check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ffroliva/gflow-cli check --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/check .gemini/skills/check && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "check" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/check into .gemini/skills/check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ffroliva/gflow-cli checkInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ffroliva/gflow-cli --skill check -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/check .github/skills/check && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "check" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/check into .github/skills/check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ffroliva/gflow-cli --skill check -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ffroliva/gflow-cli check --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ffroliva/gflow-cli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/check .opencode/skills/check && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "check" agent skill from https://github.com/ffroliva/gflow-cli/tree/develop/skills/check into .opencode/skills/check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "check", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
checkAuto-fix lint and formatting, then report types and tests. An agent skill from ffroliva/gflow-cli.
Check is an agent skill from ffroliva/gflow-cli. Auto-fix lint and formatting, then report types and tests. Run before every commit.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Media & Creative, covering AI video generation. It works with Model Context Protocol. The repository describes itself as: Drive Google Flow from the command line: Veo video and Imagen images, scripted, batched and pipeline-ready. Ships an MCP server so coding agents can drive it too, giving you and… The licence is MIT.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 4f44ac8. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
uvruffuvxgitpythonFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv, uvx and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Check loads about 2.6k tokens when it runs. Until then it costs about 22 tokens; SKILL.md has 1,322 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ffroliva/gflow-cli at commit 4f44ac8, republished under its MIT licence (© ffroliva). 1,322 words, ~2,578 tokens.
.claude/skills/check/SKILL.md (or your agent's skills folder)./gflow:check — Quality gatesRun in order. Stop and report if a step fails after the fix pass.
These steps mirror the CI test job in .github/workflows/ci.yml in the same order. Any command that CI runs as a verify (--check) is run here as a verify too — see step 4.
1. Repo hygiene + doc links + website-docs PII guard (read-only — CI runs all three; a broken doc link or a private identifier in the published website/docs/ mirror fails CI)
PYTHONUTF8=1 uv run python scripts/ci/check_repo_hygiene.py
PYTHONUTF8=1 uv run python scripts/ci/check_doc_links.py
PYTHONUTF8=1 uv run python scripts/ci/check_website_docs_pii.py
PYTHONUTF8=1 uv run python scripts/ci/generate_website_docs.py --check
PYTHONUTF8=1 uv run python scripts/ci/check_council_memory.pygenerate_website_docs.py --check fails on either half of the published-site contract:
DRIFT: — canonical docs/ changed but the website/docs/ mirror was not
regenerated. Fix with uv run python scripts/ci/generate_website_docs.py and
stage website/docs/.NAV-ORPHAN: — a page is published but no nav: entry in
website/mkdocs.yml points at it, so it is live but unreachable. Add the
entry under the right nav section.1b. Surface blast radius — MCP↔CLI parity and the other mirrors (read-only; MANDATORY whenever the change touches a CLI command, option, flag help text, exit code, or user-facing error string)
tests/mcp/test_cli_parity.py is a command-level gate only: it asserts every CLI leaf
has a mapped MCP tool or a stated exemption. It is green while a new --option goes
unmirrored, and green while an MCP docstring asserts a restriction the CLI no longer has.
That semantic drift is invisible to every automated gate in this file, so it is checked here
by hand — deliberately, because the alternative is shipping it.
PYTHONUTF8=1 uv run python -m pytest -q tests/mcp/test_cli_parity.py tests/mcp/test_server.pyThen enumerate the blast radius. For the CLI symbol(s) you changed (option name, model alias, exit code, capability), grep the whole repo and confirm every hit is either updated or still true:
# substitute the flag / alias / capability word you changed
grep -rn --exclude-dir=.git --exclude-dir=__pycache__ --exclude-dir=tmp "<your-symbol>" \
src/gflow_cli/mcp/ docs/ website/docs/ README.md KNOWN_ISSUES.md CHANGELOG.md skills/Six axes, in blast-radius order. Tick each or state why it does not apply — "I did not touch a CLI surface" is a valid answer for the whole step; silence is not.
A. Execution paths — a request is built in THREE places, not one.
| Hop | File | Fails as |
|---|---|---|
| CLI | cli_video.py / cli_image.py dataclass → request | option parsed but never passed |
| MCP direct | mcp/tools.py tool signature → payload dict | param accepted, dropped before the queue |
| MCP queued | mcp/tools.py payload keys → worker/codec.py decode → request | silent no-op — accepted, queued, never read |
The third hop is the dangerous one: the payload key the tool writes and the key the codec
reads are matched by string, so a mismatch type-checks, lints, and passes tests while doing
nothing. This has shipped before — a dead output param the queue never read survived until
a pre-release audit (#495). Verify the key names literally line up end to end:
grep -n "<param>" src/gflow_cli/mcp/tools.py src/gflow_cli/worker/codec.pyB. MCP surface truth — mcp/tools.py tool signature and every behavioural claim in
its docstring; docs/MCP.md parameter prose. tests/mcp/test_cli_parity.py's
CLI_TO_MCP / _MCP_EXEMPT only when adding a NEW leaf.
C. Agent-facing surfaces — read by Codex / Cursor / Aider, not just by us, and covered by
no test at all: skills/gflow-cli/SKILL.md, the AGENTS.md "Command surface" bullet,
README.md, docs/INDEX.md.
D. Error and exit-code surface — errors.py _default_remediation and the class
docstring, EXIT_CODE_MAP, and the exit-code table in docs/USAGE.md. When a raise site is
deleted, re-derive what the remaining sites are: a remediation string that still describes a
removed case actively misleads.
grep -rn "raise <ErrorClass>" src/gflow_cli/ # must match what the docs table claimsE. Declarative / template surfaces — defaults baked into files users copy:
cli_movie.py's manifest template, movie_manifest.py, chain_manifest.py,
.env.template for any env var, and the capability-reporting commands gflow models and
gflow doctor.
F. Docs + published mirror — docs/USAGE.md command section, website/docs/
(regenerate; step 1 catches staleness but never wrongness), KNOWN_ISSUES.md claims about
the surface, CHANGELOG.md under ### Changed whenever behaviour a script could branch on
moves.
Why this step exists. In #626 the CLI stopped rejecting omni-flash --end-frame while
mcp/tools.py and docs/MCP.md went on telling agents the combination was rejected. Lint,
types, the full 2065-test suite, and the parity gate were green throughout, because none of
them can see a docstring that lies. The AGENTS.md prose saying "keep them in sync" had been
there the whole time and did not fire — the project's own lesson, again: wire the rule, or it
is a wish.
2. Auto-fix lint and formatting (rewrites files in place)
uv run ruff check --fix src tests
uv run ruff format src testsReport which files were modified. If this rewrote anything, those files are part of the change — stage them. CI does not run the auto-fix; it runs the --check verify in step 4 against the committed tree, so an uncommitted reformat is a red CI build.
3. Repeat lint/format ONLY on the files you touched? No — always run repo-wide. The whole-tree src tests scope in step 2/4 is deliberate: a latent format failure in a file your change merely imports (e.g. a BDD step module) will fail CI even if your own edits are clean. Never narrow the scope to "just my files."
4. Verify — the EXACT CI gate (non-mutating; must be clean before you commit/push)
uv run ruff check src tests
uv run ruff format --check src testsThese are byte-for-byte what CI runs (ci.yml "Lint" + "Format check"). If --check exits non-zero here, step 2's rewrites are uncommitted — stage them and re-run. Never push while this is red: the test job dies at the format step before pytest, which also makes SonarCloud report new_coverage=0% (no coverage XML is produced). A green /gflow:check that skips this verify is how PR #269 shipped a format failure past an 8-agent council.
4c. Duplication proxy for the SonarCloud gate (report only — offline approximation)
SonarCloud's quality gate fails on new_duplicated_lines_density > 3%, and it only
runs in CI — a copy-pasted option stack or body block sails through ruff/pyright/pytest
and then reddens the branch analysis after merge (this killed the develop build in the
v0.48.0 cycle). Approximate the CPD locally, zero new dependencies:
uvx pylint --disable=all --enable=duplicate-code --min-similarity-lines=10 src/gflow_cliAny duplicate-code finding inside code you are adding or touching is a fix-now
signal (extract a shared helper/decorator before pushing). Findings in untouched files
are pre-existing — Sonar's gate measures new code only, so report them but do not
block on them. This is a proxy, not the gate: SonarCloud in CI remains authoritative.
5. Type check (report only — cannot auto-fix)
uv run pyright src6. Tests + coverage (report only)
uv run python -m pytest -q --cov=gflow_cli --cov-fail-under=80ruff check + ruff format --check both clean (this is the CI gate; a non-zero here is a blocking finding, not a warning)file:line referencesUpon successful completion of all quality gates:
/gflow:branch-review)."/gflow:pr-council-review <N>) or Phase 8 Live Verification (/gflow:live-verify)."Ruff fix and format may rewrite multiple files. Always git diff before staging.
Pyright errors and test failures require manual intervention — do not attempt silent workarounds.
If the coverage run crashes the current MCP/sandbox session with Connection closed, re-run the
same marker-filtered suite in smaller chunks without coverage and rely on CI for the coverage XML.
Project pytest defaults already exclude e2e and live; those markers are explicit,
credit-spending gates and must be requested with a separate -m e2e / -m live command.
Windows agent sessions: uv run pytest is unreliable — invoke
.venv/Scripts/python.exe -m pytest directly, and prefix Python invocations with
PYTHONUTF8=1 when output contains non-ASCII. The unscoped full-coverage sweep
(step 6) can OOM locally (exit 137 / SIGKILL): run the suites scoped to the dirs you
touched and trust CI for the full coverage gate — a green full-suite CI run on the
same tree (e.g. the just-merged PR) satisfies step 6 for release purposes.
The OOM allowance applies to step 6 (coverage) ONLY. Step 4 (ruff check + ruff format --check src tests) is cheap, never OOMs, and must ALWAYS be run repo-wide
against the exact tree you are about to push — no scoping, no skipping.
Offline-green here is not done-done for a change touching a generation code path (t2i/i2i/
i2v/t2v/r2v) — see /gflow:live-verify Part 2 before claiming that kind of feature complete.
© ffroliva, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/check of ffroliva/gflow-cli.
Open the folder on GitHubat commit 4f44ac8
Check next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Check this skillffroliva/gflow-cli | 261 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Avatar Videocalesthio/OpenMontage | 65k | — | ~1.6k | Automated safety check: Pass | AGPL-3.0 | |
| Create Videocalesthio/OpenMontage | 65k | — | ~1.3k | Automated safety check: Pass | AGPL-3.0 | |
| Cassette Video EditCassette-Editor/oh-my-cassette | 157 | 1 repos | ~3.4k | Automated safety check: Pass | MIT | |
| Bailian Media Generationmodelstudioai/cli | 541 | — | ~2k | Automated safety check: Pass | Apache-2.0 | |
| Gemini Interactions APIAyuilos/Miffan | 182 | — | ~4.6k | Automated safety check: Pass | AGPL-3.0 |
calesthio/OpenMontage
Create AI avatar videos with precise control over avatars, voices, scripts, scenes, and backgrounds using HeyGen's v2 API.
calesthio/OpenMontage
Create videos from a text prompt using HeyGen's Video Agent.
Cassette-Editor/oh-my-cassette
Edit, trim, cut, caption, subtitle, reframe, combine, add background music to, or export video, audio, and image files through Cassette.
modelstudioai/cli
Chinese-language entry point into Alibaba Cloud Bailian's image, video and speech generation and understanding, routed through separate image, video, speech and vision commands.
Ayuilos/Miffan
A skill your agent uses when writing code that calls the Gemini API for text generation, multi-turn chat, multimodal understanding, image generation, video generation, streaming responses…
BarneyD66/clipmivo-tools
Create and manage AI video tasks through ClipmivoAI using its MCP server, CLI or REST API.
ffroliva/gflow-cli
A skill your agent uses when the user wants to drive Google Flow (Veo image-to-video, Veo text-to-video, Imagen / Nano Banana image generation) from the terminal or a script — including…
ffroliva/gflow-cli
A skill your agent uses when triaging a GitHub issue for gflow-cli — a reporter's bug claim, a freshly-filed issue, or deciding whether and how to act on one.
ffroliva/gflow-cli
A skill your agent uses when an assessed gflow-cli issue (verdict CONFIRMED-BUG or LIKELY-BUG) has localized, verifiable scope and should be driven to a fix.
ffroliva/gflow-cli
Two-part gate for gflow-cli feature/fix work. An agent skill from ffroliva/gflow-cli.
ffroliva/gflow-cli
A skill your agent uses when the user wants a finished video out of gflow rather than a single clip — a scripted scene, a talking-head or dialogue piece, an explainer, a product montage, a story…
ffroliva/gflow-cli
Use before cutting any gflow-cli release or after a major documentation change — systematic council-driven audit that combines a mechanical 7-section checklist with a 3-agent parallel review…
Works with
Categories
Auto-fix lint and formatting, then report types and tests. An agent skill from ffroliva/gflow-cli. Check is an agent skill from ffroliva/gflow-cli. Auto-fix lint and formatting, then report types and tests.
Check fits situations like: tasks that involve AI video generation.
Run `npx skills add ffroliva/gflow-cli --skill check -a claude-code`. Or copy the skill folder (skills/check in ffroliva/gflow-cli) into .claude/skills/check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ffroliva/gflow-cli --skill check -a codex`. Or copy the skill folder (skills/check in ffroliva/gflow-cli) into .agents/skills/check in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ffroliva/gflow-cli --skill check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/check, .gemini/skills/check, .github/skills/check and .opencode/skills/check in your project.
Going by SKILL.md and its folder, Check needs the command-line tools its instructions call (uv, ruff, uvx, git and python). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, uvx and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Check is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Check: Avatar Video (calesthio/OpenMontage, 65k stars), Create Video (calesthio/OpenMontage, 65k stars), Cassette Video Edit (Cassette-Editor/oh-my-cassette, 157 stars) and Bailian Media Generation (modelstudioai/cli, 541 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ffroliva (a GitHub user) maintains it in ffroliva/gflow-cli, which has 261 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 7, 2026.
Source: ffroliva/gflow-cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.