@aexol/spectral 0.9.270 → 0.9.271
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/dist/agent/index.d.ts +10 -1
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +26 -10
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +29 -5
- package/dist/commands/update.d.ts +2 -2
- package/dist/commands/update.js +3 -3
- package/dist/designer/index.d.ts +13 -18
- package/dist/designer/index.d.ts.map +1 -1
- package/dist/designer/index.js +128 -201
- package/dist/extensions/aexol-mcp.d.ts.map +1 -1
- package/dist/extensions/aexol-mcp.js +23 -0
- package/dist/memory/debug-log.d.ts.map +1 -1
- package/dist/memory/debug-log.js +20 -2
- package/dist/memory/tools/compact-context.d.ts +1 -1
- package/dist/memory/tools/compact-context.d.ts.map +1 -1
- package/dist/memory/tools/compact-context.js +4 -1
- package/dist/memory/tools/recall-observation.d.ts +3 -3
- package/dist/memory/tools/recall-observation.d.ts.map +1 -1
- package/dist/memory/tools/recall-observation.js +4 -1
- package/dist/memory/tools/receive-agent-observations.d.ts +3 -3
- package/dist/memory/tools/receive-agent-observations.d.ts.map +1 -1
- package/dist/memory/tools/receive-agent-observations.js +4 -1
- package/dist/memory/tools/share-project-observation.d.ts +3 -3
- package/dist/memory/tools/share-project-observation.d.ts.map +1 -1
- package/dist/memory/tools/share-project-observation.js +4 -1
- package/dist/memory/tools/write-project-observation.d.ts +3 -3
- package/dist/memory/tools/write-project-observation.d.ts.map +1 -1
- package/dist/memory/tools/write-project-observation.js +4 -1
- package/dist/relay/client.d.ts.map +1 -1
- package/dist/relay/client.js +5 -2
- package/dist/sdk/ai/env-api-keys.js +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/extensions/loader.js +31 -3
- package/dist/sdk/coding-agent/core/theme.js +1 -1
- package/dist/server/handlers/agent-settings.d.ts.map +1 -1
- package/dist/server/handlers/agent-settings.js +4 -1
- package/dist/server/handlers/settings-lock.d.ts.map +1 -1
- package/dist/server/handlers/settings-lock.js +4 -1
- package/dist/server/storage.d.ts.map +1 -1
- package/dist/server/storage.js +13 -1
- package/dist/utils/serve-state.d.ts +17 -0
- package/dist/utils/serve-state.d.ts.map +1 -1
- package/dist/utils/serve-state.js +73 -0
- package/package.json +1 -1
- package/dist/designer/data/skills/blog-post.d.ts +0 -3
- package/dist/designer/data/skills/blog-post.d.ts.map +0 -1
- package/dist/designer/data/skills/blog-post.js +0 -84
- package/dist/designer/data/skills/blog-post.ts +0 -87
- package/dist/designer/data/skills/critique.d.ts +0 -3
- package/dist/designer/data/skills/critique.d.ts.map +0 -1
- package/dist/designer/data/skills/critique.js +0 -109
- package/dist/designer/data/skills/critique.ts +0 -112
- package/dist/designer/data/skills/dashboard.d.ts +0 -3
- package/dist/designer/data/skills/dashboard.d.ts.map +0 -1
- package/dist/designer/data/skills/dashboard.js +0 -165
- package/dist/designer/data/skills/dashboard.ts +0 -168
- package/dist/designer/data/skills/design-brief.d.ts +0 -3
- package/dist/designer/data/skills/design-brief.d.ts.map +0 -1
- package/dist/designer/data/skills/design-brief.js +0 -141
- package/dist/designer/data/skills/design-brief.ts +0 -144
- package/dist/designer/data/skills/design-skill.d.ts +0 -10
- package/dist/designer/data/skills/design-skill.d.ts.map +0 -1
- package/dist/designer/data/skills/design-skill.js +0 -1
- package/dist/designer/data/skills/design-skill.ts +0 -9
- package/dist/designer/data/skills/docs-page.d.ts +0 -3
- package/dist/designer/data/skills/docs-page.d.ts.map +0 -1
- package/dist/designer/data/skills/docs-page.js +0 -68
- package/dist/designer/data/skills/docs-page.ts +0 -71
- package/dist/designer/data/skills/index.d.ts +0 -3
- package/dist/designer/data/skills/index.d.ts.map +0 -1
- package/dist/designer/data/skills/index.js +0 -28
- package/dist/designer/data/skills/index.ts +0 -30
- package/dist/designer/data/skills/magazine-poster.d.ts +0 -3
- package/dist/designer/data/skills/magazine-poster.d.ts.map +0 -1
- package/dist/designer/data/skills/magazine-poster.js +0 -70
- package/dist/designer/data/skills/magazine-poster.ts +0 -73
- package/dist/designer/data/skills/mobile-app.d.ts +0 -3
- package/dist/designer/data/skills/mobile-app.d.ts.map +0 -1
- package/dist/designer/data/skills/mobile-app.js +0 -229
- package/dist/designer/data/skills/mobile-app.ts +0 -232
- package/dist/designer/data/skills/motion-frames.d.ts +0 -3
- package/dist/designer/data/skills/motion-frames.d.ts.map +0 -1
- package/dist/designer/data/skills/motion-frames.js +0 -121
- package/dist/designer/data/skills/motion-frames.ts +0 -124
- package/dist/designer/data/skills/pricing-page.d.ts +0 -3
- package/dist/designer/data/skills/pricing-page.d.ts.map +0 -1
- package/dist/designer/data/skills/pricing-page.js +0 -76
- package/dist/designer/data/skills/pricing-page.ts +0 -79
- package/dist/designer/data/skills/saas-landing.d.ts +0 -3
- package/dist/designer/data/skills/saas-landing.d.ts.map +0 -1
- package/dist/designer/data/skills/saas-landing.js +0 -71
- package/dist/designer/data/skills/saas-landing.ts +0 -74
- package/dist/designer/data/skills/slide-deck.d.ts +0 -3
- package/dist/designer/data/skills/slide-deck.d.ts.map +0 -1
- package/dist/designer/data/skills/slide-deck.js +0 -213
- package/dist/designer/data/skills/slide-deck.ts +0 -216
- package/dist/designer/data/skills/social-carousel.d.ts +0 -3
- package/dist/designer/data/skills/social-carousel.d.ts.map +0 -1
- package/dist/designer/data/skills/social-carousel.js +0 -135
- package/dist/designer/data/skills/social-carousel.ts +0 -138
- package/dist/designer/data/skills/web-prototype.d.ts +0 -3
- package/dist/designer/data/skills/web-prototype.d.ts.map +0 -1
- package/dist/designer/data/skills/web-prototype.js +0 -159
- package/dist/designer/data/skills/web-prototype.ts +0 -162
- package/dist/designer/data/systems/agentic/DESIGN.md +0 -71
- package/dist/designer/data/systems/agentic/components.html +0 -154
- package/dist/designer/data/systems/agentic/tokens.css +0 -63
- package/dist/designer/data/systems/airbnb/DESIGN.md +0 -393
- package/dist/designer/data/systems/airbnb/components.html +0 -1373
- package/dist/designer/data/systems/airbnb/tokens.css +0 -261
- package/dist/designer/data/systems/airtable/DESIGN.md +0 -92
- package/dist/designer/data/systems/airtable/components.html +0 -489
- package/dist/designer/data/systems/airtable/tokens.css +0 -261
- package/dist/designer/data/systems/ant/DESIGN.md +0 -71
- package/dist/designer/data/systems/ant/components.html +0 -154
- package/dist/designer/data/systems/ant/tokens.css +0 -63
- package/dist/designer/data/systems/apple/DESIGN.md +0 -250
- package/dist/designer/data/systems/apple/components.html +0 -749
- package/dist/designer/data/systems/apple/tokens.css +0 -286
- package/dist/designer/data/systems/application/DESIGN.md +0 -71
- package/dist/designer/data/systems/application/components.html +0 -154
- package/dist/designer/data/systems/application/tokens.css +0 -63
- package/dist/designer/data/systems/arc/DESIGN.md +0 -152
- package/dist/designer/data/systems/arc/components.html +0 -432
- package/dist/designer/data/systems/arc/tokens.css +0 -137
- package/dist/designer/data/systems/artistic/DESIGN.md +0 -71
- package/dist/designer/data/systems/artistic/components.html +0 -136
- package/dist/designer/data/systems/artistic/tokens.css +0 -63
- package/dist/designer/data/systems/atelier-zero/DESIGN.md +0 -316
- package/dist/designer/data/systems/atelier-zero/components.html +0 -136
- package/dist/designer/data/systems/atelier-zero/tokens.css +0 -63
- package/dist/designer/data/systems/bento/DESIGN.md +0 -71
- package/dist/designer/data/systems/bento/components.html +0 -136
- package/dist/designer/data/systems/bento/tokens.css +0 -63
- package/dist/designer/data/systems/binance/DESIGN.md +0 -348
- package/dist/designer/data/systems/binance/components.html +0 -550
- package/dist/designer/data/systems/binance/tokens.css +0 -255
- package/dist/designer/data/systems/bmw/DESIGN.md +0 -183
- package/dist/designer/data/systems/bmw/components.html +0 -551
- package/dist/designer/data/systems/bmw/tokens.css +0 -179
- package/dist/designer/data/systems/bmw-m/DESIGN.md +0 -246
- package/dist/designer/data/systems/bmw-m/components.html +0 -342
- package/dist/designer/data/systems/bmw-m/tokens.css +0 -64
- package/dist/designer/data/systems/bold/DESIGN.md +0 -71
- package/dist/designer/data/systems/bold/components.html +0 -136
- package/dist/designer/data/systems/bold/tokens.css +0 -63
- package/dist/designer/data/systems/brutalism/DESIGN.md +0 -71
- package/dist/designer/data/systems/brutalism/components.html +0 -154
- package/dist/designer/data/systems/brutalism/tokens.css +0 -63
- package/dist/designer/data/systems/bugatti/DESIGN.md +0 -271
- package/dist/designer/data/systems/bugatti/components.html +0 -342
- package/dist/designer/data/systems/bugatti/tokens.css +0 -64
- package/dist/designer/data/systems/cafe/DESIGN.md +0 -71
- package/dist/designer/data/systems/cafe/components.html +0 -136
- package/dist/designer/data/systems/cafe/tokens.css +0 -63
- package/dist/designer/data/systems/cal/DESIGN.md +0 -262
- package/dist/designer/data/systems/cal/components.html +0 -376
- package/dist/designer/data/systems/cal/tokens.css +0 -265
- package/dist/designer/data/systems/canva/DESIGN.md +0 -157
- package/dist/designer/data/systems/canva/components.html +0 -461
- package/dist/designer/data/systems/canva/tokens.css +0 -147
- package/dist/designer/data/systems/cisco/DESIGN.md +0 -201
- package/dist/designer/data/systems/cisco/components.html +0 -342
- package/dist/designer/data/systems/cisco/tokens.css +0 -64
- package/dist/designer/data/systems/claude/DESIGN.md +0 -315
- package/dist/designer/data/systems/claude/components.html +0 -483
- package/dist/designer/data/systems/claude/tokens.css +0 -130
- package/dist/designer/data/systems/clay/DESIGN.md +0 -307
- package/dist/designer/data/systems/clay/components.html +0 -136
- package/dist/designer/data/systems/clay/tokens.css +0 -63
- package/dist/designer/data/systems/claymorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/claymorphism/components.html +0 -136
- package/dist/designer/data/systems/claymorphism/tokens.css +0 -63
- package/dist/designer/data/systems/clean/DESIGN.md +0 -71
- package/dist/designer/data/systems/clean/components.html +0 -136
- package/dist/designer/data/systems/clean/tokens.css +0 -63
- package/dist/designer/data/systems/clickhouse/DESIGN.md +0 -284
- package/dist/designer/data/systems/clickhouse/components.html +0 -506
- package/dist/designer/data/systems/clickhouse/tokens.css +0 -135
- package/dist/designer/data/systems/cohere/DESIGN.md +0 -269
- package/dist/designer/data/systems/cohere/components.html +0 -353
- package/dist/designer/data/systems/cohere/tokens.css +0 -126
- package/dist/designer/data/systems/coinbase/DESIGN.md +0 -132
- package/dist/designer/data/systems/coinbase/components.html +0 -501
- package/dist/designer/data/systems/coinbase/tokens.css +0 -257
- package/dist/designer/data/systems/colorful/DESIGN.md +0 -71
- package/dist/designer/data/systems/colorful/components.html +0 -136
- package/dist/designer/data/systems/colorful/tokens.css +0 -63
- package/dist/designer/data/systems/composio/DESIGN.md +0 -310
- package/dist/designer/data/systems/composio/components.html +0 -342
- package/dist/designer/data/systems/composio/tokens.css +0 -64
- package/dist/designer/data/systems/contemporary/DESIGN.md +0 -71
- package/dist/designer/data/systems/contemporary/components.html +0 -136
- package/dist/designer/data/systems/contemporary/tokens.css +0 -63
- package/dist/designer/data/systems/corporate/DESIGN.md +0 -71
- package/dist/designer/data/systems/corporate/components.html +0 -136
- package/dist/designer/data/systems/corporate/tokens.css +0 -63
- package/dist/designer/data/systems/cosmic/DESIGN.md +0 -71
- package/dist/designer/data/systems/cosmic/components.html +0 -136
- package/dist/designer/data/systems/cosmic/tokens.css +0 -63
- package/dist/designer/data/systems/creative/DESIGN.md +0 -71
- package/dist/designer/data/systems/creative/components.html +0 -136
- package/dist/designer/data/systems/creative/tokens.css +0 -63
- package/dist/designer/data/systems/cursor/DESIGN.md +0 -312
- package/dist/designer/data/systems/cursor/components.html +0 -654
- package/dist/designer/data/systems/cursor/tokens.css +0 -218
- package/dist/designer/data/systems/dashboard/DESIGN.md +0 -71
- package/dist/designer/data/systems/dashboard/components.html +0 -154
- package/dist/designer/data/systems/dashboard/tokens.css +0 -63
- package/dist/designer/data/systems/default/DESIGN.md +0 -62
- package/dist/designer/data/systems/default/components.html +0 -523
- package/dist/designer/data/systems/default/tokens.css +0 -200
- package/dist/designer/data/systems/discord/DESIGN.md +0 -162
- package/dist/designer/data/systems/discord/components.html +0 -359
- package/dist/designer/data/systems/discord/tokens.css +0 -125
- package/dist/designer/data/systems/dithered/DESIGN.md +0 -71
- package/dist/designer/data/systems/dithered/components.html +0 -136
- package/dist/designer/data/systems/dithered/tokens.css +0 -63
- package/dist/designer/data/systems/doodle/DESIGN.md +0 -71
- package/dist/designer/data/systems/doodle/components.html +0 -136
- package/dist/designer/data/systems/doodle/tokens.css +0 -63
- package/dist/designer/data/systems/dramatic/DESIGN.md +0 -71
- package/dist/designer/data/systems/dramatic/components.html +0 -136
- package/dist/designer/data/systems/dramatic/tokens.css +0 -63
- package/dist/designer/data/systems/duolingo/DESIGN.md +0 -154
- package/dist/designer/data/systems/duolingo/components.html +0 -532
- package/dist/designer/data/systems/duolingo/tokens.css +0 -130
- package/dist/designer/data/systems/editorial/DESIGN.md +0 -71
- package/dist/designer/data/systems/editorial/components.html +0 -154
- package/dist/designer/data/systems/editorial/tokens.css +0 -63
- package/dist/designer/data/systems/elegant/DESIGN.md +0 -71
- package/dist/designer/data/systems/elegant/components.html +0 -136
- package/dist/designer/data/systems/elegant/tokens.css +0 -63
- package/dist/designer/data/systems/elevenlabs/DESIGN.md +0 -268
- package/dist/designer/data/systems/elevenlabs/components.html +0 -342
- package/dist/designer/data/systems/elevenlabs/tokens.css +0 -127
- package/dist/designer/data/systems/energetic/DESIGN.md +0 -72
- package/dist/designer/data/systems/energetic/components.html +0 -136
- package/dist/designer/data/systems/energetic/tokens.css +0 -63
- package/dist/designer/data/systems/enterprise/DESIGN.md +0 -71
- package/dist/designer/data/systems/enterprise/components.html +0 -154
- package/dist/designer/data/systems/enterprise/tokens.css +0 -63
- package/dist/designer/data/systems/expo/DESIGN.md +0 -284
- package/dist/designer/data/systems/expo/components.html +0 -342
- package/dist/designer/data/systems/expo/tokens.css +0 -64
- package/dist/designer/data/systems/expressive/DESIGN.md +0 -71
- package/dist/designer/data/systems/expressive/components.html +0 -136
- package/dist/designer/data/systems/expressive/tokens.css +0 -63
- package/dist/designer/data/systems/fantasy/DESIGN.md +0 -71
- package/dist/designer/data/systems/fantasy/components.html +0 -136
- package/dist/designer/data/systems/fantasy/tokens.css +0 -63
- package/dist/designer/data/systems/ferrari/DESIGN.md +0 -317
- package/dist/designer/data/systems/ferrari/components.html +0 -342
- package/dist/designer/data/systems/ferrari/tokens.css +0 -64
- package/dist/designer/data/systems/figma/DESIGN.md +0 -223
- package/dist/designer/data/systems/figma/components.html +0 -344
- package/dist/designer/data/systems/figma/tokens.css +0 -126
- package/dist/designer/data/systems/flat/DESIGN.md +0 -71
- package/dist/designer/data/systems/flat/components.html +0 -136
- package/dist/designer/data/systems/flat/tokens.css +0 -63
- package/dist/designer/data/systems/framer/DESIGN.md +0 -249
- package/dist/designer/data/systems/framer/components.html +0 -438
- package/dist/designer/data/systems/framer/tokens.css +0 -238
- package/dist/designer/data/systems/friendly/DESIGN.md +0 -71
- package/dist/designer/data/systems/friendly/components.html +0 -136
- package/dist/designer/data/systems/friendly/tokens.css +0 -63
- package/dist/designer/data/systems/futuristic/DESIGN.md +0 -71
- package/dist/designer/data/systems/futuristic/components.html +0 -136
- package/dist/designer/data/systems/futuristic/tokens.css +0 -63
- package/dist/designer/data/systems/github/DESIGN.md +0 -155
- package/dist/designer/data/systems/github/components.html +0 -383
- package/dist/designer/data/systems/github/tokens.css +0 -125
- package/dist/designer/data/systems/glassmorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/glassmorphism/components.html +0 -154
- package/dist/designer/data/systems/glassmorphism/tokens.css +0 -63
- package/dist/designer/data/systems/gradient/DESIGN.md +0 -71
- package/dist/designer/data/systems/gradient/components.html +0 -154
- package/dist/designer/data/systems/gradient/tokens.css +0 -63
- package/dist/designer/data/systems/hashicorp/DESIGN.md +0 -281
- package/dist/designer/data/systems/hashicorp/components.html +0 -502
- package/dist/designer/data/systems/hashicorp/tokens.css +0 -272
- package/dist/designer/data/systems/hud/DESIGN.md +0 -173
- package/dist/designer/data/systems/hud/components.html +0 -136
- package/dist/designer/data/systems/hud/tokens.css +0 -63
- package/dist/designer/data/systems/huggingface/DESIGN.md +0 -149
- package/dist/designer/data/systems/huggingface/components.html +0 -346
- package/dist/designer/data/systems/huggingface/tokens.css +0 -125
- package/dist/designer/data/systems/ibm/DESIGN.md +0 -335
- package/dist/designer/data/systems/ibm/components.html +0 -342
- package/dist/designer/data/systems/ibm/tokens.css +0 -64
- package/dist/designer/data/systems/intercom/DESIGN.md +0 -149
- package/dist/designer/data/systems/intercom/components.html +0 -557
- package/dist/designer/data/systems/intercom/tokens.css +0 -150
- package/dist/designer/data/systems/kami/DESIGN.md +0 -410
- package/dist/designer/data/systems/kami/components.html +0 -601
- package/dist/designer/data/systems/kami/tokens.css +0 -272
- package/dist/designer/data/systems/kraken/DESIGN.md +0 -128
- package/dist/designer/data/systems/kraken/components.html +0 -342
- package/dist/designer/data/systems/kraken/tokens.css +0 -64
- package/dist/designer/data/systems/lamborghini/DESIGN.md +0 -291
- package/dist/designer/data/systems/lamborghini/components.html +0 -342
- package/dist/designer/data/systems/lamborghini/tokens.css +0 -64
- package/dist/designer/data/systems/levels/DESIGN.md +0 -71
- package/dist/designer/data/systems/levels/components.html +0 -154
- package/dist/designer/data/systems/levels/tokens.css +0 -63
- package/dist/designer/data/systems/linear-app/DESIGN.md +0 -370
- package/dist/designer/data/systems/linear-app/components.html +0 -370
- package/dist/designer/data/systems/linear-app/tokens.css +0 -130
- package/dist/designer/data/systems/lingo/DESIGN.md +0 -71
- package/dist/designer/data/systems/lingo/components.html +0 -154
- package/dist/designer/data/systems/lingo/tokens.css +0 -63
- package/dist/designer/data/systems/loom/DESIGN.md +0 -201
- package/dist/designer/data/systems/loom/components.html +0 -446
- package/dist/designer/data/systems/loom/tokens.css +0 -138
- package/dist/designer/data/systems/lovable/DESIGN.md +0 -301
- package/dist/designer/data/systems/lovable/components.html +0 -441
- package/dist/designer/data/systems/lovable/tokens.css +0 -258
- package/dist/designer/data/systems/luxury/DESIGN.md +0 -71
- package/dist/designer/data/systems/luxury/components.html +0 -154
- package/dist/designer/data/systems/luxury/tokens.css +0 -63
- package/dist/designer/data/systems/mastercard/DESIGN.md +0 -368
- package/dist/designer/data/systems/mastercard/components.html +0 -342
- package/dist/designer/data/systems/mastercard/tokens.css +0 -64
- package/dist/designer/data/systems/material/DESIGN.md +0 -71
- package/dist/designer/data/systems/material/components.html +0 -154
- package/dist/designer/data/systems/material/tokens.css +0 -63
- package/dist/designer/data/systems/meta/DESIGN.md +0 -369
- package/dist/designer/data/systems/meta/components.html +0 -398
- package/dist/designer/data/systems/meta/tokens.css +0 -263
- package/dist/designer/data/systems/minimal/DESIGN.md +0 -71
- package/dist/designer/data/systems/minimal/components.html +0 -154
- package/dist/designer/data/systems/minimal/tokens.css +0 -63
- package/dist/designer/data/systems/minimax/DESIGN.md +0 -260
- package/dist/designer/data/systems/minimax/components.html +0 -590
- package/dist/designer/data/systems/minimax/tokens.css +0 -148
- package/dist/designer/data/systems/mintlify/DESIGN.md +0 -329
- package/dist/designer/data/systems/mintlify/components.html +0 -737
- package/dist/designer/data/systems/mintlify/tokens.css +0 -256
- package/dist/designer/data/systems/miro/DESIGN.md +0 -111
- package/dist/designer/data/systems/miro/components.html +0 -342
- package/dist/designer/data/systems/miro/tokens.css +0 -64
- package/dist/designer/data/systems/mission-control/DESIGN.md +0 -474
- package/dist/designer/data/systems/mission-control/components.html +0 -136
- package/dist/designer/data/systems/mission-control/tokens.css +0 -63
- package/dist/designer/data/systems/mistral-ai/DESIGN.md +0 -264
- package/dist/designer/data/systems/mistral-ai/components.html +0 -338
- package/dist/designer/data/systems/mistral-ai/tokens.css +0 -125
- package/dist/designer/data/systems/modern/DESIGN.md +0 -71
- package/dist/designer/data/systems/modern/components.html +0 -154
- package/dist/designer/data/systems/modern/tokens.css +0 -63
- package/dist/designer/data/systems/mongodb/DESIGN.md +0 -269
- package/dist/designer/data/systems/mongodb/components.html +0 -462
- package/dist/designer/data/systems/mongodb/tokens.css +0 -176
- package/dist/designer/data/systems/mono/DESIGN.md +0 -71
- package/dist/designer/data/systems/mono/components.html +0 -136
- package/dist/designer/data/systems/mono/tokens.css +0 -63
- package/dist/designer/data/systems/neobrutalism/DESIGN.md +0 -71
- package/dist/designer/data/systems/neobrutalism/components.html +0 -136
- package/dist/designer/data/systems/neobrutalism/tokens.css +0 -63
- package/dist/designer/data/systems/neon/DESIGN.md +0 -71
- package/dist/designer/data/systems/neon/components.html +0 -136
- package/dist/designer/data/systems/neon/tokens.css +0 -63
- package/dist/designer/data/systems/neumorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/neumorphism/components.html +0 -136
- package/dist/designer/data/systems/neumorphism/tokens.css +0 -63
- package/dist/designer/data/systems/nike/DESIGN.md +0 -366
- package/dist/designer/data/systems/nike/components.html +0 -512
- package/dist/designer/data/systems/nike/tokens.css +0 -304
- package/dist/designer/data/systems/notion/DESIGN.md +0 -312
- package/dist/designer/data/systems/notion/components.html +0 -413
- package/dist/designer/data/systems/notion/tokens.css +0 -130
- package/dist/designer/data/systems/nvidia/DESIGN.md +0 -296
- package/dist/designer/data/systems/nvidia/components.html +0 -414
- package/dist/designer/data/systems/nvidia/tokens.css +0 -133
- package/dist/designer/data/systems/ollama/DESIGN.md +0 -270
- package/dist/designer/data/systems/ollama/components.html +0 -700
- package/dist/designer/data/systems/ollama/tokens.css +0 -242
- package/dist/designer/data/systems/openai/DESIGN.md +0 -140
- package/dist/designer/data/systems/openai/components.html +0 -382
- package/dist/designer/data/systems/openai/tokens.css +0 -133
- package/dist/designer/data/systems/opencode-ai/DESIGN.md +0 -284
- package/dist/designer/data/systems/opencode-ai/components.html +0 -389
- package/dist/designer/data/systems/opencode-ai/tokens.css +0 -126
- package/dist/designer/data/systems/pacman/DESIGN.md +0 -71
- package/dist/designer/data/systems/pacman/components.html +0 -342
- package/dist/designer/data/systems/pacman/tokens.css +0 -64
- package/dist/designer/data/systems/paper/DESIGN.md +0 -71
- package/dist/designer/data/systems/paper/components.html +0 -136
- package/dist/designer/data/systems/paper/tokens.css +0 -63
- package/dist/designer/data/systems/perplexity/DESIGN.md +0 -286
- package/dist/designer/data/systems/perplexity/components.html +0 -455
- package/dist/designer/data/systems/perplexity/tokens.css +0 -151
- package/dist/designer/data/systems/perspective/DESIGN.md +0 -71
- package/dist/designer/data/systems/perspective/components.html +0 -136
- package/dist/designer/data/systems/perspective/tokens.css +0 -63
- package/dist/designer/data/systems/pinterest/DESIGN.md +0 -233
- package/dist/designer/data/systems/pinterest/components.html +0 -865
- package/dist/designer/data/systems/pinterest/tokens.css +0 -262
- package/dist/designer/data/systems/playstation/DESIGN.md +0 -367
- package/dist/designer/data/systems/playstation/components.html +0 -414
- package/dist/designer/data/systems/playstation/tokens.css +0 -150
- package/dist/designer/data/systems/posthog/DESIGN.md +0 -259
- package/dist/designer/data/systems/posthog/components.html +0 -827
- package/dist/designer/data/systems/posthog/tokens.css +0 -272
- package/dist/designer/data/systems/premium/DESIGN.md +0 -71
- package/dist/designer/data/systems/premium/components.html +0 -154
- package/dist/designer/data/systems/premium/tokens.css +0 -63
- package/dist/designer/data/systems/professional/DESIGN.md +0 -71
- package/dist/designer/data/systems/professional/components.html +0 -136
- package/dist/designer/data/systems/professional/tokens.css +0 -63
- package/dist/designer/data/systems/publication/DESIGN.md +0 -71
- package/dist/designer/data/systems/publication/components.html +0 -154
- package/dist/designer/data/systems/publication/tokens.css +0 -63
- package/dist/designer/data/systems/raycast/DESIGN.md +0 -271
- package/dist/designer/data/systems/raycast/components.html +0 -507
- package/dist/designer/data/systems/raycast/tokens.css +0 -143
- package/dist/designer/data/systems/refined/DESIGN.md +0 -71
- package/dist/designer/data/systems/refined/components.html +0 -136
- package/dist/designer/data/systems/refined/tokens.css +0 -63
- package/dist/designer/data/systems/renault/DESIGN.md +0 -314
- package/dist/designer/data/systems/renault/components.html +0 -154
- package/dist/designer/data/systems/renault/tokens.css +0 -63
- package/dist/designer/data/systems/replicate/DESIGN.md +0 -264
- package/dist/designer/data/systems/replicate/components.html +0 -340
- package/dist/designer/data/systems/replicate/tokens.css +0 -125
- package/dist/designer/data/systems/resend/DESIGN.md +0 -306
- package/dist/designer/data/systems/resend/components.html +0 -839
- package/dist/designer/data/systems/resend/tokens.css +0 -353
- package/dist/designer/data/systems/retro/DESIGN.md +0 -71
- package/dist/designer/data/systems/retro/components.html +0 -136
- package/dist/designer/data/systems/retro/tokens.css +0 -63
- package/dist/designer/data/systems/revolut/DESIGN.md +0 -188
- package/dist/designer/data/systems/revolut/components.html +0 -342
- package/dist/designer/data/systems/revolut/tokens.css +0 -64
- package/dist/designer/data/systems/runwayml/DESIGN.md +0 -247
- package/dist/designer/data/systems/runwayml/components.html +0 -638
- package/dist/designer/data/systems/runwayml/tokens.css +0 -204
- package/dist/designer/data/systems/sanity/DESIGN.md +0 -360
- package/dist/designer/data/systems/sanity/components.html +0 -342
- package/dist/designer/data/systems/sanity/tokens.css +0 -64
- package/dist/designer/data/systems/sentry/DESIGN.md +0 -265
- package/dist/designer/data/systems/sentry/components.html +0 -387
- package/dist/designer/data/systems/sentry/tokens.css +0 -219
- package/dist/designer/data/systems/shadcn/DESIGN.md +0 -71
- package/dist/designer/data/systems/shadcn/components.html +0 -732
- package/dist/designer/data/systems/shadcn/tokens.css +0 -255
- package/dist/designer/data/systems/shopify/DESIGN.md +0 -353
- package/dist/designer/data/systems/shopify/components.html +0 -342
- package/dist/designer/data/systems/shopify/tokens.css +0 -141
- package/dist/designer/data/systems/simple/DESIGN.md +0 -71
- package/dist/designer/data/systems/simple/components.html +0 -136
- package/dist/designer/data/systems/simple/tokens.css +0 -63
- package/dist/designer/data/systems/skeumorphism/DESIGN.md +0 -71
- package/dist/designer/data/systems/skeumorphism/components.html +0 -136
- package/dist/designer/data/systems/skeumorphism/tokens.css +0 -63
- package/dist/designer/data/systems/slack/DESIGN.md +0 -363
- package/dist/designer/data/systems/slack/components.html +0 -387
- package/dist/designer/data/systems/slack/tokens.css +0 -127
- package/dist/designer/data/systems/sleek/DESIGN.md +0 -71
- package/dist/designer/data/systems/sleek/components.html +0 -136
- package/dist/designer/data/systems/sleek/tokens.css +0 -63
- package/dist/designer/data/systems/spacex/DESIGN.md +0 -197
- package/dist/designer/data/systems/spacex/components.html +0 -496
- package/dist/designer/data/systems/spacex/tokens.css +0 -154
- package/dist/designer/data/systems/spacious/DESIGN.md +0 -71
- package/dist/designer/data/systems/spacious/components.html +0 -136
- package/dist/designer/data/systems/spacious/tokens.css +0 -63
- package/dist/designer/data/systems/spotify/DESIGN.md +0 -249
- package/dist/designer/data/systems/spotify/components.html +0 -365
- package/dist/designer/data/systems/spotify/tokens.css +0 -127
- package/dist/designer/data/systems/starbucks/DESIGN.md +0 -583
- package/dist/designer/data/systems/starbucks/components.html +0 -493
- package/dist/designer/data/systems/starbucks/tokens.css +0 -182
- package/dist/designer/data/systems/storytelling/DESIGN.md +0 -71
- package/dist/designer/data/systems/storytelling/components.html +0 -136
- package/dist/designer/data/systems/storytelling/tokens.css +0 -63
- package/dist/designer/data/systems/stripe/DESIGN.md +0 -325
- package/dist/designer/data/systems/stripe/components.html +0 -1018
- package/dist/designer/data/systems/stripe/tokens.css +0 -295
- package/dist/designer/data/systems/supabase/DESIGN.md +0 -258
- package/dist/designer/data/systems/supabase/components.html +0 -741
- package/dist/designer/data/systems/supabase/tokens.css +0 -294
- package/dist/designer/data/systems/superhuman/DESIGN.md +0 -255
- package/dist/designer/data/systems/superhuman/components.html +0 -537
- package/dist/designer/data/systems/superhuman/tokens.css +0 -160
- package/dist/designer/data/systems/tesla/DESIGN.md +0 -289
- package/dist/designer/data/systems/tesla/components.html +0 -724
- package/dist/designer/data/systems/tesla/tokens.css +0 -285
- package/dist/designer/data/systems/tetris/DESIGN.md +0 -71
- package/dist/designer/data/systems/tetris/components.html +0 -342
- package/dist/designer/data/systems/tetris/tokens.css +0 -64
- package/dist/designer/data/systems/theverge/DESIGN.md +0 -342
- package/dist/designer/data/systems/theverge/components.html +0 -342
- package/dist/designer/data/systems/theverge/tokens.css +0 -64
- package/dist/designer/data/systems/together-ai/DESIGN.md +0 -266
- package/dist/designer/data/systems/together-ai/components.html +0 -422
- package/dist/designer/data/systems/together-ai/tokens.css +0 -127
- package/dist/designer/data/systems/totality-festival/DESIGN.md +0 -206
- package/dist/designer/data/systems/totality-festival/components.html +0 -136
- package/dist/designer/data/systems/totality-festival/tokens.css +0 -63
- package/dist/designer/data/systems/trading-terminal/DESIGN.md +0 -178
- package/dist/designer/data/systems/trading-terminal/components.html +0 -154
- package/dist/designer/data/systems/trading-terminal/tokens.css +0 -63
- package/dist/designer/data/systems/uber/DESIGN.md +0 -298
- package/dist/designer/data/systems/uber/components.html +0 -347
- package/dist/designer/data/systems/uber/tokens.css +0 -131
- package/dist/designer/data/systems/urdu/DESIGN.md +0 -1002
- package/dist/designer/data/systems/urdu/components.html +0 -136
- package/dist/designer/data/systems/urdu/tokens.css +0 -63
- package/dist/designer/data/systems/vercel/DESIGN.md +0 -313
- package/dist/designer/data/systems/vercel/components.html +0 -839
- package/dist/designer/data/systems/vercel/tokens.css +0 -270
- package/dist/designer/data/systems/vibrant/DESIGN.md +0 -71
- package/dist/designer/data/systems/vibrant/components.html +0 -136
- package/dist/designer/data/systems/vibrant/tokens.css +0 -63
- package/dist/designer/data/systems/vintage/DESIGN.md +0 -71
- package/dist/designer/data/systems/vintage/components.html +0 -136
- package/dist/designer/data/systems/vintage/tokens.css +0 -63
- package/dist/designer/data/systems/vodafone/DESIGN.md +0 -426
- package/dist/designer/data/systems/vodafone/components.html +0 -342
- package/dist/designer/data/systems/vodafone/tokens.css +0 -64
- package/dist/designer/data/systems/voltagent/DESIGN.md +0 -326
- package/dist/designer/data/systems/voltagent/components.html +0 -154
- package/dist/designer/data/systems/voltagent/tokens.css +0 -63
- package/dist/designer/data/systems/warm-editorial/DESIGN.md +0 -65
- package/dist/designer/data/systems/warm-editorial/components.html +0 -136
- package/dist/designer/data/systems/warm-editorial/tokens.css +0 -63
- package/dist/designer/data/systems/warp/DESIGN.md +0 -256
- package/dist/designer/data/systems/warp/components.html +0 -411
- package/dist/designer/data/systems/warp/tokens.css +0 -156
- package/dist/designer/data/systems/webex/DESIGN.md +0 -207
- package/dist/designer/data/systems/webex/components.html +0 -342
- package/dist/designer/data/systems/webex/tokens.css +0 -64
- package/dist/designer/data/systems/webflow/DESIGN.md +0 -95
- package/dist/designer/data/systems/webflow/components.html +0 -413
- package/dist/designer/data/systems/webflow/tokens.css +0 -191
- package/dist/designer/data/systems/wechat/DESIGN.md +0 -302
- package/dist/designer/data/systems/wechat/components.html +0 -507
- package/dist/designer/data/systems/wechat/tokens.css +0 -176
- package/dist/designer/data/systems/wired/DESIGN.md +0 -281
- package/dist/designer/data/systems/wired/components.html +0 -342
- package/dist/designer/data/systems/wired/tokens.css +0 -64
- package/dist/designer/data/systems/wise/DESIGN.md +0 -176
- package/dist/designer/data/systems/wise/components.html +0 -365
- package/dist/designer/data/systems/wise/tokens.css +0 -141
- package/dist/designer/data/systems/x-ai/DESIGN.md +0 -260
- package/dist/designer/data/systems/x-ai/components.html +0 -460
- package/dist/designer/data/systems/x-ai/tokens.css +0 -268
- package/dist/designer/data/systems/xiaohongshu/DESIGN.md +0 -402
- package/dist/designer/data/systems/xiaohongshu/components.html +0 -865
- package/dist/designer/data/systems/xiaohongshu/tokens.css +0 -193
- package/dist/designer/data/systems/zapier/DESIGN.md +0 -331
- package/dist/designer/data/systems/zapier/components.html +0 -342
- package/dist/designer/data/systems/zapier/tokens.css +0 -64
- package/dist/designer/guidelines.d.ts +0 -23
- package/dist/designer/guidelines.d.ts.map +0 -1
- package/dist/designer/guidelines.js +0 -176
- package/dist/designer/philosophies.d.ts +0 -33
- package/dist/designer/philosophies.d.ts.map +0 -1
- package/dist/designer/philosophies.js +0 -668
- package/dist/designer/skills.d.ts +0 -21
- package/dist/designer/skills.d.ts.map +0 -1
- package/dist/designer/skills.js +0 -34
- package/dist/designer/systems.d.ts +0 -36
- package/dist/designer/systems.d.ts.map +0 -1
- package/dist/designer/systems.js +0 -221
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import type { DesignSkill } from "./design-skill.js";
|
|
2
|
-
|
|
3
|
-
export const motionFrames: DesignSkill = {
|
|
4
|
-
name: "motion-frames",
|
|
5
|
-
scenario: "creative",
|
|
6
|
-
description:
|
|
7
|
-
"CSS animation and motion design frames. Keyframe-driven animations, scroll-triggered reveals, staggered lists, loading states, and page transitions — all CSS-only where possible.",
|
|
8
|
-
outputKind: "html",
|
|
9
|
-
workflow: `# Motion Frames Skill
|
|
10
|
-
|
|
11
|
-
Produce a motion design showcase as a single HTML file. CSS keyframe animations, scroll-triggered effects, and subtle micro-interactions — no JavaScript libraries.
|
|
12
|
-
|
|
13
|
-
## Phase 1 — Animation Vocabulary
|
|
14
|
-
|
|
15
|
-
### Entrance Animations
|
|
16
|
-
\`\`\`css
|
|
17
|
-
/* Fade up */
|
|
18
|
-
@keyframes fadeUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
|
|
19
|
-
|
|
20
|
-
/* Scale in */
|
|
21
|
-
@keyframes scaleIn { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } }
|
|
22
|
-
|
|
23
|
-
/* Slide from left */
|
|
24
|
-
@keyframes slideLeft { from { opacity: 0; transform: translateX(-30px); } to { opacity: 1; transform: translateX(0); } }
|
|
25
|
-
|
|
26
|
-
/* Reveal by clip-path */
|
|
27
|
-
@keyframes clipReveal { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } }
|
|
28
|
-
\`\`\`
|
|
29
|
-
|
|
30
|
-
### Scroll-Triggered Reveals
|
|
31
|
-
\`\`\`css
|
|
32
|
-
/* Use scroll-driven animations (modern browsers) */
|
|
33
|
-
.reveal {
|
|
34
|
-
animation: fadeUp 0.6s ease-out;
|
|
35
|
-
animation-timeline: view();
|
|
36
|
-
animation-range: entry 20% cover 40%;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* Fallback: use Intersection Observer pattern in a small script */
|
|
40
|
-
.reveal-on-scroll { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
|
|
41
|
-
.reveal-on-scroll.visible { opacity: 1; transform: translateY(0); }
|
|
42
|
-
\`\`\`
|
|
43
|
-
|
|
44
|
-
### Staggered Lists
|
|
45
|
-
\`\`\`css
|
|
46
|
-
.stagger-list > * { opacity: 0; animation: fadeUp 0.4s ease-out forwards; }
|
|
47
|
-
.stagger-list > *:nth-child(1) { animation-delay: 0ms; }
|
|
48
|
-
.stagger-list > *:nth-child(2) { animation-delay: 80ms; }
|
|
49
|
-
.stagger-list > *:nth-child(3) { animation-delay: 160ms; }
|
|
50
|
-
.stagger-list > *:nth-child(4) { animation-delay: 240ms; }
|
|
51
|
-
.stagger-list > *:nth-child(5) { animation-delay: 320ms; }
|
|
52
|
-
.stagger-list > *:nth-child(6) { animation-delay: 400ms; }
|
|
53
|
-
/* Continue pattern: delay = (n-1) * 80ms up to n=20 */
|
|
54
|
-
\`\`\`
|
|
55
|
-
|
|
56
|
-
### Loading States
|
|
57
|
-
\`\`\`css
|
|
58
|
-
/* Spinner */
|
|
59
|
-
@keyframes spin { to { transform: rotate(360deg); } }
|
|
60
|
-
.spinner { width: 24px; height: 24px; border: 3px solid var(--border); border-top-color: var(--accent); border-radius: 50%; animation: spin 0.6s linear infinite; }
|
|
61
|
-
|
|
62
|
-
/* Skeleton pulse */
|
|
63
|
-
@keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
|
|
64
|
-
.skeleton { background: linear-gradient(90deg, var(--surface) 25%, color-mix(in oklab, var(--surface) 50%, var(--bg)) 50%, var(--surface) 75%); background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite; border-radius: 4px; }
|
|
65
|
-
|
|
66
|
-
/* Progress bar */
|
|
67
|
-
@keyframes progress { from { width: 0%; } to { width: 100%; } }
|
|
68
|
-
.progress-bar { height: 4px; background: var(--surface); border-radius: 2px; overflow: hidden; }
|
|
69
|
-
.progress-bar-fill { height: 100%; background: var(--accent); border-radius: 2px; animation: progress 2s ease-out forwards; }
|
|
70
|
-
\`\`\`
|
|
71
|
-
|
|
72
|
-
### Hover Micro-Interactions
|
|
73
|
-
\`\`\`css
|
|
74
|
-
/* Subtle card lift */
|
|
75
|
-
.card-hover { transition: transform 0.2s ease, box-shadow 0.2s ease; }
|
|
76
|
-
.card-hover:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(0,0,0,0.1); }
|
|
77
|
-
|
|
78
|
-
/* Button press */
|
|
79
|
-
.btn-press { transition: transform 0.1s ease; }
|
|
80
|
-
.btn-press:active { transform: scale(0.97); }
|
|
81
|
-
|
|
82
|
-
/* Link underline slide */
|
|
83
|
-
.link-slide { position: relative; text-decoration: none; }
|
|
84
|
-
.link-slide::after { content: ""; position: absolute; bottom: -1px; left: 0; width: 0; height: 1.5px; background: var(--accent); transition: width 0.3s ease; }
|
|
85
|
-
.link-slide:hover::after { width: 100%; }
|
|
86
|
-
|
|
87
|
-
/* Image zoom */
|
|
88
|
-
.img-zoom { overflow: hidden; border-radius: 8px; }
|
|
89
|
-
.img-zoom img { transition: transform 0.3s ease; }
|
|
90
|
-
.img-zoom:hover img { transform: scale(1.05); }
|
|
91
|
-
\`\`\`
|
|
92
|
-
|
|
93
|
-
### Page Transitions (View Transitions API)
|
|
94
|
-
\`\`\`css
|
|
95
|
-
/* Add to :root for cross-fade transitions */
|
|
96
|
-
::view-transition-old(root),
|
|
97
|
-
::view-transition-new(root) {
|
|
98
|
-
animation-duration: 0.4s;
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
/* Named transitions for specific elements */
|
|
102
|
-
.hero-title { view-transition-name: hero-title; }
|
|
103
|
-
.hero-image { view-transition-name: hero-image; }
|
|
104
|
-
\`\`\`
|
|
105
|
-
|
|
106
|
-
## Phase 2 — Showcase Layout
|
|
107
|
-
|
|
108
|
-
Build a single HTML page demonstrating each animation category:
|
|
109
|
-
1. **Entrance section** — cards/stats that animate in on load
|
|
110
|
-
2. **Scroll reveal section** — content that appears as you scroll
|
|
111
|
-
3. **Staggered list** — feature list with cascading reveal
|
|
112
|
-
4. **Loading section** — skeleton screens next to real content
|
|
113
|
-
5. **Hover gallery** — cards with different hover treatments
|
|
114
|
-
6. **Interactive section** — buttons and links with micro-interactions
|
|
115
|
-
|
|
116
|
-
## Phase 3 — Motion Design Rules
|
|
117
|
-
- **Duration**: 150-400ms for micro-interactions; 400-800ms for entrances; DON'T use values above 1s
|
|
118
|
-
- **Easing**: ease-out for entrances (fast start, settle gracefully); ease-in-out for continuous animations
|
|
119
|
-
- **Stagger**: 60-100ms between children; maximum 20 items in a stagger
|
|
120
|
-
- **Performance**: animate transform and opacity only (no width/height/margin animations)
|
|
121
|
-
- **Respect reduced motion**: wrap animations in @media (prefers-reduced-motion: no-preference)
|
|
122
|
-
- **No animation on every element** — pick 2-3 key moments per page
|
|
123
|
-
- **Animation should communicate** — loading state, new content arriving, affordance — not just decoration`,
|
|
124
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pricing-page.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/pricing-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,WA4EvB,CAAC"}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
export const pricingPage = {
|
|
2
|
-
name: "pricing-page",
|
|
3
|
-
scenario: "marketing",
|
|
4
|
-
description: "Standalone pricing page — header, plan tier cards, feature comparison table, and FAQ. Uses CSS Grid for plan rows and comparison table. 2-4 tiers with recommended tier accent.",
|
|
5
|
-
outputKind: "html",
|
|
6
|
-
workflow: `# Pricing Page Skill
|
|
7
|
-
|
|
8
|
-
Produce a single-screen pricing page that respects the active design system.
|
|
9
|
-
|
|
10
|
-
## Phase 1 — Classify the product
|
|
11
|
-
|
|
12
|
-
Pick a tier shape based on the brief:
|
|
13
|
-
- **3-tier** (most common): Free / Pro / Team or Starter / Growth / Enterprise
|
|
14
|
-
- **4-tier** when the brief says "scale" or "enterprise plus"
|
|
15
|
-
- **2-tier** when it says "individual / business" or "personal / pro"
|
|
16
|
-
|
|
17
|
-
## Phase 2 — Sections (in order)
|
|
18
|
-
|
|
19
|
-
1. **Hero** — page title (e.g. "Pricing"), one-line subhead, optional monthly/annual toggle.
|
|
20
|
-
\`\`\`css
|
|
21
|
-
.pricing-hero { text-align: center; padding: 80px 0 48px; }
|
|
22
|
-
.toggle { display: inline-flex; border-radius: 999px; background: var(--surface); padding: 4px; margin-top: 24px; }
|
|
23
|
-
.toggle button { padding: 8px 20px; border-radius: 999px; border: none; cursor: pointer; font-size: 14px; font-weight: 500; }
|
|
24
|
-
.toggle button.active { background: var(--fg); color: var(--bg); }
|
|
25
|
-
\`\`\`
|
|
26
|
-
|
|
27
|
-
2. **Plan cards** — one card per tier. Each card: tier name, price (display font + larger scale for the number), 1-line positioning, 4-6 bullet features, primary CTA.
|
|
28
|
-
\`\`\`css
|
|
29
|
-
.plan-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; max-width: 1100px; margin: 0 auto; padding: 0 24px; }
|
|
30
|
-
.plan-card { background: var(--surface, var(--bg)); border: 1px solid var(--border); border-radius: 12px; padding: 40px 32px; display: flex; flex-direction: column; }
|
|
31
|
-
.plan-card.recommended { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); position: relative; }
|
|
32
|
-
.plan-card.recommended::before { content: "Popular"; position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--accent); color: var(--accent-on, white); padding: 4px 16px; border-radius: 999px; font-size: 12px; font-weight: 600; }
|
|
33
|
-
.plan-name { font-size: 20px; font-weight: 600; }
|
|
34
|
-
.plan-price { font-size: 48px; font-weight: 800; line-height: 1; margin: 16px 0 4px; font-family: var(--font-display, var(--font-body)); }
|
|
35
|
-
.plan-price span { font-size: 16px; font-weight: 400; color: var(--muted); }
|
|
36
|
-
.plan-features { list-style: none; padding: 0; margin: 24px 0; flex: 1; }
|
|
37
|
-
.plan-features li { padding: 8px 0; font-size: 14px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
38
|
-
\`\`\`
|
|
39
|
-
|
|
40
|
-
3. **Comparison table** — feature rows × tier columns, ✓ / — / value cells. Group features into 2-3 logical sections (Core, Collaboration, Support, Security). Sticky header.
|
|
41
|
-
\`\`\`css
|
|
42
|
-
.comparison { max-width: 1100px; margin: 64px auto; padding: 0 24px; }
|
|
43
|
-
.comparison h2 { text-align: center; margin-bottom: 32px; }
|
|
44
|
-
.comparison-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
|
45
|
-
.comparison-table th { text-align: left; padding: 12px 16px; font-weight: 600; border-bottom: 2px solid var(--border); }
|
|
46
|
-
.comparison-table th:not(:first-child) { text-align: center; }
|
|
47
|
-
.comparison-table td { padding: 12px 16px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
48
|
-
.comparison-table td:not(:first-child) { text-align: center; }
|
|
49
|
-
.section-header td { font-weight: 600; background: var(--surface); font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em; }
|
|
50
|
-
\`\`\`
|
|
51
|
-
|
|
52
|
-
4. **FAQ** — 4-6 collapsible Q&A items using \`<details><summary>\` (no JS needed).
|
|
53
|
-
\`\`\`css
|
|
54
|
-
.faq { max-width: 720px; margin: 64px auto; padding: 0 24px; }
|
|
55
|
-
.faq h2 { text-align: center; margin-bottom: 32px; }
|
|
56
|
-
.faq details { border-bottom: 1px solid var(--border-soft, var(--border)); padding: 20px 0; }
|
|
57
|
-
.faq summary { font-weight: 600; cursor: pointer; font-size: 16px; list-style: none; display: flex; justify-content: space-between; align-items: center; }
|
|
58
|
-
.faq summary::after { content: "+"; font-size: 20px; }
|
|
59
|
-
.faq details[open] summary::after { content: "−"; }
|
|
60
|
-
.faq p { margin-top: 12px; font-size: 15px; color: var(--muted); line-height: 1.6; }
|
|
61
|
-
\`\`\`
|
|
62
|
-
|
|
63
|
-
5. **Footer CTA** — single line + button.
|
|
64
|
-
|
|
65
|
-
## Phase 3 — Content Rules
|
|
66
|
-
- Prices are plausible for the product (not "$X / month")
|
|
67
|
-
- Accent appears on the recommended tier and one CTA only
|
|
68
|
-
- No fake feature names — every row reads as something a real product would offer
|
|
69
|
-
- Comparison table renders cleanly at 1024px and stacks readably below 768px (scroll-x or stacked)
|
|
70
|
-
|
|
71
|
-
## Phase 4 — Anti-Slop Check
|
|
72
|
-
- [ ] Prices use specific numbers ($29, $79, $199)
|
|
73
|
-
- [ ] Recommended tier is visually distinct
|
|
74
|
-
- [ ] FAQ answers are concrete, not generic
|
|
75
|
-
- [ ] No price-related emoji (💸, 💰, 🤑)`,
|
|
76
|
-
};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { DesignSkill } from "./design-skill.js";
|
|
2
|
-
|
|
3
|
-
export const pricingPage: DesignSkill = {
|
|
4
|
-
name: "pricing-page",
|
|
5
|
-
scenario: "marketing",
|
|
6
|
-
description:
|
|
7
|
-
"Standalone pricing page — header, plan tier cards, feature comparison table, and FAQ. Uses CSS Grid for plan rows and comparison table. 2-4 tiers with recommended tier accent.",
|
|
8
|
-
outputKind: "html",
|
|
9
|
-
workflow: `# Pricing Page Skill
|
|
10
|
-
|
|
11
|
-
Produce a single-screen pricing page that respects the active design system.
|
|
12
|
-
|
|
13
|
-
## Phase 1 — Classify the product
|
|
14
|
-
|
|
15
|
-
Pick a tier shape based on the brief:
|
|
16
|
-
- **3-tier** (most common): Free / Pro / Team or Starter / Growth / Enterprise
|
|
17
|
-
- **4-tier** when the brief says "scale" or "enterprise plus"
|
|
18
|
-
- **2-tier** when it says "individual / business" or "personal / pro"
|
|
19
|
-
|
|
20
|
-
## Phase 2 — Sections (in order)
|
|
21
|
-
|
|
22
|
-
1. **Hero** — page title (e.g. "Pricing"), one-line subhead, optional monthly/annual toggle.
|
|
23
|
-
\`\`\`css
|
|
24
|
-
.pricing-hero { text-align: center; padding: 80px 0 48px; }
|
|
25
|
-
.toggle { display: inline-flex; border-radius: 999px; background: var(--surface); padding: 4px; margin-top: 24px; }
|
|
26
|
-
.toggle button { padding: 8px 20px; border-radius: 999px; border: none; cursor: pointer; font-size: 14px; font-weight: 500; }
|
|
27
|
-
.toggle button.active { background: var(--fg); color: var(--bg); }
|
|
28
|
-
\`\`\`
|
|
29
|
-
|
|
30
|
-
2. **Plan cards** — one card per tier. Each card: tier name, price (display font + larger scale for the number), 1-line positioning, 4-6 bullet features, primary CTA.
|
|
31
|
-
\`\`\`css
|
|
32
|
-
.plan-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 24px; max-width: 1100px; margin: 0 auto; padding: 0 24px; }
|
|
33
|
-
.plan-card { background: var(--surface, var(--bg)); border: 1px solid var(--border); border-radius: 12px; padding: 40px 32px; display: flex; flex-direction: column; }
|
|
34
|
-
.plan-card.recommended { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); position: relative; }
|
|
35
|
-
.plan-card.recommended::before { content: "Popular"; position: absolute; top: -12px; left: 50%; transform: translateX(-50%); background: var(--accent); color: var(--accent-on, white); padding: 4px 16px; border-radius: 999px; font-size: 12px; font-weight: 600; }
|
|
36
|
-
.plan-name { font-size: 20px; font-weight: 600; }
|
|
37
|
-
.plan-price { font-size: 48px; font-weight: 800; line-height: 1; margin: 16px 0 4px; font-family: var(--font-display, var(--font-body)); }
|
|
38
|
-
.plan-price span { font-size: 16px; font-weight: 400; color: var(--muted); }
|
|
39
|
-
.plan-features { list-style: none; padding: 0; margin: 24px 0; flex: 1; }
|
|
40
|
-
.plan-features li { padding: 8px 0; font-size: 14px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
41
|
-
\`\`\`
|
|
42
|
-
|
|
43
|
-
3. **Comparison table** — feature rows × tier columns, ✓ / — / value cells. Group features into 2-3 logical sections (Core, Collaboration, Support, Security). Sticky header.
|
|
44
|
-
\`\`\`css
|
|
45
|
-
.comparison { max-width: 1100px; margin: 64px auto; padding: 0 24px; }
|
|
46
|
-
.comparison h2 { text-align: center; margin-bottom: 32px; }
|
|
47
|
-
.comparison-table { width: 100%; border-collapse: collapse; font-size: 14px; }
|
|
48
|
-
.comparison-table th { text-align: left; padding: 12px 16px; font-weight: 600; border-bottom: 2px solid var(--border); }
|
|
49
|
-
.comparison-table th:not(:first-child) { text-align: center; }
|
|
50
|
-
.comparison-table td { padding: 12px 16px; border-bottom: 1px solid var(--border-soft, var(--border)); }
|
|
51
|
-
.comparison-table td:not(:first-child) { text-align: center; }
|
|
52
|
-
.section-header td { font-weight: 600; background: var(--surface); font-size: 13px; text-transform: uppercase; letter-spacing: 0.05em; }
|
|
53
|
-
\`\`\`
|
|
54
|
-
|
|
55
|
-
4. **FAQ** — 4-6 collapsible Q&A items using \`<details><summary>\` (no JS needed).
|
|
56
|
-
\`\`\`css
|
|
57
|
-
.faq { max-width: 720px; margin: 64px auto; padding: 0 24px; }
|
|
58
|
-
.faq h2 { text-align: center; margin-bottom: 32px; }
|
|
59
|
-
.faq details { border-bottom: 1px solid var(--border-soft, var(--border)); padding: 20px 0; }
|
|
60
|
-
.faq summary { font-weight: 600; cursor: pointer; font-size: 16px; list-style: none; display: flex; justify-content: space-between; align-items: center; }
|
|
61
|
-
.faq summary::after { content: "+"; font-size: 20px; }
|
|
62
|
-
.faq details[open] summary::after { content: "−"; }
|
|
63
|
-
.faq p { margin-top: 12px; font-size: 15px; color: var(--muted); line-height: 1.6; }
|
|
64
|
-
\`\`\`
|
|
65
|
-
|
|
66
|
-
5. **Footer CTA** — single line + button.
|
|
67
|
-
|
|
68
|
-
## Phase 3 — Content Rules
|
|
69
|
-
- Prices are plausible for the product (not "$X / month")
|
|
70
|
-
- Accent appears on the recommended tier and one CTA only
|
|
71
|
-
- No fake feature names — every row reads as something a real product would offer
|
|
72
|
-
- Comparison table renders cleanly at 1024px and stacks readably below 768px (scroll-x or stacked)
|
|
73
|
-
|
|
74
|
-
## Phase 4 — Anti-Slop Check
|
|
75
|
-
- [ ] Prices use specific numbers ($29, $79, $199)
|
|
76
|
-
- [ ] Recommended tier is visually distinct
|
|
77
|
-
- [ ] FAQ answers are concrete, not generic
|
|
78
|
-
- [ ] No price-related emoji (💸, 💰, 🤑)`,
|
|
79
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"saas-landing.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/saas-landing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,WAAW,EAAE,WAuEvB,CAAC"}
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
export const saasLanding = {
|
|
2
|
-
name: "saas-landing",
|
|
3
|
-
scenario: "marketing",
|
|
4
|
-
description: "Single-page SaaS landing with hero, features, social proof, pricing, and CTA. Production-ready marketing page structure.",
|
|
5
|
-
outputKind: "html",
|
|
6
|
-
workflow: `# SaaS Landing Skill
|
|
7
|
-
|
|
8
|
-
Produce a single-page SaaS landing page. This is your workflow — follow it exactly.
|
|
9
|
-
|
|
10
|
-
## Phase 0 — Pre-flight
|
|
11
|
-
|
|
12
|
-
1. Read the design system. Map all color tokens.
|
|
13
|
-
2. Determine: product name, tagline, audience, has pricing? how many social proof items?
|
|
14
|
-
3. Vocalize: "I'll build a SaaS landing for [product] using the [system] design system. Sections: hero, features (6), social proof (3 logos + quote), pricing (3 tiers), CTA."
|
|
15
|
-
|
|
16
|
-
## Phase 1 — Shell
|
|
17
|
-
|
|
18
|
-
Create \`index.html\` with the same skeleton as web-prototype, but use this section order:
|
|
19
|
-
|
|
20
|
-
1. **Navigation** — Sticky top, 64px height. Logo left, nav links right (Features, Pricing, Docs), "Sign In" + "Get Started" CTA.
|
|
21
|
-
2. **Hero** — Two-column: left = headline + subtext + CTA + "no credit card" badge, right = product screenshot or illustration.
|
|
22
|
-
3. **Trust Strip** — 5-6 company logos, grayscale, 80px height each.
|
|
23
|
-
4. **Features** — 3×2 grid. Each card: icon, title, description. Focus on benefits, not specs.
|
|
24
|
-
5. **How It Works** — 3-step horizontal flow. Number + title + short description.
|
|
25
|
-
6. **Social Proof** — Quote block + person attribution.
|
|
26
|
-
7. **Pricing** — 3-tier cards. Highlight the middle tier with a "Popular" badge.
|
|
27
|
-
8. **FAQ** — Accordion or simple Q&A list, 4-6 items.
|
|
28
|
-
9. **CTA Footer** — Full-width, centered, strong headline.
|
|
29
|
-
10. **Footer** — Logo, copyright, link columns.
|
|
30
|
-
|
|
31
|
-
## Phase 2 — Key Component Styles
|
|
32
|
-
|
|
33
|
-
### Navigation
|
|
34
|
-
\`\`\`css
|
|
35
|
-
.nav { position: sticky; top: 0; z-index: 100; height: 64px; background: var(--color-bg-primary); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; backdrop-filter: blur(12px); }
|
|
36
|
-
.nav-inner { display: flex; justify-content: space-between; align-items: center; width: 100%; }
|
|
37
|
-
.nav-links { display: flex; gap: 32px; align-items: center; }
|
|
38
|
-
\`\`\`
|
|
39
|
-
|
|
40
|
-
### Hero
|
|
41
|
-
\`\`\`css
|
|
42
|
-
.hero { padding: 120px 0 80px; }
|
|
43
|
-
.hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
|
|
44
|
-
.hero h1 { font-size: 56px; font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
|
|
45
|
-
.hero p { font-size: 20px; color: var(--color-text-secondary); margin: 24px 0 32px; max-width: 480px; }
|
|
46
|
-
\`\`\`
|
|
47
|
-
|
|
48
|
-
### Pricing Cards
|
|
49
|
-
\`\`\`css
|
|
50
|
-
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
|
|
51
|
-
.pricing-card { padding: 40px 32px; border-radius: var(--radius); border: 1px solid var(--color-border); background: var(--color-bg-surface); }
|
|
52
|
-
.pricing-card.featured { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent); transform: scale(1.03); }
|
|
53
|
-
.price { font-size: 48px; font-weight: 800; margin: 16px 0; }
|
|
54
|
-
.price span { font-size: 16px; font-weight: 400; color: var(--color-text-secondary); }
|
|
55
|
-
\`\`\`
|
|
56
|
-
|
|
57
|
-
## Phase 3 — Content Rules
|
|
58
|
-
|
|
59
|
-
- Every headline sells a benefit, not describes a feature
|
|
60
|
-
- Pricing: use specific numbers ($29, $79, $199) not "Free / Pro / Enterprise" placeholders
|
|
61
|
-
- Social proof: realistic company names, real-sounding quote
|
|
62
|
-
- CTA button text: action-oriented — "Start Building", "Get Early Access", "See Plans"
|
|
63
|
-
- No lorem ipsum, no placeholder images that look like placeholders — use gradient shapes
|
|
64
|
-
|
|
65
|
-
## Phase 4 — Anti-Slop Check
|
|
66
|
-
|
|
67
|
-
Same checklist as web-prototype, plus:
|
|
68
|
-
- [ ] Pricing cards don't all look identical — featured tier is visually distinct
|
|
69
|
-
- [ ] Hero doesn't use a gradient background (use solid, pattern, or image)
|
|
70
|
-
- [ ] Trust logos are monochrome, same height, evenly spaced`,
|
|
71
|
-
};
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import type { DesignSkill } from "./design-skill.js";
|
|
2
|
-
|
|
3
|
-
export const saasLanding: DesignSkill = {
|
|
4
|
-
name: "saas-landing",
|
|
5
|
-
scenario: "marketing",
|
|
6
|
-
description:
|
|
7
|
-
"Single-page SaaS landing with hero, features, social proof, pricing, and CTA. Production-ready marketing page structure.",
|
|
8
|
-
outputKind: "html",
|
|
9
|
-
workflow: `# SaaS Landing Skill
|
|
10
|
-
|
|
11
|
-
Produce a single-page SaaS landing page. This is your workflow — follow it exactly.
|
|
12
|
-
|
|
13
|
-
## Phase 0 — Pre-flight
|
|
14
|
-
|
|
15
|
-
1. Read the design system. Map all color tokens.
|
|
16
|
-
2. Determine: product name, tagline, audience, has pricing? how many social proof items?
|
|
17
|
-
3. Vocalize: "I'll build a SaaS landing for [product] using the [system] design system. Sections: hero, features (6), social proof (3 logos + quote), pricing (3 tiers), CTA."
|
|
18
|
-
|
|
19
|
-
## Phase 1 — Shell
|
|
20
|
-
|
|
21
|
-
Create \`index.html\` with the same skeleton as web-prototype, but use this section order:
|
|
22
|
-
|
|
23
|
-
1. **Navigation** — Sticky top, 64px height. Logo left, nav links right (Features, Pricing, Docs), "Sign In" + "Get Started" CTA.
|
|
24
|
-
2. **Hero** — Two-column: left = headline + subtext + CTA + "no credit card" badge, right = product screenshot or illustration.
|
|
25
|
-
3. **Trust Strip** — 5-6 company logos, grayscale, 80px height each.
|
|
26
|
-
4. **Features** — 3×2 grid. Each card: icon, title, description. Focus on benefits, not specs.
|
|
27
|
-
5. **How It Works** — 3-step horizontal flow. Number + title + short description.
|
|
28
|
-
6. **Social Proof** — Quote block + person attribution.
|
|
29
|
-
7. **Pricing** — 3-tier cards. Highlight the middle tier with a "Popular" badge.
|
|
30
|
-
8. **FAQ** — Accordion or simple Q&A list, 4-6 items.
|
|
31
|
-
9. **CTA Footer** — Full-width, centered, strong headline.
|
|
32
|
-
10. **Footer** — Logo, copyright, link columns.
|
|
33
|
-
|
|
34
|
-
## Phase 2 — Key Component Styles
|
|
35
|
-
|
|
36
|
-
### Navigation
|
|
37
|
-
\`\`\`css
|
|
38
|
-
.nav { position: sticky; top: 0; z-index: 100; height: 64px; background: var(--color-bg-primary); border-bottom: 1px solid var(--color-border); display: flex; align-items: center; backdrop-filter: blur(12px); }
|
|
39
|
-
.nav-inner { display: flex; justify-content: space-between; align-items: center; width: 100%; }
|
|
40
|
-
.nav-links { display: flex; gap: 32px; align-items: center; }
|
|
41
|
-
\`\`\`
|
|
42
|
-
|
|
43
|
-
### Hero
|
|
44
|
-
\`\`\`css
|
|
45
|
-
.hero { padding: 120px 0 80px; }
|
|
46
|
-
.hero-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: center; }
|
|
47
|
-
.hero h1 { font-size: 56px; font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
|
|
48
|
-
.hero p { font-size: 20px; color: var(--color-text-secondary); margin: 24px 0 32px; max-width: 480px; }
|
|
49
|
-
\`\`\`
|
|
50
|
-
|
|
51
|
-
### Pricing Cards
|
|
52
|
-
\`\`\`css
|
|
53
|
-
.pricing-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
|
|
54
|
-
.pricing-card { padding: 40px 32px; border-radius: var(--radius); border: 1px solid var(--color-border); background: var(--color-bg-surface); }
|
|
55
|
-
.pricing-card.featured { border-color: var(--color-accent); box-shadow: 0 0 0 1px var(--color-accent); transform: scale(1.03); }
|
|
56
|
-
.price { font-size: 48px; font-weight: 800; margin: 16px 0; }
|
|
57
|
-
.price span { font-size: 16px; font-weight: 400; color: var(--color-text-secondary); }
|
|
58
|
-
\`\`\`
|
|
59
|
-
|
|
60
|
-
## Phase 3 — Content Rules
|
|
61
|
-
|
|
62
|
-
- Every headline sells a benefit, not describes a feature
|
|
63
|
-
- Pricing: use specific numbers ($29, $79, $199) not "Free / Pro / Enterprise" placeholders
|
|
64
|
-
- Social proof: realistic company names, real-sounding quote
|
|
65
|
-
- CTA button text: action-oriented — "Start Building", "Get Early Access", "See Plans"
|
|
66
|
-
- No lorem ipsum, no placeholder images that look like placeholders — use gradient shapes
|
|
67
|
-
|
|
68
|
-
## Phase 4 — Anti-Slop Check
|
|
69
|
-
|
|
70
|
-
Same checklist as web-prototype, plus:
|
|
71
|
-
- [ ] Pricing cards don't all look identical — featured tier is visually distinct
|
|
72
|
-
- [ ] Hero doesn't use a gradient background (use solid, pattern, or image)
|
|
73
|
-
- [ ] Trust logos are monochrome, same height, evenly spaced`,
|
|
74
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slide-deck.d.ts","sourceRoot":"","sources":["../../../../src/designer/data/skills/slide-deck.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,SAAS,EAAE,WAqNrB,CAAC"}
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
export const slideDeck = {
|
|
2
|
-
name: "slide-deck",
|
|
3
|
-
scenario: "marketing",
|
|
4
|
-
description: "Presentation slide deck as a single HTML file. Fixed 16:9 canvas with keyboard navigation, slide counter, and print-to-PDF support.",
|
|
5
|
-
outputKind: "slides",
|
|
6
|
-
workflow: `# Slide Deck Skill
|
|
7
|
-
|
|
8
|
-
Produce a presentation deck as a single HTML file. 16:9 ratio (1920×1080), keyboard navigation, slide counter.
|
|
9
|
-
|
|
10
|
-
## Phase 0 — Pre-flight
|
|
11
|
-
|
|
12
|
-
1. Read the design system for color tokens.
|
|
13
|
-
2. Determine: deck title, audience, number of slides, tone (pitch, educational, report).
|
|
14
|
-
3. Vocalize the plan: "I'll create a [N]-slide deck: [slide titles in order]."
|
|
15
|
-
|
|
16
|
-
## Phase 1 — Framework Skeleton
|
|
17
|
-
|
|
18
|
-
Create \`deck.html\` with this exact framework. The scaling/navigation JS is load-bearing — copy it verbatim.
|
|
19
|
-
|
|
20
|
-
\`\`\`html
|
|
21
|
-
<!doctype html>
|
|
22
|
-
<html lang="en">
|
|
23
|
-
<head>
|
|
24
|
-
<meta charset="utf-8">
|
|
25
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
26
|
-
<title>Deck Title</title>
|
|
27
|
-
<style>
|
|
28
|
-
*, *::before, *::after { box-sizing: border-box; margin: 0; }
|
|
29
|
-
|
|
30
|
-
:root {
|
|
31
|
-
--slide-w: 1920px;
|
|
32
|
-
--slide-h: 1080px;
|
|
33
|
-
/* Design system tokens here */
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
html, body { width: 100%; height: 100%; overflow: hidden; background: #000; font-family: var(--font-sans); }
|
|
37
|
-
|
|
38
|
-
#scaler {
|
|
39
|
-
position: absolute;
|
|
40
|
-
top: 50%; left: 50%;
|
|
41
|
-
transform-origin: 0 0;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.slide {
|
|
45
|
-
position: absolute;
|
|
46
|
-
top: 0; left: 0;
|
|
47
|
-
width: var(--slide-w);
|
|
48
|
-
height: var(--slide-h);
|
|
49
|
-
display: none;
|
|
50
|
-
overflow: hidden;
|
|
51
|
-
}
|
|
52
|
-
.slide.active { display: flex; }
|
|
53
|
-
|
|
54
|
-
#counter {
|
|
55
|
-
position: fixed; bottom: 16px; right: 16px; z-index: 100;
|
|
56
|
-
background: rgba(0,0,0,0.6); color: #fff; padding: 4px 12px;
|
|
57
|
-
border-radius: 4px; font-size: 14px; font-family: monospace;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
@media print {
|
|
61
|
-
html, body { width: auto; height: auto; overflow: visible; background: #fff; }
|
|
62
|
-
#scaler { position: static; transform: none; }
|
|
63
|
-
.slide { position: relative; display: block !important; break-after: page; }
|
|
64
|
-
#counter { display: none; }
|
|
65
|
-
}
|
|
66
|
-
</style>
|
|
67
|
-
</head>
|
|
68
|
-
<body>
|
|
69
|
-
<div id="scaler">
|
|
70
|
-
<div class="slide active" data-slide="1"><!-- content --></div>
|
|
71
|
-
<div class="slide" data-slide="2"><!-- content --></div>
|
|
72
|
-
<!-- ... -->
|
|
73
|
-
</div>
|
|
74
|
-
<div id="counter">1 / N</div>
|
|
75
|
-
<script>
|
|
76
|
-
const slides = document.querySelectorAll('.slide');
|
|
77
|
-
let current = 0;
|
|
78
|
-
function show(i) {
|
|
79
|
-
slides[current].classList.remove('active');
|
|
80
|
-
current = (i + slides.length) % slides.length;
|
|
81
|
-
slides[current].classList.add('active');
|
|
82
|
-
document.getElementById('counter').textContent = (current + 1) + ' / ' + slides.length;
|
|
83
|
-
}
|
|
84
|
-
function scale() {
|
|
85
|
-
const scaler = document.getElementById('scaler');
|
|
86
|
-
const sw = window.innerWidth, sh = window.innerHeight;
|
|
87
|
-
const ratio = Math.min(sw / 1920, sh / 1080);
|
|
88
|
-
scaler.style.transform = 'translate(' + (sw/2) + 'px,' + (sh/2) + 'px) scale(' + ratio + ')';
|
|
89
|
-
}
|
|
90
|
-
document.addEventListener('keydown', e => {
|
|
91
|
-
if (e.key === 'ArrowRight' || e.key === 'ArrowDown' || e.key === ' ') { e.preventDefault(); show(current + 1); }
|
|
92
|
-
if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') { e.preventDefault(); show(current - 1); }
|
|
93
|
-
if (e.key === 'Home') { e.preventDefault(); show(0); }
|
|
94
|
-
if (e.key === 'End') { e.preventDefault(); show(slides.length - 1); }
|
|
95
|
-
});
|
|
96
|
-
window.addEventListener('resize', scale);
|
|
97
|
-
scale();
|
|
98
|
-
localStorage.setItem('deck-slide', current);
|
|
99
|
-
</script>
|
|
100
|
-
</body>
|
|
101
|
-
</html>
|
|
102
|
-
\`\`\`
|
|
103
|
-
|
|
104
|
-
## Phase 2 — Slide Layouts
|
|
105
|
-
|
|
106
|
-
Each slide is a \`.slide\` div with \`.active\` on the first. Tag slides with \`data-slide="N"\`.
|
|
107
|
-
|
|
108
|
-
### Title Slide
|
|
109
|
-
\`\`\`html
|
|
110
|
-
<div class="slide active" data-slide="1">
|
|
111
|
-
<div class="slide-content title-slide">
|
|
112
|
-
<p class="slide-label">Company · Date</p>
|
|
113
|
-
<h1>Deck Title</h1>
|
|
114
|
-
<p class="slide-subtitle">One-line subtitle</p>
|
|
115
|
-
</div>
|
|
116
|
-
</div>
|
|
117
|
-
\`\`\`
|
|
118
|
-
Style: centered content, 80px headline, dark background with design-system colors.
|
|
119
|
-
|
|
120
|
-
### Text-Only Slide
|
|
121
|
-
\`\`\`html
|
|
122
|
-
<div class="slide" data-slide="2">
|
|
123
|
-
<div class="slide-content text-slide">
|
|
124
|
-
<h2>Section Title</h2>
|
|
125
|
-
<ul>
|
|
126
|
-
<li>Bullet point one — keep it short, 8-12 words</li>
|
|
127
|
-
<li>Bullet point two</li>
|
|
128
|
-
<li>Bullet point three</li>
|
|
129
|
-
</ul>
|
|
130
|
-
</div>
|
|
131
|
-
</div>
|
|
132
|
-
\`\`\`
|
|
133
|
-
|
|
134
|
-
### Two-Column Slide
|
|
135
|
-
\`\`\`html
|
|
136
|
-
<div class="slide" data-slide="3">
|
|
137
|
-
<div class="slide-content two-col">
|
|
138
|
-
<div class="col">
|
|
139
|
-
<h2>Left Heading</h2>
|
|
140
|
-
<p>Descriptive text. 20-40 words.</p>
|
|
141
|
-
</div>
|
|
142
|
-
<div class="col">
|
|
143
|
-
<div class="chart-placeholder">[chart, image, or code block]</div>
|
|
144
|
-
</div>
|
|
145
|
-
</div>
|
|
146
|
-
</div>
|
|
147
|
-
\`\`\`
|
|
148
|
-
|
|
149
|
-
### Metrics Slide
|
|
150
|
-
\`\`\`html
|
|
151
|
-
<div class="slide" data-slide="4">
|
|
152
|
-
<div class="slide-content metrics-slide">
|
|
153
|
-
<h2>Key Results</h2>
|
|
154
|
-
<div class="metrics-grid">
|
|
155
|
-
<div class="metric">
|
|
156
|
-
<span class="metric-value">85%</span>
|
|
157
|
-
<span class="metric-label">Metric name</span>
|
|
158
|
-
</div>
|
|
159
|
-
<!-- 3-4 metrics -->
|
|
160
|
-
</div>
|
|
161
|
-
</div>
|
|
162
|
-
</div>
|
|
163
|
-
\`\`\`
|
|
164
|
-
|
|
165
|
-
### Closing Slide
|
|
166
|
-
\`\`\`html
|
|
167
|
-
<div class="slide" data-slide="N">
|
|
168
|
-
<div class="slide-content title-slide closing">
|
|
169
|
-
<h1>Thank You</h1>
|
|
170
|
-
<p class="slide-subtitle">contact@company.com</p>
|
|
171
|
-
</div>
|
|
172
|
-
</div>
|
|
173
|
-
\`\`\`
|
|
174
|
-
|
|
175
|
-
## Phase 3 — Slide Styles
|
|
176
|
-
|
|
177
|
-
\`\`\`css
|
|
178
|
-
.slide-content { width: 100%; height: 100%; padding: 80px 120px; display: flex; flex-direction: column; justify-content: center; }
|
|
179
|
-
|
|
180
|
-
.title-slide { align-items: center; text-align: center; background: var(--color-bg-primary); }
|
|
181
|
-
.title-slide h1 { font-size: 80px; font-weight: 800; line-height: 1.1; letter-spacing: -0.03em; }
|
|
182
|
-
.slide-label { font-size: 20px; color: var(--color-text-secondary); margin-bottom: 24px; }
|
|
183
|
-
.slide-subtitle { font-size: 28px; color: var(--color-text-secondary); margin-top: 16px; }
|
|
184
|
-
|
|
185
|
-
.text-slide h2 { font-size: 48px; font-weight: 700; margin-bottom: 40px; }
|
|
186
|
-
.text-slide ul { font-size: 28px; line-height: 1.8; }
|
|
187
|
-
.text-slide li { margin-bottom: 12px; color: var(--color-text-secondary); }
|
|
188
|
-
.text-slide li::marker { color: var(--color-accent); }
|
|
189
|
-
|
|
190
|
-
.two-col { flex-direction: row; gap: 80px; }
|
|
191
|
-
.two-col .col { flex: 1; display: flex; flex-direction: column; justify-content: center; }
|
|
192
|
-
.two-col h2 { font-size: 48px; margin-bottom: 24px; }
|
|
193
|
-
.two-col p { font-size: 24px; line-height: 1.6; color: var(--color-text-secondary); }
|
|
194
|
-
|
|
195
|
-
.metrics-slide { align-items: center; justify-content: center; text-align: center; }
|
|
196
|
-
.metrics-grid { display: flex; gap: 80px; margin-top: 48px; }
|
|
197
|
-
.metric-value { font-size: 72px; font-weight: 800; color: var(--color-accent); display: block; }
|
|
198
|
-
.metric-label { font-size: 20px; color: var(--color-text-secondary); margin-top: 8px; display: block; }
|
|
199
|
-
|
|
200
|
-
.closing { background: var(--color-bg-primary); }
|
|
201
|
-
\`\`\`
|
|
202
|
-
|
|
203
|
-
## Phase 4 — Content Rules for Slides
|
|
204
|
-
|
|
205
|
-
- Slide text is never smaller than 24px — this is a 16:9 canvas, not a web page
|
|
206
|
-
- Headlines: 48-80px, one line preferred
|
|
207
|
-
- Body text: 24-28px
|
|
208
|
-
- Bullet points: 28px, max 5 per slide, each 6-12 words
|
|
209
|
-
- Every slide gets a \`data-slide="N"\` attribute
|
|
210
|
-
- Slides are 1-indexed
|
|
211
|
-
- Max 12 slides unless the user asks for more
|
|
212
|
-
- The closing slide always says "Thank You" with contact info`,
|
|
213
|
-
};
|