@thanh01.pmt/presentation-kit 0.2.17 → 0.3.0

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.
Files changed (70) hide show
  1. package/README.md +26 -0
  2. package/dist/ai/index.cjs +33 -28
  3. package/dist/ai/index.cjs.map +1 -1
  4. package/dist/ai/index.d.cts +4 -3
  5. package/dist/ai/index.d.ts +4 -3
  6. package/dist/ai/index.js +3 -2
  7. package/dist/ai/index.js.map +1 -1
  8. package/dist/assets/fonts/NOTICE.md +25 -0
  9. package/dist/assets/fonts/SOURCES.json +47 -0
  10. package/dist/assets/fonts/fira-code.woff2 +0 -0
  11. package/dist/assets/fonts/inter.woff2 +0 -0
  12. package/dist/assets/fonts/jetbrains-mono.woff2 +0 -0
  13. package/dist/assets/fonts/playfair-display.woff2 +0 -0
  14. package/dist/assets/fonts/plus-jakarta-sans.woff2 +0 -0
  15. package/dist/assets/fonts/space-grotesk.woff2 +0 -0
  16. package/dist/chunk-3Q4RMZVQ.cjs +867 -0
  17. package/dist/chunk-3Q4RMZVQ.cjs.map +1 -0
  18. package/dist/chunk-HSVXH7DD.cjs +1624 -0
  19. package/dist/chunk-HSVXH7DD.cjs.map +1 -0
  20. package/dist/{chunk-NYLDRVHZ.js → chunk-I5RG2L3M.js} +4 -78
  21. package/dist/chunk-I5RG2L3M.js.map +1 -0
  22. package/dist/{chunk-7QHDWDSB.js → chunk-INAOTYLK.cjs} +437 -849
  23. package/dist/chunk-INAOTYLK.cjs.map +1 -0
  24. package/dist/{chunk-TGI6YSZP.cjs → chunk-JBGGQGSQ.cjs} +4 -80
  25. package/dist/chunk-JBGGQGSQ.cjs.map +1 -0
  26. package/dist/{chunk-JNTRKKJX.cjs → chunk-OCP2TAY2.js} +421 -868
  27. package/dist/chunk-OCP2TAY2.js.map +1 -0
  28. package/dist/chunk-V6X7D44H.js +854 -0
  29. package/dist/chunk-V6X7D44H.js.map +1 -0
  30. package/dist/chunk-VRXEXUHR.js +1610 -0
  31. package/dist/chunk-VRXEXUHR.js.map +1 -0
  32. package/dist/{click-css-Bcc1CkTN.d.cts → click-css-C8VciwZ6.d.cts} +1 -1
  33. package/dist/{click-css-B2s9B_uP.d.ts → click-css-COIiFo1I.d.ts} +1 -1
  34. package/dist/index.cjs +143 -110
  35. package/dist/index.cjs.map +1 -1
  36. package/dist/index.d.cts +62 -6
  37. package/dist/index.d.ts +62 -6
  38. package/dist/index.js +6 -5
  39. package/dist/index.js.map +1 -1
  40. package/dist/node/index.cjs +117 -0
  41. package/dist/node/index.cjs.map +1 -0
  42. package/dist/node/index.d.cts +36 -0
  43. package/dist/node/index.d.ts +36 -0
  44. package/dist/node/index.js +105 -0
  45. package/dist/node/index.js.map +1 -0
  46. package/dist/{presets-D_hfPJX9.d.ts → presets-DPRGtpO-.d.ts} +1 -1
  47. package/dist/{presets-BYvgAAkJ.d.cts → presets-MIi91wZg.d.cts} +1 -1
  48. package/dist/react/index.cjs +17 -16
  49. package/dist/react/index.cjs.map +1 -1
  50. package/dist/react/index.d.cts +4 -3
  51. package/dist/react/index.d.ts +4 -3
  52. package/dist/react/index.js +4 -3
  53. package/dist/react/index.js.map +1 -1
  54. package/dist/skills/index.cjs +16 -12
  55. package/dist/skills/index.d.cts +36 -20
  56. package/dist/skills/index.d.ts +36 -20
  57. package/dist/skills/index.js +1 -1
  58. package/dist/{types-C3d04zzP.d.cts → types-CvxCxWus.d.cts} +1 -67
  59. package/dist/{types-C3d04zzP.d.ts → types-CvxCxWus.d.ts} +1 -67
  60. package/dist/types-k_eae8UV.d.cts +74 -0
  61. package/dist/types-k_eae8UV.d.ts +74 -0
  62. package/package.json +8 -2
  63. package/dist/chunk-6R6L6KSC.cjs +0 -601
  64. package/dist/chunk-6R6L6KSC.cjs.map +0 -1
  65. package/dist/chunk-7QHDWDSB.js.map +0 -1
  66. package/dist/chunk-BHJXQCVE.js +0 -588
  67. package/dist/chunk-BHJXQCVE.js.map +0 -1
  68. package/dist/chunk-JNTRKKJX.cjs.map +0 -1
  69. package/dist/chunk-NYLDRVHZ.js.map +0 -1
  70. package/dist/chunk-TGI6YSZP.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/skills/catalog.ts","../src/skills/contracts.ts","../src/ai/html/prompt.ts","../src/skills/helper.ts","../src/skills/tools.ts"],"names":[],"mappings":"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","file":"chunk-BHJXQCVE.js","sourcesContent":["// ═══════════════════════════════════════════════════════════════════════════════\n// @learnwell/presentation-kit/skills/catalog\n// Curated 34 Templates Catalog & Style Presets from .ref/beautiful-html-templates & frontend-slides\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport interface TemplateCatalogItem {\n slug: string;\n name: string;\n tagline: string;\n mood: string[];\n occasion: string[];\n tone: string[];\n formality: 'low' | 'medium-low' | 'medium' | 'medium-high' | 'high';\n density: 'low' | 'medium' | 'high';\n scheme: 'light' | 'dark' | 'mixed';\n best_for: string;\n avoid_for: string;\n slide_count: number;\n}\n\nexport interface StylePresetItem {\n id: string;\n name: string;\n vibe: string;\n scheme: 'light' | 'dark';\n typography: {\n display: string;\n body: string;\n mono?: string;\n };\n colors: {\n bg: string;\n text: string;\n accent: string;\n cardBg?: string;\n border?: string;\n textMuted?: string;\n };\n signatureElements: string[];\n}\n\nexport const TEMPLATES_CATALOG: TemplateCatalogItem[] = [\n {\n slug: \"blue-professional\",\n name: \"Blue Professional\",\n tagline: \"Cream paper background with electric cobalt blue accents; clean modern professional.\",\n mood: [\"professional\", \"modern\", \"calm\", \"trustworthy\"],\n occasion: [\"B2B SaaS pitch\", \"consulting deliverable\", \"internal review\", \"investor update\", \"computer science lecture\"],\n tone: [\"clean\", \"considered\", \"polished\", \"neutral\"],\n formality: \"medium-high\",\n density: \"medium\",\n scheme: \"light\",\n best_for: \"Computer science, technical lectures, B2B updates, consulting deliverables, structured pedagogical lessons.\",\n avoid_for: \"Playful, whimsical, or arcade contexts.\",\n slide_count: 10\n },\n {\n slug: \"cobalt-grid\",\n name: \"Cobalt Grid\",\n tagline: \"Deep blue tech terminal with monospaced code blocks and high-precision blueprints.\",\n mood: [\"technical\", \"futuristic\", \"developer\", \"precise\"],\n occasion: [\"developer tools\", \"architecture review\", \"algorithm walkthrough\", \"hardware lab\"],\n tone: [\"geeky\", \"precise\", \"modern\", \"authoritative\"],\n formality: \"medium\",\n density: \"high\",\n scheme: \"dark\",\n best_for: \"Programming tutorials, Swift/Python/Rust architecture, engineering masterclasses, deep tech walkthroughs.\",\n avoid_for: \"Warm organic storytelling, poetry, non-technical humanities.\",\n slide_count: 12\n },\n {\n slug: \"editorial-forest\",\n name: \"Editorial Forest\",\n tagline: \"Deep sage green and warm cream paper; calm, literary, and thoughtful.\",\n mood: [\"editorial\", \"thoughtful\", \"calm\", \"academic\"],\n occasion: [\"curriculum overview\", \"foundational theory\", \"ethics in tech\", \"pedagogy manifesto\"],\n tone: [\"literary\", \"considered\", \"warm\", \"measured\"],\n formality: \"high\",\n density: \"medium\",\n scheme: \"light\",\n best_for: \"Educational theory, learner psychology, ethics, high-concept architecture lectures.\",\n avoid_for: \"High-adrenaline hackathons, rapid gaming demos.\",\n slide_count: 10\n },\n {\n slug: \"neo-grid-bold\",\n name: \"Neo-Grid Bold\",\n tagline: \"Editorial neo-brutalism with bold typography and high-contrast accent lines.\",\n mood: [\"confident\", \"punchy\", \"editorial\", \"modern\"],\n occasion: [\"product launch\", \"design review\", \"capstone demo\", \"keynote presentation\"],\n tone: [\"bold\", \"minimal\", \"design-led\", \"graphic\"],\n formality: \"medium\",\n density: \"high\",\n scheme: \"light\",\n best_for: \"Capstone showcases, frontend design, UI/UX systems, bold interactive presentations.\",\n avoid_for: \"Quiet traditional disclosures.\",\n slide_count: 12\n },\n {\n slug: \"8-bit-orbit\",\n name: \"8-Bit Orbit\",\n tagline: \"Pixel-art neon arcade aesthetic on a deep navy void.\",\n mood: [\"retro-tech\", \"playful\", \"cyberpunk\", \"energetic\"],\n occasion: [\"gaming pitch\", \"hackathon demo\", \"game dev tutorial\", \"creative coding\"],\n tone: [\"geeky\", \"neon\", \"rebellious\", \"sci-fi\"],\n formality: \"low\",\n density: \"medium\",\n scheme: \"dark\",\n best_for: \"Game development, creative coding, arcade logic, robotics student challenges.\",\n avoid_for: \"Formal corporate finance or clinical medical courses.\",\n slide_count: 10\n },\n {\n slug: \"monochrome\",\n name: \"Minimal Monochrome\",\n tagline: \"Pure black and white with surgical grid alignment and stark typography.\",\n mood: [\"minimal\", \"stark\", \"intellectual\", \"precise\"],\n occasion: [\"math proofs\", \"data structure fundamentals\", \"academic research\", \"system design\"],\n tone: [\"pure\", \"restrained\", \"intellectual\", \"timeless\"],\n formality: \"high\",\n density: \"medium\",\n scheme: \"light\",\n best_for: \"Algorithms, mathematical foundations, data structures, minimal system blueprints.\",\n avoid_for: \"Kids coding clubs, playful animations.\",\n slide_count: 10\n }\n];\n\nexport const STYLE_PRESETS: StylePresetItem[] = [\n {\n id: \"electric-studio\",\n name: \"Electric Studio\",\n vibe: \"Bold, clean, professional, high contrast\",\n scheme: \"dark\",\n typography: {\n display: \"Space Grotesk, sans-serif\",\n body: \"Inter, sans-serif\",\n mono: \"JetBrains Mono, monospace\"\n },\n colors: {\n bg: \"#0a0a0a\",\n text: \"#ffffff\",\n accent: \"#4361ee\",\n cardBg: \"rgba(255, 255, 255, 0.05)\",\n border: \"rgba(67, 97, 238, 0.3)\",\n textMuted: \"#9ca3af\"\n },\n signatureElements: [\n \"Two-panel split architecture\",\n \"Staggered .reveal entrance transitions\",\n \"High-contrast code cards with macOS traffic lights\",\n \"1920×1080 stage canvas auto-scaling\"\n ]\n },\n {\n id: \"blue-professional\",\n name: \"Blue Professional\",\n vibe: \"Cream paper background with electric cobalt blue accents; clean modern professional\",\n scheme: \"light\",\n typography: {\n display: \"Space Grotesk, sans-serif\",\n body: \"Inter, sans-serif\",\n mono: \"SF Mono, Menlo, monospace\"\n },\n colors: {\n bg: \"#fdfae7\",\n text: \"#111111\",\n accent: \"#1e2bfa\",\n cardBg: \"rgba(30, 43, 250, 0.04)\",\n border: \"rgba(30, 43, 250, 0.2)\",\n textMuted: \"#6b6b6b\"\n },\n signatureElements: [\n \"Warm paper texture and clean typography\",\n \"Cobalt accent underlines and badges\",\n \"Clean 2-column theory vs code blocks\",\n \"3-card Bento grid for architecture breakdown\"\n ]\n },\n {\n id: \"creative-voltage\",\n name: \"Creative Voltage\",\n vibe: \"Bold, creative, energetic, retro-modern\",\n scheme: \"dark\",\n typography: {\n display: \"Syne, sans-serif\",\n body: \"Space Grotesk, sans-serif\",\n mono: \"Space Mono, monospace\"\n },\n colors: {\n bg: \"#1a1a2e\",\n text: \"#ffffff\",\n accent: \"#d4ff00\",\n cardBg: \"rgba(212, 255, 0, 0.05)\",\n border: \"rgba(212, 255, 0, 0.25)\",\n textMuted: \"#a0a0c0\"\n },\n signatureElements: [\n \"Electric neon yellow accents on dark purple void\",\n \"Punchy display typography\",\n \"Dynamic interactive checkpoint quizzes\",\n \"Bento stat counters with glowing outlines\"\n ]\n }\n];\n","// ═══════════════════════════════════════════════════════════════════════════════\n// @learnwell/presentation-kit/skills/contracts\n// Authoritative Skill Markdown Specifications from .ref/frontend-slides\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport const VIEWPORT_BASE_CSS = `/* ===========================================\n FIXED 16:9 STAGE: MANDATORY BASE STYLES\n Slides are authored at 1920×1080 and scaled as a whole.\n =========================================== */\n\nhtml, body {\n width: 100%;\n height: 100%;\n margin: 0;\n overflow: hidden;\n background: var(--stage-bg, #000);\n}\n\n.deck-viewport {\n position: fixed;\n inset: 0;\n overflow: hidden;\n background: var(--stage-bg, #000);\n}\n\n.deck-stage {\n position: absolute;\n left: 0;\n top: 0;\n width: 1920px;\n height: 1080px;\n overflow: hidden;\n transform-origin: 0 0;\n background: var(--slide-bg, #fff);\n}\n\n.slide {\n position: absolute;\n inset: 0;\n width: 1920px;\n height: 1080px;\n overflow: hidden;\n display: block;\n visibility: hidden;\n opacity: 0;\n pointer-events: none;\n background: var(--slide-bg, #fff);\n}\n\n.slide.active,\n.slide.visible {\n visibility: visible;\n opacity: 1;\n pointer-events: auto;\n z-index: 1;\n}\n\nimg, video, canvas, svg {\n max-width: 100%;\n max-height: 100%;\n}\n\n.reveal {\n opacity: 0;\n transform: translateY(30px);\n transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),\n transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);\n}\n\n.slide.visible .reveal,\n.slide.active .reveal {\n opacity: 1;\n transform: translateY(0);\n}\n\n.reveal:nth-child(1) { transition-delay: 0.08s; }\n.reveal:nth-child(2) { transition-delay: 0.16s; }\n.reveal:nth-child(3) { transition-delay: 0.24s; }\n.reveal:nth-child(4) { transition-delay: 0.32s; }\n.reveal:nth-child(5) { transition-delay: 0.40s; }\n\n@media (prefers-reduced-motion: reduce) {\n *, *::before, *::after {\n animation-duration: 0.01ms !important;\n transition-duration: 0.1s !important;\n }\n}\n`;\n\nexport const FRONTEND_SLIDES_CORE_RULES = `\n# FRONTEND SLIDES SKILL & QUALITY INVARIANTS\n\n## 1. Core Principles (Non-Negotiable)\n1. **Zero Dependencies** — Single HTML presentation with inline scoped CSS and JS.\n2. **Fixed 16:9 Stage Canvas** — Every slide is strictly authored inside a fixed 1920×1080 stage canvas (.deck-stage) scaled to the browser viewport. Never reflow slide content for different screen ratios.\n3. **No AI-Slop Design** — Never use generic purple gradients, cliché fonts (Arial, Roboto), or boring corporate bullets. Use curated palettes (Electric Studio, Blue Professional, Cobalt Grid) and distinctive typography (Space Grotesk, Inter, Syne, JetBrains Mono).\n4. **Staggered Reveals** — Use the .reveal class on key elements with transition delays for smooth, cinematic entrance animations.\n5. **No Pixel Coordinates** — NEVER output free-form bounding-box coordinates like \"position\": { \"x\", \"y\" } or \"layout\": \"title_and_content\". Always populate semantic layout slots.\n\n## 2. Pacing & Pedagogical Structure\nA complete lesson deck MUST have 8 to 12 slides following the Chunky Micro-Cycle:\n1. **Cover (hero-cover):** Lesson title, topic badge, learning goal, author/date.\n2. **Agenda & Roadmap (two-columns-compare or timeline-steps):** Milestones and timing.\n3. **Core Mental Model (split-concept-code):** Definition, analogy, and runnable starter code.\n4. **Visual Architecture (three-cards-grid):** 3-pillar breakdown of mechanisms.\n5. **Syntax & Deep Dive (split-concept-code):** Concrete language syntax, gotchas, and annotated snippet.\n6. **Timeline Execution (timeline-steps):** Step-by-step pipeline or algorithmic flow.\n7. **Interactive Formative Check (checkpoint-quiz):** Multiple-choice diagnostic question with explanation.\n8. **Summary & Next Milestone (summary-takeaways):** 3-4 golden takeaways and preview of next lesson.\n`;\n","// ═══════════════════════════════════════════════════════════════════════════════\n// @learnwell/presentation-kit — AI Slide HTML Prompt Contract\n// ═══════════════════════════════════════════════════════════════════════════════\n\nexport const SLIDE_HTML_PROMPT_CONTRACT = `\n# 🎨 HTML SLIDE ENGINE — AGENT GENERATION CONTRACT\n\nYou are an expert Presentation Designer and Curriculum Architect producing professional, high-impact slide decks.\nInstead of generating free-form HTML or brittle Markdown hacks, you MUST fill structured content into pre-tested **Layout Presets**.\n\n## Available Layout Presets & Required Slots:\n\n1. **hero-cover** (Cover / Title Slide)\n - \\`tag\\` (string): e.g. \"Unit 01 · Lesson 02\"\n - \\`title\\` (string): Main bold headline\n - \\`subtitle\\` (string): Subtitle or 1-sentence learning objective\n - \\`author\\` (string): Instructor / Organization\n - \\`date\\` (string): Course term or date\n\n2. **split-concept-code** (Theory + Code Snippet)\n - \\`tag\\` (string): Section topic tag\n - \\`title\\` (string): Topic heading\n - \\`points\\` (string[]): 3 to 4 concise bullet takeaways\n - \\`code\\` (string): Executable source code\n - \\`language\\` (string): Language name (e.g. \"python\", \"typescript\", \"swift\")\n - \\`codeNote\\` (string, optional): One-line hint or execution output\n\n3. **two-columns-compare** (Comparison / Pros vs Cons)\n - \\`tag\\` (string): Topic tag\n - \\`title\\` (string): Headline\n - \\`col1Title\\` (string): e.g. \"Synchronous I/O\"\n - \\`col1Items\\` (string[]): 3 to 4 points\n - \\`col2Title\\` (string): e.g. \"Asynchronous I/O\"\n - \\`col2Items\\` (string[]): 3 to 4 points\n\n4. **three-cards-grid** (3 Core Pillars / Architecture)\n - \\`tag\\` (string): e.g. \"Core Principles\"\n - \\`title\\` (string): Overview headline\n - \\`cards\\` (array of objects): Exactly 3 cards:\n - \\`badge\\`: e.g. \"01\", \"LAYER 1\"\n - \\`title\\`: Card headline\n - \\`desc\\`: 1-2 sentence description\n - \\`footer\\` (optional): Key takeaway\n\n5. **timeline-steps** (Algorithm / Execution Pipeline)\n - \\`tag\\` (string): e.g. \"Workflow\"\n - \\`title\\` (string): Headline\n - \\`steps\\` (array of objects): 3 to 5 steps:\n - \\`stepNum\\` (number/string): 1, 2, 3...\n - \\`title\\`: Step name\n - \\`desc\\`: What happens at this step\n\n6. **metric-callout** (Key Theorem / Benchmark Statistic)\n - \\`tag\\` (string): e.g. \"Time Complexity\"\n - \\`metric\\` (string): Big stat (e.g. \"O(log N)\", \"99.99%\", \"10x\")\n - \\`metricLabel\\` (string): e.g. \"Lookup Efficiency\"\n - \\`title\\` (string): Main takeaway\n - \\`desc\\` (string): Contextual explanation\n\n7. **checkpoint-quiz** (Interactive Checkpoint)\n - \\`tag\\` (string): e.g. \"Quick Knowledge Check\"\n - \\`question\\` (string): Clear question prompt\n - \\`options\\` (array of objects): 2 to 4 options:\n - \\`label\\`: \"A\", \"B\", \"C\", \"D\"\n - \\`text\\`: Option text\n - \\`explanation\\` (string): Explanatory rationale\n\n8. **summary-takeaways** (Wrap-Up / Next Steps)\n - \\`tag\\` (string): e.g. \"Recap\"\n - \\`title\\` (string): Wrap-up headline\n - \\`takeaways\\` (string[]): 3 to 4 memorable bullet points\n - \\`nextStep\\` (string): Teaser for the next lesson or project\n\n## Aesthetic & Quality Invariants (\"Anti-AI-Slop\"):\n- **Brevity is King (Zero-Scroll Invariant):** Each slide is calibrated for a 1920×1080 canvas. Maximum **35–40 words** per card or column; maximum **15 words** per bullet item. Never write dense multi-sentence paragraphs that cause vertical scrolling.\n- **Pedagogical Pacing:** Start with \\`hero-cover\\`, alternate between \\`split-concept-code\\`, \\`two-columns-compare\\` and \\`three-cards-grid\\`, insert a \\`checkpoint-quiz\\` midway, and finish with \\`summary-takeaways\\`.\n- **Theme Selection:**\n - \\`blue-professional\\`: General academic, clean engineering, trustworthy.\n - \\`cobalt-grid\\`: Advanced tech, algorithms, robotics, cybersecurity.\n - \\`editorial-forest\\`: Thoughtful design, literature, ethics, science.\n - \\`studio\\`: Minimalist product design, modern software.\n - \\`monochrome\\`: Pure high-contrast dark mode.\n\n## 🪄 Step Reveal & Progressive Disclosure:\n- The presentation shell supports sequential step reveal via mouse click or Space/Arrow keys.\n- Bullet lists (\\`points\\`, \\`col1Items\\`, \\`col2Items\\`), cards in \\`three-cards-grid\\`, and steps in \\`timeline-steps\\` reveal progressively one by one before navigating to the next slide.\n- In custom HTML slots, you can attach \\`class=\"step-reveal\"\\`, \\`data-step\\`, \\`data-reveal\\`, or \\`data-auto-reveal=\"true\"\\` on parent containers to enable click-by-click stepped appearance.\n\n## 🎙️ Mandatory 3-Part Presenter Notes Contract:\nEvery single slide MUST include the \\`notes\\` property structured with these 3 explicit components:\n1. **Talk Track:** 2-3 sentences of exact conversational speaking script for the teacher/presenter.\n2. **Cold-Call Check Question:** 1 diagnostic question to check understanding with a named student or attendee.\n3. **Scaffolding Tip:** 1 intuitive analogy or troubleshooting hint in case learners struggle with the concept.\n\nExample Notes:\n\\`\\`\\`markdown\nTalk Track: Here we contrast synchronous blocking I/O with asynchronous event-driven handling. Notice how threads remain idle while waiting for network responses.\nCold-Call: \"Jordan, looking at the left column, what happens to thread pool throughput when network latency quadruples?\"\nScaffolding Tip: Compare it to ordering coffee at a counter (async buzzer) versus waiting at the register until the cup is brewed (sync blocking).\n\\`\\`\\`\n\n## 🧱 MANDATORY JSON DECK OUTPUT STRUCTURE & SCHEMA:\nYou MUST output a single valid JSON object.\nCRITICAL: All layout data MUST be placed inside the \\`slots\\` object of each slide. Never put raw unstructured strings like \\`content: \"...\"\\`!\n\n\\`\\`\\`json\n{\n \"title\": \"Full Lesson Presentation Title\",\n \"theme\": \"blue-professional\",\n \"slides\": [\n {\n \"id\": 1,\n \"layoutId\": \"hero-cover\",\n \"slots\": {\n \"tag\": \"Unit 01 · Lesson 01\",\n \"title\": \"macOS & Xcode Environment Setup\",\n \"subtitle\": \"Master the Apple developer toolchain and build your first SwiftUI application lifecycle\",\n \"author\": \"Curriculum OS\",\n \"date\": \"2026\"\n },\n \"notes\": \"Talk Track: Welcome everyone. Today we establish our core iOS development environment...\\\\nCold-Call: 'Alex, why do we need Xcode Command Line Tools?'\\\\nScaffolding Tip: Think of Xcode as the full workshop and the SDK as the raw materials.\"\n },\n {\n \"id\": 2,\n \"layoutId\": \"split-concept-code\",\n \"slots\": {\n \"tag\": \"Architecture & Syntax\",\n \"title\": \"SwiftUI App Entry Point\",\n \"points\": [\n \"@main attribute designates the entry point of the app\",\n \"App protocol defines the structure and scene hierarchy\",\n \"WindowGroup manages the root view lifecycle across platforms\"\n ],\n \"code\": \"import SwiftUI\\\\n\\\\n@main\\\\nstruct MyApp: App {\\\\n var body: some Scene {\\\\n WindowGroup {\\\\n ContentView()\\\\n }\\\\n }\\\\n}\",\n \"language\": \"swift\",\n \"codeNote\": \"Notice how Scene encapsulates WindowGroup automatically\"\n },\n \"notes\": \"Talk Track: ...\\\\nCold-Call: ...\\\\nScaffolding Tip: ...\"\n },\n {\n \"id\": 3,\n \"layoutId\": \"three-cards-grid\",\n \"slots\": {\n \"tag\": \"Core Pillars\",\n \"title\": \"Three Pillars of App State\",\n \"cards\": [\n { \"badge\": \"01\", \"title\": \"Active State\", \"desc\": \"App is in foreground and responding to user events directly.\" },\n { \"badge\": \"02\", \"title\": \"Inactive State\", \"desc\": \"App is transitioning, interrupted by system dialogs or Control Center.\" },\n { \"badge\": \"03\", \"title\": \"Background State\", \"desc\": \"Executing background tasks or preparing for memory suspension.\" }\n ]\n },\n \"notes\": \"Talk Track: ...\\\\nCold-Call: ...\\\\nScaffolding Tip: ...\"\n },\n {\n \"id\": 4,\n \"layoutId\": \"timeline-steps\",\n \"slots\": {\n \"tag\": \"Step-by-Step\",\n \"title\": \"Xcode Setup Workflow\",\n \"steps\": [\n { \"stepNum\": 1, \"title\": \"Download Xcode\", \"desc\": \"Install latest Xcode from the Mac App Store\" },\n { \"stepNum\": 2, \"title\": \"Command Line Tools\", \"desc\": \"Run xcode-select --install in Terminal\" },\n { \"stepNum\": 3, \"title\": \"Select Simulators\", \"desc\": \"Download iOS 18+ runtime simulators\" },\n { \"stepNum\": 4, \"title\": \"Verify Build\", \"desc\": \"Create a new SwiftUI project and press Cmd+R\" }\n ]\n },\n \"notes\": \"Talk Track: ...\\\\nCold-Call: ...\\\\nScaffolding Tip: ...\"\n },\n {\n \"id\": 5,\n \"layoutId\": \"two-columns-compare\",\n \"slots\": {\n \"tag\": \"Comparison\",\n \"title\": \"SwiftUI vs UIKit Architecture\",\n \"col1Title\": \"SwiftUI (Declarative)\",\n \"col1Items\": [\n \"State drives the UI automatically\",\n \"Lightweight immutable structs\",\n \"Cross-platform unified API\"\n ],\n \"col2Title\": \"UIKit (Imperative)\",\n \"col2Items\": [\n \"Manual view controller manipulation\",\n \"Heavyweight class hierarchies\",\n \"Explicit event-driven updates\"\n ]\n },\n \"notes\": \"Talk Track: ...\\\\nCold-Call: ...\\\\nScaffolding Tip: ...\"\n },\n {\n \"id\": 6,\n \"layoutId\": \"checkpoint-quiz\",\n \"slots\": {\n \"tag\": \"Knowledge Check\",\n \"question\": \"Which SwiftUI modifier is used to observe external observable state objects?\",\n \"options\": [\n { \"label\": \"A\", \"text\": \"@State\" },\n { \"label\": \"B\", \"text\": \"@StateObject / @ObservedObject\" },\n { \"label\": \"C\", \"text\": \"@Binding\" },\n { \"label\": \"D\", \"text\": \"@Environment\" }\n ],\n \"explanation\": \"@StateObject manages the lifecycle of reference-type ObservableObjects, while @State is for value types.\"\n },\n \"notes\": \"Talk Track: ...\\\\nCold-Call: ...\\\\nScaffolding Tip: ...\"\n },\n {\n \"id\": 7,\n \"layoutId\": \"summary-takeaways\",\n \"slots\": {\n \"tag\": \"Recap & Next\",\n \"title\": \"Lesson Summary & Key Takeaways\",\n \"takeaways\": [\n \"Configured complete developer toolchain with Xcode 16+\",\n \"Understood SwiftUI declarative lifecycle and @main entry point\",\n \"Mastered App State transitions between active, inactive, and background\"\n ],\n \"nextStep\": \"Lesson 02: State Management & Reactive Data Flow with @State and @Binding\"\n },\n \"notes\": \"Talk Track: ...\\\\nCold-Call: ...\\\\nScaffolding Tip: ...\"\n }\n ]\n}\n\\`\\`\\`\n\n## 🚫 STRICT ANTI-SLOP CONSTRAINTS:\n1. NEVER output a raw unstructured string like \\`content: \"...\"\\` or \\`content: \"Concept: ... Code snippet: ...\"\\`. All slide content MUST be placed inside the \\`slots\\` object with its specific keys (\\`points\\`, \\`code\\`, \\`cards\\`, \\`steps\\`, \\`options\\`, \\`takeaways\\`).\n2. NEVER use ellipsis \\`...\\` or placeholder comments in \\`code\\`. Every code snippet MUST be real, fully typed, syntax-valid, and pedagogical.\n3. NEVER leave \\`slots\\` empty \\`{}\\`.\n4. Output 6 to 8 substantive, rich slides covering the lesson plan thoroughly.\n`;\n","// ═══════════════════════════════════════════════════════════════════════════════\n// @learnwell/presentation-kit/skills/helper\n// Vercel AI SDK Skill Helper for Frontend Slides & Beautiful HTML Templates\n// ═══════════════════════════════════════════════════════════════════════════════\n\nimport { TEMPLATES_CATALOG, STYLE_PRESETS, type TemplateCatalogItem, type StylePresetItem } from './catalog.js';\nimport { FRONTEND_SLIDES_CORE_RULES } from './contracts.js';\nimport { SLIDE_HTML_PROMPT_CONTRACT } from '../ai/html/prompt.js';\n\nexport interface FrontendSlidesSkillOptions {\n mood?: string;\n stylePresetId?: string;\n templateSlug?: string;\n lessonId?: string;\n lessonTitle?: string;\n language?: string;\n}\n\n/**\n * Retrieves the full list of 34 verified HTML templates.\n */\nexport function getTemplatesCatalog(): TemplateCatalogItem[] {\n return TEMPLATES_CATALOG;\n}\n\n/**\n * Searches templates by mood, scheme, or keywords.\n */\nexport function searchTemplates(filter?: string | {\n mood?: string;\n scheme?: 'light' | 'dark';\n query?: string;\n}): TemplateCatalogItem[] {\n if (!filter) return TEMPLATES_CATALOG;\n const opts = typeof filter === 'string' ? { query: filter } : filter;\n return TEMPLATES_CATALOG.filter((tpl) => {\n if (opts.scheme && tpl.scheme !== opts.scheme) return false;\n if (opts.mood && !tpl.mood.some((m) => m.toLowerCase().includes(opts.mood!.toLowerCase()))) {\n return false;\n }\n if (opts.query) {\n const q = opts.query.toLowerCase();\n const match =\n tpl.slug.toLowerCase().includes(q) ||\n tpl.name.toLowerCase().includes(q) ||\n tpl.tagline.toLowerCase().includes(q) ||\n tpl.best_for.toLowerCase().includes(q);\n if (!match) return false;\n }\n return true;\n });\n}\n\n/**\n * Retrieves a style preset by its ID.\n */\nexport function getStylePreset(id: string): StylePresetItem | undefined {\n return STYLE_PRESETS.find((p) => p.id === id) || STYLE_PRESETS[0];\n}\n\n/**\n * Assembles a comprehensive, production-grade Vercel AI SDK system prompt\n * integrating the entire Frontend-Slides Skill, fixed 16:9 stage rules,\n * anti-slop guidelines, and slot contract.\n */\nexport function getFrontendSlidesSkillPrompt(options?: FrontendSlidesSkillOptions): string {\n const preset = options?.stylePresetId ? getStylePreset(options.stylePresetId) : STYLE_PRESETS[0];\n\n return `\nYou are @illustrator, an elite Presentation Designer and Presentation Architect equipped with the **FRONTEND-SLIDES SKILL**.\n\n${FRONTEND_SLIDES_CORE_RULES}\n\n---\n## ACTIVE STYLE PRESET: ${preset?.name || 'Electric Studio'}\n- **Vibe:** ${preset?.vibe}\n- **Color Scheme:** ${preset?.scheme} (Background: ${preset?.colors.bg}, Text: ${preset?.colors.text}, Accent: ${preset?.colors.accent})\n- **Typography:** Display: ${preset?.typography.display} | Body: ${preset?.typography.body} | Code: ${preset?.typography.mono || 'monospace'}\n- **Signature Design Elements:**\n${(preset?.signatureElements || []).map((e) => ` * ${e}`).join('\\n')}\n\n---\n${SLIDE_HTML_PROMPT_CONTRACT}\n`.trim();\n}\n","// ═══════════════════════════════════════════════════════════════════════════════\n// @learnwell/presentation-kit/skills/tools\n// Vercel AI SDK Compatible Tools for Querying Presentation Skills & Templates\n// ═══════════════════════════════════════════════════════════════════════════════\n\nimport { z } from 'zod';\nimport { TEMPLATES_CATALOG, STYLE_PRESETS } from './catalog.js';\nimport { searchTemplates, getStylePreset } from './helper.js';\n\nexport const querySlideTemplatesSchema = z.object({\n mood: z.string().optional().describe('Mood or feeling keyword: \"professional\", \"technical\", \"editorial\", \"playful\", \"minimal\"'),\n scheme: z.enum(['light', 'dark']).optional().describe('Color scheme: \"light\" or \"dark\"'),\n query: z.string().optional().describe('Search term e.g. \"python\", \"swift\", \"consulting\", \"hackathon\"'),\n});\n\nexport const getSlideStylePresetSchema = z.object({\n presetId: z.enum(['electric-studio', 'blue-professional', 'creative-voltage']).describe('Style preset identifier'),\n});\n\n/**\n * Tool definitions that can be directly passed to Vercel AI SDK's `tools` parameter.\n */\nexport const frontendSlidesTools = {\n querySlideTemplates: {\n description: 'Searches the 34 curated HTML slide templates catalog for design inspiration, tone matching, and layout specs.',\n parameters: querySlideTemplatesSchema,\n execute: async (args: z.infer<typeof querySlideTemplatesSchema>) => {\n const matches = searchTemplates(args);\n return {\n count: matches.length,\n templates: matches.map((m) => ({\n slug: m.slug,\n name: m.name,\n tagline: m.tagline,\n mood: m.mood,\n tone: m.tone,\n scheme: m.scheme,\n bestFor: m.best_for,\n slideCount: m.slide_count,\n })),\n };\n },\n },\n\n getSlideStylePreset: {\n description: 'Retrieves exact color palette, typography font stack, and signature visual elements for a style preset.',\n parameters: getSlideStylePresetSchema,\n execute: async (args: z.infer<typeof getSlideStylePresetSchema>) => {\n const preset = getStylePreset(args.presetId);\n if (!preset) {\n return { error: `Style preset \"${args.presetId}\" not found.` };\n }\n return preset;\n },\n },\n};\n"]}