Skip to main content

AI-native prototype quality toolkit — Agent Skill + review workflow CLI

Project description

fppt

AI-generated decks stop at title-only outlines. fppt is the missing presentation workflow that turns your brief into a presentable, theme-polished deck — with a built-in feedback loop that keeps every iteration sharp. An open-source alternative to Gamma and Beautiful.ai.

PyPI version Python License Agents Coverage


The Problem: The "Title-Only Outline" Trap

Asking AI to "make me a deck" always starts promising. It spits out a neat outline in seconds. But that's where it stops.

Because AI lacks presentation design discipline, it fills slides with placeholder titles, reuses the same generic layout for every page, and has no idea what your brand looks like. What you hoped would be a ready-to-present deck becomes a title-only outline — a skeleton you'll have to manually flesh out, design, and polish yourself.

Why does this happen? AI is great at generating structure forward, but has zero taste for visual storytelling. It doesn't know your audience, your brand, or what makes a slide memorable. It's like asking a copy machine to be an art director.

WITHOUT fppt

  Prompt:     "Make a pitch deck for our SaaS product"
  Output:     15 slides, all title-only
  Slide 3:    "Market Opportunity" ← no data, no chart, no narrative
  Slide 7:    "Product Demo"       ← no screenshots, no flow, no story
  Slide 12:   "Team"               ← just names, no credibility

  Result: You spend 6 hours filling content and 3 more making it look decent.
WITH fppt

  Prompt:     "Make a pitch deck for our SaaS product"
  Step 1:     MECE outline confirmed with you ✓
  Step 2:     Every slide filled with claims, data, diagrams, and speaker notes ✓
  Step 3:     You pick a theme — cyberpunk, executive, or your own brand ✓
  Step 4:     AI authors a polished, theme-specific presentation UI ✓
  Step 5:     You review, give feedback, fppt rebuilds — loop until perfect ✓

  Result: A presentable deck. From brief to screen. In one workflow.

What fppt Does

fppt transforms your AI from a "slide-title generator" into a complete presentation author. It locks the AI into a structured workflow: confirm the story first, fill every slide with real content, then render it through a visual theme you choose.

Instead of generating a flat list of slide titles, the AI must build a MECE content structure, populate audience-facing material, and produce a theme-authored HTML presentation. fppt then validates, packages, and quality-checks the output — catching empty slides, broken navigation, and missing data before you ever open the file.

flowchart TD
    Brief(["Your Brief: topic, audience, goal"]) --> MECE["Step 1: MECE Outline"]
    MECE -.->|"Confirm with you"| MECE

    MECE --> Content["Step 2: Fill Every Slide"]
    Content --> Theme["Step 3: Pick a Theme"]

    subgraph "🎨 Theme System"
        Theme --> BuiltIn["Built-in: cyberpunk, paper, executive..."]
        Theme --> Custom["Custom: your brand, your style"]
    end

    BuiltIn --> Author["Step 4: AI Authors Presentation UI"]
    Custom --> Author

    Author --> Validate["Step 5: fppt deck validate"]
    Validate -.->|"❌ Errors found"| Content

    Validate --> Build["Step 6: fppt deck build"]
    Build --> Check{"Step 7: fppt deck check"}

    Check -.->|"❌ Fails: missing data, broken nav"| Author
    Check -->|"✅ Passes"| Review["Step 8: You Review"]

    Review -.->|"🔄 Feedback"| Content
    Review -->|"✅ Approved"| Done(["Presentable Deck"])

    style Check fill:#ffe6e6,stroke:#ff6b6b,stroke-width:2px
    style Theme fill:#e6f0ff,stroke:#4a90d9,stroke-width:2px

Why fppt

For Individuals (Founders, Consultants, Speakers)

You have the point. fppt brings the presentation.

You know your topic cold. What you don't have is 10 hours to design slides. fppt takes your brief, builds a structured narrative, fills every slide with substance, and renders it through a theme you choose. You review, you refine, you present. No design skills required.

For Teams (Brands, Agencies, Developer Advocates)

One brand. One theme. Every deck, every time.

Your team gives talks, pitches clients, and runs webinars. Without a system, every deck looks different — different fonts, different colors, different quality. fppt lets you define your brand as a custom theme once, then every deck your team generates automatically inherits it. Consistency at scale, without a design bottleneck.


Use Cases

Scenario 1: From Brief to Presentable — One Workflow, Zero Design Time

Problem: You have a talk next week. You know the topic, the audience, and the key points. But turning that into a polished deck means: outline → content → design → tweak → export. Each step is a different tool, a different skillset, and hours of manual work.

