claude-presentation-master 6.0.0 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/cli.js CHANGED
@@ -20,7 +20,7 @@ const args = process.argv.slice(2);
20
20
 
21
21
  // Help text
22
22
  const helpText = `
23
- Claude Presentation Master v6.0.0
23
+ Claude Presentation Master v6.1.1
24
24
  Generate world-class presentations using expert methodologies
25
25
 
26
26
  100% FREE • Zero API Keys • Runs Locally
@@ -85,7 +85,7 @@ For more information: https://github.com/Stuinfla/claude-presentation-master
85
85
  `;
86
86
 
87
87
  // Version
88
- const version = '6.0.0';
88
+ const version = '6.1.1';
89
89
 
90
90
  // Parse arguments
91
91
  function parseArgs(args) {
package/dist/index.d.mts CHANGED
@@ -254,13 +254,41 @@ interface PresentationMetadata {
254
254
  /** Themes/frameworks used */
255
255
  frameworks: string[];
256
256
  }
257
+ interface ContentSection$1 {
258
+ /** Section header text */
259
+ header: string;
260
+ /** Header level (1-6) */
261
+ level: number;
262
+ /** Body content */
263
+ content: string;
264
+ /** Bullet points */
265
+ bullets: string[];
266
+ /** Metrics extracted from section */
267
+ metrics: Array<{
268
+ value: string;
269
+ label: string;
270
+ context?: string;
271
+ }>;
272
+ }
257
273
  interface ContentAnalysis$1 {
274
+ /** Detected presentation type */
275
+ detectedType: PresentationType$1;
276
+ /** Main title */
277
+ title: string;
278
+ /** Content sections */
279
+ sections: ContentSection$1[];
258
280
  /** SCQA structure extracted */
259
281
  scqa: SCQAStructure;
260
282
  /** Sparkline narrative arc */
261
283
  sparkline: SparklineStructure;
262
284
  /** Key messages identified */
263
285
  keyMessages: string[];
286
+ /** Data points (metrics, percentages, etc.) */
287
+ dataPoints: Array<{
288
+ value: string;
289
+ label: string;
290
+ context?: string;
291
+ }>;
264
292
  /** Generated action titles */
265
293
  titles: string[];
266
294
  /** STAR moments identified */
@@ -611,7 +639,15 @@ declare class ContentAnalyzer {
611
639
  private extractSCQA;
612
640
  /**
613
641
  * Extract STAR moments (Something They'll Always Remember)
614
- * Per Nancy Duarte - these are emotional peaks in the presentation
642
+ * Per Nancy Duarte: These should be memorable, COMPLETE thoughts with impact
643
+ *
644
+ * CRITICAL REQUIREMENTS:
645
+ * - Must be complete sentences with subject + verb structure
646
+ * - Must have 5+ words minimum (no fragments!)
647
+ * - Must be 30+ characters
648
+ * - Must contain a verb
649
+ * - NOT fragments like "significant growth" or "cloud-first strategy"
650
+ * - NOT headers or topic labels
615
651
  */
616
652
  private extractStarMoments;
617
653
  /**
@@ -619,28 +655,27 @@ declare class ContentAnalyzer {
619
655
  */
620
656
  private extractSparkline;
621
657
  /**
622
- * Extract key messages (max 3 - Rule of Three)
658
+ * Extract key messages - the actual insights from the content
659
+ * Per Carmine Gallo: Rule of Three - max 3 key messages
660
+ * Per Barbara Minto: Messages should be actionable conclusions, not topics
623
661
  */
624
662
  private extractKeyMessages;
625
663
  /**
626
664
  * Extract data points (metrics with values)
665
+ * IMPROVED: Smarter label extraction that understands markdown tables
627
666
  */
628
667
  private extractDataPoints;
629
668
  /**
630
- * Get context around a match
669
+ * Extract a meaningful label from a line containing a metric
631
670
  */
632
- private getContextAroundMatch;
633
- /**
634
- * Extract a label from surrounding context
635
- * Fixes the "Century Interactive |" garbage issue by stripping table syntax
636
- */
637
- private extractLabelFromContext;
671
+ private extractLabelFromLine;
638
672
  /**
639
673
  * Check if text contains any of the signals
640
674
  */
641
675
  private containsSignals;
642
676
  /**
643
677
  * Extract first meaningful sentence from text
678
+ * CRITICAL: Must strip headers, CTA text, and fragments
644
679
  */
645
680
  private extractFirstSentence;
646
681
  }
@@ -664,8 +699,35 @@ declare class SlideFactory {
664
699
  private isContentUsed;
665
700
  /**
666
701
  * Create slides from analyzed content.
702
+ *
703
+ * ARCHITECTURE (per KB expert methodologies):
704
+ * 1. Title slide - always first
705
+ * 2. Agenda slide - business mode only with 3+ sections
706
+ * 3. SCQA slides - Situation, Complication (per Minto)
707
+ * 4. Content slides - from sections with bullets/content
708
+ * 5. Metrics slide - if data points exist
709
+ * 6. Solution slide - SCQA answer
710
+ * 7. STAR moments - only if high-quality (per Duarte)
711
+ * 8. CTA slide - if call to action exists
712
+ * 9. Thank you slide - always last
667
713
  */
668
714
  createSlides(analysis: ContentAnalysis$1, mode: PresentationMode$1): Promise<Slide[]>;
715
+ /**
716
+ * Create a slide from a section with bullets
717
+ */
718
+ private createSectionBulletSlide;
719
+ /**
720
+ * Create a slide from a section with body content
721
+ */
722
+ private createSectionContentSlide;
723
+ /**
724
+ * Extract first sentence from text
725
+ */
726
+ private extractFirstSentence;
727
+ /**
728
+ * Create a metrics slide from data points
729
+ */
730
+ private createMetricsSlide;
669
731
  /**
670
732
  * Create a title slide.
671
733
  */
@@ -707,11 +769,13 @@ declare class SlideFactory {
707
769
  */
708
770
  private initializeTemplates;
709
771
  /**
710
- * Clean text by removing all content markers.
772
+ * Clean text by removing all markdown and content markers.
773
+ * CRITICAL: Must strip all formatting to prevent garbage in slides
711
774
  */
712
775
  private cleanText;
713
776
  /**
714
- * Truncate text to max length at word boundary.
777
+ * Truncate text to max length at sentence boundary when possible.
778
+ * CRITICAL: Never cut mid-number (99.5% should not become 99.)
715
779
  */
716
780
  private truncate;
717
781
  /**
@@ -723,7 +787,7 @@ declare class SlideFactory {
723
787
  */
724
788
  private extractBullets;
725
789
  /**
726
- * Remove a statistic from text.
790
+ * Remove a statistic from text and clean thoroughly.
727
791
  */
728
792
  private removeStatistic;
729
793
  }
@@ -1359,4 +1423,4 @@ declare const _default: {
1359
1423
  VERSION: string;
1360
1424
  };
1361
1425
 
1362
- export { type AccessibilityResults, type ChartData, type ChartDataset, ChartJsProvider, type ChartProvider, type ChartRequest, type ChartResult, type ChartType, type ColorPalette, CompositeChartProvider, CompositeImageProvider, type ContentAnalysis$1 as ContentAnalysis, ContentAnalyzer, type ContentQAResults, type ContrastIssue, type ExpertQAResults, type ExpertValidation, type FontSizeIssue, type GlanceTestResult, type ImageData, type ImageProvider, type ImageRequest, type ImageResult, KnowledgeGateway, LocalImageProvider, MermaidProvider, type MetricData, type OneIdeaResult, type OutputFormat, PlaceholderImageProvider, PowerPointGenerator, type PresentationConfig, PresentationEngine, type PresentationMetadata, type PresentationMode$1 as PresentationMode, type PresentationResult, type PresentationType, QAEngine, QAFailureError, type QAIssue, type QAResults, QuickChartProvider, RevealJsGenerator, type SCQAStructure, ScoreCalculator, type SignalNoiseResult, type Slide, type SlideContentScore, type SlideData, SlideFactory, type SlideTemplate, type SlideType, type SlideVisualScore, type SparklineStructure, TemplateEngine, TemplateNotFoundError, type ThemeName, UnsplashImageProvider, VERSION, ValidationError, type VisualQAResults, createDefaultChartProvider, createDefaultImageProvider, _default as default, generate, getKnowledgeGateway, validate };
1426
+ export { type AccessibilityResults, type ChartData, type ChartDataset, ChartJsProvider, type ChartProvider, type ChartRequest, type ChartResult, type ChartType, type ColorPalette, CompositeChartProvider, CompositeImageProvider, type ContentAnalysis$1 as ContentAnalysis, ContentAnalyzer, type ContentQAResults, type ContentSection$1 as ContentSection, type ContrastIssue, type ExpertQAResults, type ExpertValidation, type FontSizeIssue, type GlanceTestResult, type ImageData, type ImageProvider, type ImageRequest, type ImageResult, KnowledgeGateway, LocalImageProvider, MermaidProvider, type MetricData, type OneIdeaResult, type OutputFormat, PlaceholderImageProvider, PowerPointGenerator, type PresentationConfig, PresentationEngine, type PresentationMetadata, type PresentationMode$1 as PresentationMode, type PresentationResult, type PresentationType, QAEngine, QAFailureError, type QAIssue, type QAResults, QuickChartProvider, RevealJsGenerator, type SCQAStructure, ScoreCalculator, type SignalNoiseResult, type Slide, type SlideContentScore, type SlideData, SlideFactory, type SlideTemplate, type SlideType, type SlideVisualScore, type SparklineStructure, TemplateEngine, TemplateNotFoundError, type ThemeName, UnsplashImageProvider, VERSION, ValidationError, type VisualQAResults, createDefaultChartProvider, createDefaultImageProvider, _default as default, generate, getKnowledgeGateway, validate };
package/dist/index.d.ts CHANGED
@@ -254,13 +254,41 @@ interface PresentationMetadata {
254
254
  /** Themes/frameworks used */
255
255
  frameworks: string[];
256
256
  }
257
+ interface ContentSection$1 {
258
+ /** Section header text */
259
+ header: string;
260
+ /** Header level (1-6) */
261
+ level: number;
262
+ /** Body content */
263
+ content: string;
264
+ /** Bullet points */
265
+ bullets: string[];
266
+ /** Metrics extracted from section */
267
+ metrics: Array<{
268
+ value: string;
269
+ label: string;
270
+ context?: string;
271
+ }>;
272
+ }
257
273
  interface ContentAnalysis$1 {
274
+ /** Detected presentation type */
275
+ detectedType: PresentationType$1;
276
+ /** Main title */
277
+ title: string;
278
+ /** Content sections */
279
+ sections: ContentSection$1[];
258
280
  /** SCQA structure extracted */
259
281
  scqa: SCQAStructure;
260
282
  /** Sparkline narrative arc */
261
283
  sparkline: SparklineStructure;
262
284
  /** Key messages identified */
263
285
  keyMessages: string[];
286
+ /** Data points (metrics, percentages, etc.) */
287
+ dataPoints: Array<{
288
+ value: string;
289
+ label: string;
290
+ context?: string;
291
+ }>;
264
292
  /** Generated action titles */
265
293
  titles: string[];
266
294
  /** STAR moments identified */
@@ -611,7 +639,15 @@ declare class ContentAnalyzer {
611
639
  private extractSCQA;
612
640
  /**
613
641
  * Extract STAR moments (Something They'll Always Remember)
614
- * Per Nancy Duarte - these are emotional peaks in the presentation
642
+ * Per Nancy Duarte: These should be memorable, COMPLETE thoughts with impact
643
+ *
644
+ * CRITICAL REQUIREMENTS:
645
+ * - Must be complete sentences with subject + verb structure
646
+ * - Must have 5+ words minimum (no fragments!)
647
+ * - Must be 30+ characters
648
+ * - Must contain a verb
649
+ * - NOT fragments like "significant growth" or "cloud-first strategy"
650
+ * - NOT headers or topic labels
615
651
  */
616
652
  private extractStarMoments;
617
653
  /**
@@ -619,28 +655,27 @@ declare class ContentAnalyzer {
619
655
  */
620
656
  private extractSparkline;
621
657
  /**
622
- * Extract key messages (max 3 - Rule of Three)
658
+ * Extract key messages - the actual insights from the content
659
+ * Per Carmine Gallo: Rule of Three - max 3 key messages
660
+ * Per Barbara Minto: Messages should be actionable conclusions, not topics
623
661
  */
624
662
  private extractKeyMessages;
625
663
  /**
626
664
  * Extract data points (metrics with values)
665
+ * IMPROVED: Smarter label extraction that understands markdown tables
627
666
  */
628
667
  private extractDataPoints;
629
668
  /**
630
- * Get context around a match
669
+ * Extract a meaningful label from a line containing a metric
631
670
  */
632
- private getContextAroundMatch;
633
- /**
634
- * Extract a label from surrounding context
635
- * Fixes the "Century Interactive |" garbage issue by stripping table syntax
636
- */
637
- private extractLabelFromContext;
671
+ private extractLabelFromLine;
638
672
  /**
639
673
  * Check if text contains any of the signals
640
674
  */
641
675
  private containsSignals;
642
676
  /**
643
677
  * Extract first meaningful sentence from text
678
+ * CRITICAL: Must strip headers, CTA text, and fragments
644
679
  */
645
680
  private extractFirstSentence;
646
681
  }
@@ -664,8 +699,35 @@ declare class SlideFactory {
664
699
  private isContentUsed;
665
700
  /**
666
701
  * Create slides from analyzed content.
702
+ *
703
+ * ARCHITECTURE (per KB expert methodologies):
704
+ * 1. Title slide - always first
705
+ * 2. Agenda slide - business mode only with 3+ sections
706
+ * 3. SCQA slides - Situation, Complication (per Minto)
707
+ * 4. Content slides - from sections with bullets/content
708
+ * 5. Metrics slide - if data points exist
709
+ * 6. Solution slide - SCQA answer
710
+ * 7. STAR moments - only if high-quality (per Duarte)
711
+ * 8. CTA slide - if call to action exists
712
+ * 9. Thank you slide - always last
667
713
  */
668
714
  createSlides(analysis: ContentAnalysis$1, mode: PresentationMode$1): Promise<Slide[]>;
715
+ /**
716
+ * Create a slide from a section with bullets
717
+ */
718
+ private createSectionBulletSlide;
719
+ /**
720
+ * Create a slide from a section with body content
721
+ */
722
+ private createSectionContentSlide;
723
+ /**
724
+ * Extract first sentence from text
725
+ */
726
+ private extractFirstSentence;
727
+ /**
728
+ * Create a metrics slide from data points
729
+ */
730
+ private createMetricsSlide;
669
731
  /**
670
732
  * Create a title slide.
671
733
  */
@@ -707,11 +769,13 @@ declare class SlideFactory {
707
769
  */
708
770
  private initializeTemplates;
709
771
  /**
710
- * Clean text by removing all content markers.
772
+ * Clean text by removing all markdown and content markers.
773
+ * CRITICAL: Must strip all formatting to prevent garbage in slides
711
774
  */
712
775
  private cleanText;
713
776
  /**
714
- * Truncate text to max length at word boundary.
777
+ * Truncate text to max length at sentence boundary when possible.
778
+ * CRITICAL: Never cut mid-number (99.5% should not become 99.)
715
779
  */
716
780
  private truncate;
717
781
  /**
@@ -723,7 +787,7 @@ declare class SlideFactory {
723
787
  */
724
788
  private extractBullets;
725
789
  /**
726
- * Remove a statistic from text.
790
+ * Remove a statistic from text and clean thoroughly.
727
791
  */
728
792
  private removeStatistic;
729
793
  }
@@ -1359,4 +1423,4 @@ declare const _default: {
1359
1423
  VERSION: string;
1360
1424
  };
1361
1425
 
1362
- export { type AccessibilityResults, type ChartData, type ChartDataset, ChartJsProvider, type ChartProvider, type ChartRequest, type ChartResult, type ChartType, type ColorPalette, CompositeChartProvider, CompositeImageProvider, type ContentAnalysis$1 as ContentAnalysis, ContentAnalyzer, type ContentQAResults, type ContrastIssue, type ExpertQAResults, type ExpertValidation, type FontSizeIssue, type GlanceTestResult, type ImageData, type ImageProvider, type ImageRequest, type ImageResult, KnowledgeGateway, LocalImageProvider, MermaidProvider, type MetricData, type OneIdeaResult, type OutputFormat, PlaceholderImageProvider, PowerPointGenerator, type PresentationConfig, PresentationEngine, type PresentationMetadata, type PresentationMode$1 as PresentationMode, type PresentationResult, type PresentationType, QAEngine, QAFailureError, type QAIssue, type QAResults, QuickChartProvider, RevealJsGenerator, type SCQAStructure, ScoreCalculator, type SignalNoiseResult, type Slide, type SlideContentScore, type SlideData, SlideFactory, type SlideTemplate, type SlideType, type SlideVisualScore, type SparklineStructure, TemplateEngine, TemplateNotFoundError, type ThemeName, UnsplashImageProvider, VERSION, ValidationError, type VisualQAResults, createDefaultChartProvider, createDefaultImageProvider, _default as default, generate, getKnowledgeGateway, validate };
1426
+ export { type AccessibilityResults, type ChartData, type ChartDataset, ChartJsProvider, type ChartProvider, type ChartRequest, type ChartResult, type ChartType, type ColorPalette, CompositeChartProvider, CompositeImageProvider, type ContentAnalysis$1 as ContentAnalysis, ContentAnalyzer, type ContentQAResults, type ContentSection$1 as ContentSection, type ContrastIssue, type ExpertQAResults, type ExpertValidation, type FontSizeIssue, type GlanceTestResult, type ImageData, type ImageProvider, type ImageRequest, type ImageResult, KnowledgeGateway, LocalImageProvider, MermaidProvider, type MetricData, type OneIdeaResult, type OutputFormat, PlaceholderImageProvider, PowerPointGenerator, type PresentationConfig, PresentationEngine, type PresentationMetadata, type PresentationMode$1 as PresentationMode, type PresentationResult, type PresentationType, QAEngine, QAFailureError, type QAIssue, type QAResults, QuickChartProvider, RevealJsGenerator, type SCQAStructure, ScoreCalculator, type SignalNoiseResult, type Slide, type SlideContentScore, type SlideData, SlideFactory, type SlideTemplate, type SlideType, type SlideVisualScore, type SparklineStructure, TemplateEngine, TemplateNotFoundError, type ThemeName, UnsplashImageProvider, VERSION, ValidationError, type VisualQAResults, createDefaultChartProvider, createDefaultImageProvider, _default as default, generate, getKnowledgeGateway, validate };