vybekiit 0.7.29 → 0.7.33
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 +3407 -2769
- package/dist/global-guidance/language.md +7 -102
- package/dist/global-skills/add-ai/SKILL.md +7 -8
- package/dist/global-skills/add-analytics/SKILL.md +4 -7
- package/dist/global-skills/add-app-clip/SKILL.md +1 -0
- package/dist/global-skills/add-blog/SKILL.md +4 -7
- package/dist/global-skills/add-files/SKILL.md +4 -7
- package/dist/global-skills/add-images/SKILL.md +4 -7
- package/dist/global-skills/add-language/SKILL.md +5 -8
- package/dist/global-skills/add-notifications/SKILL.md +4 -7
- package/dist/global-skills/add-realtime/SKILL.md +4 -7
- package/dist/global-skills/add-search/SKILL.md +4 -7
- package/dist/global-skills/add-signin/SKILL.md +4 -8
- package/dist/global-skills/add-teams/SKILL.md +4 -7
- package/dist/global-skills/aws-cdk/SKILL.md +1 -0
- package/dist/global-skills/aws-cloudformation/SKILL.md +1 -0
- package/dist/global-skills/aws-serverless/SKILL.md +169 -32
- package/dist/global-skills/aws-serverless/references/api-gateway.md +17 -0
- package/dist/global-skills/aws-serverless/references/architecture.md +9 -13
- package/dist/global-skills/aws-serverless/references/compute-decision-edge-cases.md +77 -0
- package/dist/global-skills/aws-serverless/references/lambda.md +3 -3
- package/dist/global-skills/aws-serverless/references/orchestration.md +46 -20
- package/dist/global-skills/aws-serverless/references/production.md +1 -1
- package/dist/global-skills/better-auth-best-practices/SKILL.md +1 -0
- package/dist/global-skills/better-auth-security-best-practices/SKILL.md +1 -0
- package/dist/global-skills/building-native-ui/SKILL.md +1 -0
- package/dist/global-skills/buy-domain/SKILL.md +4 -7
- package/dist/global-skills/check-safety/SKILL.md +5 -8
- package/dist/global-skills/claimable-postgres/SKILL.md +1 -0
- package/dist/global-skills/configure-capabilities/SKILL.md +1 -1
- package/dist/global-skills/connect-account/SKILL.md +1 -1
- package/dist/global-skills/create-auth-skill/SKILL.md +1 -0
- package/dist/global-skills/doctor/SKILL.md +1 -1
- package/dist/global-skills/eas-app-stores/SKILL.md +2 -1
- package/dist/global-skills/eas-app-stores/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-hosting/SKILL.md +2 -1
- package/dist/global-skills/eas-hosting/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-observe/SKILL.md +2 -1
- package/dist/global-skills/eas-observe/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-simulator/SKILL.md +24 -16
- package/dist/global-skills/eas-simulator/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-simulator/references/controllers.md +11 -7
- package/dist/global-skills/eas-simulator/references/logs-and-crashes.md +101 -0
- package/dist/global-skills/eas-simulator/references/run-your-app.md +8 -8
- package/dist/global-skills/eas-simulator/references/troubleshooting.md +14 -6
- package/dist/global-skills/eas-update/SKILL.md +2 -1
- package/dist/global-skills/eas-update/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-update-insights/SKILL.md +2 -1
- package/dist/global-skills/eas-update-insights/agents/openai.yaml +1 -1
- package/dist/global-skills/eas-workflows/SKILL.md +2 -1
- package/dist/global-skills/eas-workflows/agents/openai.yaml +1 -1
- package/dist/global-skills/email-best-practices/SKILL.md +1 -0
- package/dist/global-skills/email-best-practices/references/sending-reliability.md +17 -22
- package/dist/global-skills/expo-animation/SKILL.md +2 -1
- package/dist/global-skills/expo-api-routes/SKILL.md +1 -0
- package/dist/global-skills/expo-app-clip/SKILL.md +2 -1
- package/dist/global-skills/expo-brownfield/SKILL.md +2 -1
- package/dist/global-skills/expo-cicd-workflows/SKILL.md +1 -0
- package/dist/global-skills/expo-data-fetching/SKILL.md +2 -1
- package/dist/global-skills/expo-deployment/SKILL.md +1 -0
- package/dist/global-skills/expo-design-system/SKILL.md +2 -1
- package/dist/global-skills/expo-dev-client/SKILL.md +2 -1
- package/dist/global-skills/expo-dom/SKILL.md +2 -1
- package/dist/global-skills/expo-examples/SKILL.md +2 -1
- package/dist/global-skills/expo-migrate-module/SKILL.md +2 -1
- package/dist/global-skills/expo-module/SKILL.md +2 -1
- package/dist/global-skills/expo-native-ui/SKILL.md +2 -1
- package/dist/global-skills/expo-observe/SKILL.md +1 -0
- package/dist/global-skills/expo-overview/SKILL.md +2 -1
- package/dist/global-skills/expo-project-structure/SKILL.md +2 -1
- package/dist/global-skills/expo-router/SKILL.md +2 -1
- package/dist/global-skills/expo-skill-eval/SKILL.md +1 -0
- package/dist/global-skills/expo-skill-feedback/SKILL.md +1 -0
- package/dist/global-skills/expo-tailwind-setup/SKILL.md +1 -0
- package/dist/global-skills/expo-ui/SKILL.md +2 -1
- package/dist/global-skills/expo-upgrade/SKILL.md +2 -1
- package/dist/global-skills/expo-web-to-native/SKILL.md +2 -1
- package/dist/global-skills/extension-to-functions-codebase/SKILL.md +2 -0
- package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +162 -76
- package/dist/global-skills/firebase-ai-logic-basics/references/flutter_setup.md +37 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +97 -3
- package/dist/global-skills/firebase-ai-logic-basics/references/tts_generation.md +676 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +88 -3
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +91 -3
- package/dist/global-skills/firebase-app-hosting-basics/SKILL.md +6 -1
- package/dist/global-skills/firebase-auth-basics/SKILL.md +12 -6
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +61 -23
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +3 -3
- package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +22 -19
- package/dist/global-skills/firebase-auth-basics/references/security_rules.md +2 -2
- package/dist/global-skills/firebase-basics/SKILL.md +8 -2
- package/dist/global-skills/firebase-basics/references/android_setup.md +229 -23
- package/dist/global-skills/firebase-basics/references/ios_setup.md +57 -0
- package/dist/global-skills/firebase-basics/references/web_setup.md +52 -0
- package/dist/global-skills/firebase-crashlytics/SKILL.md +2 -0
- package/dist/global-skills/firebase-crashlytics/references/android_setup.md +99 -71
- package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +1 -0
- package/dist/global-skills/firebase-data-connect/SKILL.md +2 -0
- package/dist/global-skills/firebase-data-connect/reference/config.md +8 -8
- package/dist/global-skills/firebase-data-connect/reference/realtime.md +4 -1
- package/dist/global-skills/firebase-data-connect/reference/sdk_android.md +84 -29
- package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +8 -3
- package/dist/global-skills/firebase-data-connect/reference/security.md +13 -13
- package/dist/global-skills/firebase-firestore/SKILL.md +18 -7
- package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +47 -21
- package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +2 -1
- package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +63 -27
- package/dist/global-skills/firebase-firestore/references/standard/indexes.md +2 -1
- package/dist/global-skills/firebase-hosting-basics/SKILL.md +2 -0
- package/dist/global-skills/firebase-remote-config-basics/SKILL.md +3 -1
- package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +83 -92
- package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +8 -6
- package/dist/global-skills/firestore-rules-creation/SKILL.md +23 -10
- package/dist/global-skills/go-live/SKILL.md +7 -7
- package/dist/global-skills/harden/SKILL.md +7 -10
- package/dist/global-skills/instrument-feature-flags/SKILL.md +1 -0
- package/dist/global-skills/instrument-product-analytics/SKILL.md +1 -0
- package/dist/global-skills/manifest.json +2 -1
- package/dist/global-skills/mongodb-atlas-stream-processing/SKILL.md +1 -0
- package/dist/global-skills/mongodb-connection/SKILL.md +1 -0
- package/dist/global-skills/mongodb-mcp-setup/SKILL.md +1 -0
- package/dist/global-skills/mongodb-natural-language-querying/SKILL.md +1 -0
- package/dist/global-skills/mongodb-qe-size-estimation/SKILL.md +224 -0
- package/dist/global-skills/mongodb-query-optimizer/SKILL.md +1 -0
- package/dist/global-skills/mongodb-schema-design/SKILL.md +1 -0
- package/dist/global-skills/mongodb-search-and-ai/SKILL.md +1 -0
- package/dist/global-skills/native-data-fetching/SKILL.md +1 -0
- package/dist/global-skills/neon/SKILL.md +34 -5
- package/dist/global-skills/neon-ai-gateway/SKILL.md +44 -14
- package/dist/global-skills/neon-auth/SKILL.md +1 -0
- package/dist/global-skills/neon-functions/SKILL.md +12 -0
- package/dist/global-skills/neon-functions/references/native-binaries.md +188 -0
- package/dist/global-skills/neon-object-storage/SKILL.md +1 -0
- package/dist/global-skills/neon-postgres/SKILL.md +2 -1
- package/dist/global-skills/neon-postgres/references/full-text-search.md +27 -17
- package/dist/global-skills/neon-postgres/references/hybrid-search.md +19 -15
- package/dist/global-skills/neon-postgres/references/lakebase-search-drizzle.md +99 -14
- package/dist/global-skills/neon-postgres/references/vector-search.md +93 -10
- package/dist/global-skills/neon-postgres-branches/SKILL.md +1 -0
- package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +1 -0
- package/dist/global-skills/onboarding/SKILL.md +14 -13
- package/dist/global-skills/plan-my-idea/SKILL.md +1 -1
- package/dist/global-skills/publish-app/SKILL.md +1 -1
- package/dist/global-skills/publish-extension/SKILL.md +1 -1
- package/dist/global-skills/resend/SKILL.md +5 -15
- package/dist/global-skills/resend/references/domains.md +1 -1
- package/dist/global-skills/resend/references/installation.md +3 -3
- package/dist/global-skills/resend/references/sending/best-practices.md +3 -3
- package/dist/global-skills/resend/references/sending/single-email-examples.md +3 -3
- package/dist/global-skills/resend/references/webhooks.md +2 -0
- package/dist/global-skills/reset-password/SKILL.md +4 -6
- package/dist/global-skills/save-data/SKILL.md +3 -0
- package/dist/global-skills/sentry-sdk-setup/SKILL.md +1 -0
- package/dist/global-skills/sentry-workflow/SKILL.md +1 -0
- package/dist/global-skills/setup-email/SKILL.md +7 -8
- package/dist/global-skills/setup-payments/SKILL.md +10 -12
- package/dist/global-skills/setup-sms/SKILL.md +1 -1
- package/dist/global-skills/sign-in-with-email-link/SKILL.md +4 -6
- package/dist/global-skills/sign-in-with-google/SKILL.md +14 -13
- package/dist/global-skills/sign-in-with-phone/SKILL.md +5 -7
- package/dist/global-skills/stripe-best-practices/SKILL.md +20 -19
- package/dist/global-skills/stripe-best-practices/references/billing.md +2 -0
- package/dist/global-skills/stripe-best-practices/references/payments.md +1 -1
- package/dist/global-skills/stripe-best-practices/references/tax.md +27 -15
- package/dist/global-skills/supabase/CHANGELOG.md +19 -0
- package/dist/global-skills/supabase/SKILL.md +1 -0
- package/dist/global-skills/supabase-postgres-best-practices/SKILL.md +1 -0
- package/dist/global-skills/track-errors/SKILL.md +12 -13
- package/dist/global-skills/update-kit/SKILL.md +1 -1
- package/dist/global-skills/upgrading-expo/SKILL.md +1 -0
- package/dist/global-skills/use-dom/SKILL.md +1 -0
- package/dist/global-skills/use-railway/SKILL.md +9 -8
- package/dist/global-skills/use-railway/references/configure.md +34 -1
- package/dist/global-skills/use-railway/references/iac.md +3 -0
- package/dist/global-skills/use-railway/references/tracing.md +97 -44
- package/dist/global-skills/vercel-composition-patterns/SKILL.md +1 -0
- package/dist/global-skills/vercel-react-best-practices/SKILL.md +1 -0
- package/dist/global-skills/vybekiitReferences/backend/AGENTS.md +11 -3
- package/dist/global-skills/vybekiitReferences/backend/agent/goal-index.md +1 -1
- package/dist/global-skills/vybekiitReferences/backend/agent/goal-routes.json +229 -0
- package/dist/global-skills/vybekiitReferences/backend/agent/mcp-setup.md +11 -2
- package/dist/global-skills/vybekiitReferences/backend/agent/session-bootstrap.md +1 -1
- package/dist/global-skills/vybekiitReferences/backend/agent/tech-references.md +1 -1
- package/dist/global-skills/vybekiitReferences/backend/language.md +7 -102
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/deploy-railway-vybekiit.md +2 -2
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/extend-capabilities-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/backend/platform-skills/mongodb-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/AGENTS.md +11 -3
- package/dist/global-skills/vybekiitReferences/extension/agent/goal-index.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/agent/goal-routes.json +239 -0
- package/dist/global-skills/vybekiitReferences/extension/agent/mcp-setup.md +10 -1
- package/dist/global-skills/vybekiitReferences/extension/agent/session-bootstrap.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/agent/tech-references.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/agent/ui-sources.md +11 -8
- package/dist/global-skills/vybekiitReferences/extension/language.md +7 -92
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/browser-automation-vybekiit.md +9 -1
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/env-secrets-vybekiit.md +1 -0
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/extend-capabilities-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/observability-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/extension/platform-skills/sentry-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/AGENTS.md +27 -12
- package/dist/global-skills/vybekiitReferences/mobile/agent/goal-index.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/agent/goal-routes.json +279 -0
- package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-setup.md +10 -1
- package/dist/global-skills/vybekiitReferences/mobile/agent/session-bootstrap.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/agent/tech-references.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/agent/ui-sources.mobile.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/language.md +7 -93
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/env-secrets-vybekiit.md +1 -0
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/extend-capabilities-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/i18n-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/observability-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/sentry-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/mobile/platform-skills/ui-port-from-web-vybekiit.md +2 -2
- package/dist/global-skills/vybekiitReferences/spa/AGENTS.md +11 -3
- package/dist/global-skills/vybekiitReferences/spa/agent/goal-index.md +1 -1
- package/dist/global-skills/vybekiitReferences/spa/agent/goal-routes.json +267 -0
- package/dist/global-skills/vybekiitReferences/spa/agent/mcp-setup.md +10 -1
- package/dist/global-skills/vybekiitReferences/spa/agent/session-bootstrap.md +1 -1
- package/dist/global-skills/vybekiitReferences/spa/agent/ui-sources.md +11 -8
- package/dist/global-skills/vybekiitReferences/spa/language.md +7 -11
- package/dist/global-skills/vybekiitReferences/web/AGENTS.md +15 -30
- package/dist/global-skills/vybekiitReferences/web/agent/goal-index.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/agent/goal-routes.json +366 -0
- package/dist/global-skills/vybekiitReferences/web/agent/mcp-setup.md +11 -2
- package/dist/global-skills/vybekiitReferences/web/agent/session-bootstrap.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/language.md +7 -102
- package/dist/global-skills/vybekiitReferences/web/platform-skills/ai-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/analytics-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/assets-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/better-auth-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/browser-automation-vybekiit.md +9 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/cms-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/compliance-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-github-pages-vybekiit.md +2 -2
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-railway-vybekiit.md +2 -2
- package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-vercel-vybekiit.md +2 -2
- package/dist/global-skills/vybekiitReferences/web/platform-skills/env-secrets-vybekiit.md +1 -0
- package/dist/global-skills/vybekiitReferences/web/platform-skills/extend-capabilities-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/i18n-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/jobs-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/kv-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/lemon-squeezy-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/mongodb-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/notifications-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/observability-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/paypal-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/realtime-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/registrar-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/search-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/sentry-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/seo-vybekiit.md +1 -3
- package/dist/global-skills/vybekiitReferences/web/platform-skills/supabase-vybekiit.md +1 -1
- package/dist/global-skills/vybekiitReferences/web/platform-skills/tenancy-vybekiit.md +1 -1
- package/dist/global-skills/web-to-native/SKILL.md +1 -0
- package/dist/global-skills/workers-best-practices/SKILL.md +5 -4
- package/dist/global-skills/workers-best-practices/references/configuration.md +1 -1
- package/dist/global-skills/workers-best-practices/references/platform-apis.md +5 -5
- package/dist/global-skills/workers-best-practices/references/runtime-patterns.md +1 -1
- package/dist/global-skills/wrangler/SKILL.md +28 -25
- package/dist/global-skills/xcode-project-setup/SKILL.md +2 -0
- package/package.json +10 -8
|
@@ -5,7 +5,7 @@ Use `lakebase_vector` for approximate nearest-neighbor retrieval over embeddings
|
|
|
5
5
|
## Contents
|
|
6
6
|
|
|
7
7
|
- [Create the extension](#create-the-extension) — enable `lakebase_vector` and its `pgvector` dependency
|
|
8
|
-
- [Prepare embeddings](#prepare-embeddings) —
|
|
8
|
+
- [Prepare embeddings](#prepare-embeddings) — generate vectors with the AI Gateway and match the column dimension
|
|
9
9
|
- [Build the index](#build-the-index) — match the distance metric, operator class, and query operator
|
|
10
10
|
- [Tune the index](#tune-the-index) — configure index-build options and concurrent index management
|
|
11
11
|
- [Query](#query) — rank by vector distance or filter by a similarity radius
|
|
@@ -24,28 +24,111 @@ CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
|
|
|
24
24
|
|
|
25
25
|
## Prepare Embeddings
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
Neon's [AI Gateway embeddings endpoint](https://neon.com/docs/ai-gateway/embeddings) is an OpenAI-compatible way to generate vectors for Lakebase Search. This table uses 1024 dimensions as an example; set the column dimension to the output of the model and any `dimensions` parameter you choose:
|
|
28
28
|
|
|
29
29
|
```sql
|
|
30
30
|
CREATE TABLE documents (
|
|
31
31
|
id bigint GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
32
32
|
title text NOT NULL,
|
|
33
33
|
body text NOT NULL,
|
|
34
|
-
embedding vector(
|
|
34
|
+
embedding vector(1024)
|
|
35
35
|
);
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
Enable the AI Gateway on the branch and get `NEON_AI_GATEWAY_TOKEN` and the bare-host `NEON_AI_GATEWAY_BASE_URL`:
|
|
39
|
+
|
|
40
|
+
- With `neon.ts`, declare `aiGateway: true`, run `neon deploy`, then run `neon env pull --file .env`.
|
|
41
|
+
- Without `neon.ts`, run `neon env pull --service ai-gateway --file .env` from a directory linked to the intended project and branch. This requests the gateway variables explicitly and skips other services.
|
|
42
|
+
- Alternatively, get both values from the Neon Console. Neon Functions receive them automatically.
|
|
43
|
+
|
|
44
|
+
### AI SDK (Recommended)
|
|
45
|
+
|
|
46
|
+
For TypeScript apps, use Neon's `@neon/ai-sdk-provider` 1.0.0+ with the [Vercel AI SDK](https://ai-sdk.dev) (`ai`, 6+) (`npm install @neon/ai-sdk-provider ai dotenv`). The provider reads `NEON_AI_GATEWAY_TOKEN` and `NEON_AI_GATEWAY_BASE_URL` directly and sends embedding requests to `/v1/embeddings`. Load `.env` in a standalone app; Neon Functions inject the variables automatically.
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import "dotenv/config";
|
|
50
|
+
import { neon } from "@neon/ai-sdk-provider";
|
|
51
|
+
import { embed, embedMany } from "ai";
|
|
52
|
+
|
|
53
|
+
const embeddingModel = neon.embeddingModel("qwen3-embedding-0-6b");
|
|
54
|
+
const providerOptions = { neon: { dimensions: 1024 } };
|
|
55
|
+
// Qwen3 query prompt adapted for Neon documentation search; documents stay unprefixed.
|
|
56
|
+
const queryPrompt =
|
|
57
|
+
"Instruct: Given a question about Neon, retrieve documentation passages that answer the question\nQuery: ";
|
|
58
|
+
|
|
59
|
+
const { embeddings: documentEmbeddings } = await embedMany({
|
|
60
|
+
model: embeddingModel,
|
|
61
|
+
values: documentBodies, // non-empty document batch; store vectors by input index
|
|
62
|
+
providerOptions,
|
|
63
|
+
maxParallelCalls: 1,
|
|
64
|
+
});
|
|
65
|
+
const { embedding: queryEmbedding } = await embed({
|
|
66
|
+
model: embeddingModel,
|
|
67
|
+
value: `${queryPrompt}${queryText}`,
|
|
68
|
+
providerOptions,
|
|
69
|
+
}); // bind to $1 below
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Skip empty imports before calling `embedMany`. It returns vectors in input order and splits requests according to the provider's item limit. For large imports, also split document text within the endpoint's token limits and keep database writes bounded.
|
|
73
|
+
|
|
74
|
+
For Neon documentation search, the example adapts the task instruction in Qwen3's stored `query` prompt from [config_sentence_transformers.json](https://huggingface.co/Qwen/Qwen3-Embedding-0.6B/blob/main/config_sentence_transformers.json). Its `document` prompt is empty, so document text stays unprefixed. Neither SDK applies SentenceTransformers prompts automatically. Keep the original `queryText` for BM25, and use the selected model's own prompt conventions if you switch models.
|
|
75
|
+
|
|
76
|
+
### OpenAI SDK Alternative
|
|
77
|
+
|
|
78
|
+
For an existing OpenAI SDK integration, install `openai` and `dotenv` (`npm install openai dotenv`) and configure the client explicitly:
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
import "dotenv/config";
|
|
82
|
+
import OpenAI from "openai";
|
|
83
|
+
|
|
84
|
+
const apiKey = process.env.NEON_AI_GATEWAY_TOKEN;
|
|
85
|
+
const gatewayBaseUrl = process.env.NEON_AI_GATEWAY_BASE_URL;
|
|
86
|
+
if (!apiKey || !gatewayBaseUrl) {
|
|
87
|
+
throw new Error("Missing Neon AI Gateway credentials");
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const client = new OpenAI({
|
|
91
|
+
apiKey,
|
|
92
|
+
baseURL: `${gatewayBaseUrl}/v1`,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
async function embedBatch(inputs: string[]): Promise<number[][]> {
|
|
96
|
+
if (inputs.length === 0) return [];
|
|
97
|
+
const response = await client.embeddings.create({
|
|
98
|
+
model: "qwen3-embedding-0-6b",
|
|
99
|
+
input: inputs,
|
|
100
|
+
dimensions: 1024,
|
|
101
|
+
encoding_format: "float",
|
|
102
|
+
});
|
|
103
|
+
const vectors: number[][] = [];
|
|
104
|
+
for (const item of response.data) vectors[item.index] = item.embedding;
|
|
105
|
+
return inputs.map((_, index) => {
|
|
106
|
+
const embedding = vectors[index];
|
|
107
|
+
if (!embedding) throw new Error(`Missing embedding for input ${index}`);
|
|
108
|
+
return embedding;
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
const documentEmbeddings = await embedBatch(documentBodies);
|
|
113
|
+
const [queryEmbedding] = await embedBatch([`${queryPrompt}${queryText}`]);
|
|
114
|
+
if (!queryEmbedding) throw new Error("Missing query embedding");
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Use the same `queryPrompt` defined above, only for query inputs. Keep each batch within the endpoint's input and rate limits, and pair each vector with its source row using the response `index`. The [OpenAI JavaScript SDK v6](https://github.com/openai/openai-node/blob/v6.0.0/src/resources/embeddings.ts) defaults to requesting base64 and decodes the response as base64. If a compatible endpoint returns float arrays instead, that decoder can silently turn them into zeros. Pass `encoding_format: "float"` explicitly for the AI Gateway; the SDK then returns the float arrays directly. Base64 can reduce response size when an endpoint actually returns base64, but do not assume that format for this gateway.
|
|
118
|
+
|
|
119
|
+
Use the same model and output dimensions for stored documents and queries. Follow the model's input conventions: some models recommend a query instruction while document text remains unprefixed. If the model supports shorter vectors, compare retrieval quality, storage, and latency before changing dimensions; set the column and both embedding requests to the chosen size. Switching models requires re-embedding the corpus; changing dimensions also requires migrating the vector column and index. Generate embeddings in the application, outside SQL, unless the architecture already provides an in-database embedding function. Other embedding providers are also valid when their output matches the schema and index.
|
|
39
120
|
|
|
40
121
|
## Build the Index
|
|
41
122
|
|
|
42
123
|
Choose the operator class and query operator as a matched pair:
|
|
43
124
|
|
|
44
|
-
| Metric
|
|
45
|
-
|
|
|
46
|
-
| Cosine
|
|
47
|
-
| L2 / Euclidean | Absolute distance matters; vectors do not need normalization | `vector_l2_ops`
|
|
48
|
-
| Inner product
|
|
125
|
+
| Metric | Common use | Operator class | Distance operator |
|
|
126
|
+
| -------------- | ------------------------------------------------------------ | ------------------- | ----------------- |
|
|
127
|
+
| Cosine | Most text embeddings | `vector_cosine_ops` | `<=>` |
|
|
128
|
+
| L2 / Euclidean | Absolute distance matters; vectors do not need normalization | `vector_l2_ops` | `<->` |
|
|
129
|
+
| Inner product | Unit-normalized vectors; matches cosine for unit vectors | `vector_ip_ops` | `<#>` |
|
|
130
|
+
|
|
131
|
+
Choose the metric recommended for the selected model, and keep its index operator class and query operator aligned. The [Qwen3 Embedding model card](https://huggingface.co/Qwen/Qwen3-Embedding-0.6B) demonstrates cosine similarity and normalized dot product for retrieval. For unit-normalized vectors, cosine, inner product, and L2 have the same exact ranking; approximate indexes can still differ in recall and latency, so benchmark on your corpus.
|
|
49
132
|
|
|
50
133
|
```sql
|
|
51
134
|
CREATE INDEX documents_embedding_ann ON documents
|
|
@@ -79,7 +162,7 @@ For a large table, use `CREATE INDEX CONCURRENTLY` to avoid locking out writes w
|
|
|
79
162
|
|
|
80
163
|
## Query
|
|
81
164
|
|
|
82
|
-
Generate the query embedding with the same model and
|
|
165
|
+
Generate the query embedding with the same model and dimensions used for stored documents, following the model's query-input conventions (using the Qwen3 query prompt shown above), then bind it as a parameter:
|
|
83
166
|
|
|
84
167
|
```sql
|
|
85
168
|
SELECT id, title, embedding <=> $1::vector AS distance
|
|
@@ -12,6 +12,7 @@ description: >-
|
|
|
12
12
|
metadata:
|
|
13
13
|
parent: neon
|
|
14
14
|
source: https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-branches
|
|
15
|
+
disable-model-invocation: true
|
|
15
16
|
---
|
|
16
17
|
|
|
17
18
|
**FIRST**: Use the parent `neon` skill for a Neon overview, getting started with Neon, Neon development best practices, and more.
|
|
@@ -12,6 +12,7 @@ description: >-
|
|
|
12
12
|
metadata:
|
|
13
13
|
parent: neon
|
|
14
14
|
source: https://github.com/neondatabase/agent-skills/tree/main/skills/neon-postgres-egress-optimizer
|
|
15
|
+
disable-model-invocation: true
|
|
15
16
|
---
|
|
16
17
|
|
|
17
18
|
**FIRST**: Use the parent `neon` skill for a Neon overview, getting started with Neon, Neon development best practices, and more.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: onboarding
|
|
3
|
-
description: "take the builder from \"I just bought this\" to
|
|
3
|
+
description: "take the builder from \"I just bought this\" to their app running and visible in front of them in this one session. Use when the vibe coder says something like: set up my app; let's start; get me going; just bought; hi; help."
|
|
4
4
|
metadata:
|
|
5
5
|
vybekiit-generated: buyer-skill-stub
|
|
6
6
|
---
|
|
@@ -26,16 +26,17 @@ translate every error · celebrate. Decide all technical choices yourself.
|
|
|
26
26
|
## Steps
|
|
27
27
|
|
|
28
28
|
<!-- vybekiit:page-recipe-install -->
|
|
29
|
-
0. **
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
0. **Add the first-run wizard page when the vibe coder wants one for their users.** Run
|
|
30
|
+
`vybekiit add page-recipe onboarding`. It adds the page at `/onboarding`. Keep every `TODO:` in the
|
|
31
|
+
page and fill each one in. Skip this step when the vibe coder only needs their own kit setup
|
|
32
|
+
(steps 1-5 below).
|
|
33
|
+
**Verify:** if added, `/onboarding` opens and shows practice content.
|
|
34
|
+
|
|
35
|
+
1. **Welcome, say what VybeKiit is, then ask the one thing that matters.**
|
|
36
|
+
Greet warmly in plain text with no emojis, then tell them in a few short sentences what they have, in plain words:
|
|
37
|
+
*"VybeKiit is a ready-made web app with the hard parts already working. It comes with sign-in, payments, a database that remembers your customers' information, emails your app sends, file uploads, visitor stats, alerts when something breaks, more languages, and putting your app online. While we build, you can turn on Report mode and point at anything on screen that looks wrong, and I fix it. You own all of it, and I do the technical work."*
|
|
38
|
+
Then stop talking about the kit and move on to their idea.
|
|
39
|
+
If the vibe coder already described their app, use that description. Otherwise ask:
|
|
39
40
|
*"In one sentence, what do you want to build?"* Use their answer to tailor the starter page later.
|
|
40
41
|
Keep the conversation about their idea.
|
|
41
42
|
|
|
@@ -64,7 +65,7 @@ translate every error · celebrate. Decide all technical choices yourself.
|
|
|
64
65
|
**Verify:** the dev server is up with no errors. If it fails → run `doctor`.
|
|
65
66
|
|
|
66
67
|
> (Agent-only) **Database MCP tier:** Supabase, Neon, and Firebase use login-once MCP configs
|
|
67
|
-
> (`mcp-supabase.json`, `mcp-neon.json`, `mcp-firebase.json`) — merge via
|
|
68
|
+
> (`mcp-supabase.json`, `mcp-neon.json`, `mcp-firebase.json`) — merge via `.vybekiit/agent/mcp-setup.md`
|
|
68
69
|
> (Cursor, Claude Desktop, Codex). MongoDB and AWS are advanced only.
|
|
69
70
|
>
|
|
70
71
|
> **Payment MCP tier:** Stripe and PayPal use `mcp-stripe.json` / `mcp-paypal.json` when
|
|
@@ -73,7 +74,7 @@ translate every error · celebrate. Decide all technical choices yourself.
|
|
|
73
74
|
3. **Show them their app.**
|
|
74
75
|
Give them the verified preview link from this run and tell them what they'll see.
|
|
75
76
|
**Verify:** open the page in a browser yourself. Continue the requested work; ask the builder only if you cannot verify what they see.
|
|
76
|
-
|
|
77
|
+
*Celebrate* — their app is alive.
|
|
77
78
|
Mention Report mode once: *"If something looks wrong, press Option+Shift+R (Alt+Shift+R on
|
|
78
79
|
Windows), click it, tell me what's off — I'll get the details automatically."*
|
|
79
80
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: plan-my-idea
|
|
3
|
-
description: "help the builder figure out exactly what they want
|
|
3
|
+
description: "help the builder figure out exactly what they want before you build — so the first version matches their idea instead of your guess. Use when the vibe coder says something like: help me plan; figure out my idea; think it through; marketplace; like airbnb."
|
|
4
4
|
metadata:
|
|
5
5
|
vybekiit-generated: buyer-skill-stub
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: publish-app
|
|
3
|
-
description: "the builder's app is
|
|
3
|
+
description: "the builder's app is in the App Store and Google Play for anyone to download. Use when the vibe coder says something like: put it online; publish; make it live; ship it; deploy; publish app."
|
|
4
4
|
metadata:
|
|
5
5
|
vybekiit-generated: buyer-skill-stub
|
|
6
6
|
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: publish-extension
|
|
3
|
-
description: "the builder's extension is
|
|
3
|
+
description: "the builder's extension is listed in the Chrome Web Store for anyone to install. Use when the vibe coder says something like: put it online; publish; make it live; ship it; deploy; chrome store."
|
|
4
4
|
metadata:
|
|
5
5
|
vybekiit-generated: buyer-skill-stub
|
|
6
6
|
---
|
|
@@ -4,7 +4,7 @@ description: Use when working with the Resend email API — sending transactiona
|
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: resend
|
|
7
|
-
version: "3.
|
|
7
|
+
version: "3.14.0"
|
|
8
8
|
homepage: https://resend.com/agent-skills
|
|
9
9
|
source: https://github.com/resend/resend-skills
|
|
10
10
|
openclaw:
|
|
@@ -47,6 +47,7 @@ references:
|
|
|
47
47
|
- usage.md
|
|
48
48
|
- installation.md
|
|
49
49
|
- fetch-all-templates.mjs
|
|
50
|
+
disable-model-invocation: true
|
|
50
51
|
---
|
|
51
52
|
|
|
52
53
|
# Resend
|
|
@@ -177,22 +178,11 @@ export async function POST(req: Request) {
|
|
|
177
178
|
|
|
178
179
|
## SDK Version Requirements
|
|
179
180
|
|
|
180
|
-
Always install the latest SDK version.
|
|
181
|
+
Always install the latest SDK version. Older SDKs may be missing `webhooks.verify()`, `emails.receiving.get()`, or `domains.claims.*`.
|
|
181
182
|
|
|
182
|
-
|
|
183
|
-
|----------|---------|-------------|---------|
|
|
184
|
-
| Node.js | `resend` | >= 6.14.0 | `npm install resend` |
|
|
185
|
-
| Python | `resend` | >= 2.34.0 | `pip install resend` |
|
|
186
|
-
| Go | `resend-go/v3` | >= 3.11.0 | `go get github.com/resend/resend-go/v3` |
|
|
187
|
-
| Ruby | `resend` | >= 1.6.0 | `gem install resend` |
|
|
188
|
-
| PHP | `resend/resend-php` | >= 1.1.0 | `composer require resend/resend-php` |
|
|
189
|
-
| Rust | `resend-rs` | >= 0.26.1 | `cargo add resend-rs` |
|
|
190
|
-
| Java | `resend-java` | >= 4.16.0 | See [installation.md](references/installation.md) |
|
|
191
|
-
| .NET | `Resend` | >= 0.2.1 | `dotnet add package Resend` |
|
|
183
|
+
> **If the project already has a Resend SDK installed**, check its version against the minimum versions in [installation.md](references/installation.md) and upgrade if it's below.
|
|
192
184
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
See [installation.md](references/installation.md) for full installation commands, language detection, and cURL fallback.
|
|
185
|
+
See [installation.md](references/installation.md) for the minimum version per language, full installation commands, language detection, and cURL fallback.
|
|
196
186
|
|
|
197
187
|
## Common Setup
|
|
198
188
|
|
|
@@ -108,7 +108,7 @@ Claiming takes over a domain **another Resend account has already verified**. Th
|
|
|
108
108
|
Claim → Add TXT proof to DNS → Verify claim → (completed) → Update DKIM in DNS → Verify domain → Send
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
Claim methods are available in the **Node.js** (`resend >= 6.14.0`), **Python** (`resend >= 2.34.0`), **Ruby** (`resend >= 1.6.0`), **Go** (`resend-go/
|
|
111
|
+
Claim methods are available in the **Node.js** (`resend >= 6.14.0`), **Python** (`resend >= 2.34.0`), **Ruby** (`resend >= 1.6.0`), **Go** (`resend-go/v4 >= 4.0.0`), **Rust** (`resend-rs >= 0.26.1`), and **Java** (`resend-java >= 4.16.0`) SDKs, plus the **CLI** (`resend domains claim`) and REST API. Not yet in the PHP or .NET SDKs.
|
|
112
112
|
|
|
113
113
|
| Operation | Method | Notes |
|
|
114
114
|
|-----------|--------|-------|
|
|
@@ -10,7 +10,7 @@ These are the minimum versions required for full functionality (sending, receivi
|
|
|
10
10
|
|----------|---------|-------------|---------|
|
|
11
11
|
| Node.js | `resend` | >= 6.14.0 | `npm install resend` |
|
|
12
12
|
| Python | `resend` | >= 2.34.0 | `pip install resend` |
|
|
13
|
-
| Go | `resend-go/
|
|
13
|
+
| Go | `resend-go/v4` | >= 4.0.0 | `go get github.com/resend/resend-go/v4` |
|
|
14
14
|
| Ruby | `resend` | >= 1.6.0 | `gem install resend` |
|
|
15
15
|
| PHP | `resend/resend-php` | >= 1.1.0 | `composer require resend/resend-php` |
|
|
16
16
|
| Rust | `resend-rs` | >= 0.26.1 | `cargo add resend-rs` |
|
|
@@ -27,7 +27,7 @@ Check for these files to determine the project's language/framework:
|
|
|
27
27
|
|------|----------|-----|
|
|
28
28
|
| `package.json` | Node.js/TypeScript | resend |
|
|
29
29
|
| `requirements.txt` or `pyproject.toml` | Python | resend |
|
|
30
|
-
| `go.mod` | Go | resend-go/
|
|
30
|
+
| `go.mod` | Go | resend-go/v4 |
|
|
31
31
|
| `Gemfile` | Ruby | resend |
|
|
32
32
|
| `composer.json` | PHP | resend/resend-php |
|
|
33
33
|
| `Cargo.toml` | Rust | resend-rs |
|
|
@@ -59,7 +59,7 @@ pip install resend
|
|
|
59
59
|
### Go
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
go get github.com/resend/resend-go/
|
|
62
|
+
go get github.com/resend/resend-go/v4
|
|
63
63
|
```
|
|
64
64
|
|
|
65
65
|
### Ruby
|
|
@@ -86,7 +86,7 @@ result = resend.Batch.send(emails, idempotency_key=f"batch-orders/{batch_id}")
|
|
|
86
86
|
Other SDKs use the `Idempotency-Key` header:
|
|
87
87
|
|
|
88
88
|
```go
|
|
89
|
-
import "github.com/resend/resend-go/
|
|
89
|
+
import "github.com/resend/resend-go/v4"
|
|
90
90
|
|
|
91
91
|
client := resend.NewClient(os.Getenv("RESEND_API_KEY"))
|
|
92
92
|
|
|
@@ -223,7 +223,7 @@ except resend.exceptions.ResendError as e:
|
|
|
223
223
|
```go
|
|
224
224
|
import (
|
|
225
225
|
"fmt"
|
|
226
|
-
"github.com/resend/resend-go/
|
|
226
|
+
"github.com/resend/resend-go/v4"
|
|
227
227
|
)
|
|
228
228
|
|
|
229
229
|
client := resend.NewClient(os.Getenv("RESEND_API_KEY"))
|
|
@@ -359,7 +359,7 @@ result = send_email_with_retry(
|
|
|
359
359
|
import (
|
|
360
360
|
"fmt"
|
|
361
361
|
"time"
|
|
362
|
-
"github.com/resend/resend-go/
|
|
362
|
+
"github.com/resend/resend-go/v4"
|
|
363
363
|
)
|
|
364
364
|
|
|
365
365
|
func sendEmailWithRetry(client *resend.Client, params *resend.SendEmailRequest, maxRetries int) (*resend.SendEmailResponse, error) {
|
|
@@ -58,7 +58,7 @@ email = resend.Emails.send({
|
|
|
58
58
|
Other SDKs use the `Idempotency-Key` header:
|
|
59
59
|
|
|
60
60
|
```go
|
|
61
|
-
import "github.com/resend/resend-go/
|
|
61
|
+
import "github.com/resend/resend-go/v4"
|
|
62
62
|
|
|
63
63
|
client := resend.NewClient(os.Getenv("RESEND_API_KEY"))
|
|
64
64
|
|
|
@@ -172,7 +172,7 @@ except resend.exceptions.ResendError as e:
|
|
|
172
172
|
```go
|
|
173
173
|
import (
|
|
174
174
|
"fmt"
|
|
175
|
-
"github.com/resend/resend-go/
|
|
175
|
+
"github.com/resend/resend-go/v4"
|
|
176
176
|
)
|
|
177
177
|
|
|
178
178
|
client := resend.NewClient(os.Getenv("RESEND_API_KEY"))
|
|
@@ -293,7 +293,7 @@ result = send_email_with_retry(
|
|
|
293
293
|
import (
|
|
294
294
|
"fmt"
|
|
295
295
|
"time"
|
|
296
|
-
"github.com/resend/resend-go/
|
|
296
|
+
"github.com/resend/resend-go/v4"
|
|
297
297
|
)
|
|
298
298
|
|
|
299
299
|
func sendEmailWithRetry(client *resend.Client, params *resend.SendEmailRequest, maxRetries int) (*resend.SendEmailResponse, error) {
|
|
@@ -65,7 +65,9 @@ The `email.received` payload contains metadata only (sender, recipient, subject,
|
|
|
65
65
|
|-------|---------|
|
|
66
66
|
| `domain.created` / `updated` / `deleted` | Domain configuration changes |
|
|
67
67
|
| `contact.created` / `updated` / `deleted` | Contact list changes (not from CSV imports) |
|
|
68
|
+
| `contact.topics.updated` | Contact's topic subscriptions change |
|
|
68
69
|
| `suppression.added` / `removed` | Email address added to or removed from the suppression list |
|
|
70
|
+
| `topic.created` / `updated` / `deleted` | Topic created, updated, or deleted |
|
|
69
71
|
|
|
70
72
|
## Setup
|
|
71
73
|
|
|
@@ -26,12 +26,10 @@ translate every error · celebrate.
|
|
|
26
26
|
## Steps
|
|
27
27
|
|
|
28
28
|
<!-- vybekiit:page-recipe-install -->
|
|
29
|
-
0. **
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
Also reference `packages/agentKit` `getPageRecipeInstall('reset-password')` / page-recipe-manifest.json.
|
|
34
|
-
**Verify:** route builds with practice security UI before provider wiring.
|
|
29
|
+
0. **Add the ready-made page first.** Run `vybekiit add page-recipe account-security`. It adds the page
|
|
30
|
+
at `/settings/security` and lists any data setup to run next. Keep every `TODO:` in the page and fill
|
|
31
|
+
each one in as you connect the real service.
|
|
32
|
+
**Verify:** `/settings/security` opens and shows practice content.
|
|
35
33
|
|
|
36
34
|
1. **Confirm sign-in is wired.** Run `add-signin` first if accounts are not set up yet.
|
|
37
35
|
**Verify:** existing sign-in works.
|
|
@@ -51,6 +51,9 @@ For other requests, select matching presets from the catalog before authoring an
|
|
|
51
51
|
Inspect the selected service's existing CLI or MCP login and exact project before requesting
|
|
52
52
|
access. Reuse authorized connections and preserve existing projects. Never delete a project to
|
|
53
53
|
free capacity. Request one manual action only when an actual access blocker remains.
|
|
54
|
+
Supabase keys: after `supabase login`, run `vybekiit-automate db setup --json --project-ref=<ref>`.
|
|
55
|
+
It saves `SUPABASE_URL` and `SUPABASE_ANON_KEY` to `settings.env`, `SUPABASE_SERVICE_ROLE_KEY` to `.env`, and prints
|
|
56
|
+
only their names.
|
|
54
57
|
**Verify:** the database is reachable (`@vybekiit/db`'s `pingDatabase`).
|
|
55
58
|
|
|
56
59
|
2. **Decide what to remember from the request.** Reuse existing data shapes and ownership rules.
|
|
@@ -3,6 +3,7 @@ name: sentry-sdk-setup
|
|
|
3
3
|
description: Set up Sentry in any language or framework. Detects the user's platform and loads the right SDK skill. Use when asked to add Sentry, install an SDK, or set up error monitoring in a project.
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
role: router
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
> [All Skills](../../SKILL_TREE.md)
|
|
@@ -3,6 +3,7 @@ name: sentry-workflow
|
|
|
3
3
|
description: Keep Sentry SDKs up to date. Use when asked to upgrade the Sentry SDK across major versions, migrate SDK versions, or fix deprecated APIs.
|
|
4
4
|
license: Apache-2.0
|
|
5
5
|
role: router
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
> [All Skills](../../SKILL_TREE.md)
|
|
@@ -31,17 +31,16 @@ when asked.
|
|
|
31
31
|
## Steps
|
|
32
32
|
|
|
33
33
|
<!-- vybekiit:page-recipe-install -->
|
|
34
|
-
0. **
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Also reference `packages/agentKit` `getPageRecipeInstall('setup-email')` / page-recipe-manifest.json.
|
|
39
|
-
**Verify:** route builds and shows practice UI before provider wiring.
|
|
40
|
-
|
|
34
|
+
0. **Add the ready-made page first.** Run `vybekiit add page-recipe email-notifications`. It adds the page
|
|
35
|
+
at `/settings/notifications` and lists any data setup to run next. Keep every `TODO:` in the page and fill
|
|
36
|
+
each one in as you connect the real service.
|
|
37
|
+
**Verify:** `/settings/notifications` opens and shows practice content.
|
|
41
38
|
|
|
42
39
|
1. **Confirm the one sending detail.** Ask for (or guide them to set up) a verified sender address —
|
|
43
40
|
the "from" address their app's emails come from. Tell them exactly where to confirm it, then save
|
|
44
|
-
it to the secret settings file.
|
|
41
|
+
it to the secret settings file. For the sending key (Resend by default), ask the builder to run
|
|
42
|
+
`vybekiit-automate resend setup` in their own terminal. It asks for the key with hidden typing,
|
|
43
|
+
checks it, and saves `RESEND_API_KEY` to `.env`. Never ask for the key in chat.
|
|
45
44
|
**Verify:** the sender address is set and confirmed.
|
|
46
45
|
|
|
47
46
|
2. **Wire sending.** Connect the app's email sending to `resolveEmailProvider()` (see wrapper for
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: setup-payments
|
|
3
|
-
description: "the requested purchase flow works in practice.
|
|
3
|
+
description: "the requested purchase flow works in practice. Use when the vibe coder says something like: add payments; take money; sell something; charge people."
|
|
4
4
|
metadata:
|
|
5
5
|
vybekiit-generated: buyer-skill-stub
|
|
6
6
|
---
|
|
@@ -32,14 +32,11 @@ translate every error · celebrate. You wire all the code; the builder only sign
|
|
|
32
32
|
## Steps
|
|
33
33
|
|
|
34
34
|
<!-- vybekiit:page-recipe-install -->
|
|
35
|
-
0. **
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
Keep every `TODO:` in the
|
|
39
|
-
|
|
40
|
-
`commerce-products`, `commerce-cart`, `commerce-checkout` via `getPageRecipeInstall`.
|
|
41
|
-
Also reference `packages/agentKit` `getPageRecipeInstall('setup-payments')` / page-recipe-manifest.json.
|
|
42
|
-
**Verify:** `/pricing` builds and shows practice plans before provider wiring.
|
|
35
|
+
0. **Add the ready-made pricing page first.** Run `vybekiit add page-recipe pricing`. It adds the page
|
|
36
|
+
at `/pricing` and lists any data setup to run next (run that after the payment keys are saved).
|
|
37
|
+
Selling products, not only plans? Also run `vybekiit add page-recipe product-grid`, then `cart` and
|
|
38
|
+
`checkout` the same way. Keep every `TODO:` in the pages and fill each one in as you connect payments.
|
|
39
|
+
**Verify:** `/pricing` opens and shows practice plans.
|
|
43
40
|
|
|
44
41
|
1. **Explain the plan in one line.** *"I'll connect a payment service so you can charge people. I'll do
|
|
45
42
|
the setup — you'll sign in once when I ask."* (Never name Lemon Squeezy, Stripe, or PayPal.)
|
|
@@ -48,15 +45,16 @@ translate every error · celebrate. You wire all the code; the builder only sign
|
|
|
48
45
|
- Run `vybekiit-automate ls setup --json …` (or wizard mode without `--json`).
|
|
49
46
|
- If Lemon Squeezy shows a sign-in screen, the automation **waits** until the builder completes login in the browser, then continues — no separate standby step required.
|
|
50
47
|
- Optional pre-check: `vybekiit-automate ls standby` opens the dashboard and waits the same way.
|
|
51
|
-
-
|
|
52
|
-
|
|
48
|
+
- The command saves the store, product and key settings straight into the app's `.env` and prints only
|
|
49
|
+
their names. Never copy key values into the chat.
|
|
50
|
+
**Verify:** the command lists the saved names; product exists in test mode.
|
|
53
51
|
|
|
54
52
|
3. **Stripe (opt-in).** Merge `mcp-stripe.json` via `agent/mcp-setup.md`; builder OAuth once.
|
|
55
53
|
Agent creates product/price via Stripe MCP; write restricted API key to `.env`.
|
|
56
54
|
**Verify:** test mode product visible in Stripe dashboard.
|
|
57
55
|
|
|
58
56
|
4. **PayPal (opt-in).** Merge `mcp-paypal.json` via `agent/mcp-setup.md`; builder OAuth once (sandbox).
|
|
59
|
-
Agent provisions via PayPal MCP; write client
|
|
57
|
+
Agent provisions via PayPal MCP; write the client secret to `.env`, the client id and webhook id to `settings.env`.
|
|
60
58
|
**Verify:** sandbox checkout completes.
|
|
61
59
|
|
|
62
60
|
5. **Connect the automatic payment message (webhook).** Webhook URL is `/api/webhook` on the deployed app
|
|
@@ -27,7 +27,7 @@ Inspect an existing app before changing it. Scaffold a new kit app only when the
|
|
|
27
27
|
1. **Collect Twilio secret settings** through doctor (never ask the builder to type SIDs by hand):
|
|
28
28
|
`TWILIO_ACCOUNT_SID`, `TWILIO_AUTH_TOKEN`, `TWILIO_FROM_NUMBER`. Optional:
|
|
29
29
|
`TWILIO_VERIFY_SERVICE_SID`, `TWILIO_WHATSAPP_FROM`.
|
|
30
|
-
**Verify:** values saved to `.env`.
|
|
30
|
+
**Verify:** values saved to `settings.env` and `.env`.
|
|
31
31
|
|
|
32
32
|
2. **Set `NOTIFICATIONS_PROVIDER=twilio`.**
|
|
33
33
|
**Verify:** `resolveNotificationsProvider()` does not throw.
|
|
@@ -24,12 +24,10 @@ Inspect an existing app before changing it. Scaffold a new kit app only when the
|
|
|
24
24
|
## Steps
|
|
25
25
|
|
|
26
26
|
<!-- vybekiit:page-recipe-install -->
|
|
27
|
-
0. **
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Also reference `packages/agentKit` `getPageRecipeInstall('sign-in-with-email-link')` / page-recipe-manifest.json.
|
|
32
|
-
**Verify:** `/login` shows a practice magic-link entry before provider wiring.
|
|
27
|
+
0. **Add the ready-made sign-in page first.** Run `vybekiit add page-recipe auth`. It adds the page
|
|
28
|
+
at `/login` (if the app already has a sign-in page, it is kept). Then add an "Email me a link" option to it.
|
|
29
|
+
Keep every `TODO:` in the page and fill each one in as you connect the real service.
|
|
30
|
+
**Verify:** `/login` opens and shows an "Email me a link" option with practice content.
|
|
33
31
|
|
|
34
32
|
1. **Confirm sign-in + email are wired** (`add-signin`, `setup-email` when going live).
|
|
35
33
|
**Verify:** email OTP or password sign-in already works.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: sign-in-with-google
|
|
3
|
-
description: "people can tap
|
|
3
|
+
description: "people can tap Continue with Google — one button that signs them in or creates their account. Use when the vibe coder says something like: sign in with google; continue with google."
|
|
4
4
|
metadata:
|
|
5
5
|
vybekiit-generated: buyer-skill-stub
|
|
6
6
|
---
|
|
@@ -28,14 +28,12 @@ needs it.
|
|
|
28
28
|
## Steps
|
|
29
29
|
|
|
30
30
|
<!-- vybekiit:page-recipe-install -->
|
|
31
|
-
0. **
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
Also reference `packages/agentKit` `getPageRecipeInstall('sign-in-with-google')` / page-recipe-manifest.json.
|
|
38
|
-
**Verify:** `/login` shows practice Google button before provider wiring.
|
|
31
|
+
0. **Add the ready-made sign-in page first.** Run `vybekiit add page-recipe auth`. It adds the page
|
|
32
|
+
at `/login` (if the app already has a sign-in page, it is kept). Then add a "Continue with Google" button to it.
|
|
33
|
+
Keep every `TODO:` in the page and fill each one in as you connect the real service.
|
|
34
|
+
Need terms and privacy pages for Google? Run `vybekiit add page-recipe terms-of-service` and
|
|
35
|
+
`vybekiit add page-recipe privacy-policy` (they add `/terms` and `/privacy`).
|
|
36
|
+
**Verify:** `/login` opens and shows a practice "Continue with Google" button.
|
|
39
37
|
|
|
40
38
|
1. **Make sure the basics exist.** Database (`save-data`) and base sign-in (`add-signin`) must work
|
|
41
39
|
first — Google builds on top.
|
|
@@ -45,10 +43,13 @@ needs it.
|
|
|
45
43
|
If it says "not signed in yet," walk the builder through the one command it prints.
|
|
46
44
|
**Verify:** doctor reports gcloud ready.
|
|
47
45
|
|
|
48
|
-
3. **Create the Google login for your app.**
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
3. **Create the Google login for your app.** Run `vybekiit-automate google oauth --json` with
|
|
47
|
+
`--project=<gcloud-project-id>`, `--app-name=<app-name>`, `--support-email=<builder-email>`,
|
|
48
|
+
`--app-url=<app-url>` and `--redirect=<app-url>/api/auth/callback/google`. It creates (or fixes) the
|
|
49
|
+
Web login client and saves `GOOGLE_OAUTH_CLIENT_ID` to `settings.env` and
|
|
50
|
+
`GOOGLE_OAUTH_CLIENT_SECRET` to `.env`, printing only their names. If Google asks to sign in, the builder signs in once in the
|
|
51
|
+
browser it opens. Never ask the builder to open the Google Cloud console.
|
|
52
|
+
**Verify:** both names are listed as saved and are non-empty.
|
|
52
53
|
|
|
53
54
|
4. **Enable Google on the sign-in handler.** Follow `platform-skills/better-auth-vybekiit.md` — add
|
|
54
55
|
the Google social provider to the auth route. One flow handles sign-in and sign-up.
|
|
@@ -25,15 +25,13 @@ Inspect an existing app before changing it. Scaffold a new kit app only when the
|
|
|
25
25
|
## Steps
|
|
26
26
|
|
|
27
27
|
<!-- vybekiit:page-recipe-install -->
|
|
28
|
-
0. **
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
Also reference `packages/agentKit` `getPageRecipeInstall('sign-in-with-phone')` / page-recipe-manifest.json.
|
|
33
|
-
**Verify:** `/login` shows practice phone sign-in UI before provider wiring.
|
|
28
|
+
0. **Add the ready-made sign-in page first.** Run `vybekiit add page-recipe auth`. It adds the page
|
|
29
|
+
at `/login` (if the app already has a sign-in page, it is kept). Then add a phone number and code form to it.
|
|
30
|
+
Keep every `TODO:` in the page and fill each one in as you connect the real service.
|
|
31
|
+
**Verify:** `/login` opens and shows a phone number and code form with practice content.
|
|
34
32
|
|
|
35
33
|
1. **Run `setup-sms` first** if Twilio secret settings are not filled in.
|
|
36
|
-
**Verify:** `NOTIFICATIONS_PROVIDER=twilio` and
|
|
34
|
+
**Verify:** `NOTIFICATIONS_PROVIDER=twilio` in `settings.env` and `TWILIO_AUTH_TOKEN` in `.env`.
|
|
37
35
|
|
|
38
36
|
2. **Add phone + code UI** on login → send code, then verify.
|
|
39
37
|
**Verify:** practice mode accepts code `000000` with empty Twilio settings.
|