fppt Solution: You give the AI your brief — topic, audience, goal, must-cover points. The AI proposes a MECE outline for your approval. Once confirmed, it fills every slide with claims, data, Mermaid diagrams, ApexCharts, demo steps, and speaker notes. You pick a theme. The AI authors a complete, theme-polished HTML presentation. From brief to presentable. One workflow. One tool.

Brief: "I need a 20-min investor pitch for our AI devtool startup.
        Audience: seed-stage VCs. Must cover: problem, solution,
        traction, team, ask."

fppt:   MECE outline → you confirm →
        18 slides with market data charts, product demo flow,
        team credibility matrix, financial projections →
        you pick "executive" theme →
        AI authors presentation UI →
        you review, tweak 2 slides, rebuild →
        done. Presentable.

Scenario 2: Your Brand, Your Theme — Define Once, Apply Everywhere

Problem: Your company has a brand guide — specific colors, fonts, logo placement, tone. But every AI-generated deck ignores it. You end up manually restyling every slide, every time. And when your colleague generates a deck? Completely different look. Brand consistency is impossible.

fppt Solution: Create your brand as a custom theme once. Define your color palette, typography, chart style, and layout preferences in a single YAML file. Every deck your team generates — pitch decks, webinars, conference talks, internal reports — automatically renders in your brand. Change the brand color? Update one theme file, rebuild all decks. Consistency at scale.

Step 1:  fppt theme create acme-brand --prompt "
           Acme Inc brand: deep navy #0A1628, accent coral #FF6B6B,
           Inter font family, clean Swiss-design layouts,
           data-heavy charts with coral highlights,
           minimal animation, board-room confidence."

Step 2:  Any deck with themes: [acme-brand] now renders in your brand.

Step 3:  Rebrand? Update acme-brand.yaml. Rebuild. Every deck syncs.

Scenario 3: The Feedback Loop — Iterate Without Starting Over

Problem: You review a deck. Slide 5 needs a different chart. Slide 8 is too dense. The CTA on slide 15 is weak. In traditional tools, you manually edit each slide. With AI-generated decks, you usually have to re-prompt and hope it doesn't mess up the rest. There's no structured way to say "fix these three things and leave everything else alone."

fppt Solution: fppt's feedback loop is built into the workflow. Content lives in YAML — the single source of truth. Visual presentation lives in themed HTML. When you give feedback, the AI updates the YAML (for content changes) or the theme/authored UI (for visual changes), then re-validates and rebuilds. Only what changed is affected. The rest stays intact. Iterate until it's right — without starting over.

Review Round 1:
  You:    "Slide 5: swap bar chart for a trend line.
           Slide 8: split into two slides.
           Slide 15: stronger CTA, add a quote."
  fppt:   AI updates deck YAML → validate → rebuild → check.
          Only slides 5, 8, 15 change. Everything else untouched.

Review Round 2:
  You:    "The executive theme feels too cold. Try cyberpunk."
  fppt:   Swap theme in deck YAML → AI authors new presentation UI →
          validate → build → check. Same content, new look.

Review Round 3:
  You:    "Perfect. Ship it."
  fppt:   Build static HTML. Ready to share.

Features

  • End-to-End Workflow: From brief to presentable deck in one tool. MECE outline → content population → theme selection → AI-authored UI → validate → build → review loop.
  • Built-in Theme Library: Start with polished themes — cyberpunk, executive, paper, and more. Each theme defines color systems, typography, chart palettes, Mermaid styles, and animation rhythm.
  • Custom Theme System: Define your brand once as a custom theme. Colors, fonts, layout preferences, chart styles — all in a single YAML file. Every deck inherits it. Rebrand by updating one file. Themes live in your workspace (.fppt/themes/), never mixed into public packages.
  • MECE Content Structure: AI proposes a mutually exclusive, collectively exhaustive outline before writing a single slide. You confirm the story first, then the AI fills every slide with audience-facing substance.
  • AI-Authored Presentation UI: Not a generic YAML renderer. The AI designs a unique, theme-aware HTML presentation with layout systems, motion, diagrams, and charts tailored to your content.
  • Dual-Layer Architecture: Theme-neutral Shell (outline, i18n, theme switcher, present mode) + themed Presentation pages. Switch themes without touching content.
  • Built-in Quality Gates: deck validate checks YAML structure. deck build packages deterministically. deck check verifies data injection, hash navigation, and shell/presentation boundaries.
  • Iterative Feedback Loop: Content lives in YAML (SSOT). Visuals live in themed HTML. Feedback updates the right layer. Validate → build → check → review. Repeat until perfect.
  • Static HTML Delivery: Final output is a self-contained index.html. No server, no login, no dependencies. Share it, host it, present it anywhere.
  • Multi-Agent Support: Works with GitHub Copilot, Cursor, Claude Code, OpenCode, and more.

Highlights: The Quality Mechanisms

