@cloudgrid-io/mcp 0.20.12 → 0.20.14

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 (93) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/src/corpus/cli-reference.md +4 -4
  4. package/src/corpus/cloudgrid-yaml.md +3 -2
  5. package/src/corpus/cookbook.md +7 -4
  6. package/src/corpus/skill-init.md +21 -17
  7. package/src/corpus/templates/ai-knowledge-base/AGENTS.md +6 -5
  8. package/src/corpus/templates/ai-knowledge-base/index.md +2 -1
  9. package/src/corpus/templates/appointment-booking/AGENTS.md +4 -3
  10. package/src/corpus/templates/approval-workflow/AGENTS.md +4 -3
  11. package/src/corpus/templates/billing-dashboard/AGENTS.md +3 -4
  12. package/src/corpus/templates/billing-dashboard/index.md +3 -2
  13. package/src/corpus/templates/booking-system/AGENTS.md +3 -4
  14. package/src/corpus/templates/booking-system/index.md +2 -2
  15. package/src/corpus/templates/calendar-scheduler/AGENTS.md +6 -5
  16. package/src/corpus/templates/calendar-scheduler/index.md +2 -1
  17. package/src/corpus/templates/course-platform/AGENTS.md +3 -4
  18. package/src/corpus/templates/course-platform/index.md +4 -3
  19. package/src/corpus/templates/erp/AGENTS.md +3 -4
  20. package/src/corpus/templates/erp/README.md +2 -1
  21. package/src/corpus/templates/forum/AGENTS.md +4 -3
  22. package/src/corpus/templates/forum/README.md +2 -1
  23. package/src/corpus/templates/hr-portal/AGENTS.md +4 -5
  24. package/src/corpus/templates/hr-portal/README.md +3 -2
  25. package/src/corpus/templates/hr-portal/index.md +2 -1
  26. package/src/corpus/templates/internal-tools-portal/AGENTS.md +5 -6
  27. package/src/corpus/templates/internal-tools-portal/README.md +2 -2
  28. package/src/corpus/templates/internal-tools-portal/index.md +2 -1
  29. package/src/corpus/templates/lms/AGENTS.md +3 -4
  30. package/src/corpus/templates/lms/index.md +2 -2
  31. package/src/corpus/templates/marketplace/AGENTS.md +5 -5
  32. package/src/corpus/templates/marketplace/index.md +2 -1
  33. package/src/corpus/templates/membership-site/AGENTS.md +4 -3
  34. package/src/corpus/templates/online-store/AGENTS.md +3 -4
  35. package/src/corpus/templates/online-store/index.md +3 -2
  36. package/src/corpus/templates/restaurant-reservations/AGENTS.md +4 -3
  37. package/src/corpus/templates/restaurant-reservations/index.md +2 -2
  38. package/src/corpus/templates/semantic-search/AGENTS.md +3 -2
  39. package/src/corpus/templates/semantic-search/README.md +1 -1
  40. package/src/corpus/templates/semantic-search/index.md +2 -1
  41. package/src/corpus/templates/simple-semantic-search/README.md +5 -4
  42. package/src/corpus/templates/simple-semantic-search/index.md +9 -6
  43. package/src/corpus/templates/subscription-management/AGENTS.md +4 -3
  44. package/src/corpus/templates/travel-booking/AGENTS.md +3 -4
  45. package/src/corpus/templates/travel-booking/index.md +2 -2
  46. package/src/corpus/workflows/admin-dashboard.md +4 -3
  47. package/src/corpus/workflows/ai-app.md +3 -3
  48. package/src/corpus/workflows/ai-knowledge-base.md +5 -3
  49. package/src/corpus/workflows/analytics-dashboard.md +4 -3
  50. package/src/corpus/workflows/api-dashboard.md +4 -3
  51. package/src/corpus/workflows/api-service.md +3 -3
  52. package/src/corpus/workflows/app-with-data.md +3 -3
  53. package/src/corpus/workflows/appointment-booking.md +4 -3
  54. package/src/corpus/workflows/approval-workflow.md +4 -3
  55. package/src/corpus/workflows/billing-dashboard.md +3 -3
  56. package/src/corpus/workflows/blog-cms.md +4 -3
  57. package/src/corpus/workflows/booking-system.md +4 -3
  58. package/src/corpus/workflows/calendar-scheduler.md +5 -3
  59. package/src/corpus/workflows/course-platform.md +4 -3
  60. package/src/corpus/workflows/crm.md +4 -3
  61. package/src/corpus/workflows/directory.md +4 -3
  62. package/src/corpus/workflows/erp.md +4 -3
  63. package/src/corpus/workflows/event-board.md +4 -3
  64. package/src/corpus/workflows/expense-tracker.md +4 -3
  65. package/src/corpus/workflows/feature-request-board.md +4 -3
  66. package/src/corpus/workflows/financial-dashboard.md +4 -3
  67. package/src/corpus/workflows/forum.md +5 -4
  68. package/src/corpus/workflows/hr-portal.md +4 -3
  69. package/src/corpus/workflows/internal-tools-portal.md +4 -3
  70. package/src/corpus/workflows/inventory.md +4 -3
  71. package/src/corpus/workflows/invoice.md +4 -3
  72. package/src/corpus/workflows/job-board.md +4 -3
  73. package/src/corpus/workflows/kanban.md +4 -3
  74. package/src/corpus/workflows/lms.md +4 -3
  75. package/src/corpus/workflows/marketplace.md +5 -3
  76. package/src/corpus/workflows/membership-site.md +4 -3
  77. package/src/corpus/workflows/monitoring-dashboard.md +4 -3
  78. package/src/corpus/workflows/online-store.md +3 -3
  79. package/src/corpus/workflows/product-catalog.md +4 -3
  80. package/src/corpus/workflows/project-management.md +4 -3
  81. package/src/corpus/workflows/property-listings.md +4 -3
  82. package/src/corpus/workflows/quiz-platform.md +4 -3
  83. package/src/corpus/workflows/restaurant-reservations.md +4 -3
  84. package/src/corpus/workflows/revenue-dashboard.md +4 -3
  85. package/src/corpus/workflows/semantic-search.md +5 -3
  86. package/src/corpus/workflows/simple-semantic-search.md +5 -5
  87. package/src/corpus/workflows/subscription-management.md +4 -3
  88. package/src/corpus/workflows/task-manager.md +4 -3
  89. package/src/corpus/workflows/ticket-system.md +4 -3
  90. package/src/corpus/workflows/time-tracking.md +4 -3
  91. package/src/corpus/workflows/travel-booking.md +3 -3
  92. package/src/tools/constants.js +1 -1
  93. package/src/widgets/live-result.html +1 -1
