Skip to content

feat: add presentation creation tool #786

Description

@avoidwork

Summary

Add a tool to create PowerPoint presentations (.pptx) from structured content — slides, layouts, formatting, and media.

Motivation

The existing PPTX tool (src/tools/fileExtract/pptx.js) is read-only — it extracts content from existing presentations. Marketing teams live in slide decks: creating pitch decks, status reports, training materials, and client presentations. Currently the agent can only read PPTX files, not create them. Users must fall back to shell commands (python-pptx, libreoffice) or manual creation, which is fragile and loses formatting fidelity.

Proposed Solution

Create a presentation creation tool that accepts structured content and generates .pptx files:

  • Slide creation: Add slides with titles, bullet points, images, charts
  • Layout support: Title slide, content slide, two-column, comparison, quote, image-only layouts
  • Formatting: Font styles, colors, alignment, spacing
  • Media: Embed images, charts, tables
  • Template support: Apply existing PPTX templates or create from scratch
  • Output: Save as .pptx file path

Each tool should follow the existing tool pattern in src/tools/ — a zod schema, an impl function, and registration in index.js with filesystem:write permission.

Alternatives Considered

  • Shell-based tools (python-pptx, libreoffice): fragile, requires user-installed dependencies, no structured input.
  • Read-only PPTX extraction: insufficient for creation workflows.
  • Web-based presentation service: adds infrastructure complexity for a local-first tool.

OpenSpec Note

This project uses OpenSpec for feature development. If this request is approved, I will:

  1. Run /opsx:propose to generate a full proposal with specs and tasks
  2. Iterate on the design before any code is written
  3. Follow the task-driven implementation workflow

Additional Context

This should integrate with the document creation gap (#778) and text processing gap (#784) — e.g., generating marketing copy and then creating a slide deck from it. The existing pptx.js read tool (src/tools/fileExtract/pptx.js) would serve as the input layer for reading existing presentations as templates.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions