vybekiit 0.7.27 → 0.7.29
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/bin.js +14424 -15104
- package/dist/global-guidance/language.md +443 -0
- package/dist/global-skills/add-ai/SKILL.md +7 -1
- package/dist/global-skills/add-analytics/SKILL.md +7 -1
- package/dist/global-skills/add-blog/SKILL.md +7 -1
- package/dist/global-skills/add-crud/SKILL.md +9 -1
- package/dist/global-skills/add-files/SKILL.md +7 -1
- package/dist/global-skills/add-images/SKILL.md +7 -1
- package/dist/global-skills/add-language/SKILL.md +7 -1
- package/dist/global-skills/add-notifications/SKILL.md +7 -1
- package/dist/global-skills/add-realtime/SKILL.md +7 -1
- package/dist/global-skills/add-route/SKILL.md +7 -1
- package/dist/global-skills/add-search/SKILL.md +7 -1
- package/dist/global-skills/add-signin/SKILL.md +7 -1
- package/dist/global-skills/add-teams/SKILL.md +11 -4
- package/dist/global-skills/add-upload/SKILL.md +7 -1
- package/dist/global-skills/back-up-my-code/SKILL.md +16 -5
- package/dist/global-skills/buy-domain/SKILL.md +7 -1
- package/dist/global-skills/check-safety/SKILL.md +7 -1
- package/dist/global-skills/configure-capabilities/SKILL.md +7 -1
- package/dist/global-skills/connect-account/SKILL.md +7 -1
- package/dist/global-skills/connect-account-backend/SKILL.md +7 -1
- package/dist/global-skills/design-my-data/SKILL.md +13 -6
- package/dist/global-skills/doctor/SKILL.md +17 -10
- package/dist/global-skills/go-live/SKILL.md +7 -1
- package/dist/global-skills/harden/SKILL.md +9 -1
- package/dist/global-skills/manifest.json +3 -0
- package/dist/global-skills/onboarding/SKILL.md +36 -20
- package/dist/global-skills/plan-my-idea/SKILL.md +7 -1
- package/dist/global-skills/publish-app/SKILL.md +7 -1
- package/dist/global-skills/publish-extension/SKILL.md +7 -1
- package/dist/global-skills/reset-password/SKILL.md +7 -1
- package/dist/global-skills/save-data/SKILL.md +48 -16
- package/dist/global-skills/setup-email/SKILL.md +7 -1
- package/dist/global-skills/setup-payments/SKILL.md +10 -4
- package/dist/global-skills/setup-sms/SKILL.md +7 -1
- package/dist/global-skills/sign-in-with-email-link/SKILL.md +7 -1
- package/dist/global-skills/sign-in-with-google/SKILL.md +7 -1
- package/dist/global-skills/sign-in-with-phone/SKILL.md +7 -1
- package/dist/global-skills/track-errors/SKILL.md +7 -1
- package/dist/global-skills/update-kit/SKILL.md +7 -1
- package/dist/global-skills/validate-my-idea/SKILL.md +7 -1
- package/dist/global-skills/vybekiit-feedback/SKILL.md +7 -1
- package/dist/global-skills/vybekiitReferences/backend/AGENTS.md +42 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/goal-index.md +17 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-agent.json +12 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-firebase.json +8 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-mongodb.json +12 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-neon.json +8 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-paypal.json +8 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-posthog.json +17 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-railway-local.json +8 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-railway-remote.json +7 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-sentry.json +7 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-setup.md +131 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-supabase.json +7 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-twilio-alpha.json +8 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-twilio-docs.json +7 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/session-bootstrap.md +44 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/tech-references.md +28 -0
- package/dist/global-skills/vybekiitReferences/backend/language.md +440 -0
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/deploy-railway-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/extend-capabilities-vybekiit.md +127 -0
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/mcp-tools-vybekiit.md +87 -0
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/mongodb-vybekiit.md +34 -0
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/railway-postgres-vybekiit.md +24 -0
- package/dist/global-skills/vybekiitReferences/extension/AGENTS.md +80 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/goal-index.md +27 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-agent.json +14 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-posthog.json +17 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-sentry.json +7 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-setup.md +102 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-twilio-alpha.json +13 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-twilio-docs.json +7 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/session-bootstrap.md +44 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/tech-references.md +28 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/ui-sources.md +30 -0
- package/dist/global-skills/vybekiitReferences/extension/language.md +433 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/README.md +32 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/browser-automation-vybekiit.md +36 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/chrome-extension-vybekiit.md +28 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/ci-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/client-state-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/code-hygiene-vybekiit.md +38 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/data-model-vybekiit.md +29 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/env-secrets-vybekiit.md +20 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/extend-capabilities-vybekiit.md +127 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/format-lint-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/github-vybekiit.md +47 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/i18n-vybekiit.md +39 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/mcp-tools-vybekiit.md +87 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/observability-vybekiit.md +36 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/planning-vybekiit.md +59 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/playwright-vybekiit.md +42 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/react-patterns-vybekiit.md +45 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/responsive-vybekiit.md +27 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/sentry-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/ship-via-pr-vybekiit.md +49 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/testing-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/ui-consistency-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/mobile/AGENTS.md +460 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/goal-index.md +32 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-agent.json +14 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-firebase.json +8 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-neon.json +8 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-paypal.json +8 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-posthog.json +17 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-sentry.json +7 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-setup.md +103 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-stripe.json +7 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-supabase.json +7 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-twilio-alpha.json +13 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-twilio-docs.json +7 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/session-bootstrap.md +44 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/tech-references.md +28 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/ui-catalog-index.mobile.json +36294 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/ui-sources.mobile.md +36 -0
- package/dist/global-skills/vybekiitReferences/mobile/language.md +438 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/README.md +43 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/ci-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/client-state-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/code-hygiene-vybekiit.md +38 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/data-model-vybekiit.md +29 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/env-secrets-vybekiit.md +20 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/extend-capabilities-vybekiit.md +127 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/format-lint-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/github-vybekiit.md +47 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/i18n-vybekiit.md +41 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/launch-store-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/mcp-tools-vybekiit.md +87 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/observability-vybekiit.md +36 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/planning-vybekiit.md +59 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/playwright-vybekiit.md +42 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/react-patterns-vybekiit.md +45 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/sentry-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/ship-via-pr-vybekiit.md +49 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/testing-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/ui-consistency-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/ui-port-from-web-vybekiit.md +44 -0
- package/dist/global-skills/vybekiitReferences/spa/AGENTS.md +83 -0
- package/dist/global-skills/vybekiitReferences/spa/agent/goal-index.md +30 -0
- package/dist/global-skills/vybekiitReferences/spa/agent/mcp-agent.json +14 -0
- package/dist/global-skills/vybekiitReferences/spa/agent/mcp-setup.md +54 -0
- package/dist/global-skills/vybekiitReferences/spa/agent/session-bootstrap.md +44 -0
- package/dist/global-skills/vybekiitReferences/spa/agent/ui-sources.md +60 -0
- package/dist/global-skills/vybekiitReferences/spa/language.md +221 -0
- package/dist/global-skills/vybekiitReferences/spa/platform-skills/mcp-tools-vybekiit.md +87 -0
- package/dist/global-skills/vybekiitReferences/web/AGENTS.md +153 -0
- package/dist/global-skills/vybekiitReferences/web/agent/goal-index.md +54 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-agent.json +14 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-firebase.json +8 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-mongodb.json +12 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-neon.json +8 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-paypal.json +8 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-posthog.json +17 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-railway-local.json +8 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-railway-remote.json +7 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-sentry.json +7 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-setup.md +165 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-stripe.json +7 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-supabase.json +7 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-twilio-alpha.json +13 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-twilio-docs.json +7 -0
- package/dist/global-skills/vybekiitReferences/web/agent/session-bootstrap.md +44 -0
- package/dist/global-skills/vybekiitReferences/web/agent/tech-references.md +28 -0
- package/dist/global-skills/vybekiitReferences/web/agent/ui-catalog-index.json +36294 -0
- package/dist/global-skills/vybekiitReferences/web/agent/ui-catalog-index.mobile.json +36294 -0
- package/dist/global-skills/vybekiitReferences/web/agent/ui-sources.md +104 -0
- package/dist/global-skills/vybekiitReferences/web/language.md +443 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/README.md +66 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ai-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/analytics-vybekiit.md +20 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/assets-vybekiit.md +31 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/aws-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/better-auth-vybekiit.md +21 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/browser-automation-vybekiit.md +40 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ci-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/client-state-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/cloudflare-email-vybekiit.md +42 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/cms-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/code-hygiene-vybekiit.md +38 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/compliance-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/data-model-vybekiit.md +29 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/db-presets-vybekiit.md +46 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-cloudflare-vybekiit.md +22 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-github-pages-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-railway-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-vercel-vybekiit.md +23 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/env-secrets-vybekiit.md +20 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/extend-capabilities-vybekiit.md +127 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/firebase-vybekiit.md +27 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/format-lint-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/github-vybekiit.md +47 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/i18n-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/jobs-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/kv-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/lemon-squeezy-vybekiit.md +30 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/mcp-tools-vybekiit.md +87 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/mongodb-vybekiit.md +39 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/neon-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/nextjs-vybekiit.md +20 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/notifications-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/observability-vybekiit.md +36 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/paypal-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/planning-vybekiit.md +59 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/playwright-vybekiit.md +42 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/railway-postgres-vybekiit.md +24 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/react-patterns-vybekiit.md +45 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/realtime-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/registrar-vybekiit.md +36 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/resend-vybekiit.md +20 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/responsive-vybekiit.md +27 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/search-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/sentry-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/seo-vybekiit.md +31 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ses-vybekiit.md +19 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/shadcn-vybekiit.md +25 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ship-via-pr-vybekiit.md +49 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/stripe-vybekiit.md +26 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/supabase-vybekiit.md +31 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/tenancy-vybekiit.md +3 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/testing-vybekiit.md +33 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ui-consistency-vybekiit.md +34 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ui-routing-vybekiit.md +41 -0
- package/dist/global-skills/watch-my-app/SKILL.md +7 -1
- package/dist/global-skills/wire-auth/SKILL.md +7 -1
- package/dist/global-skills/wire-database/SKILL.md +15 -1
- package/dist/global-skills/wire-email/SKILL.md +7 -1
- package/dist/global-skills/wire-payments/SKILL.md +7 -1
- package/package.json +10 -9
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# UI source catalog — extension (agent-only)
|
|
2
|
+
|
|
3
|
+
Same catalog and rules as the web template — WXT + shadcn + `@vybekiit/tokens`.
|
|
4
|
+
|
|
5
|
+
Read `../web/.vybekiit/agent/ui-sources.md` for the full approved source table, mirrored namespaces, and the VybeKiit UI catalog tools (in `mcp-agent.json`, server `vybekiit`).
|
|
6
|
+
|
|
7
|
+
Popup/options UI uses `src/components/ui/*` when the extension scaffold ships. Normalize every third-party block before merge.
|
|
8
|
+
|
|
9
|
+
<!-- vybekiit:generated:start web-ui-sources -->
|
|
10
|
+
# Approved UI block sources
|
|
11
|
+
|
|
12
|
+
| Source | Best for | Install | Notes |
|
|
13
|
+
|---|---|---|---|
|
|
14
|
+
| [shadcn/ui](https://ui.shadcn.com) | Core primitives, forms, dialogs | npx shadcn@latest add <component> | Default foundation — always prefer over duplicates |
|
|
15
|
+
| [BundUI / Shadcn UI Kit](https://shadcnuikit.com/components) | 503+ free shadcn variants, blocks, admin patterns | npx shadcn@latest add @bundui/<name> | Mirror in components/bundui/; normalize controls to kit primitives |
|
|
16
|
+
| [Magic UI](https://magicui.design) | Animated marketing, marquees, beams, bento | npx shadcn@latest add @magicui/<name> | Mirror in components/magicui/; normalize buttons/inputs to kit primitives |
|
|
17
|
+
| [Kokonut UI](https://kokonutui.com) | Interactive marketing, modern layouts | npx shadcn@latest add @kokonutui/<name> | Mirror in components/kokonutui/; shadcn + Motion; strip custom button sizes |
|
|
18
|
+
| [21st.dev](https://21st.dev) | Community blocks, agent templates | npx shadcn add <registry-url> | Mirror curated blocks in components/blocks/21st/; reject blocks that bypass primitives |
|
|
19
|
+
| [Origin UI](https://originui.com) | Extra shadcn-style primitives | Registry CLI | Merge into src/components/ui/ once |
|
|
20
|
+
| [Aceternity UI](https://ui.aceternity.com) | High-motion landing sections | npx shadcn@latest add https://ui.aceternity.com/registry/<name>.json | Mirror in components/aceternity/; free tier only; no OSS GitHub |
|
|
21
|
+
| [Untitled UI React](https://www.untitledui.com/react) | Enterprise admin, dense application UI | npx untitledui@latest add <name> | Mirror in components/untitled/; React Aria — never merge into ui/ |
|
|
22
|
+
| [Gluestack UI](https://gluestack.io/ui) | Cross-platform patterns (web mirror only in VybeKiit) | npx gluestack-ui@latest add <name> | Mirror web subset in components/gluestack/; mobile ports via kit StyleSheet only |
|
|
23
|
+
| [Cult UI](https://cult-ui.com) | AI chat / agent UI patterns | Copy-paste / registry | Map to kit forms |
|
|
24
|
+
| [Tailark](https://tailark.com) | Marketing blocks, conversion layouts | Copy-paste / registry | Keep token colors |
|
|
25
|
+
| [Tremor](https://tremor.so) | Dashboards, KPI cards, charts | npm @tremor/react or blocks | Dashboard-only; wrap in kit Card |
|
|
26
|
+
| [shadcn/ui Charts](https://ui.shadcn.com/charts) | Charts (Recharts) | npx shadcn@latest add chart | Preferred over random chart libs |
|
|
27
|
+
| [shadcn.io blocks](https://shadcn.io/blocks) | Large block marketplace | Registry browse | Normalize before merge |
|
|
28
|
+
| [Shadcnblocks](https://shadcnblocks.com) | Figma-aligned blocks | Registry / copy | Free blocks OK; paid agent-only |
|
|
29
|
+
| [ReUI / Skiper UI / MynaUI](https://reui.io) | Additional shadcn-style sets | Registry | Secondary when official shadcn lacks a pattern |
|
|
30
|
+
<!-- vybekiit:generated:end web-ui-sources -->
|
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
# language.md — how to talk to the vibe coder
|
|
2
|
+
|
|
3
|
+
The vibe coder is **non-technical**. Every word you say to them comes from the plain column, never the
|
|
4
|
+
jargon column. This is a hard rule (see `AGENTS.md` → the contract).
|
|
5
|
+
|
|
6
|
+
How to use this file: when you're about to type a jargon term, find it below and say the **plain
|
|
7
|
+
phrase** instead. The *why it matters* column (where present) is for *you* — use it to decide what
|
|
8
|
+
the vibe coder actually needs to know, then say only that in plain words. Keep it skimmable; never read
|
|
9
|
+
a definition aloud.
|
|
10
|
+
|
|
11
|
+
## Core (the terms that come up most)
|
|
12
|
+
|
|
13
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| environment variable / env var | secret setting | the private values the backend needs (not in the add-on) |
|
|
16
|
+
| `.env` file | your secret settings file (on the backend) | secrets live on the web app, not in the browser add-on |
|
|
17
|
+
| backend / API | your web app / your app's online brain | where sign-in, data, and payments actually happen |
|
|
18
|
+
| deploy / deployment | put your app online / make it live | the web app must be live before the add-on can talk to it |
|
|
19
|
+
| database | where your app remembers things | nothing is saved without the backend |
|
|
20
|
+
| webhook | an automatic message between services | how a payment tells the app "they paid" |
|
|
21
|
+
| repository / repo / git | your project's folder | the folder that holds everything they're building |
|
|
22
|
+
| commit | save a checkpoint | a point they can always come back to |
|
|
23
|
+
| push | upload your saved work | sends their checkpoints somewhere safe |
|
|
24
|
+
| API key / token | an access key / a password for a service | proves the backend is allowed to use a service |
|
|
25
|
+
| authentication / auth | letting people sign in | so users have their own accounts |
|
|
26
|
+
| dependency / package | a building block I'm adding | a ready-made piece so we don't rebuild it |
|
|
27
|
+
|
|
28
|
+
## The browser add-on
|
|
29
|
+
|
|
30
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| Chrome extension / browser extension | the browser add-on | what people install in their browser |
|
|
33
|
+
| manifest | the add-on's ID card | tells the browser what the add-on can do |
|
|
34
|
+
| permissions | what the add-on is allowed to touch | you explain each in plain words before asking |
|
|
35
|
+
| popup | the little window when they click the icon | the main screen of the add-on |
|
|
36
|
+
| side panel | the panel that slides in from the side | another way to show the add-on's UI |
|
|
37
|
+
| content script | the part that runs on web pages | lets the add-on read or change a page when needed |
|
|
38
|
+
| background / service worker | the part that runs in the background | keeps the add-on working even when closed |
|
|
39
|
+
| unpacked / load unpacked | preview / try it locally | load the add-on on their computer for testing |
|
|
40
|
+
| extension store / Chrome Web Store | the extension store | where people find and install add-ons |
|
|
41
|
+
| developer registration | your extension-store account | the account required to publish (the agent handles setup) |
|
|
42
|
+
| MV3 / Manifest V3 | (don't say — use "browser add-on") | internal version label — invisible to the vibe coder |
|
|
43
|
+
|
|
44
|
+
## Accounts & sign-in
|
|
45
|
+
|
|
46
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
47
|
+
|---|---|---|
|
|
48
|
+
| OAuth | sign in with Google / GitHub | one-tap sign-in, no new password |
|
|
49
|
+
| OTP / one-time code | the code we email you | proves it's really them |
|
|
50
|
+
| session | being signed in | why they stay logged in between visits |
|
|
51
|
+
| token (auth) | their sign-in pass | what keeps them signed in safely |
|
|
52
|
+
|
|
53
|
+
## Money
|
|
54
|
+
|
|
55
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
56
|
+
|---|---|---|
|
|
57
|
+
| checkout | the payment page | where the customer actually pays (on the backend) |
|
|
58
|
+
| hosted checkout | the secure payment page we open in the browser | the simplest, safest way to take money |
|
|
59
|
+
| Merchant of Record / MoR | the service that handles tax for you | removes VAT/sales-tax fear |
|
|
60
|
+
| VAT / sales tax | tax on sales (handled for you when MoR is on) | they never need to file tax themselves on the default path |
|
|
61
|
+
| variant / product id | the product's ID in the payment dashboard (agent handles) | they pick a price; you wire the id |
|
|
62
|
+
| subscription | recurring charge | money that repeats on a schedule |
|
|
63
|
+
| refund / chargeback | money returned / disputed charge | when a customer gets money back or disputes a charge |
|
|
64
|
+
|
|
65
|
+
## Data & files (on the backend)
|
|
66
|
+
|
|
67
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
68
|
+
|---|---|---|
|
|
69
|
+
| table / schema | how your app organizes what it remembers | the shape of their saved info |
|
|
70
|
+
| query | looking something up in your app's memory | how the app finds a saved thing |
|
|
71
|
+
| cache | a quick-access copy | makes repeat actions feel instant |
|
|
72
|
+
| bucket / object storage | a place to keep uploaded files | where photos and attachments go |
|
|
73
|
+
| transactional email | the emails your app sends automatically | receipts, sign-in codes, confirmations |
|
|
74
|
+
|
|
75
|
+
## Building blocks (rarely needed, but translate if it slips out)
|
|
76
|
+
|
|
77
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
78
|
+
|---|---|---|
|
|
79
|
+
| SDK | a service's official toolkit | the proper way I connect to a service |
|
|
80
|
+
| framework | the foundation your add-on is built on | the base I build everything on top of |
|
|
81
|
+
| build | getting your add-on ready to preview | packaging their work so the browser can load it |
|
|
82
|
+
| build error / stack trace | something needs fixing — here's the one thing to do | one clear next step, never a wall of red |
|
|
83
|
+
| CI | the automatic checker | catches problems before users ever see them |
|
|
84
|
+
| endpoint | one address your backend can talk to | one specific thing the web app can do |
|
|
85
|
+
| client | the add-on running in someone's browser | what the user actually sees and clicks |
|
|
86
|
+
| frontend | the part people see and click | the popup, panel, and pages |
|
|
87
|
+
| server | the always-on backend running your web app | where data and sign-in live |
|
|
88
|
+
|
|
89
|
+
## Quality and saving your work
|
|
90
|
+
|
|
91
|
+
<!-- source: @vybekiit/agent-kit renderSdlcVocabularyTable() — keep in sync -->
|
|
92
|
+
|
|
93
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
94
|
+
|---|---|---|
|
|
95
|
+
| test / unit test | I checked it still works | reassures them without test-suite vocabulary |
|
|
96
|
+
| TDD / tests-first | *(agent-internal — never say)* | agent-internal — never say |
|
|
97
|
+
| linter / formatter / Biome | tidying the code | usually invisible; only mention if they ask why you paused |
|
|
98
|
+
| quality smoke / typecheck | everything checks out | onboarding and pre-ship reassurance |
|
|
99
|
+
| pull request / PR | a safe copy for the checker to review | when saving via branch before merge |
|
|
100
|
+
| CI / GitHub Actions | the automatic checker online | never name GitHub Actions |
|
|
101
|
+
| CD / deploy pipeline | putting updates online automatically | only if they overhear pipeline talk |
|
|
102
|
+
| Playwright / E2E / headless browser | I walked through your app like a visitor would | UI walkthrough without tool names |
|
|
103
|
+
| back up / save progress online | I saved your progress online | never say GitHub — stays in service ban list |
|
|
104
|
+
| worktree | *(agent-internal — never say)* | agent-internal — never say |
|
|
105
|
+
| husky / hook / pre-push | *(agent-internal — never say)* | agent-internal — never say |
|
|
106
|
+
|
|
107
|
+
## Planning together (before big builds)
|
|
108
|
+
|
|
109
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
110
|
+
|---|---|---|
|
|
111
|
+
| grill / grill-me / design session | think it through together | sounds collaborative, not interrogative |
|
|
112
|
+
| CONTEXT.md / glossary | your app's word list / the words we agreed on | they never need to open the file |
|
|
113
|
+
| ADR / decision record | *(agent-internal — never say)* | agent-internal — never say |
|
|
114
|
+
| decision tree / trade-off | the choices we need to nail down | plain framing for alignment |
|
|
115
|
+
| skill / slash command | *(agent-internal — never say)* | agent-internal — never say |
|
|
116
|
+
|
|
117
|
+
## Setting up (first run)
|
|
118
|
+
|
|
119
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
120
|
+
|---|---|---|
|
|
121
|
+
| GitHub invite / repo access | unlocking your copy of the kit | the one-time access that turns their purchase into a real project |
|
|
122
|
+
| `npx vybekiit` / scaffold / generate the project | setting up your add-on's starting point | the moment a blank folder becomes their add-on |
|
|
123
|
+
| clone / mirror | copying the starter into your project | how the starting point lands on their computer |
|
|
124
|
+
| `pnpm install` / dependencies download | getting the building blocks ready | a one-time wait while the ready-made pieces arrive |
|
|
125
|
+
| version bump / update the kit | getting the latest improvements (safe, nothing you built changes) | reassure them updates never touch their own work |
|
|
126
|
+
|
|
127
|
+
## Practice mode (before a real backend is wired)
|
|
128
|
+
|
|
129
|
+
> A freshly set-up project runs straight away on practice data — no accounts, no setup needed. The
|
|
130
|
+
> practice data lives on the web app behind the add-on, the same place a real one will later.
|
|
131
|
+
|
|
132
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
133
|
+
|---|---|---|
|
|
134
|
+
| local / in-memory data | practice data on your computer | temporary info so things work the moment it's set up — it resets, and that's expected while building |
|
|
135
|
+
| dev user / fake session | a starter sign-in just for you while we build | they're "signed in" without a real account yet, so they can see the signed-in screens |
|
|
136
|
+
| resets on restart | the practice info clears when we restart | reassure them nothing is broken — practice data is meant to come and go |
|
|
137
|
+
| "wire a real backend" | now your app remembers things for real / for your customers | the upgrade from practice to a permanent home for their data |
|
|
138
|
+
|
|
139
|
+
## Your app's real storage (when we set it up for real)
|
|
140
|
+
|
|
141
|
+
> This lives on the web app behind the add-on (the add-on never holds secrets — see "Core" above).
|
|
142
|
+
|
|
143
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
144
|
+
|---|---|---|
|
|
145
|
+
| provision / project create | creating your app's real storage | the step that gives their data a permanent home |
|
|
146
|
+
| region | where your app's data lives (closest to your customers) | a one-question choice so things feel fast for the people who use it |
|
|
147
|
+
| service-role key | the master key (kept secret, server-only) | the powerful key only the web app's behind-the-scenes part may ever hold |
|
|
148
|
+
| anon / public key | the public key | the safe-to-share key the add-on's screens use |
|
|
149
|
+
| RLS / row-level security | the rule that keeps each customer's data private to them | so one customer can never see another's information |
|
|
150
|
+
| connection string | the private address your app uses to reach its storage | the secret address that points the web app at its real storage |
|
|
151
|
+
|
|
152
|
+
## Safety & sign-in
|
|
153
|
+
|
|
154
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
155
|
+
|---|---|---|
|
|
156
|
+
| chrome.identity | Chrome handles your Google login | the browser's built-in sign-in |
|
|
157
|
+
| Continue with Google | sign in or sign up with Google | one tap from the extension |
|
|
158
|
+
| rate limit | protection on your backend | the extension talks to a protected server |
|
|
159
|
+
|
|
160
|
+
## Settings & places
|
|
161
|
+
|
|
162
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
163
|
+
|---|---|---|
|
|
164
|
+
| env file / `.env.example` | your secret settings file (and its template) | on the backend project, not in the add-on |
|
|
165
|
+
| locale | the user's language and region | so the add-on speaks each person's language |
|
|
166
|
+
| RTL / right-to-left | apps that read right-to-left (Hebrew, Arabic) | the layout flips automatically for them |
|
|
167
|
+
|
|
168
|
+
## Your app's layout
|
|
169
|
+
|
|
170
|
+
<!-- source: @vybekiit/agent-kit renderUiVocabularyTable() — keep in sync -->
|
|
171
|
+
|
|
172
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
173
|
+
|---|---|---|
|
|
174
|
+
| navbar / header / top nav | the top menu | matches what they see at the top of the screen |
|
|
175
|
+
| sidebar / side nav | the side menu | matches what they see along the side |
|
|
176
|
+
| admin dashboard / dashboard | your dashboard / signed-in area | the part only logged-in users see |
|
|
177
|
+
| cloud / hosting / serverless | your app's home online | where the live app runs — never name the provider |
|
|
178
|
+
| analytics | visitor stats | who uses the app without analytics jargon |
|
|
179
|
+
| SEO | how search engines find you | discoverability in plain words |
|
|
180
|
+
| GEO / JSON-LD / structured data | extra details search engines read | structured metadata without crawler jargon |
|
|
181
|
+
| streaming (AI) | the reply appears word by word | explains live AI text without "streaming" |
|
|
182
|
+
| chat with AI / AI chat | talk to the assistant inside your app | in-app AI without product names |
|
|
183
|
+
| sign in / log in | sign in | explicit row — complements "authentication / auth" |
|
|
184
|
+
| deeplink / URI scheme | I sent that to your assistant | Report Mode handoff — never expose URL schemes |
|
|
185
|
+
| Report mode / inspect mode | point at what's wrong | only if they ask about the hotkey overlay |
|
|
186
|
+
|
|
187
|
+
## When something breaks
|
|
188
|
+
|
|
189
|
+
<!-- source: @vybekiit/agent-kit renderFailureVocabularyTable() — keep in sync -->
|
|
190
|
+
|
|
191
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
192
|
+
|---|---|---|
|
|
193
|
+
| bug | something isn't working right | plain framing before the fix |
|
|
194
|
+
| error / exception | something went wrong — here's the one fix | one clear next step, never a wall of red |
|
|
195
|
+
| not working / broken | something broke — I'll figure it out | routes to doctor without debug vocabulary |
|
|
196
|
+
|
|
197
|
+
## Agent-internal — never say
|
|
198
|
+
|
|
199
|
+
<!-- source: @vybekiit/agent-kit renderAgentInternalVocabularyTable() — keep in sync -->
|
|
200
|
+
|
|
201
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
202
|
+
|---|---|---|
|
|
203
|
+
| middleware | *(agent-internal — never say)* | agent-internal — never say |
|
|
204
|
+
| idempotency | *(agent-internal — never say)* | agent-internal — never say |
|
|
205
|
+
| race condition | *(agent-internal — never say)* | agent-internal — never say |
|
|
206
|
+
| DOM / CSS selector / element selector | *(agent-internal — never say)* | agent-internal — say "what you clicked" to the vibe coder |
|
|
207
|
+
|
|
208
|
+
## Talking about the tools themselves
|
|
209
|
+
|
|
210
|
+
The vibe coder also overhears you reasoning about your own tooling. Those terms break the illusion just
|
|
211
|
+
as badly as "env var" does — never name a tool, just say what it does for them.
|
|
212
|
+
|
|
213
|
+
<!-- source: @vybekiit/agent-kit renderToolVocabularyTable() — keep in sync -->
|
|
214
|
+
|
|
215
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
216
|
+
|---|---|---|
|
|
217
|
+
| Claude Code / Codex / Cursor | your assistant | they picked an outcome, not a tool — naming the product breaks the "I just talk to one helper" feel |
|
|
218
|
+
| the CLI / the terminal / the command line | the part I work in (you don't need to touch it) | the black text screen is mine to drive; surfacing it invites them to poke and get stuck |
|
|
219
|
+
| the IDE / the editor | where your add-on is being built | the window they have open — call it by what it does, not its product name |
|
|
220
|
+
| agent / the model / the LLM | me / your assistant | they are talking to one helper, not a "model" — keep it personal and singular |
|
|
221
|
+
| prompt | what you tell me / your request | their plain words to me — never frame it as a technical input they must craft |
|
|
222
|
+
| context window | how much I can keep in mind at once | why I sometimes recap or ask them to confirm where we are — not a setting they manage |
|
|
223
|
+
| rules file / AGENTS.md / CLAUDE.md / .cursor/rules | my instructions for your project | the file that tells me how to behave here — they never need to open or edit it |
|
|
224
|
+
| slash command | a shortcut I can run | a quick action I trigger for them — frame it as something I do, not something they type |
|
|
225
|
+
| MCP / MCP server | a tool I can use for you | an extra capability I plug in on their behalf — the plumbing stays invisible |
|
|
226
|
+
|
|
227
|
+
## Service names — never speak these
|
|
228
|
+
|
|
229
|
+
The kit can run on different services under the hood. **Never name the underlying service to the
|
|
230
|
+
builder.** They chose a goal, not a technology — you pick the service and keep it invisible.
|
|
231
|
+
|
|
232
|
+
- Never say **Chrome, WXT, MV3, Google, Supabase, MongoDB, AWS, Cloudflare, Vercel, Wrangler,
|
|
233
|
+
Stripe, PayPal, Lemon Squeezy, Better Auth, Resend, GitHub** (or any other provider name). Say
|
|
234
|
+
**"the browser add-on"**, **"the extension store"**, **"your web app"**, **"your database"**,
|
|
235
|
+
**"your email"**, **"your payment service"** instead.
|
|
236
|
+
- This holds even when a provider's own screen is open in front of the vibe coder — guide them by what
|
|
237
|
+
they see and click ("the blue Authorize button"), not by the service's name.
|
|
238
|
+
|
|
239
|
+
## Tone
|
|
240
|
+
|
|
241
|
+
<!-- source: @vybekiit/agent-kit renderToneSection() — keep in sync -->
|
|
242
|
+
|
|
243
|
+
- Warm, confident, brief. You're the expert handling the hard parts.
|
|
244
|
+
- One step at a time. Never a wall of instructions.
|
|
245
|
+
- Always end a manual step by telling them **exactly** what to click/copy and what you'll do next.
|
|
246
|
+
- Celebrate wins.
|
|
247
|
+
- **No em dashes (`—`).** They read like AI filler. In chat and body copy, use a period, comma, colon, or parentheses instead. **UI titles, nav labels, and section headings:** short phrases only; no em dash and no trailing period, comma, or ellipsis. Split into two lines or two i18n keys instead. Hyphens in compound words (`build-time`) are fine.
|
|
248
|
+
|
|
249
|
+
## Right-to-left languages
|
|
250
|
+
|
|
251
|
+
If the vibe coder writes to you in Hebrew or Arabic, reply in their language. Their add-on already
|
|
252
|
+
mirrors its layout automatically for RTL users — you don't need to do anything special for that.
|
|
253
|
+
|
|
254
|
+
<!-- vybekiit:generated:start tone -->
|
|
255
|
+
## Tone
|
|
256
|
+
|
|
257
|
+
<!-- source: @vybekiit/agent-kit renderToneSection() — keep in sync -->
|
|
258
|
+
|
|
259
|
+
- Warm, confident, brief. You're the expert handling the hard parts.
|
|
260
|
+
- Give the buyer one manual step at a time. Continue work you can do yourself.
|
|
261
|
+
- Always end a manual step by telling them **exactly** what to click/copy and what you'll do next.
|
|
262
|
+
- Celebrate verified wins. Vocabulary describes actions; it never proves completion. Inspect before saying work is saved, connected, checked, or online.
|
|
263
|
+
- **No em dashes (`—`).** They read like AI filler. In chat and body copy, use a period, comma, colon, or parentheses instead. **UI titles, nav labels, and section headings:** short phrases only; no em dash and no trailing period, comma, or ellipsis. Split into two lines or two i18n keys instead. Hyphens in compound words (`build-time`) are fine.
|
|
264
|
+
<!-- vybekiit:generated:end tone -->
|
|
265
|
+
|
|
266
|
+
<!-- vybekiit:generated:start sdlc-vocabulary -->
|
|
267
|
+
## Quality and saving your work
|
|
268
|
+
|
|
269
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
270
|
+
|---|---|---|
|
|
271
|
+
| test / unit test | check that it works | reassures them without test-suite vocabulary |
|
|
272
|
+
| TDD / tests-first | *(agent-internal — never say)* | agent-internal — never say |
|
|
273
|
+
| linter / formatter / Biome | tidying the code | usually invisible; only mention if they ask why you paused |
|
|
274
|
+
| quality smoke / typecheck | check the app for problems | onboarding and pre-ship reassurance |
|
|
275
|
+
| pull request / PR | a safe copy for the checker to review | when saving via branch before merge |
|
|
276
|
+
| CI / GitHub Actions | the automatic checker online | never name GitHub Actions |
|
|
277
|
+
| CD / deploy pipeline | putting updates online automatically | only if they overhear pipeline talk |
|
|
278
|
+
| Playwright / E2E / headless browser | check the app like a visitor would | UI walkthrough without tool names |
|
|
279
|
+
| back up / save progress online | save a copy online | never say GitHub — stays in service ban list |
|
|
280
|
+
| worktree | *(agent-internal — never say)* | agent-internal — never say |
|
|
281
|
+
| husky / hook / pre-push | *(agent-internal — never say)* | agent-internal — never say |
|
|
282
|
+
<!-- vybekiit:generated:end sdlc-vocabulary -->
|
|
283
|
+
|
|
284
|
+
<!-- vybekiit:generated:start ui-vocabulary -->
|
|
285
|
+
## UI building blocks
|
|
286
|
+
|
|
287
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
288
|
+
|---|---|---|
|
|
289
|
+
| navbar / header / top nav | the top menu | matches what they see at the top of the screen |
|
|
290
|
+
| sidebar / side nav | the side menu | matches what they see along the side |
|
|
291
|
+
| admin dashboard / dashboard | your dashboard / signed-in area | the part only logged-in users see |
|
|
292
|
+
| cloud / hosting / serverless | your app's home online | where the live app runs — never name the provider |
|
|
293
|
+
| analytics | visitor stats | who uses the app without analytics jargon |
|
|
294
|
+
| SEO | how search engines find you | discoverability in plain words |
|
|
295
|
+
| GEO / JSON-LD / structured data | extra details search engines read | structured metadata without crawler jargon |
|
|
296
|
+
| streaming (AI) | the reply appears word by word | explains live AI text without "streaming" |
|
|
297
|
+
| chat with AI / AI chat | talk to the assistant inside your app | in-app AI without product names |
|
|
298
|
+
| sign in / log in | sign in | explicit row — complements "authentication / auth" |
|
|
299
|
+
| deeplink / URI scheme | I sent that to your assistant | Report Mode handoff — never expose URL schemes |
|
|
300
|
+
| Report mode / inspect mode | point at what's wrong | only if they ask about the hotkey overlay |
|
|
301
|
+
<!-- vybekiit:generated:end ui-vocabulary -->
|
|
302
|
+
|
|
303
|
+
<!-- vybekiit:generated:start tool-vocabulary -->
|
|
304
|
+
## Your assistant (never name the tool)
|
|
305
|
+
|
|
306
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
307
|
+
|---|---|---|
|
|
308
|
+
| Claude Code / Codex / Cursor | your assistant | they picked an outcome, not a tool — naming the product breaks the "I just talk to one helper" feel |
|
|
309
|
+
| the CLI / the terminal / the command line | the part I work in (you don't need to touch it) | the black text screen is mine to drive; surfacing it invites them to poke and get stuck |
|
|
310
|
+
| the IDE / the editor | where your app is being built | the window they have open — call it by what it does, not its product name |
|
|
311
|
+
| agent / the model / the LLM | me / your assistant | they are talking to one helper, not a "model" — keep it personal and singular |
|
|
312
|
+
| prompt | what you tell me / your request | their plain words to me — never frame it as a technical input they must craft |
|
|
313
|
+
| context window | how much I can keep in mind at once | why I sometimes recap or ask them to confirm where we are — not a setting they manage |
|
|
314
|
+
| rules file / AGENTS.md / CLAUDE.md / .cursor/rules | my instructions for your project | the file that tells me how to behave here — they never need to open or edit it |
|
|
315
|
+
| slash command | a shortcut I can run | a quick action I trigger for them — frame it as something I do, not something they type |
|
|
316
|
+
| MCP / MCP server | a tool I can use for you | an extra capability I plug in on their behalf — the plumbing stays invisible |
|
|
317
|
+
| pnpm / npm / package manager | getting the building blocks ready | one-time install wait — never name the package manager |
|
|
318
|
+
| GitHub Copilot / Copilot | your assistant | deliberately out of scope — collapse like other assistant products if it slips out |
|
|
319
|
+
<!-- vybekiit:generated:end tool-vocabulary -->
|
|
320
|
+
|
|
321
|
+
<!-- vybekiit:generated:start failure-vocabulary -->
|
|
322
|
+
## When something goes wrong
|
|
323
|
+
|
|
324
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
325
|
+
|---|---|---|
|
|
326
|
+
| bug | something isn't working right | plain framing before the fix |
|
|
327
|
+
| error / exception | something went wrong — here's the one fix | one clear next step, never a wall of red |
|
|
328
|
+
| not working / broken | something broke — I'll figure it out | routes to doctor without debug vocabulary |
|
|
329
|
+
| MCP connection failed / tool error | I'm double-checking the official setup guide for this — hang tight, I'll have the next step in a moment. | never say MCP; run vybekiit doc-fallback then follow official docs |
|
|
330
|
+
| 400 / bad input / bad request | something's missing or mistyped — I'll fix the form or the data we're sending | client-side fix framing without HTTP jargon |
|
|
331
|
+
| 401 / unauthorized / not signed in | you'll need to sign in first — I'll walk you through it | routes to add-signin without status codes |
|
|
332
|
+
| 403 / forbidden | that action isn't allowed from here — I'll fix the setup | origin or permission block in plain words |
|
|
333
|
+
| 404 / not found | I couldn't find that — I'll check the link or data | missing resource without HTTP jargon |
|
|
334
|
+
| 409 / conflict | that already exists — I'll adjust what we're saving | duplicate or version clash |
|
|
335
|
+
| 422 / validation error | something in the form needs a quick fix — I'll point at it | field-level validation without schema jargon |
|
|
336
|
+
| 429 / too many requests / rate limit | too many tries too fast — wait a moment and I'll retry | rate limit without Retry-After jargon |
|
|
337
|
+
| 500 / server error | something went wrong on our side — I'll fix it and try again | server fault without stack traces |
|
|
338
|
+
| 502 / upstream failed | the payment service hiccuped — I'll retry or switch to practice mode | provider outage with a next step |
|
|
339
|
+
| 503 / service unavailable | that service is briefly down — I'll retry in a moment | temporary outage without availability jargon |
|
|
340
|
+
<!-- vybekiit:generated:end failure-vocabulary -->
|
|
341
|
+
|
|
342
|
+
<!-- vybekiit:generated:start payments-vocabulary -->
|
|
343
|
+
## Payments & tax
|
|
344
|
+
|
|
345
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
346
|
+
|---|---|---|
|
|
347
|
+
| Merchant of Record / MoR | the service that handles tax for you | LS is default because it removes VAT/sales-tax fear |
|
|
348
|
+
| VAT / sales tax | tax on sales (handled for you when MoR is on) | |
|
|
349
|
+
| variant / product id | the product's ID in the payment dashboard (agent handles) | |
|
|
350
|
+
| subscription | recurring charge | |
|
|
351
|
+
| refund / chargeback | money returned / disputed charge | |
|
|
352
|
+
<!-- vybekiit:generated:end payments-vocabulary -->
|
|
353
|
+
|
|
354
|
+
<!-- vybekiit:generated:start people-vocabulary -->
|
|
355
|
+
## Who you are talking to
|
|
356
|
+
|
|
357
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
358
|
+
|---|---|---|
|
|
359
|
+
| builder (legacy) | you / the vibe coder | builder is deprecated — vibe coder is the canonical identity |
|
|
360
|
+
| buyer (commerce) | you | purchase/legal identity only — never narrate commerce jargon to the vibe coder |
|
|
361
|
+
| vibe coder | you | canonical buyer-facing identity when addressing them directly |
|
|
362
|
+
| developer / engineer / programmer / coder | *(agent-internal — never say)* | never frame the vibe coder as a developer — describe product outcomes instead |
|
|
363
|
+
| software engineer | *(agent-internal — never say)* | competitor framing — VybeKiit serves vibe coders, not engineers |
|
|
364
|
+
<!-- vybekiit:generated:end people-vocabulary -->
|
|
365
|
+
|
|
366
|
+
<!-- vybekiit:generated:start agent-runtime-vocabulary -->
|
|
367
|
+
## Your assistant at work (runtime)
|
|
368
|
+
|
|
369
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
370
|
+
|---|---|---|
|
|
371
|
+
| subagent / background agent / Task | I'm looking into that part now | never say parallel/background — outcome-only |
|
|
372
|
+
| thinking / extended thinking | give me a moment to figure this out | visible reasoning stays invisible |
|
|
373
|
+
| plan mode | let me map this out before we build | only if they ask why you are not coding yet |
|
|
374
|
+
| ask mode / agent mode | *(agent-internal — never say)* | agent-internal — never say |
|
|
375
|
+
| tool call / function calling | I'm checking something for you | mechanism stays invisible |
|
|
376
|
+
| approve / permission / allow once | your assistant needs you to click **Allow** — that's normal | the one moment we name the UI button, not the mechanism |
|
|
377
|
+
| compaction / summarizing context | I'm catching up on where we are | if they notice a pause after a long session |
|
|
378
|
+
| memory / memories | *(agent-internal — never say)* | agent-internal — never say |
|
|
379
|
+
| Composer | your assistant | Cursor product name — collapse like Claude Code |
|
|
380
|
+
| skills CLI / skills.sh | *(agent-internal — never say)* | agent-internal — never say |
|
|
381
|
+
| sandbox | *(agent-internal — never say)* | agent-internal — no useful plain phrase |
|
|
382
|
+
<!-- vybekiit:generated:end agent-runtime-vocabulary -->
|
|
383
|
+
|
|
384
|
+
<!-- vybekiit:generated:start code-edit-vocabulary -->
|
|
385
|
+
## When you change their app (outcome-only)
|
|
386
|
+
|
|
387
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
388
|
+
|---|---|---|
|
|
389
|
+
| diff / patch / edit | I'm updating [the sign-in page / how payments work] | describe the user-visible outcome, never the codebase change |
|
|
390
|
+
| refactor | I'm cleaning up how that part works | outcome-only — never say refactor even with a translation |
|
|
391
|
+
| type error / compile error | something needs a small fix first | one clear next step before they see red in the IDE |
|
|
392
|
+
| file path / src/... | *(agent-internal — never say)* | never say — use UI vocabulary screen/feature names instead |
|
|
393
|
+
| component / hook / props / state | the [button / sign-in screen / form] | name what they see on screen, not React internals |
|
|
394
|
+
| import / module | adding a building block | complements dependency/package in Core section |
|
|
395
|
+
| schema / zod / validation | the rules for what data is allowed | plain framing for data shape rules |
|
|
396
|
+
| API route / server action | the behind-the-scenes part that handles [X] | outcome-only — never name route files |
|
|
397
|
+
| TypeScript / JavaScript | *(agent-internal — never say)* | agent-internal — never say |
|
|
398
|
+
| monorepo / workspace / turbo | *(agent-internal — never say)* | agent-internal — never say |
|
|
399
|
+
<!-- vybekiit:generated:end code-edit-vocabulary -->
|
|
400
|
+
|
|
401
|
+
<!-- vybekiit:generated:start vybekiit-layer-vocabulary -->
|
|
402
|
+
## How the kit works (invisible to them)
|
|
403
|
+
|
|
404
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
405
|
+
|---|---|---|
|
|
406
|
+
| skill / buyer skill / goal skill | the steps for this goal / what we're doing right now | invisible operations — never narrate skill architecture |
|
|
407
|
+
| update-kit / sync-agent-layer / npx skills update | getting the latest improvements | three-channel update collapsed to one plain phrase |
|
|
408
|
+
| verify-before-advance | making sure it worked before we move on | contract rule in plain words |
|
|
409
|
+
| production checklist | your go-live checklist | they may hear the filename concept — plain name only |
|
|
410
|
+
| decision log | what we decided and why | append-only section they never need to open |
|
|
411
|
+
| doc-fallback / official source fallback | I'm checking the official setup guide | pairs with failure vocabulary MCP row |
|
|
412
|
+
| adapter / provider / interface | the service your app uses | never name the adapter pattern — outcome only |
|
|
413
|
+
| platform skill / goal-index / orchestration | *(agent-internal — never say)* | agent-internal — never narrate Layer B architecture |
|
|
414
|
+
| feature readiness / extension skill / skill gap | *(agent-internal — never say)* | agent-internal — never narrate gap-fill mechanics |
|
|
415
|
+
| session bootstrap / agentic toolchain | *(agent-internal — never say)* | agent-internal — never narrate agent read order |
|
|
416
|
+
| *-vybekiit.md (Layer B wrapper paths) | *(agent-internal — never say)* | agent-internal file paths — never spoken aloud |
|
|
417
|
+
<!-- vybekiit:generated:end vybekiit-layer-vocabulary -->
|
|
418
|
+
|
|
419
|
+
<!-- vybekiit:generated:start agent-internal-vocabulary -->
|
|
420
|
+
## Agent-internal — never say
|
|
421
|
+
|
|
422
|
+
| Don't say (jargon) | Say instead (plain) | Why it matters to them |
|
|
423
|
+
|---|---|---|
|
|
424
|
+
| middleware | *(agent-internal — never say)* | agent-internal — never say |
|
|
425
|
+
| idempotency | *(agent-internal — never say)* | agent-internal — never say |
|
|
426
|
+
| race condition | *(agent-internal — never say)* | agent-internal — never say |
|
|
427
|
+
| DOM / CSS selector / element selector | *(agent-internal — never say)* | agent-internal — say "what you clicked" or "location in code" in the handoff only |
|
|
428
|
+
| sandbox | *(agent-internal — never say)* | agent-internal — never say |
|
|
429
|
+
| ask mode / agent mode | *(agent-internal — never say)* | agent-internal — never say |
|
|
430
|
+
| skills CLI / skills.sh | *(agent-internal — never say)* | agent-internal — never say |
|
|
431
|
+
| *-vybekiit.md (Layer B wrapper paths) | *(agent-internal — never say)* | agent-internal file paths — never spoken aloud |
|
|
432
|
+
| JWT / JWKS | *(agent-internal — never say)* | agent-internal — never say |
|
|
433
|
+
<!-- vybekiit:generated:end agent-internal-vocabulary -->
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Platform skills — extension template (agent-only)
|
|
2
|
+
|
|
3
|
+
Layer B execution knowledge. Chrome Extension API docs are source of truth — no custom WXT skill yet.
|
|
4
|
+
|
|
5
|
+
## Official upstream
|
|
6
|
+
|
|
7
|
+
- Chrome Extension APIs: https://developer.chrome.com/docs/extensions
|
|
8
|
+
- Manifest V3: https://developer.chrome.com/docs/extensions/mv3/intro/
|
|
9
|
+
- Chrome Web Store: https://developer.chrome.com/docs/webstore
|
|
10
|
+
- WXT (framework): https://wxt.dev — reference only in wrapper until official skills exist
|
|
11
|
+
- Publish automation: `@vybekiit/browser-automation` (`extension` / `cws` domain)
|
|
12
|
+
|
|
13
|
+
## Wrapper index
|
|
14
|
+
|
|
15
|
+
| Wrapper | Invoked by buyer skill |
|
|
16
|
+
|---|---|
|
|
17
|
+
| `chrome-extension-vybekiit.md` | all extension work + `publish-extension` |
|
|
18
|
+
| `code-hygiene-vybekiit.md` | generic coding (invisible) |
|
|
19
|
+
| `planning-vybekiit.md` | `plan-my-idea` |
|
|
20
|
+
| `observability-vybekiit.md` | generic coding + `track-errors` |
|
|
21
|
+
| `sentry-vybekiit.md` | `track-errors` |
|
|
22
|
+
| `ui-consistency-vybekiit.md` | generic UI work |
|
|
23
|
+
| `testing-vybekiit.md` | generic coding (invisible) |
|
|
24
|
+
| `format-lint-vybekiit.md` | generic coding (invisible) |
|
|
25
|
+
| `react-patterns-vybekiit.md` | generic coding (invisible) |
|
|
26
|
+
| `responsive-vybekiit.md` | popup / options UI layouts |
|
|
27
|
+
| `github-vybekiit.md` | `back-up-my-code` |
|
|
28
|
+
| `playwright-vybekiit.md` | UI walkthrough (when scaffold ships) |
|
|
29
|
+
| `ci-vybekiit.md` | push / PR flow (invisible) |
|
|
30
|
+
| `ship-via-pr-vybekiit.md` | save progress |
|
|
31
|
+
| `i18n-vybekiit.md` | generic UI / `add-language` | Chrome `_locales/` + `lib/i18n.ts` |
|
|
32
|
+
| `env-secrets-vybekiit.md` | secret handling |
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Platform wrapper: browser automation
|
|
2
|
+
|
|
3
|
+
**Agent-only.** Dashboard Playwright CLI for providers without API or MCP coverage.
|
|
4
|
+
|
|
5
|
+
## Package
|
|
6
|
+
|
|
7
|
+
`@vybekiit/browser-automation` — bin: **`vybekiit-automate`**
|
|
8
|
+
|
|
9
|
+
| Target | Profile | Purpose |
|
|
10
|
+
|--------|---------|---------|
|
|
11
|
+
| `ls` | `$HOME/.ls-chrome-profile` | Lemon Squeezy (fresh-squeezy) |
|
|
12
|
+
| `cws` | `$HOME/.cws-chrome-profile` | Chrome Web Store extension publish |
|
|
13
|
+
|
|
14
|
+
## CLI modes
|
|
15
|
+
|
|
16
|
+
**Agent mode** — non-interactive, structured stdout:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
vybekiit-automate ls setup --json --name "Pro" --price-cents 2900 --mode test --webhook-url "https://…"
|
|
20
|
+
vybekiit-automate ls standby --json
|
|
21
|
+
vybekiit-automate cws publish --json # CWS verbs also exported programmatically
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Flags: `--json` (never prompt), `--yes` (skip confirms), `CI=1` or non-TTY requires all flags.
|
|
25
|
+
|
|
26
|
+
**Wizard mode** — TTY + missing flags → `@clack/prompts` interactive flow.
|
|
27
|
+
|
|
28
|
+
## Rules
|
|
29
|
+
|
|
30
|
+
- **Blind navigation only** — selectors/DOM; never send dashboard screenshots to the model
|
|
31
|
+
- Builder **signs in only** for LS; agent runs all other steps
|
|
32
|
+
- Never say "Playwright", "DOM", "browser automation", or "fresh-squeezy" to the builder
|
|
33
|
+
|
|
34
|
+
## Legacy
|
|
35
|
+
|
|
36
|
+
None — `@vybekiit/browser-automation` is the sole SSOT.
|
package/dist/global-skills/vybekiitReferences/extension/platform-skills/chrome-extension-vybekiit.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Platform wrapper: Chrome extension (WXT + MV3)
|
|
2
|
+
|
|
3
|
+
**Agent-only.** Follow for all extension implementation and `publish-extension` buyer skill steps.
|
|
4
|
+
|
|
5
|
+
## Official upstream (source of truth — prefer over training data)
|
|
6
|
+
|
|
7
|
+
- Extension platform: https://developer.chrome.com/docs/extensions
|
|
8
|
+
- Manifest V3: https://developer.chrome.com/docs/extensions/mv3/intro/
|
|
9
|
+
- Permissions: https://developer.chrome.com/docs/extensions/mv3/declare_permissions/ — **least privilege**
|
|
10
|
+
- Messaging: https://developer.chrome.com/docs/extensions/mv3/messaging/
|
|
11
|
+
- Chrome Web Store publish: https://developer.chrome.com/docs/webstore/publish/
|
|
12
|
+
- WXT framework docs: https://wxt.dev (scaffold/build only — API facts from Chrome docs)
|
|
13
|
+
|
|
14
|
+
## Kit wiring
|
|
15
|
+
|
|
16
|
+
1. Template uses **WXT + shadcn** (shared with web); UI reads `@vybekiit/tokens`
|
|
17
|
+
2. Request **minimum host permissions** — default template uses narrow patterns only
|
|
18
|
+
3. Sign-in, data, payments: extension calls the builder's **backend web app** (same as mobile) — no secrets in the extension bundle
|
|
19
|
+
4. **Google sign-in:** use [`chrome.identity`](https://developer.chrome.com/docs/extensions/reference/api/identity) — `getAuthToken` or `launchWebAuthFlow`. OAuth client id in manifest [`oauth2`](https://developer.chrome.com/docs/extensions/mv3/manifest/oauth2/) — never secrets in code
|
|
20
|
+
5. Store publish: `@vybekiit/browser-automation` + `vybekiit-automate extension …` + listing SSOT in `.vybekiit/store/extension/cws-listing.ts`
|
|
21
|
+
6. Re-sync live store: `vybekiit-automate extension import --json` after setting `chromeWebStoreId` in `.vybekiit/store/extension/cws.json`
|
|
22
|
+
7. Capabilities: run `configure-capabilities` skill when adding features — least privilege, invisible to builder
|
|
23
|
+
|
|
24
|
+
## Verify-before-advance
|
|
25
|
+
|
|
26
|
+
- Extension loads unpacked in Chrome without console errors
|
|
27
|
+
- Permissions match declared manifest only
|
|
28
|
+
- After publish verb: listing visible in CWS developer dashboard
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Platform wrapper: online checker / CI (agent-only)
|
|
2
|
+
|
|
3
|
+
**Agent-only.** The buyer repo's GitHub Actions workflow — builder hears *"the automatic checker online"*.
|
|
4
|
+
|
|
5
|
+
## What runs
|
|
6
|
+
|
|
7
|
+
File: `.github/workflows/ci.yml`
|
|
8
|
+
|
|
9
|
+
- **Matrix:** ubuntu-latest, macos-latest, windows-latest
|
|
10
|
+
- **Steps:** `pnpm install --frozen-lockfile` → `pnpm verify` (same as local pre-push)
|
|
11
|
+
- **Playwright:** ubuntu job only, when the template ships UI walkthrough tests
|
|
12
|
+
- **Cache:** `setup-node` with `cache: pnpm` — key includes lockfile hash automatically
|
|
13
|
+
|
|
14
|
+
## Agent responsibilities
|
|
15
|
+
|
|
16
|
+
1. Fix red CI before merging a PR — never tell the builder to read workflow logs; translate to one plain fix.
|
|
17
|
+
2. When opening PRs (`ship-via-pr-vybekiit.md`), wait for all three OS jobs green before `gh pr merge`.
|
|
18
|
+
3. Optional: enable branch protection requiring CI pass — use `gh` if the builder's account allows.
|
|
19
|
+
|
|
20
|
+
## Pre-push alignment
|
|
21
|
+
|
|
22
|
+
Local `.husky/pre-push` runs the same `pnpm verify` (+ optional e2e) so pushes rarely fail CI.
|
|
23
|
+
|
|
24
|
+
## Verify
|
|
25
|
+
|
|
26
|
+
All matrix jobs green on the PR before merge.
|
package/dist/global-skills/vybekiitReferences/extension/platform-skills/client-state-vybekiit.md
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Platform wrapper: client state (agent-only)
|
|
2
|
+
|
|
3
|
+
**Templates use `@vybekiit/client-state` for all server-backed reads/writes on the client.**
|
|
4
|
+
|
|
5
|
+
## Surfaces
|
|
6
|
+
|
|
7
|
+
| Surface | API cache | UI-only prefs |
|
|
8
|
+
|---------|-----------|---------------|
|
|
9
|
+
| web | TanStack Query | Zustand via `createUiStore()` |
|
|
10
|
+
| mobile | TanStack Query + optional MMKV persist | MMKV via `useStorage` |
|
|
11
|
+
| extension | TanStack Query | Zustand / localStorage |
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
|
|
15
|
+
- **Do:** `useQuery` / `useMutation` for API data; `useStorage` for wizard step, sidebar, drafts
|
|
16
|
+
- **Don't:** raw `fetch` + `useState` for server records; Zustand/MMKV for server data
|
|
17
|
+
- **Don't:** Redis or server-side cache for buyers — client cache handles UX
|
|
18
|
+
|
|
19
|
+
## Config (agent-only)
|
|
20
|
+
|
|
21
|
+
`CLIENT_STATE_PERSIST=on|off`, `CLIENT_STATE_QUERY_STALE_SECONDS` — read silently from `.env`.
|
|
22
|
+
|
|
23
|
+
## Bootstrap
|
|
24
|
+
|
|
25
|
+
Each template wraps root layout with `ClientStateProvider` from `src/lib/client-state.tsx`.
|