Agent skill

Deckuse Office CLI

by deckflow in deckflow/deckuse

Drives the Deckuse CLI to inspect, create, change and verify PowerPoint and Word files through versioned workspaces and batched edits.

AGPL-3.0Auto-check passedDocuments & Office

Install Deckuse Office CLI

skills CLI
$ npx skills add deckflow/deckuse --skill deckuse -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install deckflow/deckuse deckuse --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/deckflow/deckuse.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/deckuse .claude/skills/deckuse && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
deckuse
GitHub stars
109
Token cost
~3.4k tokens
SKILL.md length
1,139 words
Files
1
Skills in repo
1
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Drives the Deckuse CLI to inspect, create, change and verify PowerPoint and Word files through versioned workspaces and batched edits.

  • Works in 8 steps: Core Operating Principles for AI Agents → Standard Agent Interaction Loop → High-Value Operation Recipes → …
  • Building or restyling a PowerPoint deck from the command line
  • SKILL.md covers 1. Core Operating Principles…, 2. Standard Agent Interaction…, 3. High-Value Operation Recipes and 4. Rollback and Error Handling, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Deckuse is a local-first engine that treats a PPTX file as a versioned workspace. The skill tells the agent never to edit a `.pptx` in place: it creates a workspace with `deckuse new` for a blank template or `deckuse init` for an existing file, and each change updates `source/`, is committed through Git, is logged to `.deckuse/operations.jsonl` and rebuilds `package.pptx`.

Edits go through one batched `deckuse apply` call with a JSON operations file instead of many separate write commands, since every write makes a new revision. Shapes get stable addresses such as `slide:1/shape:2`, with forms for placeholders, runs, notes and table cells, and sizes accept px, pt, cm, mm, in or percent. The agent checks operation fields with `deckuse schema` instead of guessing. The description also covers rich text blocks, tables, charts and rendering checks, though the excerpt stops before those sections. It needs Deckuse 1.3.0 or later, community edition.

When your agent uses it

  • Building or restyling a PowerPoint deck from the command line
  • Applying many slide edits in one batch
  • Verifying a slide or Word file after changes with a rendering check

Example prompts

  • “Create a new deck with a title slide and three content slides using Deckuse.”
  • “Open board-update.pptx in a Deckuse workspace and move the chart to the right half of slide two.”
  • “Replace the table on slide 4 of sales.pptx and render it to check the layout.”

Requirements

  • Deckuse CLI version 1.3.0 or later (community edition)

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Core Operating Principles for AI Agents
  2. Standard Agent Interaction Loop
  3. High-Value Operation Recipes
  4. Rollback and Error Handling
  5. Agent Workflow Checklist
  6. Recipe: safe iteration on an existing deck
  7. Recipe: visual QA
  8. Word (DOCX)

What it can do on your machine

Read from SKILL.md and the folder at commit caca5f2. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Deckuse Office CLI loads about 3.4k tokens when it runs. Until then it costs about 74 tokens; SKILL.md has 1,139 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~74
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from deckflow/deckuse at commit caca5f2, republished under its AGPL-3.0 licence (© deckflow). 1,139 words, ~3,371 tokens.

