# ffmpeg-skill execution contract `ffmpeg-skill contract --json` (or `python3 scripts/_contract.py --json`) prints a machine-readable description of this skill: which tools exist, what each one needs, takes and writes, how its result is verified, and what an agent may assume about dry-run, input preservation and repeatability. It is the interface a planning agent consumes instead of reading `SKILL.md`, which stays written for a coding agent that follows the workflow by hand. The contract is derived from the code that runs, not maintained beside it: - the tool list is every script in `scripts/` that does not start with `_`; - every `input_schema` is generated from the script's own `argparse` parser at the moment the contract is printed, so a new flag appears in the contract with no other edit; - the facts a parser cannot express (role, required ffmpeg components, verification policy, visual-check policy) live in one table in `scripts/_contract.py` and are checked against the scripts, the MCP server and the installer by `tests/test_contract.py`. ## Versions | Field | Meaning | Changes when | |---|---|---| | `contract_version` | shape of this document (`1.0`) | a key is renamed, removed or changes meaning | | `skill.version` | the npm / package.json version (`0.9.0`) | any release | A release that adds a tool or a flag keeps `contract_version`; a breaking change to the ToolSpec shape bumps it. Consumers pin on `contract_version` and read `skill.version` for provenance. ## Skill ```json { "contract_version": "1.0", "skill": {"id": "ffmpeg-skill", "version": "0.9.0", "execution_mode": "local", "kind": "execution", "entrypoints": {"cli": "...", "mcp": "...", "contract": "...", "doctor": "..."}, "not_provided": ["AI reasoning", "decisions", "production plans", "project IR", "approvals", "network access", "transcription engine"]}, "requirements": {"python": ">=3.9 (standard library only)", "ffmpeg": ">=5.0", "ffprobe": ">=5.0"}, "execution": {"shell": false, "arbitrary_executables": false, "network": false, "input_mutation": false} } ``` ffmpeg-skill is an execution skill. It measures, transforms and verifies media with local FFmpeg. It does not reason, plan, decide, or hold a project model; those belong to the agent that calls it. ## ToolSpec One entry per tool under `tools`, sorted by id. Tool ids are stable: `ffmpeg-skill/