@auto-engineer/react-gen 1.134.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/skills/design/SKILL.md +302 -0
- package/dist/skills/design/data/cip/deliverables.csv +51 -0
- package/dist/skills/design/data/cip/industries.csv +21 -0
- package/dist/skills/design/data/cip/mockup-contexts.csv +21 -0
- package/dist/skills/design/data/cip/styles.csv +21 -0
- package/dist/skills/design/data/icon/styles.csv +16 -0
- package/dist/skills/design/data/logo/colors.csv +56 -0
- package/dist/skills/design/data/logo/industries.csv +56 -0
- package/dist/skills/design/data/logo/styles.csv +56 -0
- package/dist/skills/design/references/banner-sizes-and-styles.md +118 -0
- package/dist/skills/design/references/cip-deliverable-guide.md +95 -0
- package/dist/skills/design/references/cip-design.md +121 -0
- package/dist/skills/design/references/cip-prompt-engineering.md +84 -0
- package/dist/skills/design/references/cip-style-guide.md +68 -0
- package/dist/skills/design/references/design-routing.md +207 -0
- package/dist/skills/design/references/icon-design.md +122 -0
- package/dist/skills/design/references/logo-color-psychology.md +101 -0
- package/dist/skills/design/references/logo-design.md +92 -0
- package/dist/skills/design/references/logo-prompt-engineering.md +158 -0
- package/dist/skills/design/references/logo-style-guide.md +109 -0
- package/dist/skills/design/references/slides-copywriting-formulas.md +84 -0
- package/dist/skills/design/references/slides-create.md +4 -0
- package/dist/skills/design/references/slides-html-template.md +295 -0
- package/dist/skills/design/references/slides-layout-patterns.md +137 -0
- package/dist/skills/design/references/slides-strategies.md +94 -0
- package/dist/skills/design/references/slides.md +42 -0
- package/dist/skills/design/references/social-photos-design.md +329 -0
- package/dist/skills/design/scripts/cip/core.py +215 -0
- package/dist/skills/design/scripts/cip/generate.py +484 -0
- package/dist/skills/design/scripts/cip/render-html.py +424 -0
- package/dist/skills/design/scripts/cip/search.py +127 -0
- package/dist/skills/design/scripts/icon/generate.py +487 -0
- package/dist/skills/design/scripts/logo/core.py +175 -0
- package/dist/skills/design/scripts/logo/generate.py +362 -0
- package/dist/skills/design/scripts/logo/search.py +114 -0
- package/dist/skills/design-system/SKILL.md +244 -0
- package/dist/skills/design-system/data/slide-backgrounds.csv +11 -0
- package/dist/skills/design-system/data/slide-charts.csv +26 -0
- package/dist/skills/design-system/data/slide-color-logic.csv +14 -0
- package/dist/skills/design-system/data/slide-copy.csv +26 -0
- package/dist/skills/design-system/data/slide-layout-logic.csv +16 -0
- package/dist/skills/design-system/data/slide-layouts.csv +26 -0
- package/dist/skills/design-system/data/slide-strategies.csv +16 -0
- package/dist/skills/design-system/data/slide-typography.csv +15 -0
- package/dist/skills/design-system/references/component-specs.md +236 -0
- package/dist/skills/design-system/references/component-tokens.md +214 -0
- package/dist/skills/design-system/references/primitive-tokens.md +203 -0
- package/dist/skills/design-system/references/semantic-tokens.md +215 -0
- package/dist/skills/design-system/references/states-and-variants.md +241 -0
- package/dist/skills/design-system/references/tailwind-integration.md +251 -0
- package/dist/skills/design-system/references/token-architecture.md +224 -0
- package/dist/skills/design-system/scripts/embed-tokens.cjs +97 -0
- package/dist/skills/design-system/scripts/fetch-background.py +317 -0
- package/dist/skills/design-system/scripts/generate-slide.py +753 -0
- package/dist/skills/design-system/scripts/generate-tokens.cjs +213 -0
- package/dist/skills/design-system/scripts/html-token-validator.py +327 -0
- package/dist/skills/design-system/scripts/search-slides.py +218 -0
- package/dist/skills/design-system/scripts/slide-token-validator.py +35 -0
- package/dist/skills/design-system/scripts/slide_search_core.py +453 -0
- package/dist/skills/design-system/scripts/validate-tokens.cjs +251 -0
- package/dist/skills/design-system/templates/design-tokens-starter.json +143 -0
- package/dist/skills/design-taste-frontend/SKILL.md +79 -0
- package/dist/skills/emil-design-engineering/SKILL.md +108 -0
- package/dist/skills/emil-design-engineering/animations.md +266 -0
- package/dist/skills/emil-design-engineering/component-design.md +382 -0
- package/dist/skills/emil-design-engineering/forms-controls.md +261 -0
- package/dist/skills/emil-design-engineering/marketing.md +160 -0
- package/dist/skills/emil-design-engineering/performance.md +222 -0
- package/dist/skills/emil-design-engineering/touch-accessibility.md +236 -0
- package/dist/skills/emil-design-engineering/ui-polish.md +303 -0
- package/dist/skills/frontend-design/SKILL.md +42 -0
- package/dist/skills/full-output-enforcement/SKILL.md +32 -0
- package/dist/skills/high-end-visual-design/SKILL.md +98 -0
- package/dist/skills/react-doctor/AGENTS.md +15 -0
- package/dist/skills/react-doctor/SKILL.md +19 -0
- package/dist/skills/redesign-existing-projects/SKILL.md +178 -0
- package/dist/skills/ui-styling/LICENSE.txt +202 -0
- package/dist/skills/ui-styling/SKILL.md +324 -0
- package/dist/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/dist/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/dist/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/dist/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/dist/skills/ui-styling/references/canvas-design-system.md +320 -0
- package/dist/skills/ui-styling/references/shadcn-accessibility.md +471 -0
- package/dist/skills/ui-styling/references/shadcn-components.md +424 -0
- package/dist/skills/ui-styling/references/shadcn-theming.md +373 -0
- package/dist/skills/ui-styling/references/tailwind-customization.md +483 -0
- package/dist/skills/ui-styling/references/tailwind-responsive.md +382 -0
- package/dist/skills/ui-styling/references/tailwind-utilities.md +455 -0
- package/dist/skills/ui-styling/scripts/.coverage +0 -0
- package/dist/skills/ui-styling/scripts/requirements.txt +17 -0
- package/dist/skills/ui-styling/scripts/shadcn_add.py +292 -0
- package/dist/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/dist/skills/ui-styling/scripts/tests/coverage-ui.json +1392 -0
- package/dist/skills/ui-styling/scripts/tests/requirements.txt +3 -0
- package/dist/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/dist/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/dist/skills/ui-ux-pro-max/SKILL.md +659 -0
- package/dist/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
- package/dist/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
- package/dist/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/dist/skills/ui-ux-pro-max/data/colors.csv +162 -0
- package/dist/skills/ui-ux-pro-max/data/design.csv +1776 -0
- package/dist/skills/ui-ux-pro-max/data/draft.csv +1779 -0
- package/dist/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/dist/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/dist/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/dist/skills/ui-ux-pro-max/data/products.csv +162 -0
- package/dist/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/dist/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/dist/skills/ui-ux-pro-max/data/styles.csv +85 -0
- package/dist/skills/ui-ux-pro-max/data/typography.csv +74 -0
- package/dist/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/dist/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/dist/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/dist/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/dist/skills/ui-ux-pro-max/scripts/core.py +247 -0
- package/dist/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/dist/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/dist/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/dist/skills/vercel-react-best-practices/README.md +123 -0
- package/dist/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/dist/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/dist/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/dist/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/dist/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/dist/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/dist/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/dist/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/dist/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/dist/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/dist/skills/web-animation-design/PRACTICAL-TIPS.md +304 -0
- package/dist/skills/web-animation-design/SKILL.md +336 -0
- package/dist/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/src/agents/create-constants-agent.d.ts +6 -0
- package/dist/src/agents/create-constants-agent.d.ts.map +1 -0
- package/dist/src/agents/create-constants-agent.js +42 -0
- package/dist/src/agents/create-constants-agent.js.map +1 -0
- package/dist/src/agents/create-landing-page-agent.d.ts +4 -0
- package/dist/src/agents/create-landing-page-agent.d.ts.map +1 -0
- package/dist/src/agents/create-landing-page-agent.js +62 -0
- package/dist/src/agents/create-landing-page-agent.js.map +1 -0
- package/dist/src/agents/create-narrative-agent.d.ts +4 -0
- package/dist/src/agents/create-narrative-agent.d.ts.map +1 -0
- package/dist/src/agents/create-narrative-agent.js +36 -0
- package/dist/src/agents/create-narrative-agent.js.map +1 -0
- package/dist/src/agents/create-pipeline.d.ts +9 -0
- package/dist/src/agents/create-pipeline.d.ts.map +1 -0
- package/dist/src/agents/create-pipeline.js +28 -0
- package/dist/src/agents/create-pipeline.js.map +1 -0
- package/dist/src/agents/create-router-agent.d.ts +4 -0
- package/dist/src/agents/create-router-agent.d.ts.map +1 -0
- package/dist/src/agents/create-router-agent.js +46 -0
- package/dist/src/agents/create-router-agent.js.map +1 -0
- package/dist/src/agents/create-theme-agent.d.ts +4 -0
- package/dist/src/agents/create-theme-agent.d.ts.map +1 -0
- package/dist/src/agents/create-theme-agent.js +105 -0
- package/dist/src/agents/create-theme-agent.js.map +1 -0
- package/dist/src/agents/create-validation-agent.d.ts +4 -0
- package/dist/src/agents/create-validation-agent.d.ts.map +1 -0
- package/dist/src/agents/create-validation-agent.js +36 -0
- package/dist/src/agents/create-validation-agent.js.map +1 -0
- package/dist/src/agents/scaffold-agent.d.ts +5 -0
- package/dist/src/agents/scaffold-agent.d.ts.map +1 -0
- package/dist/src/agents/scaffold-agent.js +11 -0
- package/dist/src/agents/scaffold-agent.js.map +1 -0
- package/dist/src/commands/generate-react-app.d.ts +27 -0
- package/dist/src/commands/generate-react-app.d.ts.map +1 -0
- package/dist/src/commands/generate-react-app.js +92 -0
- package/dist/src/commands/generate-react-app.js.map +1 -0
- package/dist/src/config.d.ts +3 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +15 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +4 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/prompts/build-narrative-context.d.ts +3 -0
- package/dist/src/prompts/build-narrative-context.d.ts.map +1 -0
- package/dist/src/prompts/build-narrative-context.js +103 -0
- package/dist/src/prompts/build-narrative-context.js.map +1 -0
- package/dist/src/prompts/landing-page-system.d.ts +2 -0
- package/dist/src/prompts/landing-page-system.d.ts.map +1 -0
- package/dist/src/prompts/landing-page-system.js +63 -0
- package/dist/src/prompts/landing-page-system.js.map +1 -0
- package/dist/src/prompts/narrative-system.d.ts +2 -0
- package/dist/src/prompts/narrative-system.d.ts.map +1 -0
- package/dist/src/prompts/narrative-system.js +52 -0
- package/dist/src/prompts/narrative-system.js.map +1 -0
- package/dist/src/prompts/router-system.d.ts +2 -0
- package/dist/src/prompts/router-system.d.ts.map +1 -0
- package/dist/src/prompts/router-system.js +35 -0
- package/dist/src/prompts/router-system.js.map +1 -0
- package/dist/src/prompts/theme-system.d.ts +2 -0
- package/dist/src/prompts/theme-system.d.ts.map +1 -0
- package/dist/src/prompts/theme-system.js +126 -0
- package/dist/src/prompts/theme-system.js.map +1 -0
- package/dist/src/prompts/validation-system.d.ts +2 -0
- package/dist/src/prompts/validation-system.d.ts.map +1 -0
- package/dist/src/prompts/validation-system.js +28 -0
- package/dist/src/prompts/validation-system.js.map +1 -0
- package/dist/src/tools/check-imports.d.ts +6 -0
- package/dist/src/tools/check-imports.d.ts.map +1 -0
- package/dist/src/tools/check-imports.js +129 -0
- package/dist/src/tools/check-imports.js.map +1 -0
- package/dist/src/tools/exit-loop.d.ts +6 -0
- package/dist/src/tools/exit-loop.d.ts.map +1 -0
- package/dist/src/tools/exit-loop.js +12 -0
- package/dist/src/tools/exit-loop.js.map +1 -0
- package/dist/src/tools/list-files.d.ts +4 -0
- package/dist/src/tools/list-files.d.ts.map +1 -0
- package/dist/src/tools/list-files.js +36 -0
- package/dist/src/tools/list-files.js.map +1 -0
- package/dist/src/tools/read-file.d.ts +10 -0
- package/dist/src/tools/read-file.d.ts.map +1 -0
- package/dist/src/tools/read-file.js +21 -0
- package/dist/src/tools/read-file.js.map +1 -0
- package/dist/src/tools/run-eslint.d.ts +6 -0
- package/dist/src/tools/run-eslint.d.ts.map +1 -0
- package/dist/src/tools/run-eslint.js +27 -0
- package/dist/src/tools/run-eslint.js.map +1 -0
- package/dist/src/tools/run-tsc.d.ts +6 -0
- package/dist/src/tools/run-tsc.d.ts.map +1 -0
- package/dist/src/tools/run-tsc.js +27 -0
- package/dist/src/tools/run-tsc.js.map +1 -0
- package/dist/src/tools/write-file.d.ts +15 -0
- package/dist/src/tools/write-file.d.ts.map +1 -0
- package/dist/src/tools/write-file.js +44 -0
- package/dist/src/tools/write-file.js.map +1 -0
- package/dist/src/types.d.ts +330 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +102 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/create-skill-tool.d.ts +2 -0
- package/dist/src/utils/create-skill-tool.d.ts.map +1 -0
- package/dist/src/utils/create-skill-tool.js +13 -0
- package/dist/src/utils/create-skill-tool.js.map +1 -0
- package/dist/src/utils/parse-model.d.ts +3 -0
- package/dist/src/utils/parse-model.d.ts.map +1 -0
- package/dist/src/utils/parse-model.js +7 -0
- package/dist/src/utils/parse-model.js.map +1 -0
- package/dist/src/utils/slugify.d.ts +2 -0
- package/dist/src/utils/slugify.d.ts.map +1 -0
- package/dist/src/utils/slugify.js +7 -0
- package/dist/src/utils/slugify.js.map +1 -0
- package/dist/starter/.env.example +1 -0
- package/dist/starter/README.md +73 -0
- package/dist/starter/components.json +21 -0
- package/dist/starter/eslint.config.js +23 -0
- package/dist/starter/index.html +13 -0
- package/dist/starter/package-lock.json +7590 -0
- package/dist/starter/package.json +57 -0
- package/dist/starter/pnpm-lock.yaml +4479 -0
- package/dist/starter/public/favicon.svg +1 -0
- package/dist/starter/public/icons.svg +24 -0
- package/dist/starter/src/App.tsx +7 -0
- package/dist/starter/src/assets/hero.png +0 -0
- package/dist/starter/src/assets/vite.svg +1 -0
- package/dist/starter/src/components/error-boundary.tsx +38 -0
- package/dist/starter/src/components/not-found.tsx +16 -0
- package/dist/starter/src/components/ui/accordion.tsx +51 -0
- package/dist/starter/src/components/ui/alert-dialog.tsx +162 -0
- package/dist/starter/src/components/ui/alert.tsx +49 -0
- package/dist/starter/src/components/ui/aspect-ratio.tsx +9 -0
- package/dist/starter/src/components/ui/avatar.tsx +87 -0
- package/dist/starter/src/components/ui/badge.tsx +40 -0
- package/dist/starter/src/components/ui/breadcrumb.tsx +92 -0
- package/dist/starter/src/components/ui/button-group.tsx +74 -0
- package/dist/starter/src/components/ui/button.tsx +62 -0
- package/dist/starter/src/components/ui/calendar.tsx +158 -0
- package/dist/starter/src/components/ui/card.tsx +56 -0
- package/dist/starter/src/components/ui/carousel.tsx +215 -0
- package/dist/starter/src/components/ui/chart.tsx +296 -0
- package/dist/starter/src/components/ui/checkbox.tsx +29 -0
- package/dist/starter/src/components/ui/collapsible.tsx +15 -0
- package/dist/starter/src/components/ui/combobox.tsx +266 -0
- package/dist/starter/src/components/ui/command.tsx +136 -0
- package/dist/starter/src/components/ui/context-menu.tsx +211 -0
- package/dist/starter/src/components/ui/dialog.tsx +135 -0
- package/dist/starter/src/components/ui/direction.tsx +18 -0
- package/dist/starter/src/components/ui/drawer.tsx +106 -0
- package/dist/starter/src/components/ui/dropdown-menu.tsx +219 -0
- package/dist/starter/src/components/ui/empty.tsx +85 -0
- package/dist/starter/src/components/ui/field.tsx +225 -0
- package/dist/starter/src/components/ui/form.tsx +135 -0
- package/dist/starter/src/components/ui/hover-card.tsx +36 -0
- package/dist/starter/src/components/ui/input-group.tsx +146 -0
- package/dist/starter/src/components/ui/input-otp.tsx +68 -0
- package/dist/starter/src/components/ui/input.tsx +21 -0
- package/dist/starter/src/components/ui/item.tsx +157 -0
- package/dist/starter/src/components/ui/kbd.tsx +22 -0
- package/dist/starter/src/components/ui/label.tsx +19 -0
- package/dist/starter/src/components/ui/menubar.tsx +236 -0
- package/dist/starter/src/components/ui/native-select.tsx +44 -0
- package/dist/starter/src/components/ui/navigation-menu.tsx +142 -0
- package/dist/starter/src/components/ui/pagination.tsx +98 -0
- package/dist/starter/src/components/ui/popover.tsx +52 -0
- package/dist/starter/src/components/ui/progress.tsx +24 -0
- package/dist/starter/src/components/ui/radio-group.tsx +31 -0
- package/dist/starter/src/components/ui/resizable.tsx +47 -0
- package/dist/starter/src/components/ui/scroll-area.tsx +46 -0
- package/dist/starter/src/components/ui/select.tsx +162 -0
- package/dist/starter/src/components/ui/separator.tsx +26 -0
- package/dist/starter/src/components/ui/sheet.tsx +107 -0
- package/dist/starter/src/components/ui/sidebar.tsx +674 -0
- package/dist/starter/src/components/ui/skeleton.tsx +7 -0
- package/dist/starter/src/components/ui/slider.tsx +54 -0
- package/dist/starter/src/components/ui/sonner.tsx +31 -0
- package/dist/starter/src/components/ui/spinner.tsx +9 -0
- package/dist/starter/src/components/ui/switch.tsx +33 -0
- package/dist/starter/src/components/ui/table.tsx +75 -0
- package/dist/starter/src/components/ui/tabs.tsx +69 -0
- package/dist/starter/src/components/ui/textarea.tsx +18 -0
- package/dist/starter/src/components/ui/toggle-group.tsx +79 -0
- package/dist/starter/src/components/ui/toggle.tsx +41 -0
- package/dist/starter/src/components/ui/tooltip.tsx +42 -0
- package/dist/starter/src/hooks/use-mobile.ts +19 -0
- package/dist/starter/src/index.css +93 -0
- package/dist/starter/src/lib/graphql-client.ts +5 -0
- package/dist/starter/src/lib/providers.tsx +23 -0
- package/dist/starter/src/lib/utils.ts +6 -0
- package/dist/starter/src/main.tsx +16 -0
- package/dist/starter/tsconfig.app.json +32 -0
- package/dist/starter/tsconfig.json +4 -0
- package/dist/starter/tsconfig.node.json +26 -0
- package/dist/starter/vite.config.ts +16 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +47 -0
- package/skills/design/SKILL.md +302 -0
- package/skills/design/data/cip/deliverables.csv +51 -0
- package/skills/design/data/cip/industries.csv +21 -0
- package/skills/design/data/cip/mockup-contexts.csv +21 -0
- package/skills/design/data/cip/styles.csv +21 -0
- package/skills/design/data/icon/styles.csv +16 -0
- package/skills/design/data/logo/colors.csv +56 -0
- package/skills/design/data/logo/industries.csv +56 -0
- package/skills/design/data/logo/styles.csv +56 -0
- package/skills/design/references/banner-sizes-and-styles.md +118 -0
- package/skills/design/references/cip-deliverable-guide.md +95 -0
- package/skills/design/references/cip-design.md +121 -0
- package/skills/design/references/cip-prompt-engineering.md +84 -0
- package/skills/design/references/cip-style-guide.md +68 -0
- package/skills/design/references/design-routing.md +207 -0
- package/skills/design/references/icon-design.md +122 -0
- package/skills/design/references/logo-color-psychology.md +101 -0
- package/skills/design/references/logo-design.md +92 -0
- package/skills/design/references/logo-prompt-engineering.md +158 -0
- package/skills/design/references/logo-style-guide.md +109 -0
- package/skills/design/references/slides-copywriting-formulas.md +84 -0
- package/skills/design/references/slides-create.md +4 -0
- package/skills/design/references/slides-html-template.md +295 -0
- package/skills/design/references/slides-layout-patterns.md +137 -0
- package/skills/design/references/slides-strategies.md +94 -0
- package/skills/design/references/slides.md +42 -0
- package/skills/design/references/social-photos-design.md +329 -0
- package/skills/design/scripts/cip/core.py +215 -0
- package/skills/design/scripts/cip/generate.py +484 -0
- package/skills/design/scripts/cip/render-html.py +424 -0
- package/skills/design/scripts/cip/search.py +127 -0
- package/skills/design/scripts/icon/generate.py +487 -0
- package/skills/design/scripts/logo/core.py +175 -0
- package/skills/design/scripts/logo/generate.py +362 -0
- package/skills/design/scripts/logo/search.py +114 -0
- package/skills/design-system/SKILL.md +244 -0
- package/skills/design-system/data/slide-backgrounds.csv +11 -0
- package/skills/design-system/data/slide-charts.csv +26 -0
- package/skills/design-system/data/slide-color-logic.csv +14 -0
- package/skills/design-system/data/slide-copy.csv +26 -0
- package/skills/design-system/data/slide-layout-logic.csv +16 -0
- package/skills/design-system/data/slide-layouts.csv +26 -0
- package/skills/design-system/data/slide-strategies.csv +16 -0
- package/skills/design-system/data/slide-typography.csv +15 -0
- package/skills/design-system/references/component-specs.md +236 -0
- package/skills/design-system/references/component-tokens.md +214 -0
- package/skills/design-system/references/primitive-tokens.md +203 -0
- package/skills/design-system/references/semantic-tokens.md +215 -0
- package/skills/design-system/references/states-and-variants.md +241 -0
- package/skills/design-system/references/tailwind-integration.md +251 -0
- package/skills/design-system/references/token-architecture.md +224 -0
- package/skills/design-system/scripts/embed-tokens.cjs +97 -0
- package/skills/design-system/scripts/fetch-background.py +317 -0
- package/skills/design-system/scripts/generate-slide.py +753 -0
- package/skills/design-system/scripts/generate-tokens.cjs +213 -0
- package/skills/design-system/scripts/html-token-validator.py +327 -0
- package/skills/design-system/scripts/search-slides.py +218 -0
- package/skills/design-system/scripts/slide-token-validator.py +35 -0
- package/skills/design-system/scripts/slide_search_core.py +453 -0
- package/skills/design-system/scripts/validate-tokens.cjs +251 -0
- package/skills/design-system/templates/design-tokens-starter.json +143 -0
- package/skills/design-taste-frontend/SKILL.md +79 -0
- package/skills/emil-design-engineering/SKILL.md +108 -0
- package/skills/emil-design-engineering/animations.md +266 -0
- package/skills/emil-design-engineering/component-design.md +382 -0
- package/skills/emil-design-engineering/forms-controls.md +261 -0
- package/skills/emil-design-engineering/marketing.md +160 -0
- package/skills/emil-design-engineering/performance.md +222 -0
- package/skills/emil-design-engineering/touch-accessibility.md +236 -0
- package/skills/emil-design-engineering/ui-polish.md +303 -0
- package/skills/frontend-design/SKILL.md +42 -0
- package/skills/full-output-enforcement/SKILL.md +32 -0
- package/skills/high-end-visual-design/SKILL.md +98 -0
- package/skills/react-doctor/AGENTS.md +15 -0
- package/skills/react-doctor/SKILL.md +19 -0
- package/skills/redesign-existing-projects/SKILL.md +178 -0
- package/skills/ui-styling/LICENSE.txt +202 -0
- package/skills/ui-styling/SKILL.md +324 -0
- package/skills/ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/skills/ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/skills/ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/skills/ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/skills/ui-styling/references/canvas-design-system.md +320 -0
- package/skills/ui-styling/references/shadcn-accessibility.md +471 -0
- package/skills/ui-styling/references/shadcn-components.md +424 -0
- package/skills/ui-styling/references/shadcn-theming.md +373 -0
- package/skills/ui-styling/references/tailwind-customization.md +483 -0
- package/skills/ui-styling/references/tailwind-responsive.md +382 -0
- package/skills/ui-styling/references/tailwind-utilities.md +455 -0
- package/skills/ui-styling/scripts/.coverage +0 -0
- package/skills/ui-styling/scripts/requirements.txt +17 -0
- package/skills/ui-styling/scripts/shadcn_add.py +292 -0
- package/skills/ui-styling/scripts/tailwind_config_gen.py +456 -0
- package/skills/ui-styling/scripts/tests/coverage-ui.json +1392 -0
- package/skills/ui-styling/scripts/tests/requirements.txt +3 -0
- package/skills/ui-styling/scripts/tests/test_shadcn_add.py +266 -0
- package/skills/ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
- package/skills/ui-ux-pro-max/SKILL.md +659 -0
- package/skills/ui-ux-pro-max/data/_sync_all.py +414 -0
- package/skills/ui-ux-pro-max/data/app-interface.csv +31 -0
- package/skills/ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/ui-ux-pro-max/data/colors.csv +162 -0
- package/skills/ui-ux-pro-max/data/design.csv +1776 -0
- package/skills/ui-ux-pro-max/data/draft.csv +1779 -0
- package/skills/ui-ux-pro-max/data/google-fonts.csv +1924 -0
- package/skills/ui-ux-pro-max/data/icons.csv +106 -0
- package/skills/ui-ux-pro-max/data/landing.csv +35 -0
- package/skills/ui-ux-pro-max/data/products.csv +162 -0
- package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/ui-ux-pro-max/data/styles.csv +85 -0
- package/skills/ui-ux-pro-max/data/typography.csv +74 -0
- package/skills/ui-ux-pro-max/data/ui-reasoning.csv +162 -0
- package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/skills/ui-ux-pro-max/scripts/core.py +247 -0
- package/skills/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/skills/vercel-react-best-practices/README.md +123 -0
- package/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/skills/web-animation-design/PRACTICAL-TIPS.md +304 -0
- package/skills/web-animation-design/SKILL.md +336 -0
- package/skills/web-design-guidelines/SKILL.md +39 -0
- package/starter/.env.example +1 -0
- package/starter/README.md +73 -0
- package/starter/components.json +21 -0
- package/starter/eslint.config.js +23 -0
- package/starter/index.html +13 -0
- package/starter/package-lock.json +7590 -0
- package/starter/package.json +57 -0
- package/starter/pnpm-lock.yaml +4479 -0
- package/starter/public/favicon.svg +1 -0
- package/starter/public/icons.svg +24 -0
- package/starter/src/App.tsx +7 -0
- package/starter/src/assets/hero.png +0 -0
- package/starter/src/assets/vite.svg +1 -0
- package/starter/src/components/error-boundary.tsx +38 -0
- package/starter/src/components/not-found.tsx +16 -0
- package/starter/src/components/ui/accordion.tsx +51 -0
- package/starter/src/components/ui/alert-dialog.tsx +162 -0
- package/starter/src/components/ui/alert.tsx +49 -0
- package/starter/src/components/ui/aspect-ratio.tsx +9 -0
- package/starter/src/components/ui/avatar.tsx +87 -0
- package/starter/src/components/ui/badge.tsx +40 -0
- package/starter/src/components/ui/breadcrumb.tsx +92 -0
- package/starter/src/components/ui/button-group.tsx +74 -0
- package/starter/src/components/ui/button.tsx +62 -0
- package/starter/src/components/ui/calendar.tsx +158 -0
- package/starter/src/components/ui/card.tsx +56 -0
- package/starter/src/components/ui/carousel.tsx +215 -0
- package/starter/src/components/ui/chart.tsx +296 -0
- package/starter/src/components/ui/checkbox.tsx +29 -0
- package/starter/src/components/ui/collapsible.tsx +15 -0
- package/starter/src/components/ui/combobox.tsx +266 -0
- package/starter/src/components/ui/command.tsx +136 -0
- package/starter/src/components/ui/context-menu.tsx +211 -0
- package/starter/src/components/ui/dialog.tsx +135 -0
- package/starter/src/components/ui/direction.tsx +18 -0
- package/starter/src/components/ui/drawer.tsx +106 -0
- package/starter/src/components/ui/dropdown-menu.tsx +219 -0
- package/starter/src/components/ui/empty.tsx +85 -0
- package/starter/src/components/ui/field.tsx +225 -0
- package/starter/src/components/ui/form.tsx +135 -0
- package/starter/src/components/ui/hover-card.tsx +36 -0
- package/starter/src/components/ui/input-group.tsx +146 -0
- package/starter/src/components/ui/input-otp.tsx +68 -0
- package/starter/src/components/ui/input.tsx +21 -0
- package/starter/src/components/ui/item.tsx +157 -0
- package/starter/src/components/ui/kbd.tsx +22 -0
- package/starter/src/components/ui/label.tsx +19 -0
- package/starter/src/components/ui/menubar.tsx +236 -0
- package/starter/src/components/ui/native-select.tsx +44 -0
- package/starter/src/components/ui/navigation-menu.tsx +142 -0
- package/starter/src/components/ui/pagination.tsx +98 -0
- package/starter/src/components/ui/popover.tsx +52 -0
- package/starter/src/components/ui/progress.tsx +24 -0
- package/starter/src/components/ui/radio-group.tsx +31 -0
- package/starter/src/components/ui/resizable.tsx +47 -0
- package/starter/src/components/ui/scroll-area.tsx +46 -0
- package/starter/src/components/ui/select.tsx +162 -0
- package/starter/src/components/ui/separator.tsx +26 -0
- package/starter/src/components/ui/sheet.tsx +107 -0
- package/starter/src/components/ui/sidebar.tsx +674 -0
- package/starter/src/components/ui/skeleton.tsx +7 -0
- package/starter/src/components/ui/slider.tsx +54 -0
- package/starter/src/components/ui/sonner.tsx +31 -0
- package/starter/src/components/ui/spinner.tsx +9 -0
- package/starter/src/components/ui/switch.tsx +33 -0
- package/starter/src/components/ui/table.tsx +75 -0
- package/starter/src/components/ui/tabs.tsx +69 -0
- package/starter/src/components/ui/textarea.tsx +18 -0
- package/starter/src/components/ui/toggle-group.tsx +79 -0
- package/starter/src/components/ui/toggle.tsx +41 -0
- package/starter/src/components/ui/tooltip.tsx +42 -0
- package/starter/src/hooks/use-mobile.ts +19 -0
- package/starter/src/index.css +93 -0
- package/starter/src/lib/graphql-client.ts +5 -0
- package/starter/src/lib/providers.tsx +23 -0
- package/starter/src/lib/utils.ts +6 -0
- package/starter/src/main.tsx +16 -0
- package/starter/tsconfig.app.json +32 -0
- package/starter/tsconfig.json +4 -0
- package/starter/tsconfig.node.json +26 -0
- package/starter/vite.config.ts +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate-react-app.js","sourceRoot":"","sources":["../../../src/commands/generate-react-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAQxC,wBAAgB,WAAW,IAAI,aAAa,CAM3C"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { createOpenAICompatible } from '@ai-sdk/openai-compatible';
|
|
2
|
+
function requireEnv(name) {
|
|
3
|
+
const value = process.env[name];
|
|
4
|
+
if (!value)
|
|
5
|
+
throw new Error(`Missing required environment variable: ${name}`);
|
|
6
|
+
return value;
|
|
7
|
+
}
|
|
8
|
+
export function createModel() {
|
|
9
|
+
const name = requireEnv('CUSTOM_PROVIDER_NAME');
|
|
10
|
+
const baseURL = requireEnv('CUSTOM_PROVIDER_BASE_URL');
|
|
11
|
+
const apiKey = requireEnv('CUSTOM_PROVIDER_API_KEY');
|
|
12
|
+
const model = requireEnv('CUSTOM_PROVIDER_DEFAULT_MODEL');
|
|
13
|
+
return createOpenAICompatible({ name, baseURL, apiKey }).chatModel(model);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,EAAE,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,MAAM,IAAI,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,UAAU,CAAC,yBAAyB,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,UAAU,CAAC,+BAA+B,CAAC,CAAC;IAC1D,OAAO,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type { GenerateReactAppCommand, GenerateReactAppEvents, ReactAppGeneratedEvent, ReactAppGenerationFailedEvent, } from './commands/generate-react-app.js';
|
|
2
|
+
export { commandHandler as generateReactAppCommandHandler } from './commands/generate-react-app.js';
|
|
3
|
+
export declare const COMMANDS: import("@auto-engineer/message-bus").UnifiedCommandHandler<Readonly<{
|
|
4
|
+
type: string;
|
|
5
|
+
data: Readonly<Record<string, unknown>>;
|
|
6
|
+
timestamp?: Date;
|
|
7
|
+
requestId?: string;
|
|
8
|
+
correlationId?: string;
|
|
9
|
+
}>>[];
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,GAC9B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,IAAI,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAGpG,eAAO,MAAM,QAAQ;;;;;;KAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,IAAI,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAEpG,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-narrative-context.d.ts","sourceRoot":"","sources":["../../../src/prompts/build-narrative-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+B,SAAS,EAAS,MAAM,aAAa,CAAC;AA8FjF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAmClE"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { slugify } from '../utils/slugify.js';
|
|
2
|
+
function formatClientSpecs(specs, indent = 0) {
|
|
3
|
+
const pad = ' '.repeat(indent);
|
|
4
|
+
return specs
|
|
5
|
+
.map((node) => {
|
|
6
|
+
const prefix = node.type === 'describe' ? 'describe' : '- it';
|
|
7
|
+
const line = `${pad}${prefix}: "${node.title}"`;
|
|
8
|
+
if (node.children?.length) {
|
|
9
|
+
return `${line}\n${formatClientSpecs(node.children, indent + 1)}`;
|
|
10
|
+
}
|
|
11
|
+
return line;
|
|
12
|
+
})
|
|
13
|
+
.join('\n');
|
|
14
|
+
}
|
|
15
|
+
function formatGherkinSpecs(specs) {
|
|
16
|
+
return specs
|
|
17
|
+
.map((spec) => spec.rules
|
|
18
|
+
.map((rule) => ` Rule: ${rule.name}\n` +
|
|
19
|
+
rule.examples
|
|
20
|
+
.map((ex) => ` Example: ${ex.name || '(unnamed)'}\n` +
|
|
21
|
+
ex.steps
|
|
22
|
+
.map((s) => {
|
|
23
|
+
const doc = s.docString ? `\n ${JSON.stringify(s.docString)}` : '';
|
|
24
|
+
return ` ${s.keyword} ${s.text}${doc}`;
|
|
25
|
+
})
|
|
26
|
+
.join('\n'))
|
|
27
|
+
.join('\n'))
|
|
28
|
+
.join('\n'))
|
|
29
|
+
.join('\n');
|
|
30
|
+
}
|
|
31
|
+
function toConstName(name) {
|
|
32
|
+
return name
|
|
33
|
+
.replace(/([a-z])([A-Z])/g, '$1_$2')
|
|
34
|
+
.replace(/[^a-zA-Z0-9]+/g, '_')
|
|
35
|
+
.toUpperCase();
|
|
36
|
+
}
|
|
37
|
+
function toPascalCase(name) {
|
|
38
|
+
return name.replace(/(?:^|\s+)(\w)/g, (_, c) => c.toUpperCase()).replace(/\s+/g, '');
|
|
39
|
+
}
|
|
40
|
+
function buildSliceBlock(slice, narrativeSlug) {
|
|
41
|
+
const componentName = toPascalCase(slice.name);
|
|
42
|
+
const lines = [];
|
|
43
|
+
lines.push(`### Slice: "${slice.name}" (type: ${slice.type})`);
|
|
44
|
+
if (slice.description) {
|
|
45
|
+
lines.push(`Description: ${slice.description}`);
|
|
46
|
+
}
|
|
47
|
+
lines.push(`Output file: src/features/${narrativeSlug}/${componentName}.tsx`);
|
|
48
|
+
if (slice.request) {
|
|
49
|
+
const constName = toConstName(slice.name);
|
|
50
|
+
lines.push(`GraphQL constant in queries.ts: ${constName}`);
|
|
51
|
+
lines.push(`Import: import { ${constName} } from './queries.js';`);
|
|
52
|
+
}
|
|
53
|
+
if (slice.client?.specs?.length) {
|
|
54
|
+
lines.push(``);
|
|
55
|
+
lines.push(`Required behaviors (implement ALL):`);
|
|
56
|
+
lines.push(formatClientSpecs(slice.client.specs, 1));
|
|
57
|
+
}
|
|
58
|
+
if (slice.server?.specs?.length) {
|
|
59
|
+
lines.push(``);
|
|
60
|
+
lines.push(`Gherkin examples (infer types from these):`);
|
|
61
|
+
lines.push(formatGherkinSpecs(slice.server.specs));
|
|
62
|
+
}
|
|
63
|
+
if (slice.mappings?.length) {
|
|
64
|
+
lines.push(``);
|
|
65
|
+
lines.push(`Mappings:`);
|
|
66
|
+
for (const m of slice.mappings) {
|
|
67
|
+
lines.push(` ${m.source.type}.${m.source.name}.${m.source.field} -> ${m.target.type}.${m.target.name}.${m.target.field}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return lines.join('\n');
|
|
71
|
+
}
|
|
72
|
+
export function buildNarrativeContext(narrative) {
|
|
73
|
+
const slug = slugify(narrative.name);
|
|
74
|
+
const pageName = `${toPascalCase(narrative.name)}Page`;
|
|
75
|
+
const frontendSlices = narrative.slices.filter((s) => s.type !== 'react');
|
|
76
|
+
const reactSlices = narrative.slices.filter((s) => s.type === 'react');
|
|
77
|
+
const lines = [
|
|
78
|
+
`# Narrative: "${narrative.name}"`,
|
|
79
|
+
`Feature folder: src/features/${slug}/`,
|
|
80
|
+
`GraphQL constants: src/features/${slug}/queries.ts (already generated — read it first!)`,
|
|
81
|
+
`Page file: src/pages/${pageName}.tsx`,
|
|
82
|
+
``,
|
|
83
|
+
`FIRST STEP: call read_file("src/features/${slug}/queries.ts") to see the available constants.`,
|
|
84
|
+
``,
|
|
85
|
+
`## Slices to implement:`,
|
|
86
|
+
``,
|
|
87
|
+
];
|
|
88
|
+
frontendSlices.forEach((slice) => {
|
|
89
|
+
lines.push(buildSliceBlock(slice, slug));
|
|
90
|
+
lines.push(``);
|
|
91
|
+
});
|
|
92
|
+
lines.push(`## Page: src/pages/${pageName}.tsx`);
|
|
93
|
+
lines.push(`Import all components above and compose into a responsive page layout.`);
|
|
94
|
+
if (reactSlices.length > 0) {
|
|
95
|
+
lines.push(``);
|
|
96
|
+
lines.push(`## Server-only slices (NO components):`);
|
|
97
|
+
reactSlices.forEach((s) => {
|
|
98
|
+
lines.push(` - "${s.name}": ${s.description}`);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return lines.join('\n');
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=build-narrative-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-narrative-context.js","sourceRoot":"","sources":["../../../src/prompts/build-narrative-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,SAAS,iBAAiB,CAAC,KAAuB,EAAE,MAAM,GAAG,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAoB;IAC9C,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,CAAC,KAAK;SACP,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,WAAW,IAAI,CAAC,IAAI,IAAI;QACxB,IAAI,CAAC,QAAQ;aACV,GAAG,CACF,CAAC,EAAE,EAAE,EAAE,CACL,gBAAgB,EAAE,CAAC,IAAI,IAAI,WAAW,IAAI;YAC1C,EAAE,CAAC,KAAK;iBACL,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,OAAO,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAC9C,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAChB;aACA,IAAI,CAAC,IAAI,CAAC,CAChB;SACA,IAAI,CAAC,IAAI,CAAC,CACd;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI;SACR,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,aAAqB;IAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,6BAA6B,aAAa,IAAI,aAAa,MAAM,CAAC,CAAC;IAE9E,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,sBAAsB,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAC/G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAoB;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACvD,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAa;QACtB,iBAAiB,SAAS,CAAC,IAAI,GAAG;QAClC,gCAAgC,IAAI,GAAG;QACvC,mCAAmC,IAAI,kDAAkD;QACzF,wBAAwB,QAAQ,MAAM;QACtC,EAAE;QACF,4CAA4C,IAAI,+CAA+C;QAC/F,EAAE;QACF,yBAAyB;QACzB,EAAE;KACH,CAAC;IAEF,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,MAAM,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAErF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const LANDING_PAGE_SYSTEM_PROMPT = "You are a principal UI architect building a landing page. Use write_landing_page to create the landing page component.\n\n## YOUR ONLY JOB\nWrite src/components/landing-page.tsx \u2014 a premium, tasteful landing page for this application.\n\n## DESIGN PRINCIPLES \u2014 NON-NEGOTIABLE\n\n### Typography\n- Use extreme typographic contrast. Headlines should be large (text-4xl to text-6xl), bold, with tight tracking (tracking-tighter) and tight line-height (leading-[1.08]).\n- Body text: text-base or text-lg, text-muted-foreground, leading-relaxed, max-w-[50ch] or max-w-[65ch].\n- Section labels: text-xs uppercase tracking-[0.2em] text-muted-foreground font-medium \u2014 always precede section headings with these.\n- Never use Inter or Roboto. The theme already sets the right font.\n\n### Color & Surfaces\n- Use the theme's primary color sparingly \u2014 only for CTAs, icon accents, small highlights.\n- Cards and containers: subtle border (border border-border/60), gentle bg (bg-card or bg-muted/30). No heavy shadows.\n- Tint shadows to match the background hue, never use pure black shadows.\n\n### Layout\n- Hero: split-screen layout using CSS Grid (grid-cols-1 lg:grid-cols-2). The hero MUST use min-h-[80dvh] or min-h-[85dvh].\n- Hero left side: headline, bullet points with check-mark icons showing value propositions, CTA buttons.\n- Hero right side: a visually striking composition using icons, gradients, or abstract shapes that represent the domain.\n- Feature showcase: alternating zig-zag layout. Use grid-cols-1 md:grid-cols-2 for each feature block.\n- Massive whitespace between sections: py-24 to py-32. Let the design breathe.\n- A value strip between hero and features: border-y, bg-muted/30, showing compact feature summaries with icons.\n- A bottom CTA section: centered, simple, with heading + button.\n- Container: max-w-6xl mx-auto px-6.\n- Never use 3-column card grids. Use 2 columns or zig-zag alternating.\n- Never use h-screen. Always min-h-[Xdvh].\n\n### Components & Interactions\n- CTA buttons: h-12 rounded-xl px-8 font-semibold. Use the Button component from @/components/ui/button.\n- Include a nested arrow icon inside CTAs: a small circular span (inline-flex h-6 w-6 items-center justify-center rounded-full bg-primary-foreground/15) containing an ArrowRight icon.\n- Hover states on feature links: text-primary with gap transition.\n- Eyebrow tags before feature titles: small pill (rounded-full bg-primary/8 px-3 py-1) with icon + uppercase label.\n\n### Navigation \u2014 CRITICAL\n- Every CTA button and feature card MUST link to the correct route using <Link to=\"/route\"> from react-router-dom.\n- The APPLICATION CONTEXT below lists each feature with its route. Use those exact paths.\n- Hero CTA buttons: wrap in <Link> or use <Button asChild><Link to=\"/route\">...</Link></Button>.\n- Feature cards: wrap each card in <Link to=\"/route\"> so clicking anywhere navigates.\n- NEVER use plain <button> or <a href=\"#\"> \u2014 always use <Link to=\"...\">.\n\n### Content\n- Write copy like a real product marketer for THIS specific domain. Be specific, not generic.\n- Hero headline: bold, domain-specific, 3-6 words. Not \"Welcome to X\".\n- Value propositions as bullet points with Check icons in small primary circles.\n- Feature descriptions: specific to what the feature does. 1-2 sentences.\n- BANNED phrases: \"Welcome to\", \"Get Started Today\", \"Elevate\", \"Seamless\", \"Unleash\", \"Next-Gen\", \"Game-changer\".\n- NO emojis anywhere.\n\n## AVAILABLE IMPORTS\n- react-router-dom: Link\n- lucide-react: any icon (ArrowRight, Check, and domain-relevant icons)\n- @/components/ui/button: Button\n- @/components/ui/card: Card, CardHeader, CardTitle, CardContent, CardDescription\n- @/components/ui/badge: Badge\n- @/lib/utils: cn()\n\n## OUTPUT\nCall write_landing_page with the COMPLETE file content. No partial code, no placeholders.\nThen call exit_loop.";
|
|
2
|
+
//# sourceMappingURL=landing-page-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"landing-page-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/landing-page-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,01HA6DlB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export const LANDING_PAGE_SYSTEM_PROMPT = `You are a principal UI architect building a landing page. Use write_landing_page to create the landing page component.
|
|
2
|
+
|
|
3
|
+
## YOUR ONLY JOB
|
|
4
|
+
Write src/components/landing-page.tsx — a premium, tasteful landing page for this application.
|
|
5
|
+
|
|
6
|
+
## DESIGN PRINCIPLES — NON-NEGOTIABLE
|
|
7
|
+
|
|
8
|
+
### Typography
|
|
9
|
+
- Use extreme typographic contrast. Headlines should be large (text-4xl to text-6xl), bold, with tight tracking (tracking-tighter) and tight line-height (leading-[1.08]).
|
|
10
|
+
- Body text: text-base or text-lg, text-muted-foreground, leading-relaxed, max-w-[50ch] or max-w-[65ch].
|
|
11
|
+
- Section labels: text-xs uppercase tracking-[0.2em] text-muted-foreground font-medium — always precede section headings with these.
|
|
12
|
+
- Never use Inter or Roboto. The theme already sets the right font.
|
|
13
|
+
|
|
14
|
+
### Color & Surfaces
|
|
15
|
+
- Use the theme's primary color sparingly — only for CTAs, icon accents, small highlights.
|
|
16
|
+
- Cards and containers: subtle border (border border-border/60), gentle bg (bg-card or bg-muted/30). No heavy shadows.
|
|
17
|
+
- Tint shadows to match the background hue, never use pure black shadows.
|
|
18
|
+
|
|
19
|
+
### Layout
|
|
20
|
+
- Hero: split-screen layout using CSS Grid (grid-cols-1 lg:grid-cols-2). The hero MUST use min-h-[80dvh] or min-h-[85dvh].
|
|
21
|
+
- Hero left side: headline, bullet points with check-mark icons showing value propositions, CTA buttons.
|
|
22
|
+
- Hero right side: a visually striking composition using icons, gradients, or abstract shapes that represent the domain.
|
|
23
|
+
- Feature showcase: alternating zig-zag layout. Use grid-cols-1 md:grid-cols-2 for each feature block.
|
|
24
|
+
- Massive whitespace between sections: py-24 to py-32. Let the design breathe.
|
|
25
|
+
- A value strip between hero and features: border-y, bg-muted/30, showing compact feature summaries with icons.
|
|
26
|
+
- A bottom CTA section: centered, simple, with heading + button.
|
|
27
|
+
- Container: max-w-6xl mx-auto px-6.
|
|
28
|
+
- Never use 3-column card grids. Use 2 columns or zig-zag alternating.
|
|
29
|
+
- Never use h-screen. Always min-h-[Xdvh].
|
|
30
|
+
|
|
31
|
+
### Components & Interactions
|
|
32
|
+
- CTA buttons: h-12 rounded-xl px-8 font-semibold. Use the Button component from @/components/ui/button.
|
|
33
|
+
- Include a nested arrow icon inside CTAs: a small circular span (inline-flex h-6 w-6 items-center justify-center rounded-full bg-primary-foreground/15) containing an ArrowRight icon.
|
|
34
|
+
- Hover states on feature links: text-primary with gap transition.
|
|
35
|
+
- Eyebrow tags before feature titles: small pill (rounded-full bg-primary/8 px-3 py-1) with icon + uppercase label.
|
|
36
|
+
|
|
37
|
+
### Navigation — CRITICAL
|
|
38
|
+
- Every CTA button and feature card MUST link to the correct route using <Link to="/route"> from react-router-dom.
|
|
39
|
+
- The APPLICATION CONTEXT below lists each feature with its route. Use those exact paths.
|
|
40
|
+
- Hero CTA buttons: wrap in <Link> or use <Button asChild><Link to="/route">...</Link></Button>.
|
|
41
|
+
- Feature cards: wrap each card in <Link to="/route"> so clicking anywhere navigates.
|
|
42
|
+
- NEVER use plain <button> or <a href="#"> — always use <Link to="...">.
|
|
43
|
+
|
|
44
|
+
### Content
|
|
45
|
+
- Write copy like a real product marketer for THIS specific domain. Be specific, not generic.
|
|
46
|
+
- Hero headline: bold, domain-specific, 3-6 words. Not "Welcome to X".
|
|
47
|
+
- Value propositions as bullet points with Check icons in small primary circles.
|
|
48
|
+
- Feature descriptions: specific to what the feature does. 1-2 sentences.
|
|
49
|
+
- BANNED phrases: "Welcome to", "Get Started Today", "Elevate", "Seamless", "Unleash", "Next-Gen", "Game-changer".
|
|
50
|
+
- NO emojis anywhere.
|
|
51
|
+
|
|
52
|
+
## AVAILABLE IMPORTS
|
|
53
|
+
- react-router-dom: Link
|
|
54
|
+
- lucide-react: any icon (ArrowRight, Check, and domain-relevant icons)
|
|
55
|
+
- @/components/ui/button: Button
|
|
56
|
+
- @/components/ui/card: Card, CardHeader, CardTitle, CardContent, CardDescription
|
|
57
|
+
- @/components/ui/badge: Badge
|
|
58
|
+
- @/lib/utils: cn()
|
|
59
|
+
|
|
60
|
+
## OUTPUT
|
|
61
|
+
Call write_landing_page with the COMPLETE file content. No partial code, no placeholders.
|
|
62
|
+
Then call exit_loop.`;
|
|
63
|
+
//# sourceMappingURL=landing-page-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"landing-page-system.js","sourceRoot":"","sources":["../../../src/prompts/landing-page-system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6DrB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const NARRATIVE_SYSTEM_PROMPT = "You are a senior design engineer building a React feature from a domain model narrative. Use write_file to create every file.\n\n## MANDATORY SKILL COMPLIANCE\nYou have ACTIVE SKILLS injected below. They are hard requirements, not suggestions.\nEvery file you generate MUST comply. Violations will be caught by the validator and rejected.\n\nKey rules you MUST follow:\n- NEVER use emojis in code, markup, or text content \u2014 use lucide-react icons.\n- NEVER output partial code \u2014 every file must be complete and runnable with zero placeholders.\n- Do NOT add page-level animations or framer-motion \u2014 keep pages static and fast.\n- shadcn/ui components must be customized \u2014 never use default unstyled state.\n\n## TECHNICAL CONSTRAINTS\n- queries.ts ALREADY exists with GraphQL constants \u2014 import from \"./queries\", NEVER define your own.\n- ALWAYS use graphqlClient from \"@/lib/graphql-client\" with @tanstack/react-query.\n- NEVER import { request } from \"graphql-request\" directly \u2014 ALWAYS use the shared graphqlClient instance.\n CORRECT: import { graphqlClient } from \"@/lib/graphql-client\"; graphqlClient.request(QUERY, vars)\n WRONG: import { request } from \"graphql-request\"; request(\"/graphql\", QUERY, vars)\n- Use shadcn/ui components from \"@/components/ui/...\" (customized) \u2014 never raw HTML elements.\n- Use react-hook-form + zod when you need forms.\n- Tailwind CSS only \u2014 no .css files.\n- Use lucide-react for icons.\n- Use toast from \"sonner\" for feedback.\n- Skip \"react\" type slices \u2014 they are server-only.\n- Don't write App.tsx, main.tsx, index.css, anything in src/lib/ or src/components/ui/.\n- BEFORE generating, call read_file on queries.ts to see the available constants.\n\n## FILE STRUCTURE\n- Feature components: src/features/<narrative-slug>/\n- REQUIRED: src/features/<narrative-slug>/index.ts \u2014 must have a default export of the main page/view component.\n\n## DESIGN QUALITY \u2014 MANDATORY\nThe output must look like a premium SaaS product. Be creative with layouts \u2014 don't default to the same structure every time.\n\nTypography:\n- Page titles: text-3xl font-bold tracking-tight\n- Section labels: text-xs uppercase tracking-wider text-muted-foreground\n- Numbers/stats: font-mono\n\nSurfaces & Interactions:\n- Cards: rounded-2xl border border-border/60 bg-card \u2014 customize, don't use defaults\n- Inputs: h-11 rounded-xl\n- Primary buttons: h-12 rounded-xl font-semibold\n- Hover states and transitions on interactive elements\n\nStates (ALL REQUIRED for every data-fetching component):\n- Loading: <Skeleton /> components matching the expected layout shape\n- Empty: large muted lucide-react icon (size={48}), heading, description\n- Error: text-destructive with a retry button\n\nRead the narrative context below, decide what components are needed, and generate them all.";
|
|
2
|
+
//# sourceMappingURL=narrative-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/narrative-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,k1FAkDwD,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export const NARRATIVE_SYSTEM_PROMPT = `You are a senior design engineer building a React feature from a domain model narrative. Use write_file to create every file.
|
|
2
|
+
|
|
3
|
+
## MANDATORY SKILL COMPLIANCE
|
|
4
|
+
You have ACTIVE SKILLS injected below. They are hard requirements, not suggestions.
|
|
5
|
+
Every file you generate MUST comply. Violations will be caught by the validator and rejected.
|
|
6
|
+
|
|
7
|
+
Key rules you MUST follow:
|
|
8
|
+
- NEVER use emojis in code, markup, or text content — use lucide-react icons.
|
|
9
|
+
- NEVER output partial code — every file must be complete and runnable with zero placeholders.
|
|
10
|
+
- Do NOT add page-level animations or framer-motion — keep pages static and fast.
|
|
11
|
+
- shadcn/ui components must be customized — never use default unstyled state.
|
|
12
|
+
|
|
13
|
+
## TECHNICAL CONSTRAINTS
|
|
14
|
+
- queries.ts ALREADY exists with GraphQL constants — import from "./queries", NEVER define your own.
|
|
15
|
+
- ALWAYS use graphqlClient from "@/lib/graphql-client" with @tanstack/react-query.
|
|
16
|
+
- NEVER import { request } from "graphql-request" directly — ALWAYS use the shared graphqlClient instance.
|
|
17
|
+
CORRECT: import { graphqlClient } from "@/lib/graphql-client"; graphqlClient.request(QUERY, vars)
|
|
18
|
+
WRONG: import { request } from "graphql-request"; request("/graphql", QUERY, vars)
|
|
19
|
+
- Use shadcn/ui components from "@/components/ui/..." (customized) — never raw HTML elements.
|
|
20
|
+
- Use react-hook-form + zod when you need forms.
|
|
21
|
+
- Tailwind CSS only — no .css files.
|
|
22
|
+
- Use lucide-react for icons.
|
|
23
|
+
- Use toast from "sonner" for feedback.
|
|
24
|
+
- Skip "react" type slices — they are server-only.
|
|
25
|
+
- Don't write App.tsx, main.tsx, index.css, anything in src/lib/ or src/components/ui/.
|
|
26
|
+
- BEFORE generating, call read_file on queries.ts to see the available constants.
|
|
27
|
+
|
|
28
|
+
## FILE STRUCTURE
|
|
29
|
+
- Feature components: src/features/<narrative-slug>/
|
|
30
|
+
- REQUIRED: src/features/<narrative-slug>/index.ts — must have a default export of the main page/view component.
|
|
31
|
+
|
|
32
|
+
## DESIGN QUALITY — MANDATORY
|
|
33
|
+
The output must look like a premium SaaS product. Be creative with layouts — don't default to the same structure every time.
|
|
34
|
+
|
|
35
|
+
Typography:
|
|
36
|
+
- Page titles: text-3xl font-bold tracking-tight
|
|
37
|
+
- Section labels: text-xs uppercase tracking-wider text-muted-foreground
|
|
38
|
+
- Numbers/stats: font-mono
|
|
39
|
+
|
|
40
|
+
Surfaces & Interactions:
|
|
41
|
+
- Cards: rounded-2xl border border-border/60 bg-card — customize, don't use defaults
|
|
42
|
+
- Inputs: h-11 rounded-xl
|
|
43
|
+
- Primary buttons: h-12 rounded-xl font-semibold
|
|
44
|
+
- Hover states and transitions on interactive elements
|
|
45
|
+
|
|
46
|
+
States (ALL REQUIRED for every data-fetching component):
|
|
47
|
+
- Loading: <Skeleton /> components matching the expected layout shape
|
|
48
|
+
- Empty: large muted lucide-react icon (size={48}), heading, description
|
|
49
|
+
- Error: text-destructive with a retry button
|
|
50
|
+
|
|
51
|
+
Read the narrative context below, decide what components are needed, and generate them all.`;
|
|
52
|
+
//# sourceMappingURL=narrative-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"narrative-system.js","sourceRoot":"","sources":["../../../src/prompts/narrative-system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4FAkDqD,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const ROUTER_SYSTEM_PROMPT = "You are a senior design engineer. Create the app shell (App.tsx) that wires up routing and navigation for the generated features. Use write_file to create it.\n\n## MANDATORY SKILL COMPLIANCE\nYou have ACTIVE SKILLS injected below. They are hard requirements, not suggestions. Violations will be rejected.\n\n## PROCESS\n1. Call list_files to see what feature components have been generated.\n2. Call read_file on each feature's index.ts to find their exports.\n3. Call read_file on src/components/landing-page.tsx to see the landing page (already generated).\n4. Write src/App.tsx \u2014 the router shell with polished navigation.\n\n## APP.TSX\n- Wrap in <BrowserRouter> from react-router-dom (main.tsx does NOT provide a router).\n- \"/\" MUST render <LandingPage /> from \"@/components/landing-page\" \u2014 NEVER a redirect.\n- Navigation: design a TOP header (NOT a sidebar) that fits this app's identity. Include app name with a relevant icon, links to features.\n Use: sticky top-0 z-10 bg-background/80 backdrop-blur-sm border-b\n- Do NOT use a sidebar layout. Use a horizontal top navigation bar.\n- Each feature gets its own route.\n- Catch-all 404 using <NotFound /> from \"@/components/not-found\".\n- Wrap content in QueryClientProvider from @tanstack/react-query.\n- Export default function App.\n\n## AVAILABLE IMPORTS\n- react-router-dom: BrowserRouter, Routes, Route, Link, NavLink\n- lucide-react: any icon\n- @/components/ui/*: Button, Card, CardHeader, CardTitle, CardContent, CardDescription, Badge, Separator\n- @/lib/utils: cn() helper\n- @/components/not-found: NotFound\n- @/components/landing-page: default export LandingPage\n- @tanstack/react-query: QueryClient, QueryClientProvider\n\nDO NOT modify main.tsx, landing-page.tsx, or any feature files. You may ONLY write src/App.tsx.\n\nAfter writing App.tsx, call exit_loop to finish.";
|
|
2
|
+
//# sourceMappingURL=router-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/router-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,40DAiCgB,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export const ROUTER_SYSTEM_PROMPT = `You are a senior design engineer. Create the app shell (App.tsx) that wires up routing and navigation for the generated features. Use write_file to create it.
|
|
2
|
+
|
|
3
|
+
## MANDATORY SKILL COMPLIANCE
|
|
4
|
+
You have ACTIVE SKILLS injected below. They are hard requirements, not suggestions. Violations will be rejected.
|
|
5
|
+
|
|
6
|
+
## PROCESS
|
|
7
|
+
1. Call list_files to see what feature components have been generated.
|
|
8
|
+
2. Call read_file on each feature's index.ts to find their exports.
|
|
9
|
+
3. Call read_file on src/components/landing-page.tsx to see the landing page (already generated).
|
|
10
|
+
4. Write src/App.tsx — the router shell with polished navigation.
|
|
11
|
+
|
|
12
|
+
## APP.TSX
|
|
13
|
+
- Wrap in <BrowserRouter> from react-router-dom (main.tsx does NOT provide a router).
|
|
14
|
+
- "/" MUST render <LandingPage /> from "@/components/landing-page" — NEVER a redirect.
|
|
15
|
+
- Navigation: design a TOP header (NOT a sidebar) that fits this app's identity. Include app name with a relevant icon, links to features.
|
|
16
|
+
Use: sticky top-0 z-10 bg-background/80 backdrop-blur-sm border-b
|
|
17
|
+
- Do NOT use a sidebar layout. Use a horizontal top navigation bar.
|
|
18
|
+
- Each feature gets its own route.
|
|
19
|
+
- Catch-all 404 using <NotFound /> from "@/components/not-found".
|
|
20
|
+
- Wrap content in QueryClientProvider from @tanstack/react-query.
|
|
21
|
+
- Export default function App.
|
|
22
|
+
|
|
23
|
+
## AVAILABLE IMPORTS
|
|
24
|
+
- react-router-dom: BrowserRouter, Routes, Route, Link, NavLink
|
|
25
|
+
- lucide-react: any icon
|
|
26
|
+
- @/components/ui/*: Button, Card, CardHeader, CardTitle, CardContent, CardDescription, Badge, Separator
|
|
27
|
+
- @/lib/utils: cn() helper
|
|
28
|
+
- @/components/not-found: NotFound
|
|
29
|
+
- @/components/landing-page: default export LandingPage
|
|
30
|
+
- @tanstack/react-query: QueryClient, QueryClientProvider
|
|
31
|
+
|
|
32
|
+
DO NOT modify main.tsx, landing-page.tsx, or any feature files. You may ONLY write src/App.tsx.
|
|
33
|
+
|
|
34
|
+
After writing App.tsx, call exit_loop to finish.`;
|
|
35
|
+
//# sourceMappingURL=router-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-system.js","sourceRoot":"","sources":["../../../src/prompts/router-system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iDAiCa,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const THEME_SYSTEM_PROMPT = "Your ONLY job is to call write_file(\"src/index.css\", ...) with a themed CSS file. Do NOT create any .tsx files. Do NOT create layout components. ONLY write src/index.css.\n\n## MANDATORY SKILL COMPLIANCE\nYou have an ACTIVE design skill injected below. It is NOT a suggestion \u2014 it is a hard requirement.\nKey rules from the skill that apply to theming:\n- NEVER use Inter font. The font MUST be Outfit (already in the template below).\n- Colors must have saturation < 80%. No neon glows, no oversaturated accents.\n- Use neutral bases (Zinc/Slate) with a singular domain-appropriate accent.\n\n## PROCESS\nStep 1: Read the narrative context to understand the app domain.\nStep 2: Pick a primary hue angle (0-360) that fits the domain (NOT teal/green).\nStep 3: Copy the EXACT template below, replace HUE placeholders with your chosen hue, and call write_file.\n\n## CRITICAL: COPY THIS EXACT TEMPLATE VERBATIM\nDo NOT improvise the CSS structure. Do NOT write your own version. Do NOT use shadcn/ui's default CSS. Do NOT add @source directives.\nCopy this template CHARACTER FOR CHARACTER and only replace the 5 placeholder values: HUE, CHART2HUE, CHART3HUE, CHART4HUE, CHART5HUE.\nThe check_theme tool will REJECT any CSS that deviates from this template structure:\n\nwrite_file(\"src/index.css\", `@import \"tailwindcss\";\n@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');\n\n@custom-variant dark (&:is(.dark *));\n\n@theme inline {\n --color-background: var(--background);\n --color-foreground: var(--foreground);\n --color-card: var(--card);\n --color-card-foreground: var(--card-foreground);\n --color-popover: var(--popover);\n --color-popover-foreground: var(--popover-foreground);\n --color-primary: var(--primary);\n --color-primary-foreground: var(--primary-foreground);\n --color-secondary: var(--secondary);\n --color-secondary-foreground: var(--secondary-foreground);\n --color-muted: var(--muted);\n --color-muted-foreground: var(--muted-foreground);\n --color-accent: var(--accent);\n --color-accent-foreground: var(--accent-foreground);\n --color-destructive: var(--destructive);\n --color-destructive-foreground: var(--destructive-foreground);\n --color-border: var(--border);\n --color-input: var(--input);\n --color-ring: var(--ring);\n --color-chart-1: var(--chart-1);\n --color-chart-2: var(--chart-2);\n --color-chart-3: var(--chart-3);\n --color-chart-4: var(--chart-4);\n --color-chart-5: var(--chart-5);\n --color-sidebar: var(--sidebar);\n --color-sidebar-foreground: var(--sidebar-foreground);\n --color-sidebar-primary: var(--sidebar-primary);\n --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);\n --color-sidebar-accent: var(--sidebar-accent);\n --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);\n --color-sidebar-border: var(--sidebar-border);\n --color-sidebar-ring: var(--sidebar-ring);\n --radius-sm: calc(var(--radius) - 4px);\n --radius-md: calc(var(--radius) - 2px);\n --radius-lg: var(--radius);\n --radius-xl: calc(var(--radius) + 4px);\n --font-sans: 'Outfit', system-ui, sans-serif;\n --font-mono: 'JetBrains Mono', ui-monospace, monospace;\n}\n\n:root {\n --background: oklch(0.98 0.005 HUE);\n --foreground: oklch(0.14 0.02 HUE);\n --card: oklch(1 0 0);\n --card-foreground: oklch(0.14 0.02 HUE);\n --popover: oklch(1 0 0);\n --popover-foreground: oklch(0.14 0.02 HUE);\n --primary: oklch(0.55 0.2 HUE);\n --primary-foreground: oklch(0.98 0 0);\n --secondary: oklch(0.95 0.02 HUE);\n --secondary-foreground: oklch(0.35 0.1 HUE);\n --muted: oklch(0.96 0.005 HUE);\n --muted-foreground: oklch(0.50 0.02 HUE);\n --accent: oklch(0.95 0.02 HUE);\n --accent-foreground: oklch(0.35 0.1 HUE);\n --destructive: oklch(0.55 0.22 28);\n --destructive-foreground: oklch(0.55 0.22 28);\n --border: oklch(0.91 0.01 HUE);\n --input: oklch(0.91 0.01 HUE);\n --ring: oklch(0.55 0.2 HUE);\n --chart-1: oklch(0.55 0.2 HUE);\n --chart-2: oklch(0.60 0.18 CHART2HUE);\n --chart-3: oklch(0.65 0.15 CHART3HUE);\n --chart-4: oklch(0.55 0.18 CHART4HUE);\n --chart-5: oklch(0.70 0.14 CHART5HUE);\n --radius: 0.75rem;\n --sidebar: oklch(0.98 0.005 HUE);\n --sidebar-foreground: oklch(0.14 0.02 HUE);\n --sidebar-primary: oklch(0.55 0.2 HUE);\n --sidebar-primary-foreground: oklch(0.98 0 0);\n --sidebar-accent: oklch(0.95 0.02 HUE);\n --sidebar-accent-foreground: oklch(0.35 0.1 HUE);\n --sidebar-border: oklch(0.91 0.01 HUE);\n --sidebar-ring: oklch(0.55 0.2 HUE);\n}\n\n@layer base {\n * { @apply border-border; }\n body {\n @apply bg-background text-foreground antialiased;\n margin: 0;\n font-family: 'Outfit', system-ui, sans-serif;\n font-feature-settings: \"cv02\", \"cv03\", \"cv04\", \"cv11\";\n }\n}\n`)\n\n## HUE SELECTION GUIDE\nReplace HUE with a single oklch hue angle (0-360) that fits the app's domain. Pick a color that feels native to the product \u2014 consider what colors users would associate with this type of application. Avoid default teal/green (hue ~170). Be intentional.\n\nReplace CHART2HUE through CHART5HUE with varied hues for a harmonious chart palette (spread them 40-60 degrees apart from the primary HUE).\n\n## HARD RULES\n- ONLY replace HUE, CHART2HUE, CHART3HUE, CHART4HUE, CHART5HUE values. Do NOT change the template structure.\n- Do NOT create any other files. Only write src/index.css.\n- Do NOT add @plugin directives \u2014 no tailwindcss-animate or other plugins.\n- Do NOT use @tailwind directives \u2014 Tailwind v4 uses @import \"tailwindcss\" instead.\n- Do NOT use Inter font \u2014 the template already uses Outfit which is correct.\n- Do NOT remove the Google Fonts @import \u2014 it is required for Outfit and JetBrains Mono.\n- The @theme MUST include the \"inline\" keyword: @theme inline { ... }";
|
|
2
|
+
//# sourceMappingURL=theme-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/theme-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,4wLA4HsC,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
export const THEME_SYSTEM_PROMPT = `Your ONLY job is to call write_file("src/index.css", ...) with a themed CSS file. Do NOT create any .tsx files. Do NOT create layout components. ONLY write src/index.css.
|
|
2
|
+
|
|
3
|
+
## MANDATORY SKILL COMPLIANCE
|
|
4
|
+
You have an ACTIVE design skill injected below. It is NOT a suggestion — it is a hard requirement.
|
|
5
|
+
Key rules from the skill that apply to theming:
|
|
6
|
+
- NEVER use Inter font. The font MUST be Outfit (already in the template below).
|
|
7
|
+
- Colors must have saturation < 80%. No neon glows, no oversaturated accents.
|
|
8
|
+
- Use neutral bases (Zinc/Slate) with a singular domain-appropriate accent.
|
|
9
|
+
|
|
10
|
+
## PROCESS
|
|
11
|
+
Step 1: Read the narrative context to understand the app domain.
|
|
12
|
+
Step 2: Pick a primary hue angle (0-360) that fits the domain (NOT teal/green).
|
|
13
|
+
Step 3: Copy the EXACT template below, replace HUE placeholders with your chosen hue, and call write_file.
|
|
14
|
+
|
|
15
|
+
## CRITICAL: COPY THIS EXACT TEMPLATE VERBATIM
|
|
16
|
+
Do NOT improvise the CSS structure. Do NOT write your own version. Do NOT use shadcn/ui's default CSS. Do NOT add @source directives.
|
|
17
|
+
Copy this template CHARACTER FOR CHARACTER and only replace the 5 placeholder values: HUE, CHART2HUE, CHART3HUE, CHART4HUE, CHART5HUE.
|
|
18
|
+
The check_theme tool will REJECT any CSS that deviates from this template structure:
|
|
19
|
+
|
|
20
|
+
write_file("src/index.css", \`@import "tailwindcss";
|
|
21
|
+
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');
|
|
22
|
+
|
|
23
|
+
@custom-variant dark (&:is(.dark *));
|
|
24
|
+
|
|
25
|
+
@theme inline {
|
|
26
|
+
--color-background: var(--background);
|
|
27
|
+
--color-foreground: var(--foreground);
|
|
28
|
+
--color-card: var(--card);
|
|
29
|
+
--color-card-foreground: var(--card-foreground);
|
|
30
|
+
--color-popover: var(--popover);
|
|
31
|
+
--color-popover-foreground: var(--popover-foreground);
|
|
32
|
+
--color-primary: var(--primary);
|
|
33
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
34
|
+
--color-secondary: var(--secondary);
|
|
35
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
36
|
+
--color-muted: var(--muted);
|
|
37
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
38
|
+
--color-accent: var(--accent);
|
|
39
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
40
|
+
--color-destructive: var(--destructive);
|
|
41
|
+
--color-destructive-foreground: var(--destructive-foreground);
|
|
42
|
+
--color-border: var(--border);
|
|
43
|
+
--color-input: var(--input);
|
|
44
|
+
--color-ring: var(--ring);
|
|
45
|
+
--color-chart-1: var(--chart-1);
|
|
46
|
+
--color-chart-2: var(--chart-2);
|
|
47
|
+
--color-chart-3: var(--chart-3);
|
|
48
|
+
--color-chart-4: var(--chart-4);
|
|
49
|
+
--color-chart-5: var(--chart-5);
|
|
50
|
+
--color-sidebar: var(--sidebar);
|
|
51
|
+
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
52
|
+
--color-sidebar-primary: var(--sidebar-primary);
|
|
53
|
+
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
54
|
+
--color-sidebar-accent: var(--sidebar-accent);
|
|
55
|
+
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
56
|
+
--color-sidebar-border: var(--sidebar-border);
|
|
57
|
+
--color-sidebar-ring: var(--sidebar-ring);
|
|
58
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
59
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
60
|
+
--radius-lg: var(--radius);
|
|
61
|
+
--radius-xl: calc(var(--radius) + 4px);
|
|
62
|
+
--font-sans: 'Outfit', system-ui, sans-serif;
|
|
63
|
+
--font-mono: 'JetBrains Mono', ui-monospace, monospace;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
:root {
|
|
67
|
+
--background: oklch(0.98 0.005 HUE);
|
|
68
|
+
--foreground: oklch(0.14 0.02 HUE);
|
|
69
|
+
--card: oklch(1 0 0);
|
|
70
|
+
--card-foreground: oklch(0.14 0.02 HUE);
|
|
71
|
+
--popover: oklch(1 0 0);
|
|
72
|
+
--popover-foreground: oklch(0.14 0.02 HUE);
|
|
73
|
+
--primary: oklch(0.55 0.2 HUE);
|
|
74
|
+
--primary-foreground: oklch(0.98 0 0);
|
|
75
|
+
--secondary: oklch(0.95 0.02 HUE);
|
|
76
|
+
--secondary-foreground: oklch(0.35 0.1 HUE);
|
|
77
|
+
--muted: oklch(0.96 0.005 HUE);
|
|
78
|
+
--muted-foreground: oklch(0.50 0.02 HUE);
|
|
79
|
+
--accent: oklch(0.95 0.02 HUE);
|
|
80
|
+
--accent-foreground: oklch(0.35 0.1 HUE);
|
|
81
|
+
--destructive: oklch(0.55 0.22 28);
|
|
82
|
+
--destructive-foreground: oklch(0.55 0.22 28);
|
|
83
|
+
--border: oklch(0.91 0.01 HUE);
|
|
84
|
+
--input: oklch(0.91 0.01 HUE);
|
|
85
|
+
--ring: oklch(0.55 0.2 HUE);
|
|
86
|
+
--chart-1: oklch(0.55 0.2 HUE);
|
|
87
|
+
--chart-2: oklch(0.60 0.18 CHART2HUE);
|
|
88
|
+
--chart-3: oklch(0.65 0.15 CHART3HUE);
|
|
89
|
+
--chart-4: oklch(0.55 0.18 CHART4HUE);
|
|
90
|
+
--chart-5: oklch(0.70 0.14 CHART5HUE);
|
|
91
|
+
--radius: 0.75rem;
|
|
92
|
+
--sidebar: oklch(0.98 0.005 HUE);
|
|
93
|
+
--sidebar-foreground: oklch(0.14 0.02 HUE);
|
|
94
|
+
--sidebar-primary: oklch(0.55 0.2 HUE);
|
|
95
|
+
--sidebar-primary-foreground: oklch(0.98 0 0);
|
|
96
|
+
--sidebar-accent: oklch(0.95 0.02 HUE);
|
|
97
|
+
--sidebar-accent-foreground: oklch(0.35 0.1 HUE);
|
|
98
|
+
--sidebar-border: oklch(0.91 0.01 HUE);
|
|
99
|
+
--sidebar-ring: oklch(0.55 0.2 HUE);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@layer base {
|
|
103
|
+
* { @apply border-border; }
|
|
104
|
+
body {
|
|
105
|
+
@apply bg-background text-foreground antialiased;
|
|
106
|
+
margin: 0;
|
|
107
|
+
font-family: 'Outfit', system-ui, sans-serif;
|
|
108
|
+
font-feature-settings: "cv02", "cv03", "cv04", "cv11";
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
\`)
|
|
112
|
+
|
|
113
|
+
## HUE SELECTION GUIDE
|
|
114
|
+
Replace HUE with a single oklch hue angle (0-360) that fits the app's domain. Pick a color that feels native to the product — consider what colors users would associate with this type of application. Avoid default teal/green (hue ~170). Be intentional.
|
|
115
|
+
|
|
116
|
+
Replace CHART2HUE through CHART5HUE with varied hues for a harmonious chart palette (spread them 40-60 degrees apart from the primary HUE).
|
|
117
|
+
|
|
118
|
+
## HARD RULES
|
|
119
|
+
- ONLY replace HUE, CHART2HUE, CHART3HUE, CHART4HUE, CHART5HUE values. Do NOT change the template structure.
|
|
120
|
+
- Do NOT create any other files. Only write src/index.css.
|
|
121
|
+
- Do NOT add @plugin directives — no tailwindcss-animate or other plugins.
|
|
122
|
+
- Do NOT use @tailwind directives — Tailwind v4 uses @import "tailwindcss" instead.
|
|
123
|
+
- Do NOT use Inter font — the template already uses Outfit which is correct.
|
|
124
|
+
- Do NOT remove the Google Fonts @import — it is required for Outfit and JetBrains Mono.
|
|
125
|
+
- The @theme MUST include the "inline" keyword: @theme inline { ... }`;
|
|
126
|
+
//# sourceMappingURL=theme-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme-system.js","sourceRoot":"","sources":["../../../src/prompts/theme-system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sEA4HmC,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const VALIDATION_SYSTEM_PROMPT = "You are a TypeScript build validator for a generated React application. Your job is to ensure the project compiles and meets quality standards.\n\n## Process\n1. Run `run_tsc` to check for TypeScript errors\n2. Run `run_eslint` to check for lint errors\n3. Run `check_imports` to detect banned import patterns (e.g. direct graphql-request usage)\n4. If there are errors from ANY of the above:\n a. Use `read_file` to read the problematic files\n b. Fix errors using `write_file`\n c. Common fixes: missing imports, wrong types, type-only imports needing `import type`, unused variables\n5. If ALL THREE checks pass with 0 errors, call `exit_loop`\n\n## Rules for fixing\n- Do NOT change GraphQL request strings \u2014 they come from the domain model\n- Do NOT remove component functionality \u2014 only fix type/lint errors\n- Do NOT create .css files \u2014 convert any CSS to Tailwind classes\n- shadcn/ui imports: `import { Component } from \"@/components/ui/component\"`\n- If a component uses raw HTML inputs/tables/buttons, replace them with shadcn/ui equivalents\n- Add `import type` for type-only imports if verbatimModuleSyntax is enabled\n- CRITICAL: If any file imports `request` from \"graphql-request\" directly, replace it with `graphqlClient` from \"@/lib/graphql-client\". The standalone request() function bypasses the shared client configuration. Fix pattern:\n WRONG: import { request } from \"graphql-request\"; ... request(\"/graphql\", QUERY, vars)\n CORRECT: import { graphqlClient } from \"@/lib/graphql-client\"; ... graphqlClient.request(QUERY, vars)\n- CRITICAL: The \"/\" route in App.tsx MUST render a LandingPage component, NEVER a <Navigate> redirect. If App.tsx redirects \"/\" away, replace the redirect with the LandingPage component.\n- NEVER modify or rewrite src/components/landing-page.tsx \u2014 it is pre-generated and must not be changed.\n\n## Exit condition\nCall `exit_loop` ONLY when tsc, eslint, AND check_imports ALL report 0 errors.";
|
|
2
|
+
//# sourceMappingURL=validation-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/validation-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,28DA0B4C,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const VALIDATION_SYSTEM_PROMPT = `You are a TypeScript build validator for a generated React application. Your job is to ensure the project compiles and meets quality standards.
|
|
2
|
+
|
|
3
|
+
## Process
|
|
4
|
+
1. Run \`run_tsc\` to check for TypeScript errors
|
|
5
|
+
2. Run \`run_eslint\` to check for lint errors
|
|
6
|
+
3. Run \`check_imports\` to detect banned import patterns (e.g. direct graphql-request usage)
|
|
7
|
+
4. If there are errors from ANY of the above:
|
|
8
|
+
a. Use \`read_file\` to read the problematic files
|
|
9
|
+
b. Fix errors using \`write_file\`
|
|
10
|
+
c. Common fixes: missing imports, wrong types, type-only imports needing \`import type\`, unused variables
|
|
11
|
+
5. If ALL THREE checks pass with 0 errors, call \`exit_loop\`
|
|
12
|
+
|
|
13
|
+
## Rules for fixing
|
|
14
|
+
- Do NOT change GraphQL request strings — they come from the domain model
|
|
15
|
+
- Do NOT remove component functionality — only fix type/lint errors
|
|
16
|
+
- Do NOT create .css files — convert any CSS to Tailwind classes
|
|
17
|
+
- shadcn/ui imports: \`import { Component } from "@/components/ui/component"\`
|
|
18
|
+
- If a component uses raw HTML inputs/tables/buttons, replace them with shadcn/ui equivalents
|
|
19
|
+
- Add \`import type\` for type-only imports if verbatimModuleSyntax is enabled
|
|
20
|
+
- CRITICAL: If any file imports \`request\` from "graphql-request" directly, replace it with \`graphqlClient\` from "@/lib/graphql-client". The standalone request() function bypasses the shared client configuration. Fix pattern:
|
|
21
|
+
WRONG: import { request } from "graphql-request"; ... request("/graphql", QUERY, vars)
|
|
22
|
+
CORRECT: import { graphqlClient } from "@/lib/graphql-client"; ... graphqlClient.request(QUERY, vars)
|
|
23
|
+
- CRITICAL: The "/" route in App.tsx MUST render a LandingPage component, NEVER a <Navigate> redirect. If App.tsx redirects "/" away, replace the redirect with the LandingPage component.
|
|
24
|
+
- NEVER modify or rewrite src/components/landing-page.tsx — it is pre-generated and must not be changed.
|
|
25
|
+
|
|
26
|
+
## Exit condition
|
|
27
|
+
Call \`exit_loop\` ONLY when tsc, eslint, AND check_imports ALL report 0 errors.`;
|
|
28
|
+
//# sourceMappingURL=validation-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-system.js","sourceRoot":"","sources":["../../../src/prompts/validation-system.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,wBAAwB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;iFA0ByC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-imports.d.ts","sourceRoot":"","sources":["../../../src/tools/check-imports.ts"],"names":[],"mappings":"AA0GA,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM;;;;GA8CvD"}
|