@hiai-gg/hiai-opencode 0.2.1 → 0.2.2
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/.env.example +4 -0
- package/AGENTS.md +34 -38
- package/ARCHITECTURE.md +4 -3
- package/LICENSE.md +14 -0
- package/README.md +52 -21
- package/config/hiai-opencode.schema.json +11 -13
- package/dist/agents/{bob.d.ts → bob/claude.d.ts} +6 -2
- package/dist/agents/bob/core.d.ts +6 -0
- package/dist/agents/bob/gpt.d.ts +11 -0
- package/dist/agents/bob/index.d.ts +3 -0
- package/dist/agents/coder/core.d.ts +4 -0
- package/dist/agents/coder/gpt.d.ts +1 -4
- package/dist/agents/coder/index.d.ts +1 -0
- package/dist/agents/manager/agent.d.ts +1 -1
- package/dist/agents/manager/default-prompt-sections.d.ts +3 -3
- package/dist/agents/manager/guard-integration.d.ts +1 -0
- package/dist/agents/prompt-library/index.d.ts +0 -1
- package/dist/agents/prompt-library/shared-execution.d.ts +9 -0
- package/dist/agents/strategist/behavioral-summary.d.ts +1 -1
- package/dist/agents/strategist/identity-constraints.d.ts +1 -1
- package/dist/agents/strategist/plan-generation.d.ts +1 -1
- package/dist/agents/types.d.ts +2 -1
- package/dist/config/defaults.d.ts +1 -0
- package/dist/config/platform-schema.d.ts +26 -26
- package/dist/config/schema/agent-names.d.ts +6 -6
- package/dist/config/schema/agent-overrides.d.ts +0 -128
- package/dist/config/schema/hiai-opencode-config.d.ts +0 -128
- package/dist/config/types.d.ts +2 -2
- package/dist/features/background-agent/manager-notifier.d.ts +46 -0
- package/dist/features/background-agent/manager-types.d.ts +40 -0
- package/dist/features/background-agent/manager.d.ts +3 -19
- package/dist/features/background-agent/polling-manager.d.ts +51 -0
- package/dist/features/boulder-state/storage.d.ts +1 -0
- package/dist/features/builtin-commands/templates/loop.d.ts +2 -0
- package/dist/features/builtin-commands/templates/start-work.d.ts +1 -1
- package/dist/features/builtin-skills/skills/interview-me.d.ts +2 -0
- package/dist/features/builtin-skills/skills/planning-and-task-breakdown.d.ts +2 -0
- package/dist/hooks/reasoning-content-cache/hook.d.ts +11 -0
- package/dist/hooks/reasoning-content-cache/index.d.ts +1 -0
- package/dist/hooks/session-recovery/checkpoint.d.ts +48 -0
- package/dist/hooks/session-recovery/enhanced-hook.d.ts +30 -0
- package/dist/hooks/session-recovery/state-backup.d.ts +76 -0
- package/dist/hooks/shared/compaction-in-progress.d.ts +4 -0
- package/dist/hooks/start-work/git-operations.d.ts +47 -0
- package/dist/hooks/token-budget.d.ts +30 -0
- package/dist/index.js +1185 -1078
- package/dist/mcp/rate-limiter.d.ts +68 -0
- package/dist/plugin/chat-message.d.ts +8 -0
- package/dist/plugin/command-execute-before.d.ts +1 -1
- package/dist/plugin/event-handlers/message-updated.d.ts +2 -0
- package/dist/plugin/event-handlers/session-error.d.ts +2 -0
- package/dist/plugin/event-handlers/session-status.d.ts +2 -0
- package/dist/plugin/event-handlers/types.d.ts +62 -0
- package/dist/plugin/event-handlers/utils.d.ts +11 -0
- package/dist/plugin/event.d.ts +1 -1
- package/dist/shared/data-path.d.ts +1 -1
- package/dist/shared/errors.d.ts +70 -0
- package/dist/shared/extract-session-id.d.ts +8 -0
- package/dist/shared/git-worktree/get-git-state-summary.d.ts +14 -0
- package/dist/shared/index.d.ts +67 -68
- package/dist/shared/internal-initiator-marker.d.ts +1 -1
- package/dist/shared/logger.d.ts +5 -1
- package/dist/shared/reasoning-content-cache.d.ts +68 -0
- package/dist/shared/safe-create-hook.d.ts +4 -4
- package/dist/tools/call-hiai-agent/constants.d.ts +2 -2
- package/dist/tools/delegate-task/sub-agent.d.ts +1 -1
- package/dist/tools/look-at/constants.d.ts +1 -1
- package/docs/architecture/bob-manager-architecture.md +244 -0
- package/docs/hiai-opencode/adr/ADR-001-agent-identity-section-injection.md +66 -0
- package/docs/hiai-opencode/adr/ADR-002-anti-loop-guard-priority.md +63 -0
- package/docs/hiai-opencode/adr/ADR-003-compaction-mechanism.md +71 -0
- package/docs/hiai-opencode/adr/ADR-004-session-recovery.md +76 -0
- package/docs/hiai-opencode/api.md +305 -0
- package/docs/hiai-opencode/hooks-architecture.md +225 -0
- package/docs/hiai-opencode/migration.md +209 -0
- package/docs/skill-discovery.md +288 -0
- package/package.json +1 -1
- package/skills/agent-browser/SKILL.md +193 -0
- package/skills/apple-hig/SKILL.md +43 -0
- package/skills/article-magazine/SKILL.md +46 -0
- package/skills/article-magazine/example.html +81 -0
- package/skills/article-magazine/example.md +38 -0
- package/skills/canvas-design/SKILL.md +45 -0
- package/skills/design-templates/audio-jingle/SKILL.md +132 -0
- package/skills/design-templates/audio-jingle/example.html +128 -0
- package/skills/design-templates/blog-post/SKILL.md +80 -0
- package/skills/design-templates/blog-post/example.html +80 -0
- package/skills/design-templates/clinical-case-report/SKILL.md +209 -0
- package/skills/design-templates/clinical-case-report/example.html +698 -0
- package/skills/design-templates/clinical-case-report/examples/example-stemi.html +698 -0
- package/skills/design-templates/clinical-case-report/references/case-formats.md +94 -0
- package/skills/design-templates/clinical-case-report/references/checklist.md +41 -0
- package/skills/design-templates/critique/SKILL.md +258 -0
- package/skills/design-templates/critique/example.html +671 -0
- package/skills/design-templates/dashboard/SKILL.md +76 -0
- package/skills/design-templates/dashboard/example.html +118 -0
- package/skills/design-templates/dating-web/SKILL.md +92 -0
- package/skills/design-templates/dating-web/example.html +265 -0
- package/skills/design-templates/dcf-valuation/SKILL.md +140 -0
- package/skills/design-templates/dcf-valuation/references/sector-wacc.md +42 -0
- package/skills/design-templates/digital-eguide/SKILL.md +94 -0
- package/skills/design-templates/digital-eguide/example.html +204 -0
- package/skills/design-templates/docs-page/SKILL.md +80 -0
- package/skills/design-templates/docs-page/example.html +122 -0
- package/skills/design-templates/email-marketing/SKILL.md +84 -0
- package/skills/design-templates/email-marketing/example.html +159 -0
- package/skills/design-templates/eng-runbook/SKILL.md +51 -0
- package/skills/design-templates/eng-runbook/example.html +250 -0
- package/skills/design-templates/finance-report/SKILL.md +61 -0
- package/skills/design-templates/finance-report/example.html +242 -0
- package/skills/design-templates/flowai-live-dashboard-template/SKILL.md +87 -0
- package/skills/design-templates/flowai-live-dashboard-template/assets/template.html +387 -0
- package/skills/design-templates/flowai-live-dashboard-template/example.html +13 -0
- package/skills/design-templates/flowai-live-dashboard-template/references/checklist.md +35 -0
- package/skills/design-templates/gamified-app/SKILL.md +108 -0
- package/skills/design-templates/gamified-app/example.html +292 -0
- package/skills/design-templates/github-dashboard/SKILL.md +130 -0
- package/skills/design-templates/github-dashboard/example.html +473 -0
- package/skills/design-templates/github-dashboard/references/README.md +10 -0
- package/skills/design-templates/github-dashboard/references/artifact-example.json +15 -0
- package/skills/design-templates/github-dashboard/references/example-data.json +138 -0
- package/skills/design-templates/github-dashboard/references/provenance-example.json +92 -0
- package/skills/design-templates/github-dashboard/references/template.html +473 -0
- package/skills/design-templates/guizang-ppt/LICENSE +21 -0
- package/skills/design-templates/guizang-ppt/README.en.md +119 -0
- package/skills/design-templates/guizang-ppt/README.md +120 -0
- package/skills/design-templates/guizang-ppt/README.pt-BR.md +121 -0
- package/skills/design-templates/guizang-ppt/SKILL.md +313 -0
- package/skills/design-templates/guizang-ppt/assets/example-slides.html +318 -0
- package/skills/design-templates/guizang-ppt/assets/template.html +647 -0
- package/skills/design-templates/guizang-ppt/references/checklist.md +265 -0
- package/skills/design-templates/guizang-ppt/references/components.md +363 -0
- package/skills/design-templates/guizang-ppt/references/layouts.md +630 -0
- package/skills/design-templates/guizang-ppt/references/styles.md +195 -0
- package/skills/design-templates/guizang-ppt/references/themes.md +122 -0
- package/skills/design-templates/hr-onboarding/SKILL.md +52 -0
- package/skills/design-templates/hr-onboarding/example.html +219 -0
- package/skills/design-templates/html-ppt/.clawscan-allow +12 -0
- package/skills/design-templates/html-ppt/LICENSE +21 -0
- package/skills/design-templates/html-ppt/README.md +234 -0
- package/skills/design-templates/html-ppt/README.pt-BR.md +239 -0
- package/skills/design-templates/html-ppt/README.zh-CN.md +238 -0
- package/skills/design-templates/html-ppt/SKILL.md +250 -0
- package/skills/design-templates/html-ppt/assets/animations/animations.css +138 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/_util.js +63 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/chain-react.js +41 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/confetti-cannon.js +49 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/constellation.js +44 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/counter-explosion.js +58 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/data-stream.js +45 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/firework.js +51 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/galaxy-swirl.js +33 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/gradient-blob.js +39 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/knowledge-graph.js +69 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/letter-explode.js +50 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/magnetic-field.js +40 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/matrix-rain.js +33 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/neural-net.js +75 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/orbit-ring.js +38 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/particle-burst.js +42 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/shockwave.js +39 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/sparkle-trail.js +62 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/starfield.js +30 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/typewriter-multi.js +51 -0
- package/skills/design-templates/html-ppt/assets/animations/fx/word-cascade.js +47 -0
- package/skills/design-templates/html-ppt/assets/animations/fx-runtime.js +99 -0
- package/skills/design-templates/html-ppt/assets/base.css +150 -0
- package/skills/design-templates/html-ppt/assets/fonts.css +9 -0
- package/skills/design-templates/html-ppt/assets/runtime.js +960 -0
- package/skills/design-templates/html-ppt/assets/themes/academic-paper.css +23 -0
- package/skills/design-templates/html-ppt/assets/themes/arctic-cool.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/aurora.css +20 -0
- package/skills/design-templates/html-ppt/assets/themes/bauhaus.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/blueprint.css +19 -0
- package/skills/design-templates/html-ppt/assets/themes/catppuccin-latte.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/catppuccin-mocha.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/corporate-clean.css +19 -0
- package/skills/design-templates/html-ppt/assets/themes/cyberpunk-neon.css +23 -0
- package/skills/design-templates/html-ppt/assets/themes/dracula.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/editorial-serif.css +18 -0
- package/skills/design-templates/html-ppt/assets/themes/engineering-whiteprint.css +26 -0
- package/skills/design-templates/html-ppt/assets/themes/glassmorphism.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/gruvbox-dark.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/japanese-minimal.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/magazine-bold.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/memphis-pop.css +20 -0
- package/skills/design-templates/html-ppt/assets/themes/midcentury.css +19 -0
- package/skills/design-templates/html-ppt/assets/themes/minimal-white.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/neo-brutalism.css +17 -0
- package/skills/design-templates/html-ppt/assets/themes/news-broadcast.css +20 -0
- package/skills/design-templates/html-ppt/assets/themes/nord.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/pitch-deck-vc.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/rainbow-gradient.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/retro-tv.css +22 -0
- package/skills/design-templates/html-ppt/assets/themes/rose-pine.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/sharp-mono.css +17 -0
- package/skills/design-templates/html-ppt/assets/themes/soft-pastel.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/solarized-light.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/sunset-warm.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/swiss-grid.css +17 -0
- package/skills/design-templates/html-ppt/assets/themes/terminal-green.css +18 -0
- package/skills/design-templates/html-ppt/assets/themes/tokyo-night.css +14 -0
- package/skills/design-templates/html-ppt/assets/themes/vaporwave.css +21 -0
- package/skills/design-templates/html-ppt/assets/themes/xiaohongshu-white.css +16 -0
- package/skills/design-templates/html-ppt/assets/themes/y2k-chrome.css +20 -0
- package/skills/design-templates/html-ppt/docs/readme/_theme-cell.html +56 -0
- package/skills/design-templates/html-ppt/docs/readme/animations.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/hero.gif +0 -0
- package/skills/design-templates/html-ppt/docs/readme/layouts-live.gif +0 -0
- package/skills/design-templates/html-ppt/docs/readme/layouts.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-animations.html +61 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-layouts.html +72 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-templates.html +72 -0
- package/skills/design-templates/html-ppt/docs/readme/montage-themes.html +38 -0
- package/skills/design-templates/html-ppt/docs/readme/presenter-mode.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/templates.png +0 -0
- package/skills/design-templates/html-ppt/docs/readme/themes.png +0 -0
- package/skills/design-templates/html-ppt/examples/demo-deck/index.html +161 -0
- package/skills/design-templates/html-ppt/references/animations.md +147 -0
- package/skills/design-templates/html-ppt/references/authoring-guide.md +141 -0
- package/skills/design-templates/html-ppt/references/full-decks.md +98 -0
- package/skills/design-templates/html-ppt/references/layouts.md +103 -0
- package/skills/design-templates/html-ppt/references/presenter-mode.md +240 -0
- package/skills/design-templates/html-ppt/references/themes.md +107 -0
- package/skills/design-templates/html-ppt/scripts/new-deck.sh +46 -0
- package/skills/design-templates/html-ppt/scripts/render.sh +71 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_01.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_02.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_03.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_04.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_05.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_06.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_07.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_08.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_09.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_10.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_11.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_12.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_13.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_14.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_15.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_16.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_17.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_18.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_19.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/animation-showcase/animation-showcase_20.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_01.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_02.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_03.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_04.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_05.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_06.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_07.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_08.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_09.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_10.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_11.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_12.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_13.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_14.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_15.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_16.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_17.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_18.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_19.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_20.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_21.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_22.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_23.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_24.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_25.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_26.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_27.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_28.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_29.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_30.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_31.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_32.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_33.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_34.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_35.png +0 -0
- package/skills/design-templates/html-ppt/scripts/verify-output/theme-showcase/theme-showcase_36.png +0 -0
- package/skills/design-templates/html-ppt/templates/animation-showcase.html +172 -0
- package/skills/design-templates/html-ppt/templates/deck.html +69 -0
- package/skills/design-templates/html-ppt/templates/full-decks/course-module/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/course-module/index.html +189 -0
- package/skills/design-templates/html-ppt/templates/full-decks/course-module/style.css +46 -0
- package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/index.html +138 -0
- package/skills/design-templates/html-ppt/templates/full-decks/dir-key-nav-minimal/style.css +60 -0
- package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/index.html +180 -0
- package/skills/design-templates/html-ppt/templates/full-decks/graphify-dark-graph/style.css +54 -0
- package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/index.html +199 -0
- package/skills/design-templates/html-ppt/templates/full-decks/hermes-cyber-terminal/style.css +55 -0
- package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/index.html +190 -0
- package/skills/design-templates/html-ppt/templates/full-decks/knowledge-arch-blueprint/style.css +49 -0
- package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/index.html +144 -0
- package/skills/design-templates/html-ppt/templates/full-decks/obsidian-claude-gradient/style.css +59 -0
- package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/README.md +9 -0
- package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/index.html +148 -0
- package/skills/design-templates/html-ppt/templates/full-decks/pitch-deck/style.css +40 -0
- package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/README.md +102 -0
- package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/index.html +187 -0
- package/skills/design-templates/html-ppt/templates/full-decks/presenter-mode-reveal/style.css +216 -0
- package/skills/design-templates/html-ppt/templates/full-decks/product-launch/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/product-launch/index.html +121 -0
- package/skills/design-templates/html-ppt/templates/full-decks/product-launch/style.css +39 -0
- package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/index.html +156 -0
- package/skills/design-templates/html-ppt/templates/full-decks/tech-sharing/style.css +49 -0
- package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/index.html +183 -0
- package/skills/design-templates/html-ppt/templates/full-decks/testing-safety-alert/style.css +62 -0
- package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/README.md +8 -0
- package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/index.html +127 -0
- package/skills/design-templates/html-ppt/templates/full-decks/weekly-report/style.css +55 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/index.html +147 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-pastel-card/style.css +66 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/README.md +9 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/index.html +133 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-post/style.css +47 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/README.md +11 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/index.html +187 -0
- package/skills/design-templates/html-ppt/templates/full-decks/xhs-white-editorial/style.css +63 -0
- package/skills/design-templates/html-ppt/templates/full-decks-index.html +82 -0
- package/skills/design-templates/html-ppt/templates/layout-showcase.html +47 -0
- package/skills/design-templates/html-ppt/templates/single-page/arch-diagram.html +46 -0
- package/skills/design-templates/html-ppt/templates/single-page/big-quote.html +18 -0
- package/skills/design-templates/html-ppt/templates/single-page/bullets.html +19 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-bar.html +30 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-line.html +35 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-pie.html +36 -0
- package/skills/design-templates/html-ppt/templates/single-page/chart-radar.html +31 -0
- package/skills/design-templates/html-ppt/templates/single-page/code.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/comparison.html +47 -0
- package/skills/design-templates/html-ppt/templates/single-page/cover.html +32 -0
- package/skills/design-templates/html-ppt/templates/single-page/cta.html +27 -0
- package/skills/design-templates/html-ppt/templates/single-page/diff.html +35 -0
- package/skills/design-templates/html-ppt/templates/single-page/flow-diagram.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/gantt.html +29 -0
- package/skills/design-templates/html-ppt/templates/single-page/image-grid.html +34 -0
- package/skills/design-templates/html-ppt/templates/single-page/image-hero.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/kpi-grid.html +19 -0
- package/skills/design-templates/html-ppt/templates/single-page/mindmap.html +38 -0
- package/skills/design-templates/html-ppt/templates/single-page/process-steps.html +27 -0
- package/skills/design-templates/html-ppt/templates/single-page/pros-cons.html +31 -0
- package/skills/design-templates/html-ppt/templates/single-page/roadmap.html +46 -0
- package/skills/design-templates/html-ppt/templates/single-page/section-divider.html +17 -0
- package/skills/design-templates/html-ppt/templates/single-page/stat-highlight.html +17 -0
- package/skills/design-templates/html-ppt/templates/single-page/table.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/terminal.html +35 -0
- package/skills/design-templates/html-ppt/templates/single-page/thanks.html +21 -0
- package/skills/design-templates/html-ppt/templates/single-page/three-column.html +18 -0
- package/skills/design-templates/html-ppt/templates/single-page/timeline.html +32 -0
- package/skills/design-templates/html-ppt/templates/single-page/toc.html +26 -0
- package/skills/design-templates/html-ppt/templates/single-page/todo-checklist.html +33 -0
- package/skills/design-templates/html-ppt/templates/single-page/two-column.html +39 -0
- package/skills/design-templates/html-ppt/templates/theme-showcase.html +151 -0
- package/skills/design-templates/html-ppt-course-module/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-course-module/example.html +542 -0
- package/skills/design-templates/html-ppt-dir-key-nav-minimal/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-dir-key-nav-minimal/example.html +366 -0
- package/skills/design-templates/html-ppt-graphify-dark-graph/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-graphify-dark-graph/example.html +402 -0
- package/skills/design-templates/html-ppt-hermes-cyber-terminal/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-hermes-cyber-terminal/example.html +422 -0
- package/skills/design-templates/html-ppt-knowledge-arch-blueprint/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-knowledge-arch-blueprint/example.html +407 -0
- package/skills/design-templates/html-ppt-obsidian-claude-gradient/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-obsidian-claude-gradient/example.html +371 -0
- package/skills/design-templates/html-ppt-pitch-deck/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-pitch-deck/example.html +495 -0
- package/skills/design-templates/html-ppt-presenter-mode-reveal/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-presenter-mode-reveal/example.html +725 -0
- package/skills/design-templates/html-ppt-product-launch/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-product-launch/example.html +467 -0
- package/skills/design-templates/html-ppt-taste-brutalist/SKILL.md +70 -0
- package/skills/design-templates/html-ppt-taste-brutalist/example.html +774 -0
- package/skills/design-templates/html-ppt-taste-editorial/SKILL.md +62 -0
- package/skills/design-templates/html-ppt-taste-editorial/example.html +689 -0
- package/skills/design-templates/html-ppt-tech-sharing/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-tech-sharing/example.html +512 -0
- package/skills/design-templates/html-ppt-testing-safety-alert/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-testing-safety-alert/example.html +413 -0
- package/skills/design-templates/html-ppt-weekly-report/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-weekly-report/example.html +489 -0
- package/skills/design-templates/html-ppt-xhs-pastel-card/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-xhs-pastel-card/example.html +381 -0
- package/skills/design-templates/html-ppt-xhs-post/SKILL.md +78 -0
- package/skills/design-templates/html-ppt-xhs-post/example.html +487 -0
- package/skills/design-templates/html-ppt-xhs-white-editorial/SKILL.md +77 -0
- package/skills/design-templates/html-ppt-xhs-white-editorial/example.html +418 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/example.html +1640 -0
- package/skills/design-templates/html-ppt-zhangzara-8-bit-orbit/template.json +48 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/example.html +833 -0
- package/skills/design-templates/html-ppt-zhangzara-biennale-yellow/template.json +49 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/example.html +1453 -0
- package/skills/design-templates/html-ppt-zhangzara-block-frame/template.json +47 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/example.html +1423 -0
- package/skills/design-templates/html-ppt-zhangzara-blue-professional/template.json +44 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/example.html +876 -0
- package/skills/design-templates/html-ppt-zhangzara-bold-poster/template.json +45 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/example.html +2144 -0
- package/skills/design-templates/html-ppt-zhangzara-broadside/template.json +49 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/example.html +1413 -0
- package/skills/design-templates/html-ppt-zhangzara-capsule/template.json +51 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/example.html +1136 -0
- package/skills/design-templates/html-ppt-zhangzara-cartesian/template.json +47 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/example.html +1205 -0
- package/skills/design-templates/html-ppt-zhangzara-cobalt-grid/template.json +49 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/example.html +1487 -0
- package/skills/design-templates/html-ppt-zhangzara-coral/template.json +45 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/SKILL.md +99 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/assets/deck-stage.js +619 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/example.html +636 -0
- package/skills/design-templates/html-ppt-zhangzara-creative-mode/template.json +47 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/SKILL.md +93 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/example.html +469 -0
- package/skills/design-templates/html-ppt-zhangzara-daisy-days/template.json +54 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/SKILL.md +98 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/assets/deck-stage.js +619 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/example.html +737 -0
- package/skills/design-templates/html-ppt-zhangzara-editorial-tri-tone/template.json +44 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/LICENSE +21 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/SKILL.md +92 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/example.html +1676 -0
- package/skills/design-templates/html-ppt-zhangzara-grove/template.json +51 -0
- package/skills/figma-code-connect-components/SKILL.md +42 -0
- package/skills/figma-create-design-system-rules/SKILL.md +42 -0
- package/skills/figma-create-new-file/SKILL.md +41 -0
- package/skills/figma-generate-design/SKILL.md +42 -0
- package/skills/figma-generate-library/SKILL.md +42 -0
- package/skills/figma-implement-design/SKILL.md +42 -0
- package/skills/figma-use/SKILL.md +42 -0
- package/skills/full-page-screenshot/SKILL.md +42 -0
- package/skills/interview-me/SKILL.md +64 -0
- package/skills/planning-and-task-breakdown/SKILL.md +52 -0
- package/skills/sora/SKILL.md +43 -0
- package/skills/theme-factory/SKILL.md +43 -0
- package/skills/web-design-guidelines/SKILL.md +42 -0
- package/dist/agents/prompt-library/orchestration.d.ts +0 -4
- package/skills/brainstorming/SKILL.md +0 -164
- package/skills/brainstorming/scripts/frame-template.html +0 -214
- package/skills/brainstorming/scripts/helper.js +0 -88
- package/skills/brainstorming/scripts/server.cjs +0 -354
- package/skills/brainstorming/scripts/start-server.sh +0 -148
- package/skills/brainstorming/scripts/stop-server.sh +0 -56
- package/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/skills/brainstorming/visual-companion.md +0 -287
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
# html-ppt · HTML PPT 工作室
|
|
2
|
+
|
|
3
|
+
> 一款专业级的 AgentSkill,让 AI 做出真正能打的 HTML 演示文稿。
|
|
4
|
+
> **36 套主题**、**15 套完整 deck 模板**、**31 种页面布局**、**47 个动效**
|
|
5
|
+
> (27 个 CSS + 20 个 Canvas FX),加上全新的 **演讲者模式** —— 像素级
|
|
6
|
+
> 完美预览 + 逐字稿提词器 + 计时器。纯静态 HTML/CSS/JS,无需构建。
|
|
7
|
+
|
|
8
|
+
**作者:** lewis <sudolewis@gmail.com>
|
|
9
|
+
**协议:** MIT
|
|
10
|
+
**English docs:** [README.md](README.md)
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
> 一行命令装好 **36 主题 × 20 Canvas FX × 31 布局 × 15 完整 deck + 演讲者模式**。
|
|
15
|
+
> 上图里的每一个预览都是真实的 iframe 加载真实模板文件 —— 不是截图,不是色卡。
|
|
16
|
+
|
|
17
|
+
## 🎤 演讲者模式(全新)
|
|
18
|
+
|
|
19
|
+
在任何 deck 里按 `S` 键,弹出一个独立的演讲者窗口,包含 4 个**可拖拽、
|
|
20
|
+
可调整大小的磁吸卡片**:当前页预览、下一页预览、逐字稿、计时器。两个窗口
|
|
21
|
+
通过 `BroadcastChannel` 双向同步翻页。
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
25
|
+
**为什么预览是像素级完美的:** 每个卡片是一个 `<iframe>`,加载的是**同一
|
|
26
|
+
份 deck HTML 文件**,只是 URL 多了 `?preview=N` 参数。runtime 检测到这个
|
|
27
|
+
参数后,只渲染第 N 页并隐藏所有 chrome —— 所以预览使用**和观众视图完全相
|
|
28
|
+
同的 CSS、主题、字体、viewport**,颜色和排版保证 100% 一致。
|
|
29
|
+
|
|
30
|
+
**丝滑翻页(零闪烁):** 翻页时演讲者窗口通过 `postMessage({type:'preview-goto',
|
|
31
|
+
idx:N})` 通知 iframe,iframe 只是切换 `.is-active` class —— **不重新加载、
|
|
32
|
+
不白屏、不闪烁**。
|
|
33
|
+
|
|
34
|
+
**逐字稿 3 条铁律:**
|
|
35
|
+
1. **提示信号,不是讲稿** — 关键词加粗,过渡句独立成段
|
|
36
|
+
2. **每页 150–300 字** — 约 2–3 分钟/页的节奏
|
|
37
|
+
3. **用口语,不用书面语** — "所以" 不是 "因此","这个" 不是 "该"
|
|
38
|
+
|
|
39
|
+
详见 [`references/presenter-mode.md`](references/presenter-mode.md),或直接复制
|
|
40
|
+
`templates/full-decks/presenter-mode-reveal/` 这个现成模板 —— 每一页都带完整
|
|
41
|
+
150–300 字的示例逐字稿。
|
|
42
|
+
|
|
43
|
+
## 一行命令安装
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
npx skills add https://github.com/lewislulu/html-ppt-skill
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
装好后,任何支持 AgentSkill 的 agent(Claude Code / Codex / Cursor / OpenClaw 等)
|
|
50
|
+
都能用这套能力做 PPT。对 agent 说:
|
|
51
|
+
|
|
52
|
+
> "做一份 8 页的技术分享 slides,用 cyberpunk 主题"
|
|
53
|
+
> "把这段 outline 变成投资人 pitch deck"
|
|
54
|
+
> "做一个小红书图文,9 张,白底柔和风"
|
|
55
|
+
> "做一份带演讲者模式的产品分享,我想要有逐字稿"
|
|
56
|
+
|
|
57
|
+
## Skill 内容一览
|
|
58
|
+
|
|
59
|
+
| | 数量 | 位置 |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| 🎤 **演讲者模式** | **新增** | `S` 键 / `?preview=N` |
|
|
62
|
+
| 🎨 **主题** | **36** | `assets/themes/*.css` |
|
|
63
|
+
| 📑 **完整 deck 模板** | **15** | `templates/full-decks/<name>/` |
|
|
64
|
+
| 🧩 **单页布局** | **31** | `templates/single-page/*.html` |
|
|
65
|
+
| ✨ **CSS 动画** | **27** | `assets/animations/animations.css` |
|
|
66
|
+
| 💥 **Canvas FX 动画** | **20** | `assets/animations/fx/*.js` |
|
|
67
|
+
| 🖼️ **Showcase deck** | 4 | `templates/*-showcase.html` |
|
|
68
|
+
| 📸 **验证截图** | 56 | `scripts/verify-output/` |
|
|
69
|
+
|
|
70
|
+
### 36 套主题
|
|
71
|
+
|
|
72
|
+
`minimal-white`、`editorial-serif`、`soft-pastel`、`sharp-mono`、`arctic-cool`、
|
|
73
|
+
`sunset-warm`、`catppuccin-latte`、`catppuccin-mocha`、`dracula`、`tokyo-night`、
|
|
74
|
+
`nord`、`solarized-light`、`gruvbox-dark`、`rose-pine`、`neo-brutalism`、
|
|
75
|
+
`glassmorphism`、`bauhaus`、`swiss-grid`、`terminal-green`、`xiaohongshu-white`、
|
|
76
|
+
`rainbow-gradient`、`aurora`、`blueprint`、`memphis-pop`、`cyberpunk-neon`、
|
|
77
|
+
`y2k-chrome`、`retro-tv`、`japanese-minimal`、`vaporwave`、`midcentury`、
|
|
78
|
+
`corporate-clean`、`academic-paper`、`news-broadcast`、`pitch-deck-vc`、
|
|
79
|
+
`magazine-bold`、`engineering-whiteprint`
|
|
80
|
+
|
|
81
|
+

