·
Last changedVersion:
This version passed the hardening gate. Hardening applied 7 targeted changes and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 0. Review findings closed: 9. Review findings remaining: 2.
None
None
Expand | File | Group | Subtype | Severity | Status |
|---|
No findings available
0 findings
Create animated GIF demos that show a feature or workflow in action — with annotations, variable timing, and proper pacing. Useful for PR descriptions, documentation, and release notes.
Use this skill when you need to:
Install these inside a virtual environment, pin exact versions with hashes in a requirements file, and confirm the package list with the user before installing. Pinning playwright also fixes which chromium build it downloads.
Point the url only at a local build or an app the user has approved for the demo. Record with test accounts and synthetic data, keep real credentials and personal data out of recorded steps, and review every captured frame before publishing it.
Use Playwright to step through the interaction and capture each frame:
Use imageio, not PIL, for GIF writing — PIL's GIF encoder merges visually similar frames, which kills animations.
Uniform timing makes everything feel either too fast or too slow. Use variable durations:
| Phase | Duration | Why |
|---|---|---|
Fast action (typing, clicking) | 100ms | Feels natural, keeps energy |
Pause after action | 600-800ms | Let the viewer process what happened |
Hero/final message | 500ms+ | Main takeaway needs time to land |
Apply annotations to specific frames using the image-annotations skill. That skill is separate, not included here, and should be reviewed before use:
For smooth annotation appearance:
At 10fps, use 2 fade frames (0.2s total). At 30fps, use 3-4 frames. Easing curves look bad at low FPS — simple pop-in is snappier and more readable.
The annotation logic gets complex for anything beyond trivial demos. Write a dedicated script (e.g., annotate_gif.py) with functions instead of inline code. You'll iterate on timing and placement. Write all frames and output GIF files into one dedicated recordings folder, confirm with the user before overwriting an existing file, and delete intermediate frame images once the GIF is built.
Always test in isolation first — don't rebuild the full demo to test a fade tweak:
For recording desktop apps, terminals, or anything outside a browser. Uses mss for fast screen capture.
Pass an explicit region or window rectangle rather than the full screen. Before recording, close or hide unrelated windows, turn on do not disturb, and use dummy data. Keep the duration to a few seconds and crop the region, because every frame is held in memory until the GIF is written. After recording, review every frame, crop or redact sensitive content, and get the user's approval before attaching the GIF to a pull request or document.
Tested: 3s at 8fps → 24 frames, ~31KB. Use 8 to 10 frames per second for general desktop recordings and 10 for typing or interaction, which keeps file sizes reasonable.
Note: PIL.save(save_all=True) works for simple recordings but merges visually similar frames. For annotated GIFs with fade effects, use imageio.v3.imwrite instead.
This example is Windows only. Confirm the matched window title with the user, and stop if there are zero or several matches. The find_window helper comes from the separate ui-screenshots skill, which is not included here and should be reviewed before use.
Programmatically find changed regions between frames to decide what to annotate:
| Format | VS Code Preview | GitHub | Browser |
|---|---|---|---|
GIF | ✅ Animates | ✅ | ✅ |
WebP | ⚠️ Static only | ✅ | ✅ |
MP4 | ❌ Broken | ⚠️ | ✅ |
GIF is the only universally supported animated format across VS Code preview, GitHub markdown, and browsers.
Get started with chainctlchainctl skill install public/github/screen-recording:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
skills.chainreg.biz/public/github.com/github/skills/screen-recording:latest
MIT
HARDENING.md
LICENSE
SKILL.md