Third Party Cookies
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing a website for privacy compliance, third-party resource loading, or cookie consent implementation.
Confirms what a third-party library, remote API, build backend, or scraped document actually does before writing code that depends on it — throwaway probes that run in seconds, permissive clients…
$ npx skills add kajisho5/ffmpeg-skill --skill verifying-external-behavior -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install kajisho5/ffmpeg-skill verifying-external-behavior --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/kajisho5/ffmpeg-skill.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/verifying-external-behavior .claude/skills/verifying-external-behavior && 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 "verifying-external-behavior" agent skill from https://github.com/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behavior into .claude/skills/verifying-external-behavior/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verifying-external-behavior", 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/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behaviorType 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 kajisho5/ffmpeg-skill --skill verifying-external-behavior -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install kajisho5/ffmpeg-skill verifying-external-behavior --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kajisho5/ffmpeg-skill.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/verifying-external-behavior .agents/skills/verifying-external-behavior && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "verifying-external-behavior" agent skill from https://github.com/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behavior into .agents/skills/verifying-external-behavior/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verifying-external-behavior", 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 kajisho5/ffmpeg-skill --skill verifying-external-behavior -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install kajisho5/ffmpeg-skill verifying-external-behavior --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kajisho5/ffmpeg-skill.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/verifying-external-behavior .cursor/skills/verifying-external-behavior && 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 "verifying-external-behavior" agent skill from https://github.com/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behavior into .cursor/skills/verifying-external-behavior/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verifying-external-behavior", 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/kajisho5/ffmpeg-skill.git --path .claude/skills/verifying-external-behavior--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 kajisho5/ffmpeg-skill --skill verifying-external-behavior -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install kajisho5/ffmpeg-skill verifying-external-behavior --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kajisho5/ffmpeg-skill.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/verifying-external-behavior .gemini/skills/verifying-external-behavior && 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 "verifying-external-behavior" agent skill from https://github.com/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behavior into .gemini/skills/verifying-external-behavior/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verifying-external-behavior", 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 kajisho5/ffmpeg-skill verifying-external-behaviorInstalls 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 kajisho5/ffmpeg-skill --skill verifying-external-behavior -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/kajisho5/ffmpeg-skill.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/verifying-external-behavior .github/skills/verifying-external-behavior && 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 "verifying-external-behavior" agent skill from https://github.com/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behavior into .github/skills/verifying-external-behavior/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verifying-external-behavior", 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 kajisho5/ffmpeg-skill --skill verifying-external-behavior -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install kajisho5/ffmpeg-skill verifying-external-behavior --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/kajisho5/ffmpeg-skill.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/verifying-external-behavior .opencode/skills/verifying-external-behavior && 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 "verifying-external-behavior" agent skill from https://github.com/kajisho5/ffmpeg-skill/tree/main/.claude/skills/verifying-external-behavior into .opencode/skills/verifying-external-behavior/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "verifying-external-behavior", 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.
verifying-external-behaviorConfirms what a third-party library, remote API, build backend, or scraped document actually does before writing code that depends on it — throwaway probes that run in seconds, permissive clients…
Verifying External Behavior is an agent skill from kajisho5/ffmpeg-skill. Confirms what a third-party library, remote API, build backend, or scraped document actually does before writing code that depends on it — throwaway probes that run in seconds, permissive clients that forward wrong arguments instead of rejecting them, per-endpoint docs that don't generalize, response shapes that make a "fast path" always-false, fakes that encode your assumption rather than the service's behavior, and dry-runs that skip the step that fails. Use when integrating a new dependency or endpoint…
Its SKILL.md is about 2.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
The licence is MIT.
Read from SKILL.md and the folder at commit 008333a. 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:
uvcurldockerFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom 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.
Verifying External Behavior loads about 2.7k tokens when it runs. Until then it costs about 173 tokens; SKILL.md has 1,139 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 kajisho5/ffmpeg-skill at commit 008333a, republished under its MIT licence (© kajisho5). 1,139 words, ~2,718 tokens.
.claude/skills/verifying-external-behavior/SKILL.md (or your agent's skills folder).Most integration bugs are not coding errors. They are a belief about someone else's system — a status code, a parameter name, a response shape, a build backend's scoping rule — that was never checked and turned out to be wrong. The code is written correctly against a contract that does not exist.
The fix is not more care. It is a probe: a throwaway command that asks the real system the exact question, before the code is written. Probes cost seconds. The bugs they prevent are silent, ship green, and are found months later.
Not a similar call, not the documented example — the same endpoint form, the same library version, the same argument spelling.
# A library's real defaults / return shapes, with no venv to create or clean up
uv run --no-project --with somelib python -c "import somelib; print(somelib.Thing())"
# The exact URL, including the collection-vs-item distinction
curl -s -o /dev/null -w '%{http_code}\n' https://api.example.com/v1/things
curl -s -o /dev/null -w '%{http_code}\n' https://api.example.com/v1/things/1
# What a build backend actually put in the artifact
uv build && unzip -l dist/*.whl
# A real service instead of a fake, for one minute
docker run --rm -p 6390:6379 redis:7-alpineTwo rules make probes worth the minute they cost:
This is the highest-severity class, because the failure returns plausible data.
Many HTTP client wrappers forward keyword arguments verbatim into the query
string without validating them against their own documented parameter list. The
remote service then drops the unknown parameter and applies its default — often
"the authenticated user". A misspelled selector (owner= for owner_screen_name=,
id_= for id=) does not raise; it silently returns someone else's records.
Never infer "the library would have rejected that" from the library's declared parameter list. Read the bytes that leave the process:
# Probe: intercept the transport and print the outbound request, then stop.
import requests
sent = {}
def spy(self, method, url, **kw):
sent["url"], sent["params"] = url, kw.get("params")
raise RuntimeError("probe: request intercepted")
requests.Session.request = spy
try:
client.favorites(id_=12345) # the call you were about to ship
except RuntimeError:
pass
print(sent) # {'url': '.../favorites/list.json', 'params': {'id_': 12345}}If the parameter you passed is not in params under the name the service
documents, the call is wrong no matter how healthy the response looks.
Two corollaries:
get_thing(owner, slug) and send slug
as owner_id, while a neighbouring method with the same-looking signature is
correct by luck.A status code documented for the single-item form frequently does not apply to
the collection form of the same resource. Verified live against a large public
REST API: GET /repos/{repo}/issues on a repository with issues disabled returns
200 with an empty array, while GET /repos/{repo}/issues/1 returns 410
Gone. Code written to "tolerate 410 when issues are disabled" therefore has a
branch that never fires, and the real path — an empty 200 — falls through to
whatever the generic handler does.
Probe the exact URL before writing a tolerated-status branch. If you keep a defensive branch for a status you could not reproduce, label it as defensive and name the path you did observe, so the next reader does not mistake it for verified behaviour.
# Observed: issues-disabled repos return 200 with []. The 410 branch is
# defensive — the item endpoint documents it, the list endpoint never sent it.
if resp.status_code == 410:
return []List endpoints commonly embed a summary object — a handful of identity fields — rather than the full entity. A "we already have the data" fast path written against the full entity is then always false:
# This check is intended to skip a per-item fetch. Against summary objects that
# carry only {login, id, avatar_url}, it is False for every item — so the
# "fallback" enrichment fetch is the common path, and the loop is N+1.
if all(k in user for k in ("name", "company", "location", "followers")):
return user
return fetch_user(user["login"]) # runs every timeBefore optimizing around a response, print one real element and compare its keys to what your code reads. The same probe settles range and boundary assumptions that otherwise get "handled" defensively forever: if a per-year query provably returns exactly that year's days, the dedup pass guarding against adjacent-year leakage is dead code, and saying so in the PR is more valuable than the code.
Fakes are written by the same person as the code, from the same beliefs, so they agree with each other by construction. Stand the real thing up once and re-run the same assertions against it — a container is a minute, and it is the only thing that validates the semantics the fake asserts: TTL and expiry sentinels, whether a client factory is awaitable, key eviction, ordering, which exception type a failure raises.
Simulate the outage deterministically instead of mocking the error, so the code takes the same path production would:
# A dead port is a real, instant, deterministic connection failure.
client = redis.asyncio.from_url("redis://localhost:1")The same reasoning applies to documents you parse. A hand-written fixture encodes
your reading of the markup; the live page may render the same tokens across
indented lines, so a regex requiring single spaces matches every fixture and never
matches production. Capture one real sample, commit it, and point the parser's
test at it. Prefer a machine-readable attribute (data-date="2024-01-01") over a
human-readable string when the source offers both — it survives markup and locale
changes that a prose regex does not.
Resolve-only and plan-only modes are not verification of anything the real run
does after resolution. A dependency resolver's --dry-run reports success for a
requirement whose presence makes the actual build hard-fail, because the dry run
never builds. A build script's --check may never invoke the platform-specific
tool that breaks.
Run the real operation once, on the platform that matters:
uv pip install --dry-run . # resolves; does NOT build → misses build-time errors
uv build # actually builds → catches themMore generally: if a mode exists specifically to be cheap, ask which step it bought that discount by skipping, and whether your bug lives there.
A probe sometimes proves the upstream system is simply wrong, or surprising, for your use case. Resist reaching for a configuration knob to make the number look right — if the underlying model or endpoint produces that output across parameter settings, tuning a parameter buries the finding instead of recording it. Write down what was observed, at which version, with the command, and choose a different approach.
Record findings with three things or they will not survive: the command, the observed output, and the date. External behaviour changes; an undated claim cannot be re-checked.
Before shipping code that depends on an external system:
- [ ] The exact call/endpoint/version was probed, not a similar one
- [ ] Outbound request parameters inspected — names match what the service documents
- [ ] Selectors passed by keyword, never positionally
- [ ] Collection and item forms probed separately for status-code branches
- [ ] One real response element printed and compared against the fields the code reads
- [ ] Fakes validated against the real service at least once
- [ ] Failure paths exercised against a real failure (dead port, revoked token), not a mock
- [ ] Verified with the real build/install, not a dry-run
- [ ] Every tolerated-status or defensive branch is either reproduced or labelled defensive
- [ ] Findings recorded with command, output, and dateffmpeg/ffprobe are exactly the "third-party system" this skill is about —
their real behavior across versions and flags is the whole reason doctor
exists, and this session repeatedly needed to probe ffmpeg directly rather
than reason about it from documentation. The clearest example: cut.py's
copy-mode -ss (before -i) seeks to the nearest preceding keyframe, and it
was tempting to assume the output duration would still equal the requested
-t regardless of where the seek landed. Running the actual command against
a real fixture (--start 1.13 --end 5.71 --tolerance 2.0) showed a real
1.24s divergence between requested_duration and output_duration — the
kind of finding this skill says to record with the command, the output, and
the date, which is exactly how test_cut_copy_keyframe_snap_reports_a_real_nonzero_delta
in tests/test_all.py was derived, rather than calculated from first principles.
Source: wdm0006/python-skills (MIT).
© kajisho5, 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 .claude/skills/verifying-external-behavior of kajisho5/ffmpeg-skill.
Open the folder on GitHubat commit 008333a
Verifying External Behavior 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 |
|---|---|---|---|---|---|---|
| Verifying External Behavior this skillkajisho5/ffmpeg-skill | 1.9k | — | ~2.7k | Automated safety check: Pass | MIT | |
| Third Party Cookiesthedaviddias/Front-End-Checklist | 74k | — | ~580 | Automated safety check: Pass | MIT | |
| Third Party Scriptsthedaviddias/Front-End-Checklist | 74k | — | ~417 | Automated safety check: Pass | MIT | |
| Audit Third Party Contractsben-manes/caffeine | 18k | — | ~943 | Automated safety check: Pass | Apache-2.0 | |
| Managing Third Party Vendor Riskmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Third Party Codeopen-edge-platform/anomalib | 6.2k | — | ~599 | Automated safety check: Pass | Apache-2.0 |
thedaviddias/Front-End-Checklist
A skill your agent uses when reviewing a website for privacy compliance, third-party resource loading, or cookie consent implementation.
thedaviddias/Front-End-Checklist
A skill your agent uses when auditing slow page loads, heavy assets, or rendering delays related to Optimize third-party script loading.
ben-manes/caffeine
Verify every third-party and sharp-edged JDK API usage against the contract the upstream documentation actually states
mukul975/Anthropic-Cybersecurity-Skills
Build and run a third-party/vendor risk management (TPRM) program aligned to NIST SP 800-161 C-SCRM: inventory and tier vendors, issue SIG/CAIQ questionnaires, review SOC 2/ISO 27001 evidence, set…
open-edge-platform/anomalib
Review/generate third-party code attribution, licensing, and notice requirements
asgeirtj/system_prompts_leaks
Verify that a code change actually does what it's supposed to by exercising it end-to-end and observing behavior — drive the affected flow, not just tests or typecheck.
kajisho5/ffmpeg-skill
Edit video and audio with local FFmpeg from natural-language requests: cut, trim, join, resize/reframe (9:16, 1:1), speed change, captions and subtitles (SRT/ASS, animated, karaoke), logos and text…
kajisho5/ffmpeg-skill
Generate GitHub Actions CI/CD pipeline configurations for automated building and testing of library and package projects.
kajisho5/ffmpeg-skill
Review a change to the ffmpeg-skill repository for the failures its own contract makes possible — a claim in a result document that is true at one layer and false at the layer a caller reads, a new…
kajisho5/ffmpeg-skill
Builds robust Python MCP (Model Context Protocol) servers with FastMCP — tool design, error contracts, event-loop-safe blocking work, subprocess/CLI wrapping, single-file vs packaged distribution…
kajisho5/ffmpeg-skill
Resolve conflicts and merges when several branches are open against one repo at the same time — the hotspot files every change must touch (registry manifests, a single version field, shared tool…
kajisho5/ffmpeg-skill
Add and review preconditions on operations that delete, overwrite, rewrite history, or resolve a caller-supplied name to a filesystem path — refusing instead of warning, placing the guard ahead of…
Confirms what a third-party library, remote API, build backend, or scraped document actually does before writing code that depends on it — throwaway probes that run in seconds, permissive clients…. Verifying External Behavior is an agent skill from kajisho5/ffmpeg-skill. Confirms what a third-party library, remote API, build backend, or scraped document actually does before writing code that depends on it — throwaway probes that run in seconds, permissive clients that forward wrong arguments instead of rejecting them, per-endpoint docs that don't generalize, response shapes that make a "fast path" always-false, fakes that encode your assumption rather than the service's behavior, and dry-runs that skip the step that fails.
Verifying External Behavior fits situations like: integrating a new dependency; writing a tolerated-status; choosing a client argument name; testing against a fake.
Run `npx skills add kajisho5/ffmpeg-skill --skill verifying-external-behavior -a claude-code`. Or copy the skill folder (.claude/skills/verifying-external-behavior in kajisho5/ffmpeg-skill) into .claude/skills/verifying-external-behavior in your project. Claude Code loads it when a task matches its description.
Run `npx skills add kajisho5/ffmpeg-skill --skill verifying-external-behavior -a codex`. Or copy the skill folder (.claude/skills/verifying-external-behavior in kajisho5/ffmpeg-skill) into .agents/skills/verifying-external-behavior 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 kajisho5/ffmpeg-skill --skill verifying-external-behavior -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/verifying-external-behavior, .gemini/skills/verifying-external-behavior, .github/skills/verifying-external-behavior and .opencode/skills/verifying-external-behavior in your project.
Going by SKILL.md and its folder, Verifying External Behavior needs the command-line tools its instructions call (uv, curl and docker). Our summary lists: Python 3; Docker.
SKILL.md names 1 domain. As links in the text: github.com. 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.
Verifying External Behavior 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.7k tokens (SKILL.md is roughly 11k 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 Verifying External Behavior: Third Party Cookies (thedaviddias/Front-End-Checklist, 74k stars), Third Party Scripts (thedaviddias/Front-End-Checklist, 74k stars), Audit Third Party Contracts (ben-manes/caffeine, 18k stars) and Managing Third Party Vendor Risk (mukul975/Anthropic-Cybersecurity-Skills, 34k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
kajisho5 (a GitHub user) maintains it in kajisho5/ffmpeg-skill, which has 1,887 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 5, 2026.
Source: kajisho5/ffmpeg-skill on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.