@viberaven/cli 1.5.0 → 1.5.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viberaven/cli",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Local Studio cockpit for AI-built apps: agentic chat, provider context, release review, diffs, and approval-controlled repo work.",
5
5
  "license": "MIT",
6
6
  "author": "VibeRaven",
@@ -42,7 +42,8 @@
42
42
  "playbooks",
43
43
  "AGENTS.md",
44
44
  "SECURITY.md",
45
- "templates"
45
+ "templates",
46
+ "schemas"
46
47
  ],
47
48
  "scripts": {
48
49
  "sync-report-assets": "node scripts/sync-report-assets.mjs",
@@ -66,7 +67,16 @@
66
67
  "@clack/prompts": "^0.10.1",
67
68
  "picocolors": "^1.1.1"
68
69
  },
70
+ "peerDependencies": {
71
+ "@electric-sql/pglite": ">=0.5.8 <0.6.0"
72
+ },
73
+ "peerDependenciesMeta": {
74
+ "@electric-sql/pglite": {
75
+ "optional": true
76
+ }
77
+ },
69
78
  "devDependencies": {
79
+ "@electric-sql/pglite": "0.5.8",
70
80
  "esbuild": "^0.25.0",
71
81
  "typescript": "^5.8.0",
72
82
  "vitest": "^3.2.0"
@@ -1,11 +1,11 @@
1
- {
2
- "id": "stack-default",
3
- "recommendation": {
4
- "frontend": "react",
5
- "ui": "tailwind + shadcn/ui",
6
- "database": "supabase",
7
- "auth": "supabase",
8
- "deploy": "vercel",
9
- "reason": "Highest agent training density; lowest friction for autonomous deploy loop"
10
- }
11
- }
1
+ {
2
+ "id": "stack-default",
3
+ "recommendation": {
4
+ "frontend": "react",
5
+ "ui": "tailwind + shadcn/ui",
6
+ "database": "supabase",
7
+ "auth": "supabase",
8
+ "deploy": "vercel",
9
+ "reason": "Highest agent training density; lowest friction for autonomous deploy loop"
10
+ }
11
+ }
@@ -1,31 +1,31 @@
1
- {
2
- "id": "auth-supabase",
3
- "provider": "auth-supabase",
4
- "title": "Supabase Auth providers",
5
- "steps": [
6
- {
7
- "id": "auth-providers",
8
- "title": "Enable providers",
9
- "instruction": "Enable Email and any OAuth providers your app uses (Google, GitHub, etc.).",
10
- "openUrl": "https://supabase.com/dashboard/project/_/auth/providers"
11
- },
12
- {
13
- "id": "auth-urls",
14
- "title": "Redirect URLs",
15
- "instruction": "Site URL and Redirect URLs must include your Vercel deployment URL.",
16
- "openUrl": "https://supabase.com/dashboard/project/_/auth/url-configuration"
17
- },
18
- {
19
- "id": "auth-email-templates",
20
- "title": "Email templates",
21
- "instruction": "Customize confirm signup and magic link templates if your app uses email auth.",
22
- "openUrl": "https://supabase.com/dashboard/project/_/auth/templates"
23
- },
24
- {
25
- "id": "auth-jwt",
26
- "title": "JWT settings",
27
- "instruction": "Confirm JWT expiry matches your session strategy. Use service role key only on the server.",
28
- "openUrl": "https://supabase.com/dashboard/project/_/settings/api"
29
- }
30
- ]
31
- }
1
+ {
2
+ "id": "auth-supabase",
3
+ "provider": "auth-supabase",
4
+ "title": "Supabase Auth providers",
5
+ "steps": [
6
+ {
7
+ "id": "auth-providers",
8
+ "title": "Enable providers",
9
+ "instruction": "Enable Email and any OAuth providers your app uses (Google, GitHub, etc.).",
10
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/providers"
11
+ },
12
+ {
13
+ "id": "auth-urls",
14
+ "title": "Redirect URLs",
15
+ "instruction": "Site URL and Redirect URLs must include your Vercel deployment URL.",
16
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/url-configuration"
17
+ },
18
+ {
19
+ "id": "auth-email-templates",
20
+ "title": "Email templates",
21
+ "instruction": "Customize confirm signup and magic link templates if your app uses email auth.",
22
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/templates"
23
+ },
24
+ {
25
+ "id": "auth-jwt",
26
+ "title": "JWT settings",
27
+ "instruction": "Confirm JWT expiry matches your session strategy. Use service role key only on the server.",
28
+ "openUrl": "https://supabase.com/dashboard/project/_/settings/api"
29
+ }
30
+ ]
31
+ }
@@ -1,66 +1,66 @@
1
- {
2
- "id": "stripe-launch",
3
- "provider": "stripe",
4
- "title": "Configure Stripe billing",
5
- "steps": [
6
- {
7
- "id": "stripe-dashboard",
8
- "title": "Stripe dashboard",
9
- "instruction": "Open Stripe. For development, turn Test mode ON.",
10
- "openUrl": "https://dashboard.stripe.com/"
11
- },
12
- {
13
- "id": "stripe-keys",
14
- "title": "API keys",
15
- "instruction": "Copy test (or live) keys into .env. Never commit secret keys.",
16
- "openUrl": "https://dashboard.stripe.com/test/apikeys",
17
- "pasteTarget": {
18
- "file": ".env",
19
- "keys": ["STRIPE_SECRET_KEY", "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY"]
20
- }
21
- },
22
- {
23
- "id": "stripe-product",
24
- "title": "Product and price",
25
- "instruction": "Create a product with a recurring price for your Pro or paid tier.",
26
- "openUrl": "https://dashboard.stripe.com/test/products"
27
- },
28
- {
29
- "id": "stripe-price-id",
30
- "title": "Price ID",
31
- "instruction": "Copy the Price ID (price_...) into .env as STRIPE_PRICE_ID."
32
- },
33
- {
34
- "id": "stripe-webhook",
35
- "title": "Webhook endpoint",
36
- "instruction": "Add endpoint URL: {APP_URL}/api/webhooks/stripe (replace {APP_URL} with your Vercel URL).",
37
- "openUrl": "https://dashboard.stripe.com/test/webhooks"
38
- },
39
- {
40
- "id": "stripe-webhook-events",
41
- "title": "Webhook events",
42
- "instruction": "Subscribe to these events at minimum.",
43
- "events": [
44
- "checkout.session.completed",
45
- "customer.subscription.updated",
46
- "customer.subscription.deleted",
47
- "invoice.payment_failed"
48
- ]
49
- },
50
- {
51
- "id": "stripe-signing-secret",
52
- "title": "Signing secret",
53
- "instruction": "Copy the webhook signing secret into .env as STRIPE_WEBHOOK_SECRET.",
54
- "pasteTarget": {
55
- "file": ".env",
56
- "keys": ["STRIPE_WEBHOOK_SECRET"]
57
- }
58
- },
59
- {
60
- "id": "stripe-test-event",
61
- "title": "Test event",
62
- "instruction": "Use Send test event on the Stripe webhook endpoint and confirm a successful 2xx delivery for checkout.session.completed before launch.",
63
- "openUrl": "https://dashboard.stripe.com/test/webhooks"
64
- }
65
- ]
66
- }
1
+ {
2
+ "id": "stripe-launch",
3
+ "provider": "stripe",
4
+ "title": "Configure Stripe billing",
5
+ "steps": [
6
+ {
7
+ "id": "stripe-dashboard",
8
+ "title": "Stripe dashboard",
9
+ "instruction": "Open Stripe. For development, turn Test mode ON.",
10
+ "openUrl": "https://dashboard.stripe.com/"
11
+ },
12
+ {
13
+ "id": "stripe-keys",
14
+ "title": "API keys",
15
+ "instruction": "Copy test (or live) keys into .env. Never commit secret keys.",
16
+ "openUrl": "https://dashboard.stripe.com/test/apikeys",
17
+ "pasteTarget": {
18
+ "file": ".env",
19
+ "keys": ["STRIPE_SECRET_KEY", "NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY"]
20
+ }
21
+ },
22
+ {
23
+ "id": "stripe-product",
24
+ "title": "Product and price",
25
+ "instruction": "Create a product with a recurring price for your Pro or paid tier.",
26
+ "openUrl": "https://dashboard.stripe.com/test/products"
27
+ },
28
+ {
29
+ "id": "stripe-price-id",
30
+ "title": "Price ID",
31
+ "instruction": "Copy the Price ID (price_...) into .env as STRIPE_PRICE_ID."
32
+ },
33
+ {
34
+ "id": "stripe-webhook",
35
+ "title": "Webhook endpoint",
36
+ "instruction": "Add endpoint URL: {APP_URL}/api/webhooks/stripe (replace {APP_URL} with your Vercel URL).",
37
+ "openUrl": "https://dashboard.stripe.com/test/webhooks"
38
+ },
39
+ {
40
+ "id": "stripe-webhook-events",
41
+ "title": "Webhook events",
42
+ "instruction": "Subscribe to these events at minimum.",
43
+ "events": [
44
+ "checkout.session.completed",
45
+ "customer.subscription.updated",
46
+ "customer.subscription.deleted",
47
+ "invoice.payment_failed"
48
+ ]
49
+ },
50
+ {
51
+ "id": "stripe-signing-secret",
52
+ "title": "Signing secret",
53
+ "instruction": "Copy the webhook signing secret into .env as STRIPE_WEBHOOK_SECRET.",
54
+ "pasteTarget": {
55
+ "file": ".env",
56
+ "keys": ["STRIPE_WEBHOOK_SECRET"]
57
+ }
58
+ },
59
+ {
60
+ "id": "stripe-test-event",
61
+ "title": "Test event",
62
+ "instruction": "Use Send test event on the Stripe webhook endpoint and confirm a successful 2xx delivery for checkout.session.completed before launch.",
63
+ "openUrl": "https://dashboard.stripe.com/test/webhooks"
64
+ }
65
+ ]
66
+ }
@@ -1,51 +1,51 @@
1
- {
2
- "id": "supabase-launch",
3
- "provider": "supabase",
4
- "title": "Configure Supabase",
5
- "steps": [
6
- {
7
- "id": "supabase-project",
8
- "title": "Open Supabase dashboard",
9
- "instruction": "Create a project or open your existing Supabase project.",
10
- "openUrl": "https://supabase.com/dashboard"
11
- },
12
- {
13
- "id": "supabase-api-keys",
14
- "title": "API keys",
15
- "instruction": "Copy Project URL and anon/public key into .env.",
16
- "openUrl": "https://supabase.com/dashboard/project/_/settings/api",
17
- "pasteTarget": {
18
- "file": ".env",
19
- "keys": ["NEXT_PUBLIC_SUPABASE_URL", "NEXT_PUBLIC_SUPABASE_ANON_KEY"]
20
- }
21
- },
22
- {
23
- "id": "supabase-db-url",
24
- "title": "Database connection",
25
- "instruction": "Copy the connection string (use pooler for serverless). Server-side only — never expose in client code.",
26
- "openUrl": "https://supabase.com/dashboard/project/_/settings/database",
27
- "pasteTarget": {
28
- "file": ".env",
29
- "keys": ["DATABASE_URL"]
30
- }
31
- },
32
- {
33
- "id": "supabase-auth-urls",
34
- "title": "Auth URL configuration",
35
- "instruction": "Set Site URL to your Vercel preview or production URL. Add the same URL to Redirect URLs with /** wildcard.",
36
- "openUrl": "https://supabase.com/dashboard/project/_/auth/url-configuration"
37
- },
38
- {
39
- "id": "supabase-rls",
40
- "title": "Row Level Security",
41
- "instruction": "Enable RLS on tables that hold user data. Add policies for authenticated users.",
42
- "openUrl": "https://supabase.com/dashboard/project/_/auth/policies"
43
- },
44
- {
45
- "id": "supabase-migrate",
46
- "title": "Apply migrations",
47
- "instruction": "Run supabase db push or apply SQL migrations so production schema matches the repo.",
48
- "openUrl": "https://supabase.com/docs/guides/cli"
49
- }
50
- ]
51
- }
1
+ {
2
+ "id": "supabase-launch",
3
+ "provider": "supabase",
4
+ "title": "Configure Supabase",
5
+ "steps": [
6
+ {
7
+ "id": "supabase-project",
8
+ "title": "Open Supabase dashboard",
9
+ "instruction": "Create a project or open your existing Supabase project.",
10
+ "openUrl": "https://supabase.com/dashboard"
11
+ },
12
+ {
13
+ "id": "supabase-api-keys",
14
+ "title": "API keys",
15
+ "instruction": "Copy Project URL and anon/public key into .env.",
16
+ "openUrl": "https://supabase.com/dashboard/project/_/settings/api",
17
+ "pasteTarget": {
18
+ "file": ".env",
19
+ "keys": ["NEXT_PUBLIC_SUPABASE_URL", "NEXT_PUBLIC_SUPABASE_ANON_KEY"]
20
+ }
21
+ },
22
+ {
23
+ "id": "supabase-db-url",
24
+ "title": "Database connection",
25
+ "instruction": "Copy the connection string (use pooler for serverless). Server-side only — never expose in client code.",
26
+ "openUrl": "https://supabase.com/dashboard/project/_/settings/database",
27
+ "pasteTarget": {
28
+ "file": ".env",
29
+ "keys": ["DATABASE_URL"]
30
+ }
31
+ },
32
+ {
33
+ "id": "supabase-auth-urls",
34
+ "title": "Auth URL configuration",
35
+ "instruction": "Set Site URL to your Vercel preview or production URL. Add the same URL to Redirect URLs with /** wildcard.",
36
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/url-configuration"
37
+ },
38
+ {
39
+ "id": "supabase-rls",
40
+ "title": "Row Level Security",
41
+ "instruction": "Enable RLS on tables that hold user data. Add policies for authenticated users.",
42
+ "openUrl": "https://supabase.com/dashboard/project/_/auth/policies"
43
+ },
44
+ {
45
+ "id": "supabase-migrate",
46
+ "title": "Apply migrations",
47
+ "instruction": "Run supabase db push or apply SQL migrations so production schema matches the repo.",
48
+ "openUrl": "https://supabase.com/docs/guides/cli"
49
+ }
50
+ ]
51
+ }
@@ -1,42 +1,42 @@
1
- {
2
- "id": "vercel-launch",
3
- "provider": "vercel",
4
- "title": "Deploy on Vercel",
5
- "steps": [
6
- {
7
- "id": "vercel-signup",
8
- "title": "Sign in to Vercel",
9
- "instruction": "Create or sign in to your Vercel account.",
10
- "openUrl": "https://vercel.com/signup"
11
- },
12
- {
13
- "id": "vercel-import",
14
- "title": "Import repository",
15
- "instruction": "Import your Git repository. Connect GitHub or GitLab if prompted.",
16
- "openUrl": "https://vercel.com/new"
17
- },
18
- {
19
- "id": "vercel-env",
20
- "title": "Environment variables",
21
- "instruction": "Project → Settings → Environment Variables. Add every key from .env.example for Production and Preview.",
22
- "openUrl": "https://vercel.com/docs/projects/environment-variables"
23
- },
24
- {
25
- "id": "vercel-deploy",
26
- "title": "Deploy",
27
- "instruction": "Push to your production branch or click Redeploy in the Vercel dashboard.",
28
- "openUrl": "https://vercel.com/docs/deployments"
29
- },
30
- {
31
- "id": "vercel-preview",
32
- "title": "Copy live URL",
33
- "instruction": "Copy the Production or Preview URL from Vercel. Set NEXT_PUBLIC_APP_URL (or your app's public URL env) in .env and Vercel env settings."
34
- },
35
- {
36
- "id": "vercel-domains",
37
- "title": "Custom domain (optional)",
38
- "instruction": "Add a custom domain when you are ready for production traffic.",
39
- "openUrl": "https://vercel.com/docs/projects/domains"
40
- }
41
- ]
42
- }
1
+ {
2
+ "id": "vercel-launch",
3
+ "provider": "vercel",
4
+ "title": "Deploy on Vercel",
5
+ "steps": [
6
+ {
7
+ "id": "vercel-signup",
8
+ "title": "Sign in to Vercel",
9
+ "instruction": "Create or sign in to your Vercel account.",
10
+ "openUrl": "https://vercel.com/signup"
11
+ },
12
+ {
13
+ "id": "vercel-import",
14
+ "title": "Import repository",
15
+ "instruction": "Import your Git repository. Connect GitHub or GitLab if prompted.",
16
+ "openUrl": "https://vercel.com/new"
17
+ },
18
+ {
19
+ "id": "vercel-env",
20
+ "title": "Environment variables",
21
+ "instruction": "Project → Settings → Environment Variables. Add every key from .env.example for Production and Preview.",
22
+ "openUrl": "https://vercel.com/docs/projects/environment-variables"
23
+ },
24
+ {
25
+ "id": "vercel-deploy",
26
+ "title": "Deploy",
27
+ "instruction": "Push to your production branch or click Redeploy in the Vercel dashboard.",
28
+ "openUrl": "https://vercel.com/docs/deployments"
29
+ },
30
+ {
31
+ "id": "vercel-preview",
32
+ "title": "Copy live URL",
33
+ "instruction": "Copy the Production or Preview URL from Vercel. Set NEXT_PUBLIC_APP_URL (or your app's public URL env) in .env and Vercel env settings."
34
+ },
35
+ {
36
+ "id": "vercel-domains",
37
+ "title": "Custom domain (optional)",
38
+ "instruction": "Add a custom domain when you are ready for production traffic.",
39
+ "openUrl": "https://vercel.com/docs/projects/domains"
40
+ }
41
+ ]
42
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://viberaven.dev/schemas/permissions-matrix.v1.json",
4
+ "title": "VibeRaven permissions matrix (viberaven.permissions.json)",
5
+ "description": "Who may read, add, change and delete rows in each table, written by a person. `viberaven rls-test` checks the migrations against it. Never generate it from the app's own policies. Every cell is about rows owned by `owner`: owner acts on their own row, other_user is a different signed-in user acting on the owner's row, anon is a request with only the public anon key. For insert, the new row names the owner as its owner.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["version", "tables"],
9
+ "properties": {
10
+ "$schema": { "type": "string" },
11
+ "version": { "const": 1 },
12
+ "description": { "type": "string" },
13
+ "defaultGrants": {
14
+ "description": "Table grants the test database gives new public tables. supabase-legacy: anon and authenticated get all privileges on new public tables, as on existing Supabase projects (the more exposed assumption). none: no default grants, only what the migrations grant.",
15
+ "enum": ["supabase-legacy", "none"],
16
+ "default": "supabase-legacy"
17
+ },
18
+ "tables": {
19
+ "type": "object",
20
+ "minProperties": 1,
21
+ "propertyNames": { "pattern": "^[A-Za-z_][A-Za-z0-9_$]*(\\.[A-Za-z_][A-Za-z0-9_$]*)?$" },
22
+ "additionalProperties": { "$ref": "#/$defs/table" }
23
+ }
24
+ },
25
+ "$defs": {
26
+ "table": {
27
+ "type": "object",
28
+ "additionalProperties": false,
29
+ "required": ["owner", "expect"],
30
+ "properties": {
31
+ "description": { "type": "string" },
32
+ "owner": {
33
+ "description": "How a row's owner is defined. Only `column = auth.uid()` is supported.",
34
+ "type": "object",
35
+ "additionalProperties": false,
36
+ "required": ["column", "is"],
37
+ "properties": {
38
+ "column": { "type": "string", "pattern": "^[A-Za-z_][A-Za-z0-9_$]*$" },
39
+ "is": { "const": "auth.uid()" }
40
+ }
41
+ },
42
+ "expect": { "$ref": "#/$defs/expectation" },
43
+ "seed": {
44
+ "description": "Values for columns the test cannot fill by itself (for example a NOT NULL foreign key). Used for every seeded and inserted row. Leave the owner column out.",
45
+ "type": "object",
46
+ "propertyNames": { "pattern": "^[A-Za-z_][A-Za-z0-9_$]*$" },
47
+ "additionalProperties": { "type": ["string", "number", "boolean", "null"] }
48
+ },
49
+ "updateColumn": {
50
+ "description": "Column the update probe changes. Default: the first plain column that is not the owner column or part of the primary key.",
51
+ "type": "string",
52
+ "pattern": "^[A-Za-z_][A-Za-z0-9_$]*$"
53
+ }
54
+ }
55
+ },
56
+ "expectation": {
57
+ "type": "object",
58
+ "additionalProperties": false,
59
+ "required": ["owner", "other_user", "anon"],
60
+ "properties": {
61
+ "owner": { "$ref": "#/$defs/actorCells" },
62
+ "other_user": { "$ref": "#/$defs/actorCells" },
63
+ "anon": { "$ref": "#/$defs/actorCells" },
64
+ "service_role": {
65
+ "description": "The service role bypasses RLS, so it is never tested.",
66
+ "const": "excluded"
67
+ }
68
+ }
69
+ },
70
+ "actorCells": {
71
+ "type": "object",
72
+ "additionalProperties": false,
73
+ "required": ["select", "insert", "update", "delete"],
74
+ "properties": {
75
+ "select": { "$ref": "#/$defs/cell" },
76
+ "insert": { "$ref": "#/$defs/cell" },
77
+ "update": { "$ref": "#/$defs/cell" },
78
+ "delete": { "$ref": "#/$defs/cell" },
79
+ "reassign": {
80
+ "description": "Optional. Setting the owner column of the owner's row to another user: the owner giving the row away, or another user taking it. Not tested when absent.",
81
+ "$ref": "#/$defs/cell"
82
+ }
83
+ }
84
+ },
85
+ "cell": {
86
+ "description": "allow: the action must work on the owner's row. deny: it must return nothing, change nothing, or be refused with a permission error. skip: not tested (N/A).",
87
+ "enum": ["allow", "deny", "skip"]
88
+ }
89
+ }
90
+ }
@@ -1,52 +1,52 @@
1
- ## VibeRaven Launch Readiness
2
-
3
- VibeRaven is the Agent Context + Production Gate.
4
-
5
- Use VibeRaven when the user asks if their AI-built app is production-ready, launch-ready, safer to deploy, or what is missing before ship.
6
-
7
- ### Humans
8
-
9
- ```bash
10
- npx -y viberaven
11
- ```
12
-
13
- In a real terminal, this opens the interactive VibeRaven menu.
14
-
15
- ### Agents
16
-
17
- Paste this into your coding agent:
18
-
19
- ```bash
20
- npx -y viberaven --agent-mode
21
- ```
22
-
23
- 1. Run `npx -y viberaven --agent-mode` from the project root.
24
- 2. If VibeRaven prints `LOGIN_URL_READY`, open that exact URL for the user. Say: "I opened VibeRaven sign-in so you can approve access; I will continue after approval." Do not ask for passwords, tokens, cookies, or secrets. Keep the terminal alive while the user approves.
25
- If the scan flow cannot start login, run `npx -y viberaven login`.
26
- 3. Read `.viberaven/agent-tasklist.md` first, `.viberaven/gate-result.json` for the machine verdict, and `.viberaven/context-map.json` for compact agent context. If the tasklist says `CRITICAL GAPS DETECTED` or `PRODUCTION GATE NOT CLEAR`, fix one listed repo-code gap before deploy.
27
- 4. Read `.viberaven/agent-summary.md` second for scan context.
28
- 5. Read `.viberaven/launch-playbook.md` third for the full checklist.
29
- 6. Use `npx -y viberaven next --json` or `npx -y viberaven prompt --gap <id>` for one focused repo-code fix. Local installs can use `viberaven prompt`.
30
- 7. For Vercel + Supabase, run `npx -y viberaven audit --vercel-supabase` and check RLS, service role exposure, and Supabase pooler port 6543 instead of runtime port 5432.
31
- 8. Do not claim provider dashboard checks are fixed by repo-code edits.
32
- 9. Verify with tests/build, then run `npx -y viberaven --verify`.
33
-
34
- Before deploy or CI pass:
35
-
36
- ```bash
37
- npx -y viberaven --strict
38
- ```
39
-
40
- Also available:
41
-
42
- - `.viberaven/last-scan.json` - full mission map and gaps
43
- - `.viberaven/report.html` - visual map for the user
44
- - `npx -y viberaven init --dry-run` - preview local agent rules
45
- - `npx -y viberaven clean --plan` - write a non-destructive cleanup plan
46
-
47
- Free plan: 2 lifetime scans, 6/12 mission map lanes. Pro: 50 scans/month, all 12 lanes.
48
-
49
- Same VibeRaven account and scan quota as the VS Code extension.
50
-
51
- Security: the CLI does not read `OPENAI_API_KEY`. Scans use VibeRaven login and the managed API; your model key stays server-side.
52
-
1
+ ## VibeRaven Launch Readiness
2
+
3
+ VibeRaven is the Agent Context + Production Gate.
4
+
5
+ Use VibeRaven when the user asks if their AI-built app is production-ready, launch-ready, safer to deploy, or what is missing before ship.
6
+
7
+ ### Humans
8
+
9
+ ```bash
10
+ npx -y viberaven
11
+ ```
12
+
13
+ In a real terminal, this opens the interactive VibeRaven menu.
14
+
15
+ ### Agents
16
+
17
+ Paste this into your coding agent:
18
+
19
+ ```bash
20
+ npx -y viberaven --agent-mode
21
+ ```
22
+
23
+ 1. Run `npx -y viberaven --agent-mode` from the project root.
24
+ 2. If VibeRaven prints `LOGIN_URL_READY`, open that exact URL for the user. Say: "I opened VibeRaven sign-in so you can approve access; I will continue after approval." Do not ask for passwords, tokens, cookies, or secrets. Keep the terminal alive while the user approves.
25
+ If the scan flow cannot start login, run `npx -y viberaven login`.
26
+ 3. Read `.viberaven/agent-tasklist.md` first, `.viberaven/gate-result.json` for the machine verdict, and `.viberaven/context-map.json` for compact agent context. If the tasklist says `CRITICAL GAPS DETECTED` or `PRODUCTION GATE NOT CLEAR`, fix one listed repo-code gap before deploy.
27
+ 4. Read `.viberaven/agent-summary.md` second for scan context.
28
+ 5. Read `.viberaven/launch-playbook.md` third for the full checklist.
29
+ 6. Use `npx -y viberaven next --json` or `npx -y viberaven prompt --gap <id>` for one focused repo-code fix. Local installs can use `viberaven prompt`.
30
+ 7. For Vercel + Supabase, run `npx -y viberaven audit --vercel-supabase` and check RLS, service role exposure, and Supabase pooler port 6543 instead of runtime port 5432.
31
+ 8. Do not claim provider dashboard checks are fixed by repo-code edits.
32
+ 9. Verify with tests/build, then run `npx -y viberaven --verify`.
33
+
34
+ Before deploy or CI pass:
35
+
36
+ ```bash
37
+ npx -y viberaven --strict
38
+ ```
39
+
40
+ Also available:
41
+
42
+ - `.viberaven/last-scan.json` - full mission map and gaps
43
+ - `.viberaven/report.html` - visual map for the user
44
+ - `npx -y viberaven init --dry-run` - preview local agent rules
45
+ - `npx -y viberaven clean --plan` - write a non-destructive cleanup plan
46
+
47
+ Free plan: 2 lifetime scans, 6/12 mission map lanes. Pro: 50 scans/month, all 12 lanes.
48
+
49
+ Same VibeRaven account and scan quota as the VS Code extension.
50
+
51
+ Security: the CLI does not read `OPENAI_API_KEY`. Scans use VibeRaven login and the managed API; your model key stays server-side.
52
+