Agent skill

Cerul

by cerul-ai in cerul-ai/cerul

Search local videos by meaning, exact words or reference image, analyze scenes, and export clips using the cerul CLI.

Apache-2.0Auto-check: notesAI & LLM Engineering

Install Cerul

skills CLI
$ npx skills add cerul-ai/cerul --skill cerul -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cerul-ai/cerul cerul --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cerul-ai/cerul.git skills-src && mkdir -p .claude/skills && cp -r skills-src/prompts .claude/skills/cerul && rm -rf skills-src

Use ~/.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/

Facts

Skill name
cerul
GitHub stars
160
Token cost
~1.8k tokens
SKILL.md length
988 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
Apache-2.0

At a glance

Search local videos by meaning, exact words or reference image, analyze scenes, and export clips using the cerul CLI.

  • AI & LLM Engineering work in your project
  • SKILL.md covers Before anything else, Always pass --json, Workflows and Rules, plus 1 more section
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Cerul is an agent skill from cerul-ai/cerul. Search local videos by meaning, exact words or reference image, analyze scenes, and export clips using the cerul CLI.

Its SKILL.md is about 1.8k 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 AI & LLM Engineering. It works with Rust. The repository describes itself as: Open-source video processing core and CLI. Search and annotate local videos with your own model endpoints. The licence is Apache-2.0.

When your agent uses it

  • AI & LLM Engineering work in your project

Example prompts

  • “/cerul”

What it can do on your machine

Read from SKILL.md and the folder at commit 3698190. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Cerul loads about 1.8k tokens when it runs. Until then it costs about 31 tokens; SKILL.md has 988 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~31
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:28
    commit, or read an unrelated project's `.env`. When no key

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.

SKILL.md

The full file from cerul-ai/cerul at commit 3698190, republished under its Apache-2.0 licence (© cerul-ai). 988 words, ~1,793 tokens.