package/README.md CHANGED
@@ -94,7 +94,7 @@ CLI uses, so the two share one identity.
94
94
 
95
95
  | Tool | Wraps | Notes |
96
96
  |---|---|---|
97
- | `grid_create_project` | `grid init` | Register an app or agent; optionally seed a web service. |
97
+ | `grid_create_project` | `grid new` | Scaffold an app or agent project; optionally seed a web service. |
98
98
  | `grid_view_logs` | `grid logs` | Snapshot of recent logs. Does not stream. Read-only. (`grid_logs` is a kept deprecated alias.) |
99
99
  | `grid_share` | `grid visibility set` | Set visibility, default link. |
100
100
  | `grid_whoami` | `grid whoami` | Show the signed-in user and active grid. Read-only. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudgrid-io/mcp",
3
- "version": "0.20.12",
3
+ "version": "0.20.14",
4
4
  "description": "Use CloudGrid via MCP to brainstorm, build, deploy, and improve apps, games, websites, dashboards, and tools and get a live URL - templates, recipes, managed databases and AI, instant single-page publish, and full-app deploys, for developers and non-technical users. Three editions: local stdio (full toolset), hosted web (light, CLI-free), and a public docs-search server, over MCP.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -61,7 +61,7 @@ No account needed to try a one-off share: `grid plug ./index.html` drops a publi
61
61
 
62
62
  ```
63
63
  # Scaffold and deploy a Node app
64
- grid init app my-api --type node
64
+ grid new my-api --type node --dir my-api
65
65
  cd my-api && grid plug
66
66
 
67
67
  # Deploy the current directory and tail its logs
@@ -83,8 +83,8 @@ grid grid
83
83
  |---|---|
84
84
  | `login` / `logout` / `whoami` | Sign in (Google OAuth), sign out, show user + active org |
85
85
  | `use [slug]` | Set or show the active org |
86
- | `init <kind> <name>` | Register a new app or agent |
87
- | `plug [target]` | Build + deploy (or redeploy); prints the live URL |
86
+ | `new <name>` | Scaffold a new app or agent project (`--type`, `--needs`, `--agent`, `--dir`); the entity is created on first `plug` |
87
+ | `plug [target]` | Build + deploy (or redeploy); first plug auto-creates the entity from `cloudgrid.yaml`; prints the live URL |
88
88
  | `dev` | Run the linked entity locally with grid-injected resources |
89
89
  | `status [name]` | Org dashboard, entity detail, or a deploy snapshot |
90
90
  | `logs [name]` | Stream entity logs |
@@ -101,7 +101,7 @@ grid grid
101
101
  | `doctor` | Diagnostic checks (Node, Docker, API reachability, auth) |
102
102
  | `completion <shell>` | Shell completion script |
103
103
 
104
- Run `cloudgrid <command> --help` for the full flag set of any command.
104
+ Run `grid <command> --help` for the full flag set of any command.
105
105
 
106
106
  ## Flags
107
107
 
@@ -11,8 +11,9 @@
11
11
 
12
12
  `cloudgrid.yaml` is the manifest at the **root of your project** that defines your
13
13
  entity (an app or an agent). It declares the services your entity runs, the
14
- infrastructure it needs, and how it behaves. `grid init` creates it; `grid plug`
15
- reads it to build and deploy.
14
+ infrastructure it needs, and how it behaves. `grid new` scaffolds it; `grid plug`
15
+ reads it to build and deploy (the first plug in an unlinked directory also
16
+ registers the entity from it, honoring its `name:`).
16
17
 
17
18
  **Wiring a database or cache? Use `needs:`** — `needs: {database: true}` is
18
19
  canonical and the deployer injects the connection env vars from it. See §7 for the
@@ -20,14 +20,15 @@ init -> plug -> logs -> share -> feedback
20
20
 
21
21
  ### 1. Scaffold
22
22
 
23
- Register a new app and seed a static web service:
23
+ Scaffold a new app in the current directory and seed a static web service:
24
24
 
25
25
  ```
26
- grid init app my-thing --type static
26
+ grid new my-thing --type static
27
27
  ```
28
28
 
29
- `--type` accepts `node`, `nextjs`, `python`, or `static`. For an agent, use
30
- `grid init agent my-thing`.
29
+ `--type` accepts `node`, `nextjs`, `python`, or `static`; `--dir <path>` targets a
30
+ different folder. For an agent, use `grid new my-thing --agent`. Scaffolding is
31
+ local-only — the entity is created on the first `grid plug`.
31
32
 
32
33
  ### 2. Deploy
33
34
 
@@ -37,6 +38,8 @@ From the project directory, deploy it:
37
38
  grid plug
38
39
  ```
39
40
 
41
+ The first plug auto-creates the entity from `cloudgrid.yaml` (honoring its
42
+ `name:`) and writes `.cloudgrid/link.json`.
40
43
  `grid plug` also takes a path or a URL. It builds and deploys, then prints the
41
44
  live URL. This usually takes about 30 seconds.
42
45
 
@@ -3,16 +3,18 @@ version: 0.2.0
3
3
  name: init
4
4
  description: |
5
5
  Scaffold a new CloudGrid app or agent. Use when the user wants to start a new
6
- project, create a new entity, set up a new app or agent, or seed a web service
7
- (node, nextjs, python, or static) before deploying. Wraps grid init.
8
- argument-hint: "[app|agent] [name]"
6
+ project, set up a new app or agent, or seed a web service
7
+ (node, nextjs, python, or static) before deploying. Wraps grid new.
8
+ argument-hint: "[name] [--agent]"
9
9
  allowed-tools: Bash
10
10
  ---
11
11
 
12
12
  # CloudGrid Init
13
13
 
14
- Register a new app or agent in the active org and, optionally, seed a web service
15
- to deploy. Wraps `grid init`. After this, `cloudgrid:plug` deploys it.
14
+ Scaffold a new app or agent project and, optionally, seed a web service to
15
+ deploy. Wraps `grid new`. Scaffolding is local-only — no server entity exists
16
+ until the first `grid plug`, which auto-creates it from `cloudgrid.yaml`. After
17
+ this, `cloudgrid:plug` deploys it.
16
18
 
17
19
  ## Step 0 — Bootstrap
18
20
 
@@ -32,40 +34,42 @@ to deploy. Wraps `grid init`. After this, `cloudgrid:plug` deploys it.
32
34
  You need two things: the kind and the name.
33
35
 
34
36
  - **Kind:** `app` or `agent`. Default to `app` unless the user describes an agent
35
- (something that acts on its own, calls tools, or runs on a schedule).
37
+ (something that acts on its own, calls tools, or runs on a schedule). For an
38
+ agent, pass `--agent` (an app with an `agent:` block is an agent).
36
39
  - **Name:** a slug, 3 to 40 lowercase letters, numbers, or hyphens. If the user
37
40
  gives a title, derive a slug from it. Confirm the slug before running.
38
41
 
39
42
  Optional, only if the user implies them:
40
43
 
41
44
  - `--type` to seed a web service: `node`, `nextjs`, `python`, or `static`.
42
- - `--dir` to scaffold somewhere other than `./<name>`.
43
- - `--description` for a one-line description.
45
+ - `--dir <path>` to scaffold somewhere other than the current directory.
46
+ - `--needs <list>` to pre-declare resources (e.g. `database,cache`).
44
47
 
45
48
  ## Usage
46
49
 
47
- Register an app and seed a static site:
50
+ Scaffold an app in the current directory and seed a static site:
48
51
 
49
52
  ```
50
- grid init app my-thing --type static
53
+ grid new my-thing --type static
51
54
  ```
52
55
 
53
- Register an agent:
56
+ Scaffold an agent:
54
57
 
55
58
  ```
56
- grid init agent my-helper
59
+ grid new my-helper --agent
57
60
  ```
58
61
 
59
- Register without seeding any files (you will add your own):
62
+ Scaffold without seeding any files (you will add your own):
60
63
 
61
64
  ```
62
- grid init app my-thing
65
+ grid new my-thing
63
66
  ```
64
67
 
65
- ## After init
68
+ ## After scaffolding
66
69
 
67
- Tell the user the entity is registered and what is next: `cd` into the directory
68
- (if seeded) and run `grid plug` to deploy. Hand off to `cloudgrid:plug`.
70
+ Tell the user the project is set up and what is next: run `grid plug` to deploy —
71
+ the first plug creates the entity from `cloudgrid.yaml` and takes it live. Hand
72
+ off to `cloudgrid:plug`.
69
73
 
70
74
  ## References
71
75
 
@@ -205,14 +205,15 @@ var, and `grid secrets set` stores the real value. Never inline a key.
205
205
  ## 6. Deploy steps
206
206
 
207
207
  Runtime app → **local edition** only (Claude Desktop / Claude Code / CLI); the
208
- hosted edition cannot build a runtime container. Order matters — `plug` needs a
209
- linked directory, so `init` first.
208
+ hosted edition cannot build a runtime container.
210
209
 
211
- 1. `grid init` (or `grid_create_project`) an app `<name>` — creates the entity +
212
- `.cloudgrid/link.json` and a starter `cloudgrid.yaml` with empty `services:{}`.
213
- 2. Fill: put the app under `services/web/` and set `cloudgrid.yaml` to this
210
+ 1. Put the app under `services/web/` and set `cloudgrid.yaml` to this
214
211
  blueprint's active fields (`services.web` nextjs `/`, `needs:{ai:true,
