Not in the top 1,000 by GitHub stars

EveryInc/hands-on-deck

Agent-native PowerPoint manipulation — one CLI lets AI agents inspect, edit, create, and verify .pptx files through atomic JSON patches. Packaged as an Agent Skill.

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

skills/hands-on-deck/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Local scripts

First observation → a24b996ecff6

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit a24b996ecff6393ccf39c4fee2b88c493fb0b693

git clone --filter=blob:none --no-checkout https://github.com/EveryInc/hands-on-deck.git .hotskills/everyinc-hands-on-deck && git -C .hotskills/everyinc-hands-on-deck checkout --detach a24b996ecff6393ccf39c4fee2b88c493fb0b693 # Copy each selected skill directory from .hotskills/everyinc-hands-on-deck into .claude/skills/<skill-name>/
224GitHub stars
2stars in 7 days
1skill in this repository
0commits in 30 days

Heat

4.0
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026224

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

hands-on-deck

When your agent uses it

Use this skill any time a .pptx file is involved in any way — as input, output, or both. This includes reading, analyzing, or extracting content from presentations; editing text, images, styles, or layout of existing decks; creating new slides, shapes, tables, or pictures; reordering, duplicating, or merging slides across decks; and verifying decks visually. Trigger whenever the user mentions a deck, slides, a presentation, or a .pptx filename.

What it loads into context

Frontmatter

107 tokens

Always available to the agent

SKILL.md

3,094 tokens

When the skill is activated

Reference documents

1,610 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. The edit loop
  2. Patch ops at a glance
  3. Creating slides from HTML (html2patch)
  4. Deck structure (subcommands, not patch ops)
  5. Building a deck from a template (the human workflow)
  6. Verification
  7. Escape hatch
  8. Dependencies

Scripts executed separately

  • scripts/deck.py
  • scripts/html2patch.py
  • scripts/inventory.py
  • scripts/merge_decks.py
  • scripts/rearrange.py
  • scripts/replace.py
  • scripts/thumbnail.py

Files

  • ../../.claude-plugin/marketplace.jsonasset624 bytes
  • ../../.claude-plugin/plugin.jsonasset365 bytes
  • SKILL.mdcore11,685 bytes
  • SKILL.mdcore11,685 bytes
  • SKILL.mdcore11,685 bytes
  • SKILL.mdcore11,685 bytes
  • SKILL.mdcore11,685 bytes
  • designing-slides.mddoc6,883 bytes
  • scripts/deck.pyruns142,519 bytes
  • scripts/html2patch.pyruns35,702 bytes
  • scripts/inventory.pyruns41,294 bytes
  • scripts/merge_decks.pyruns10,648 bytes
  • scripts/rearrange.pyruns8,496 bytes
  • scripts/replace.pyruns13,957 bytes
  • scripts/thumbnail.pyruns15,484 bytes
Read SKILL.md

# hands-on-deck — agent-native PPTX manipulation

One tool does everything: `scripts/deck.py`. You write a JSON *patch* describing your edits; deck.py validates and executes it atomically, then lints the result. You never need to open slide XML for routine work.

**Golden rules** (the tool enforces and repeats these):
- ALL slide indices are 0-based, everywhere. Shapes are addressed by stable native ids (`s12`) or unique shape name.
- Positions and sizes are inches from the slide's top-left.
- Patches are atomic: every op is pre-validated (all errors reported at once, with the slide's real shape listing), then applied all-or-nothing.

**Full reference**: `python scripts/deck.py docs` — prints every op with semantics and recipes; needs no file. Read it before writing your first patch.

## The edit loop

```bash
View the complete source on GitHub

Skills included

  • hands-on-deck

Repository facts

License
MIT
Created
Jun 9, 2026
Last pushed
Aug 4, 2026
Forks
17
Open issues
4
Project activity
Slowing

Before you install

Local scripts

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 4 notes
  • skills/hands-on-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/hands-on-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/hands-on-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • skills/hands-on-deck/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 31 signals by file

skills/hands-on-deck/scripts/deck.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 101
    EMU_PER_IN = 914400 IMAGE_RELTYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
  • Network accessline 102
    IMAGE_RELTYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
  • Network accessline 1257
    raise PatchError("background image not found: %s" % path)             image_part, rid = slide.part.get_or_add_image_part(str(path))             a = "http://schemas.openxmlformats.org/drawingml/2006/main"
  • Network accessline 1258
    image_part, rid = slide.part.get_or_add_image_part(str(path))             a = "http://schemas.openxmlformats.org/drawingml/2006/main"             bg_el = csld.makeelement(qn("p:bg"), {})
  • Network accessline 1259
    a = "http://schemas.openxmlformats.org/drawingml/2006/main"
  • Network accessline 1285
    THEME_COLOR_KEYS = ("dk1", "lt1", "dk2", "lt2", "accent1", "accent2", "accent3",                     "accent4", "accent5", "accent6", "hlink", "folHlink") A_NS = "http://schemas.openxmlformats.org/drawingml/2006/main"
  • Network accessline 1287
    A_NS = "http://schemas.openxmlformats.org/drawingml/2006/main"
  • Network accessline 2856
    Every run inherits the OLD paragraph's first-run font, then its own keys     override (per-run keys: bold, italic, underline, font_size, font_name,     color, theme_color, link). "link":"https://…" makes the run a hyperlink
  • Network accessline 2857
    override (per-run keys: bold, italic, underline, font_size, font_name,     color, theme_color, link). "link":"https://…" makes the run a hyperlink     (null/"" removes one); works on plain paragraph objects too. Paragraph
  • Network accessline 2858
    color, theme_color, link). "link":"https://…" makes the run a hyperlink

skills/hands-on-deck/scripts/html2patch.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Possible obfuscationline 480
    p.write_bytes(base64.b64decode(m.group(2)))

skills/hands-on-deck/scripts/inventory.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 208
    ):             pPr = paragraph._p.pPr             ns = "{http://schemas.openxmlformats.org/drawingml/2006/main}"
  • Network accessline 209
    pPr = paragraph._p.pPr             ns = "{http://schemas.openxmlformats.org/drawingml/2006/main}"             if (
  • Network accessline 210
    ns = "{http://schemas.openxmlformats.org/drawingml/2006/main}"

skills/hands-on-deck/scripts/merge_decks.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 46
    IMAGE_RELTYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image"
  • Network accessline 47
    HYPERLINK_RELTYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink"
  • Network accessline 49
    STRUCTURAL_RELTYPES = {     "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout",
  • Network accessline 50
    "http://schemas.openxmlformats.org/officeDocument/2006/relationships/slideLayout",
  • Network accessline 51
    "http://schemas.openxmlformats.org/officeDocument/2006/relationships/notesSlide",

skills/hands-on-deck/scripts/rearrange.py

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 102
    for blip in blips:             old_rId = blip.get(                 "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed"
  • Network accessline 103
    old_rId = blip.get(                 "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed"             )
  • Network accessline 104
    "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed"
  • Network accessline 114
    blip.set(                     "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed",
  • Network accessline 115
    "{http://schemas.openxmlformats.org/officeDocument/2006/relationships}embed",

skills/hands-on-deck/scripts/replace.py

  • Executable scriptline 1
    #!/usr/bin/env python3

skills/hands-on-deck/scripts/thumbnail.py

  • Executable scriptline 1
    #!/usr/bin/env python3

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Declared and executed: 4 facts
Signal confidence: 31 facts

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md skills/hands-on-deck/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md skills/hands-on-deck/SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md skills/hands-on-deck/SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md skills/hands-on-deck/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md skills/hands-on-deck/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.