MCP HubMCP Hub
스킬 목록으로 돌아가기

when-creating-presentations-use-pptx-generation

DNYoussef
업데이트됨 Today
685 조회
3
3
GitHub에서 보기
기타presentationpptxslidesenterprisedocumentation

정보

이 Claude Skill은 전문적인 PowerPoint 프레젠테이션을 생성하며, 엄격한 디자인 제약 조건과 접근성 준수 사항을 적용합니다. 이는 기업 수준의 슬라이드 데크가 필요한 경우, 이사회 보고용 데크, 보고서 또는 데이터 시각화 자료를 작성할 때 이상적입니다. 본 스킬은 근거 기반 프롬프팅을 활용하여 구조화된 PPTX 파일을 노트 및 접근성 보고서와 함께 생성합니다.

빠른 설치

Claude Code

추천
기본
npx skills add DNYoussef/ai-chrome-extension
플러그인 명령대체
/plugin add https://github.com/DNYoussef/ai-chrome-extension
Git 클론대체
git clone https://github.com/DNYoussef/ai-chrome-extension.git ~/.claude/skills/when-creating-presentations-use-pptx-generation

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서

PPTX Generation - Enterprise Presentation Creator

Overview

Enterprise-grade PowerPoint deck generation system using evidence-based prompting techniques, workflow enforcement, and constraint-based design for professional presentations (board decks, reports, analyses). Supports 30+ slide decks with consistent visual quality and accessibility compliance.

When to Use

  • Creating board-level presentations
  • Quarterly business reviews
  • Technical documentation slides
  • Data-heavy reports
  • Executive summaries
  • Client proposals
  • Training materials

Phase 1: Research Content (8 min)

Objective

Gather and structure presentation information

Agent: Researcher

Step 1.1: Content Gathering

const contentStructure = {
  metadata: {
    title: 'Presentation Title',
    subtitle: 'Subtitle',
    author: 'Author Name',
    date: new Date(),
    audience: 'executive|technical|general',
    purpose: 'inform|persuade|instruct'
  },
  outline: [
    {
      section: 'Introduction',
      slides: ['Title', 'Agenda', 'Executive Summary']
    },
    {
      section: 'Main Content',
      slides: ['Key Points', 'Data Analysis', 'Recommendations']
    },
    {
      section: 'Conclusion',
      slides: ['Summary', 'Next Steps', 'Q&A']
    }
  ],
  dataPoints: extractDataPoints(),
  visualizations: identifyVisualizations()
};

await memory.store('pptx/content-structure', contentStructure);

Step 1.2: Data Analysis

async function analyzeData(data) {
  return {
    tables: extractTables(data),
    charts: identifyChartOpportunities(data),
    trends: analyzeTrends(data),
    insights: generateInsights(data)
  };
}

Validation Criteria

  • Content structure defined
  • Data points extracted
  • Visualization types identified
  • Outline complete

Phase 2: Design Layout (7 min)

Objective

Create presentation design following constraints

Agent: Coder

Step 2.1: Define Design System

const designSystem = {
  colors: {
    primary: '#2C3E50',
    secondary: '#3498DB',
    accent: '#E74C3C',
    text: '#2C3E50',
    background: '#FFFFFF'
  },
  fonts: {
    heading: { face: 'Calibri', size: 32, bold: true },
    subheading: { face: 'Calibri', size: 24, bold: true },
    body: { face: 'Calibri', size: 18 },
    caption: { face: 'Calibri', size: 14, italic: true }
  },
  layout: {
    marginX: 0.5,
    marginY: 0.5,
    titleY: 0.5,
    contentY: 1.5,
    spacing: 0.3
  },
  accessibility: {
    contrastRatio: 4.5, // WCAG 2.1 AA
    altText: true,
    readingOrder: true
  }
};

await memory.store('pptx/design-system', designSystem);

Step 2.2: Create Slide Layouts

