Claude-skill-registry bpmn-to-pptx

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
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/bpmn-to-pptx" ~/.claude/skills/majiayu000-claude-skill-registry-bpmn-to-pptx && rm -rf "$T"
manifest: skills/data/bpmn-to-pptx/SKILL.md
source content

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 ElementSupportedPowerPoint 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 ElementShapeDefault FillBorder
Start EventOval#C6F6D5 (green)#38A169
End EventOval#FED7D7 (red)#E53E3E
User TaskRounded Rect#EBF8FF (light blue)#3182CE
Service TaskRounded Rect#E9D8FD (light purple)#805AD5
Decision GatewayDiamond#FEFCBF (yellow)#D69E2E
Parallel GatewayDiamond#E9D8FD (purple)#805AD5
SubprocessRounded Rect +#F7FAFC (gray)#718096
Merge GatewayDiamond#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

PropertyPurposeUsed In
primary
Main brand colorSlide titles, active chevrons, level 2 box borders
secondary
Secondary brand colorAlternating chevrons, gradients
accent
Highlight colorCall-to-action elements, emphasis
background
Slide backgroundAll slides
text_primary
Main text colorBody text, labels
text_secondary
Muted text colorSubtitles, secondary labels
task_fill
/
task_border
Task box stylingUser tasks, service tasks
decision_fill
/
decision_border
Decision diamond stylingExclusive gateways
parallel_fill
/
parallel_border
Parallel gateway stylingParallel gateways
start_fill
/
start_border
Start event stylingStart events
end_fill
/
end_border
End event stylingEnd events
subprocess_fill
/
subprocess_border
Subprocess stylingSubprocesses
merge_fill
/
merge_border
Merge gateway stylingMerge gateways

Pre-built Style Files

FileDescription
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