To keep the AI honest and the output presentable, fppt enforces a structured workflow with automated quality gates at every step.

  • 🫂 Human in the Loop: MECE outline, theme selection, and final review all pause for your explicit confirmation. The AI proposes; you decide.
  • ✅ Forward Validate: fppt deck validate checks YAML structure, slide completeness, diagram references, and theme compatibility before building.
  • 🔁 Backward Check: fppt deck check scans the built HTML for injected data, hash navigation support, shell/presentation boundary violations, and missing slide content after packaging.

Supported Agents

Agent Command
GitHub Copilot fppt enable copilot
Cursor fppt enable cursor
Claude Code fppt enable claude
Trae IDE fppt enable trae
Qwen Code fppt enable qwen-code
OpenCode fppt enable opencode
OpenClaw fppt enable openclaw
OpenAI Codex fppt enable codex

Installation

pip install fppt

Verify:

fppt --version

Quick Start

# 1. Initialize fppt in your project
cd your-talk-project
fppt init

# 2. Install skills into your AI agent
fppt enable copilot     # or: cursor, claude, trae, qwen-code, opencode, openclaw

# 3. Prompt your AI Agent
# Just tell it what you want to present (e.g., "Build a pitch deck for our SaaS product").
# The installed fppt skill will guide it through MECE outline → content → theme → build.

# 4. Preview the result
# Open build/<deck-id>/index.html in your browser.
# Use Arrow keys to navigate, click outline to jump, press P for present mode.

Workspace

.fppt/
├─ preference.csv                  # Your reusable presentation preferences
├─ themes/                         # Your custom brand themes
│  └─ acme-brand.yaml
└─ projects/<project>/
   ├─ project.json
   ├─ decks/<deck-id>.yaml         # Content SSOT (MECE structure)
   ├─ presentations/<deck-id>/     # AI-authored themed UI
   │  ├─ cyberpunk.html
   │  └─ executive.html
   └─ build/<deck-id>/             # Packaged output
      ├─ index.html                # Neutral shell
      ├─ manifest.json
      └─ presentations/
         ├─ cyberpunk.html
         └─ executive.html

Commands

# Project management
fppt project list
fppt project create my-talk --title "How to Build Agent Skills"

# Preferences
fppt preference list
fppt preference add "Prefer concise slide copy"

# Themes
fppt theme list
fppt theme create acme-brand --prompt "Clean Swiss design, navy and coral"

# Deck workflow
fppt deck init demo --project my-talk
fppt deck validate demo --project my-talk
fppt deck build demo --project my-talk
fppt deck check demo --project my-talk

For Contributors

fppt is fundamentally a tool for Agent Engineering — we welcome contributors looking to expand the theme library, harden validation mechanics, or add support for new AI agents.

Getting Started

# 1. Fork and clone the repository
git clone https://github.com/<your-username>/fppt.git
cd fppt

# 2. Install inside a virtual environment for development
pip install -e ".[test]"

# 3. Run the test suite (fppt maintains 100% coverage)
PYTHONPATH=src pytest --cov=fppt --cov-report=term-missing --cov-fail-under=100

# 4. Want to add a new built-in theme?
# Add your YAML prompt template in: src/fppt/themes/

# 5. Want to add a new AI Agent to `fppt enable`?
# Add yours directly in: src/fppt/skills.py

Star History

Star History Chart


License

This project is licensed under the MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fppt-1.0.0.tar.gz (53.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fppt-1.0.0-py3-none-any.whl (39.9 kB view details)

Uploaded Python 3

File details

Details for the file fppt-1.0.0.tar.gz.

File metadata

  • Download URL: fppt-1.0.0.tar.gz
  • Upload date:
  • Size: 53.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fppt-1.0.0.tar.gz
Algorithm Hash digest
SHA256 c69d76b194a9835a52ee9dc937ed86aaad64760c975a649b230f2b9f57fc9d76
MD5 068139662ad19416f90ee1255dd327df
BLAKE2b-256 ef23ee196ce2bd8a43ca512e7f5275578d93fe3c56d8c5b0577a18c41813aab7

See more details on using hashes here.

Provenance

The following attestation bundles were made for fppt-1.0.0.tar.gz:

Publisher: release.yml on lijma/fppt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fppt-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: fppt-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 39.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fppt-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f909e864e74714e057d3af6b71630f481af5c5e954a088ebb146d9ce5b3b86f3
MD5 9d118e953dc8fbf9e3c58d132ff7519d
BLAKE2b-256 7fbd5e161719fdb6d25d00a3ec7a8d3155fbe5562fcfdcdef384e0a827f20c2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for fppt-1.0.0-py3-none-any.whl:

Publisher: release.yml on lijma/fppt

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page