const slideLayouts = {
  title: {
    type: 'title',
    elements: [
      { type: 'text', content: '{title}', style: 'heading', position: { x: 1, y: 2.5 } },
      { type: 'text', content: '{subtitle}', style: 'subheading', position: { x: 1, y: 3.5 } }
    ]
  },
  content: {
    type: 'content',
    elements: [
      { type: 'text', content: '{title}', style: 'heading', position: { x: 0.5, y: 0.5 } },
      { type: 'text', content: '{body}', style: 'body', position: { x: 0.5, y: 1.5 } }
    ]
  },
  twoColumn: {
    type: 'two-column',
    elements: [
      { type: 'text', content: '{left}', position: { x: 0.5, y: 1.5, w: 4.5 } },
      { type: 'text', content: '{right}', position: { x: 5.5, y: 1.5, w: 4.5 } }
    ]
  },
  dataVisualization: {
    type: 'chart',
    elements: [
      { type: 'text', content: '{title}', style: 'heading', position: { x: 0.5, y: 0.5 } },
      { type: 'chart', chartData: '{data}', position: { x: 1, y: 1.5, w: 8, h: 4 } }
    ]
  }
};

await memory.store('pptx/layouts', slideLayouts);

Validation Criteria

  • Design system defined
  • Color contrast meets WCAG 2.1 AA
  • Layouts created
  • Accessibility constraints applied

Phase 3: Generate Slides (12 min)

Objective

Create PowerPoint file with all slides

Agent: Coder

Step 3.1: Initialize Presentation

const pptxgen = require('pptxgenjs');
const pres = new pptxgen();

// Apply design system
pres.layout = 'LAYOUT_WIDE';
pres.author = contentStructure.metadata.author;
pres.title = contentStructure.metadata.title;
pres.subject = contentStructure.metadata.purpose;

Step 3.2: Generate Slides

async function generateSlides(outline, designSystem, layouts) {
  for (const section of outline) {
    for (const slideData of section.slides) {
      const layout = selectLayout(slideData.type, layouts);
      const slide = pres.addSlide();

      // Add title
      slide.addText(slideData.title, {
        x: layout.title.x,
        y: layout.title.y,
        w: layout.title.w || 9,
        h: layout.title.h || 0.75,
        fontSize: designSystem.fonts.heading.size,
        bold: designSystem.fonts.heading.bold,
        color: designSystem.colors.text
      });

      // Add content based on slide type
      if (slideData.type === 'content') {
        slide.addText(slideData.content, {
          x: layout.content.x,
          y: layout.content.y,
          w: layout.content.w || 9,
          h: layout.content.h || 4,
          fontSize: designSystem.fonts.body.size,
          color: designSystem.colors.text,
          bullet: slideData.bullet || false
        });
      }

      // Add visualizations
      if (slideData.chart) {
        slide.addChart(slideData.chart.type, slideData.chart.data, {
          x: layout.chart.x,
          y: layout.chart.y,
          w: layout.chart.w,
          h: layout.chart.h,
          showTitle: true,
          showLegend: true
        });
      }

      // Add accessibility
      if (slideData.altText) {
        slide.addNotes(slideData.altText); // Alt text for screen readers
      }
    }
  }

  return pres;
}

Step 3.3: Add Data Visualizations

function addChart(slide, chartData, position, designSystem) {
  const chartConfig = {
    x: position.x,
    y: position.y,
    w: position.w,
    h: position.h,
    chartColors: [
      designSystem.colors.primary,
      designSystem.colors.secondary,
      designSystem.colors.accent
    ],
    showLabel: true,
    showValue: true,
    showLegend: true,
    legendPos: 'r',
    valAxisMaxVal: Math.max(...chartData.values) * 1.2
  };

  slide.addChart(chartData.type, chartData.data, chartConfig);
}

Validation Criteria

  • All slides generated
  • Design system applied consistently
  • Charts and visuals rendered
  • Alt text added for accessibility

Phase 4: Validate Quality (8 min)

Objective

Ensure accessibility and quality standards

Agent: Coder

Step 4.1: Accessibility Scan

async function scanAccessibility(pres) {
  const issues = [];

  for (const slide of pres.slides) {
    // Check color contrast
    for (const element of slide.elements) {
      if (element.color && element.background) {
        const contrast = calculateContrastRatio(element.color, element.background);
        if (contrast < 4.5) {
          issues.push({
            slide: slide.index,
            type: 'COLOR_CONTRAST',
            severity: 'HIGH',
            message: `Contrast ratio ${contrast} < 4.5 (WCAG 2.1 AA)`
          });
        }
      }
    }

    // Check alt text
    if (slide.hasImages() && !slide.hasAltText()) {
      issues.push({
        slide: slide.index,
        type: 'MISSING_ALT_TEXT',
        severity: 'HIGH',
        message: 'Images missing alt text for screen readers'
      });
    }

    // Check reading order
    if (!slide.hasReadingOrder()) {
      issues.push({
        slide: slide.index,
        type: 'READING_ORDER',
        severity: 'MEDIUM',
        message: 'Reading order not defined'
      });
    }
  }

  await memory.store('pptx/accessibility-issues', issues);
  return issues;
}

