@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,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: html-ppt-testing-safety-alert
|
|
3
|
+
description: 红琥珀警示 deck — 顶/底 45° 红黑 hazard 条纹、红色删除线否定标题、L1/L2/L3 绿/琥珀/红 tier 卡片、圆点状态 alert box、policy-yaml 代码块(红左边框 + bad 关键词高亮)、红绿 checklist、Q1 事故堆叠柱状图。适合安全 / 风险 / 事故复盘 / 红队 / 上线前 AI 评审 / policy-as-code。
|
|
4
|
+
triggers:
|
|
5
|
+
- "safety alert"
|
|
6
|
+
- "incident"
|
|
7
|
+
- "red team"
|
|
8
|
+
- "risk review"
|
|
9
|
+
- "事故复盘"
|
|
10
|
+
- "安全评审"
|
|
11
|
+
- "policy as code"
|
|
12
|
+
od:
|
|
13
|
+
mode: deck
|
|
14
|
+
scenario: engineering
|
|
15
|
+
upstream: "https://github.com/lewislulu/html-ppt-skill"
|
|
16
|
+
preview:
|
|
17
|
+
type: html
|
|
18
|
+
entry: index.html
|
|
19
|
+
design_system:
|
|
20
|
+
requires: false
|
|
21
|
+
speaker_notes: true
|
|
22
|
+
animations: true
|
|
23
|
+
example_prompt: "用 html-ppt-testing-safety-alert 模板做一份事故复盘 / 安全评审 PPT。红黑 hazard 条 + 红色删除线 + L1/L2/L3 tier 卡片 + policy-yaml 代码块。先告诉我事件时间线、根因、影响范围。"
|
|
24
|
+
---
|
|
25
|
+
# HTML PPT · 红琥珀警示
|
|
26
|
+
|
|
27
|
+
A focused entry point into the [`html-ppt`](../html-ppt/SKILL.md) master skill that lands the user directly on the **`testing-safety-alert`** full-deck template.
|
|
28
|
+
|
|
29
|
+
## When this card is picked
|
|
30
|
+
|
|
31
|
+
The Examples gallery wires "Use this prompt" to the example_prompt above. When you accept that prompt, this card is the right pick if the user wants exactly the visual identity of `testing-safety-alert` (see the upstream [full-decks catalog](../html-ppt/references/full-decks.md) for screenshots and rationale).
|
|
32
|
+
|
|
33
|
+
## How to author the deck
|
|
34
|
+
|
|
35
|
+
1. **Read the master skill first.** All authoring rules live in
|
|
36
|
+
[`skills/html-ppt/SKILL.md`](../html-ppt/SKILL.md) — content/audience checklist,
|
|
37
|
+
token rules, layout reuse, presenter mode, the keyboard runtime, and the
|
|
38
|
+
"never put presenter-only text on the slide" rule.
|
|
39
|
+
2. **Start from the matching template folder:**
|
|
40
|
+
`skills/html-ppt/templates/full-decks/testing-safety-alert/` — copy `index.html` and
|
|
41
|
+
`style.css` into the project, keep the `.tpl-testing-safety-alert` body class.
|
|
42
|
+
3. **Bring the shared runtime with the template.** The upstream
|
|
43
|
+
`index.html` links the shared CSS/JS via `../../../assets/...` because it
|
|
44
|
+
sits three folders deep inside `skills/html-ppt/templates/full-decks/`.
|
|
45
|
+
Once you copy `index.html` into the project, those parent-relative URLs
|
|
46
|
+
no longer resolve and `base.css`, `animations.css`, and `runtime.js`
|
|
47
|
+
will 404 — meaning the deck never activates and slide navigation is
|
|
48
|
+
dead. Pick one of these two recipes per project:
|
|
49
|
+
- **Recipe A — copy + rewrite (preferred):** copy
|
|
50
|
+
`skills/html-ppt/assets/fonts.css`, `skills/html-ppt/assets/base.css`,
|
|
51
|
+
`skills/html-ppt/assets/animations/animations.css`, and
|
|
52
|
+
`skills/html-ppt/assets/runtime.js` into a project-local
|
|
53
|
+
`assets/` (with `assets/animations/animations.css`), then rewrite the
|
|
54
|
+
four `<link>`/`<script>` tags in `index.html` from
|
|
55
|
+
`../../../assets/...` to the matching project-local paths
|
|
56
|
+
(`assets/fonts.css`, `assets/base.css`,
|
|
57
|
+
`assets/animations/animations.css`, `assets/runtime.js`).
|
|
58
|
+
- **Recipe B — inline:** read the same four files and replace each
|
|
59
|
+
`<link rel="stylesheet" href="../../../assets/...">` with a
|
|
60
|
+
`<style>...</style>` containing the file's contents, and the
|
|
61
|
+
`<script src="../../../assets/runtime.js">` with a
|
|
62
|
+
`<script>...</script>` containing `runtime.js`. Yields a single
|
|
63
|
+
self-contained `index.html`.
|
|
64
|
+
Either way, do not ship the upstream `../../../assets/...` URLs
|
|
65
|
+
verbatim into a project artifact — they only work in-tree.
|
|
66
|
+
4. **Pick a theme.** Default tokens look fine; if the user wants a different
|
|
67
|
+
feel, swap in any of the 36 themes from `skills/html-ppt/assets/themes/*.css`
|
|
68
|
+
via `<link id="theme-link">` and let `T` cycle.
|
|
69
|
+
5. **Replace demo content, not classes.** The `.tpl-testing-safety-alert` scoped CSS only
|
|
70
|
+
recognises the structural classes shipped in the template — keep them.
|
|
71
|
+
6. **Speaker notes go inside `<aside class="notes">` or `<div class="notes">`** — never as visible text on the slide.
|
|
72
|
+
|
|
73
|
+
## Attribution
|
|
74
|
+
|
|
75
|
+
Visual system, layouts, themes and the runtime keyboard model come from
|
|
76
|
+
the upstream MIT-licensed [`lewislulu/html-ppt-skill`](https://github.com/lewislulu/html-ppt-skill). The
|
|
77
|
+
LICENSE file ships at `skills/html-ppt/LICENSE`; please keep it in place when
|
|
78
|
+
redistributing.
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="zh-CN">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Testing Safety Alert</title>
|
|
7
|
+
<style>/* html-ppt :: shared webfonts */
|
|
8
|
+
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@200;300;400;500;600;700;800;900&display=swap');
|
|
9
|
+
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@200;300;400;500;600;700;900&display=swap');
|
|
10
|
+
@import url('https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@300;400;600;700&display=swap');
|
|
11
|
+
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;700&display=swap');
|
|
12
|
+
@import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,600;0,800;1,400&display=swap');
|
|
13
|
+
@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&display=swap');
|
|
14
|
+
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@300;400;500;700&display=swap');
|
|
15
|
+
@import url('https://fonts.googleapis.com/css2?family=Archivo+Black&display=swap');
|
|
16
|
+
|
|
17
|
+
</style>
|
|
18
|
+
<style>/* html-ppt :: base.css — reset + shared tokens + layout primitives */
|
|
19
|
+
/* Default tokens. Themes in assets/themes/*.css override the :root block. */
|
|
20
|
+
:root {
|
|
21
|
+
--bg: #ffffff;
|
|
22
|
+
--bg-soft: #f7f7f8;
|
|
23
|
+
--surface: #ffffff;
|
|
24
|
+
--surface-2: #f2f2f4;
|
|
25
|
+
--border: rgba(0,0,0,.08);
|
|
26
|
+
--border-strong: rgba(0,0,0,.16);
|
|
27
|
+
--text-1: #111216;
|
|
28
|
+
--text-2: #55596a;
|
|
29
|
+
--text-3: #8a8f9e;
|
|
30
|
+
--accent: #3b6cff;
|
|
31
|
+
--accent-2: #7a5cff;
|
|
32
|
+
--accent-3: #ff5c8a;
|
|
33
|
+
--good: #1aaf6c;
|
|
34
|
+
--warn: #f5a524;
|
|
35
|
+
--bad: #e0445a;
|
|
36
|
+
--grad: linear-gradient(135deg,#3b6cff,#7a5cff 55%,#ff5c8a);
|
|
37
|
+
--grad-soft: linear-gradient(135deg,#eef2ff,#f5ecff 55%,#ffeef5);
|
|
38
|
+
--radius: 18px;
|
|
39
|
+
--radius-sm: 12px;
|
|
40
|
+
--radius-lg: 26px;
|
|
41
|
+
--shadow: 0 10px 30px rgba(18,24,40,.08), 0 2px 6px rgba(18,24,40,.04);
|
|
42
|
+
--shadow-lg: 0 24px 60px rgba(18,24,40,.14), 0 6px 16px rgba(18,24,40,.06);
|
|
43
|
+
--font-sans: 'Inter','Noto Sans SC',-apple-system,BlinkMacSystemFont,Helvetica,Arial,sans-serif;
|
|
44
|
+
--font-serif: 'Playfair Display','Noto Serif SC',Georgia,serif;
|
|
45
|
+
--font-mono: 'JetBrains Mono','IBM Plex Mono',SFMono-Regular,Menlo,monospace;
|
|
46
|
+
--font-display: var(--font-sans);
|
|
47
|
+
--letter-tight: -.03em;
|
|
48
|
+
--letter-normal: -.01em;
|
|
49
|
+
--ease: cubic-bezier(.4,0,.2,1);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
*,*::before,*::after{box-sizing:border-box}
|
|
53
|
+
html,body{margin:0;padding:0;background:var(--bg);color:var(--text-1);
|
|
54
|
+
font-family:var(--font-sans);font-weight:400;line-height:1.6;
|
|
55
|
+
-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
|
|
56
|
+
letter-spacing:var(--letter-normal)}
|
|
57
|
+
img,svg,video{max-width:100%;display:block}
|
|
58
|
+
a{color:var(--accent);text-decoration:none}
|
|
59
|
+
a:hover{text-decoration:underline}
|
|
60
|
+
code,kbd,pre,samp{font-family:var(--font-mono)}
|
|
61
|
+
|
|
62
|
+
/* ================= SLIDE SYSTEM ================= */
|
|
63
|
+
.deck{position:relative;width:100vw;height:100vh;overflow:hidden;background:var(--bg)}
|
|
64
|
+
.slide{
|
|
65
|
+
position:absolute;inset:0;
|
|
66
|
+
display:flex;flex-direction:column;justify-content:center;
|
|
67
|
+
padding:72px 96px;
|
|
68
|
+
box-sizing:border-box;
|
|
69
|
+
opacity:0;pointer-events:none;
|
|
70
|
+
transition:opacity .5s var(--ease), transform .5s var(--ease);
|
|
71
|
+
transform:translateX(30px);
|
|
72
|
+
overflow:hidden;
|
|
73
|
+
}
|
|
74
|
+
.slide.is-active{opacity:1;pointer-events:auto;transform:translateX(0);z-index:2}
|
|
75
|
+
.slide.is-prev{transform:translateX(-30px)}
|
|
76
|
+
|
|
77
|
+
/* single-page standalone (used when a layout file is opened directly) */
|
|
78
|
+
body.single .slide{position:relative;width:100vw;height:100vh;opacity:1;transform:none;pointer-events:auto}
|
|
79
|
+
|
|
80
|
+
/* ================= TYPOGRAPHY ================= */
|
|
81
|
+
.eyebrow{font-size:13px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--text-3)}
|
|
82
|
+
.kicker{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}
|
|
83
|
+
h1.title,.h1{font-family:var(--font-display);font-size:72px;line-height:1.05;font-weight:800;letter-spacing:var(--letter-tight);margin:0 0 18px;color:var(--text-1)}
|
|
84
|
+
h2.title,.h2{font-family:var(--font-display);font-size:54px;line-height:1.1;font-weight:700;letter-spacing:var(--letter-tight);margin:0 0 14px}
|
|
85
|
+
h3,.h3{font-size:32px;line-height:1.2;font-weight:600;letter-spacing:var(--letter-normal);margin:0 0 10px}
|
|
86
|
+
h4,.h4{font-size:22px;line-height:1.3;font-weight:600;margin:0 0 8px}
|
|
87
|
+
.lede{font-size:22px;line-height:1.55;color:var(--text-2);font-weight:300;max-width:62ch}
|
|
88
|
+
.dim{color:var(--text-2)}
|
|
89
|
+
.dim2{color:var(--text-3)}
|
|
90
|
+
.mono{font-family:var(--font-mono)}
|
|
91
|
+
.serif{font-family:var(--font-serif)}
|
|
92
|
+
.gradient-text{background:var(--grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}
|
|
93
|
+
|
|
94
|
+
/* ================= LAYOUT PRIMITIVES ================= */
|
|
95
|
+
.stack>*+*{margin-top:14px}
|
|
96
|
+
.row{display:flex;gap:24px;align-items:center}
|
|
97
|
+
.row.wrap{flex-wrap:wrap}
|
|
98
|
+
.grid{display:grid;gap:24px}
|
|
99
|
+
.g2{grid-template-columns:repeat(2,1fr)}
|
|
100
|
+
.g3{grid-template-columns:repeat(3,1fr)}
|
|
101
|
+
.g4{grid-template-columns:repeat(4,1fr)}
|
|
102
|
+
.center{display:flex;align-items:center;justify-content:center;text-align:center}
|
|
103
|
+
.fill{flex:1}
|
|
104
|
+
.sp-t{padding-top:24px}.sp-b{padding-bottom:24px}
|
|
105
|
+
.mt-s{margin-top:8px}.mt-m{margin-top:18px}.mt-l{margin-top:32px}
|
|
106
|
+
.mb-s{margin-bottom:8px}.mb-m{margin-bottom:18px}.mb-l{margin-bottom:32px}
|
|
107
|
+
|
|
108
|
+
/* ================= CARDS ================= */
|
|
109
|
+
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
|
|
110
|
+
padding:26px 28px;box-shadow:var(--shadow);position:relative;overflow:hidden}
|
|
111
|
+
.card-soft{background:var(--surface-2);border:1px solid var(--border)}
|
|
112
|
+
.card-outline{background:transparent;border:1.5px solid var(--border-strong);box-shadow:none}
|
|
113
|
+
.card-accent{background:var(--surface);border-top:3px solid var(--accent)}
|
|
114
|
+
.card-hover{transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
|
|
115
|
+
.card-hover:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg)}
|
|
116
|
+
|
|
117
|
+
.pill{display:inline-block;padding:4px 12px;border-radius:999px;font-size:12px;font-weight:500;
|
|
118
|
+
background:var(--surface-2);color:var(--text-2);border:1px solid var(--border)}
|
|
119
|
+
.pill-accent{background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 28%,transparent)}
|
|
120
|
+
|
|
121
|
+
/* ================= BARS / DIVIDERS ================= */
|
|
122
|
+
.divider{height:1px;background:var(--border);width:100%}
|
|
123
|
+
.divider-accent{height:3px;width:72px;background:var(--accent);border-radius:2px}
|
|
124
|
+
|
|
125
|
+
/* ================= CHROME (header/footer/progress) ================= */
|
|
126
|
+
.deck-header{position:absolute;top:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
|
|
127
|
+
font-size:12px;color:var(--text-3);letter-spacing:.12em;text-transform:uppercase;z-index:10;pointer-events:none}
|
|
128
|
+
.deck-footer{position:absolute;bottom:24px;left:40px;right:40px;display:flex;align-items:center;justify-content:space-between;
|
|
129
|
+
font-size:12px;color:var(--text-3);z-index:10;pointer-events:none}
|
|
130
|
+
.slide-number::before{content:attr(data-current)}
|
|
131
|
+
.slide-number::after{content:" / " attr(data-total)}
|
|
132
|
+
.progress-bar{position:fixed;left:0;right:0;bottom:0;height:3px;background:transparent;z-index:20}
|
|
133
|
+
.progress-bar > span{display:block;height:100%;width:0;background:var(--accent);transition:width .3s var(--ease)}
|
|
134
|
+
|
|
135
|
+
/* ================= PRESENTER / OVERVIEW ================= */
|
|
136
|
+
.notes{display:none!important}
|
|
137
|
+
.notes-overlay{position:fixed;inset:auto 0 0 0;max-height:42vh;background:rgba(20,22,30,.95);color:#e8ebf4;
|
|
138
|
+
padding:20px 32px;font-size:16px;line-height:1.6;border-top:1px solid rgba(255,255,255,.1);transform:translateY(100%);
|
|
139
|
+
transition:transform .3s var(--ease);z-index:40;overflow:auto;font-family:var(--font-sans)}
|
|
140
|
+
.notes-overlay.open{transform:translateY(0)}
|
|
141
|
+
.overview{position:fixed;inset:0;background:rgba(10,12,18,.92);backdrop-filter:blur(12px);z-index:50;
|
|
142
|
+
display:none;padding:40px;overflow:auto}
|
|
143
|
+
.overview.open{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;align-content:start}
|
|
144
|
+
.overview .thumb{background:var(--surface);border:1px solid var(--border);border-radius:12px;
|
|
145
|
+
aspect-ratio:16/9;overflow:hidden;cursor:pointer;position:relative;color:var(--text-1);padding:16px;
|
|
146
|
+
font-size:11px;transition:transform .2s var(--ease)}
|
|
147
|
+
.overview .thumb:hover{transform:scale(1.04)}
|
|
148
|
+
.overview .thumb .n{position:absolute;top:8px;left:10px;font-weight:700;font-size:14px;color:var(--text-3)}
|
|
149
|
+
.overview .thumb .t{position:absolute;bottom:10px;left:14px;right:14px;font-weight:600;color:var(--text-1)}
|
|
150
|
+
|
|
151
|
+
/* ================= PRESENTER VIEW ================= */
|
|
152
|
+
/* Presenter view opens in a separate popup window (S key).
|
|
153
|
+
* All presenter styles are self-contained in the popup HTML generated by runtime.js.
|
|
154
|
+
* The audience window (this file) is NOT affected — it stays as normal deck view.
|
|
155
|
+
* Only the .notes class below is needed to hide speaker notes from audience. */
|
|
156
|
+
|
|
157
|
+
/* ================= UTILITY ================= */
|
|
158
|
+
.hidden{display:none!important}
|
|
159
|
+
.nowrap{white-space:nowrap}
|
|
160
|
+
.tr{text-align:right}.tc{text-align:center}.tl{text-align:left}
|
|
161
|
+
.uppercase{text-transform:uppercase;letter-spacing:.12em}
|
|
162
|
+
|
|
163
|
+
/* ================= PRINT ================= */
|
|
164
|
+
@media print{
|
|
165
|
+
.slide{position:relative;opacity:1!important;transform:none!important;page-break-after:always;height:100vh}
|
|
166
|
+
.deck-header,.deck-footer,.progress-bar,.notes-overlay,.overview{display:none!important}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
</style>
|
|
170
|
+
<style>/* testing-safety-alert — 红/琥珀 警示风 · 白底高对比 */
|
|
171
|
+
.tpl-testing-safety-alert{
|
|
172
|
+
--ts-bg:#fffaf7;
|
|
173
|
+
--ts-ink:#14141a;
|
|
174
|
+
--ts-ink2:#4a4955;
|
|
175
|
+
--ts-muted:#8a8892;
|
|
176
|
+
--ts-line:rgba(20,20,26,.08);
|
|
177
|
+
--ts-red:#e0314a;
|
|
178
|
+
--ts-red-soft:#ffecee;
|
|
179
|
+
--ts-amber:#d97706;
|
|
180
|
+
--ts-amber-soft:#fff5e6;
|
|
181
|
+
--ts-green:#067647;
|
|
182
|
+
--ts-green-soft:#e8f8ee;
|
|
183
|
+
background:var(--ts-bg);
|
|
184
|
+
color:var(--ts-ink);
|
|
185
|
+
font-family:'Inter','Noto Sans SC','PingFang SC',-apple-system,sans-serif;
|
|
186
|
+
}
|
|
187
|
+
.tpl-testing-safety-alert .slide{background:var(--ts-bg);color:var(--ts-ink);padding:64px 84px}
|
|
188
|
+
.tpl-testing-safety-alert .ts-stripe{position:absolute;top:0;left:0;right:0;height:14px;background:repeating-linear-gradient(45deg,var(--ts-red) 0 18px,#111318 18px 36px)}
|
|
189
|
+
.tpl-testing-safety-alert .ts-stripe-b{position:absolute;bottom:0;left:0;right:0;height:6px;background:repeating-linear-gradient(45deg,var(--ts-red) 0 10px,#111318 10px 20px);opacity:.6}
|
|
190
|
+
.tpl-testing-safety-alert .ts-chrome{display:flex;justify-content:space-between;align-items:center;margin:22px 0 16px}
|
|
191
|
+
.tpl-testing-safety-alert .ts-alert-tag{display:inline-flex;align-items:center;gap:10px;padding:8px 18px;border-radius:10px;font-size:13px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;background:var(--ts-red);color:#fff;box-shadow:0 6px 18px rgba(224,49,74,.28)}
|
|
192
|
+
.tpl-testing-safety-alert .ts-alert-tag::before{content:'⚠';font-size:16px}
|
|
193
|
+
.tpl-testing-safety-alert .ts-alert-tag.amber{background:var(--ts-amber);box-shadow:0 6px 18px rgba(217,119,6,.25)}
|
|
194
|
+
.tpl-testing-safety-alert .ts-alert-tag.green{background:var(--ts-green);box-shadow:0 6px 18px rgba(6,118,71,.22)}
|
|
195
|
+
.tpl-testing-safety-alert .ts-alert-tag.green::before{content:'✓'}
|
|
196
|
+
.tpl-testing-safety-alert .ts-page{font-size:13px;color:var(--ts-muted);letter-spacing:.15em;font-weight:700}
|
|
197
|
+
.tpl-testing-safety-alert .ts-kicker{font-size:15px;font-weight:700;color:var(--ts-red);letter-spacing:.06em;margin-bottom:10px;text-transform:uppercase}
|
|
198
|
+
.tpl-testing-safety-alert .ts-h1{font-size:88px;font-weight:900;line-height:1.04;letter-spacing:-2px;margin:10px 0 16px;color:var(--ts-ink)}
|
|
199
|
+
.tpl-testing-safety-alert .ts-h1 .red{color:var(--ts-red)}
|
|
200
|
+
.tpl-testing-safety-alert .ts-h1 .strike{position:relative;display:inline-block}
|
|
201
|
+
.tpl-testing-safety-alert .ts-h1 .strike::after{content:'';position:absolute;left:-4%;right:-4%;top:50%;height:10px;background:var(--ts-red);transform:skewX(-12deg);opacity:.85}
|
|
202
|
+
.tpl-testing-safety-alert .ts-h2{font-size:54px;font-weight:900;line-height:1.1;letter-spacing:-1px;margin:0 0 14px}
|
|
203
|
+
.tpl-testing-safety-alert .ts-sub{font-size:22px;line-height:1.5;color:var(--ts-ink2);max-width:880px;margin-top:10px}
|
|
204
|
+
.tpl-testing-safety-alert .ts-highlight-red{display:inline-block;padding:4px 14px;background:var(--ts-red);color:#fff;border-radius:8px;font-weight:800}
|
|
205
|
+
.tpl-testing-safety-alert .ts-highlight-amber{display:inline-block;padding:4px 14px;background:var(--ts-amber-soft);color:var(--ts-amber);border-radius:8px;font-weight:800;border:1px solid rgba(217,119,6,.2)}
|
|
206
|
+
.tpl-testing-safety-alert .ts-highlight-green{display:inline-block;padding:4px 14px;background:var(--ts-green-soft);color:var(--ts-green);border-radius:8px;font-weight:800;border:1px solid rgba(6,118,71,.2)}
|
|
207
|
+
.tpl-testing-safety-alert .ts-alert-box{border:2px solid var(--ts-red);border-radius:18px;padding:26px 30px;background:linear-gradient(180deg,#fff 0%,var(--ts-red-soft) 100%);box-shadow:0 14px 36px rgba(224,49,74,.14);margin-top:24px;position:relative}
|
|
208
|
+
.tpl-testing-safety-alert .ts-alert-box::before{content:'';position:absolute;top:-11px;left:24px;width:22px;height:22px;background:var(--ts-red);border-radius:50%;box-shadow:0 0 0 6px rgba(224,49,74,.2)}
|
|
209
|
+
.tpl-testing-safety-alert .ts-alert-box.amber{border-color:var(--ts-amber);background:linear-gradient(180deg,#fff 0%,var(--ts-amber-soft) 100%);box-shadow:0 14px 36px rgba(217,119,6,.14)}
|
|
210
|
+
.tpl-testing-safety-alert .ts-alert-box.amber::before{background:var(--ts-amber);box-shadow:0 0 0 6px rgba(217,119,6,.2)}
|
|
211
|
+
.tpl-testing-safety-alert .ts-alert-box.green{border-color:var(--ts-green);background:linear-gradient(180deg,#fff 0%,var(--ts-green-soft) 100%);box-shadow:0 14px 36px rgba(6,118,71,.14)}
|
|
212
|
+
.tpl-testing-safety-alert .ts-alert-box.green::before{background:var(--ts-green);box-shadow:0 0 0 6px rgba(6,118,71,.2)}
|
|
213
|
+
.tpl-testing-safety-alert .ts-alert-box h3{font-size:34px;font-weight:900;margin:0 0 10px}
|
|
214
|
+
.tpl-testing-safety-alert .ts-alert-box p{font-size:17px;line-height:1.6;color:var(--ts-ink2);margin:0}
|
|
215
|
+
.tpl-testing-safety-alert .ts-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:20px}
|
|
216
|
+
.tpl-testing-safety-alert .ts-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px;margin-top:20px}
|
|
217
|
+
.tpl-testing-safety-alert .ts-card{border:1px solid var(--ts-line);border-radius:16px;padding:22px 24px;background:#fff;box-shadow:0 6px 20px rgba(17,19,24,.04)}
|
|
218
|
+
.tpl-testing-safety-alert .ts-card .lbl{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ts-muted);margin-bottom:8px}
|
|
219
|
+
.tpl-testing-safety-alert .ts-card h4{font-size:26px;font-weight:900;line-height:1.2;margin-bottom:8px}
|
|
220
|
+
.tpl-testing-safety-alert .ts-card p{font-size:14px;color:var(--ts-ink2);line-height:1.55}
|
|
221
|
+
.tpl-testing-safety-alert .ts-checklist{display:flex;flex-direction:column;gap:12px;margin-top:20px;max-width:880px}
|
|
222
|
+
.tpl-testing-safety-alert .ts-check{display:flex;gap:16px;align-items:flex-start;padding:16px 20px;border:1px solid var(--ts-line);border-radius:14px;background:#fff}
|
|
223
|
+
.tpl-testing-safety-alert .ts-check .box{flex:0 0 32px;height:32px;border-radius:8px;border:2px solid var(--ts-red);display:grid;place-items:center;font-weight:900;color:var(--ts-red);background:var(--ts-red-soft)}
|
|
224
|
+
.tpl-testing-safety-alert .ts-check.ok .box{border-color:var(--ts-green);color:var(--ts-green);background:var(--ts-green-soft)}
|
|
225
|
+
.tpl-testing-safety-alert .ts-check .txt{font-size:18px;line-height:1.5;font-weight:600}
|
|
226
|
+
.tpl-testing-safety-alert .ts-codebox{background:#141418;color:#fff5ea;border-radius:14px;padding:22px 26px;font-family:'JetBrains Mono',monospace;font-size:14px;line-height:1.85;margin-top:20px;border-left:6px solid var(--ts-red)}
|
|
227
|
+
.tpl-testing-safety-alert .ts-codebox .cm{color:#7a756d}
|
|
228
|
+
.tpl-testing-safety-alert .ts-codebox .kw{color:#ffb38a}
|
|
229
|
+
.tpl-testing-safety-alert .ts-codebox .st{color:#b3e6c2}
|
|
230
|
+
.tpl-testing-safety-alert .ts-codebox .bad{color:#ff9aa8;font-weight:700}
|
|
231
|
+
.tpl-testing-safety-alert .ts-footer{position:absolute;left:84px;right:84px;bottom:36px;display:flex;justify-content:space-between;font-size:12px;color:var(--ts-muted);letter-spacing:.1em}
|
|
232
|
+
|
|
233
|
+
</style>
|
|
234
|
+
<style>
|
|
235
|
+
/* Static-preview fallback (runtime.js is absent — keep every slide visible) */
|
|
236
|
+
.deck{height:auto;min-height:100vh;overflow:visible}
|
|
237
|
+
.slide{position:relative;inset:auto;opacity:1;pointer-events:auto;transform:none;height:100vh;page-break-after:always}
|
|
238
|
+
.deck-header,.deck-footer,.slide-number,.progress-bar,.notes-overlay,.overview{pointer-events:none}
|
|
239
|
+
.notes{display:none!important}
|
|
240
|
+
</style></head>
|
|
241
|
+
<body class="tpl-testing-safety-alert">
|
|
242
|
+
<div class="deck">
|
|
243
|
+
|
|
244
|
+
<!-- 1. COVER -->
|
|
245
|
+
<section class="slide is-active">
|
|
246
|
+
<div class="ts-stripe"></div>
|
|
247
|
+
<div class="ts-chrome"><span class="ts-alert-tag">ai safety · 高优先级</span><span class="ts-page">01 / 08</span></div>
|
|
248
|
+
<div class="ts-kicker">2026 年最重要的一条判断</div>
|
|
249
|
+
<h1 class="ts-h1">别再追问<br><span class="strike">AI 会不会干活</span><br>开始问:<span class="red">它出事谁负责</span></h1>
|
|
250
|
+
<p class="ts-sub">AI 出错的代价,不再是一次 bad response 这么简单 —— 它可能一次性写 300 份工单、提 80 个 PR、发 5000 封邮件。</p>
|
|
251
|
+
<div class="ts-alert-box">
|
|
252
|
+
<h3>风险已经规模化</h3>
|
|
253
|
+
<p>「做错」成本 × N;「做对」收益 × N。<br>这就是为什么 <b>测试、验收、安全、风控</b> 会变成未来 3 年最贵的能力。</p>
|
|
254
|
+
</div>
|
|
255
|
+
<div class="ts-stripe-b"></div>
|
|
256
|
+
<div class="ts-footer"><span>AI SAFETY BRIEF · LEWIS · 2026.04</span><span>01 / 08</span></div>
|
|
257
|
+
</section>
|
|
258
|
+
|
|
259
|
+
<!-- 2. SECTION -->
|
|
260
|
+
<section class="slide">
|
|
261
|
+
<div class="ts-stripe"></div>
|
|
262
|
+
<div class="ts-chrome"><span class="ts-alert-tag amber">section · risk 分级</span><span class="ts-page">02 / 08</span></div>
|
|
263
|
+
<div style="margin:auto 0">
|
|
264
|
+
<div class="ts-kicker">Chapter One</div>
|
|
265
|
+
<h1 class="ts-h1" style="font-size:130px">先分 <span class="red">等级</span></h1>
|
|
266
|
+
<p class="ts-sub" style="font-size:28px">不是所有 AI 行为都同等危险。<br>先把「可撤销」和「不可撤销」分开,再谈流程。</p>
|
|
267
|
+
</div>
|
|
268
|
+
<div class="ts-stripe-b"></div>
|
|
269
|
+
<div class="ts-footer"><span>section · level taxonomy</span><span>02 / 08</span></div>
|
|
270
|
+
</section>
|
|
271
|
+
|
|
272
|
+
<!-- 3. CONTENT risk levels -->
|
|
273
|
+
<section class="slide">
|
|
274
|
+
<div class="ts-stripe"></div>
|
|
275
|
+
<div class="ts-chrome"><span class="ts-alert-tag">风险分级 · 3 levels</span><span class="ts-page">03 / 08</span></div>
|
|
276
|
+
<h2 class="ts-h2">三档风险,三种处理</h2>
|
|
277
|
+
<div class="ts-grid-3">
|
|
278
|
+
<div class="ts-card" style="border-top:4px solid var(--ts-green)"><div class="lbl">L1 · 绿色</div><h4>可撤销</h4><p>写 draft、生成图片、起草文档。<br>错了 Ctrl+Z,零代价。<br><b style="color:var(--ts-green)">策略:放开跑</b></p></div>
|
|
279
|
+
<div class="ts-card" style="border-top:4px solid var(--ts-amber)"><div class="lbl">L2 · 琥珀</div><h4>半可撤销</h4><p>发 draft 邮件、提 PR、改 staging 数据。<br>错了要道歉 / 回滚。<br><b style="color:var(--ts-amber)">策略:人工复核</b></p></div>
|
|
280
|
+
<div class="ts-card" style="border-top:4px solid var(--ts-red)"><div class="lbl">L3 · 红色</div><h4>不可撤销</h4><p>发真实邮件、付款、删库、删 prod 数据。<br>错了就真错了。<br><b style="color:var(--ts-red)">策略:硬卡 + 双人审</b></p></div>
|
|
281
|
+
</div>
|
|
282
|
+
<div class="ts-alert-box amber">
|
|
283
|
+
<h3>绝不要让 agent 自己升级</h3>
|
|
284
|
+
<p>L1 的任务不能自己变成 L2。授权必须是显式的、可撤销的、带过期时间的。</p>
|
|
285
|
+
</div>
|
|
286
|
+
<div class="ts-stripe-b"></div>
|
|
287
|
+
<div class="ts-footer"><span>risk · 3 levels</span><span>03 / 08</span></div>
|
|
288
|
+
</section>
|
|
289
|
+
|
|
290
|
+
<!-- 4. CODE -->
|
|
291
|
+
<section class="slide">
|
|
292
|
+
<div class="ts-stripe"></div>
|
|
293
|
+
<div class="ts-chrome"><span class="ts-alert-tag">policy as code</span><span class="ts-page">04 / 08</span></div>
|
|
294
|
+
<div class="ts-kicker">别用文档管规则 · 用代码管规则</div>
|
|
295
|
+
<h2 class="ts-h2">三十行 YAML,<br><span class="ts-highlight-red">红线硬卡</span></h2>
|
|
296
|
+
<pre class="ts-codebox"><span class="cm"># safety-policy.yaml · compiled → runtime guard</span>
|
|
297
|
+
<span class="kw">level_1_allow</span>:
|
|
298
|
+
- tools: [<span class="st">write_draft</span>, <span class="st">generate_image</span>, <span class="st">read_docs</span>]
|
|
299
|
+
|
|
300
|
+
<span class="kw">level_2_require_review</span>:
|
|
301
|
+
- tools: [<span class="st">send_email_draft</span>, <span class="st">open_pr</span>, <span class="st">write_staging_db</span>]
|
|
302
|
+
reviewer: <span class="st">human</span>
|
|
303
|
+
|
|
304
|
+
<span class="kw">level_3_hard_block</span>:
|
|
305
|
+
- tools: [<span class="st">send_real_email</span>, <span class="st">transfer_money</span>, <span class="st">delete_prod</span>]
|
|
306
|
+
unless: <span class="st">two_human_sign_off AND within_24h</span>
|
|
307
|
+
|
|
308
|
+
<span class="bad">forbidden_always</span>:
|
|
309
|
+
- <span class="bad">"rm -rf /"</span>
|
|
310
|
+
- <span class="bad">"drop table"</span>
|
|
311
|
+
- <span class="bad">"force push origin main"</span></pre>
|
|
312
|
+
<div class="ts-stripe-b"></div>
|
|
313
|
+
<div class="ts-footer"><span>policy · yaml-as-guard</span><span>04 / 08</span></div>
|
|
314
|
+
</section>
|
|
315
|
+
|
|
316
|
+
<!-- 5. CHART -->
|
|
317
|
+
<section class="slide">
|
|
318
|
+
<div class="ts-stripe"></div>
|
|
319
|
+
<div class="ts-chrome"><span class="ts-alert-tag amber">incident report · q1</span><span class="ts-page">05 / 08</span></div>
|
|
320
|
+
<h2 class="ts-h2">我们 Q1 的 <span class="red">12 起 AI 事故</span></h2>
|
|
321
|
+
<p class="ts-sub">幸好全部捕获在 staging。但每一起都能上生产。</p>
|
|
322
|
+
<svg viewBox="0 0 1040 360" style="width:100%;max-width:1040px;margin-top:18px" xmlns="http://www.w3.org/2000/svg">
|
|
323
|
+
<g font-family="Inter,sans-serif" font-size="14" fill="#4a4955">
|
|
324
|
+
<line x1="70" y1="320" x2="1000" y2="320" stroke="#eaecf3" stroke-width="2"/>
|
|
325
|
+
<!-- month columns: Jan Feb Mar, L1/L2/L3 stacked -->
|
|
326
|
+
<g transform="translate(120,0)">
|
|
327
|
+
<rect x="0" y="220" width="60" height="100" fill="#067647"/>
|
|
328
|
+
<rect x="0" y="160" width="60" height="60" fill="#d97706"/>
|
|
329
|
+
<rect x="0" y="130" width="60" height="30" fill="#e0314a"/>
|
|
330
|
+
<text x="30" y="345" text-anchor="middle" font-weight="700">Jan</text>
|
|
331
|
+
<text x="30" y="120" text-anchor="middle" font-weight="800" fill="#14141a">5</text>
|
|
332
|
+
</g>
|
|
333
|
+
<g transform="translate(320,0)">
|
|
334
|
+
<rect x="0" y="240" width="60" height="80" fill="#067647"/>
|
|
335
|
+
<rect x="0" y="200" width="60" height="40" fill="#d97706"/>
|
|
336
|
+
<rect x="0" y="180" width="60" height="20" fill="#e0314a"/>
|
|
337
|
+
<text x="30" y="345" text-anchor="middle" font-weight="700">Feb</text>
|
|
338
|
+
<text x="30" y="170" text-anchor="middle" font-weight="800" fill="#14141a">3</text>
|
|
339
|
+
</g>
|
|
340
|
+
<g transform="translate(520,0)">
|
|
341
|
+
<rect x="0" y="250" width="60" height="70" fill="#067647"/>
|
|
342
|
+
<rect x="0" y="220" width="60" height="30" fill="#d97706"/>
|
|
343
|
+
<rect x="0" y="210" width="60" height="10" fill="#e0314a"/>
|
|
344
|
+
<text x="30" y="345" text-anchor="middle" font-weight="700">Mar</text>
|
|
345
|
+
<text x="30" y="200" text-anchor="middle" font-weight="800" fill="#14141a">4</text>
|
|
346
|
+
</g>
|
|
347
|
+
<!-- legend -->
|
|
348
|
+
<g transform="translate(720,60)">
|
|
349
|
+
<rect x="0" y="0" width="16" height="16" fill="#e0314a"/><text x="24" y="13" font-weight="700">L3 不可撤销 (3)</text>
|
|
350
|
+
<rect x="0" y="26" width="16" height="16" fill="#d97706"/><text x="24" y="39" font-weight="700">L2 需复核 (4)</text>
|
|
351
|
+
<rect x="0" y="52" width="16" height="16" fill="#067647"/><text x="24" y="65" font-weight="700">L1 可恢复 (5)</text>
|
|
352
|
+
<text x="0" y="100" font-size="13" fill="#8a8892">全部被 safety-policy 在 runtime 拦下,</text>
|
|
353
|
+
<text x="0" y="118" font-size="13" fill="#8a8892">未进 prod。但 3 起 L3 非常惊险。</text>
|
|
354
|
+
</g>
|
|
355
|
+
</g>
|
|
356
|
+
</svg>
|
|
357
|
+
<div class="ts-stripe-b"></div>
|
|
358
|
+
<div class="ts-footer"><span>incident · q1 summary</span><span>05 / 08</span></div>
|
|
359
|
+
</section>
|
|
360
|
+
|
|
361
|
+
<!-- 6. CHECKLIST -->
|
|
362
|
+
<section class="slide">
|
|
363
|
+
<div class="ts-stripe"></div>
|
|
364
|
+
<div class="ts-chrome"><span class="ts-alert-tag green">red-team checklist</span><span class="ts-page">06 / 08</span></div>
|
|
365
|
+
<h2 class="ts-h2">上线前 <span class="red">必过 7 道题</span></h2>
|
|
366
|
+
<div class="ts-checklist">
|
|
367
|
+
<div class="ts-check ok"><div class="box">✓</div><div class="txt">它能删除东西吗?有人类 review 吗?能 60 秒内回滚吗?</div></div>
|
|
368
|
+
<div class="ts-check ok"><div class="box">✓</div><div class="txt">它的 prompt 注入能让它越权吗?(跑过红队提示词)</div></div>
|
|
369
|
+
<div class="ts-check"><div class="box">!</div><div class="txt">它处理 PII 吗?日志里是不是也有 PII?</div></div>
|
|
370
|
+
<div class="ts-check ok"><div class="box">✓</div><div class="txt">上下游失败时,它会不会开始乱改其他资源?</div></div>
|
|
371
|
+
<div class="ts-check"><div class="box">!</div><div class="txt">并发 100 个 agent 一起跑会不会死锁?</div></div>
|
|
372
|
+
<div class="ts-check ok"><div class="box">✓</div><div class="txt">错了能不能 <b>立刻</b> 停?(kill switch 能 2 秒内生效吗)</div></div>
|
|
373
|
+
<div class="ts-check"><div class="box">!</div><div class="txt">出事时有没有人值班?值班手册有没有 agent 专属章节?</div></div>
|
|
374
|
+
</div>
|
|
375
|
+
<div class="ts-stripe-b"></div>
|
|
376
|
+
<div class="ts-footer"><span>checklist · pre-launch</span><span>06 / 08</span></div>
|
|
377
|
+
</section>
|
|
378
|
+
|
|
379
|
+
<!-- 7. CTA -->
|
|
380
|
+
<section class="slide">
|
|
381
|
+
<div class="ts-stripe"></div>
|
|
382
|
+
<div class="ts-chrome"><span class="ts-alert-tag green">今晚就能动</span><span class="ts-page">07 / 08</span></div>
|
|
383
|
+
<h2 class="ts-h2">今晚先做 <span class="ts-highlight-red">三件事</span></h2>
|
|
384
|
+
<div class="ts-grid-3">
|
|
385
|
+
<div class="ts-card"><div class="lbl">1 · 分级</div><h4>给你的 agent<br>写 L1/L2/L3</h4><p>把所有工具列出来,标上等级。不标的一律按 L3。</p></div>
|
|
386
|
+
<div class="ts-card"><div class="lbl">2 · 写 policy</div><h4>policy.yaml<br>接 runtime</h4><p>不要信 prompt 里的 "be careful",要信执行层的硬卡。</p></div>
|
|
387
|
+
<div class="ts-card"><div class="lbl">3 · kill switch</div><h4>红按钮<br>能在 2 秒内停</h4><p>CTO / on-call 都得知道怎么按。演练一次。</p></div>
|
|
388
|
+
</div>
|
|
389
|
+
<div class="ts-alert-box green">
|
|
390
|
+
<h3>真正的安全不是 prompt,是流程</h3>
|
|
391
|
+
<p>prompt 会被注入,流程不会。—— 把保护放在不可被说服的一层。</p>
|
|
392
|
+
</div>
|
|
393
|
+
<div class="ts-stripe-b"></div>
|
|
394
|
+
<div class="ts-footer"><span>cta · tonight</span><span>07 / 08</span></div>
|
|
395
|
+
</section>
|
|
396
|
+
|
|
397
|
+
<!-- 8. THANKS -->
|
|
398
|
+
<section class="slide">
|
|
399
|
+
<div class="ts-stripe"></div>
|
|
400
|
+
<div class="ts-chrome"><span class="ts-alert-tag amber">please stay safe</span><span class="ts-page">08 / 08</span></div>
|
|
401
|
+
<div style="margin:auto 0">
|
|
402
|
+
<div class="ts-kicker">end of brief</div>
|
|
403
|
+
<h1 class="ts-h1" style="font-size:140px">谢谢 <span class="red">·</span> thanks</h1>
|
|
404
|
+
<p class="ts-sub" style="font-size:24px">policy.yaml 模板、红队 prompt 清单、事故复盘模板 —— 评论区扣「安全」。</p>
|
|
405
|
+
</div>
|
|
406
|
+
<div class="ts-stripe-b"></div>
|
|
407
|
+
<div class="ts-footer"><span>end of brief</span><span>08 / 08</span></div>
|
|
408
|
+
</section>
|
|
409
|
+
|
|
410
|
+
</div>
|
|
411
|
+
|
|
412
|
+
</body>
|
|
413
|
+
</html>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: html-ppt-weekly-report
|
|
3
|
+
description: Team weekly / status-update deck — corporate clarity, 8-cell KPI grid, shipped list, 8-week bar chart, next-week table. Use for 周报, business reviews, team status updates, and exec dashboards.
|
|
4
|
+
triggers:
|
|
5
|
+
- "weekly report"
|
|
6
|
+
- "周报"
|
|
7
|
+
- "status update"
|
|
8
|
+
- "team report"
|
|
9
|
+
- "business review"
|
|
10
|
+
- "wbr"
|
|
11
|
+
od:
|
|
12
|
+
mode: deck
|
|
13
|
+
scenario: operations
|
|
14
|
+
upstream: "https://github.com/lewislulu/html-ppt-skill"
|
|
15
|
+
preview:
|
|
16
|
+
type: html
|
|
17
|
+
entry: index.html
|
|
18
|
+
design_system:
|
|
19
|
+
requires: false
|
|
20
|
+
speaker_notes: true
|
|
21
|
+
animations: true
|
|
22
|
+
example_prompt: "用 html-ppt-weekly-report 模板生成一份周报(7 页)。先问我四件事:本周时间范围、3-5 个核心 KPI 数字、本周已发布 / 已完成的事项、下周计划与风险。然后用模板填好 8 周柱状图和下周表格。"
|
|
23
|
+
---
|
|
24
|
+
# HTML PPT · Weekly Report
|
|
25
|
+
|
|
26
|
+
A focused entry point into the [`html-ppt`](../html-ppt/SKILL.md) master skill that lands the user directly on the **`weekly-report`** full-deck template.
|
|
27
|
+
|
|
28
|
+
## When this card is picked
|
|
29
|
+
|
|
30
|
+
The Examples gallery wires "Use this prompt" to the example_prompt above. When you accept that prompt, this card is the right pick if the user wants exactly the visual identity of `weekly-report` (see the upstream [full-decks catalog](../html-ppt/references/full-decks.md) for screenshots and rationale).
|
|
31
|
+
|
|
32
|
+
## How to author the deck
|
|
33
|
+
|
|
34
|
+
1. **Read the master skill first.** All authoring rules live in
|
|
35
|
+
[`skills/html-ppt/SKILL.md`](../html-ppt/SKILL.md) — content/audience checklist,
|
|
36
|
+
token rules, layout reuse, presenter mode, the keyboard runtime, and the
|
|
37
|
+
"never put presenter-only text on the slide" rule.
|
|
38
|
+
2. **Start from the matching template folder:**
|
|
39
|
+
`skills/html-ppt/templates/full-decks/weekly-report/` — copy `index.html` and
|
|
40
|
+
`style.css` into the project, keep the `.tpl-weekly-report` body class.
|
|
41
|
+
3. **Bring the shared runtime with the template.** The upstream
|
|
42
|
+
`index.html` links the shared CSS/JS via `../../../assets/...` because it
|
|
43
|
+
sits three folders deep inside `skills/html-ppt/templates/full-decks/`.
|
|
44
|
+
Once you copy `index.html` into the project, those parent-relative URLs
|
|
45
|
+
no longer resolve and `base.css`, `animations.css`, and `runtime.js`
|
|
46
|
+
will 404 — meaning the deck never activates and slide navigation is
|
|
47
|
+
dead. Pick one of these two recipes per project:
|
|
48
|
+
- **Recipe A — copy + rewrite (preferred):** copy
|
|
49
|
+
`skills/html-ppt/assets/fonts.css`, `skills/html-ppt/assets/base.css`,
|
|
50
|
+
`skills/html-ppt/assets/animations/animations.css`, and
|
|
51
|
+
`skills/html-ppt/assets/runtime.js` into a project-local
|
|
52
|
+
`assets/` (with `assets/animations/animations.css`), then rewrite the
|
|
53
|
+
four `<link>`/`<script>` tags in `index.html` from
|
|
54
|
+
`../../../assets/...` to the matching project-local paths
|
|
55
|
+
(`assets/fonts.css`, `assets/base.css`,
|
|
56
|
+
`assets/animations/animations.css`, `assets/runtime.js`).
|
|
57
|
+
- **Recipe B — inline:** read the same four files and replace each
|
|
58
|
+
`<link rel="stylesheet" href="../../../assets/...">` with a
|
|
59
|
+
`<style>...</style>` containing the file's contents, and the
|
|
60
|
+
`<script src="../../../assets/runtime.js">` with a
|
|
61
|
+
`<script>...</script>` containing `runtime.js`. Yields a single
|
|
62
|
+
self-contained `index.html`.
|
|
63
|
+
Either way, do not ship the upstream `../../../assets/...` URLs
|
|
64
|
+
verbatim into a project artifact — they only work in-tree.
|
|
65
|
+
4. **Pick a theme.** Default tokens look fine; if the user wants a different
|
|
66
|
+
feel, swap in any of the 36 themes from `skills/html-ppt/assets/themes/*.css`
|
|
67
|
+
via `<link id="theme-link">` and let `T` cycle.
|
|
68
|
+
5. **Replace demo content, not classes.** The `.tpl-weekly-report` scoped CSS only
|
|
69
|
+
recognises the structural classes shipped in the template — keep them.
|
|
70
|
+
6. **Speaker notes go inside `<aside class="notes">` or `<div class="notes">`** — never as visible text on the slide.
|
|
71
|
+
|
|
72
|
+
## Attribution
|
|
73
|
+
|
|
74
|
+
Visual system, layouts, themes and the runtime keyboard model come from
|
|
75
|
+
the upstream MIT-licensed [`lewislulu/html-ppt-skill`](https://github.com/lewislulu/html-ppt-skill). The
|
|
76
|
+
LICENSE file ships at `skills/html-ppt/LICENSE`; please keep it in place when
|
|
77
|
+
redistributing.
|