npx skills add https://github.com/eddiebe147/claude-settings --skill presentation-makerSKILL.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:
- Import
pptxgenjsand create Presentation instance - Define presentation properties (title, author, company)
- Add title slide with company branding
- Add content slides with bullet points
- Apply consistent theme and fonts
- Add slide numbers
- 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:
- Create presentation
- Prepare chart data (labels and values)
- Add chart slide with title
- Define chart type (bar, line, pie, scatter, etc.)
- Configure chart options (colors, legend, axes)
- Add data labels and formatting
- 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:
- Load or define master slide layouts
- Set theme colors and fonts
- Define slide lay
...