Step 4.2: Quality Checks

const qualityChecks = {
  consistency: checkDesignConsistency(pres),
  readability: checkTextReadability(pres),
  dataIntegrity: validateChartData(pres),
  fileSize: checkFileSize(pres),
  slideCount: pres.slides.length <= 40 // Optimal for attention
};

const passed = Object.values(qualityChecks).every(check => check.passed);

Validation Criteria

  • WCAG 2.1 AA compliance
  • No critical accessibility issues
  • Quality checks passed
  • File size reasonable

Phase 5: Export Final (5 min)

Objective

Generate final presentation file

Agent: Coder

Step 5.1: Generate PPTX File

async function exportPresentation(pres, filename) {
  await pres.writeFile({ fileName: filename });
  console.log(`✅ Presentation saved: ${filename}`);

  // Generate accessibility report
  const report = {
    filename,
    slides: pres.slides.length,
    accessibilityIssues: await memory.retrieve('pptx/accessibility-issues'),
    qualityScore: calculateQualityScore(pres),
    wcagCompliance: 'AA',
    generatedAt: new Date()
  };

  await fs.writeFile(
    filename.replace('.pptx', '-accessibility-report.json'),
    JSON.stringify(report, null, 2)
  );
}

Step 5.2: Generate Documentation

# Presentation Documentation

## Metadata
- Title: ${metadata.title}
- Slides: ${slideCount}
- Generated: ${timestamp}

## Design System
- Colors: ${colors}
- Fonts: ${fonts}
- Accessibility: WCAG 2.1 AA

## Slide Breakdown
${outline.map(section => `
### ${section.name}
${section.slides.map(slide => `- ${slide.title}`).join('\n')}
`).join('\n')}

## Quality Metrics
- Accessibility Score: ${accessibilityScore}/100
- Readability Score: ${readabilityScore}/100
- Design Consistency: ${consistencyScore}/100

Validation Criteria

  • PPTX file generated
  • Accessibility report created
  • Documentation complete
  • Ready for distribution

Success Metrics

  • All slides generated successfully
  • WCAG 2.1 AA compliance achieved
  • Quality score > 85/100
  • File size < 50MB

Skill Completion

Outputs:

  1. presentation.pptx: Final PowerPoint file
  2. accessibility-report.json: Compliance analysis
  3. presentation-doc.md: Generation documentation
  4. slide-notes.txt: Speaker notes

Complete when PPTX generated with WCAG 2.1 AA compliance.

GitHub 저장소

DNYoussef/ai-chrome-extension
경로: .claude/skills/utilities/when-creating-presentations-use-pptx-generation

연관 스킬

when-creating-skill-template-use-skill-builder

기타

This skill generates properly structured Claude Code Skills with complete YAML frontmatter, progressive disclosure documentation, and organized directory layouts. It ensures new skills follow best practices and specification requirements while creating all necessary files including SKILL.md, README.md, and process diagrams. Developers should use it when creating reusable skills to maintain consistency and compliance with Claude's skill framework.

스킬 보기

when-documenting-code-use-doc-generator

메타

This skill automatically generates comprehensive documentation for your codebase, including API docs, README files, and architecture diagrams. It analyzes code structure to create consistent documentation with inline comments and multiple format outputs. Use it when you need to quickly document a project or maintain up-to-date technical documentation.

스킬 보기

Report Writer

기타

The Report Writer skill generates professional reports from research and data, supporting technical, business, and academic styles. It structures input content with features like an optional table of contents and outputs formatted markdown. Use this skill to quickly transform raw findings into polished, audience-appropriate documentation.

스킬 보기

technical-writing

커뮤니케이션

This Claude Skill helps developers create clear, engaging technical content like blog posts, documentation, and tutorials. It provides structured guidance for leading with value, using concrete examples, and optimizing content for readability. Key features include a default action framework, a recommended blog post structure, and integration with quality analysis agents.

스킬 보기