Download SKILL.mdSave it as .claude/skills/deckuse/SKILL.md (or your agent's skills folder).
name
deckuse
description
Use when inspecting, creating, modifying, automating, or verifying PowerPoint (PPTX) or Word (DOCX) documents with the Deckuse CLI. Covers workspace management, semantic targeting, batch mutations with apply, layout alignment, rich text blocks, tables, charts, and visual rendering checks.

Deckuse Agent Skill

Requires CLI deckuse >= 1.3.0 (edition=community). Check with deckuse --version. If older, upgrade before following recipes below (new and recent apply/units features).

Deckuse is a local-first, schema-driven Office document automation engine for coding agents. It treats PPTX files as versioned workspaces, provides stable semantic addresses (slide:N/shape:ID), applies surgical atomic mutations, and tracks history via Git revisions.

Prefer deckuse schema --type addShape --json (or full deckuse schema --json) over guessing fields from memory.


1. Core Operating Principles for AI Agents

  1. Workspace-First Architecture: Never edit .pptx in-place. Use deckuse new ./ws --json (bundled blank template) or deckuse init input.pptx ./ws --json (existing file). Mutations update source/, commit via Git, append .deckuse/operations.jsonl, and rebuild ./ws/package.pptx.
  2. Batch Mutations via apply: Do NOT run many individual write CLIs. Each write = one revision + recompress. Prefer one JSON batch:
    bash
    deckuse apply --workspace ./ws --input ops.json --json
    Geometry tweaks (xfrmSet / setTransform) belong in the same apply batch — do not loop deckuse xfrm.
  3. Derived Index & Stable Addressing:
    • slide:1/shape:2, slide:1/shape:Title 1, slide:1/placeholder:title
    • slide:1/shape:2/run:0 for single-run setProperties (intra-paragraph styling)
    • slide:1/notes is the speaker-notes body only (header / slide-number placeholders are ignored)
    • slide:1/shape:3/cell:0:0 addresses a table cell; cell setProperties / get support text, paragraph.align, fill, font.size/font.family/font.color/font.weight/font.italic, stroke/border (line.color/line.width on get), and padding.left|right|top|bottom (pt)
    • Same-batch forward refs: after addShape with "name": "HeaderTitle", later ops in the same apply may target slide:N/shape:HeaderTitle. Cross-apply dry-runs cannot see uncommitted shapes — that is expected.
  4. Intuitive Unit System: px (96 DPI), pt, cm, mm, in, % (of slide). Bare numbers = EMU. Example: "x": "5%", "y": "120px".
  5. Structural Engine, Not Visual Brain: Use deckuse render --page N for visual QA. Combo/advanced charts emit COMBO_CHART_RENDER_LIMITED; explicit series colors emit CHART_SERIES_COLOR_UNVERIFIED. Confirm via ppt/charts/chart*.xml or PowerPoint. Pages without those charts omit a generic fidelity warning.
  6. Community Edition Boundaries: Writing master:* / layout:* / theme part contents → UNSUPPORTED_CAPABILITY. Rebinding a slide's layout (setSlideLayout) is allowed — it only changes the relationship.
  7. Monitor daemons: deckuse monitor status (no --workspace) lists all running monitor start daemons (pid/port/workspace). Stop with --workspace <path> or stop --all. Foreground deckuse monitor is not tracked.

2. Standard Agent Interaction Loop

text
[1. New or Init] ➔ [2. Inspect & Search] ➔ [3. Prepare & Apply Batch] ➔ [4. Validate & Render] ➔ [5. Export]
Freeform layout (from-scratch / 1:1 recreate)
  1. Start with deckuse new ./workspace --json (blank 16:9 title slide) unless you already have a master PPTX to init.
  2. Estimate a grid (margins, columns) using % / px or deckuse measure --text … --font-size N --json.
  3. Create shapes + styles in one apply (inline fill/stroke/blocks/runs).
  4. deckuse validate then deckuse render --page N.
  5. Adjust geometry with another apply containing multiple xfrmSet / setTransform ops (one revision).
  6. Prefer wrap: "none" and generous widths to avoid mid-word wraps; use anchor for valign.
Step 1–5 (commands)
bash
deckuse new ./workspace --json
# or: deckuse init master.pptx ./workspace --json
deckuse status --workspace ./workspace --json
deckuse list shapes --slide 1 --workspace ./workspace --json
deckuse apply --workspace ./workspace --input ops.json --json
deckuse validate --workspace ./workspace --json
deckuse render --page 1 --workspace ./workspace --output ./slide-1.png --json
deckuse export ./output.pptx --workspace ./workspace --json

Default export rebuilds from source/ (includes hand-edits). Use --from-package only to copy the existing snapshot. status.packageStale flags dirty source/.

setProperties keys

Canonical: fontSize, bold, textColor, fill, stroke, paragraph.align (accepts center/ctr), wrap (none|square), anchor/valign (t|ctr|b), cornerRadius (0–1 on roundRect).


3. High-Value Operation Recipes

A. KPI Cards (inline create + style) — requires >= 1.2.0
json
[
  {
    "type": "addShape",
    "slide": 2,
    "shapeType": "rect",
    "name": "KpiRevenue",
    "x": "5%",
    "y": "120px",
    "width": "28%",
    "height": "100px",
    "fill": { "color": "F0FDF4" },
    "stroke": { "color": "BBF7D0", "width": 1 },
    "blocks": [
      { "text": "总营收", "fontSize": 12, "textColor": "065F46" },
      { "text": "598 百万元", "fontSize": 24, "bold": true, "textColor": "059669" }
    ]
  }
]

Intra-paragraph color (e.g. red first letter) — runs is supported:

json
{
  "type": "addShape",
  "slide": 3,
  "shapeType": "text",
  "name": "BrandC",
  "x": "5%",
  "y": "80px",
  "width": "40%",
  "height": "60px",
  "wrap": "none",
  "blocks": [
    {
      "align": "left",
      "runs": [
        { "text": "C", "fontSize": 28, "bold": true, "textColor": "DC2626" },
        { "text": "ustomer", "fontSize": 28, "bold": true, "textColor": "111827" }
      ]
    }
  ]
}
B. Switch slide layout (rebind)

Rebind an existing slide to another layout without editing layout parts (community-safe). Prefer list layouts for indexes / display names first.

json
[
  { "type": "setSlideLayout", "slide": 1, "layout": "2" },
  { "type": "setSlideLayout", "slide": 1, "layout": "slide:3" },
  { "type": "setSlideLayout", "slide": 2, "layout": "Blank" }
]

CLI: deckuse set slide-layout --slide 1 --layout 2 or --layout slide:3.

layout accepts: 1-based index, layout:N, slide:N (copy that slide's layout), display name (Blank), or basename (slideLayout2). Same refs work on addSlide.layout. This only updates the slide→slideLayout relationship; shapes are preserved. Writing layout:* / master:* part contents remains UNSUPPORTED_CAPABILITY.

C. Financial table

height: "auto" is a heuristic (wrap + padding); still render and watch TABLE_HEIGHT_MAY_CLIP. If the frame was resized with xfrmSet only, follow with setTableLayout (height: "auto" or redistribute: "content"|"equal") — do not keep bumping xfrm --height. setTableLayout is a first-class apply / runCommand type (not batch-only).

json
{
  "type": "addShape",
  "slide": 1,
  "shapeType": "table",
  "name": "FinTable",
  "x": "5%",
  "y": "120px",
  "width": "90%",
  "height": "auto",
  "theme": "zebra",
  "alignColumns": ["left", "right", "right"],
  "rows": [
    ["指标", "Q3", "Q4"],
    ["营收", "120", "135"],
    ["全年合计", "480", "510"]
  ]
}
D. Flow / loop (native presets — no Pillow)

Shape vocabulary: line/connector; elbow / curved-connector; arrow / left-arrow / …; rounded-rect + cornerRadius; chevron, pentagon, trapezoid, triangle, circular-arrow, curved-right-arrow, curved-left-arrow.

json
[
  {
    "type": "addShape",
    "slide": 1,
    "shapeType": "chevron",
    "name": "StepCollect",
    "x": "5%",
    "y": "200px",
    "width": "28%",
    "height": "64px",
    "fill": { "color": "2563EB" },
    "blocks": [{ "text": "Collect", "fontSize": 16, "textColor": "FFFFFF", "align": "center" }]
  },
  {
    "type": "addShape",
    "slide": 1,
    "shapeType": "circular-arrow",
    "name": "Loop",
    "x": "40%",
    "y": "320px",
    "width": "120px",
    "height": "120px",
    "fill": { "color": "F59E0B" }
  }
]
E. Charts / Align / replaceText

Prefer column|bar|line|pie for render. Series color is written into chart XML. Community render may emit CHART_SERIES_COLOR_UNVERIFIED — verify XML or PowerPoint.

F. Capability fallback (last resort)

Only when no preset fits: shapeType: "image". Do not default to Pillow/SVG for connectors or arrows.


Show full SKILL.md (468 more words)Show less

4. Rollback and Error Handling

bash
deckuse undo --workspace ./workspace --steps 1 --json
  • Always use --json for agents. On INVALID_COMMAND, read error.message (includes first field path) and error.diagnostics[] (path + message).
  • TARGET_NOT_FOUND: list shapes; for dry-run, ensure the name was added in the same apply batch.
  • UNSUPPORTED_CAPABILITY: community master/layout/theme gate.
  • COMBO_CHART_RENDER_LIMITED / CHART_SERIES_COLOR_UNVERIFIED / TABLE_HEIGHT_MAY_CLIP / TABLE_OVERLAPS_SHAPE: warnings, not write failures.
  • NOTES_SLIDE_MISMATCH: workspace cannot be written until deckuse repair --workspace ./ws --json (unambiguous notes back-pointers only).
  • Schema discovery: deckuse schema --type addShape --json.

5. Agent Workflow Checklist

  • CLI >= 1.2.0 (deckuse --version)?
  • Workspace created (new or init)?
  • Used unit strings / named shapes / single apply batch?
  • Prefer column/bar/line/pie when using render?
  • Checked error.diagnostics on failure (not only top-level message)?
  • Validated + rendered key slides; chart colors verified in XML if needed?
  • Table auto-height rendered; used setTableLayout after frame-only resize if needed?
  • status.data.valid / export.data.valid true before delivery (ok: true on export is not validation)?

6. Recipe: safe iteration on an existing deck

  1. Keep the original PPTX. Record its SHA-256 (or copy) before init.
  2. deckuse init input.pptx ./ws --json then deckuse status --workspace ./ws --json. Read data.valid and data.diagnostics.
  3. If NOTES_SLIDE_MISMATCH appears and diagnostics show a single owning slide, run deckuse repair --workspace ./ws --json. Shared or unowned notes parts return AMBIGUOUS_REFERENCE — do not guess.
  4. Batch edits with apply. Prefer duplicate + local text over rewriting untouched slides.
  5. deckuse validate --workspace ./ws --json after writes. export still writes the file when invalid: treat data.valid as the gate, not envelope ok.
  6. Byte changes in unused parts after init → export (pretty-printed XML, [Content_Types].xml) are normalization, not content edits. Compare slide XML you intended to change; confirm in PowerPoint.

7. Recipe: visual QA

  1. After table insertRow / insertColumn, read TABLE_OVERLAPS_SHAPE.details.candidates and run one setTableLayout from that list in the same or next apply. Check whether the overlap warning remains after layout.
  2. deckuse render --page N --json. COMBO_CHART_RENDER_LIMITED means the PNG may be a placeholder; CHART_SERIES_COLOR_UNVERIFIED means legend/series fills may not match PowerPoint. Confirm ppt/charts/*.xml or open the exported PPTX.
  3. Do not treat community render / monitor as the final visual sign-off.

8. Word (DOCX)

Same workspace loop as PPTX. Do not send slide geometry (addShape, xfrmSet, alignElements, zMove); those return UNSUPPORTED_CAPABILITY.

bash
deckuse new ./workspace --format docx --json
# or: deckuse init report.docx ./workspace --json
deckuse list paragraphs --workspace ./workspace --json
deckuse apply --workspace ./workspace --input ops.json --json
deckuse validate --workspace ./workspace --json
deckuse export ./output.docx --workspace ./workspace --json

new without --format stays PPTX.

Addresses
  • body/p:3 — 1-based body paragraph (tables are not paragraphs)
  • body/p:3/run:0 — 0-based run
  • para:1A2B3C4D — w14:paraId
  • bookmark:Intro — bookmark. addParagraph.name creates one for same-batch forward refs
  • body/table:1/row:2/cell:1/p:1
  • style:Heading1 — read only. Apply it with paragraph.style; do not write styles.xml
replaceText

Word often splits one sentence across w:r nodes (w:proofErr, direct formatting). replaceText concatenates visible w:t text inside one paragraph, then splices only the matched span and keeps neighboring rPr. It fails instead of rewriting tracked changes, fields, comments, content controls, or equations.

Create
json
[
  {
    "type": "addParagraph",
    "after": "body/p:1",
    "style": "Heading1",
    "name": "Intro",
    "blocks": [{ "text": "总营收", "fontSize": 16, "bold": true }]
  },
  { "type": "setText", "target": "bookmark:Intro", "value": "Updated" },
  {
    "type": "addTable",
    "name": "FinTable",
    "rows": [
      ["指标", "Q3"],
      ["营收", "120"]
    ]
  }
]

deckuse render --page does not paginate DOCX. @deckflow/deck2html converts PPTX only. Export and open the file in Word for layout checks.

Schema: deckuse schema --type addParagraph --json.

© deckflow, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/deckuse of deckflow/deckuse.

Open the folder on GitHubat commit caca5f2

Compare with similar skills

Deckuse Office CLI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Deckuse Office CLI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Deckuse Office CLI this skilldeckflow/deckuse109—~3.4kAutomated safety check: PassAGPL-3.0
OfficeCLI Document EditingSylinko/Everywhere6.3k8 repos~6.3kAutomated safety check: PassCustom licence
MarkitdownImCa0/just-laws78114 repos~3.2kAutomated safety check: NotesMIT
Office File TransformCherryHQ/cherry-studio52k—~4.7kAutomated safety check: PassAGPL-3.0
MinerU Document Readeropendatalab/MinerU81k—~9.4kAutomated safety check: WarnCustom licence
GenOffice Document CLIgenspark-ai/genoffice8.8k—~19kAutomated safety check: PassApache-2.0

Similar skills

  • OfficeCLI Document Editing

    Sylinko/Everywhere

    Creates, reads, proofreads and edits Word, Excel and PowerPoint files through the officecli command line tool, with no Office installation needed.

    6.3k GitHub starsUsed in 8 repos~6.3k tokens
    Documents & OfficeAuto-check passed
  • Markitdown

    ImCa0/just-laws

    Convert files and office documents to Markdown. An agent skill from ImCa0/just-laws.

    781 GitHub starsUsed in 14 repos~3.2k tokens
    Documents & OfficeAuto-check: notes
  • Office File Transform

    CherryHQ/cherry-studio

    Derives new files from a selected part of a spreadsheet, Word document, PDF or slide deck, such as a cell range, paragraph, page or slide, without ever modifying the source file.

    52k GitHub stars~4.7k tokensUpdated today
    Documents & OfficeAuto-check passed
  • MinerU Document Reader

    opendatalab/MinerU

    Reads, OCRs, searches and cites local documents through the mineru CLI, covering PDF, images, Office files, EPUB, HTML and CSV.

    81k GitHub stars~9.4k tokensUpdated yesterday
    Documents & OfficeAuto-check: warnings
  • GenOffice Document CLI

    genspark-ai/genoffice

    Creates, converts, reads and edits real pptx, xlsx, docx and PDF files locally through the genoffice command line.

    8.8k GitHub stars~19k tokensUpdated today
    Documents & OfficeAuto-check passed
  • Docx4j

    plutext/docx4j

    A skill your agent uses when writing Java code that creates, reads or edits Word (.docx), PowerPoint (.pptx) or Excel (.xlsx) files with docx4j — including generating documents, editing existing…

    2.4k GitHub stars~2.5k tokensUpdated yesterday
    Documents & OfficeAuto-check passed

Questions about Deckuse Office CLI

What does Deckuse Office CLI do?

Drives the Deckuse CLI to inspect, create, change and verify PowerPoint and Word files through versioned workspaces and batched edits. Deckuse is a local-first engine that treats a PPTX file as a versioned workspace.pptx`.

When should I use Deckuse Office CLI?

Deckuse Office CLI fits situations like: building or restyling a PowerPoint deck from the command line; applying many slide edits in one batch; verifying a slide or Word file after changes with a rendering check.

How do I install Deckuse Office CLI in Claude Code?

Run `npx skills add deckflow/deckuse --skill deckuse -a claude-code`. Or copy the skill folder (skills/deckuse in deckflow/deckuse) into .claude/skills/deckuse in your project. Claude Code loads it when a task matches its description.

How do I install Deckuse Office CLI in Codex?

Run `npx skills add deckflow/deckuse --skill deckuse -a codex`. Or copy the skill folder (skills/deckuse in deckflow/deckuse) into .agents/skills/deckuse in your project. Codex loads it when a task matches its description.

Can I use Deckuse Office CLI in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add deckflow/deckuse --skill deckuse -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deckuse, .gemini/skills/deckuse, .github/skills/deckuse and .opencode/skills/deckuse in your project.

What does Deckuse Office CLI need to run?

SKILL.md names no scripts, command-line tools or credentials: Deckuse Office CLI is instructions for the agent only. Our summary lists: Deckuse CLI version 1.3.0 or later (community edition).

Does Deckuse Office CLI access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Deckuse Office CLI safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Deckuse Office CLI use?

Deckuse Office CLI is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Deckuse Office CLI use?

About 3.4k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Deckuse Office CLI?

Skills that share tags, products or a category with Deckuse Office CLI: OfficeCLI Document Editing (Sylinko/Everywhere, 6.3k stars), Markitdown (ImCa0/just-laws, 781 stars), Office File Transform (CherryHQ/cherry-studio, 52k stars) and MinerU Document Reader (opendatalab/MinerU, 81k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Deckuse Office CLI?

deckflow (a GitHub organization) maintains it in deckflow/deckuse, which has 109 GitHub stars. The repository was last updated on October 4, 2026.

Source: deckflow/deckuse on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.