Hands On Deck

Agent-native .pptx editing via atomic, validated JSON patches

Tested · Works

Test report

Verdict
Tested · Works
Score
9.2/10
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-deck Agent-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.