slides-edit
Slides Edit
You are a slide editor. Your job is to make precise, targeted changes to existing decks without breaking what already works.
Modify an existing deck — text changes, layout transforms, and structural edits.
When to Use
- Fix typos or update text in an existing deck
- Apply archetype transforms to restyle slides
- Add/remove/move slides via ops patches
- Any targeted modification that doesn't require a full rebuild
Prerequisites
- An existing
output.pptxin a project directory - Optionally:
slides.json(for context) anddesign-profile.json(for QA)
Step 0) Find the project directory
Ask the user which project to edit, or discover it:
find . -name "design-profile.json" -maxdepth 3
All subsequent commands run from within the project directory.
Process
Step 1) Locate targets
Inspect the deck to find slide/shape UIDs:
uvx --from agent-slides slides inspect output.pptx \
--fields slides.slide_uid,slides.shapes.shape_uid,slides.title \
--out ids.json --compact
Search for specific text:
uvx --from agent-slides slides find output.pptx --query "<search text>" --limit 10 \
--out find.json --compact
Pagination for large decks:
uvx --from agent-slides slides inspect output.pptx --page-size 5 --page-token 0 --compact
Other inspection:
uvx --from agent-slides slides inspect output.pptx --placeholders 0 --compact # placeholders on slide 0
uvx --from agent-slides slides inspect output.pptx --summary --compact # deck summary
Step 2) Pre-edit assessment
Before making changes, briefly note:
- What works well in the current deck (preserve these strengths)
- Scope of change — which slides are affected and which are untouched
- Risk — could this edit break layout, contrast, or narrative flow?
This prevents over-editing and protects existing quality.
Step 3) Apply changes
Text edits (find-and-replace scoped by UID):
uvx --from agent-slides slides edit output.pptx --query "old text" \
--replacement "new text" --slide-uid "<slide_uid>" \
--shape-uid "<shape_uid>" --output output.pptx --compact
Alternative selectors: --slide <index>, --slide-id <slide-N>, --shape-id <shape_id>.
Archetype transforms (restyle a slide):
uvx --from agent-slides slides transform output.pptx --slide-uid "<slide_uid>" \
--to timeline --output output.pptx --compact
Ops-based patches (apply additional operations):
uvx --from agent-slides slides apply output.pptx --ops-json @patch_ops.json --output output.pptx --compact
Write patch_ops.json as:
{
"operations": [
{"op": "replace_text", "slide_index": 3, "old": "Draft", "new": "Final"},
{"op": "add_text", "slide_index": 5, "text": "New insight", "left": 1.0, "top": 5.0, "width": 4.0, "height": 0.5, "font_size": 16}
]
}
Step 4) Verify changes
uvx --from agent-slides slides find output.pptx --query "new text" --compact
Step 5) Re-run QA
uvx --from agent-slides slides qa output.pptx --profile design-profile.json \
--slides-json @slides.json --out qa.json --compact
Step 6) Repair (if needed)
uvx --from agent-slides slides repair output.pptx --output output.pptx
Placeholder Rules
- Never use
set_placeholder_textwith guessed indices. Useset_semantic_textwithrole(title,subtitle,body) for standard placeholders. - Only use
set_placeholder_textwith exactidxfrominspectortemplate_layout.json. --queryonly replaces text content, not formatting (font size, color, bold). To change formatting, use ops patches with newadd_textops.
Anti-patterns (what NOT to do)
- Don't use
--queryto fix formatting (font size, color, bold) — it only replaces text content. Use ops patches instead. - Don't guess placeholder indices — use
set_semantic_textwithroleor exactidxfrom inspect - Don't edit without inspecting first — always locate targets with
inspectorfind - Don't overwrite the input file without verifying the edit worked (
findorinspectafter) - Don't restructure narrative or rewrite content (that's
/slides-critiqueor/slides-build)
Error Handling
On any slides error, run uvx --from agent-slides slides docs method:edit to verify the current contract before retrying.
Acceptance Criteria
- Edits are verifiable via
findorinspectsubcommands. qa.jsonreports"ok": true.- No unresolved-token or contract-critical issues.