Use when checking whether agent edits are reflected in the OpenChatCut project and editor.
npx skills add https://github.com/0xsline/OpenChatCut --skill verification
Use the lowest verification level that proves the requested result:
| Level | Required evidence |
|---|---|
| L0 | Static checks such as the focused verification script, npx tsc --noEmit, tests, and build. |
| L1 | A real Agent run against the editor at localhost:5199, followed by structural and rendered evidence. |
| L2 | The packaged desktop app completing the user scenario, including human visual review where automation is insufficient. |
Runtime behavior changes require L0 + L1. Release and desktop-only changes also
require L2 when the packaged app is the behavior under test.
Prefer two signals:
read_project for structure: assets, tracks, items, frame placement, timeline duration.Use view_timeline_frames for composed timeline proof. This verifies the edited OpenChatCut timeline: trims, layers, captions, effects,
markers, placeholders, crops, transitions, and layout.
For raw source-asset frame inspection, choose the cheapest path based on where
the bytes live:
in the project media store (/media/uploads/). Use view_asset_frames with
the project asset id — the server takes an ffmpeg contact-sheet fast path
automatically, so it is already the cheapest source-frame route.
view_timeline_frames renders the composed timeline (the editor-truth check);view_asset_frames samples raw source frames. Pick by what you are verifying.
get_contact_sheet tool in this build — the contactsheet is what view_asset_frames / view_timeline_frames already return.
Use local/remote source-frame artifacts only for source understanding, moment
selection, and rough trim decisions, not as edited output or timeline proof.
For local-only or upload-in-progress media, composed timeline proof may be
blocked until the asset has bytes available to the renderer. Source-frame
inspection via view_asset_frames still works as long as the asset's bytes are
on disk (/media/uploads/).
If both visual proof paths are blocked, ask the user to inspect the OpenChatCut
editor directly and note the blocker explicitly.
Useful checks:
read_project({ "view": "assets", "assetId": "<prefix>" })read_project({ "view": "timeline" })view_timeline_frames({ "frames": [30, 45, 75] }), then look at the returned frames.view_asset_frames and inspect them. Use that only to choose source files, moments, and rough trims. Build the visible edit as OpenChatCut timeline items. Do not treat raw source inspection as timeline verification or as permission to produce the edited video elsewhere.view_asset_frames({"assetId":"...","sourceTimesMs":[...]}) after read_project({"view":"assets"}) confirms the asset id/type. Prefer this over asking the user to reattach the file.When talking about seconds, verify the fps from read_project or use adapter tools that resolve fps internally.
When reporting a timeline item location, use only the latest read_project structure for track alias, item id, start, duration, and asset id. Do not report planned/default tracks or tool-call intent as verified placement.
Do not treat a command-line JSON response alone as sufficient when the user asks whether the editor reflects the result. Use the editor URL or visual proof when practical.
After every L1 Agent run, inspect the complete chat record before reporting
success:
and tool results that the final response incorrectly describes as successful.
read_project result with the visible timeline.assistant summary.
A run with a correct-looking timeline but an unreported tool error is not a
clean pass. Fix the cause or report the remaining error explicitly.
If verification fails, classify the gap before changing tools:
read_project did not expose enough stateIntegration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take 0xsline/verification from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.