vybekiit 0.7.23 → 0.7.25

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.
Files changed (34) hide show
  1. package/dist/bin.js +33 -4
  2. package/dist/global-skills/expo-skill-eval/scripts/check-static.sh +0 -0
  3. package/dist/global-skills/expo-skill-eval/scripts/clean-fixture.sh +0 -0
  4. package/dist/global-skills/expo-skill-eval/scripts/latest-sdk.sh +0 -0
  5. package/dist/global-skills/expo-skill-eval/scripts/make-fixture.sh +0 -0
  6. package/dist/global-skills/expo-skill-eval/scripts/make-workspace.sh +0 -0
  7. package/dist/global-skills/expo-skill-eval/scripts/snapshot-android.sh +0 -0
  8. package/dist/global-skills/expo-skill-eval/scripts/snapshot-ios.sh +0 -0
  9. package/dist/global-skills/expo-skill-eval/scripts/snapshot-web.sh +0 -0
  10. package/dist/global-skills/launch-agent-access/SKILL.md +26 -0
  11. package/dist/global-skills/launch-ai-listing/SKILL.md +30 -0
  12. package/dist/global-skills/launch-ai-screenshots/SKILL.md +33 -0
  13. package/dist/global-skills/launch-ci/SKILL.md +31 -0
  14. package/dist/global-skills/launch-doctor/SKILL.md +31 -0
  15. package/dist/global-skills/launch-insights/SKILL.md +26 -0
  16. package/dist/global-skills/launch-migrate/SKILL.md +27 -0
  17. package/dist/global-skills/launch-ota/SKILL.md +31 -0
  18. package/dist/global-skills/launch-plan/SKILL.md +25 -0
  19. package/dist/global-skills/launch-release/SKILL.md +34 -0
  20. package/dist/global-skills/launch-ship/SKILL.md +35 -0
  21. package/dist/global-skills/launch-snapshot/SKILL.md +31 -0
  22. package/dist/global-skills/launch-store-config/SKILL.md +37 -0
  23. package/dist/global-skills/launch-store-config/reference.md +26 -0
  24. package/dist/global-skills/launch-verify/SKILL.md +27 -0
  25. package/dist/global-skills/manifest.json +15 -1
  26. package/dist/global-skills/publish-app/SKILL.md +10 -4
  27. package/dist/global-skills/use-railway/scripts/analyze-mongo.py +0 -0
  28. package/dist/global-skills/use-railway/scripts/analyze-mysql.py +0 -0
  29. package/dist/global-skills/use-railway/scripts/analyze-postgres.py +0 -0
  30. package/dist/global-skills/use-railway/scripts/analyze-redis.py +0 -0
  31. package/dist/global-skills/use-railway/scripts/enable-pg-stats.py +0 -0
  32. package/dist/global-skills/use-railway/scripts/pg-extensions.py +0 -0
  33. package/dist/global-skills/use-railway/scripts/railway-api.sh +0 -0
  34. package/package.json +22 -21