|
|
82
|
+
|
|
83
|
+
每个主题都是一份纯 CSS token 文件 —— 只需要换一行 `<link>` 就能给整份 deck
|
|
84
|
+
换皮。在 `templates/theme-showcase.html` 里可以浏览全部(每一页用独立 iframe
|
|
85
|
+
渲染,避免样式互相污染)。
|
|
86
|
+
|
|
87
|
+

|
|
88
|
+
|
|
89
|
+
### 15 套完整 deck 模板
|
|
90
|
+
|
|
91
|
+
8 个从真实作品提炼的视觉语言,7 个通用场景脚手架:
|
|
92
|
+
|
|
93
|
+
**提炼款**
|
|
94
|
+
- `xhs-white-editorial` — 小红书白底杂志风
|
|
95
|
+
- `graphify-dark-graph` — 暗底 + 力导向知识图谱
|
|
96
|
+
- `knowledge-arch-blueprint` — 蓝图 / 架构图风
|
|
97
|
+
- `hermes-cyber-terminal` — 终端 cyberpunk 风
|
|
98
|
+
- `obsidian-claude-gradient` — 紫色渐变卡
|
|
99
|
+
- `testing-safety-alert` — 红 / 琥珀警示风
|
|
100
|
+
- `xhs-pastel-card` — 柔和马卡龙图文
|
|
101
|
+
- `dir-key-nav-minimal` — 方向键极简
|
|
102
|
+
|
|
103
|
+
**场景款**
|
|
104
|
+
- `pitch-deck` — 投资人 pitch
|
|
105
|
+
- `product-launch` — 产品发布会
|
|
106
|
+
- `tech-sharing` — 技术分享
|
|
107
|
+
- `weekly-report` — 周报
|
|
108
|
+
- `xhs-post` — 小红书图文(9 页 3:4)
|
|
109
|
+
- `course-module` — 教学模块
|
|
110
|
+
- **`presenter-mode-reveal`** 🎤 — 完整分享模板,**每一页都带 150-300 字
|
|
111
|
+
的示例逐字稿**,围绕 `S` 键演讲者模式专门设计
|
|
112
|
+
|
|
113
|
+
每个模板都是自包含的文件夹,用 scoped `.tpl-<name>` CSS,所以多个模板可以
|
|
114
|
+
同时加载不会互相污染。在 `templates/full-decks-index.html` 可以看全套 gallery。
|
|
115
|
+
|
|
116
|
+