215
212
  database:true}`).
213
+ 2. The first `grid plug` auto-creates the entity from the manifest (honors its
214
+ `name:`) and writes `.cloudgrid/link.json`. To register without deploying —
215
+ e.g. to set secrets first — use `grid plug --no-deploy` (the
216
+ `grid_create_project` MCP tool does the same).
216
217
  3. (If you added auth/payments) store the vault secrets with `grid secrets set`;
217
218
  non-secret public config → `grid env`. The AI Gateway and Mongo need no secrets
218
219
  — they are injected by `needs`.
@@ -70,7 +70,8 @@ and read it. It covers the `services/web/` file tree, the `documents` / `chunks`
70
70
  collections, the CloudGrid injection table (needs + AI Gateway + the pgvector note),
71
71
  the ingest → retrieve → answer RAG loop with lazy `lib/db.js` / `lib/ai.js` /
72
72
  `lib/retrieve.js`, optional auth/payments via `vault:`, and the
73
- `grid init → fill → grid plug → poll` deploy flow.
73
+ `write files → grid plug → poll` deploy flow (the first plug auto-creates the
74
+ entity from `cloudgrid.yaml`).
74
75
 
75
76
  ## Adapt it
76
77
 
@@ -163,9 +163,10 @@ you want client accounts.
163
163
 
164
164
  1. `grid_login_status` → `grid_login` if needed. Respect the grid picker
165
165
  (ask which grid if the user has more than one).
166
- 2. `grid_create_project` an app `<name>` FIRST — it creates the entity, writes
167
- `.cloudgrid/link.json`, and a `cloudgrid.yaml` with empty `services: {}`.
168
- `plug` needs a linked directory.
166
+ 2. `grid_create_project` an app `<name>` — it scaffolds the project folder and
167
+ a `cloudgrid.yaml` with empty `services: {}`. No server entity exists yet —
168
+ the first plug auto-creates it from the manifest (honoring its `name:`) and
169
+ writes `.cloudgrid/link.json`.
169
170
  3. Write the app under `services/web/` and set `cloudgrid.yaml` to the active
170
171
  shape: `name` + `services.web{type: nextjs, path: /}` + `needs:{database:true}`
171
172
  + the `vault:` block. (Leave the `reminders` cron service COMMENTED — see §7.)
@@ -146,9 +146,10 @@ routes and the UI agree on what is legal.
146
146
 
147
147
  ## 6. Deploy steps
148
148
 
149
- 1. `grid_create_project` an app `<name>` — creates the entity, `.cloudgrid/link.json`,
150
- and a `cloudgrid.yaml` with an empty `services: {}`. Run `init` FIRST because
151
- `plug` needs a linked directory.
149
+ 1. `grid_create_project` an app `<name>` — scaffolds the project folder and a
150
+ `cloudgrid.yaml` with an empty `services: {}`. No server entity exists yet —
151
+ the first `grid plug` auto-creates it from the manifest (honoring its
152
+ `name:`) and writes `.cloudgrid/link.json`.
152
153
  2. Fill `cloudgrid.yaml` to this blueprint's shape (copy this template's file):
153
154
  `services.web { type: nextjs, path: / }` + `needs: { database: true }` +
154
155
  (uncomment) the `vault:` block for `AUTH_PROVIDER_KEY`.
@@ -160,12 +160,11 @@ publicly.
160
160
 
161
161
  ## 5. Deploy steps
162
162
 
163
- 1. `grid init` an app `<name>` (creates the entity + `.cloudgrid/link.json`, writes
164
- a `cloudgrid.yaml` with empty `services: {}`). Run this FIRST — `plug` needs a
165
- linked directory.
166
- 2. Write the app under `services/web/` and set `cloudgrid.yaml` to the shape in this
163
+ 1. Write the app under `services/web/` and set `cloudgrid.yaml` to the shape in this
167
164
  template (name + `services.web` nextjs + `needs: { database: true }` + the
168
165
  `vault: { STRIPE_KEY: stripe-live-key }` block).
166
+ 2. `grid plug --no-deploy` — registers the entity from the manifest (honors its
167
+ `name:`) and writes `.cloudgrid/link.json`, without building yet.
169
168
  3. `grid secrets set stripe-live-key` (and `stripe-webhook-secret` once you map it)
170
169
  so the vault items the `vault:` block references exist. Do NOT set
171
170
  `DATABASE_MONGODB_URL` yourself — the grid injects it.
@@ -82,6 +82,7 @@ needs:
82
82
 
83
83
  Fetch `grid_get_template("template", "billing-dashboard")` and read **`AGENTS.md`** — it
84
84
  has the checkout + webhook + usage wiring, the vault/secret setup, and the deploy
85
- steps (`grid init` → write under `services/web/` → `grid secrets set` → `grid plug`,
86
- async → poll to a live URL → register the webhook endpoint in Stripe). Adapt the
85
+ steps (write under `services/web/` → `grid plug --no-deploy` → `grid secrets set` →
86
+ `grid plug`, async → poll to a live URL → register the webhook endpoint in Stripe).
87
+ Adapt the
87
88
  collections, fields, and UI to the user's billing model.
@@ -136,12 +136,11 @@ webhook signing secret as `STRIPE_WEBHOOK_SECRET`; read both lazily in
136
136
 
137
137
  ## 5. Deploy steps
138
138
 
139
- 1. `grid init` — scaffolds the entity + `.cloudgrid/link.json`; writes a
140
- `cloudgrid.yaml` with an empty `services: {}`. Run this FIRST (plug needs a
141
- linked directory).
142
- 2. Fill it in: build the files under `services/web/` and set `cloudgrid.yaml` to
139
+ 1. Build the files under `services/web/` and set `cloudgrid.yaml` to
143
140
  this template's shape (`services.web` nextjs + `needs: { database: true }` +
144
141
  the `vault:` block).
142
+ 2. `grid plug --no-deploy` — registers the entity from the manifest (honors its
143
+ `name:`) and writes `.cloudgrid/link.json`, without building yet.
145
144
  3. `grid secrets set stripe-live-key <sk_live_…>` and the other vault items, so
146
145
  the `vault:` mappings resolve at deploy.
147
146
  4. (Optional) `grid dev` — runs Next.js locally with `DATABASE_MONGODB_URL` and
@@ -68,8 +68,8 @@ The heart of this blueprint. Read it before building. It covers:
68
68
  4. **Auth + payments wiring** — provider SDK from `AUTH_PROVIDER_KEY`; Stripe
69
69
  checkout + signature-verified webhook from `STRIPE_KEY` /
70
70
  `STRIPE_WEBHOOK_SECRET`.
71
- 5. **Deploy steps** — `grid init` → fill → `grid secrets set` → `grid plug` →
72
- poll to live.
71
+ 5. **Deploy steps** — write the files → `grid plug --no-deploy` →
72
+ `grid secrets set` → `grid plug` → poll to live.
73
73
  6. **Edition note** — runtime app → local edition only (hosted is static-only).
74
74
  7. **Reminder cron** — intended shape + the platform-issue-#1543 PENDING note and
75
75
  stopgap.
@@ -197,14 +197,15 @@ guarded by a shared secret from the vault), instead of a `type: cron` service.
197
197
  ## 6. Deploy steps
198
198
 
199
199
  Runtime app → **local edition** only (Claude Desktop / Claude Code / CLI); the
200
- hosted edition cannot build a runtime container. Order matters — `plug` needs a
201
- linked directory, so `init` first.
200
+ hosted edition cannot build a runtime container.
202
201
 
203
- 1. `grid init` (or `grid_create_project`) an app `<name>` — creates the entity +
204
- `.cloudgrid/link.json` and a starter `cloudgrid.yaml` with empty `services:{}`.
205
- 2. Fill: put the app under `services/web/` and set `cloudgrid.yaml` to this
202
+ 1. Put the app under `services/web/` and set `cloudgrid.yaml` to this
206
203
  blueprint's active fields (`services.web` nextjs `/`, `needs:{database:true}`).
207
204
  Uncomment a `vault:` entry only if you added auth / payments / reminders.
205
+ 2. The first `grid plug` auto-creates the entity from the manifest (honors its
206
+ `name:`) and writes `.cloudgrid/link.json`. To register without deploying —
207
+ e.g. to set secrets first — use `grid plug --no-deploy` (the
208
+ `grid_create_project` MCP tool does the same).
208
209
  3. (If you mapped vault items) store the values:
209
210
  `grid secrets set <vault-item-key> <value>`. Non-secret public config → `grid env`.
210
211
  Do NOT set `DATABASE_MONGODB_URL` / `MONGODB_URL` yourself — the grid injects them.
@@ -66,7 +66,8 @@ and read it. It covers the `services/web/` file tree, the `events` / `availabili
66
66
  / `bookings` collections, the CloudGrid injection table (needs + optional vault +
67
67
  AI gateway), how to wire optional auth (Clerk/Auth0 + `ownerId`) and payments