package/dist/bin.js CHANGED
@@ -13721,8 +13721,8 @@ var preset_manifest_default2 = {
13721
13721
  // ../packages/db/presets/auth-bridge/preset.manifest.json
13722
13722
  var preset_manifest_default3 = {
13723
13723
  id: "auth-bridge",
13724
- version: 1,
13725
- description: "App user profiles linked to better-auth users with app-level admin role.",
13724
+ version: 2,
13725
+ description: "App user profiles and preferences linked to authenticated users.",
13726
13726
  entities: [
13727
13727
  {
13728
13728
  name: "user_profiles",
@@ -13735,9 +13735,35 @@ var preset_manifest_default3 = {
13735
13735
  { name: "created_at", type: "timestamptz", required: true, default: "now()" },
13736
13736
  { name: "updated_at", type: "timestamptz", required: true, default: "now()" }
13737
13737
  ]
13738
+ },
13739
+ {
13740
+ name: "user_settings",
13741
+ columns: [
13742
+ { name: "id", type: "uuid", required: true, default: "gen_random_uuid()" },
13743
+ { name: "user_id", type: "text", required: true, unique: true },
13744
+ { name: "email", type: "text", required: true },
13745
+ { name: "full_name", type: "text", required: true, default: "''" },
13746
+ { name: "username", type: "text", required: true, default: "''" },
13747
+ { name: "bio", type: "text", required: true, default: "''" },
13748
+ { name: "timezone", type: "text", required: true, default: "'UTC'" },
13749
+ { name: "theme", type: "text", required: true, default: "'system'" },
13750
+ { name: "product_updates", type: "boolean", required: true, default: "true" },
13751
+ { name: "billing_receipts", type: "boolean", required: true, default: "true" },
13752
+ { name: "security_alerts", type: "boolean", required: true, default: "true" },
13753
+ { name: "weekly_digest", type: "boolean", required: true, default: "false" },
13754
+ { name: "created_at", type: "timestamptz", required: true, default: "now()" },
13755
+ { name: "updated_at", type: "timestamptz", required: true, default: "now()" }
13756
+ ]
13757
+ }
13758
+ ],
13759
+ indexes: [
13760
+ {
13761
+ table: "user_settings",
13762
+ columns: ["user_id"],
13763
+ unique: true,
13764
+ reason: "one settings document per authenticated user"
13738
13765
  }
13739
13766
  ],
13740
- indexes: [],
13741
13767
  helpers: ["is_admin"],
13742
13768
  rls: "user-owned",
13743
13769
  rlsColumn: "user_id",
@@ -14447,7 +14473,7 @@ var preset_manifest_default13 = {
14447
14473
  // ../packages/db/presets/orders/preset.manifest.json
14448
14474
  var preset_manifest_default14 = {
14449
14475
  id: "orders",
14450
- version: 1,
14476
+ version: 2,
14451
14477
  description: "Payment orders for fulfillment and refund tracking.",
14452
14478
  entities: [
14453
14479
  {
@@ -14455,7 +14481,10 @@ var preset_manifest_default14 = {
14455
14481
  columns: [
14456
14482
  { name: "id", type: "uuid", required: true, default: "gen_random_uuid()" },
14457
14483
  { name: "order_id", type: "text", required: true, unique: true },
14484
+ { name: "provider", type: "text", required: true },
14485
+ { name: "event_name", type: "text", required: true },
14458
14486
  { name: "email", type: "text" },
14487
+ { name: "customer_name", type: "text" },
14459
14488
  { name: "github_username", type: "text" },
14460
14489
  { name: "refunded", type: "boolean", required: true, default: "false" },
14461
14490
  { name: "license_key", type: "text" },
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: launch-agent-access
3
+ description: Use when the developer wants to drive Launch from AI tooling - wire the MCP server into an AI client, serve the read-only local dashboard, or scaffold the agent skills/rules into the repo. All local-only. Covers `launch mcp install`, `launch dashboard`, and `launch agents init`.
4
+ ---
5
+
6
+ # Expose Launch to AI agents & a local dashboard
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - let Claude / Cursor drive Launch (set up MCP)
13
+ - open the local Launch dashboard
14
+ - scaffold the Launch agent skills / rules into this repo
15
+ - give an AI agent access to Launch
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch mcp install` - wire `launch mcp` into an AI client's config (auto-detects Claude Code / Cursor)
20
+ 2. `npx launch dashboard` - serve a local, read-only web UI over apps, builds, accounts, and secrets
21
+ 3. `npx launch agents init` - write Claude skills, Cursor rules, and the AGENTS.md Launch section into this repo
22
+
23
+ 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.
24
+
25
+ - `dashboard` is read-only and `mcp install` only edits a local client config - neither touches the store.
26
+ - `agents check` keeps the scaffolded skills in sync after Launch upgrades.
@@ -0,0 +1,30 @@
1
+ ---
2
+ name: launch-ai-listing
3
+ description: Use when the developer wants AI to draft App Store / Google Play listing copy (name, subtitle, description, keywords, what's-new) into `store.config.json`, then review and ship it. Covers `launch ai listing`, previewing with `launch plan`, and `launch metadata push`.
4
+ ---
5
+
6
+ # AI-drafted store listing copy
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - draft / write the App Store or Play listing copy with AI
13
+ - generate store description and keywords
14
+ - improve the listing metadata
15
+ - fill in store.config.json copy automatically
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch ai listing` - draft App Store / Play listing copy with AI into store.config.json
20
+ 2. `npx launch plan` - review the drafted listing as a read-only diff against the live store
21
+ 3. `npx launch metadata push` - upload store.config.json to the live listing (metadata only; no binary)
22
+
23
+ `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.
24
+
25
+ - Preview with `launch plan` (see the launch-plan skill) so you see exactly what the listing change would do before it goes out.
26
+ - `metadata push` is what actually updates the live listing - gate it behind a human review of the AI copy.
27
+
28
+ ## Cautions
29
+
30
+ - 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.
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: launch-ai-screenshots
3
+ description: Use when the developer wants polished App Store or Google Play screenshots generated from real app screens. Covers installing and authenticating the Genshot companion, `launch ai screenshots`, store-dimension validation, `launch plan screenshots`, and the guarded upload through `launch sync`.
4
+ ---
5
+
6
+ # AI-generated store screenshots with Genshot
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - generate polished App Store or Google Play screenshots
13
+ - turn real app screens into store marketing creatives
14
+ - create localized screenshots with captions
15
+ - prepare screenshots before syncing a store listing
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch ai screenshots` - generate and validate store-ready screenshots from real screens; use --platform ios|android and --brief to steer the design
20
+ 2. `npx launch plan screenshots` - review the generated screenshot diff against the live store without writing
21
+ 3. `npx launch sync` - upload the reviewed screenshots with the rest of the declared listing
22
+
23
+ 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`.
24
+
25
+ - Put real source images under `<app>/screenshots/<locale>/<DISPLAY_TYPE>/`. Launch enhances those screens; it does not fabricate product UI.
26
+ - `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.
27
+ - 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).
28
+ - Review with `launch plan screenshots`. Uploading remains the separate `launch sync` action and requires human confirmation.
29
+
30
+ ## Cautions
31
+
32
+ - 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.
33
+ - `launch sync` changes the LIVE store listing. Show the read-only screenshot plan and get explicit human confirmation before uploading.
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: launch-ci
3
+ description: Use when the developer wants to build and ship this app from CI - scaffold a GitHub Actions workflow on a hosted macOS / Linux runner, or run Launch unattended and headless. Covers `launch ci init` and the non-interactive, env-var-driven command flow.
4
+ ---
5
+
6
+ # CI on a hosted runner
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - set up CI / GitHub Actions to build and ship the app
13
+ - build and ship from a hosted runner without a local Mac
14
+ - run Launch unattended / headless
15
+ - wire up the release pipeline secrets
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch ci init` - write .github/workflows/launch.yml for a hosted runner (--android adds an Android job)
20
+ 2. `npx launch doctor --yes` - non-interactive preflight inside the workflow
21
+ 3. `npx launch build ios --yes` - unattended build + upload to the testing track
22
+
23
+ `ci init` writes a transparent, editable workflow (not a black-box action) wired to the same unattended commands Launch already supports.
24
+
25
+ - 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).
26
+ - Pass `--yes` on the safe commands; Launch also auto-detects CI and degrades to non-interactive on its own.
27
+
28
+ ## Cautions
29
+
30
+ - 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.
31
+ - Supply credentials only via repository secrets decoded at runtime; never commit a `.p8`, keystore, or service-account JSON.
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: launch-doctor
3
+ description: Use when a Launch build is failing, the toolchain looks broken, signing or credentials won't resolve, or the developer asks to fix their build environment. Covers `launch doctor --fix` (toolchain) and `launch diagnose` (native build-log analysis).
4
+ ---
5
+
6
+ # Diagnose toolchain & build failures
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - the build is failing or broken - fix it
13
+ - fix the toolchain / install missing build tools
14
+ - diagnose a native build error
15
+ - signing or credentials won't resolve
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch doctor` - detect the iOS/Android toolchain and store-side blockers; --fix installs missing brew tools (--yes for CI)
20
+ 2. `npx launch diagnose` - analyze the most recent build log (or a given logfile) and explain the native failure
21
+ 3. `npx launch creds status` - show which Apple account and signing assets are active when signing fails
22
+
23
+ Start with `doctor` to separate environment problems from build problems, then `diagnose` to read the actual native failure.
24
+
25
+ - `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.
26
+ - `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`.
27
+ - When signing is the problem, `creds status` shows the active account; `creds set-key` / `creds setup` fix a missing key or profile.
28
+
29
+ ## Cautions
30
+
31
+ - `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.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: launch-insights
3
+ description: Use when the developer wants to read store performance - aggregated rating & review trends, individual customer reviews, or Sales & Trends / finance / analytics reports. All read-only, over the same API key. Covers `launch insights`, `launch reports`, and `launch reviews list`.
4
+ ---
5
+
6
+ # Ratings, reviews, sales & analytics insights
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - how is the app rated / how are reviews trending?
13
+ - read the latest customer reviews
14
+ - download a sales or finance report
15
+ - pull App Store analytics
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch insights` - aggregate rating & review trends across the App Store and Play (read-only)
20
+ 2. `npx launch reports sales` - download a Sales & Trends report (gzipped TSV, or --json)
21
+ 3. `npx launch reviews list` - list an app's customer reviews, newest first (filter by rating/territory)
22
+
23
+ `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.
24
+
25
+ - Everything here only reads - safe to run unattended.
26
+ - Reply to reviews with `launch reviews reply` (App Store) or `launch play-reviews reply` (Play) once you've read them.
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: launch-migrate
3
+ description: Use when the developer is moving an existing project onto Launch - importing an EAS or fastlane setup into a `launch.config.ts`, onboarding an app that already ships, or validating the resulting config. Covers `launch migrate eas`/`fastlane`, `launch adopt`, and `launch config validate`.
4
+ ---
5
+
6
+ # Migrate from EAS / fastlane, or adopt a live app
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - migrate from Expo EAS / eas.json to Launch
13
+ - import an existing fastlane setup
14
+ - onboard an app that already ships on the store
15
+ - validate my launch.config.ts against the schema
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch migrate eas` - read eas.json/app.json and emit launch.config.ts, .env.example, store.config.json + a report
20
+ 2. `npx launch migrate fastlane` - read fastlane config (Appfile/Fastfile/Matchfile...) and emit the same Launch config set + a report
21
+ 3. `npx launch adopt` - onboard an already-shipping app: import its live App Store Connect setup into config
22
+ 4. `npx launch config validate` - validate the config against the schema, reporting each problem by field path
23
+
24
+ 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.
25
+
26
+ - Migration only writes local config files - it touches no store and provisions nothing.
27
+ - 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.
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: launch-ota
3
+ description: Use when the developer wants to publish an over-the-air JS / asset update to already-installed builds (Expo Updates protocol), inspect published updates, or roll back a bad update. Covers `launch update` and `launch updates`.
4
+ ---
5
+
6
+ # Over-the-air updates & rollback
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - publish an OTA update / push a JS-only change without a rebuild
13
+ - ship a hotfix over the air
14
+ - list or inspect published updates
15
+ - roll back a bad update
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch update` - publish a code-signed OTA update to the channel (--channel, --platform; --dry-run rehearses)
20
+ 2. `npx launch updates list` - list published updates for a channel
21
+ 3. `npx launch updates view latest` - inspect an update by id (or 'latest')
22
+ 4. `npx launch updates rollback` - reverse a bad update - promote a known-good one or drop clients to the embedded bundle
23
+
24
+ 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.
25
+
26
+ - `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).
27
+ - `updates rollback` is the escape hatch - it promotes a known-good update or drops clients back to the embedded bundle.
28
+
29
+ ## Cautions
30
+
31
+ - An OTA update reaches real users immediately. Rehearse with `--dry-run`, and confirm the channel and runtime version before publishing to a production channel.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: launch-plan
3
+ description: Use when the developer wants to preview how `launch.config.ts` differs from the live App Store Connect / Google Play state, or fail CI when the store has drifted from config - the read-only half of store-config-as-code. Covers `launch plan [surface]` and `launch drift`.
4
+ ---
5
+
6
+ # Store config as code: plan & drift
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - preview the store config diff before syncing
13
+ - what would `launch sync` change?
14
+ - detect or gate configuration drift in CI
15
+ - check that the live store still matches launch.config.ts
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch plan` - diff launch.config against live store state across every config-as-code surface (read-only)
20
+ 2. `npx launch drift` - fail when live state has drifted from config - `plan --check` for CI
21
+
22
+ `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).
23
+
24
+ - `plan [surface]` narrows the diff to one surface; bare `plan` covers them all.
25
+ - 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.
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: launch-release
3
+ description: Use when the developer wants to submit an already-built version to the PUBLIC App Store or Google Play production track, check review status, or steer a phased rollout (pause / resume / complete). Covers `launch release`, `launch status`, and `launch rollout`. This is the irreversible, outward-facing step - confirm with a human before submitting.
4
+ ---
5
+
6
+ # Public release & phased rollout
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - release the app to the App Store / production / make it public
13
+ - submit for review or go live
14
+ - check review or rollout status
15
+ - pause, resume, or complete a phased rollout
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch status` - show each app's store version, review state, and phased-rollout state (--json for CI)
20
+ 2. `npx launch release ios` - submit the latest build to the PUBLIC production track - preview with --dry-run first
21
+ 3. `npx launch rollout pause` - steer an iOS phased release: pause | resume | complete
22
+ 4. `npx launch release-train start` - coordinate iOS + Android + OTA as one resumable release record (start | status | release | abort)
23
+
24
+ `release` is the deliberate public step, distinct from `build` (which only reaches the testing track). Always preview first.
25
+
26
+ - `release <platform> --dry-run` prints the release plan and touches nothing - run it, show the plan, then let a human trigger the real submit.
27
+ - 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.
28
+ - `status --watch` polls until review reaches a terminal verdict; `rollout pause|resume|complete` steers an in-progress phased release.
29
+ - 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.
30
+
31
+ ## Cautions
32
+
33
+ - `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.
34
+ - `rollout complete` accelerates a public rollout to 100% - confirm before running it.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: launch-ship
3
+ description: Use when the developer wants to build, sign, and ship this Expo / React Native app to TestFlight or Google Play with Launch - first-time setup, provisioning signing credentials, producing a signed build, or uploading to the internal testing track. Covers `launch init`, `launch creds`, `launch doctor`, and `launch build`.
4
+ ---
5
+
6
+ # Set up and ship to TestFlight / Play
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - ship the app to TestFlight or Play internal testing
13
+ - build and upload a test build
14
+ - set up code signing / credentials for the app
15
+ - onboard an existing (already-shipping) app to Launch
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch init` - scaffold launch.config.ts (+ .env.example); skip if it already exists
20
+ 2. `npx launch adopt` - OPTIONAL - app already on the store? import its live App Store Connect setup into config
21
+ 3. `npx launch creds set-key` - store the App Store Connect API key (.p8) in the OS keychain
22
+ 4. `npx launch creds setup` - register the app id and create or reuse the cert + provisioning profile
23
+ 5. `npx launch doctor` - verify the iOS/Android toolchain and config; add --fix to install missing tools
24
+ 6. `npx launch build ios` - run the full pipeline and upload to TestFlight (use 'android' for Play; --no-submit builds only)
25
+
26
+ 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.
27
+
28
+ - `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.
29
+ - 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.
30
+ - Android: `build android` signs with the upload keystore and uploads to the Play track (`--track internal|closed|open|production`).
31
+
32
+ ## Cautions
33
+
34
+ - `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.
35
+ - 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.
@@ -0,0 +1,31 @@
1
+ ---
2
+ name: launch-snapshot
3
+ description: Use when the developer wants to capture the live App Store Connect / Google Play state as a named baseline, compare baselines or live state, restore a listing back to a saved snapshot, or prune old snapshots. Covers `launch snapshot create`/`diff`/`restore`/`prune`.
4
+ ---
5
+
6
+ # Snapshot & restore live store state
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - snapshot the current store state before a risky change
13
+ - what changed in the store since the last snapshot?
14
+ - restore / roll back the store listing to a saved snapshot
15
+ - clean up old snapshots
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch snapshot create` - capture live App Store + Play state into a named snapshot
20
+ 2. `npx launch snapshot diff <name>` - compare a saved snapshot against another snapshot or live state (default: live)
21
+ 3. `npx launch snapshot restore <name>` - restore a snapshot's App Store listing back to live - additive; previews unless --yes
22
+ 4. `npx launch snapshot prune` - delete old user snapshots by --keep <n> and/or --older-than <days> (auto baselines untouched)
23
+
24
+ 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).
25
+
26
+ - `snapshot diff <name>` defaults to comparing against live state; pass a second name to compare two saved snapshots.
27
+ - `snapshot prune` requires at least one of `--keep`/`--older-than` and never touches the automatic pre-sync baselines.
28
+
29
+ ## Cautions
30
+
31
+ - `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`.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: launch-store-config
3
+ description: Use when the developer wants to manage App Store Connect or Google Play configuration as code from launch.config.ts - in-app purchases, subscriptions, pricing, capabilities, listing metadata, promo offers, in-app events, A/B experiments, availability / territories, or custom product pages. Covers `launch sync`, `launch metadata`, `launch offers`, `launch play-products`, `launch play-subscriptions`, and more.
4
+ ---
5
+
6
+ # Store configuration as code
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - add or change an in-app purchase or subscription
13
+ - sync store config / capabilities to App Store Connect
14
+ - push or pull the store listing metadata
15
+ - set up Google Play products, subscriptions, or tracks
16
+ - generate promo offer codes, an in-app event, or an A/B experiment
17
+
18
+ ## Steps
19
+
20
+ 1. `npx launch sync` - reconcile ASC IAPs, subscriptions, pricing, and capabilities from config - run with --dry-run first
21
+ 2. `npx launch metadata pull` - pull the current listing into store.config.json to edit (--platform android for Play)
22
+ 3. `npx launch metadata push` - push edited listing copy / screenshots back to the store - --dry-run rehearses
23
+ 4. `npx launch play-products` - reconcile Google Play in-app products from config
24
+ 5. `npx launch play-subscriptions` - reconcile Google Play subscriptions (base plans + offers)
25
+
26
+ Store config lives in `launch.config.ts` (catalog) and `store.config.json` (listing). One catalog drives BOTH stores. Every reconcile runs plan -> confirm -> apply.
27
+
28
+ 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.
29
+
30
+ 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).
31
+
32
+ See [`reference.md`](./reference.md) for the full command surface across both stores.
33
+
34
+ ## Cautions
35
+
36
+ - These commands change a LIVE store. Always preview with `--dry-run` (or `metadata pull`), show the plan, and get human confirmation before applying.
37
+ - `sync --allow-destructive` can remove a capability or product - treat it as requiring explicit human sign-off.
@@ -0,0 +1,26 @@
1
+ # Store configuration as code - command reference
2
+
3
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
4
+
5
+ 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.
6
+
7
+ | Command | What it does |
8
+ | --- | --- |
9
+ | `npx launch sync` | App Store Connect: reconcile IAPs, subscriptions, pricing, capabilities (--dry-run, --allow-destructive, --yes) |
10
+ | `npx launch metadata pull` | pull the store listing (copy, screenshots, previews) into store.config.json |
11
+ | `npx launch metadata push` | push the edited listing back to the store |
12
+ | `npx launch offers list` | list promotional offers for a subscription product |
13
+ | `npx launch offers generate-codes` | generate one-time promo / offer codes for a product |
14
+ | `npx launch offers deactivate` | deactivate an offer |
15
+ | `npx launch play-products` | Google Play: reconcile in-app products |
16
+ | `npx launch play-subscriptions` | Google Play: reconcile subscriptions (base plans + offers) |
17
+ | `npx launch play-tracks status` | show Google Play track state |
18
+ | `npx launch play-tracks promote` | promote a build between Play tracks |
19
+ | `npx launch availability` | manage territory / country availability |
20
+ | `npx launch custom-pages` | manage custom product pages |
21
+ | `npx launch experiments` | manage product-page A/B experiments |
22
+ | `npx launch events list` | list in-app events |
23
+ | `npx launch events create` | create an in-app event |
24
+ | `npx launch app-clips` | configure App Clips |
25
+ | `npx launch game-center` | configure Game Center leaderboards / achievements |
26
+ | `npx launch accessibility` | set the accessibility declarations on the listing |
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: launch-verify
3
+ description: Use when the developer wants to know whether the app would pass review right now - a pre-submit sweep, store-account readiness, in-app-purchase readiness, or a privacy / permissions reconcile. All read-only. Covers `launch audit`, `launch store doctor`, `launch iap doctor`, and `launch privacy scan`.
4
+ ---
5
+
6
+ # Pre-submit readiness & verification
7
+
8
+ <!-- generated by launch v0.32.12 - `npx launch agents init` - do not hand-edit -->
9
+
10
+ ## Use this when
11
+
12
+ - is the app ready to submit / would it get rejected?
13
+ - run a pre-submit readiness check
14
+ - verify the App Store / Play account and in-app purchases are set up
15
+ - check the privacy declarations against the app's permissions
16
+
17
+ ## Steps
18
+
19
+ 1. `npx launch audit` - one-shot pre-submit sweep - would a submission be rejected right now? (read-only)
20
+ 2. `npx launch store doctor` - store-account readiness: the Apple app record, Play onboarding & access (read-only)
21
+ 3. `npx launch iap doctor` - in-app-purchase readiness: products & subscriptions exist and are submittable (read-only)
22
+ 4. `npx launch privacy scan` - reconcile permissions / manifests against the privacy declarations; flags undeclared collection
23
+
24
+ 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.
25
+
26
+ - `audit` is the headline sweep; the focused doctors (`store doctor`, `iap doctor`) and `privacy scan` drill into the specific area that fails.
27
+ - Pair this with `launch plan` (see the launch-plan skill) to also diff your config-as-code against live state before submitting.
@@ -78,6 +78,20 @@
78
78
  "harden",
79
79
  "instrument-feature-flags",
80
80
  "instrument-product-analytics",
81
+ "launch-agent-access",
82
+ "launch-ai-listing",
83
+ "launch-ai-screenshots",
84
+ "launch-ci",
85
+ "launch-doctor",
86
+ "launch-insights",
87
+ "launch-migrate",
88
+ "launch-ota",
89
+ "launch-plan",
90
+ "launch-release",
91
+ "launch-ship",
92
+ "launch-snapshot",
93
+ "launch-store-config",
94
+ "launch-verify",
81
95
  "mongodb-atlas-stream-processing",
82
96
  "mongodb-connection",
83
97
  "mongodb-mcp-setup",
@@ -128,5 +142,5 @@
128
142
  "wrangler",
129
143
  "xcode-project-setup"
130
144
  ],
131
- "count": 127
145
+ "count": 141
132
146
  }
@@ -33,22 +33,28 @@ account steps the stores legally require, one at a time.
33
33
  review contact). Decide sensible defaults; confirm the name with the builder.
34
34
  **Verify:** the app's identity is set and no `publish-app` markers remain (re-grep `TODO(vybekiit)`).
35
35
 
36
- 3. **The one-time store accounts (they cost money say so plainly).** Tell them, in plain words,
36
+ 3. **Prepare the store pictures.** Ask which real screens best explain the app, then run
37
+ `launch ai screenshots` with a short description of the product. The official picture tool is
38
+ already installed. If it opens a browser, ask the builder to approve that one sign-in. Show the
39
+ finished pictures before spending more credits or sending anything to a store.
40
+ **Verify:** `launch plan screenshots` shows the approved pictures and makes no live change.
41
+
42
+ 4. **The one-time store accounts (they cost money — say so plainly).** Tell them, in plain words,
37
43
  that each store needs a paid developer account (Apple's is a yearly fee; Google's is a one-time
38
44
  fee) and walk them through creating each — **one step at a time**, where to tap. Then guide the
39
45
  one sign-in the build tool needs (a browser opens; they approve).
40
46
  **Verify:** both accounts exist and the tools report they're signed in (run `vybekiit doctor`).
41
47
 
42
- 4. **Build the installable version.** Run the build yourself. Explain in one line: *"I'm packaging
48
+ 5. **Build the installable version.** Run the build yourself. Explain in one line: *"I'm packaging
43
49
  your app for the stores now — this runs in the cloud and can take a little while."*
44
50
  **Verify:** the build finishes green and an installable file is produced. If it fails, run `doctor`
45
51
  and read the one real cause — never paste the red log.
46
52
 
47
- 5. **Submit to the stores.** Send the build in for review.
53
+ 6. **Submit to the stores.** Send the build in for review.
48
54
  **Verify:** each store confirms the submission was received. 🎉 *Celebrate this milestone* — it's
49
55
  submitted.
50
56
 
51
- 6. **Set expectations on review.** Tell them plainly: the stores read every app before it goes
57
+ 7. **Set expectations on review.** Tell them plainly: the stores read every app before it goes
52
58
  public, which can take anywhere from a few hours to a few days — nothing is broken while they
53
59
  wait. Check the review state with `launch status` and report it in plain words; don't claim it's
54
60
  live until the store says so.
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "vybekiit",
3
- "version": "0.7.23",
3
+ "version": "0.7.25",
4
4
  "description": "Choose your services, sign in, create a VybeKiit app, and open its verified local welcome page.",
5
5
  "license": "MIT",
6
+ "packageManager": "pnpm@10.33.2",
6
7
  "publishConfig": {
7
8
  "access": "public"
8
9
  },
@@ -13,36 +14,36 @@
13
14
  "files": [
14
15
  "dist"
15
16
  ],
17
+ "scripts": {
18
+ "build": "tsup && node scripts/bundleGlobalSkills.mjs",
19
+ "typecheck": "tsc --noEmit",
20
+ "test": "vitest run"
21
+ },
16
22
  "dependencies": {
17
23
  "@modelcontextprotocol/sdk": "^1.12.1",
18
24
  "@aws-sdk/client-dynamodb": "^3.1075.0",
19
25
  "@aws-sdk/client-s3": "^3.1075.0",
20
26
  "@aws-sdk/lib-dynamodb": "^3.1075.0",
21
- "@clack/prompts": "1.7.0",
27
+ "@clack/prompts": "catalog:",
22
28
  "@neondatabase/serverless": "^0.10.4",
23
29
  "@supabase/supabase-js": "^2.47.10",
24
- "effect": "3.21.4",
30
+ "effect": "catalog:",
25
31
  "firebase-admin": "^13.0.2",
26
32
  "mongodb": "^7.4.0",
27
- "open": "11.0.0",
33
+ "open": "catalog:",
28
34
  "playwright": "^1.61.1"
29
35
  },
30
36
  "devDependencies": {
31
- "@types/node": "22.20.0",
32
- "tsup": "8.5.1",
33
- "typescript": "5.7.2",
34
- "vitest": "3.2.6",
35
- "@vybekiit/agent-kit": "0.7.23",
36
- "@vybekiit/core": "0.7.23",
37
- "@vybekiit/agent-mcp": "0.7.23",
38
- "@vybekiit/db": "0.7.23",
39
- "@vybekiit/report-mode": "0.7.23",
40
- "@vybekiit/deploy": "0.7.23",
41
- "@vybekiit/payments": "0.7.23"
42
- },
43
- "scripts": {
44
- "build": "tsup && node scripts/bundleGlobalSkills.mjs",
45
- "typecheck": "tsc --noEmit",
46
- "test": "vitest run"
37
+ "@types/node": "catalog:",
38
+ "tsup": "catalog:",
39
+ "typescript": "catalog:",
40
+ "vitest": "catalog:",
41
+ "@vybekiit/agent-kit": "workspace:*",
42
+ "@vybekiit/agent-mcp": "workspace:*",
43
+ "@vybekiit/core": "workspace:*",
44
+ "@vybekiit/db": "workspace:*",
45
+ "@vybekiit/deploy": "workspace:*",
46
+ "@vybekiit/payments": "workspace:*",
47
+ "@vybekiit/report-mode": "workspace:*"
47
48
  }
48
- }
49
+ }