Hands On Deck
Agent-native .pptx editing via atomic, validated JSON patches
Test report
- Verdict
- Tested · Works
- Score
- Tested
- Jul 16, 2026
- Environment
- Claude Code 2.x (agent harness)
- Upstream re-checked
- Aug 10, 2026 · f7f467c
Task: end-to-end rebranding of a real 18-slide deck (two-world-reskin-input.pptx from repository) — replace 'hands-on-deck' with 'slide-forge' throughout the deck. Baseline script using bare python-pptx (tf.text = tf.text.replace(...)) formally succeeded: 0 occurrences remained in raw XML — but measurement by runs showed it silently destroyed formatting in 24 out of 24 affected shapes, losing font/size/color in 26 runs; slide 0 footer changed from 'JetBrains Mono 5.6pt' to font=None, size=None. Patch via deck.py yielded 0 remnants and exactly 0 damaged shapes — 'JetBrains Mono 5.6pt' preserved. Significantly, deck.py diff for both versions prints an IDENTICAL text changelog: text diff does not catch font loss, it's only visible at the runs level. Atomicity confirmed in practice: a patch with an extra 'master' scope operation was rejected entirely with 'PATCH FAILED at op[1] ... Nothing was saved'. Stage 0 clean: SKILL.md, designing-slides.md, and all 7 python scripts (~268 KB) read; subprocess is called only with hardcoded argument lists (soffice, pdftoppm), without shell=True, network, or secret reading. Minus: render/thumbnail require LibreOffice, which was not present — it crashes with unhandled FileNotFoundError: 'soffice', although the dependency is specified in SKILL.md.
Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works
- Installs cleanly 5/5
- Triggers reliably 5/5
- Output vs. baseline 9/10
- Docs & honesty 4/5
What Hands On Deck does
One tool (deck.py) reads, edits, merges and renders PowerPoint decks through a JSON patch that is pre-validated and applied all-or-nothing, preserving run-level formatting. Triggers whenever a .pptx, deck, slides or presentation is involved as input or output.
How to install Hands On Deck
git clone https://github.com/EveryInc/hands-on-deck.git && mkdir -p ~/.claude/skills && cp -r hands-on-deck/skills/hands-on-deck ~/.claude/skills/hands-on-deck
Skills live in ~/.claude/skills/ (global) or .claude/skills/
(per-project). Restart Claude Code after installing.
Commands — how to trigger Hands On Deck
-
/hands-on-deckAgent-native .pptx editing via atomic, validated JSON patches
It also activates on plain-language prompts like these:
-
Rename our product across all 18 slides without breaking any fonts -
Edit this PowerPoint deck's text while preserving run-level formatting -
Merge these two decks together and validate the patch before saving
Frequently asked questions
- Is the Hands On Deck skill free?
- Yes. The skill itself is free from EveryInc/hands-on-deck. SkillProof publishes the install command and an independent test verdict at no cost.
- Does Hands On Deck work with Claude Code?
- We tested it with Claude Code 2.x (agent harness) on Jul 16, 2026. Verdict: Tested · Works. Task: end-to-end rebranding of a real 18-slide deck (two-world-reskin-input.pptx from repository) — replace 'hands-on-deck' with 'slide-forge' throughout the deck. Baseline script using bare python-pptx (tf.text = tf.text.replace(...)) formally succeeded: 0 occurrences remained in raw XML — but measurement by runs showed it silently destroyed formatting in 24 out of 24 affected shapes, losing font/size/color in 26 runs; slide 0 footer changed from 'JetBrains Mono 5.6pt' to font=None, size=None. Patch via deck.py yielded 0 remnants and exactly 0 damaged shapes — 'JetBrains Mono 5.6pt' preserved. Significantly, deck.py diff for both versions prints an IDENTICAL text changelog: text diff does not catch font loss, it's only visible at the runs level. Atomicity confirmed in practice: a patch with an extra 'master' scope operation was rejected entirely with 'PATCH FAILED at op[1] ... Nothing was saved'. Stage 0 clean: SKILL.md, designing-slides.md, and all 7 python scripts (~268 KB) read; subprocess is called only with hardcoded argument lists (soffice, pdftoppm), without shell=True, network, or secret reading. Minus: render/thumbnail require LibreOffice, which was not present — it crashes with unhandled FileNotFoundError: 'soffice', although the dependency is specified in SKILL.md.
- What is the Hands On Deck SkillProof Score?
- 9.2/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 9/10, docs & honesty 4/5.
- How do I install Hands On Deck?
- Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
- Can I use Hands On Deck with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
- The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.