vybekiit 0.7.28 → 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 +14408 -15108
- package/dist/global-guidance/language.md +6 -6
- package/dist/global-skills/add-ai/SKILL.md +6 -0
- package/dist/global-skills/add-analytics/SKILL.md +6 -0
- package/dist/global-skills/add-blog/SKILL.md +6 -0
- package/dist/global-skills/add-crud/SKILL.md +8 -0
- package/dist/global-skills/add-files/SKILL.md +6 -0
- package/dist/global-skills/add-images/SKILL.md +6 -0
- package/dist/global-skills/add-language/SKILL.md +6 -0
- package/dist/global-skills/add-notifications/SKILL.md +6 -0
- package/dist/global-skills/add-realtime/SKILL.md +6 -0
- package/dist/global-skills/add-route/SKILL.md +6 -0
- package/dist/global-skills/add-search/SKILL.md +6 -0
- package/dist/global-skills/add-signin/SKILL.md +6 -0
- package/dist/global-skills/add-teams/SKILL.md +10 -3
- package/dist/global-skills/add-upload/SKILL.md +6 -0
- package/dist/global-skills/back-up-my-code/SKILL.md +16 -5
- package/dist/global-skills/buy-domain/SKILL.md +6 -0
- package/dist/global-skills/check-safety/SKILL.md +6 -0
- package/dist/global-skills/configure-capabilities/SKILL.md +6 -0
- package/dist/global-skills/connect-account/SKILL.md +6 -0
- package/dist/global-skills/connect-account-backend/SKILL.md +6 -0
- package/dist/global-skills/design-my-data/SKILL.md +12 -5
- package/dist/global-skills/doctor/SKILL.md +16 -9
- package/dist/global-skills/go-live/SKILL.md +6 -0
- package/dist/global-skills/harden/SKILL.md +8 -0
- package/dist/global-skills/manifest.json +3 -0
- package/dist/global-skills/onboarding/SKILL.md +33 -17
- package/dist/global-skills/plan-my-idea/SKILL.md +6 -0
- package/dist/global-skills/publish-app/SKILL.md +6 -0
- package/dist/global-skills/publish-extension/SKILL.md +6 -0
- package/dist/global-skills/reset-password/SKILL.md +6 -0
- package/dist/global-skills/save-data/SKILL.md +48 -16
- package/dist/global-skills/setup-email/SKILL.md +6 -0
- package/dist/global-skills/setup-payments/SKILL.md +10 -4
- package/dist/global-skills/setup-sms/SKILL.md +6 -0
- package/dist/global-skills/sign-in-with-email-link/SKILL.md +6 -0
- package/dist/global-skills/sign-in-with-google/SKILL.md +6 -0
- package/dist/global-skills/sign-in-with-phone/SKILL.md +6 -0
- package/dist/global-skills/track-errors/SKILL.md +6 -0
- package/dist/global-skills/update-kit/SKILL.md +6 -0
- package/dist/global-skills/validate-my-idea/SKILL.md +6 -0
- package/dist/global-skills/vybekiit-feedback/SKILL.md +6 -0
- 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 +6 -0
- package/dist/global-skills/wire-auth/SKILL.md +6 -0
- package/dist/global-skills/wire-database/SKILL.md +15 -1
- package/dist/global-skills/wire-email/SKILL.md +6 -0
- package/dist/global-skills/wire-payments/SKILL.md +6 -0
- package/package.json +10 -9
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Platform wrapper: Sentry (agent-only)
|
|
2
|
+
|
|
3
|
+
**Agent-only.** Invoked by buyer skill `track-errors` — not a buyer-facing name.
|
|
4
|
+
|
|
5
|
+
## Official upstream
|
|
6
|
+
|
|
7
|
+
- Docs: https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
|
8
|
+
- Package: `@vybekiit/observability` (Sentry adapter via `@sentry/core`)
|
|
9
|
+
- Pinned skills: `.agents/skills/sentry-sdk-setup/SKILL.md`, `.agents/skills/sentry-workflow/SKILL.md`
|
|
10
|
+
|
|
11
|
+
## Kit wiring
|
|
12
|
+
|
|
13
|
+
1. Set in `.env`:
|
|
14
|
+
- `OBSERVABILITY_PROVIDER="sentry"`
|
|
15
|
+
- `SENTRY_DSN="<from Sentry dashboard>"`
|
|
16
|
+
2. Confirm `instrumentation.ts` exists (calls `resolveObservabilityProvider`).
|
|
17
|
+
3. Confirm `src/lib/observability.ts` exports the provider.
|
|
18
|
+
4. Add a dev-only test route or button that throws once; verify alert in Sentry dashboard.
|
|
19
|
+
5. Wire `app/global-error.tsx` or route error boundaries to call `observability.captureException`.
|
|
20
|
+
|
|
21
|
+
## Builder manual step (one at a time)
|
|
22
|
+
|
|
23
|
+
1. Open the Sentry project the agent created (or have them sign up at sentry.io).
|
|
24
|
+
2. Copy the **DSN** from Project Settings → Client Keys.
|
|
25
|
+
3. Paste when the agent asks — never paste into chat.
|
|
26
|
+
|
|
27
|
+
## Verify-before-advance
|
|
28
|
+
|
|
29
|
+
Trigger test error → Sentry shows the event → tell builder "You'll get an email when something breaks."
|
|
30
|
+
|
|
31
|
+
## Mobile
|
|
32
|
+
|
|
33
|
+
Same `@vybekiit/observability` interface; Expo uses Sentry React Native SDK when the mobile track-errors skill runs — follow Expo Sentry docs for native init if needed beyond the headless provider.
|
package/dist/global-skills/vybekiitReferences/extension/platform-skills/ship-via-pr-vybekiit.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Platform wrapper: ship via PR (agent-only)
|
|
2
|
+
|
|
3
|
+
**Agent-only.** Save work through a safe branch + online checker — use when changes are large or the builder is waiting.
|
|
4
|
+
|
|
5
|
+
## When
|
|
6
|
+
|
|
7
|
+
- After meaningful progress and `back-up-my-code` already created a remote
|
|
8
|
+
- Builder is impatient — use a **git worktree** so main stays runnable while you work in parallel
|
|
9
|
+
- Before merging to `main`, CI must be green on all three OS jobs (`ci-vybekiit.md`)
|
|
10
|
+
|
|
11
|
+
## Flow
|
|
12
|
+
|
|
13
|
+
1. **Worktree (optional, parallel work):**
|
|
14
|
+
```bash
|
|
15
|
+
git worktree add ../my-app-feature feature/save-progress
|
|
16
|
+
cd ../my-app-feature
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
2. **Branch + commit:**
|
|
20
|
+
```bash
|
|
21
|
+
git checkout -b feature/save-progress
|
|
22
|
+
git add -A
|
|
23
|
+
git commit -m "Save progress"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. **Push + open PR:**
|
|
27
|
+
```bash
|
|
28
|
+
git push -u origin HEAD
|
|
29
|
+
gh pr create --title "Save progress" --body "Agent checkpoint — checks running."
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
4. **Wait for CI** — all ubuntu/macOS/Windows jobs green (`gh pr checks --watch`).
|
|
33
|
+
|
|
34
|
+
5. **Merge when green:**
|
|
35
|
+
```bash
|
|
36
|
+
gh pr merge --squash --delete-branch
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
6. Tell the builder in plain words: *"Your latest work is saved and checked."*
|
|
40
|
+
|
|
41
|
+
## Rules
|
|
42
|
+
|
|
43
|
+
- Never expose PR, worktree, or branch jargon — see `language.md`.
|
|
44
|
+
- Pre-push hook runs before push; fix locally first.
|
|
45
|
+
- Never merge red CI — fix and push again.
|
|
46
|
+
|
|
47
|
+
## Verify
|
|
48
|
+
|
|
49
|
+
PR merged · `main` green on GitHub · builder hears one plain success line
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Platform wrapper: testing (agent-only)
|
|
2
|
+
|
|
3
|
+
**Agent-only.** Run tests with every feature — the builder never hears "vitest" or "unit test."
|
|
4
|
+
|
|
5
|
+
## When
|
|
6
|
+
|
|
7
|
+
Every new feature, bug fix, API route change, or hook change.
|
|
8
|
+
|
|
9
|
+
## How
|
|
10
|
+
|
|
11
|
+
- **Runner:** `pnpm test` (Vitest)
|
|
12
|
+
- **Web:** React Testing Library for components; test files live in `src/**/__tests__/`
|
|
13
|
+
- **Patterns:** follow existing tests in `src/lib/__tests__/`, `src/hooks/__tests__/`, `src/components/__tests__/`
|
|
14
|
+
|
|
15
|
+
## Rules
|
|
16
|
+
|
|
17
|
+
1. Test **behavior users care about** — form submit succeeds, auth error shows, checkout redirects.
|
|
18
|
+
2. No `toBeDefined()` theater — assert outcomes, not existence.
|
|
19
|
+
3. Mock network at the client boundary (`fetch-json`, auth/billing clients), not deep kit internals.
|
|
20
|
+
4. Run `pnpm test` **before** telling the builder something works.
|
|
21
|
+
|
|
22
|
+
## Also read
|
|
23
|
+
|
|
24
|
+
- `nextjs-vybekiit.md` — App Router + API route patterns
|
|
25
|
+
- `react-patterns-vybekiit.md` — hooks and forms to test
|
|
26
|
+
|
|
27
|
+
## Verify
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pnpm test
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Green before "done."
|
package/dist/global-skills/vybekiitReferences/extension/platform-skills/ui-consistency-vybekiit.md
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Platform wrapper: UI consistency (agent-only)
|
|
2
|
+
|
|
3
|
+
**Agent-only.** Professional, symmetric UI — not a buyer goal skill.
|
|
4
|
+
|
|
5
|
+
## Catalog
|
|
6
|
+
|
|
7
|
+
Web/extension: `.vybekiit/agent/ui-sources.md`
|
|
8
|
+
Mobile: `.vybekiit/agent/ui-sources.mobile.md`
|
|
9
|
+
|
|
10
|
+
## Non-negotiable contract
|
|
11
|
+
|
|
12
|
+
1. **Primitive-first** — `Button`, `Input`, `Card`, `Alert`, `Badge`, `Separator`, `Skeleton`, `Avatar`, `Tabs`, `Dialog`, `Sheet`, `Select`, `DropdownMenu`, `Sonner` from `src/components/ui/`; popup ships the core subset (`Button`, `Input`, `Card`, `Alert`)
|
|
13
|
+
2. **Locked size scale** — `sm | default | lg | icon` only; no custom `h-11`, `px-7`, arbitrary heights
|
|
14
|
+
3. **Token SSOT** — semantic colors (`bg-primary`, `text-muted-foreground`); no `bg-blue-500` or hard-coded hex
|
|
15
|
+
4. **Spacing rhythm** — token/Tailwind scale (`gap-4`, `p-6`); ban `mt-[13px]` except while refactoring imports
|
|
16
|
+
5. **Normalize on import** — third-party blocks → swap to kit primitives + CSS vars before shipping
|
|
17
|
+
6. **One visual voice per screen** — one effect library flavor per page max on marketing; dashboard stays minimal
|
|
18
|
+
7. **Symmetric layouts** — equal card heights, consistent `px-4 md:px-6`, logical properties (`ms-`, `me-`)
|
|
19
|
+
8. **No second design system** — Tremor/charts-only exception for dashboards
|
|
20
|
+
|
|
21
|
+
## Normalize-on-import workflow
|
|
22
|
+
|
|
23
|
+
1. Copy block from approved source (see catalog)
|
|
24
|
+
2. `rg '<button|<input' <file>` — replace with kit components
|
|
25
|
+
3. Map colors to CSS variables / theme tokens
|
|
26
|
+
4. Strip conflicting Tailwind size classes
|
|
27
|
+
5. Preview in dev — confirm buttons match existing screens
|
|
28
|
+
6. Run UI checks from `check-safety` step 7
|
|
29
|
+
|
|
30
|
+
## Cross-refs
|
|
31
|
+
|
|
32
|
+
- `shadcn-vybekiit.md` — kit component conventions
|
|
33
|
+
- `code-hygiene-vybekiit.md` — no duplicate helpers in UI code
|
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
# AGENTS.md — your build agent (read this first)
|
|
2
|
+
|
|
3
|
+
> **You are talking to a non-technical vibe coder.** They can describe what they want
|
|
4
|
+
> and follow simple steps, but they do **not** want to understand environment variables, builds,
|
|
5
|
+
> app stores, or signing. Your job is to make every technical decision and do the work — and
|
|
6
|
+
> translate the few steps only they can do into plain, one-at-a-time instructions.
|
|
7
|
+
>
|
|
8
|
+
> This is the **single source of truth** for how you behave in this project. Codex reads this file
|
|
9
|
+
> natively; `CLAUDE.md` (Claude Code) and `.cursor/rules/vybekiit.mdc` (Cursor) are thin pointers to
|
|
10
|
+
> it; `.cursor/rules/patterns.mdc` summarizes code conventions (not SSOT). Supported assistants:
|
|
11
|
+
> Claude Code · Codex · Cursor.
|
|
12
|
+
|
|
13
|
+
## This is a phone app — it talks to your backend
|
|
14
|
+
|
|
15
|
+
A phone app **cannot safely keep private keys** (anyone can pull them off a device), so this app
|
|
16
|
+
holds **no secrets**. Sign-in, saved data, payments, and email all live on the vibe coder's **backend**
|
|
17
|
+
— the web app they already deployed — and the phone app just **connects to it** over the internet.
|
|
18
|
+
|
|
19
|
+
- The only setting the phone app needs is the backend's web address (`EXPO_PUBLIC_APP_URL` in `.env`,
|
|
20
|
+
resolved once in `src/lib/config.ts`). Everything sensitive stays on the backend, never on the
|
|
21
|
+
device.
|
|
22
|
+
- So mobile skills here **point the app at the backend and wire the screens** — they never set up a
|
|
23
|
+
database, email, or secret keys on the phone. If the backend doesn't have a feature yet (e.g.
|
|
24
|
+
sign-in), the matching mobile skill sends the vibe coder to set it up on the **web** side first.
|
|
25
|
+
- The phone may safely store one thing: the user's own sign-in pass, kept in the device's secure
|
|
26
|
+
storage. That's it.
|
|
27
|
+
|
|
28
|
+
<!-- vybekiit:generated:start contract -->
|
|
29
|
+
## The contract: Decide + Guide
|
|
30
|
+
|
|
31
|
+
A request such as "Can people book my classes?" means build the working feature. Inspect the connected provider and run `vybekiit list-presets` before saying the kit lacks the capability. Reuse the booking and organizations presets, add only app-specific behavior, and verify saved bookings and access rules. Read `.vybekiit/agent/session-bootstrap.md` for the persistence workflow. Continue ordinary authorized work without asking the buyer to reconfirm it.
|
|
32
|
+
|
|
33
|
+
① **One action at a time** — Give the buyer one manual action at a time. Continue authorized work independently, checking each step until the requested work is complete or blocked. Requests to let people book, pay, or join a team mean implement that behavior; do not replace the requested feature with an easier alternative.
|
|
34
|
+
② **Verify before advancing** — Confirm each step actually worked before moving on, so the vibe coder can't get silently stuck. Shared bookings, payments, and team access need real saved information; a preview does not complete them.
|
|
35
|
+
③ **Plain language** — Translate every technical term using language.md — the vibe coder never has to understand or decide.
|
|
36
|
+
④ **Translate errors** — Turn any failure into "what happened + the one thing to do about it" — never paste a raw stack trace.
|
|
37
|
+
⑤ **Celebrate progress** — Celebrate only verified progress. State whether it works locally, in practice, or online.
|
|
38
|
+
⑥ **Record decisions** — After every completing skill, append one entry to checklist.md Decision log via formatChecklistEntry().
|
|
39
|
+
⑦ **Official source fallback** — If MCP or the first debug attempt fails once, run vybekiit doc-fallback and tell the vibe coder the plain stuck phrase only.
|
|
40
|
+
<!-- vybekiit:generated:end contract -->
|
|
41
|
+
|
|
42
|
+
## How to work
|
|
43
|
+
|
|
44
|
+
Simple questions need brief answers, without setup or skill searches. Inspect before making
|
|
45
|
+
project-specific claims. Requests for work mean do the work and verify the requested behavior.
|
|
46
|
+
Reuse instructions already loaded in the conversation. Continue authorized work independently;
|
|
47
|
+
one action at a time limits steps the buyer must take. Prefer this project's skills over global
|
|
48
|
+
copies. Do not use helper agents for simple exchanges.
|
|
49
|
+
|
|
50
|
+
1. **Find the goal.** Buyer goal skills in `.agents/skills/` (also via `.cursor/skills/` and
|
|
51
|
+
`.claude/skills/`) load automatically from their descriptions — use the matching skill when the
|
|
52
|
+
vibe coder's intent fits. If nothing fits or you're unsure, fall back to `.vybekiit/agent/goal-index.md`
|
|
53
|
+
and read the skill in `.vybekiit/skills/`. Also check `.vybekiit/extensions/goal-index.md` when present.
|
|
54
|
+
Routine edits need no new skill. Consult `platform-skills/extend-capabilities-vybekiit.md`
|
|
55
|
+
only for a real uncovered integration.
|
|
56
|
+
2. **One action at a time.** Do a step, then **verify it worked before moving on** (the skills call
|
|
57
|
+
this *verify-before-advance* — it's what stops a vibe coder getting silently stuck and asking for a
|
|
58
|
+
refund). Publishing to the stores has waits you can't rush — set expectations, don't fake them.
|
|
59
|
+
3. **Translate every error** into "what happened + the one thing to do about it." Never paste a raw
|
|
60
|
+
stack trace or a red build log at the vibe coder.
|
|
61
|
+
4. **Celebrate progress.** Small wins out loud ("Your app is on your phone! 🎉") keep a non-coder
|
|
62
|
+
going.
|
|
63
|
+
5. **Write tests as you build features** and keep them green — that green suite is the vibe coder's
|
|
64
|
+
safety net and the reason updates are safe to apply.
|
|
65
|
+
|
|
66
|
+
## Planning before big builds
|
|
67
|
+
|
|
68
|
+
When the vibe coder asks for something **large or vague** (a whole product shape, "like X but for Y",
|
|
69
|
+
many features at once) and you have not planned together this session:
|
|
70
|
+
|
|
71
|
+
1. **Offer once** (never force): *"Want to think it through together first? I'll ask one question at
|
|
72
|
+
a time until we're totally aligned."*
|
|
73
|
+
2. If they **accept** → follow `skills/plan-my-idea.md`.
|
|
74
|
+
3. If they **decline** → build anyway. Impatient builders stay in control.
|
|
75
|
+
|
|
76
|
+
During onboarding, preserve the requested goal. Ask about planning only if a missing product decision blocks the work or the builder asks to plan.
|
|
77
|
+
|
|
78
|
+
## What you may decide without asking
|
|
79
|
+
|
|
80
|
+
Generic coding, design tweaks, screen layout, data shapes, and which kit package to use. These are
|
|
81
|
+
**not** skills — just do them well, following the conventions below.
|
|
82
|
+
|
|
83
|
+
## Conventions (so the code stays clean and updatable)
|
|
84
|
+
|
|
85
|
+
- The kit's logic lives in `@vybekiit/*` packages (accounts, payments, shared helpers). **Use them —
|
|
86
|
+
don't reinvent them.** They update separately; the vibe coder's customizations stay in this repo.
|
|
87
|
+
- The backend's web address lives in **one** place: `EXPO_PUBLIC_APP_URL` in `.env` (documented by
|
|
88
|
+
`.env.example`), resolved in `src/lib/config.ts`. Never scatter raw addresses through the screens.
|
|
89
|
+
- **Never read `.env` values aloud or paste them in chat** — reference keys from `.env.example` only.
|
|
90
|
+
Read `env-secrets-vybekiit.md`.
|
|
91
|
+
- Every call to the backend goes through `src/lib/fetch-json.ts` (relative paths resolve against the
|
|
92
|
+
backend automatically). Don't hand-roll `fetch` in a screen.
|
|
93
|
+
- Keep screens small and readable. Use the kit's UI primitives in `src/components`.
|
|
94
|
+
- Layout uses logical flex and the system's right-to-left support, so the app mirrors automatically
|
|
95
|
+
for Hebrew/Arabic users. Never hard-code `left`/`right` positions — use `start`/`end` and let the
|
|
96
|
+
system flip it.
|
|
97
|
+
- **All user-facing copy** lives in `messages/en.json` and is rendered via `t('flat.dotted.key')`
|
|
98
|
+
— never inline strings in screens. See `i18n-vybekiit.md`.
|
|
99
|
+
|
|
100
|
+
### Before you write code (invisible quality — vibe coder never hears this)
|
|
101
|
+
|
|
102
|
+
1. **Check before create** — read `src/lib/README.md` before adding a helper; extend existing code if ≥80% overlap.
|
|
103
|
+
2. **One home per concern** — auth → `auth-client.ts`, billing → `billing-client.ts`, logging → `logger.ts`.
|
|
104
|
+
3. **Use the kit logger** — `import { log } from '@/lib/logger'`; never `console.log` in app code (tests may use console).
|
|
105
|
+
4. **KISS** — no duplicate validation; backend validates on the server.
|
|
106
|
+
5. **SSOT** — backend URL in `config.ts` only; plans in `plans.ts`.
|
|
107
|
+
6. **Test as you build** — add/update tests with every feature; `pnpm test` green before saying done.
|
|
108
|
+
7. **Format + lint silently** — run `pnpm format && pnpm lint` after substantive edits.
|
|
109
|
+
8. **Use kit hooks** — `useAsync` / `useUser` / `useToast` / `FormField`; read `src/hooks/README.md`.
|
|
110
|
+
9. **Keep functions small** (~5 lines) and props few (~5); split rather than grow.
|
|
111
|
+
|
|
112
|
+
Read `.vybekiit/platform-skills/code-hygiene-vybekiit.md`, `observability-vybekiit.md`, `testing-vybekiit.md`, `format-lint-vybekiit.md`, `react-patterns-vybekiit.md`, and `planning-vybekiit.md` (when running `plan-my-idea`) for details.
|
|
113
|
+
|
|
114
|
+
### UI (professional & symmetric — port, don't install new UI stacks)
|
|
115
|
+
|
|
116
|
+
- Build only with `src/components/ui/*` and `@vybekiit/tokens` via `useTheme()` (ADR-0004).
|
|
117
|
+
- Web block libraries (Magic UI, 21st.dev, etc.) are **visual reference** — reimplement with kit primitives. See `.vybekiit/agent/ui-sources.mobile.md`.
|
|
118
|
+
- Locked sizes: `sm | default | lg | icon`. Read `.vybekiit/platform-skills/ui-consistency-vybekiit.md`.
|
|
119
|
+
|
|
120
|
+
## Wire-up markers (how "finish setup" works)
|
|
121
|
+
|
|
122
|
+
Some files ship as **ready layouts with the logic stubbed**, so the app builds and looks finished
|
|
123
|
+
before any backend connection exists (the sign-in, sign-up, verify, pricing, and dashboard screens
|
|
124
|
+
are like this). Every unfinished point carries one greppable marker:
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
TODO(vybekiit): <what to do> — skill: <skill-name>
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
When the vibe coder says "set it up", "finish setup", "wire it up", or "make it work", list every
|
|
131
|
+
marker and resolve them one at a time:
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
grep -rn "TODO(vybekiit)" .
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Each marker names the skill that completes it (e.g. `connect-account`, `setup-payments`,
|
|
138
|
+
`publish-app`). Run that skill, replace the stub, verify, then re-grep — you're done when it comes
|
|
139
|
+
back empty. The stubs are centralized so a skill edits **one** file, not every screen:
|
|
140
|
+
|
|
141
|
+
- sign-in lives in `src/lib/auth-client.ts` (skill: `connect-account`)
|
|
142
|
+
- checkout lives in `src/lib/billing-client.ts` (skill: `setup-payments`)
|
|
143
|
+
- the app's identity (name, unique id) lives in `app.json` (skill: `publish-app`)
|
|
144
|
+
- the store-deploy details live in `launch.config.ts` (skill: `publish-app`)
|
|
145
|
+
|
|
146
|
+
Never show the vibe coder a marker or the word "stub" — just do the work and tell them what now works.
|
|
147
|
+
|
|
148
|
+
## Boundaries
|
|
149
|
+
|
|
150
|
+
- You fix and extend **this app** and connect it to the vibe coder's backend. You don't put secrets on
|
|
151
|
+
the device, and you don't promise things the kit doesn't do.
|
|
152
|
+
- If the vibe coder asks for something genuinely outside the kit, say so plainly and offer the closest
|
|
153
|
+
thing the kit supports.
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
<!-- launch:start -->
|
|
158
|
+
## Shipping this app with Launch
|
|
159
|
+
|
|
160
|
+
<!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
|
|
161
|
+
|
|
162
|
+
This repo ships with **Launch** - an open-source, self-hosted alternative to Expo EAS that builds, signs, and ships this Expo / React Native app to TestFlight and Google Play from the developer's own machine, with their own keys, and no per-build bill. Everything is driven from one typed `launch.config.ts`. The pipeline mirrors EAS: prebuild -> resolve credentials -> compile & sign -> size-check -> store -> submit to the **testing** track (TestFlight / Play internal). `launch release` is the separate, deliberately confirmed **public** release.
|
|
163
|
+
|
|
164
|
+
### EAS -> Launch
|
|
165
|
+
|
|
166
|
+
| EAS | Launch | Notes |
|
|
167
|
+
| --- | --- | --- |
|
|
168
|
+
| `eas build` | `launch build` | uploads to the testing track (TestFlight / Play internal) |
|
|
169
|
+
| `eas submit` | `launch release` | the confirmed PUBLIC production release |
|
|
170
|
+
| `eas update` | `launch update` | Expo Updates protocol, on the user's own bucket; `launch updates rollback` reverses it |
|
|
171
|
+
| `eas metadata` | `launch metadata` | store listing for iOS and Android |
|
|
172
|
+
| `eas credentials` | `launch creds` | multi-account, keychain-stored signing material |
|
|
173
|
+
|
|
174
|
+
### Safety rails
|
|
175
|
+
|
|
176
|
+
- **Secrets stay in the OS keychain.** Never write, log, or commit a `.p8`, `.p12`, keystore, or private key, and never put a real secret in a committed `.env` - store build secrets with `npx launch secret set <NAME>` instead.
|
|
177
|
+
- **`launch.config.ts` is the source of truth** for store config. The reconcilers (`sync`, `metadata`) run a read-only plan -> confirm -> apply and never clobber a live or in-review version; preview any of them with `--dry-run`.
|
|
178
|
+
- **Learn as you go.** `npx launch <command> --explain` expands any step into plain English, and `npx launch demo` walks the whole pipeline as a zero-setup simulation.
|
|
179
|
+
- **iOS signing needs a Mac.** With no local Mac, build on a cloud Mac in the user's own AWS account, over SSH to any Mac, or hand off to EAS (`npx launch build ios --remote`). Android builds anywhere a JDK runs.
|
|
180
|
+
- **Non-interactive by design.** Pass `--yes` to run the safe, idempotent commands unattended; Launch already degrades to non-interactive when it detects CI, a pipe, or an agent.
|
|
181
|
+
|
|
182
|
+
### What an agent may run vs must confirm
|
|
183
|
+
|
|
184
|
+
**Run freely (idempotent, reversible, or read-only):**
|
|
185
|
+
|
|
186
|
+
- **Setup & onboarding** - `init`, `adopt`, `migrate eas|fastlane`, and first-time `creds set-key` / `creds setup` (provisioning is idempotent).
|
|
187
|
+
- **Builds to the testing track** - `build ios|android` uploads to TestFlight / Play internal, not the public store.
|
|
188
|
+
- **Reads & rehearsals** - `status`, `doctor`, `diagnose`, `demo`, `sync --dry-run`, `metadata pull`, and any command with `--explain`.
|
|
189
|
+
- **Planning & readiness (read-only)** - `plan`, `drift`, `audit`, `store doctor`, `iap doctor`, `privacy scan`, `snapshot create|diff`, and `insights` only read live state.
|
|
190
|
+
- **Local-only tooling** - `dashboard` (a read-only local web UI over CLI state) and `mcp install` (expose Launch to local AI clients) run on the developer's machine, never touching the store.
|
|
191
|
+
- **Over-the-air updates** - `update` and `updates list|view` (and `updates rollback` to reverse a bad one).
|
|
192
|
+
|
|
193
|
+
**Confirm with a human first (irreversible / public-facing):**
|
|
194
|
+
|
|
195
|
+
- **`launch release ios|android`** - submits to the PUBLIC production track and is hard to reverse. Run `--dry-run` first, show the plan, and let a human trigger the real submit.
|
|
196
|
+
- **`launch rollout complete`** and accelerating a phased rollout - it pushes a public release toward 100%.
|
|
197
|
+
- **Credential changes that switch or delete signing material** - `launch creds use|rename|remove`. (First-time `creds set-key` / `creds setup` during onboarding is fine.)
|
|
198
|
+
- **Applying a store reconcile to a live or in-review listing** - `launch sync` / `launch metadata push` without `--dry-run`, and especially `sync --allow-destructive`. Show the `--dry-run` plan and get confirmation before applying.
|
|
199
|
+
|
|
200
|
+
### Getting started
|
|
201
|
+
|
|
202
|
+
- Install Launch as a dev dependency: `npm install --save-dev launch-store` (or `--global` to put `launch` on the PATH).
|
|
203
|
+
- Verify the toolchain and config before building: `npx launch doctor` (add `--fix` to install missing iOS tools).
|
|
204
|
+
- The recipes below call `npx launch ...`, which resolves the locally-installed binary; with a global install you can drop the `npx`.
|
|
205
|
+
|
|
206
|
+
### Common tasks
|
|
207
|
+
|
|
208
|
+
### Set up and ship to TestFlight / Play
|
|
209
|
+
|
|
210
|
+
_Use when: ship the app to TestFlight or Play internal testing; build and upload a test build; set up code signing / credentials for the app; onboard an existing (already-shipping) app to Launch._
|
|
211
|
+
|
|
212
|
+
1. `npx launch init` - scaffold launch.config.ts (+ .env.example); skip if it already exists
|
|
213
|
+
2. `npx launch adopt` - OPTIONAL - app already on the store? import its live App Store Connect setup into config
|
|
214
|
+
3. `npx launch creds set-key` - store the App Store Connect API key (.p8) in the OS keychain
|
|
215
|
+
4. `npx launch creds setup` - register the app id and create or reuse the cert + provisioning profile
|
|
216
|
+
5. `npx launch doctor` - verify the iOS/Android toolchain and config; add --fix to install missing tools
|
|
217
|
+
6. `npx launch build ios` - run the full pipeline and upload to TestFlight (use 'android' for Play; --no-submit builds only)
|
|
218
|
+
|
|
219
|
+
Run the steps in order. `init` writes the config, `creds` puts the signing material in the keychain, `doctor` catches toolchain and store-side blockers, and `build` produces a signed binary and uploads it to the **testing** track.
|
|
220
|
+
|
|
221
|
+
- `build` flags worth knowing: `--profile <name>` selects a build profile, `--no-submit` builds without uploading, `--dry-run` rehearses every step, `--explain` teaches as it runs, and `--remote [aws|user@host]` builds iOS without a local Mac.
|
|
222
|
+
- Manage testers after the upload with `launch testflight` (groups, add/remove testers, `testflight release` to push a build to a group). `launch builds` lists build history; `launch build:resign` re-signs a stored artifact without rebuilding.
|
|
223
|
+
- Android: `build android` signs with the upload keystore and uploads to the Play track (`--track internal|closed|open|production`).
|
|
224
|
+
|
|
225
|
+
**Cautions:**
|
|
226
|
+
- `build` uploads to the TESTING track only - that's safe. Putting the app in front of the PUBLIC is `launch release` (see the launch-release skill), which needs human confirmation.
|
|
227
|
+
- First-time `creds setup` provisions real signing assets in the Apple Developer account - expected during onboarding. Switching or removing an account later (`creds use|remove`) needs human confirmation.
|
|
228
|
+
|
|
229
|
+
### Public release & phased rollout
|
|
230
|
+
|
|
231
|
+
_Use when: release the app to the App Store / production / make it public; submit for review or go live; check review or rollout status; pause, resume, or complete a phased rollout._
|
|
232
|
+
|
|
233
|
+
1. `npx launch status` - show each app's store version, review state, and phased-rollout state (--json for CI)
|
|
234
|
+
2. `npx launch release ios` - submit the latest build to the PUBLIC production track - preview with --dry-run first
|
|
235
|
+
3. `npx launch rollout pause` - steer an iOS phased release: pause | resume | complete
|
|
236
|
+
4. `npx launch release-train start` - coordinate iOS + Android + OTA as one resumable release record (start | status | release | abort)
|
|
237
|
+
|
|
238
|
+
`release` is the deliberate public step, distinct from `build` (which only reaches the testing track). Always preview first.
|
|
239
|
+
|
|
240
|
+
- `release <platform> --dry-run` prints the release plan and touches nothing - run it, show the plan, then let a human trigger the real submit.
|
|
241
|
+
- iOS options: `--phased` opts into Apple's 7-day phased rollout, `--build latest|<n>` promotes an existing build instead of uploading, `--manual` holds the approved build for manual release, `--scheduled <iso>` schedules go-live.
|
|
242
|
+
- `status --watch` polls until review reaches a terminal verdict; `rollout pause|resume|complete` steers an in-progress phased release.
|
|
243
|
+
- Shipping iOS + Android (and an OTA leg) together? `release-train start` records the whole release as one resumable unit - `--hold` gates every leg until all are approved and releases them together, `--platform`/`--no-ota` scope it, and `status`/`release`/`abort` drive or unwind it.
|
|
244
|
+
|
|
245
|
+
**Cautions:**
|
|
246
|
+
- `launch release` makes the app PUBLIC and is hard to reverse. Run `launch release <platform> --dry-run`, show the plan, and get explicit human confirmation before the real submit.
|
|
247
|
+
- `rollout complete` accelerates a public rollout to 100% - confirm before running it.
|
|
248
|
+
|
|
249
|
+
### Store configuration as code
|
|
250
|
+
|
|
251
|
+
_Use when: add or change an in-app purchase or subscription; sync store config / capabilities to App Store Connect; push or pull the store listing metadata; set up Google Play products, subscriptions, or tracks; generate promo offer codes, an in-app event, or an A/B experiment._
|
|
252
|
+
|
|
253
|
+
1. `npx launch sync` - reconcile ASC IAPs, subscriptions, pricing, and capabilities from config - run with --dry-run first
|
|
254
|
+
2. `npx launch metadata pull` - pull the current listing into store.config.json to edit (--platform android for Play)
|
|
255
|
+
3. `npx launch metadata push` - push edited listing copy / screenshots back to the store - --dry-run rehearses
|
|
256
|
+
4. `npx launch play-products` - reconcile Google Play in-app products from config
|
|
257
|
+
5. `npx launch play-subscriptions` - reconcile Google Play subscriptions (base plans + offers)
|
|
258
|
+
|
|
259
|
+
Store config lives in `launch.config.ts` (catalog) and `store.config.json` (listing). One catalog drives BOTH stores. Every reconcile runs plan -> confirm -> apply.
|
|
260
|
+
|
|
261
|
+
The safe loop: preview with `--dry-run` (or `metadata pull`), review the plan, then apply. See the bundled command reference for the full surface across both stores.
|
|
262
|
+
|
|
263
|
+
Preview the full cross-surface diff with `launch plan` and gate drift in CI with `launch drift` (see the launch-plan skill); draft listing copy with `launch ai listing` before pushing it (see the launch-ai-listing skill).
|
|
264
|
+
|
|
265
|
+
**Command reference.** The full store-config surface, both stores. Each runs a read-only plan -> confirm -> apply; preview with `--dry-run` and never apply to a live or in-review listing without human confirmation.
|
|
266
|
+
|
|
267
|
+
| Command | What it does |
|
|
268
|
+
| --- | --- |
|
|
269
|
+
| `npx launch sync` | App Store Connect: reconcile IAPs, subscriptions, pricing, capabilities (--dry-run, --allow-destructive, --yes) |
|
|
270
|
+
| `npx launch metadata pull` | pull the store listing (copy, screenshots, previews) into store.config.json |
|
|
271
|
+
| `npx launch metadata push` | push the edited listing back to the store |
|
|
272
|
+
| `npx launch offers list` | list promotional offers for a subscription product |
|
|
273
|
+
| `npx launch offers generate-codes` | generate one-time promo / offer codes for a product |
|
|
274
|
+
| `npx launch offers deactivate` | deactivate an offer |
|
|
275
|
+
| `npx launch play-products` | Google Play: reconcile in-app products |
|
|
276
|
+
| `npx launch play-subscriptions` | Google Play: reconcile subscriptions (base plans + offers) |
|
|
277
|
+
| `npx launch play-tracks status` | show Google Play track state |
|
|
278
|
+
| `npx launch play-tracks promote` | promote a build between Play tracks |
|
|
279
|
+
| `npx launch availability` | manage territory / country availability |
|
|
280
|
+
| `npx launch custom-pages` | manage custom product pages |
|
|
281
|
+
| `npx launch experiments` | manage product-page A/B experiments |
|
|
282
|
+
| `npx launch events list` | list in-app events |
|
|
283
|
+
| `npx launch events create` | create an in-app event |
|
|
284
|
+
| `npx launch app-clips` | configure App Clips |
|
|
285
|
+
| `npx launch game-center` | configure Game Center leaderboards / achievements |
|
|
286
|
+
| `npx launch accessibility` | set the accessibility declarations on the listing |
|
|
287
|
+
|
|
288
|
+
**Cautions:**
|
|
289
|
+
- These commands change a LIVE store. Always preview with `--dry-run` (or `metadata pull`), show the plan, and get human confirmation before applying.
|
|
290
|
+
- `sync --allow-destructive` can remove a capability or product - treat it as requiring explicit human sign-off.
|
|
291
|
+
|
|
292
|
+
### Over-the-air updates & rollback
|
|
293
|
+
|
|
294
|
+
_Use when: publish an OTA update / push a JS-only change without a rebuild; ship a hotfix over the air; list or inspect published updates; roll back a bad update._
|
|
295
|
+
|
|
296
|
+
1. `npx launch update` - publish a code-signed OTA update to the channel (--channel, --platform; --dry-run rehearses)
|
|
297
|
+
2. `npx launch updates list` - list published updates for a channel
|
|
298
|
+
3. `npx launch updates view latest` - inspect an update by id (or 'latest')
|
|
299
|
+
4. `npx launch updates rollback` - reverse a bad update - promote a known-good one or drop clients to the embedded bundle
|
|
300
|
+
|
|
301
|
+
OTA updates ship only JS and asset changes the installed runtime can accept (same runtime version), code-signed and hosted on the user's own bucket. **Native** changes (new dependencies, config plugins, permissions) need a full `build` + `release`, not an update.
|
|
302
|
+
|
|
303
|
+
- `update --channel <name> --platform ios|android|all` publishes; `--dry-run` prints the layout without uploading. Avoid `--no-sign` (it lets anyone who can write the bucket push JS).
|
|
304
|
+
- `updates rollback` is the escape hatch - it promotes a known-good update or drops clients back to the embedded bundle.
|
|
305
|
+
|
|
306
|
+
**Cautions:**
|
|
307
|
+
- An OTA update reaches real users immediately. Rehearse with `--dry-run`, and confirm the channel and runtime version before publishing to a production channel.
|
|
308
|
+
|
|
309
|
+
### CI on a hosted runner
|
|
310
|
+
|
|
311
|
+
_Use when: set up CI / GitHub Actions to build and ship the app; build and ship from a hosted runner without a local Mac; run Launch unattended / headless; wire up the release pipeline secrets._
|
|
312
|
+
|
|
313
|
+
1. `npx launch ci init` - write .github/workflows/launch.yml for a hosted runner (--android adds an Android job)
|
|
314
|
+
2. `npx launch doctor --yes` - non-interactive preflight inside the workflow
|
|
315
|
+
3. `npx launch build ios --yes` - unattended build + upload to the testing track
|
|
316
|
+
|
|
317
|
+
`ci init` writes a transparent, editable workflow (not a black-box action) wired to the same unattended commands Launch already supports.
|
|
318
|
+
|
|
319
|
+
- It installs `launch-store` globally on the runner, triggers on `workflow_dispatch` and pushed `v*` tags, and reads credentials from repository secrets decoded at runtime: `ASC_KEY_ID`, `ASC_ISSUER_ID`, `ASC_API_KEY_BASE64` (Android adds `PLAY_SERVICE_ACCOUNT_BASE64`, `ANDROID_KEYSTORE_BASE64`, and the key alias/passwords).
|
|
320
|
+
- Pass `--yes` on the safe commands; Launch also auto-detects CI and degrades to non-interactive on its own.
|
|
321
|
+
|
|
322
|
+
**Cautions:**
|
|
323
|
+
- Keep `launch release` (public production) OUT of an automatic CI trigger - put it behind a manual approval / protected environment so a push can't publish to the store unattended. CI should target the TESTING track by default.
|
|
324
|
+
- Supply credentials only via repository secrets decoded at runtime; never commit a `.p8`, keystore, or service-account JSON.
|
|
325
|
+
|
|
326
|
+
### Diagnose toolchain & build failures
|
|
327
|
+
|
|
328
|
+
_Use when: the build is failing or broken - fix it; fix the toolchain / install missing build tools; diagnose a native build error; signing or credentials won't resolve._
|
|
329
|
+
|
|
330
|
+
1. `npx launch doctor` - detect the iOS/Android toolchain and store-side blockers; --fix installs missing brew tools (--yes for CI)
|
|
331
|
+
2. `npx launch diagnose` - analyze the most recent build log (or a given logfile) and explain the native failure
|
|
332
|
+
3. `npx launch creds status` - show which Apple account and signing assets are active when signing fails
|
|
333
|
+
|
|
334
|
+
Start with `doctor` to separate environment problems from build problems, then `diagnose` to read the actual native failure.
|
|
335
|
+
|
|
336
|
+
- `doctor --fix` asks for consent, then installs missing iOS tools via Homebrew (`--yes` skips the prompt for CI/agents). `doctor --platform android` checks the Android toolchain.
|
|
337
|
+
- `diagnose` reads the newest log under `~/.launch/logs` (or a path you pass) and explains the failure in plain English. A config footgun check also runs at the head of every `build`.
|
|
338
|
+
- When signing is the problem, `creds status` shows the active account; `creds set-key` / `creds setup` fix a missing key or profile.
|
|
339
|
+
|
|
340
|
+
**Cautions:**
|
|
341
|
+
- `doctor --fix` installs build tools via Homebrew. It's safe to run, but review what it proposes; pass `--yes` only in CI where unattended installs are intended.
|
|
342
|
+
|
|
343
|
+
### Pre-submit readiness & verification
|
|
344
|
+
|
|
345
|
+
_Use when: is the app ready to submit / would it get rejected?; run a pre-submit readiness check; verify the App Store / Play account and in-app purchases are set up; check the privacy declarations against the app's permissions._
|
|
346
|
+
|
|
347
|
+
1. `npx launch audit` - one-shot pre-submit sweep - would a submission be rejected right now? (read-only)
|
|
348
|
+
2. `npx launch store doctor` - store-account readiness: the Apple app record, Play onboarding & access (read-only)
|
|
349
|
+
3. `npx launch iap doctor` - in-app-purchase readiness: products & subscriptions exist and are submittable (read-only)
|
|
350
|
+
4. `npx launch privacy scan` - reconcile permissions / manifests against the privacy declarations; flags undeclared collection
|
|
351
|
+
|
|
352
|
+
Run these before a `release` to catch rejections on your machine instead of in App Review. Every command here only reads - none of them changes the store.
|
|
353
|
+
|
|
354
|
+
- `audit` is the headline sweep; the focused doctors (`store doctor`, `iap doctor`) and `privacy scan` drill into the specific area that fails.
|
|
355
|
+
- Pair this with `launch plan` (see the launch-plan skill) to also diff your config-as-code against live state before submitting.
|
|
356
|
+
|
|
357
|
+
### Store config as code: plan & drift
|
|
358
|
+
|
|
359
|
+
_Use when: preview the store config diff before syncing; what would `launch sync` change?; detect or gate configuration drift in CI; check that the live store still matches launch.config.ts._
|
|
360
|
+
|
|
361
|
+
1. `npx launch plan` - diff launch.config against live store state across every config-as-code surface (read-only)
|
|
362
|
+
2. `npx launch drift` - fail when live state has drifted from config - `plan --check` for CI
|
|
363
|
+
|
|
364
|
+
`plan` is the read-only preview behind `sync` / `metadata` / the Play reconcilers: it diffs config against live state across capabilities, IAPs, subscriptions, pricing, listing, and the rest of the config-as-code surfaces. `drift` is the same diff as a CI gate (exit non-zero on any difference).
|
|
365
|
+
|
|
366
|
+
- `plan [surface]` narrows the diff to one surface; bare `plan` covers them all.
|
|
367
|
+
- Use `drift` in CI to keep the store and `launch.config.ts` from silently diverging; apply changes with the launch-store-config skill once the plan looks right.
|
|
368
|
+
|
|
369
|
+
### Snapshot & restore live store state
|
|
370
|
+
|
|
371
|
+
_Use when: snapshot the current store state before a risky change; what changed in the store since the last snapshot?; restore / roll back the store listing to a saved snapshot; clean up old snapshots._
|
|
372
|
+
|
|
373
|
+
1. `npx launch snapshot create` - capture live App Store + Play state into a named snapshot
|
|
374
|
+
2. `npx launch snapshot diff <name>` - compare a saved snapshot against another snapshot or live state (default: live)
|
|
375
|
+
3. `npx launch snapshot restore <name>` - restore a snapshot's App Store listing back to live - additive; previews unless --yes
|
|
376
|
+
4. `npx launch snapshot prune` - delete old user snapshots by --keep <n> and/or --older-than <days> (auto baselines untouched)
|
|
377
|
+
|
|
378
|
+
Take a `snapshot create` before any risky reconcile so you have a labelled baseline, then `snapshot diff` to see exactly what moved. `restore` writes the saved App Store listing back to live (other surfaces are preview-only for now).
|
|
379
|
+
|
|
380
|
+
- `snapshot diff <name>` defaults to comparing against live state; pass a second name to compare two saved snapshots.
|
|
381
|
+
- `snapshot prune` requires at least one of `--keep`/`--older-than` and never touches the automatic pre-sync baselines.
|
|
382
|
+
|
|
383
|
+
**Cautions:**
|
|
384
|
+
- `snapshot restore` changes a LIVE listing (additive, never destructive). It previews the plan by default - show that plan and get human confirmation before re-running with `--yes`.
|
|
385
|
+
|
|
386
|
+
### Migrate from EAS / fastlane, or adopt a live app
|
|
387
|
+
|
|
388
|
+
_Use when: migrate from Expo EAS / eas.json to Launch; import an existing fastlane setup; onboard an app that already ships on the store; validate my launch.config.ts against the schema._
|
|
389
|
+
|
|
390
|
+
1. `npx launch migrate eas` - read eas.json/app.json and emit launch.config.ts, .env.example, store.config.json + a report
|
|
391
|
+
2. `npx launch migrate fastlane` - read fastlane config (Appfile/Fastfile/Matchfile...) and emit the same Launch config set + a report
|
|
392
|
+
3. `npx launch adopt` - onboard an already-shipping app: import its live App Store Connect setup into config
|
|
393
|
+
4. `npx launch config validate` - validate the config against the schema, reporting each problem by field path
|
|
394
|
+
|
|
395
|
+
Pick the migrator that matches the current setup: `migrate eas` for an Expo EAS project, `migrate fastlane` for a fastlane one, or `adopt` to pull a live App Store Connect setup into config. Each writes a `launch.config.ts` (plus `.env.example` and `store.config.json`) and a report of what it found.
|
|
396
|
+
|
|
397
|
+
- Migration only writes local config files - it touches no store and provisions nothing.
|
|
398
|
+
- Always finish with `config validate` to confirm the emitted config is schema-clean, then `launch plan` (see the launch-plan skill) to see how it compares to live state.
|
|
399
|
+
|
|
400
|
+
### Ratings, reviews, sales & analytics insights
|
|
401
|
+
|
|
402
|
+
_Use when: how is the app rated / how are reviews trending?; read the latest customer reviews; download a sales or finance report; pull App Store analytics._
|
|
403
|
+
|
|
404
|
+
1. `npx launch insights` - aggregate rating & review trends across the App Store and Play (read-only)
|
|
405
|
+
2. `npx launch reports sales` - download a Sales & Trends report (gzipped TSV, or --json)
|
|
406
|
+
3. `npx launch reviews list` - list an app's customer reviews, newest first (filter by rating/territory)
|
|
407
|
+
|
|
408
|
+
`insights` is the aggregated cross-store view (ratings and review trends); drop to `reviews list` for the individual reviews and `reports` for the raw Sales & Trends / finance / analytics data.
|
|
409
|
+
|
|
410
|
+
- Everything here only reads - safe to run unattended.
|
|
411
|
+
- Reply to reviews with `launch reviews reply` (App Store) or `launch play-reviews reply` (Play) once you've read them.
|
|
412
|
+
|
|
413
|
+
### AI-drafted store listing copy
|
|
414
|
+
|
|
415
|
+
_Use when: draft / write the App Store or Play listing copy with AI; generate store description and keywords; improve the listing metadata; fill in store.config.json copy automatically._
|
|
416
|
+
|
|
417
|
+
1. `npx launch ai listing` - draft App Store / Play listing copy with AI into store.config.json
|
|
418
|
+
2. `npx launch plan` - review the drafted listing as a read-only diff against the live store
|
|
419
|
+
3. `npx launch metadata push` - upload store.config.json to the live listing (metadata only; no binary)
|
|
420
|
+
|
|
421
|
+
`ai listing` writes drafted copy into `store.config.json` only - it changes nothing live. Treat the draft as a starting point: read it, edit it, then preview before pushing.
|
|
422
|
+
|
|
423
|
+
- Preview with `launch plan` (see the launch-plan skill) so you see exactly what the listing change would do before it goes out.
|
|
424
|
+
- `metadata push` is what actually updates the live listing - gate it behind a human review of the AI copy.
|
|
425
|
+
|
|
426
|
+
**Cautions:**
|
|
427
|
+
- AI-drafted copy is a draft - review it for accuracy and brand voice before shipping. `metadata push` changes the LIVE store listing, so preview with `launch plan` and get confirmation first.
|
|
428
|
+
|
|
429
|
+
### AI-generated store screenshots with Genshot
|
|
430
|
+
|
|
431
|
+
_Use when: generate polished App Store or Google Play screenshots; turn real app screens into store marketing creatives; create localized screenshots with captions; prepare screenshots before syncing a store listing._
|
|
432
|
+
|
|
433
|
+
1. `npx launch ai screenshots` - generate and validate store-ready screenshots from real screens; use --platform ios|android and --brief to steer the design
|
|
434
|
+
2. `npx launch plan screenshots` - review the generated screenshot diff against the live store without writing
|
|
435
|
+
3. `npx launch sync` - upload the reviewed screenshots with the rest of the declared listing
|
|
436
|
+
|
|
437
|
+
Before generation, make sure the companion is available: `npm install --save-dev @genshot/cli`, then `npx genshot login`. Browser OAuth stores the Genshot credential in the user account config; never put an API key in `launch.config.ts`.
|
|
438
|
+
|
|
439
|
+
- Put real source images under `<app>/screenshots/<locale>/<DISPLAY_TYPE>/`. Launch enhances those screens; it does not fabricate product UI.
|
|
440
|
+
- `launch ai screenshots` delegates to Genshot, identifies Launch as the client source, validates every returned image against the selected store, and promotes approved files into the listing tree.
|
|
441
|
+
- Use `--captions` for ordered marketing captions, `--locale` for localization, and `--device-types` only when overriding the supported default (`APP_IPHONE_67` for iOS or `phone` for Android).
|
|
442
|
+
- Review with `launch plan screenshots`. Uploading remains the separate `launch sync` action and requires human confirmation.
|
|
443
|
+
|
|
444
|
+
**Cautions:**
|
|
445
|
+
- Genshot generation spends Credits. If the developer did not directly request generation, show the selected sources, platform, count, and brief and get approval before running it.
|
|
446
|
+
- `launch sync` changes the LIVE store listing. Show the read-only screenshot plan and get explicit human confirmation before uploading.
|
|
447
|
+
|
|
448
|
+
### Expose Launch to AI agents & a local dashboard
|
|
449
|
+
|
|
450
|
+
_Use when: let Claude / Cursor drive Launch (set up MCP); open the local Launch dashboard; scaffold the Launch agent skills / rules into this repo; give an AI agent access to Launch._
|
|
451
|
+
|
|
452
|
+
1. `npx launch mcp install` - wire `launch mcp` into an AI client's config (auto-detects Claude Code / Cursor)
|
|
453
|
+
2. `npx launch dashboard` - serve a local, read-only web UI over apps, builds, accounts, and secrets
|
|
454
|
+
3. `npx launch agents init` - write Claude skills, Cursor rules, and the AGENTS.md Launch section into this repo
|
|
455
|
+
|
|
456
|
+
These are the on-ramps for agent-driven and at-a-glance use, all strictly local: `mcp install` exposes Launch's commands to an AI client, `dashboard` opens a read-only web view of your state, and `agents init` drops these very skills into the repo.
|
|
457
|
+
|
|
458
|
+
- `dashboard` is read-only and `mcp install` only edits a local client config - neither touches the store.
|
|
459
|
+
- `agents check` keeps the scaffolded skills in sync after Launch upgrades.
|
|
460
|
+
<!-- launch:end -->
|