@cloudgrid-io/mcp 0.20.13 → 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.
- package/README.md +1 -1
- package/package.json +1 -1
- package/src/corpus/cli-reference.md +4 -4
- package/src/corpus/cloudgrid-yaml.md +3 -2
- package/src/corpus/cookbook.md +7 -4
- package/src/corpus/skill-init.md +21 -17
- package/src/corpus/templates/ai-knowledge-base/AGENTS.md +6 -5
- package/src/corpus/templates/ai-knowledge-base/index.md +2 -1
- package/src/corpus/templates/appointment-booking/AGENTS.md +4 -3
- package/src/corpus/templates/approval-workflow/AGENTS.md +4 -3
- package/src/corpus/templates/billing-dashboard/AGENTS.md +3 -4
- package/src/corpus/templates/billing-dashboard/index.md +3 -2
- package/src/corpus/templates/booking-system/AGENTS.md +3 -4
- package/src/corpus/templates/booking-system/index.md +2 -2
- package/src/corpus/templates/calendar-scheduler/AGENTS.md +6 -5
- package/src/corpus/templates/calendar-scheduler/index.md +2 -1
- package/src/corpus/templates/course-platform/AGENTS.md +3 -4
- package/src/corpus/templates/course-platform/index.md +4 -3
- package/src/corpus/templates/erp/AGENTS.md +3 -4
- package/src/corpus/templates/erp/README.md +2 -1
- package/src/corpus/templates/forum/AGENTS.md +4 -3
- package/src/corpus/templates/forum/README.md +2 -1
- package/src/corpus/templates/hr-portal/AGENTS.md +4 -5
- package/src/corpus/templates/hr-portal/README.md +3 -2
- package/src/corpus/templates/hr-portal/index.md +2 -1
- package/src/corpus/templates/internal-tools-portal/AGENTS.md +5 -6
- package/src/corpus/templates/internal-tools-portal/README.md +2 -2
- package/src/corpus/templates/internal-tools-portal/index.md +2 -1
- package/src/corpus/templates/lms/AGENTS.md +3 -4
- package/src/corpus/templates/lms/index.md +2 -2
- package/src/corpus/templates/marketplace/AGENTS.md +5 -5
- package/src/corpus/templates/marketplace/index.md +2 -1
- package/src/corpus/templates/membership-site/AGENTS.md +4 -3
- package/src/corpus/templates/online-store/AGENTS.md +3 -4
- package/src/corpus/templates/online-store/index.md +3 -2
- package/src/corpus/templates/restaurant-reservations/AGENTS.md +4 -3
- package/src/corpus/templates/restaurant-reservations/index.md +2 -2
- package/src/corpus/templates/semantic-search/AGENTS.md +3 -2
- package/src/corpus/templates/semantic-search/README.md +1 -1
- package/src/corpus/templates/semantic-search/index.md +2 -1
- package/src/corpus/templates/simple-semantic-search/README.md +5 -4
- package/src/corpus/templates/simple-semantic-search/index.md +9 -6
- package/src/corpus/templates/subscription-management/AGENTS.md +4 -3
- package/src/corpus/templates/travel-booking/AGENTS.md +3 -4
- package/src/corpus/templates/travel-booking/index.md +2 -2
- package/src/corpus/workflows/admin-dashboard.md +4 -3
- package/src/corpus/workflows/ai-app.md +3 -3
- package/src/corpus/workflows/ai-knowledge-base.md +5 -3
- package/src/corpus/workflows/analytics-dashboard.md +4 -3
- package/src/corpus/workflows/api-dashboard.md +4 -3
- package/src/corpus/workflows/api-service.md +3 -3
- package/src/corpus/workflows/app-with-data.md +3 -3
- package/src/corpus/workflows/appointment-booking.md +4 -3
- package/src/corpus/workflows/approval-workflow.md +4 -3
- package/src/corpus/workflows/billing-dashboard.md +3 -3
- package/src/corpus/workflows/blog-cms.md +4 -3
- package/src/corpus/workflows/booking-system.md +4 -3
- package/src/corpus/workflows/calendar-scheduler.md +5 -3
- package/src/corpus/workflows/course-platform.md +4 -3
- package/src/corpus/workflows/crm.md +4 -3
- package/src/corpus/workflows/directory.md +4 -3
- package/src/corpus/workflows/erp.md +4 -3
- package/src/corpus/workflows/event-board.md +4 -3
- package/src/corpus/workflows/expense-tracker.md +4 -3
- package/src/corpus/workflows/feature-request-board.md +4 -3
- package/src/corpus/workflows/financial-dashboard.md +4 -3
- package/src/corpus/workflows/forum.md +5 -4
- package/src/corpus/workflows/hr-portal.md +4 -3
- package/src/corpus/workflows/internal-tools-portal.md +4 -3
- package/src/corpus/workflows/inventory.md +4 -3
- package/src/corpus/workflows/invoice.md +4 -3
- package/src/corpus/workflows/job-board.md +4 -3
- package/src/corpus/workflows/kanban.md +4 -3
- package/src/corpus/workflows/lms.md +4 -3
- package/src/corpus/workflows/marketplace.md +5 -3
- package/src/corpus/workflows/membership-site.md +4 -3
- package/src/corpus/workflows/monitoring-dashboard.md +4 -3
- package/src/corpus/workflows/online-store.md +3 -3
- package/src/corpus/workflows/product-catalog.md +4 -3
- package/src/corpus/workflows/project-management.md +4 -3
- package/src/corpus/workflows/property-listings.md +4 -3
- package/src/corpus/workflows/quiz-platform.md +4 -3
- package/src/corpus/workflows/restaurant-reservations.md +4 -3
- package/src/corpus/workflows/revenue-dashboard.md +4 -3
- package/src/corpus/workflows/semantic-search.md +5 -3
- package/src/corpus/workflows/simple-semantic-search.md +5 -5
- package/src/corpus/workflows/subscription-management.md +4 -3
- package/src/corpus/workflows/task-manager.md +4 -3
- package/src/corpus/workflows/ticket-system.md +4 -3
- package/src/corpus/workflows/time-tracking.md +4 -3
- package/src/corpus/workflows/travel-booking.md +3 -3
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
|
|
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.
|
|
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
|
|
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
|
-
| `
|
|
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 `
|
|
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
|
|
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
|
package/src/corpus/cookbook.md
CHANGED
|
@@ -20,14 +20,15 @@ init -> plug -> logs -> share -> feedback
|
|
|
20
20
|
|
|
21
21
|
### 1. Scaffold
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Scaffold a new app in the current directory and seed a static web service:
|
|
24
24
|
|
|
25
25
|
```
|
|
26
|
-
grid
|
|
26
|
+
grid new my-thing --type static
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
`--type` accepts `node`, `nextjs`, `python`, or `static
|
|
30
|
-
`grid
|
|
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
|
|
package/src/corpus/skill-init.md
CHANGED
|
@@ -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,
|
|
7
|
-
(node, nextjs, python, or static) before deploying. Wraps grid
|
|
8
|
-
argument-hint: "[
|
|
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
|
-
|
|
15
|
-
|
|
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
|
|
43
|
-
- `--
|
|
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
|
-
|
|
50
|
+
Scaffold an app in the current directory and seed a static site:
|
|
48
51
|
|
|
49
52
|
```
|
|
50
|
-
grid
|
|
53
|
+
grid new my-thing --type static
|
|
51
54
|
```
|
|
52
55
|
|
|
53
|
-
|
|
56
|
+
Scaffold an agent:
|
|
54
57
|
|
|
55
58
|
```
|
|
56
|
-
grid
|
|
59
|
+
grid new my-helper --agent
|
|
57
60
|
```
|
|
58
61
|
|
|
59
|
-
|
|
62
|
+
Scaffold without seeding any files (you will add your own):
|
|
60
63
|
|
|
61
64
|
```
|
|
62
|
-
grid
|
|
65
|
+
grid new my-thing
|
|
63
66
|
```
|
|
64
67
|
|
|
65
|
-
## After
|
|
68
|
+
## After scaffolding
|
|
66
69
|
|
|
67
|
-
Tell the user the
|
|
68
|
-
|
|
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.
|
|
209
|
-
linked directory, so `init` first.
|
|
208
|
+
hosted edition cannot build a runtime container.
|
|
210
209
|
|
|
211
|
-
1.
|
|
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
|
-
`
|
|
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>`
|
|
167
|
-
|
|
168
|
-
|
|
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>` —
|
|
150
|
-
|
|
151
|
-
`plug`
|
|
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.
|
|
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 (
|
|
86
|
-
async → poll to a live URL → register the webhook endpoint in Stripe).
|
|
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.
|
|
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** —
|
|
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.
|
|
201
|
-
linked directory, so `init` first.
|
|
200
|
+
hosted edition cannot build a runtime container.
|
|
202
201
|
|
|
203
|
-
1.
|
|
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 `
|
|
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.
|
|
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
|
|
69
|
-
|
|
70
|
-
(async — poll to a live URL). Re-plug the
|
|
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.
|
|
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
|
-
> (
|
|
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>` —
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
`
|
|
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.
|
|
151
|
-
|
|
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 `
|
|
14
|
-
|
|
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
|
|
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.
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
2.
|
|
180
|
-
|
|
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
|
-
`
|
|
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
|
|
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.
|
|
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
|
|
77
|
-
|
|
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.
|
|
182
|
-
linked directory, so `init` first.
|
|
181
|
+
hosted edition cannot build a runtime container.
|
|
183
182
|
|
|
184
|
-
1.
|
|
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 `
|
|
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>`
|
|
136
|
-
|
|
137
|
-
|
|
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.
|
|
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
|
-
(
|
|
80
|
-
async → poll to a live URL → register the webhook endpoint in Stripe).
|
|
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>` —
|
|
173
|
-
|
|
174
|
-
|
|
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.
|