|
|
117
|
+
|
|
118
|
+
### 31 种单页布局
|
|
119
|
+
|
|
120
|
+
cover · toc · section-divider · bullets · two-column · three-column ·
|
|
121
|
+
big-quote · stat-highlight · kpi-grid · table · code · diff · terminal ·
|
|
122
|
+
flow-diagram · timeline · roadmap · mindmap · comparison · pros-cons ·
|
|
123
|
+
todo-checklist · gantt · image-hero · image-grid · chart-bar · chart-line ·
|
|
124
|
+
chart-pie · chart-radar · arch-diagram · process-steps · cta · thanks
|
|
125
|
+
|
|
126
|
+
每个布局都带真实的示例数据,拖进 deck 立即看得到效果。
|
|
127
|
+
|
|
128
|
+

|
|
129
|
+
|
|
130
|
+
*大 iframe 直接加载 `templates/single-page/<name>.html` 文件,每 2.8 秒
|
|
131
|
+
自动切换到下一个布局。*
|
|
132
|
+
|
|
133
|
+

|
|
134
|
+
|
|
135
|
+
### 27 个 CSS 动画 + 20 个 Canvas FX
|
|
136
|
+
|
|
137
|
+
**CSS 动画(轻量)** — 方向性淡入、`rise-in`、`zoom-pop`、`blur-in`、
|
|
138
|
+
`glitch-in`、`typewriter`(打字机)、`neon-glow`(霓虹光晕)、
|
|
139
|
+
`shimmer-sweep`(流光)、`gradient-flow`(渐变流动)、`stagger-list`
|
|
140
|
+
(列表错开入场)、`counter-up`(数字滚动)、`path-draw`(路径绘制)、
|
|
141
|
+
`morph-shape`、`parallax-tilt`、`card-flip-3d`、`cube-rotate-3d`、
|
|
142
|
+
`page-turn-3d`、`perspective-zoom`、`marquee-scroll`、`kenburns`、
|
|
143
|
+
`ripple-reveal`、`spotlight`、…
|
|
144
|
+
|
|
145
|
+
**Canvas FX(电影级)** — `particle-burst`(粒子爆发)、`confetti-cannon`
|
|
146
|
+
(彩带)、`firework`(烟花)、`starfield`(星空)、`matrix-rain`
|
|
147
|
+
(代码雨)、`knowledge-graph`(力导向知识图谱)、`neural-net`(神经网络
|
|
148
|
+
脉冲)、`constellation`(星座连线)、`orbit-ring`(轨道环)、
|
|
149
|
+
`galaxy-swirl`(星系漩涡)、`word-cascade`、`letter-explode`、
|
|
150
|
+
`chain-react`、`magnetic-field`、`data-stream`、`gradient-blob`、
|
|
151
|
+
`sparkle-trail`、`shockwave`、`typewriter-multi`、`counter-explosion`。
|
|
152
|
+
每一个都是手写的 canvas 模块,进入 slide 时由 `fx-runtime.js` 自动初始化。
|
|
153
|
+
|
|
154
|
+
## 快速开始(手动 / 安装后 / git clone 后)
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# 从 base 模板新建一个 deck
|
|
158
|
+
./scripts/new-deck.sh my-talk
|
|
159
|
+
|
|
160
|
+
# 浏览所有内容
|
|
161
|
+
open templates/theme-showcase.html # 全部 36 主题(iframe 隔离)
|
|
162
|
+
open templates/layout-showcase.html # 全部 31 布局
|
|
163
|
+
open templates/animation-showcase.html # 全部 47 动效
|
|
164
|
+
open templates/full-decks-index.html # 全部 15 个完整 deck
|
|
165
|
+
|
|
166
|
+
# 用 headless Chrome 导出 PNG
|
|
167
|
+
./scripts/render.sh templates/theme-showcase.html
|
|
168
|
+
./scripts/render.sh examples/my-talk/index.html 12
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## 键盘快捷键
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
← → Space PgUp PgDn Home End 翻页
|
|
175
|
+
F 全屏
|
|
176
|
+
S 打开演讲者窗口(磁吸卡片模式)
|
|
177
|
+
N 底部 notes 抽屉
|
|
178
|
+
R 重置计时器(演讲者窗口内)
|
|
179
|
+
O slide 总览网格
|
|
180
|
+
T 切换主题(自动同步到演讲者窗口)
|
|
181
|
+
A 在当前 slide 循环演示一个动画
|
|
182
|
+
#/N (URL) 深链到第 N 页
|
|
183
|
+
?preview=N (URL) 预览模式(只显示单页,隐藏 chrome)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## 项目结构
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
html-ppt-skill/
|
|
190
|
+
├── SKILL.md agent 入口
|
|
191
|
+
├── README.md 英文 README
|
|
192
|
+
├── README.zh-CN.md 本文件
|
|
193
|
+
├── references/ 详细文档
|
|
194
|
+
│ ├── themes.md 36 主题 + 使用场景
|
|
195
|
+
│ ├── layouts.md 31 布局
|
|
196
|
+
│ ├── animations.md 27 CSS + 20 FX 目录
|
|
197
|
+
│ ├── full-decks.md 15 完整 deck 模板
|
|
198
|
+
│ ├── presenter-mode.md 🎤 演讲者模式 + 逐字稿指南
|
|
199
|
+
│ └── authoring-guide.md 完整工作流
|
|
200
|
+
├── assets/
|
|
201
|
+
│ ├── base.css 共享 tokens + 基础组件
|
|
202
|
+
│ ├── fonts.css web 字体引入
|
|
203
|
+
│ ├── runtime.js 键盘导航 + 演讲者模式 + 总览
|
|
204
|
+
│ ├── themes/*.css 36 主题 token 文件
|
|
205
|
+
│ └── animations/
|
|
206
|
+
│ ├── animations.css 27 个命名 CSS 动画
|
|
207
|
+
│ ├── fx-runtime.js 进入 slide 自动初始化 [data-fx]
|
|
208
|
+
│ └── fx/*.js 20 个 Canvas FX 模块
|
|
209
|
+
├── templates/
|
|
210
|
+
│ ├── deck.html 最小起步模板
|
|
211
|
+
│ ├── theme-showcase.html iframe 隔离的主题 tour
|
|
212
|
+
│ ├── layout-showcase.html 全部 31 布局
|
|
213
|
+
│ ├── animation-showcase.html 47 动画 slide
|
|
214
|
+
│ ├── full-decks-index.html 15 deck gallery
|
|
215
|
+
│ ├── full-decks/<name>/ 15 个 scoped 多页 deck 模板
|
|
216
|
+
│ └── single-page/*.html 31 个布局文件(带示例数据)
|
|
217
|
+
├── scripts/
|
|
218
|
+
│ ├── new-deck.sh 脚手架
|
|
219
|
+
│ ├── render.sh headless Chrome → PNG
|
|
220
|
+
│ └── verify-output/ 56 张自测截图
|
|
221
|
+
└── examples/demo-deck/ 完整可运行的示例 deck
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## 设计理念
|
|
225
|
+
|
|
226
|
+
- **Token 驱动的设计系统。** 所有颜色、圆角、阴影、字体决策都在
|
|
227
|
+
`assets/base.css` + 当前主题文件里。改一个变量,整份 deck 优雅地重排。
|
|
228
|
+
- **Iframe 隔离预览。** 主题 / 布局 / 完整 deck 的 showcase 都用 `<iframe>`,
|
|
229
|
+
确保每个预览都是真实、独立的渲染结果。
|
|
230
|
+
- **零构建。** 纯静态 HTML/CSS/JS。只有 webfont / highlight.js / chart.js
|
|
231
|
+
(可选) 走 CDN。
|
|
232
|
+
- **资深设计师的默认值。** 字号规律、间距节奏、渐变、卡片处理都有态度 ——
|
|
233
|
+
绝不是 "PowerPoint 2006" 那种味道。
|
|
234
|
+
- **中英双语一等公民。** 预导入了 Noto Sans SC / Noto Serif SC。
|
|
235
|
+
|
|
236
|
+
## 协议
|
|
237
|
+
|
|
238
|
+
MIT © 2026 lewis <sudolewis@gmail.com>
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: html-ppt
|
|
3
|
+
description: HTML PPT Studio — author professional static HTML presentations in many styles, layouts, and animations, all driven by templates. Use when the user asks for a presentation, PPT, slides, keynote, deck, slideshow, "幻灯片", "演讲稿", "做一份 PPT", "做一份 slides", a reveal-style HTML deck, a 小红书 图文, or any kind of multi-slide pitch/report/sharing document that should look tasteful and be usable with keyboard navigation. Triggers include keywords like "presentation", "ppt", "slides", "deck", "keynote", "reveal", "slideshow", "幻灯片", "演讲稿", "分享稿", "小红书图文", "talk slides", "pitch deck", "tech sharing", "technical presentation".
|
|
4
|
+
triggers:
|
|
5
|
+
- "ppt"
|
|
6
|
+
- "deck"
|
|
7
|
+
- "slides"
|
|
8
|
+
- "presentation"
|
|
9
|
+
- "keynote"
|
|
10
|
+
- "reveal"
|
|
11
|
+
- "slideshow"
|
|
12
|
+
- "幻灯片"
|
|
13
|
+
- "演讲稿"
|
|
14
|
+
- "分享稿"
|
|
15
|
+
- "talk slides"
|
|
16
|
+
- "pitch deck"
|
|
17
|
+
- "tech sharing"
|
|
18
|
+
- "technical presentation"
|
|
19
|
+
od:
|
|
20
|
+
mode: deck
|
|
21
|
+
scenario: marketing
|
|
22
|
+
upstream: "https://github.com/lewislulu/html-ppt-skill"
|
|
23
|
+
preview:
|
|
24
|
+
type: html
|
|
25
|
+
entry: index.html
|
|
26
|
+
design_system:
|
|
27
|
+
requires: false
|
|
28
|
+
speaker_notes: true
|
|
29
|
+
animations: true
|
|
30
|
+
example_prompt: "用 html-ppt 做一份 12 页的 HTML PPT。先帮我确认三件事:内容/页数/受众、主题(从 36 套里推荐 2-3 个)、起点全 deck 模板(pitch-deck / tech-sharing / weekly-report / xhs-post / presenter-mode-reveal 任选一个),对齐之后再开始写 slides。"
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
# html-ppt — HTML PPT Studio
|
|
34
|
+
|
|
35
|
+
Author professional HTML presentations as static files. One theme file = one
|
|
36
|
+
look. One layout file = one page type. One animation class = one entry effect.
|
|
37
|
+
All pages share a token-based design system in `assets/base.css`.
|
|
38
|
+
|
|
39
|
+
## Install
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npx skills add https://github.com/lewislulu/html-ppt-skill
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
One command, no build. Pure static HTML/CSS/JS with only CDN webfonts.
|
|
46
|
+
|
|
47
|
+
## What the skill gives you
|
|
48
|
+
|
|
49
|
+
- **36 themes** (`assets/themes/*.css`) — minimal-white, editorial-serif, soft-pastel, sharp-mono, arctic-cool, sunset-warm, catppuccin-latte/mocha, dracula, tokyo-night, nord, solarized-light, gruvbox-dark, rose-pine, neo-brutalism, glassmorphism, bauhaus, swiss-grid, terminal-green, xiaohongshu-white, rainbow-gradient, aurora, blueprint, memphis-pop, cyberpunk-neon, y2k-chrome, retro-tv, japanese-minimal, vaporwave, midcentury, corporate-clean, academic-paper, news-broadcast, pitch-deck-vc, magazine-bold, engineering-whiteprint
|
|
50
|
+
- **15 full-deck templates** (`templates/full-decks/<name>/`) — complete multi-slide decks with scoped `.tpl-<name>` CSS. 8 extracted from real-world decks (xhs-white-editorial, graphify-dark-graph, knowledge-arch-blueprint, hermes-cyber-terminal, obsidian-claude-gradient, testing-safety-alert, xhs-pastel-card, dir-key-nav-minimal), 7 scenario scaffolds (pitch-deck, product-launch, tech-sharing, weekly-report, xhs-post 3:4, course-module, **presenter-mode-reveal** — 演讲者模式专用)
|
|
51
|
+
- **31 layouts** (`templates/single-page/*.html`) with realistic demo data
|
|
52
|
+
- **27 CSS animations** (`assets/animations/animations.css`) via `data-anim`
|
|
53
|
+
- **20 canvas FX animations** (`assets/animations/fx/*.js`) via `data-fx` — particle-burst, confetti-cannon, firework, starfield, matrix-rain, knowledge-graph (force-directed), neural-net (pulses), constellation, orbit-ring, galaxy-swirl, word-cascade, letter-explode, chain-react, magnetic-field, data-stream, gradient-blob, sparkle-trail, shockwave, typewriter-multi, counter-explosion
|
|
54
|
+
- **Keyboard runtime** (`assets/runtime.js`) — arrows, T (theme), A (anim), F/O, **S (presenter mode: magnetic-card popup with CURRENT / NEXT / SCRIPT / TIMER cards)**, N (notes drawer), R (reset timer in presenter)
|
|
55
|
+
- **FX runtime** (`assets/animations/fx-runtime.js`) — auto-inits `[data-fx]` on slide enter, cleans up on leave
|
|
56
|
+
- **Showcase decks** for themes / layouts / animations / full-decks gallery
|
|
57
|
+
- **Headless Chrome render script** for PNG export
|
|
58
|
+
|
|
59
|
+
## When to use
|
|
60
|
+
|
|
61
|
+
Use when the user asks for any kind of slide-based output or wants to turn
|
|
62
|
+
text/notes into a presentable deck. Prefer this over building from scratch.
|
|
63
|
+
|
|
64
|
+
### 🎤 Presenter Mode (演讲者模式 + 逐字稿)
|
|
65
|
+
|
|
66
|
+
If the user mentions any of: **演讲 / 分享 / 讲稿 / 逐字稿 / speaker notes / presenter view / 演讲者视图 / 提词器**, or says things like "我要去给团队讲 xxx", "要做一场技术分享", "怕讲不流畅", "想要一份带逐字稿的 PPT" — **use the `presenter-mode-reveal` full-deck template** and write 150–300 words of 逐字稿 in each slide's `<aside class="notes">`.
|
|
67
|
+
|
|
68
|
+
See [references/presenter-mode.md](references/presenter-mode.md) for the full authoring guide including the 3 rules of speaker script writing:
|
|
69
|
+
1. **不是讲稿,是提示信号** — 加粗核心词 + 过渡句独立成段
|
|
70
|
+
2. **每页 150–300 字** — 2–3 分钟/页的节奏
|
|
71
|
+
3. **用口语,不用书面语** — "因此"→"所以","该方案"→"这个方案"
|
|
72
|
+
|
|
73
|
+
All full-deck templates support the S key presenter mode (it's built into `runtime.js`). **S opens a new popup window with 4 magnetic cards**:
|
|
74
|
+
- 🔵 **CURRENT** — pixel-perfect iframe preview of the current slide
|
|
75
|
+
- 🟣 **NEXT** — pixel-perfect iframe preview of the next slide
|
|
76
|
+
- 🟠 **SPEAKER SCRIPT** — large-font 逐字稿 (scrollable)
|
|
77
|
+
- 🟢 **TIMER** — elapsed time + slide counter + prev/next/reset buttons
|
|
78
|
+
|
|
79
|
+
Each card is **draggable by its header** and **resizable by the bottom-right corner handle**. Card positions/sizes persist to `localStorage` per deck. A "Reset layout" button restores the default arrangement.
|
|
80
|
+
|
|
81
|
+
**Why the previews are pixel-perfect**: each preview is an `<iframe>` that loads the actual deck HTML with a `?preview=N` query param; `runtime.js` detects this and renders only slide N with no chrome. So the preview uses the **same CSS, theme, fonts, and viewport as the audience view** — colors and layout are guaranteed identical.
|
|
82
|
+
|
|
83
|
+
**Smooth navigation**: on slide change, the presenter window sends `postMessage({type:'preview-goto', idx:N})` to each iframe. The iframe just toggles `.is-active` between slides — **no reload, no flicker**. The two windows also stay in sync via `BroadcastChannel`.
|
|
84
|
+
|
|
85
|
+
Only `presenter-mode-reveal` is designed from the ground up around the feature with proper example 逐字稿 on every slide.
|
|
86
|
+
|
|
87
|
+
Keyboard in presenter window: `← →` navigate (syncs audience) · `R` reset timer · `Esc` close popup.
|
|
88
|
+
Keyboard in audience window: `S` open presenter · `T` cycle theme · `← →` navigate (syncs presenter) · `F` fullscreen · `O` overview.
|
|
89
|
+
|
|
90
|
+
## Before you author anything — ALWAYS ask or recommend
|
|
91
|
+
|
|
92
|
+
**Do not start writing slides until you understand three things.** Either ask
|
|
93
|
+
the user directly, or — if they already handed you rich content — propose a
|
|
94
|
+
tasteful default and confirm.
|
|
95
|
+
|
|
96
|
+
1. **Content & audience.** What's the deck about, how many slides, who's
|
|
97
|
+
watching (engineers / execs / 小红书读者 / 学生 / VC)?
|
|
98
|
+
2. **Style / theme.** Which of the 36 themes fits? If unsure, recommend 2-3
|
|
99
|
+
candidates based on tone:
|
|
100
|
+
- Business / investor pitch → `pitch-deck-vc`, `corporate-clean`, `swiss-grid`
|
|
101
|
+
- Tech sharing / engineering → `tokyo-night`, `dracula`, `catppuccin-mocha`,
|
|
102
|
+
`terminal-green`, `blueprint`
|
|
103
|
+
- 小红书图文 → `xiaohongshu-white`, `soft-pastel`, `rainbow-gradient`,
|
|
104
|
+
`magazine-bold`
|
|
105
|
+
- Academic / report → `academic-paper`, `editorial-serif`, `minimal-white`
|
|
106
|
+
- Edgy / cyber / launch → `cyberpunk-neon`, `vaporwave`, `y2k-chrome`,
|
|
107
|
+
`neo-brutalism`
|
|
108
|
+
3. **Starting point.** One of the 14 full-deck templates, or scratch? Point
|
|
109
|
+
to the closest `templates/full-decks/<name>/` and ask if it fits. If the
|
|
110
|
+
user's content suggests something obvious (e.g. "我要做产品发布会" →
|
|
111
|
+
`product-launch`), propose it confidently instead of asking blindly.
|
|
112
|
+
|
|
113
|
+
A good opening message looks like:
|
|
114
|
+
|
|
115
|
+
> 我可以给你做这份 PPT!先确认三件事:
|
|
116
|
+
> 1. 大致内容 / 页数 / 观众是谁?
|
|
117
|
+
> 2. 风格偏好?我建议从这 3 个主题里选一个:`tokyo-night`(技术分享默认好看)、`xiaohongshu-white`(小红书风)、`corporate-clean`(正式汇报)。
|
|
118
|
+
> 3. 要不要用我现成的 `tech-sharing` 全 deck 模板打底?
|
|
119
|
+
|
|
120
|
+
Only after those are clear, scaffold the deck and start writing.
|
|
121
|
+
|
|
122
|
+
## Quick start
|
|
123
|
+
|
|
124
|
+
1. **Scaffold a new deck.** From the repo root:
|
|
125
|
+
```bash
|
|
126
|
+
./scripts/new-deck.sh my-talk
|
|
127
|
+
open examples/my-talk/index.html
|
|
128
|
+
```
|
|
129
|
+
2. **Pick a theme.** Open the deck and press `T` to cycle. Or hard-code it:
|
|
130
|
+
```html
|
|
131
|
+
<link rel="stylesheet" id="theme-link" href="../assets/themes/aurora.css">
|
|
132
|
+
```
|
|
133
|
+
Catalog in [references/themes.md](references/themes.md).
|
|
134
|
+
3. **Pick layouts.** Copy `<section class="slide">...</section>` blocks out of
|
|
135
|
+
files in `templates/single-page/` into your deck. Replace the demo data.
|
|
136
|
+
Catalog in [references/layouts.md](references/layouts.md).
|
|
137
|
+
4. **Add animations.** Put `data-anim="fade-up"` (or `class="anim-fade-up"`) on
|
|
138
|
+
any element. On `<ul>`/grids, use `anim-stagger-list` for sequenced reveals.
|
|
139
|
+
For canvas FX, use `<div data-fx="knowledge-graph">...</div>` and include
|
|
140
|
+
`<script src="../assets/animations/fx-runtime.js"></script>`.
|
|
141
|
+
Catalog in [references/animations.md](references/animations.md).
|
|
142
|
+
5. **Use a full-deck template.** Copy `templates/full-decks/<name>/` into
|
|
143
|
+
`examples/my-talk/` as a starting point. Each folder is self-contained with
|
|
144
|
+
scoped CSS. Catalog in [references/full-decks.md](references/full-decks.md)
|
|
145
|
+
and gallery at `templates/full-decks-index.html`.
|
|
146
|
+
6. **Render to PNG.**
|
|
147
|
+
```bash
|
|
148
|
+
./scripts/render.sh templates/theme-showcase.html # one shot
|
|
149
|
+
./scripts/render.sh examples/my-talk/index.html 12 # 12 slides
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Authoring rules (important)
|
|
153
|
+
|
|
154
|
+
- **Always start from a template.** Don't author slides from scratch — copy the
|
|
155
|
+
closest layout from `templates/single-page/` first, then replace content.
|
|
156
|
+
- **Use tokens, not literal colors.** Every color, radius, shadow should come
|
|
157
|
+
from CSS variables defined in `assets/base.css` and overridden by a theme.
|
|
158
|
+
Good: `color: var(--text-1)`. Bad: `color: #111`.
|
|
159
|
+
- **Don't invent new layout files.** Prefer composing existing ones. Only add
|
|
160
|
+
a new `templates/single-page/*.html` if none of the 30 fit.
|
|
161
|
+
- **Respect chrome slots.** `.deck-header`, `.deck-footer`, `.slide-number`
|
|
162
|
+
and the progress bar are provided by `assets/base.css` + `runtime.js`.
|
|
163
|
+
- **Keyboard-first.** Always include `<script src="../assets/runtime.js"></script>`
|
|
164
|
+
so the deck supports ← → / T / A / F / S / O / hash deep-links.
|
|
165
|
+
- **One `.slide` per logical page.** `runtime.js` makes `.slide.is-active`
|
|
166
|
+
visible; all others are hidden.
|
|
167
|
+
- **Supply notes.** Wrap speaker notes in `<div class="notes">…</div>` inside
|
|
168
|
+
each slide. Press S to open the overlay.
|
|
169
|
+
- **NEVER put presenter-only text on the slide itself.** Descriptive text like
|
|
170
|
+
"这一页展示了……" or "Speaker: 这里可以补充……" or small explanatory captions
|
|
171
|
+
aimed at the presenter MUST go inside `<div class="notes">`, NOT as visible
|
|
172
|
+
`<p>` / `<span>` elements on the slide. The `.notes` class is `display:none`
|
|
173
|
+
by default — it only appears in the S overlay. Slides should contain ONLY
|
|
174
|
+
audience-facing content (titles, bullet points, data, charts, images).
|
|
175
|
+
|
|
176
|
+
## Writing guide
|
|
177
|
+
|
|
178
|
+
See [references/authoring-guide.md](references/authoring-guide.md) for a
|
|
179
|
+
step-by-step walkthrough: file structure, naming, how to transform an outline
|
|
180
|
+
into a deck, how to choose layouts and themes per audience, how to do a
|
|
181
|
+
Chinese + English deck, and how to export.
|
|
182
|
+
|
|
183
|
+
## Catalogs (load when needed)
|
|
184
|
+
|
|
185
|
+
- [references/themes.md](references/themes.md) — all 36 themes with when-to-use.
|
|
186
|
+
- [references/layouts.md](references/layouts.md) — all 31 layout types.
|
|
187
|
+
- [references/animations.md](references/animations.md) — 27 CSS + 20 canvas FX animations.
|
|
188
|
+
- [references/full-decks.md](references/full-decks.md) — all 15 full-deck templates.
|
|
189
|
+
- [references/presenter-mode.md](references/presenter-mode.md) — **演讲者模式 + 逐字稿编写指南(技术分享/演讲必看)**.
|
|
190
|
+
- [references/authoring-guide.md](references/authoring-guide.md) — full workflow.
|
|
191
|
+
|
|
192
|
+
## File structure
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
html-ppt/
|
|
196
|
+
├── SKILL.md (this file)
|
|
197
|
+
├── references/ (detailed catalogs, load as needed)
|
|
198
|
+
├── assets/
|
|
199
|
+
│ ├── base.css (tokens + primitives — do not edit per deck)
|
|
200
|
+
│ ├── fonts.css (webfont imports)
|
|
201
|
+
│ ├── runtime.js (keyboard + presenter + overview + theme cycle)
|
|
202
|
+
│ ├── themes/*.css (36 token overrides, one per theme)
|
|
203
|
+
│ └── animations/
|
|
204
|
+
│ ├── animations.css (27 named CSS entry animations)
|
|
205
|
+
│ ├── fx-runtime.js (auto-init [data-fx] on slide enter)
|
|
206
|
+
│ └── fx/*.js (20 canvas FX modules: particles/graph/fireworks…)
|
|
207
|
+
├── templates/
|
|
208
|
+
│ ├── deck.html (minimal 6-slide starter)
|
|
209
|
+
│ ├── theme-showcase.html (36 slides, iframe-isolated per theme)
|
|
210
|
+
│ ├── layout-showcase.html (iframe tour of all 31 layouts)
|
|
211
|
+
│ ├── animation-showcase.html (20 FX + 27 CSS animation slides)
|
|
212
|
+
│ ├── full-decks-index.html (gallery of all 14 full-deck templates)
|
|
213
|
+
│ ├── full-decks/<name>/ (14 scoped multi-slide deck templates)
|
|
214
|
+
│ └── single-page/*.html (31 layout files with demo data)
|
|
215
|
+
├── scripts/
|
|
216
|
+
│ ├── new-deck.sh (scaffold a deck from deck.html)
|
|
217
|
+
│ └── render.sh (headless Chrome → PNG)
|
|
218
|
+
└── examples/demo-deck/ (complete working deck)
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
## Rendering to PNG
|
|
222
|
+
|
|
223
|
+
`scripts/render.sh` wraps headless Chrome at
|
|
224
|
+
`/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`. For multi-slide
|
|
225
|
+
capture, runtime.js exposes `#/N` deep-links, and render.sh iterates 1..N.
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
./scripts/render.sh templates/single-page/kpi-grid.html # single page
|
|
229
|
+
./scripts/render.sh examples/demo-deck/index.html 8 out-dir # 8 slides, custom dir
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Keyboard cheat sheet
|
|
233
|
+
|
|
234
|
+
```
|
|
235
|
+
← → Space PgUp PgDn Home End navigate
|
|
236
|
+
F fullscreen
|
|
237
|
+
S open presenter window (magnetic cards: current/next/script/timer)
|
|
238
|
+
N quick notes drawer (bottom overlay)
|
|
239
|
+
R reset timer (in presenter window)
|
|
240
|
+
?preview=N URL param — force preview-only mode (single slide, no chrome)
|
|
241
|
+
O slide overview grid
|
|
242
|
+
T cycle themes (reads data-themes attr)
|
|
243
|
+
A cycle demo animation on current slide
|
|
244
|
+
#/N in URL deep-link to slide N
|
|
245
|
+
Esc close all overlays
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## License & author
|
|
249
|
+
|
|
250
|
+
MIT. Copyright (c) 2026 lewis <sudolewis@gmail.com>.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/* html-ppt :: animations.css
|
|
2
|
+
* Apply by adding class="anim-<name>" or data-anim="<name>".
|
|
3
|
+
* Durations are deliberately snappy; tweak --anim-dur per element.
|
|
4
|
+
*/
|
|
5
|
+
:root{--anim-dur:.7s;--anim-ease:cubic-bezier(.4,0,.2,1)}
|
|
6
|
+
|
|
7
|
+
/* ---------- FADE DIRECTIONALS ---------- */
|
|
8
|
+
@keyframes kf-fade-up{from{opacity:0;transform:translateY(32px)}to{opacity:1;transform:none}}
|
|
9
|
+
@keyframes kf-fade-down{from{opacity:0;transform:translateY(-32px)}to{opacity:1;transform:none}}
|
|
10
|
+
@keyframes kf-fade-left{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:none}}
|
|
11
|
+
@keyframes kf-fade-right{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
|
|
12
|
+
.anim-fade-up{animation:kf-fade-up var(--anim-dur) var(--anim-ease) both}
|
|
13
|
+
.anim-fade-down{animation:kf-fade-down var(--anim-dur) var(--anim-ease) both}
|
|
14
|
+
.anim-fade-left{animation:kf-fade-left var(--anim-dur) var(--anim-ease) both}
|
|
15
|
+
.anim-fade-right{animation:kf-fade-right var(--anim-dur) var(--anim-ease) both}
|
|
16
|
+
|
|
17
|
+
/* ---------- RISE / DROP / ZOOM / BLUR / GLITCH ---------- */
|
|
18
|
+
@keyframes kf-rise{from{opacity:0;transform:translateY(60px) scale(.97);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
|
|
19
|
+
@keyframes kf-drop{from{opacity:0;transform:translateY(-60px) scale(.97)}to{opacity:1;transform:none}}
|
|
20
|
+
@keyframes kf-zoom{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.04)}100%{opacity:1;transform:scale(1)}}
|
|
21
|
+
@keyframes kf-blur{from{opacity:0;filter:blur(18px)}to{opacity:1;filter:none}}
|
|
22
|
+
@keyframes kf-glitch{0%{opacity:0;transform:translateX(0);clip-path:inset(0 0 0 0)}
|
|
23
|
+
20%{opacity:1;transform:translateX(-6px);clip-path:inset(20% 0 30% 0)}
|
|
24
|
+
40%{transform:translateX(4px);clip-path:inset(50% 0 10% 0)}
|
|
25
|
+
60%{transform:translateX(-3px);clip-path:inset(10% 0 60% 0)}
|
|
26
|
+
80%{transform:translateX(2px);clip-path:inset(0 0 0 0)}
|
|
27
|
+
100%{opacity:1;transform:none}}
|
|
28
|
+
.anim-rise-in{animation:kf-rise .9s var(--anim-ease) both}
|
|
29
|
+
.anim-drop-in{animation:kf-drop .8s var(--anim-ease) both}
|
|
30
|
+
.anim-zoom-pop{animation:kf-zoom .7s cubic-bezier(.22,1.3,.36,1) both}
|
|
31
|
+
.anim-blur-in{animation:kf-blur .8s var(--anim-ease) both}
|
|
32
|
+
.anim-glitch-in{animation:kf-glitch .8s steps(5,end) both}
|
|
33
|
+
|
|
34
|
+
/* ---------- TYPEWRITER ---------- */
|
|
35
|
+
.anim-typewriter{display:inline-block;overflow:hidden;white-space:nowrap;border-right:2px solid currentColor;
|
|
36
|
+
width:0;animation:kf-type 2.4s steps(40,end) forwards, kf-caret 1s step-end infinite}
|
|
37
|
+
@keyframes kf-type{to{width:100%}}
|
|
38
|
+
@keyframes kf-caret{50%{border-color:transparent}}
|
|
39
|
+
|
|
40
|
+
/* ---------- GLOW / SHIMMER / GRADIENT-FLOW ---------- */
|
|
41
|
+
@keyframes kf-neon{0%,100%{text-shadow:0 0 8px var(--accent),0 0 20px var(--accent)}
|
|
42
|
+
50%{text-shadow:0 0 16px var(--accent),0 0 40px var(--accent),0 0 80px var(--accent)}}
|
|
43
|
+
.anim-neon-glow{animation:kf-neon 2s ease-in-out infinite}
|
|
44
|
+
|
|
45
|
+
.anim-shimmer-sweep{position:relative;overflow:hidden}
|
|
46
|
+
.anim-shimmer-sweep::after{content:"";position:absolute;inset:0;
|
|
47
|
+
background:linear-gradient(110deg,transparent 40%,rgba(255,255,255,.55) 50%,transparent 60%);
|
|
48
|
+
transform:translateX(-100%);animation:kf-shimmer 2.4s var(--anim-ease) infinite}
|
|
49
|
+
@keyframes kf-shimmer{to{transform:translateX(100%)}}
|
|
50
|
+
|
|
51
|
+
.anim-gradient-flow{background:linear-gradient(90deg,var(--accent),var(--accent-2,var(--accent)),var(--accent-3,var(--accent)),var(--accent));
|
|
52
|
+
background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;
|
|
53
|
+
animation:kf-gradflow 4s linear infinite}
|
|
54
|
+
@keyframes kf-gradflow{to{background-position:300% 0}}
|
|
55
|
+
|
|
56
|
+
/* ---------- STAGGER LIST ---------- */
|
|
57
|
+
.anim-stagger-list > *{opacity:0;animation:kf-rise .65s var(--anim-ease) both}
|
|
58
|
+
.anim-stagger-list > *:nth-child(1){animation-delay:.05s}
|
|
59
|
+
.anim-stagger-list > *:nth-child(2){animation-delay:.15s}
|
|
60
|
+
.anim-stagger-list > *:nth-child(3){animation-delay:.25s}
|
|
61
|
+
.anim-stagger-list > *:nth-child(4){animation-delay:.35s}
|
|
62
|
+
.anim-stagger-list > *:nth-child(5){animation-delay:.45s}
|
|
63
|
+
.anim-stagger-list > *:nth-child(6){animation-delay:.55s}
|
|
64
|
+
.anim-stagger-list > *:nth-child(7){animation-delay:.65s}
|
|
65
|
+
.anim-stagger-list > *:nth-child(8){animation-delay:.75s}
|
|
66
|
+
.anim-stagger-list > *:nth-child(n+9){animation-delay:.85s}
|
|
67
|
+
|
|
68
|
+
/* ---------- COUNTER-UP (JS-driven, marker class only) ---------- */
|
|
69
|
+
.counter{font-variant-numeric:tabular-nums}
|
|
70
|
+
|
|
71
|
+
/* ---------- SVG PATH DRAW ---------- */
|
|
72
|
+
.anim-path-draw path,.anim-path-draw line,.anim-path-draw polyline,.anim-path-draw circle,.anim-path-draw rect{
|
|
73
|
+
stroke-dasharray:1000;stroke-dashoffset:1000;animation:kf-draw 2s var(--anim-ease) forwards}
|
|
74
|
+
@keyframes kf-draw{to{stroke-dashoffset:0}}
|
|
75
|
+
|
|
76
|
+
/* ---------- PARALLAX TILT (hover) ---------- */
|
|
77
|
+
.anim-parallax-tilt{transform-style:preserve-3d;transition:transform .4s var(--anim-ease)}
|
|
78
|
+
.anim-parallax-tilt:hover{transform:perspective(900px) rotateX(6deg) rotateY(-8deg) translateZ(10px)}
|
|
79
|
+
|
|
80
|
+
/* ---------- CARD FLIP 3D ---------- */
|
|
81
|
+
@keyframes kf-flip{from{transform:perspective(1200px) rotateY(-90deg);opacity:0}
|
|
82
|
+
to{transform:perspective(1200px) rotateY(0);opacity:1}}
|
|
83
|
+
.anim-card-flip-3d{animation:kf-flip .9s var(--anim-ease) both;transform-style:preserve-3d;backface-visibility:hidden}
|
|
84
|
+
|
|
85
|
+
/* ---------- CUBE ROTATE 3D ---------- */
|
|
86
|
+
@keyframes kf-cube{from{transform:perspective(1200px) rotateX(20deg) rotateY(-90deg) translateZ(-200px);opacity:0}
|
|
87
|
+
to{transform:perspective(1200px) rotateX(0) rotateY(0) translateZ(0);opacity:1}}
|
|
88
|
+
.anim-cube-rotate-3d{animation:kf-cube 1s var(--anim-ease) both}
|
|
89
|
+
|
|
90
|
+
/* ---------- PAGE TURN 3D ---------- */
|
|
91
|
+
@keyframes kf-pageturn{from{transform:perspective(1600px) rotateY(-85deg);transform-origin:left center;opacity:0}
|
|
92
|
+
to{transform:perspective(1600px) rotateY(0);opacity:1}}
|
|
93
|
+
.anim-page-turn-3d{animation:kf-pageturn 1s var(--anim-ease) both;transform-origin:left center}
|
|
94
|
+
|
|
95
|
+
/* ---------- PERSPECTIVE ZOOM ---------- */
|
|
96
|
+
@keyframes kf-pzoom{from{opacity:0;transform:perspective(1400px) translateZ(-400px) rotateX(12deg)}
|
|
97
|
+
to{opacity:1;transform:none}}
|
|
98
|
+
.anim-perspective-zoom{animation:kf-pzoom 1s var(--anim-ease) both}
|
|
99
|
+
|
|
100
|
+
/* ---------- MARQUEE SCROLL ---------- */
|
|
101
|
+
.anim-marquee-scroll{display:flex;gap:48px;white-space:nowrap;animation:kf-marquee 20s linear infinite}
|
|
102
|
+
@keyframes kf-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
|
|
103
|
+
|
|
104
|
+
/* ---------- KEN BURNS ---------- */
|
|
105
|
+
@keyframes kf-kenburns{0%{transform:scale(1) translate(0,0)}100%{transform:scale(1.15) translate(-2%,-1%)}}
|
|
106
|
+
.anim-kenburns{animation:kf-kenburns 14s ease-in-out infinite alternate}
|
|
107
|
+
|
|
108
|
+
/* ---------- CONFETTI BURST (pseudo — pure CSS sparkles) ---------- */
|
|
109
|
+
.anim-confetti-burst{position:relative}
|
|
110
|
+
.anim-confetti-burst::before,.anim-confetti-burst::after{
|
|
111
|
+
content:"";position:absolute;top:50%;left:50%;width:8px;height:8px;border-radius:50%;
|
|
112
|
+
background:var(--accent);box-shadow:
|
|
113
|
+
20px -30px 0 var(--accent-2,var(--accent)),-25px -20px 0 var(--accent-3,var(--accent)),
|
|
114
|
+
30px 20px 0 var(--good,#1aaf6c),-30px 25px 0 var(--warn,#f5a524),
|
|
115
|
+
40px -10px 0 var(--bad,#e0445a),-45px 0 0 var(--accent),
|
|
116
|
+
10px 40px 0 var(--accent-2,var(--accent)),-15px -40px 0 var(--accent-3,var(--accent));
|
|
117
|
+
opacity:0;animation:kf-confetti 1.2s var(--anim-ease) forwards}
|
|
118
|
+
.anim-confetti-burst::after{animation-delay:.15s;transform:rotate(45deg)}
|
|
119
|
+
@keyframes kf-confetti{0%{opacity:0;transform:scale(.2)}30%{opacity:1}100%{opacity:0;transform:scale(2.2)}}
|
|
120
|
+
|
|
121
|
+
/* ---------- SPOTLIGHT ---------- */
|
|
122
|
+
@keyframes kf-spot{0%{clip-path:circle(0% at 50% 50%)}100%{clip-path:circle(140% at 50% 50%)}}
|
|
123
|
+
.anim-spotlight{animation:kf-spot 1.1s var(--anim-ease) both}
|
|
124
|
+
|
|
125
|
+
/* ---------- MORPH SHAPE (SVG) ---------- */
|
|
126
|
+
.anim-morph-shape path{animation:kf-morph 6s ease-in-out infinite alternate}
|
|
127
|
+
@keyframes kf-morph{0%{d:path("M60,120 Q120,20 180,120 T300,120")}
|
|
128
|
+
100%{d:path("M60,120 Q120,220 180,120 T300,120")}}
|
|
129
|
+
|
|
130
|
+
/* ---------- RIPPLE REVEAL ---------- */
|
|
131
|
+
@keyframes kf-ripple{0%{clip-path:circle(0% at 20% 80%);opacity:.4}
|
|
132
|
+
100%{clip-path:circle(160% at 20% 80%);opacity:1}}
|
|
133
|
+
.anim-ripple-reveal{animation:kf-ripple 1.2s var(--anim-ease) both}
|
|
134
|
+
|
|
135
|
+
/* reduced motion */
|
|
136
|
+
@media (prefers-reduced-motion: reduce){
|
|
137
|
+
[class*="anim-"]{animation:none!important;transition:none!important}
|
|
138
|
+
}
|