Download SKILL.mdSave it as .claude/skills/cerul/SKILL.md (or your agent's skills folder).
name
cerul
description
Search local videos by meaning, exact words or reference image, analyze scenes, and export clips using the cerul CLI.

Cerul

Cerul turns local video into searchable, annotated data using the user's own model endpoints. There is no account and no server to start: run the binary and read its output. Sidecar files beside each video are authoritative; search indexes are caches that rebuild from them without model calls.

Before anything else

Run cerul --version. If it is missing, follow the installation runbook at https://github.com/cerul-ai/cerul/blob/main/docs/agent-setup.md. Do not install Rust, Python, Ollama, or system FFmpeg for this workflow, and do not switch to a source build when a download fails; report the error instead.

cerul --json upgrade reports the newest published release and installs nothing. It replaces the program only with --yes, so ask the user before running cerul upgrade --yes: it changes which build answers every later command. A build too old for a flag you need is a reason to offer the upgrade, not to work around it.

Run cerul --json auth to see whether a key is available. It reports whether a key is saved or exported, never the value. Never echo a key, print part of it, write it to a log or a commit, or read an unrelated project's .env. When no key is available, ask the user to run cerul auth set in their own terminal, or to export the key themselves.

Always pass --json

--json is the machine contract, and it is the only mode to use:

  • stdout carries exactly one JSON object, printed when the command finishes.
  • stderr carries one JSON event per line while the command runs.
  • Nothing ever prompts. A missing argument returns invalid_arguments, not a question.

Exit codes: 0 success, 2 arguments or configuration, 3 unavailable dependency or capability, 4 execution failure, 5 cancelled, 6 partial success. Read the code as well as the output. Exit 6 is not success: part of the work finished and the rest did not.

Events on stderr:

  • progress counts units of work for one station.
  • annotation_progress reports annotation work units, cached units and phase; percentage is completed planned work, not model-internal progress.
  • checkpoint marks a window that is saved and will be reused after an interruption, so a rerun resumes rather than repeating it.
  • published marks a validated annotation file that now exists, with its record count and path. Only a published file is safe to read or train on.
  • log carries human-readable notices.

Commands can return exit 6 for partial results. Repeat the same command to reuse completed work; do not add --recompute unless fresh processing is intended.

Workflows

Preview any expensive command with --dry-run first. It writes nothing, calls no model, and asks for no credential.

Search a video. Indexing is required for search, and it sends media to the configured endpoints.

sh
cerul --json --dry-run index ./video.mp4
cerul --json index ./video.mp4
cerul --json search "a person picking up a cup" --in ./video.mp4
cerul --json search --text "ERROR 500"
cerul --json search "a person picking up a cup" --save ./clips

Result numbers are global, so cerul open 1 plays the first moment in the user's video player and cerul open 3 plays the third. score is a ranking similarity, not a probability that the moment is the right one; do not present it as a confidence or an accuracy.

Indexing builds video embeddings, OCR, and available speech/text search data. It does not call the vision model or generate scene descriptions, sections, or summaries. Use cerul analyze ./video.mp4 for scenes and an overview. Existing analysis and cached description vectors remain readable and searchable; indexing does not refresh them. Search suggestions reuse current evidence without model generation. Do not treat suggested queries as verified retrieval results.

sh
cerul --json status ./video.mp4 --timeline --type summary
cerul --json status ./video.mp4 --timeline --type scene

Visual descriptions, spoken words, and screen text have distinct provenance. Use scene evidence for what is visible, transcript evidence for what was said, and OCR for visible words. Sparse visual samples cannot establish exact motion boundaries, success, intent, or camera trajectories. Scene descriptions do not replace the task and action annotations below.

Show full SKILL.md (372 more words)Show less

Inspect performance. cerul --json diagnostics reads the latest index/analyze stage timings, request latency and cache counts. Stage wall times overlap; use invocation elapsed time for total throughput. This makes no model calls.

Analyze a video. No indexing step is needed.

sh
cerul --json analyze ./video.mp4
cerul --json --dry-run analyze ./videos/

Without options, returns scenes, chapters and an overview. Add --prompt "Question" for a focused answer, repeat --image ./reference.png for comparison images, and use --from 00:30 --to 01:10 for a half-open episode time range. No embeddings are generated. Focused answers use at most 120 sampled frames and valid cached in-range text; sparse samples cannot establish continuous motion or absence. Results include the actual sample timestamps, reference hashes and limitations. Reference images are not evidence of occurrence in the video.

--stream --json emits provisional analysis_delta NDJSON on stderr; stdout contains only the final structured report. Never treat a delta as validated evidence. Exit 6 and per-stream errors mean incomplete analysis. Cached answers emit one delta marked cached: true. Question-specific results preserve full video scene/overview records; --recompute refreshes the selected request. The fixed response schema is published; arbitrary user JSON schemas are not accepted. Preserve errors and coverage when interpreting results.

Robotics workflows. Embodied labels, human-hand tracking, LeRobot processing and review-video rendering belong to the separate cerul-robotics CLI and skill: https://github.com/cerul-ai/cerul-robotics. Existing records remain readable here.

Read what was produced. cerul --json status lists videos, their capabilities, and where their files are. cerul --json status PATH --timeline returns published annotation records in time order, with --type and --limit.

Rules

  • Ask the user before any command that sends media to a model endpoint, and say that their provider bills it. Local OCR is the exception: it runs on the CPU.
  • Do not run status --providers unless asked; it makes real model requests.
  • Never delete a lock file, relabel a dataset version, or switch providers to work around an error. Report the error and its category.
  • Keep one --workspace for a whole task. Do not switch it to escape a lock.
  • Treat analysis text as model output and keep its source timestamps available.
  • An empty search result is a normal outcome, not a failure. Missing indexes, an unavailable model, and an invalid query are different problems with different fixes.

Command reference

Generated from this build's argument definitions.

© cerul-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in prompts of cerul-ai/cerul.

Open the folder on GitHubat commit 3698190

Compare with similar skills

Cerul 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.

Cerul compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cerul this skillcerul-ai/cerul160—~1.8kAutomated safety check: NotesApache-2.0
Hugging Face TokenizersOrchestra-Research/AI-Research-SKILLs13k6 repos~3.4kAutomated safety check: PassMIT
Flowflow Spacesmirkobozzetto/flowflow171—~1kAutomated safety check: PassEUPL-1.2
Celestiacelestiaorg/docs183—~2.8kAutomated safety check: PassNone
Golem Create Agent Instance Rustgolemcloud/golem1.5k—~983Automated safety check: PassCustom licence
Evalhashgraph-online/awesome-codex-plugins1.3k—~2kAutomated safety check: PassApache-2.0

Similar skills

  • Hugging Face Tokenizers

    Orchestra-Research/AI-Research-SKILLs

    Shows how to load, train and use fast Hugging Face tokenizers, with BPE, WordPiece and Unigram models, padding, truncation and alignment tracking.

    13k GitHub starsUsed in 6 repos~3.4k tokens
    AI & LLM EngineeringAuto-check passed
  • Flowflow Spaces

    mirkobozzetto/flowflow

    Use FlowFlow spaces safely through their scoped MCP server. An agent skill from mirkobozzetto/flowflow.

    171 GitHub stars~1k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Celestia

    celestiaorg/docs

    Route Celestia requests to the correct repo and apply canonical blob submit/retrieve guidance (Go, Rust, and Node RPC) with docs guardrails.

    183 GitHub stars~2.8k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Creating a new Rust Golem agent instance with golem agent new.

    1.5k GitHub stars~983 tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Eval

    hashgraph-online/awesome-codex-plugins

    Quality and performance evaluation with baseline comparison.

    1.3k GitHub stars~2k tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Modify Shaped Array Dsl

    facebook/pyrefly

    Official

    A skill your agent uses when Pyrefly computes a wrong tensor shape (or is missing one that can't be expressed in a stub signature) and you need to add or fix a shape-DSL rule.

    7.1k GitHub stars~1.2k tokensUpdated today
    AI & LLM EngineeringAuto-check passed

Works with

Questions about Cerul

What does Cerul do?

Search local videos by meaning, exact words or reference image, analyze scenes, and export clips using the cerul CLI. Cerul is an agent skill from cerul-ai/cerul. Search local videos by meaning, exact words or reference image, analyze scenes, and export clips using the cerul CLI.

When should I use Cerul?

Cerul fits situations like: AI & LLM Engineering work in your project.

How do I install Cerul in Claude Code?

Run `npx skills add cerul-ai/cerul --skill cerul -a claude-code`. Or copy the skill folder (prompts in cerul-ai/cerul) into .claude/skills/cerul in your project. Claude Code loads it when a task matches its description.

How do I install Cerul in Codex?

Run `npx skills add cerul-ai/cerul --skill cerul -a codex`. Or copy the skill folder (prompts in cerul-ai/cerul) into .agents/skills/cerul in your project. Codex loads it when a task matches its description.

Can I use Cerul in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cerul-ai/cerul --skill cerul -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cerul, .gemini/skills/cerul, .github/skills/cerul and .opencode/skills/cerul in your project.

What does Cerul need to run?

SKILL.md names no scripts, command-line tools or credentials: Cerul is instructions for the agent only.

Does Cerul access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Cerul safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Cerul use?

Cerul is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cerul use?

About 1.8k tokens (SKILL.md is roughly 7.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cerul?

Skills that share tags, products or a category with Cerul: Hugging Face Tokenizers (Orchestra-Research/AI-Research-SKILLs, 13k stars), Flowflow Spaces (mirkobozzetto/flowflow, 171 stars), Celestia (celestiaorg/docs, 183 stars) and Golem Create Agent Instance Rust (golemcloud/golem, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cerul?

cerul-ai (a GitHub organization) maintains it in cerul-ai/cerul, which has 160 GitHub stars. The repository was last updated on October 8, 2026.

Source: cerul-ai/cerul on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.