Claude Code Plugins

Community-maintained marketplace

Feedback

bpmn-to-pptx

@davistroy/bpmn
0
0

Transform BPMN 2.0 process diagrams into professional, editable PowerPoint presentations. Features a 3-tier hierarchical layout with chevrons, rounded boxes, and square task boxes with detailed bullet points.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name bpmn-to-pptx
version 2.0.0
description Transform BPMN 2.0 process diagrams into professional, editable PowerPoint presentations. Features a 3-tier hierarchical layout with chevrons, rounded boxes, and square task boxes with detailed bullet points.
license MIT

BPMN to PowerPoint Generator

Overview

Transforms BPMN 2.0 process diagrams into professional, editable PowerPoint presentations following consulting best practices (McKinsey/BCG standards). Automatically manages complexity by chunking processes into hierarchical slide structures with 8-10 steps per slide.

When to Use This Skill

  • Converting BPMN process maps to client-ready presentations
  • Creating stakeholder review decks from technical process diagrams
  • Generating hierarchical process overviews for executive audiences
  • Building feedback-ready process documentation

CRITICAL: Read Before Starting

  1. This skill depends on the core pptx skill - ensure you understand the html2pptx workflow
  2. Always validate generated presentations visually before delivering to users
  3. Complex processes (40+ steps) should be reviewed for potential decomposition

Input Requirements

Required

  • BPMN 2.0 XML file (.bpmn extension)

Supported BPMN Elements

BPMN Element Supported PowerPoint Representation
<bpmn:startEvent> Green oval
<bpmn:endEvent> Red oval
<bpmn:userTask> Rounded rectangle (blue)
<bpmn:serviceTask> Rounded rectangle (purple)
<bpmn:exclusiveGateway> Orange diamond
<bpmn:parallelGateway> Purple diamond with +
<bpmn:subProcess> Rounded rectangle with border
<bpmn:sequenceFlow> Connecting arrows

Optional Parameters

options:
  brand: "default" | "stratfield" | path/to/config.yaml
  max_steps_per_slide: 10          # Default: 10, Range: 6-12
  include_overview: true           # Default: true
  include_decision_summary: false  # Default: false
  feedback_mode: false             # Default: false (adds input zones)
  output_filename: "process.pptx"

Output Structure

The skill generates a multi-slide deck:

  1. Title Slide - Process name and metadata
  2. Overview Slide - Phase-level chevron diagram (max 7 phases)
  3. Phase Detail Slides - One per phase with 3-tier hierarchical layout:
    • Level 1 (Chevrons): All phases shown as chevrons, with current phase highlighted
    • Level 2 (White Rounded Boxes): Task groups/categories within the phase
    • Level 3 (Gray Square Boxes): Individual tasks/activities
    • Bullet Points: Detailed descriptions of each task below the boxes
  4. Decision Summary - (Optional) Key decision points listed

Usage

Step 1: Parse the BPMN File

from src.bpmn_parser import BPMNParser

parser = BPMNParser()
process = parser.parse("/path/to/process.bpmn")

print(f"Process: {process.name}")
print(f"Elements: {len(process.elements)}")
print(f"Phases: {len(process.phases)}")

Step 2: Generate the Presentation

from src.slide_generator import ProcessPresentationGenerator

generator = ProcessPresentationGenerator(
    brand_config="default",  # or "stratfield" or path to YAML
    max_steps_per_slide=10
)

output_path = generator.generate(process, "output.pptx")

Step 3: Visual Validation

# Convert to images for review
soffice --headless --convert-to pdf output.pptx
pdftoppm -jpeg -r 150 output.pdf slide

Complete Example

#!/usr/bin/env python3
"""Generate PowerPoint from BPMN file."""

from src.bpmn_parser import BPMNParser
from src.slide_generator import ProcessPresentationGenerator

# Parse BPMN
parser = BPMNParser()
process = parser.parse("rochester-2g-rebuild.bpmn")

# Generate presentation
generator = ProcessPresentationGenerator(
    brand_config="default",
    max_steps_per_slide=10,
    include_overview=True
)

output_path = generator.generate(process, "carburetor-rebuild.pptx")
print(f"Generated: {output_path}")

Design Principles Applied

1. Pyramid Principle (Barbara Minto/McKinsey)

  • Action titles state the "so what" - complete sentences with insights
  • Overview before details - high-level view first, then drill down
  • MECE structure - Mutually Exclusive, Collectively Exhaustive phases

