presentation-maker

from eddiebe147/claude-settings

No description

6 stars1 forksUpdated Jan 22, 2026
npx skills add https://github.com/eddiebe147/claude-settings --skill presentation-maker

SKILL.md

Presentation Maker

The Presentation Maker skill enables automated creation of professional PowerPoint presentations (.pptx) with custom layouts, themes, charts, images, and multimedia. Using libraries like pptxgenjs, this skill handles everything from simple slide decks to complex presentations with data visualizations and animations.

Create pitch decks, training materials, reports, project updates, and any presentation content programmatically. Support for master slides, themes, charts, tables, images, shapes, and speaker notes makes this a complete solution for presentation automation.

Core Workflows

Workflow 1: Create Basic Presentation

Purpose: Build a simple presentation with title and content slides

Steps:

  1. Import pptxgenjs and create Presentation instance
  2. Define presentation properties (title, author, company)
  3. Add title slide with company branding
  4. Add content slides with bullet points
  5. Apply consistent theme and fonts
  6. Add slide numbers
  7. Export to .pptx file

Implementation:

const PptxGenJS = require('pptxgenjs');

function createBasicPresentation(content, outputPath) {
  const pptx = new PptxGenJS();

  // Set presentation properties
  pptx.author = 'Company Name';
  pptx.company = 'Company Name';
  pptx.subject = content.subject;
  pptx.title = content.title;

  // Title slide
  let slide = pptx.addSlide();
  slide.background = { color: '2C3E50' };
  slide.addText(content.title, {
    x: 0.5,
    y: 2.5,
    w: '90%',
    h: 1.5,
    fontSize: 44,
    bold: true,
    color: 'FFFFFF',
    align: 'center'
  });
  slide.addText(content.subtitle, {
    x: 0.5,
    y: 4.0,
    w: '90%',
    fontSize: 24,
    color: 'BDC3C7',
    align: 'center'
  });

  // Content slides
  content.slides.forEach(slideData => {
    let slide = pptx.addSlide();

    // Title
    slide.addText(slideData.title, {
      x: 0.5,
      y: 0.5,
      w: '90%',
      h: 0.75,
      fontSize: 32,
      bold: true,
      color: '2C3E50'
    });

    // Bullet points
    slide.addText(slideData.bullets, {
      x: 0.5,
      y: 1.5,
      w: '90%',
      h: 4.0,
      fontSize: 18,
      bullet: true,
      color: '34495E'
    });

    // Slide number
    slide.addText(`${pptx.getSlideNumber()}`, {
      x: 9.0,
      y: 7.0,
      w: 0.5,
      h: 0.3,
      fontSize: 12,
      color: '95A5A6',
      align: 'right'
    });
  });

  pptx.writeFile({ fileName: outputPath });
}

Workflow 2: Add Charts and Data Visualizations

Purpose: Create slides with embedded charts from data

Steps:

  1. Create presentation
  2. Prepare chart data (labels and values)
  3. Add chart slide with title
  4. Define chart type (bar, line, pie, scatter, etc.)
  5. Configure chart options (colors, legend, axes)
  6. Add data labels and formatting
  7. Position chart on slide

Implementation:

function createPresentationWithCharts(data, outputPath) {
  const pptx = new PptxGenJS();

  // Bar chart slide
  let slide = pptx.addSlide();
  slide.addText('Quarterly Revenue', {
    x: 0.5, y: 0.5, w: '90%', fontSize: 32, bold: true
  });

  const chartData = [
    {
      name: 'Revenue',
      labels: data.quarters,
      values: data.revenue
    }
  ];

  slide.addChart(pptx.ChartType.bar, chartData, {
    x: 1.0,
    y: 1.5,
    w: 8.0,
    h: 4.5,
    chartColors: ['2E74B5'],
    showTitle: false,
    showLegend: true,
    legendPos: 'b',
    valAxisMaxVal: Math.max(...data.revenue) * 1.2,
    dataLabelFormatCode: '$#,##0',
    showValue: true
  });

  // Pie chart slide
  slide = pptx.addSlide();
  slide.addText('Market Share', {
    x: 0.5, y: 0.5, w: '90%', fontSize: 32, bold: true
  });

  const pieData = [
    { name: 'Product A', labels: ['Share'], values: [35] },
    { name: 'Product B', labels: ['Share'], values: [28] },
    { name: 'Product C', labels: ['Share'], values: [22] },
    { name: 'Others', labels: ['Share'], values: [15] }
  ];

  slide.addChart(pptx.ChartType.pie, pieData, {
    x: 2.0,
    y: 1.5,
    w: 6.0,
    h: 4.5,
    showPercent: true,
    chartColors: ['2E74B5', '5DA5DA', '60BD68', 'F17CB0']
  });

  // Line chart for trends
  slide = pptx.addSlide();
  slide.addText('Growth Trend', {
    x: 0.5, y: 0.5, w: '90%', fontSize: 32, bold: true
  });

  const lineData = [
    {
      name: '2024',
      labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
      values: [10, 15, 13, 18, 22, 25]
    },
    {
      name: '2025',
      labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun'],
      values: [12, 18, 16, 22, 27, 32]
    }
  ];

  slide.addChart(pptx.ChartType.line, lineData, {
    x: 1.0,
    y: 1.5,
    w: 8.0,
    h: 4.5,
    lineSmooth: true,
    chartColors: ['2E74B5', 'E74C3C']
  });

  pptx.writeFile({ fileName: outputPath });
}

Workflow 3: Create Presentation from Template

Purpose: Use a master slide template for consistent branding

Steps:

  1. Load or define master slide layouts
  2. Set theme colors and fonts
  3. Define slide lay

...

Read full content

Repository Stats

Stars6
Forks1