68
68
  (Stripe Checkout + signed webhook), the intended cron reminder job shape (blocked
69
- on #1543), and the `grid init → fill → secrets set → grid plug → poll` deploy flow.
69
+ on #1543), and the `write files → grid plug --no-deploy → secrets set → grid plug
70
+ → poll` deploy flow.
70
71
 
71
72
  ## Adapt it
72
73
 
@@ -132,12 +132,11 @@ Use a hosted auth provider SDK (e.g. Clerk or Auth0) rather than rolling your ow
132
132
 
133
133
  A runtime deploy is **asynchronous** and requires the **local edition** (§6).
134
134
 
135
- 1. **`grid init`** an app named `course-platform`. `init` creates the entity +
136
- `.cloudgrid/link.json` and writes a `cloudgrid.yaml` with an empty
137
- `services: {}`. Run it FIRST — `plug` needs a linked directory.
138
- 2. **Fill** — replace the generated `cloudgrid.yaml` with the one in this template
135
+ 1. **Write the manifest + app** — use the `cloudgrid.yaml` from this template
139
136
  (name + vault + `services.web` nextjs + `needs: { database: true }`), and write
140
137
  the app under `services/web/` per the tree above.
138
+ 2. **`grid plug --no-deploy`** — registers the entity from the manifest (honors
139
+ `name: course-platform`) and writes `.cloudgrid/link.json`, without building yet.
141
140
  3. **Set secrets** — `grid secrets set stripe-live-key`,
142
141
  `grid secrets set stripe-webhook-secret`, `grid secrets set auth-provider-key`.
143
142
  Set non-secret client config with `grid env` (e.g. the auth publishable key).
@@ -65,6 +65,7 @@ needs:
65
65
  ## Build it
66
66
 
67
67
  Read `AGENTS.md` for the full file tree, collection fields, env/vault wiring, auth
68
- + Stripe route contracts, and deploy steps. Then scaffold (`grid init`), write the
69
- app under `services/web/`, set secrets (`grid secrets set …`), and `grid plug`
70
- (async — poll to a live URL). Re-plug the same entity to iterate.
68
+ + Stripe route contracts, and deploy steps. Then write the app under
69
+ `services/web/`, register it (`grid plug --no-deploy`), set secrets
70
+ (`grid secrets set …`), and `grid plug` (async — poll to a live URL). Re-plug the
71
+ same entity to iterate.
@@ -93,12 +93,11 @@ Add indexes as the data grows (e.g. `items.sku` unique, `orders.status`).
93
93
 
94
94
  ## 5. Deploy (runtime, async)
95
95
 
96
- 1. `grid init` an app `<name>` — creates the entity + `.cloudgrid/link.json` and
97
- a `cloudgrid.yaml` with empty `services: {}`. Run init FIRST (plug needs a
98
- linked dir).
99
- 2. Fill `cloudgrid.yaml` to this blueprint's shape (services.web nextjs + path:/,
96
+ 1. Set `cloudgrid.yaml` to this blueprint's shape (services.web nextjs + path:/,
100
97
  `needs: { database: true }`, and the `vault:` mappings), and build the app under
101
98
  `services/web/`.
99
+ 2. `grid plug --no-deploy` — registers the entity from the manifest (honors its
100
+ `name:`) and writes `.cloudgrid/link.json`, without building yet.
102
101
  3. Put real secret values in the org vault so the `vault:` mappings resolve; set
103
102
  any publishable/front-end config via `grid env`.
104
103
  4. `grid plug` to deploy. A runtime deploy is **async** — the first response is
@@ -14,4 +14,5 @@ app on solid rails instead of guessing at the platform wiring.
14
14
  > (active fields: `name` + `services.web` nextjs at `path: /` + `needs:
15
15
  > { database: true }` + a `vault:` block for auth/Stripe keys), then build the
16
16
  > app under `services/web/` following the guide. Deploy is runtime + async
17
- > (`grid init` → fill → `grid plug` → poll to live); local edition only.
17
+ > (write the files → `grid plug` → poll to live; the first plug auto-creates the
18
+ > entity from `cloudgrid.yaml`); local edition only.
@@ -169,9 +169,10 @@ A forum is a runtime (built + deployed container) app — **local edition**
169
169
 
170
170
  1. `grid_login_status` → `grid_login` if needed. Respect the grid picker
171
171
  (ask which grid if the user has more than one).
172
- 2. `grid_create_project` an app `<name>` — creates the entity + `.cloudgrid/link.json`
173
- and a `cloudgrid.yaml` with empty `services: {}`. Run `init` FIRST (`plug`
174
- needs a linked dir).
172
+ 2. `grid_create_project` an app `<name>` — scaffolds the project folder and a
173
+ `cloudgrid.yaml` with empty `services: {}`. No server entity exists yet — the
174
+ first plug auto-creates it from the manifest (honoring its `name:`) and
175
+ writes `.cloudgrid/link.json`.
175
176
  3. Write the app under `services/web/` per §1, then fill `cloudgrid.yaml` to the
176
177
  active shape: `name`, `services.web { type: nextjs, path: / }`, `needs:
177
178
  { database: true }`, and the `vault:` mappings for the auth keys.
@@ -7,6 +7,7 @@ auth via a hosted provider (Clerk / Auth0) whose keys come from the org vault.
7
7
  This is a **blueprint**: it ships the structure and the `cloudgrid.yaml`, not
8
8
  runnable app code — read `AGENTS.md` for the file tree, Mongo schema, CloudGrid
9
9
  wiring (DATABASE_MONGODB_URL, vault→env secrets), auth/moderation, and the
10
- `grid init → fill → grid plug → poll` deploy flow, then adapt and build the app.
10
+ `write files → grid plug → poll` deploy flow (the first plug auto-creates the
11
+ entity from `cloudgrid.yaml`), then adapt and build the app.
11
12
 
12
13
  See `AGENTS.md` for the full structure guide.
@@ -147,12 +147,11 @@ specifics:
147
147
 
148
148
  A runtime deploy is **async** and needs the **local edition** (see below).
149
149
 
150
- 1. **`grid init`** an app named `hr-portal` — creates the entity +
151
- `.cloudgrid/link.json` and a `cloudgrid.yaml` with an empty `services: {}`.
152
- Run `init` FIRST (`plug` needs a linked directory).
153
- 2. **Fill** the code under `services/web/` and set `cloudgrid.yaml` to the active
154
- shape: `name` + `services.web { type: nextjs, path: / }` + `needs:
150
+ 1. **Write** the code under `services/web/` and set `cloudgrid.yaml` to the active
151
+ shape: `name: hr-portal` + `services.web { type: nextjs, path: / }` + `needs:
155
152
  { database: true }` + the `vault:` auth-key map.
153
+ 2. **`grid plug --no-deploy`** — registers the entity from the manifest (honors
154
+ its `name:`) and writes `.cloudgrid/link.json`, without building yet.
156
155
  3. **Create the vault items** the `vault:` block references (the auth provider's
157
156
  secret + publishable keys). `grid secrets` / vault UI — never commit them.
158
157
  4. **(Optional) `grid dev`** to run locally against the injected dev Mongo + the
@@ -10,5 +10,6 @@ users — not a static page.
10
10
  **This is a blueprint: structure + cloudgrid.yaml, not filled app code.** Read
11
11
  `AGENTS.md` for the full structure guide — the `services/web/` file tree, the
12
12
  Mongo collections, how CloudGrid injects the DB (`DATABASE_MONGODB_URL`) and the
13
- vault-backed auth keys, how to wire auth roles, and the `grid init → fill → grid
14
- plug → poll` deploy flow — then adapt it and build the app following it.
13
+ vault-backed auth keys, how to wire auth roles, and the `write files → grid plug
14
+ → poll` deploy flow (the first plug auto-creates the entity from
15
+ `cloudgrid.yaml`) — then adapt it and build the app following it.
@@ -30,7 +30,8 @@ Runtime app → **local edition only**, async deploy (poll to a live URL).
30
30
 
31
31
  Fetch this blueprint with `grid_get_template("template", "hr-portal")`. It returns
32
32
  `cloudgrid.yaml`, `AGENTS.md` (the structure guide), and this README — no app
33
- code. Follow `AGENTS.md` to build, then `grid init → fill → grid plug → poll`.
33
+ code. Follow `AGENTS.md` to build, then `grid plug → poll` (the first plug
34
+ auto-creates the entity from `cloudgrid.yaml`).
34
35
 
35
36
  ## cloudgrid.yaml
36
37
 
@@ -173,12 +173,11 @@ middleware (Stripe calls it unauthenticated; verify the Stripe signature instead
173
173
 
174
174
  A runtime deploy is **async** and needs the **local edition** (see below).
175
175
 
176
- 1. **`grid init`** an app named `internal-tools-portal` — creates the entity +
177
- `.cloudgrid/link.json` and a `cloudgrid.yaml` with an empty `services: {}`.
178
- Run `init` FIRST (`plug` needs a linked directory).
179
- 2. **Fill** the code under `services/web/` and set `cloudgrid.yaml` to the active
180
- shape: `name` + `services.web { type: nextjs, path: / }` + `needs:
181
- { database: true }` + the `vault:` auth-key map.
176
+ 1. **Write** the code under `services/web/` and set `cloudgrid.yaml` to the active
177
+ shape: `name: internal-tools-portal` + `services.web { type: nextjs, path: / }`
178
+ + `needs: { database: true }` + the `vault:` auth-key map.
179
+ 2. **`grid plug --no-deploy`** — registers the entity from the manifest (honors
180
+ its `name:`) and writes `.cloudgrid/link.json`, without building yet.
182
181
  3. **Create the vault items** the `vault:` block references (the auth provider's
183
182
  secret + publishable keys, plus any per-tool API secrets). `grid secrets` /
184
183
  vault UI — never commit them.
@@ -13,5 +13,5 @@ survive refresh and be shared across the team — not a static page.
13
13
  Mongo collections, how CloudGrid injects the DB (`DATABASE_MONGODB_URL`) and the
14
14
  vault-backed auth keys, how to wire staff-only auth + RBAC (roles on the `staff`
15
15
  record, server-side checks per tool, the tool registry in `lib/tools.js`), and the
16
- `grid init → fill → grid plug → poll` deploy flow — then adapt it and build the app
17
- following it.
16
+ `write files → grid plug → poll` deploy flow (the first plug auto-creates the
17
+ entity from `cloudgrid.yaml`) — then adapt it and build the app following it.
@@ -36,7 +36,8 @@ Runtime app → **local edition only**, async deploy (poll to a live URL).
36
36
 
37
37
  Fetch this blueprint with `grid_get_template("template", "internal-tools-portal")`. It
38
38
  returns `cloudgrid.yaml`, `AGENTS.md` (the structure guide), and this README — no
39
- app code. Follow `AGENTS.md` to build, then `grid init → fill → grid plug → poll`.
39
+ app code. Follow `AGENTS.md` to build, then `grid plug → poll` (the first plug
40
+ auto-creates the entity from `cloudgrid.yaml`).
40
41
 
41
42
  ## cloudgrid.yaml
42
43
 
@@ -165,12 +165,11 @@ and a `vault:` mapping for `STRIPE_KEY` + `STRIPE_WEBHOOK_SECRET`:
165
165
 
166
166
  A runtime deploy is **asynchronous** and requires the **local edition** (§6).
167
167
 
168
- 1. **`grid init`** an app named `lms`. `init` creates the entity +
169
- `.cloudgrid/link.json` and writes a `cloudgrid.yaml` with an empty
170
- `services: {}`. Run it FIRST — `plug` needs a linked directory.
171
- 2. **Fill** — replace the generated `cloudgrid.yaml` with the one in this template
168
+ 1. **Write the manifest + app** — use the `cloudgrid.yaml` from this template
172
169
  (name + vault + `services.web` nextjs + `needs: { database: true }`), and write
173
170
  the app under `services/web/` per the tree above.
171
+ 2. **`grid plug --no-deploy`** — registers the entity from the manifest (honors
172
+ `name: lms`) and writes `.cloudgrid/link.json`, without building yet.
174
173
  3. **Set secrets** — `grid secrets set auth-provider-key` (and, if selling courses,
175
174
  `grid secrets set stripe-live-key` + `grid secrets set stripe-webhook-secret`).
176
175
  Set non-secret client config with `grid env` (e.g. the auth publishable key).
@@ -73,7 +73,7 @@ needs:
73
73
  ## Build it
74
74
 
75
75
  Read `AGENTS.md` for the full file tree, collection fields, env/vault wiring, the
76
- instructor/student role gates + grading loop, and deploy steps. Then scaffold
77
- (`grid init`), write the app under `services/web/`, set secrets
76
+ instructor/student role gates + grading loop, and deploy steps. Then write the
77
+ app under `services/web/`, register it (`grid plug --no-deploy`), set secrets
78
78
  (`grid secrets set auth-provider-key`), and `grid plug` (async — poll to a live
79
79
  URL). Re-plug the same entity to iterate.
@@ -178,14 +178,14 @@ export function stripe() {
178
178
  ## 5. Deploy steps
179
179
 
180
180
  Runtime app → **local edition** only (Claude Desktop / Claude Code / CLI); the
181
- hosted edition cannot build a runtime container. Order matters — `plug` needs a
182
- linked directory, so `init` first.
181
+ hosted edition cannot build a runtime container.
183
182
 
184
- 1. `grid init` (or `grid_create_project`) an app `<name>` — creates the entity +
185
- `.cloudgrid/link.json` and a starter `cloudgrid.yaml` with empty `services:{}`.
186
- 2. Fill: put the app under `services/web/` and set `cloudgrid.yaml` to this
183
+ 1. Put the app under `services/web/` and set `cloudgrid.yaml` to this
187
184
  blueprint's active fields (`services.web` nextjs `/`, `needs:{database:true}`,
188
185
  the `vault:` block).
186
+ 2. `grid plug --no-deploy` — registers the entity from the manifest (honors its
187
+ `name:`) and writes `.cloudgrid/link.json`, without building yet (the
188
+ `grid_create_project` MCP tool does the same).
189
189
  3. Store the secrets the vault block maps:
190
190
  `grid secrets set stripe-live-key sk_live_…`,
191
191
  `grid secrets set stripe-webhook-secret whsec_…`,
@@ -64,7 +64,8 @@ and read it. It covers the `services/web/` file tree, the `vendors` / `listings`
64
64
  `orders` collections, the CloudGrid injection table (needs + vault + AI gateway),
65
65
  how to wire auth (Clerk/Auth0 + roles) and payments (Stripe Connect onboarding,
66
66
  Checkout with `application_fee` + `transfer_data.destination`, and the signed
67
- webhook), and the `grid init → fill → secrets set → grid plug → poll` deploy flow.
67
+ webhook), and the `write files → grid plug --no-deploy → secrets set → grid plug
68
+ → poll` deploy flow.
68
69
 
69
70
  ## Adapt it
70
71
 
@@ -132,9 +132,10 @@ A user is a member when a `memberships` doc for their `authId` has
132
132
 
133
133
  1. `grid_login_status` → `grid_login` if needed. Respect the grid picker
134
134
  (ask which grid if the user has more than one).
135
- 2. `grid_create_project` an app `<name>` FIRST — it creates the entity, writes
136
- `.cloudgrid/link.json`, and a `cloudgrid.yaml` with empty `services: {}`.
137
- `plug` needs a linked directory.
135
+ 2. `grid_create_project` an app `<name>` — it scaffolds the project folder and
136
+ a `cloudgrid.yaml` with empty `services: {}`. No server entity exists yet —
137
+ the first plug auto-creates it from the manifest (honoring its `name:`) and
138
+ writes `.cloudgrid/link.json`.
138
139
  3. Write the app under `services/web/` and set `cloudgrid.yaml` to the active
139
140
  shape: `name` + `services.web{type: nextjs, path: /}` + `needs:{database:true}`
140
141
  + the `vault:` block.
@@ -117,12 +117,11 @@ middleware. Not required for a basic store; add it only if the user wants logins
117
117
 
118
118
  ## 5. Deploy steps
119
119
 
120
- 1. `grid init` an app `<name>` (creates the entity + `.cloudgrid/link.json`,
121
- writes a `cloudgrid.yaml` with empty `services: {}`). Run this FIRST — `plug`
122
- needs a linked directory.
123
- 2. Write the app under `services/web/` and set `cloudgrid.yaml` to the shape in
120
+ 1. Write the app under `services/web/` and set `cloudgrid.yaml` to the shape in
124
121
  this template (name + `services.web` nextjs + `needs: { database: true }` +
125
122
  the `vault: { STRIPE_KEY: stripe-live-key }` block).
123
+ 2. `grid plug --no-deploy` — registers the entity from the manifest (honors its
124
+ `name:`) and writes `.cloudgrid/link.json`, without building yet.
126
125
  3. `grid secrets set stripe-live-key` (and the webhook secret) so the vault items
127
126
  the `vault:` block references exist. Do NOT set `DATABASE_MONGODB_URL` yourself.
128
127
  4. (Optional) `grid dev` to run locally against the injected Mongo + your Stripe
@@ -76,6 +76,7 @@ needs:
76
76
 
77
77
  Fetch `grid_get_template("template", "online-store")` and read **`AGENTS.md`** — it
78
78
  has the checkout + webhook wiring, the vault/secret setup, and the deploy steps
79
- (`grid init` → write under `services/web/` → `grid secrets set` → `grid plug`,
80
- async → poll to a live URL → register the webhook endpoint in Stripe). Adapt the
79
+ (write under `services/web/` → `grid plug --no-deploy` → `grid secrets set` →
80
+ `grid plug`, async → poll to a live URL → register the webhook endpoint in Stripe).
81
+ Adapt the
81
82
  catalog, fields, and UI to the user's store.
@@ -169,9 +169,10 @@ build is **asynchronous**.
169
169
 
170
170
  1. `grid_login_status` (→ `grid_login` if needed). Pick the grid if the
171
171
  user has more than one.
172
- 2. `grid_create_project` an app `<name>` — creates the entity + `.cloudgrid/link.json`
173
- and a `cloudgrid.yaml` with empty `services: {}`. Run `init` FIRST (plug needs
174
- a linked dir).
172
+ 2. `grid_create_project` an app `<name>` — scaffolds the project folder and a
173
+ `cloudgrid.yaml` with empty `services: {}`. No server entity exists yet — the
174
+ first plug auto-creates it from the manifest (honoring its `name:`) and
175
+ writes `.cloudgrid/link.json`.
175
176
  3. **Fill** — write the app under `services/web/`, then set `cloudgrid.yaml` to
176
177
  this blueprint's active fields: `name`, `services.web { type: nextjs, path: / }`,
177
178
  `needs: { database: true }`, and the `vault:` mappings you actually use.