@hiai-gg/hiai-opencode 0.2.0 → 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 +40 -44
- package/ARCHITECTURE.md +4 -3
- package/LICENSE.md +14 -0
- package/README.md +61 -30
- package/assets/cli/hiai-opencode.mjs +4 -4
- 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 +4 -4
- 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/error-classifier.d.ts +1 -0
- 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/constants.d.ts +3 -0
- package/dist/features/boulder-state/storage.d.ts +95 -0
- package/dist/features/boulder-state/types.d.ts +17 -0
- package/dist/features/builtin-commands/templates/doctor.d.ts +1 -1
- 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/manager/resolve-active-boulder-session.d.ts +5 -0
- package/dist/hooks/manager/system-reminder-templates.d.ts +2 -2
- 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/context-info-builder.d.ts +2 -0
- package/dist/hooks/start-work/git-operations.d.ts +47 -0
- package/dist/hooks/start-work/worktree-block.d.ts +2 -1
- package/dist/hooks/start-work/worktree-detector.d.ts +45 -0
- package/dist/hooks/strategist-md-only/agent-resolution.d.ts +1 -1
- package/dist/hooks/strategist-md-only/constants.d.ts +6 -0
- package/dist/hooks/token-budget.d.ts +30 -0
- package/dist/index.js +1275 -1132
- 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/quickstart.md +1 -1
- package/docs/skill-discovery.md +288 -0
- package/package.json +2 -2
- 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,387 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>FlowAI Team Dashboard Template</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--bg: #d9d9de;
|
|
10
|
+
--app: #f8f8fa;
|
|
11
|
+
--panel: #fff;
|
|
12
|
+
--line: #e9e9ed;
|
|
13
|
+
--text: #1f2128;
|
|
14
|
+
--muted: #8b8f9a;
|
|
15
|
+
--hover: #f3f4f7;
|
|
16
|
+
--accent: #1f2937;
|
|
17
|
+
--chart-stroke: #1f2937;
|
|
18
|
+
--chart-fill: rgba(31, 41, 55, 0.16);
|
|
19
|
+
--chart-axis: #6b7280;
|
|
20
|
+
--chart-bar-label: #677084;
|
|
21
|
+
--chart-bar-value: #1f2937;
|
|
22
|
+
}
|
|
23
|
+
body.dark {
|
|
24
|
+
--bg: #0f1218;
|
|
25
|
+
--app: #171b23;
|
|
26
|
+
--panel: #1d2430;
|
|
27
|
+
--line: #2c3442;
|
|
28
|
+
--text: #ecf0f7;
|
|
29
|
+
--muted: #9aa3b6;
|
|
30
|
+
--hover: #242c3a;
|
|
31
|
+
--accent: #ecf0f7;
|
|
32
|
+
--chart-stroke: #ecf0f7;
|
|
33
|
+
--chart-fill: rgba(236, 240, 247, 0.18);
|
|
34
|
+
--chart-axis: #9aa3b6;
|
|
35
|
+
--chart-bar-label: #9aa3b6;
|
|
36
|
+
--chart-bar-value: #ecf0f7;
|
|
37
|
+
}
|
|
38
|
+
* { box-sizing: border-box; }
|
|
39
|
+
body {
|
|
40
|
+
margin: 0;
|
|
41
|
+
font-family: Inter, system-ui, sans-serif;
|
|
42
|
+
background: linear-gradient(180deg, var(--bg), var(--bg));
|
|
43
|
+
color: var(--text);
|
|
44
|
+
padding: 22px;
|
|
45
|
+
}
|
|
46
|
+
.shell { max-width: 1320px; margin: 0 auto; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--panel); }
|
|
47
|
+
.top { height: 48px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; padding: 0 12px; background: var(--app); }
|
|
48
|
+
.top button, .chip { border: 1px solid var(--line); background: var(--panel); color: var(--text); border-radius: 8px; height: 30px; padding: 0 10px; cursor: pointer; }
|
|
49
|
+
.top .actions { display: flex; gap: 6px; }
|
|
50
|
+
.wrap { padding: 12px; display: grid; gap: 10px; }
|
|
51
|
+
.tabs { display: flex; gap: 6px; flex-wrap: wrap; }
|
|
52
|
+
.tab { padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px; cursor: pointer; background: var(--panel); color: var(--muted); }
|
|
53
|
+
.tab.active { color: var(--text); background: var(--hover); }
|
|
54
|
+
.stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
|
|
55
|
+
.card, .panel { border: 1px solid var(--line); border-radius: 10px; background: var(--panel); }
|
|
56
|
+
.card { padding: 10px; cursor: zoom-in; }
|
|
57
|
+
.card .k { color: var(--muted); font-size: 11px; }
|
|
58
|
+
.card .v { font-size: 28px; font-weight: 650; margin-top: 4px; }
|
|
59
|
+
.grid { display: grid; grid-template-columns: 2fr 1fr; gap: 10px; }
|
|
60
|
+
.panel { padding: 10px; cursor: zoom-in; }
|
|
61
|
+
.panel-title { margin-bottom: 8px; font-size: 12px; color: var(--muted); }
|
|
62
|
+
.table-wrap { overflow-x: auto; }
|
|
63
|
+
.table { width: 100%; border-collapse: collapse; font-size: 12px; min-width: 480px; }
|
|
64
|
+
.table th, .table td { border-bottom: 1px solid var(--line); padding: 8px; text-align: left; }
|
|
65
|
+
.badge { border: 1px solid var(--line); border-radius: 99px; padding: 2px 8px; font-size: 11px; }
|
|
66
|
+
.canvas { width: 100%; height: 180px; border: 1px solid var(--line); border-radius: 8px; background: var(--app); display: block; }
|
|
67
|
+
.avatars { display: grid; gap: 7px; }
|
|
68
|
+
.who { display: flex; align-items: center; justify-content: space-between; border: 1px solid var(--line); border-radius: 8px; padding: 8px; }
|
|
69
|
+
.name { display: flex; align-items: center; gap: 8px; }
|
|
70
|
+
.av { width: 22px; height: 22px; border-radius: 50%; background: #ced4e6; color: #202431; display: grid; place-items: center; font-size: 11px; font-weight: 700; }
|
|
71
|
+
.view { display: none; }
|
|
72
|
+
.view.active { display: block; }
|
|
73
|
+
.zoomed { position: fixed !important; inset: 8vh 8vw !important; z-index: 99; overflow: auto; cursor: zoom-out; box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25); }
|
|
74
|
+
.backdrop { position: fixed; inset: 0; background: rgba(10, 12, 18, 0.55); z-index: 98; }
|
|
75
|
+
.tooltip { position: fixed; z-index: 120; pointer-events: none; border: 1px solid var(--line); background: var(--panel); color: var(--text); border-radius: 8px; font-size: 11px; padding: 6px 8px; opacity: 0; transition: opacity 0.12s ease; }
|
|
76
|
+
.tooltip.show { opacity: 1; }
|
|
77
|
+
|
|
78
|
+
@media (max-width: 1300px) {
|
|
79
|
+
.grid { grid-template-columns: 1fr; }
|
|
80
|
+
.stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
|
|
81
|
+
}
|
|
82
|
+
@media (max-width: 720px) {
|
|
83
|
+
body { padding: 12px; }
|
|
84
|
+
.stats { grid-template-columns: 1fr; }
|
|
85
|
+
.tabs { gap: 4px; }
|
|
86
|
+
.tab { flex: 1 1 auto; text-align: center; }
|
|
87
|
+
.table { font-size: 11px; }
|
|
88
|
+
}
|
|
89
|
+
</style>
|
|
90
|
+
</head>
|
|
91
|
+
<body>
|
|
92
|
+
<div class="shell">
|
|
93
|
+
<div class="top">
|
|
94
|
+
<b>FlowAI · Team Dashboard</b>
|
|
95
|
+
<div class="actions">
|
|
96
|
+
<button id="themeBtn" type="button" aria-label="Toggle theme">Theme</button>
|
|
97
|
+
<button id="exportBtn" type="button">Export CSV</button>
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="wrap">
|
|
101
|
+
<div class="tabs" role="tablist">
|
|
102
|
+
<button class="tab active" data-view="members" role="tab" aria-selected="true">Team Members</button>
|
|
103
|
+
<button class="tab" data-view="details" role="tab" aria-selected="false">Team Details</button>
|
|
104
|
+
<button class="tab" data-view="activity" role="tab" aria-selected="false">Activity Log</button>
|
|
105
|
+
</div>
|
|
106
|
+
|
|
107
|
+
<div class="stats">
|
|
108
|
+
<div class="card zoomable"><div class="k">Total Members</div><div class="v">35</div></div>
|
|
109
|
+
<div class="card zoomable"><div class="k">Active Now</div><div class="v">15</div></div>
|
|
110
|
+
<div class="card zoomable"><div class="k">Runs Today</div><div class="v">4,210</div></div>
|
|
111
|
+
<div class="card zoomable"><div class="k">Success Rate</div><div class="v">98.6%</div></div>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<section id="members" class="view active">
|
|
115
|
+
<div class="grid">
|
|
116
|
+
<div class="panel zoomable">
|
|
117
|
+
<div class="table-wrap">
|
|
118
|
+
<table class="table" id="teamTable">
|
|
119
|
+
<thead>
|
|
120
|
+
<tr><th>Name</th><th>Role</th><th>Status</th><th>Workflow</th></tr>
|
|
121
|
+
</thead>
|
|
122
|
+
<tbody>
|
|
123
|
+
<tr><td>Alexander Montgomery</td><td>Editor</td><td><span class="badge">Active</span></td><td>33%</td></tr>
|
|
124
|
+
<tr><td>Nathaniel Richardson</td><td>Owner</td><td><span class="badge">Active</span></td><td>24%</td></tr>
|
|
125
|
+
<tr><td>Theodore Whitmore</td><td>Editor</td><td><span class="badge">Pending</span></td><td>--</td></tr>
|
|
126
|
+
</tbody>
|
|
127
|
+
</table>
|
|
128
|
+
</div>
|
|
129
|
+
</div>
|
|
130
|
+
<div class="panel zoomable">
|
|
131
|
+
<div class="panel-title">Online Presence</div>
|
|
132
|
+
<canvas id="presenceChart" class="canvas" width="360" height="180"></canvas>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
135
|
+
</section>
|
|
136
|
+
|
|
137
|
+
<section id="details" class="view">
|
|
138
|
+
<div class="grid">
|
|
139
|
+
<div class="panel zoomable">
|
|
140
|
+
<div class="panel-title">Role Distribution</div>
|
|
141
|
+
<canvas id="roleChart" class="canvas" width="680" height="180"></canvas>
|
|
142
|
+
</div>
|
|
143
|
+
<div class="panel zoomable">
|
|
144
|
+
<div class="panel-title">Top Contributors</div>
|
|
145
|
+
<div class="avatars">
|
|
146
|
+
<div class="who"><div class="name"><span class="av">WP</span>William Prescott</div><b>28</b></div>
|
|
147
|
+
<div class="who"><div class="name"><span class="av">EK</span>Edward Kensington</div><b>24</b></div>
|
|
148
|
+
<div class="who"><div class="name"><span class="av">OR</span>Oliver Remington</div><b>19</b></div>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
</section>
|
|
153
|
+
|
|
154
|
+
<section id="activity" class="view">
|
|
155
|
+
<div class="grid">
|
|
156
|
+
<div class="panel zoomable">
|
|
157
|
+
<div class="panel-title">Activity Trend</div>
|
|
158
|
+
<canvas id="riskChart" class="canvas" width="680" height="180"></canvas>
|
|
159
|
+
</div>
|
|
160
|
+
<div class="panel zoomable">
|
|
161
|
+
<div class="panel-title">Risk Radar</div>
|
|
162
|
+
<div class="avatars">
|
|
163
|
+
<div class="who">5 Failed Logins</div>
|
|
164
|
+
<div class="who">API key Age Exceeded Policy</div>
|
|
165
|
+
<div class="who">SSO Scope Changed</div>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
</section>
|
|
170
|
+
</div>
|
|
171
|
+
</div>
|
|
172
|
+
<div id="tt" class="tooltip" role="status" aria-live="polite"></div>
|
|
173
|
+
<script>
|
|
174
|
+
const charts = {
|
|
175
|
+
presence: { id: "presenceChart", labels: ["04-25","04-26","04-27","04-28","04-29","04-30","05-01","05-02"], values: [8,11,9,12,14,13,15,12] },
|
|
176
|
+
risk: { id: "riskChart", labels: ["04-26","04-27","04-28","04-29","04-30","05-01","05-02"], values: [7,10,6,8,11,9,5] },
|
|
177
|
+
role: { id: "roleChart", labels: ["Owner","Admin","Editor","Viewer","Devops"], values: [3,14,37,34,6], colors: ["#fac6cd","#d7e5ff","#89b5ff","#c8ccff","#f0dbff"] }
|
|
178
|
+
};
|
|
179
|
+
const pts = {};
|
|
180
|
+
const tt = document.getElementById("tt");
|
|
181
|
+
let detailsAnimated = false;
|
|
182
|
+
|
|
183
|
+
function chartColors() {
|
|
184
|
+
const cs = getComputedStyle(document.body);
|
|
185
|
+
return {
|
|
186
|
+
stroke: cs.getPropertyValue("--chart-stroke").trim() || "#1f2937",
|
|
187
|
+
fill: cs.getPropertyValue("--chart-fill").trim() || "rgba(31,41,55,.16)",
|
|
188
|
+
axis: cs.getPropertyValue("--chart-axis").trim() || "#6b7280",
|
|
189
|
+
barLabel: cs.getPropertyValue("--chart-bar-label").trim() || "#677084",
|
|
190
|
+
barValue: cs.getPropertyValue("--chart-bar-value").trim() || "#1f2937"
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function spark(cfg) {
|
|
195
|
+
const c = document.getElementById(cfg.id);
|
|
196
|
+
if (!c) return;
|
|
197
|
+
const ctx = c.getContext("2d"), w = c.width, h = c.height;
|
|
198
|
+
const cc = chartColors();
|
|
199
|
+
const min = Math.min(...cfg.values), max = Math.max(...cfg.values), pad = 18;
|
|
200
|
+
ctx.clearRect(0, 0, w, h);
|
|
201
|
+
ctx.beginPath();
|
|
202
|
+
pts[cfg.id] = [];
|
|
203
|
+
cfg.values.forEach((v, i) => {
|
|
204
|
+
const x = pad + (i / (cfg.values.length - 1)) * (w - pad * 2);
|
|
205
|
+
const y = h - pad - ((v - min) / Math.max(max - min, 1)) * (h - pad * 2);
|
|
206
|
+
pts[cfg.id].push({ x, y, label: cfg.labels[i], value: v });
|
|
207
|
+
if (!i) ctx.moveTo(x, y); else ctx.lineTo(x, y);
|
|
208
|
+
});
|
|
209
|
+
ctx.strokeStyle = cc.stroke;
|
|
210
|
+
ctx.lineWidth = 2;
|
|
211
|
+
ctx.stroke();
|
|
212
|
+
ctx.lineTo(w - pad, h - pad);
|
|
213
|
+
ctx.lineTo(pad, h - pad);
|
|
214
|
+
ctx.closePath();
|
|
215
|
+
ctx.fillStyle = cc.fill;
|
|
216
|
+
ctx.fill();
|
|
217
|
+
pts[cfg.id].forEach((p) => {
|
|
218
|
+
ctx.beginPath();
|
|
219
|
+
ctx.arc(p.x, p.y, 2.5, 0, Math.PI * 2);
|
|
220
|
+
ctx.fillStyle = cc.stroke;
|
|
221
|
+
ctx.fill();
|
|
222
|
+
ctx.fillStyle = cc.axis;
|
|
223
|
+
ctx.font = "10px Inter";
|
|
224
|
+
ctx.fillText(String(p.value), p.x - 8, p.y - 8);
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function easeOutCubic(t) { return 1 - Math.pow(1 - t, 3); }
|
|
229
|
+
|
|
230
|
+
function drawBars(progress) {
|
|
231
|
+
const c = document.getElementById(charts.role.id);
|
|
232
|
+
if (!c) return;
|
|
233
|
+
const ctx = c.getContext("2d"), w = c.width, h = c.height;
|
|
234
|
+
const cc = chartColors();
|
|
235
|
+
const vals = charts.role.values, labels = charts.role.labels, colors = charts.role.colors, max = Math.max(...vals);
|
|
236
|
+
const x0 = 28, y0 = 142, bw = 88, gap = 20;
|
|
237
|
+
ctx.clearRect(0, 0, w, h);
|
|
238
|
+
pts[c.id] = [];
|
|
239
|
+
vals.forEach((v, i) => {
|
|
240
|
+
const hh = (v / max) * 100 * progress;
|
|
241
|
+
const x = x0 + i * (bw + gap);
|
|
242
|
+
const cv = Math.round(v * progress);
|
|
243
|
+
ctx.fillStyle = colors[i];
|
|
244
|
+
ctx.beginPath();
|
|
245
|
+
if (typeof ctx.roundRect === "function") ctx.roundRect(x, y0 - hh, bw, hh, 8);
|
|
246
|
+
else ctx.rect(x, y0 - hh, bw, hh);
|
|
247
|
+
ctx.fill();
|
|
248
|
+
ctx.fillStyle = cc.barLabel;
|
|
249
|
+
ctx.font = "11px Inter";
|
|
250
|
+
ctx.fillText(labels[i], x + 8, 165);
|
|
251
|
+
ctx.fillStyle = cc.barValue;
|
|
252
|
+
ctx.fillText(cv + "%", x + 27, y0 - hh - 8);
|
|
253
|
+
pts[c.id].push({ x: x + bw / 2, y: y0 - hh, label: labels[i], value: v + "%" });
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
function animateBars() {
|
|
258
|
+
const dur = 800, start = performance.now();
|
|
259
|
+
function frame(ts) {
|
|
260
|
+
const p = easeOutCubic(Math.min((ts - start) / dur, 1));
|
|
261
|
+
drawBars(p);
|
|
262
|
+
if (p < 1) requestAnimationFrame(frame);
|
|
263
|
+
}
|
|
264
|
+
requestAnimationFrame(frame);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
function redrawAll() {
|
|
268
|
+
spark(charts.presence);
|
|
269
|
+
spark(charts.risk);
|
|
270
|
+
if (detailsAnimated) drawBars(1);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
function showTip(txt, x, y) {
|
|
274
|
+
tt.textContent = txt;
|
|
275
|
+
const pad = 12;
|
|
276
|
+
const tw = tt.offsetWidth || 120, th = tt.offsetHeight || 24;
|
|
277
|
+
let left = x + 10, top = y + 10;
|
|
278
|
+
if (left + tw + pad > window.innerWidth) left = x - tw - 10;
|
|
279
|
+
if (top + th + pad > window.innerHeight) top = y - th - 10;
|
|
280
|
+
tt.style.left = left + "px";
|
|
281
|
+
tt.style.top = top + "px";
|
|
282
|
+
tt.classList.add("show");
|
|
283
|
+
}
|
|
284
|
+
function hideTip() { tt.classList.remove("show"); }
|
|
285
|
+
|
|
286
|
+
function bindTooltip(id) {
|
|
287
|
+
const c = document.getElementById(id);
|
|
288
|
+
if (!c) return;
|
|
289
|
+
c.addEventListener("mousemove", (e) => {
|
|
290
|
+
const p = pts[id] || [];
|
|
291
|
+
if (!p.length) return;
|
|
292
|
+
const r = c.getBoundingClientRect();
|
|
293
|
+
const x = (e.clientX - r.left) * (c.width / r.width);
|
|
294
|
+
const y = (e.clientY - r.top) * (c.height / r.height);
|
|
295
|
+
let hit = null, d = 999;
|
|
296
|
+
p.forEach((pt) => {
|
|
297
|
+
const dd = Math.hypot(pt.x - x, pt.y - y);
|
|
298
|
+
if (dd < d) { d = dd; hit = pt; }
|
|
299
|
+
});
|
|
300
|
+
if (hit && d < 20) showTip(`${hit.label} · ${hit.value}`, e.clientX, e.clientY);
|
|
301
|
+
else hideTip();
|
|
302
|
+
});
|
|
303
|
+
c.addEventListener("mouseleave", hideTip);
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
function setView(v) {
|
|
307
|
+
document.querySelectorAll(".view").forEach((el) => el.classList.remove("active"));
|
|
308
|
+
const target = document.getElementById(v);
|
|
309
|
+
if (target) target.classList.add("active");
|
|
310
|
+
document.querySelectorAll(".tab").forEach((t) => {
|
|
311
|
+
const on = t.dataset.view === v;
|
|
312
|
+
t.classList.toggle("active", on);
|
|
313
|
+
t.setAttribute("aria-selected", on ? "true" : "false");
|
|
314
|
+
});
|
|
315
|
+
if (window.location.hash !== "#" + v) {
|
|
316
|
+
history.replaceState(null, "", "#" + v);
|
|
317
|
+
}
|
|
318
|
+
if (v === "details") {
|
|
319
|
+
if (!detailsAnimated) { animateBars(); detailsAnimated = true; }
|
|
320
|
+
else drawBars(1);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
function bindZoom() {
|
|
325
|
+
let zoomed = null;
|
|
326
|
+
function unzoom() {
|
|
327
|
+
if (zoomed) zoomed.classList.remove("zoomed");
|
|
328
|
+
document.querySelector(".backdrop")?.remove();
|
|
329
|
+
zoomed = null;
|
|
330
|
+
}
|
|
331
|
+
document.querySelectorAll(".zoomable").forEach((el) => {
|
|
332
|
+
el.addEventListener("click", (e) => {
|
|
333
|
+
if (e.target.closest("button, input, select, a")) return;
|
|
334
|
+
if (zoomed === el) { unzoom(); return; }
|
|
335
|
+
unzoom();
|
|
336
|
+
const b = document.createElement("div");
|
|
337
|
+
b.className = "backdrop";
|
|
338
|
+
b.onclick = unzoom;
|
|
339
|
+
document.body.appendChild(b);
|
|
340
|
+
el.classList.add("zoomed");
|
|
341
|
+
zoomed = el;
|
|
342
|
+
});
|
|
343
|
+
});
|
|
344
|
+
document.addEventListener("keydown", (e) => { if (e.key === "Escape") unzoom(); });
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
function exportCsv() {
|
|
348
|
+
const table = document.getElementById("teamTable");
|
|
349
|
+
if (!table) return;
|
|
350
|
+
const rows = [];
|
|
351
|
+
const headerCells = table.querySelectorAll("thead th");
|
|
352
|
+
rows.push([...headerCells].map((th) => th.textContent.trim()));
|
|
353
|
+
table.querySelectorAll("tbody tr").forEach((tr) => {
|
|
354
|
+
rows.push([...tr.querySelectorAll("td")].map((td) => td.innerText.trim().replace(/\s+/g, " ")));
|
|
355
|
+
});
|
|
356
|
+
const csv = rows
|
|
357
|
+
.map((r) => r.map((c) => `"${String(c).replace(/"/g, '""')}"`).join(","))
|
|
358
|
+
.join("\n");
|
|
359
|
+
const blob = new Blob([csv], { type: "text/csv;charset=utf-8" });
|
|
360
|
+
const a = document.createElement("a");
|
|
361
|
+
a.href = URL.createObjectURL(blob);
|
|
362
|
+
a.download = "flowai-team.csv";
|
|
363
|
+
document.body.appendChild(a);
|
|
364
|
+
a.click();
|
|
365
|
+
a.remove();
|
|
366
|
+
URL.revokeObjectURL(a.href);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
document.querySelectorAll(".tab").forEach((t) => t.addEventListener("click", () => setView(t.dataset.view)));
|
|
370
|
+
document.getElementById("themeBtn").onclick = () => {
|
|
371
|
+
document.body.classList.toggle("dark");
|
|
372
|
+
redrawAll();
|
|
373
|
+
};
|
|
374
|
+
document.getElementById("exportBtn").onclick = exportCsv;
|
|
375
|
+
|
|
376
|
+
spark(charts.presence);
|
|
377
|
+
spark(charts.risk);
|
|
378
|
+
bindTooltip("presenceChart");
|
|
379
|
+
bindTooltip("riskChart");
|
|
380
|
+
bindTooltip("roleChart");
|
|
381
|
+
bindZoom();
|
|
382
|
+
|
|
383
|
+
const initial = (window.location.hash || "#members").slice(1);
|
|
384
|
+
setView(["members", "details", "activity"].includes(initial) ? initial : "members");
|
|
385
|
+
</script>
|
|
386
|
+
</body>
|
|
387
|
+
</html>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>FlowAI Team Dashboard Example</title>
|
|
7
|
+
<style>html,body{margin:0;height:100%}iframe{width:100%;height:100%;border:0}</style>
|
|
8
|
+
</head>
|
|
9
|
+
<body>
|
|
10
|
+
<!-- default showcase sample for template submission -->
|
|
11
|
+
<iframe src="./assets/template.html" title="FlowAI Team Dashboard Example"></iframe>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Checklist
|
|
2
|
+
|
|
3
|
+
## P0
|
|
4
|
+
|
|
5
|
+
- `assets/template.html` exists and opens directly from disk in a browser.
|
|
6
|
+
- `example.html` is a complete, hand-built sample with real labels, names, and values.
|
|
7
|
+
- Skill frontmatter is `od.mode: prototype`, `od.scenario: operations`,
|
|
8
|
+
`od.preview.type: html`, `od.design_system.requires: true`.
|
|
9
|
+
- All three tabs (`Team Members`, `Team Details`, `Activity Log`) switch
|
|
10
|
+
correctly; only one view is visible at a time.
|
|
11
|
+
- Role bar chart animates with easing on first reveal of the details tab.
|
|
12
|
+
- Chart hover tooltips show precise label and value.
|
|
13
|
+
- Panels/cards zoom in/out via click; clicking the backdrop or pressing
|
|
14
|
+
Esc restores the layout.
|
|
15
|
+
- Dark mode toggle works and chart strokes/labels remain legible (chart
|
|
16
|
+
colors are re-derived from CSS variables on toggle, not baked in).
|
|
17
|
+
- No external avatar / photo CDN dependencies; avatars are inline SVG or
|
|
18
|
+
initial badges.
|
|
19
|
+
|
|
20
|
+
## P1
|
|
21
|
+
|
|
22
|
+
- "Export CSV" exports every row currently rendered in the team table,
|
|
23
|
+
including the `Workflow` column (driven by the table DOM, not a hardcoded
|
|
24
|
+
fixture).
|
|
25
|
+
- Layout collapses gracefully on narrow viewports: under 1300px the main
|
|
26
|
+
grid stacks to a single column and stat cards fall back to two columns;
|
|
27
|
+
under 720px stat cards stack to one column and tabs wrap.
|
|
28
|
+
- Colors and spacing inherit from root tokens / CSS variables; no
|
|
29
|
+
hardcoded hex values inside chart drawing code.
|
|
30
|
+
|
|
31
|
+
## P2
|
|
32
|
+
|
|
33
|
+
- Tooltip avoids viewport edge clipping.
|
|
34
|
+
- Chart values animate smoothly on re-render after a theme switch.
|
|
35
|
+
- Tab state is reflected in the URL hash and survives a refresh.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gamified-app
|
|
3
|
+
description: |
|
|
4
|
+
A multi-frame gamified mobile-app prototype — three phone frames on a dark
|
|
5
|
+
showcase stage. Frame 1: cover / poster, Frame 2: today's quests with XP
|
|
6
|
+
ribbons and a level bar, Frame 3: quest detail. Vivid quest tiles, level
|
|
7
|
+
ribbon, bottom tab bar. Use when the brief asks for a "gamified app",
|
|
8
|
+
"habit tracker", "RPG-style life app", "level-up app", "daily quests",
|
|
9
|
+
"XP / streak app", or "ELI5-style explainer app".
|
|
10
|
+
triggers:
|
|
11
|
+
- "gamified app"
|
|
12
|
+
- "habit tracker"
|
|
13
|
+
- "rpg app"
|
|
14
|
+
- "level up app"
|
|
15
|
+
- "daily quests"
|
|
16
|
+
- "xp app"
|
|
17
|
+
- "streak app"
|
|
18
|
+
- "life management app"
|
|
19
|
+
- "游戏化"
|
|
20
|
+
- "习惯打卡"
|
|
21
|
+
od:
|
|
22
|
+
mode: prototype
|
|
23
|
+
platform: mobile
|
|
24
|
+
scenario: personal
|
|
25
|
+
preview:
|
|
26
|
+
type: html
|
|
27
|
+
entry: index.html
|
|
28
|
+
design_system:
|
|
29
|
+
requires: true
|
|
30
|
+
sections: [color, typography, layout, components]
|
|
31
|
+
craft:
|
|
32
|
+
requires: [state-coverage, animation-discipline]
|
|
33
|
+
example_prompt: "Design a gamified life-management app — multi-screen mobile prototype: cover poster, today's quests with XP, and a quest detail. ‘Daily quests for becoming a better human.’"
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
# Gamified App Skill
|
|
37
|
+
|
|
38
|
+
Produce a multi-screen mobile prototype on a single dark showcase page.
|
|
39
|
+
Three phone frames side-by-side, each one its own moment in the journey.
|
|
40
|
+
|
|
41
|
+
## Workflow
|
|
42
|
+
|
|
43
|
+
1. **Read the active DESIGN.md** (injected above). For gamified apps, lean
|
|
44
|
+
on bold display type for headlines and a brighter, broader palette than
|
|
45
|
+
most products — quests look like quests because the colors do.
|
|
46
|
+
2. **Pick the brand + value prop** from the brief. Generate real quest
|
|
47
|
+
names (e.g. "Body — 20-min strength: pushups & planks", "Read — Four
|
|
48
|
+
Thousand Weeks", "Listen — Huberman Lab · Sleep Architecture",
|
|
49
|
+
"Nourish — Cook a high-protein lunch", "Mind — 10-min focus
|
|
50
|
+
meditation", "Watch — The Bear · S3 E4").
|
|
51
|
+
3. **Stage** — full-bleed dark page (near-black `#0e0d0c` or DS dark token)
|
|
52
|
+
with a soft top spotlight gradient. Above the phones, a small caption
|
|
53
|
+
row: "HI-FI PROTOTYPE · IPHONE" left, brand wordmark right, both in mono.
|
|
54
|
+
4. **Phones** — three 360×780 phone frames in a horizontal row (wraps to
|
|
55
|
+
stack on narrow viewports). Each phone:
|
|
56
|
+
- 12px black bezel, 44px corner radius, dynamic-island notch.
|
|
57
|
+
- Status bar (time / signal / battery).
|
|
58
|
+
- Phone-specific content (below).
|
|
59
|
+
- Bottom tab bar with 5 icons (Today, Library, Stats, ⊕ central CTA,
|
|
60
|
+
Profile). Active tab in accent.
|
|
61
|
+
5. **Phone 1 — cover poster (sales/value prop)**:
|
|
62
|
+
- Status bar.
|
|
63
|
+
- HI-FI PROTOTYPE · IPHONE eyebrow.
|
|
64
|
+
- Big display headline ("Daily quests for becoming a better human."),
|
|
65
|
+
accent on "becoming".
|
|
66
|
+
- 1–2 sentence body in muted serif/sans.
|
|
67
|
+
- Mono tip line ("Tap quests to open detail. Toggle [theme] in the
|
|
68
|
+
toolbar to switch theme & layout.")
|
|
69
|
+
- Subtle scrolling teaser of the next screen at the bottom edge.
|
|
70
|
+
6. **Phone 2 — today's quests dashboard** (the hero screen):
|
|
71
|
+
- Greeting "Good morning, Sam" + small XP-bell ringing.
|
|
72
|
+
- Level ribbon — "LV 14 · Level 14 · 1648 / 2480 XP" with a progress
|
|
73
|
+
bar inside a glassmorphic ribbon.
|
|
74
|
+
- Sub-line: "8 quests waiting · earn 430 XP today".
|
|
75
|
+
- 3×2 grid of quest tiles. Each tile: rounded corner, pastel accent
|
|
76
|
+
color, glyph chip in top-left, title, mini-meta line, "+NN XP" pill
|
|
77
|
+
in bottom-right.
|
|
78
|
+
- Bottom tab bar.
|
|
79
|
+
7. **Phone 3 — quest detail**:
|
|
80
|
+
- Back arrow + screen title ("Quest").
|
|
81
|
+
- Hero block with the quest's accent color, big serif quest title
|
|
82
|
+
("Body — strength"), short narrative body, "REWARD +90 XP" stamp.
|
|
83
|
+
- Steps checklist (3–4 micro-tasks, one done, two pending).
|
|
84
|
+
- Big primary CTA "Start quest" pill at the bottom in accent.
|
|
85
|
+
8. **Write** a single HTML document:
|
|
86
|
+
- `<!doctype html>` through `</html>`, CSS inline.
|
|
87
|
+
- All in CSS — no images. Use `linear-gradient` and inline SVG glyphs
|
|
88
|
+
for tile chips and tab icons.
|
|
89
|
+
- `data-od-id` on stage, each phone, each frame's regions.
|
|
90
|
+
9. **Self-check**:
|
|
91
|
+
- Three frames, each with a distinct purpose. Not three copies of the
|
|
92
|
+
same screen.
|
|
93
|
+
- Tile colors don't overpower — each quest tile uses a different pastel
|
|
94
|
+
against the same neutral surface.
|
|
95
|
+
- Reads as gamified and adult — playful, not childish.
|
|
96
|
+
|
|
97
|
+
## Output contract
|
|
98
|
+
|
|
99
|
+
Emit between `<artifact>` tags:
|
|
100
|
+
|
|
101
|
+
```
|
|
102
|
+
<artifact identifier="game-slug" type="text/html" title="Mobile — App Name">
|
|
103
|
+
<!doctype html>
|
|
104
|
+
<html>...</html>
|
|
105
|
+
</artifact>
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
One sentence before the artifact, nothing after.
|