2. Cognitive Load Management

  • 8-10 Step Limit per slide (based on Miller's research)
  • Max 7 Phases on overview slide
  • Progressive disclosure through hierarchical navigation

3. Visual Hierarchy

  • 3-Tier Layout: Each phase slide shows chevrons → rounded boxes → square boxes
    • Level 1 (Chevrons): Phase navigation - shows all phases with current highlighted
    • Level 2 (White Rounded Boxes): Task group categories - conceptual groupings
    • Level 3 (Gray Square Boxes): Individual tasks - specific activities
  • Bullet points below provide detailed descriptions for each task
  • Single row per level for clean, scannable layout

4. Consulting Standards

  • Action titles (not labels)
  • 20-25% whitespace for annotations
  • Numbered decision points for discussion

BPMN Element Mapping

BPMN Element Shape Default Fill Border
Start Event Oval #C6F6D5 (green) #38A169
End Event Oval #FED7D7 (red) #E53E3E
User Task Rounded Rect #EBF8FF (light blue) #3182CE
Service Task Rounded Rect #E9D8FD (light purple) #805AD5
Decision Gateway Diamond #FEFCBF (yellow) #D69E2E
Parallel Gateway Diamond #E9D8FD (purple) #805AD5
Subprocess Rounded Rect + #F7FAFC (gray) #718096
Merge Gateway Diamond #E2E8F0 (gray) #718096

Brand Configuration

Create custom brand configurations in JSON or YAML format. JSON is recommended for portability.

JSON Style Format (Recommended)

{
  "name": "My Company",
  "colors": {
    "primary": "1A365D",
    "secondary": "2B6CB0",
    "accent": "ED8936",
    "background": "FFFFFF",
    "text_primary": "1A202C",
    "text_secondary": "4A5568",

    "task_fill": "EBF8FF",
    "task_border": "3182CE",
    "decision_fill": "FEFCBF",
    "decision_border": "D69E2E",
    "parallel_fill": "E9D8FD",
    "parallel_border": "805AD5",
    "start_fill": "C6F6D5",
    "start_border": "38A169",
    "end_fill": "FED7D7",
    "end_border": "E53E3E",
    "subprocess_fill": "F7FAFC",
    "subprocess_border": "718096",
    "merge_fill": "E2E8F0",
    "merge_border": "718096"
  },
  "fonts": {
    "title": "Calibri Light",
    "heading": "Calibri",
    "body": "Calibri",
    "sizes": {
      "slide_title": 28,
      "action_title": 16,
      "phase_label": 14,
      "shape_text": 10,
      "footnote": 8
    }
  },
  "layout": {
    "slide_width": 13.333,
    "slide_height": 7.5,
    "margin_left": 0.5,
    "margin_right": 0.5,
    "margin_top": 0.75,
    "margin_bottom": 0.5,
    "shape_width": 1.4,
    "shape_height": 0.6,
    "shape_gap_h": 0.3,
    "shape_gap_v": 0.7
  }
}

Color Properties Reference

Property Purpose Used In
primary Main brand color Slide titles, active chevrons, level 2 box borders
secondary Secondary brand color Alternating chevrons, gradients
accent Highlight color Call-to-action elements, emphasis
background Slide background All slides
text_primary Main text color Body text, labels
text_secondary Muted text color Subtitles, secondary labels
task_fill / task_border Task box styling User tasks, service tasks
decision_fill / decision_border Decision diamond styling Exclusive gateways
parallel_fill / parallel_border Parallel gateway styling Parallel gateways
start_fill / start_border Start event styling Start events
end_fill / end_border End event styling End events
subprocess_fill / subprocess_border Subprocess styling Subprocesses
merge_fill / merge_border Merge gateway styling Merge gateways

Pre-built Style Files

File Description
cfa-style.json CFA Institute brand (deep blue/purple palette)
sfc-style.json Stratfield Consulting brand (navy/gold palette)
default.yaml Default blue/orange palette
stratfield.yaml Stratfield Consulting (YAML format)

Usage with Style Files

# Using JSON style file
generator = ProcessPresentationGenerator(
    brand_config="templates/brand_configs/cfa-style.json"
)

# Using preset name
generator = ProcessPresentationGenerator(
    brand_config="stratfield"
)

YAML Format (Legacy)

# brand_configs/my_brand.yaml
brand:
  name: "My Company"

colors:
  primary: "1A365D"
  secondary: "2B6CB0"
  accent: "ED8936"
  background: "FFFFFF"

  # Process element colors (optional - uses defaults if not specified)
  task_fill: "EBF8FF"
  task_border: "3182CE"
  decision_fill: "FEFCBF"
  decision_border: "D69E2E"

fonts:
  title: "Calibri Light"
  heading: "Calibri"
  body: "Calibri"
  sizes:
    slide_title: 28
    action_title: 16
    shape_text: 10

layout:
  slide_width: 13.333  # inches (16:9)
  slide_height: 7.5
  max_lanes: 5
  shape_width: 1.4
  shape_height: 0.6

Phase Detection

The skill detects phases in this priority order:

  1. Explicit XML Comments - <!-- Phase 1: Name --> markers in BPMN
  2. Subprocess Boundaries - Each subprocess becomes a phase
  3. Auto-Chunking - Groups of 8-10 elements with breaks at:
    • Parallel gateway splits
    • Major decision points
    • Natural process breaks

Limitations

  • Maximum 50 elements recommended (larger processes should be decomposed)
  • Swimlanes not yet supported (single-lane horizontal flow only)
  • Collapsed subprocesses shown as single shape (not expanded)
  • Complex nested gateways may require manual adjustment

File Structure

bpmn-to-pptx/
├── SKILL.md                    # This file
├── src/
│   ├── __init__.py
│   ├── bpmn_parser.py          # BPMN XML parsing
│   ├── process_model.py        # Data structures
│   ├── hierarchy_builder.py    # Phase detection & chunking
│   ├── slide_generator.py      # Main orchestration
│   ├── html_templates.py       # HTML slide templates
│   └── brand_config.py         # Brand configuration loader
├── templates/
│   └── brand_configs/
│       ├── style-schema.json   # JSON schema for style files
│       ├── cfa-style.json      # CFA Institute brand colors
│       ├── sfc-style.json      # Stratfield Consulting brand
│       ├── default.yaml        # Default brand (YAML)
│       └── stratfield.yaml     # Stratfield brand (YAML)
└── examples/
    └── rochester-2g-rebuild.bpmn

Dependencies

This skill requires the core pptx skill and its dependencies:

  • python-pptx (via pptx skill)
  • lxml (for BPMN XML parsing)
  • pyyaml (for brand configuration)

Troubleshooting

"Phase detection failed"

  • Ensure BPMN file has proper sequence flows connecting all elements
  • Check for orphaned elements without incoming/outgoing flows

"Too many elements for single slide"

  • Reduce max_steps_per_slide parameter
  • Consider splitting the process into subprocesses in the BPMN source

"Gateway layout overlap"

  • Complex nested gateways may require manual HTML adjustment
  • Consider simplifying the BPMN structure

See Also