record-browser-gif
Skill5 starsChanged 3 months agoMITView on GitHub
Record and verify truthful Orbit browser demos for the README, documentation, release notes, or GUI pull requests using a real Orbit server and ACP runtime; capture state-based frames, encode an optimized GIF, and publish it only when explicitly requested. Use when asked to make, record, generate, or attach a GIF that demonstrates an Orbit web workflow.
13 other projects use a version of this.
Adopted by
Most recently taken up by
- Fei2411/DeepSeek-Bottheir own version, first seen Nov 8, 2026
- ZeroOnehub/aipm-workbenchtheir own version, first seen Nov 1, 2026
- See-Sol-Lab/DeepSeekGUItheir own version, first seen Oct 18, 2026
- zehuichan/vibe-harnesstheir own version, first seen Oct 17, 2026
- Haifai-AI/baby-whaletheir own version, first seen Oct 13, 2026
- Yao920127/claude-code-harnesstheir own version, first seen Oct 11, 2026
Used with
Projects with it also use dsh-doc-site-sync and dsh-doc-standards.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
lucaslusSkilldsh-doc-site-sync
Use when publishing, updating, moving, or removing DeepSeek Harness documentation website pages; editing website/docs.ts mappings or navigation; diagnosing a page missing from the VitePress site; fixing projected documentation links; or running the docs:dev, docs:check, and doc-sync workflow after website-content changes.
Also in 5 projects that use this
lucaslusSkilldsh-doc-standards
Use when writing, moving, reviewing, or auditing documentation in the deepseek-harness repo — choosing hierarchy and detail, separating tutorials from references, checking tutorial progression, trimming doc slop, responding to a verify-doc-budgets failure, or requests like "improve the docs", "audit the docs", "where should this be documented", or "this doc is too long".
Also in 5 projects that use this
Other versions13 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 13
- deepseek-ai/deepseek-harness★ 276ksame name
- Fei2411/DeepSeek-Bot★ 6.3ksame name
- See-Sol-Lab/DeepSeekGUI★ 274same name
- SuperJJ007/papermachine★ 59same name
- xinyuquan985-coder/deepseek-harness-neon★ 17same name
- zehuichan/vibe-harness★ 2same name
- ZeroOnehub/aipm-workbench★ 2same name
- Haifai-AI/baby-whale★ 1same name
- lucaslus/dsh-desktop★ 1same name
- SparkElf/deepseek-harness-plus★ 1same name
3 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository4 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- find-simplificationsSkill
- simplify-codeSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. 0 are common, 10 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 19
Use a benign demonstration prompt.
- Distinctive: line 21
Keep one storyboard in one isolated run.
- Distinctive: line 23
If the recording supports a pull request claim, record the exact commit with git rev-parse HEAD and state that commit beside the embedded …
- Distinctive: line 25
If credentials, a supported runtime, or the server are unavailable, report the limitation instead of presenting a fixture as a real run.
- Very specific: line 30
Read the root AGENTS.md and the relevant product docs.
- Very specific: line 44
Start Orbit with npm run dev and use http://localhost:4317, or set ORBIT_PORT to an available port.
- Very specific: line 46
Use a fresh browser context or clear only the demo origin's storage before navigation.
- Very specific: line 51
Stop the exact server process after capture.
- Distinctive: line 59
Before recording, identify the origin, built/development mode, runtime, transport, and whether the run is real or fixture-backed.
- Very specific: line 65
Keep one viewport and crop for every frame.
- Distinctive: line 68
Before each screenshot, wait for a concrete UI condition such as a unique label, an enabled control, a changed heading, a visible run …
- Very specific: line 72
When checking completion, match an exact-text element rather than a broad body.textContent.includes(...) check, which can match the echoed …
- Distinctive: line 74
When the claim involves approval, tool activity, handoff, failure, or recovery, include a frame that visibly proves that state.
- Distinctive: line 82
Use the browser's screenshot API and save the returned image bytes directly.
- Distinctive: line 123
Read the encoder's JSON summary.
- Distinctive: line 129
Run git status --short and confirm frames and the GIF are under ignored paths unless the user explicitly requested publication.
- Very specific: line 137
Only publish when the user explicitly asks for a GitHub-visible README or pull-request asset.
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Record Browser GIF
Produce a short, truthful Orbit UI demonstration as a local GIF. Use the browser-control skill for interaction and the bundled encoder for repeatable timing, dimensions, and size. This skill is the canonical project workflow; do not copy a second full version into a host-specific directory.
Recording integrity
- Record from the real Orbit server and the real UI path that the GIF claims to demonstrate. Do not substitute fixture requests, mock transports, synthetic event injection, or test-only hooks unless the user explicitly requests a fixture recording.
- Use a benign demonstration prompt. Never expose API keys, login state, personal data, unrelated tabs, or private workspace paths in a frame.
- Keep one storyboard in one isolated run. Do not splice frames from different servers, browser profiles, workspaces, or model rounds.
- If the recording supports a pull request claim, record the exact commit with
git rev-parse HEADand state that commit beside the embedded GIF. - If credentials, a supported runtime, or the server are unavailable, report the limitation instead of presenting a fixture as a real run.
Stage Orbit
- Read the root
AGENTS.mdand the relevant product docs. For the current collaboration demo, readdocs/ARCHITECTURE.mdanddocs/TERMINOLOGY_AND_ROUTING.md. - For a pull-request recording, require a clean worktree and record the exact commit before building. For a README or documentation recording, record the current branch and note that provenance in the handoff.
Build the UI from that tree:
npm run buildThe build requires Bun because it compiles the standalone executable. The source server itself runs with Node and the repository's npm scripts.
- Start Orbit with
npm run devand usehttp://localhost:4317, or setORBIT_PORTto an available port. Keep one server for the whole storyboard. - Use a fresh browser context or clear only the demo origin's storage before
navigation. Orbit stores product data under
~/.orbit; do not delete or overwrite a user's existing data to create a clean recording. Use a dedicated demo workspace and remove only artifacts created for the recording when cleanup is explicitly safe. - Stop the exact server process after capture. Do not use a broad process-kill pattern that could terminate the shell or another Orbit instance.
Record the story
- Invoke the available browser-control skill. If it is unavailable, use the repository's existing Playwright dependency in an isolated browser; do not install another driver or launch the user's browser unless requested.
- Before recording, identify the origin, built/development mode, runtime, transport, and whether the run is real or fixture-backed. State exceptions in the final provenance.
- Choose three to six semantic states that tell one story. A useful Orbit README storyboard is: workspace and team visible, assignment typed, employee running, handoff or verification visible, and final settled result.
- Keep one viewport and crop for every frame. Write frames under the ignored
.playwright-mcp/gif-frames-<label>/directory and name them lexically:00-initial.png,01-assigned.png,02-running.png, and so on. - Before each screenshot, wait for a concrete UI condition such as a unique label, an enabled control, a changed heading, a visible run state, or an exact final reply. Do not use a fixed delay as proof that the UI reached a state.
- When checking completion, match an exact-text element rather than a broad
body.textContent.includes(...)check, which can match the echoed prompt. - When the claim involves approval, tool activity, handoff, failure, or recovery, include a frame that visibly proves that state. A final chat reply alone does not prove the preceding path.
- Capture transient states by driving a real foreground operation and polling a concrete DOM marker in the same browser-script call that takes the screenshot. Stop unnecessarily long real-model runs once the demonstrated state is visible.
Use the browser's screenshot API and save the returned image bytes directly.
Encode the GIF
Require python3 or python, ffmpeg, and ffprobe. If a required media
binary is missing, report it instead of installing software without approval.
On PowerShell:
$gifSkillDir = (Resolve-Path ".agents/skills/record-browser-gif").Path
python "$gifSkillDir/scripts/encode_gif.py" `
"$(Resolve-Path '.playwright-mcp/gif-frames-<label>')" `
"$(Resolve-Path '.playwright-mcp')/orbit-demo.gif" `
--durations 1.5,1.5,1.5,3.5 `
--fps 10 `
--max-width 1200 `
--colors 128On a POSIX shell, export the skill directory before invoking Python:
export GIF_SKILL_DIR="$PWD/.agents/skills/record-browser-gif"
python3 "$GIF_SKILL_DIR/scripts/encode_gif.py" \
"$PWD/.playwright-mcp/gif-frames-<label>" \
"$PWD/.playwright-mcp/orbit-demo.gif" \
--durations 1.5,1.5,1.5,3.5 \
--fps 10 \
--max-width 1200 \
--colors 128Provide one positive duration per frame, holding the final state longest. The
encoder rejects fewer than two frames, mismatched dimensions or durations,
invalid limits, accidental overwrite, unexpected duration, and oversized
output. Reduce --max-width first when text is still readable; then reduce
colors or FPS. Use --force only after checking the exact output path.
Verify the artifact
- Read the encoder's JSON summary. Confirm output path, source and encoded frame counts, dimensions, duration, and byte size.
- Inspect the encoded GIF itself, not only the source screenshots. Confirm that
transitions are legible, the final state is held long enough, and no private
data appears. Decode representative frames with
ffmpegif the viewer only exposes the first frame. - Run
git status --shortand confirm frames and the GIF are under ignored paths unless the user explicitly requested publication. - Return the absolute GIF path and state whether it used a real ACP/model run, a fixture, or another transport. Render the local GIF when the client supports local media.
Publish for README or pull-request use
Only publish when the user explicitly asks for a GitHub-visible README or
pull-request asset. Prefer a dedicated assets branch such as orbit-assets so
the product branch does not accumulate binary history. Verify that the branch
contains media only and that the remote checksum matches the verified local GIF.
Embed a published GIF with a raw blob URL:
For a pull request, record the demonstrated commit SHA, server origin, runtime, browser-state exception if any, and whether a real model round ran next to the GIF. Re-read the live pull-request head before and after editing its body; if it moved, re-record. Never force-push or rewrite an assets branch.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

