@cloudgrid-io/mcp 0.16.2 → 0.18.0
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 +39 -39
- package/package.json +1 -1
- package/src/corpus/capability-map.md +15 -9
- package/src/corpus/cloudgrid-yaml.md +10 -8
- package/src/corpus/cookbook.md +4 -4
- package/src/corpus/install-for-agents.md +1 -2
- package/src/corpus/install.md +1 -1
- package/src/corpus/rules/publish-fallbacks.md +1 -1
- package/src/corpus/skill-claim.md +1 -1
- package/src/corpus/skill-login.md +2 -2
- package/src/corpus/skill-plug.md +69 -6
- package/src/corpus/skills-readme.md +10 -10
- package/src/corpus/templates/ai-knowledge-base/AGENTS.md +1 -1
- package/src/corpus/templates/ai-knowledge-base/index.md +1 -1
- package/src/corpus/templates/api-docs/README.md +3 -3
- package/src/corpus/templates/api-docs/index.md +3 -4
- package/src/corpus/templates/appointment-booking/AGENTS.md +9 -9
- package/src/corpus/templates/appointment-booking/index.md +6 -6
- package/src/corpus/templates/approval-workflow/AGENTS.md +2 -2
- package/src/corpus/templates/approval-workflow/index.md +2 -2
- package/src/corpus/templates/billing-dashboard/index.md +1 -1
- package/src/corpus/templates/calendar-scheduler/AGENTS.md +1 -1
- package/src/corpus/templates/calendar-scheduler/index.md +1 -1
- package/src/corpus/templates/changelog/README.md +3 -3
- package/src/corpus/templates/changelog/index.md +3 -4
- package/src/corpus/templates/company-website/README.md +3 -4
- package/src/corpus/templates/company-website/cloudgrid.yaml +1 -1
- package/src/corpus/templates/company-website/index.md +3 -4
- package/src/corpus/templates/course-platform/index.md +1 -1
- package/src/corpus/templates/dashboard/cloudgrid.yaml +1 -1
- package/src/corpus/templates/dashboard/index.md +3 -4
- package/src/corpus/templates/deck/cloudgrid.yaml +1 -1
- package/src/corpus/templates/deck/index.md +3 -4
- package/src/corpus/templates/docs-site/README.md +3 -3
- package/src/corpus/templates/docs-site/index.md +3 -4
- package/src/corpus/templates/forum/AGENTS.md +6 -6
- package/src/corpus/templates/forum/index.md +1 -1
- package/src/corpus/templates/hr-portal/index.md +1 -1
- package/src/corpus/templates/internal-tools-portal/index.md +1 -1
- package/src/corpus/templates/landing-page/cloudgrid.yaml +1 -1
- package/src/corpus/templates/landing-page/index.md +3 -4
- package/src/corpus/templates/lms/index.md +1 -1
- package/src/corpus/templates/marketplace/AGENTS.md +1 -1
- package/src/corpus/templates/marketplace/index.md +1 -1
- package/src/corpus/templates/membership-site/AGENTS.md +9 -9
- package/src/corpus/templates/membership-site/index.md +6 -6
- package/src/corpus/templates/online-store/index.md +1 -1
- package/src/corpus/templates/portfolio/README.md +3 -3
- package/src/corpus/templates/portfolio/index.md +3 -4
- package/src/corpus/templates/product-launch/README.md +3 -4
- package/src/corpus/templates/product-launch/cloudgrid.yaml +1 -1
- package/src/corpus/templates/product-launch/index.md +3 -4
- package/src/corpus/templates/report/cloudgrid.yaml +1 -1
- package/src/corpus/templates/report/index.md +3 -4
- package/src/corpus/templates/restaurant-reservations/AGENTS.md +9 -9
- package/src/corpus/templates/restaurant-reservations/index.md +2 -2
- package/src/corpus/templates/saas-marketing/README.md +3 -3
- package/src/corpus/templates/saas-marketing/index.md +3 -4
- package/src/corpus/templates/status-page/README.md +3 -3
- package/src/corpus/templates/status-page/index.md +3 -4
- package/src/corpus/templates/subscription-management/AGENTS.md +9 -9
- package/src/corpus/templates/subscription-management/index.md +6 -6
- package/src/corpus/templates/waitlist/README.md +3 -3
- package/src/corpus/templates/waitlist/index.md +3 -4
- package/src/corpus/templates/web-app/cloudgrid.yaml +1 -1
- package/src/corpus/templates/web-app/index.md +3 -4
- package/src/corpus/troubleshooting/deploy-errors.md +1 -1
- package/src/corpus/troubleshooting/persistent-apps.md +1 -1
- package/src/corpus/usage.md +3 -3
- package/src/corpus/workflows/admin-dashboard.md +6 -6
- package/src/corpus/workflows/ai-app.md +8 -8
- package/src/corpus/workflows/ai-knowledge-base.md +6 -6
- package/src/corpus/workflows/analytics-dashboard.md +6 -6
- package/src/corpus/workflows/api-dashboard.md +6 -6
- package/src/corpus/workflows/api-docs.md +3 -3
- package/src/corpus/workflows/api-service.md +8 -8
- package/src/corpus/workflows/app-with-data.md +8 -8
- package/src/corpus/workflows/appointment-booking.md +8 -8
- package/src/corpus/workflows/approval-workflow.md +6 -6
- package/src/corpus/workflows/billing-dashboard.md +8 -8
- package/src/corpus/workflows/blog-cms.md +6 -6
- package/src/corpus/workflows/booking-system.md +7 -7
- package/src/corpus/workflows/calendar-scheduler.md +6 -6
- package/src/corpus/workflows/changelog.md +3 -3
- package/src/corpus/workflows/company-website.md +4 -4
- package/src/corpus/workflows/course-platform.md +7 -7
- package/src/corpus/workflows/crm.md +7 -7
- package/src/corpus/workflows/dashboard.md +4 -4
- package/src/corpus/workflows/directory.md +6 -6
- package/src/corpus/workflows/docs-site.md +3 -3
- package/src/corpus/workflows/erp.md +7 -7
- package/src/corpus/workflows/event-board.md +6 -6
- package/src/corpus/workflows/expense-tracker.md +6 -6
- package/src/corpus/workflows/feature-request-board.md +6 -6
- package/src/corpus/workflows/financial-dashboard.md +6 -6
- package/src/corpus/workflows/forum.md +7 -7
- package/src/corpus/workflows/hr-portal.md +7 -7
- package/src/corpus/workflows/internal-tools-portal.md +7 -7
- package/src/corpus/workflows/inventory.md +6 -6
- package/src/corpus/workflows/invoice.md +6 -6
- package/src/corpus/workflows/job-board.md +6 -6
- package/src/corpus/workflows/kanban.md +7 -7
- package/src/corpus/workflows/landing-page.md +4 -4
- package/src/corpus/workflows/lms.md +7 -7
- package/src/corpus/workflows/marketplace.md +6 -6
- package/src/corpus/workflows/membership-site.md +8 -8
- package/src/corpus/workflows/monitoring-dashboard.md +6 -6
- package/src/corpus/workflows/online-store.md +8 -8
- package/src/corpus/workflows/portfolio.md +3 -3
- package/src/corpus/workflows/presentation.md +4 -4
- package/src/corpus/workflows/product-catalog.md +6 -6
- package/src/corpus/workflows/product-launch.md +4 -4
- package/src/corpus/workflows/project-management.md +6 -6
- package/src/corpus/workflows/property-listings.md +6 -6
- package/src/corpus/workflows/quiz-platform.md +6 -6
- package/src/corpus/workflows/report.md +4 -4
- package/src/corpus/workflows/restaurant-reservations.md +7 -7
- package/src/corpus/workflows/revenue-dashboard.md +6 -6
- package/src/corpus/workflows/saas-marketing.md +3 -3
- package/src/corpus/workflows/semantic-search.md +7 -7
- package/src/corpus/workflows/status-page.md +3 -3
- package/src/corpus/workflows/subscription-management.md +8 -8
- package/src/corpus/workflows/task-manager.md +6 -6
- package/src/corpus/workflows/ticket-system.md +6 -6
- package/src/corpus/workflows/time-tracking.md +6 -6
- package/src/corpus/workflows/travel-booking.md +7 -7
- package/src/corpus/workflows/waitlist.md +3 -3
- package/src/corpus/workflows/web-app.md +4 -4
- package/src/docs.js +5 -5
- package/src/index.js +1 -1
- package/src/tools.js +329 -734
- package/src/web.js +2 -2
- package/src/widgets/live-result.html +1 -1
- package/src/widgets/org-picker.html +3 -3
- package/src/corpus/skill-drop.md +0 -140
|
@@ -34,13 +34,13 @@ requires the **local edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
34
34
|
|
|
35
35
|
## 2. Auth + grid
|
|
36
36
|
|
|
37
|
-
1. Ensure signed in: `
|
|
37
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
38
38
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
39
39
|
grid, ask which to use; do not assume a target.
|
|
40
40
|
|
|
41
41
|
## 3. Fetch the blueprint and READ AGENTS.md
|
|
42
42
|
|
|
43
|
-
`
|
|
43
|
+
`grid_fetch("template", "marketplace")`. The deliverable is the **`AGENTS.md`
|
|
44
44
|
structure guide** — read it before writing anything. It defines:
|
|
45
45
|
- the `services/web/` file tree (pages, API routes, `lib/`),
|
|
46
46
|
- the Mongo collections (`vendors`, `listings`, `orders`) + fields,
|
|
@@ -54,7 +54,7 @@ There is no app code to copy — you generate it from the guide.
|
|
|
54
54
|
|
|
55
55
|
## 4. Scaffold + fill cloudgrid.yaml
|
|
56
56
|
|
|
57
|
-
`
|
|
57
|
+
`grid_init` an app `<name>` FIRST (creates the entity + `.cloudgrid/link.json`
|
|
58
58
|
and a starter `cloudgrid.yaml` with empty `services:{}`; `plug` needs a linked
|
|
59
59
|
directory). Then put the app under **`services/web/`** and set `cloudgrid.yaml` to
|
|
60
60
|
the blueprint's active fields:
|
|
@@ -97,7 +97,7 @@ Generate the files under `services/web/` per the guide:
|
|
|
97
97
|
- Map secrets in the `vault:` block (done above), then **store the values**:
|
|
98
98
|
`grid secrets set stripe-live-key sk_live_…`,
|
|
99
99
|
`grid secrets set stripe-webhook-secret whsec_…`,
|
|
100
|
-
`grid secrets set auth-provider-key …`. Non-secret public config → `
|
|
100
|
+
`grid secrets set auth-provider-key …`. Non-secret public config → `grid_env`.
|
|
101
101
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` / legacy
|
|
102
102
|
`MONGODB_URL`) — the grid injects them.
|
|
103
103
|
|
|
@@ -108,9 +108,9 @@ secrets before deploying. Don't require it.
|
|
|
108
108
|
|
|
109
109
|
## 8. Deploy (async)
|
|
110
110
|
|
|
111
|
-
Deploy the folder with `
|
|
111
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
112
112
|
response is `status: "building"`, NOT a live URL yet.
|
|
113
|
-
- Poll `
|
|
113
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
114
114
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
115
115
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
116
116
|
|
|
@@ -34,7 +34,7 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
34
34
|
|
|
35
35
|
## 2. Auth + grid
|
|
36
36
|
|
|
37
|
-
1. Ensure signed in: `
|
|
37
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
38
38
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
39
39
|
grid, ask which to use; do not assume a target.
|
|
40
40
|
|
|
@@ -43,17 +43,17 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
43
43
|
Fetch the template and read its structure guide — this is the core of the
|
|
44
44
|
workflow:
|
|
45
45
|
|
|
46
|
-
- `
|
|
46
|
+
- `grid_fetch("template", "membership-site")` — the `cloudgrid.yaml` +
|
|
47
47
|
**`AGENTS.md`**. AGENTS.md has the file tree, the Mongo collections
|
|
48
48
|
(`users`, `memberships`), the CloudGrid injection table, and the auth + Stripe
|
|
49
49
|
wiring. **Read it fully before building.**
|
|
50
|
-
- `
|
|
50
|
+
- `grid_fetch("template", "app-with-data")` — the proven Next.js + Mongo
|
|
51
51
|
shape this blueprint extends (lazy db client in `lib/db.js`, App-Router
|
|
52
52
|
GET/POST route). Imitate its wiring.
|
|
53
53
|
|
|
54
54
|
## 4. Scaffold
|
|
55
55
|
|
|
56
|
-
`
|
|
56
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
57
57
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
58
58
|
directory, so run `init` FIRST. Then write the app under **`services/web/`** and
|
|
59
59
|
set `cloudgrid.yaml` to the active shape below.
|
|
@@ -98,11 +98,11 @@ never set `needs:` and `requires:` together (the validator rejects it).
|
|
|
98
98
|
|
|
99
99
|
## 6. Config / secrets
|
|
100
100
|
|
|
101
|
-
- Stripe + auth secrets → `
|
|
101
|
+
- Stripe + auth secrets → `grid_secrets` (set the vault items `stripe-live-key`,
|
|
102
102
|
`stripe-webhook-secret`, `auth-provider-key` that the `vault:` block maps from).
|
|
103
103
|
The deployer injects each as its env var at runtime and under `grid dev`.
|
|
104
104
|
- Non-secret config (auth publishable key `NEXT_PUBLIC_...`, Stripe price id) →
|
|
105
|
-
`
|
|
105
|
+
`grid_env` / `services.web.env`.
|
|
106
106
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` / legacy
|
|
107
107
|
`MONGODB_URL`) — the grid injects them.
|
|
108
108
|
|
|
@@ -113,9 +113,9 @@ and vault secrets before deploying. Don't require it.
|
|
|
113
113
|
|
|
114
114
|
## 8. Deploy (async)
|
|
115
115
|
|
|
116
|
-
Deploy the folder with `
|
|
116
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
117
117
|
response is `status: "building"`, NOT a live URL yet.
|
|
118
|
-
- Poll `
|
|
118
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
119
119
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
120
120
|
- Once live, register the `/api/webhook` URL as the Stripe webhook endpoint,
|
|
121
121
|
copy the signing secret into the `stripe-webhook-secret` vault item, and
|
|
@@ -33,13 +33,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
33
33
|
|
|
34
34
|
## 2. Auth + grid
|
|
35
35
|
|
|
36
|
-
1. Ensure signed in: `
|
|
36
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
37
37
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
38
38
|
grid, ask which to use; do not assume a target.
|
|
39
39
|
|
|
40
40
|
## 3. Scaffold
|
|
41
41
|
|
|
42
|
-
`
|
|
42
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
43
43
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
44
44
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
45
45
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
64
64
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
65
65
|
validator rejects it).
|
|
66
66
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
67
|
-
`
|
|
67
|
+
`grid_fetch("template", "monitoring-dashboard")`. It is a minimal, real
|
|
68
68
|
Next.js + `mongodb`-driver health board under `services/web/`: a lazy client
|
|
69
69
|
in `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `checks`
|
|
70
70
|
collection, a server-component page that derives the status grid, and a client
|
|
@@ -85,15 +85,15 @@ before deploying. Don't require it.
|
|
|
85
85
|
|
|
86
86
|
## 6. Config
|
|
87
87
|
|
|
88
|
-
- API keys / secrets → `
|
|
88
|
+
- API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
|
|
89
89
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
90
90
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
91
91
|
|
|
92
92
|
## 7. Deploy (async)
|
|
93
93
|
|
|
94
|
-
Deploy the folder with `
|
|
94
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
95
95
|
response is `status: "building"`, NOT a live URL yet.
|
|
96
|
-
- Poll `
|
|
96
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
97
97
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
98
98
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
99
99
|
|
|
@@ -34,13 +34,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
34
34
|
|
|
35
35
|
## 2. Auth + grid
|
|
36
36
|
|
|
37
|
-
1. Ensure signed in: `
|
|
37
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
38
38
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
39
39
|
grid, ask which to use; do not assume a target.
|
|
40
40
|
|
|
41
41
|
## 3. Scaffold
|
|
42
42
|
|
|
43
|
-
`
|
|
43
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
44
44
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
45
45
|
directory, so run `init` FIRST.
|
|
46
46
|
|
|
@@ -48,7 +48,7 @@ directory, so run `init` FIRST.
|
|
|
48
48
|
|
|
49
49
|
This is a blueprint — the structure guide is the deliverable, not copy-paste code.
|
|
50
50
|
|
|
51
|
-
1. `
|
|
51
|
+
1. `grid_fetch("template", "online-store")`.
|
|
52
52
|
2. **Read `AGENTS.md`** in the fetched template. It has: the file tree (app under
|
|
53
53
|
`services/web/`), the Mongo collections (`products`, `orders`) and their
|
|
54
54
|
fields, how the grid injects Mongo (`DATABASE_MONGODB_URL`) and the Stripe key
|
|
@@ -88,24 +88,24 @@ This is a blueprint — the structure guide is the deliverable, not copy-paste c
|
|
|
88
88
|
|
|
89
89
|
## 6. Config
|
|
90
90
|
|
|
91
|
-
- Stripe secrets → the vault: `
|
|
91
|
+
- Stripe secrets → the vault: `grid_secrets` to set `stripe-live-key` (and a
|
|
92
92
|
`stripe-webhook-secret` if you map one). The `vault:` block turns them into env
|
|
93
|
-
vars. Non-secret config → `
|
|
93
|
+
vars. Non-secret config → `grid_env`.
|
|
94
94
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` /
|
|
95
95
|
`MONGODB_URL`) — the grid injects them.
|
|
96
96
|
|
|
97
97
|
## 7. Deploy (async)
|
|
98
98
|
|
|
99
|
-
Deploy the folder with `
|
|
99
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
100
100
|
response is `status: "building"`, NOT a live URL yet.
|
|
101
|
-
- Poll `
|
|
101
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
102
102
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
103
103
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
104
104
|
|
|
105
105
|
## 8. Wire the Stripe webhook + return the live URL
|
|
106
106
|
|
|
107
107
|
1. Register `<live-url>/api/webhook` as a webhook endpoint in the Stripe
|
|
108
|
-
dashboard, copy its `whsec_…` secret into the vault, and re-`
|
|
108
|
+
dashboard, copy its `whsec_…` secret into the vault, and re-`grid_plug` the
|
|
109
109
|
SAME entity if you changed the `vault:` mapping (same URL).
|
|
110
110
|
2. Give the user the live store URL — that is the deliverable. To iterate, re-plug
|
|
111
111
|
the SAME entity so it updates the same URL.
|
|
@@ -4,7 +4,7 @@ when: portfolio, personal site, freelancer site, my work, showcase, resume site,
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_plug.
|
|
8
8
|
summary: Fetch the portfolio template, fill it with the user's projects and bio, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@ follow this recipe. Reach for this over `landing-page` when the request is about
|
|
|
15
15
|
showcasing projects with an about, skills, and contact. Do not ask setup
|
|
16
16
|
questions first; use sensible defaults and build.
|
|
17
17
|
|
|
18
|
-
1. **Fetch the template.** Call `
|
|
18
|
+
1. **Fetch the template.** Call `grid_fetch("template", "portfolio")` to load
|
|
19
19
|
the self-contained HTML portfolio (hero, about, skills, projects grid,
|
|
20
20
|
contact).
|
|
21
21
|
2. **Fill the template.** Replace the placeholders with the user's content:
|
|
@@ -27,7 +27,7 @@ questions first; use sensible defaults and build.
|
|
|
27
27
|
stylesheets, fonts, or large embedded media.
|
|
28
28
|
3. **Deploy.** Deploy the filled HTML:
|
|
29
29
|
- Hosted MCP edition: call the drop tool with the HTML.
|
|
30
|
-
- Local MCP / CLI edition: write the HTML to a file and run `
|
|
30
|
+
- Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
|
|
31
31
|
It is an inspiration and deploys synchronously, so you get a URL right away.
|
|
32
32
|
4. **Return the live share URL.** For revisions, re-deploy with the entity id
|
|
33
33
|
from the first deploy — it updates the same share URL.
|
|
@@ -4,7 +4,7 @@ when: slides, deck, pitch, presentation, slideshow.
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_plug.
|
|
8
8
|
summary: Fetch the deck template, fill it with the user's content, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -13,9 +13,9 @@ summary: Fetch the deck template, fill it with the user's content, deploy it, an
|
|
|
13
13
|
Detect the intent ("build me a presentation / deck / slides about X") and follow
|
|
14
14
|
this recipe. Do not ask setup questions first; use sensible defaults and build.
|
|
15
15
|
|
|
16
|
-
1. **Fetch the template.** Call `
|
|
16
|
+
1. **Fetch the template.** Call `grid_fetch("template", "deck")` to load the
|
|
17
17
|
self-contained HTML deck template.
|
|
18
|
-
2. **(Optional) Fetch the example.** Call `
|
|
18
|
+
2. **(Optional) Fetch the example.** Call `grid_fetch("example", "deck")` to
|
|
19
19
|
see a filled deck as a reference for tone and structure.
|
|
20
20
|
3. **Fill the template.** Replace the placeholders with the user's content:
|
|
21
21
|
- The deck title and subtitle.
|
|
@@ -24,7 +24,7 @@ this recipe. Do not ask setup questions first; use sensible defaults and build.
|
|
|
24
24
|
stylesheets, fonts, or large embedded media.
|
|
25
25
|
4. **Deploy.** Deploy the filled HTML:
|
|
26
26
|
- Hosted MCP edition: call the drop tool with the HTML.
|
|
27
|
-
- Local MCP / CLI edition: write the HTML to a file and run `
|
|
27
|
+
- Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
|
|
28
28
|
An HTML deck is an inspiration and deploys synchronously, so you get a URL
|
|
29
29
|
right away.
|
|
30
30
|
5. **Return the live share URL.** Give the user the URL that serves the deck.
|
|
@@ -35,13 +35,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
35
35
|
|
|
36
36
|
## 2. Auth + grid
|
|
37
37
|
|
|
38
|
-
1. Ensure signed in: `
|
|
38
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
39
39
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
40
40
|
grid, ask which to use; do not assume a target.
|
|
41
41
|
|
|
42
42
|
## 3. Scaffold
|
|
43
43
|
|
|
44
|
-
`
|
|
44
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
45
45
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
46
46
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
47
47
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -66,7 +66,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
66
66
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
67
67
|
validator rejects it).
|
|
68
68
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
69
|
-
`
|
|
69
|
+
`grid_fetch("template", "product-catalog")`. It is a minimal, real
|
|
70
70
|
Next.js + `mongodb`-driver catalog under `services/web/`: a lazy client in
|
|
71
71
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `products`
|
|
72
72
|
collection, a server-component page, and a client grid with a category filter
|
|
@@ -86,15 +86,15 @@ before deploying. Don't require it.
|
|
|
86
86
|
|
|
87
87
|
## 6. Config
|
|
88
88
|
|
|
89
|
-
- API keys / secrets → `
|
|
89
|
+
- API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
|
|
90
90
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
91
91
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
92
92
|
|
|
93
93
|
## 7. Deploy (async)
|
|
94
94
|
|
|
95
|
-
Deploy the folder with `
|
|
95
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
96
96
|
response is `status: "building"`, NOT a live URL yet.
|
|
97
|
-
- Poll `
|
|
97
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
98
98
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
99
99
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
100
100
|
|
|
@@ -4,7 +4,7 @@ when: product launch page, launch announcement, new product page, we just launch
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_plug.
|
|
8
8
|
summary: Fetch the product-launch template, fill it with the user's product/launch content, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -14,10 +14,10 @@ Detect the intent ("build a launch page / announcement for our new product X")
|
|
|
14
14
|
and follow this recipe. Do not ask setup questions first; use sensible defaults
|
|
15
15
|
and build.
|
|
16
16
|
|
|
17
|
-
1. **Fetch the template.** Call `
|
|
17
|
+
1. **Fetch the template.** Call `grid_fetch("template", "product-launch")` to
|
|
18
18
|
load the self-contained HTML launch-page template (hero + product image,
|
|
19
19
|
countdown, features, launch offer, social proof).
|
|
20
|
-
2. **(Optional) Fetch the example.** Call `
|
|
20
|
+
2. **(Optional) Fetch the example.** Call `grid_fetch("example", "product-launch")`
|
|
21
21
|
to see a filled launch page as a reference for tone and structure.
|
|
22
22
|
3. **Fill the template.** Replace the placeholders with the user's content:
|
|
23
23
|
- Product name, hero headline, subhead, launch badge, and CTA label/target.
|
|
@@ -33,7 +33,7 @@ and build.
|
|
|
33
33
|
or large embedded media.
|
|
34
34
|
4. **Deploy.** Deploy the filled HTML:
|
|
35
35
|
- Hosted MCP edition: call the drop tool with the HTML.
|
|
36
|
-
- Local MCP / CLI edition: write the HTML to a file and run `
|
|
36
|
+
- Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
|
|
37
37
|
A launch page is an inspiration and deploys synchronously, so you get a URL
|
|
38
38
|
right away.
|
|
39
39
|
5. **Return the live share URL.** Give the user the URL that serves the page.
|
|
@@ -36,13 +36,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
36
36
|
|
|
37
37
|
## 2. Auth + grid
|
|
38
38
|
|
|
39
|
-
1. Ensure signed in: `
|
|
39
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
40
40
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
41
41
|
grid, ask which to use; do not assume a target.
|
|
42
42
|
|
|
43
43
|
## 3. Scaffold
|
|
44
44
|
|
|
45
|
-
`
|
|
45
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
46
46
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
47
47
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
48
48
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -67,7 +67,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
67
67
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
68
68
|
validator rejects it).
|
|
69
69
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
70
|
-
`
|
|
70
|
+
`grid_fetch("template", "project-management")`. It is a minimal, real
|
|
71
71
|
Next.js + `mongodb`-driver app under `services/web/`: a lazy client in
|
|
72
72
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `projects`
|
|
73
73
|
collection, a GET/POST/PATCH/DELETE route on a `tasks` collection, a
|
|
@@ -87,15 +87,15 @@ before deploying. Don't require it.
|
|
|
87
87
|
|
|
88
88
|
## 6. Config
|
|
89
89
|
|
|
90
|
-
- API keys / secrets → `
|
|
90
|
+
- API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
|
|
91
91
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
92
92
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
93
93
|
|
|
94
94
|
## 7. Deploy (async)
|
|
95
95
|
|
|
96
|
-
Deploy the folder with `
|
|
96
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
97
97
|
response is `status: "building"`, NOT a live URL yet.
|
|
98
|
-
- Poll `
|
|
98
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
99
99
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
100
100
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
101
101
|
|
|
@@ -32,13 +32,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
32
32
|
|
|
33
33
|
## 2. Auth + grid
|
|
34
34
|
|
|
35
|
-
1. Ensure signed in: `
|
|
35
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
36
36
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
37
37
|
grid, ask which to use; do not assume a target.
|
|
38
38
|
|
|
39
39
|
## 3. Scaffold
|
|
40
40
|
|
|
41
|
-
`
|
|
41
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
42
42
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
43
43
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
44
44
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
63
63
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
64
64
|
validator rejects it).
|
|
65
65
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
66
|
-
`
|
|
66
|
+
`grid_fetch("template", "property-listings")`. It is a minimal, real
|
|
67
67
|
Next.js + `mongodb`-driver listings site under `services/web/`: a lazy client
|
|
68
68
|
in `services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a
|
|
69
69
|
`properties` collection (GET supports `?location=` and `?maxPrice=` filters), a
|
|
@@ -82,15 +82,15 @@ before deploying. Don't require it.
|
|
|
82
82
|
|
|
83
83
|
## 6. Config
|
|
84
84
|
|
|
85
|
-
- API keys / secrets → `
|
|
85
|
+
- API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
|
|
86
86
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
87
87
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
88
88
|
|
|
89
89
|
## 7. Deploy (async)
|
|
90
90
|
|
|
91
|
-
Deploy the folder with `
|
|
91
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
92
92
|
response is `status: "building"`, NOT a live URL yet.
|
|
93
|
-
- Poll `
|
|
93
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
94
94
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
95
95
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
96
96
|
|
|
@@ -33,13 +33,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
33
33
|
|
|
34
34
|
## 2. Auth + grid
|
|
35
35
|
|
|
36
|
-
1. Ensure signed in: `
|
|
36
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
37
37
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
38
38
|
grid, ask which to use; do not assume a target.
|
|
39
39
|
|
|
40
40
|
## 3. Scaffold
|
|
41
41
|
|
|
42
|
-
`
|
|
42
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
43
43
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
44
44
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
45
45
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -64,7 +64,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
64
64
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
65
65
|
validator rejects it).
|
|
66
66
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
67
|
-
`
|
|
67
|
+
`grid_fetch("template", "quiz-platform")`. It is a minimal, real Next.js +
|
|
68
68
|
`mongodb`-driver quiz platform under `services/web/`: a lazy client in
|
|
69
69
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a
|
|
70
70
|
`questions` collection, a server-component page that reads the collection, and
|
|
@@ -86,15 +86,15 @@ before deploying. Don't require it.
|
|
|
86
86
|
|
|
87
87
|
## 6. Config
|
|
88
88
|
|
|
89
|
-
- API keys / secrets → `
|
|
89
|
+
- API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
|
|
90
90
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
91
91
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
92
92
|
|
|
93
93
|
## 7. Deploy (async)
|
|
94
94
|
|
|
95
|
-
Deploy the folder with `
|
|
95
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
96
96
|
response is `status: "building"`, NOT a live URL yet.
|
|
97
|
-
- Poll `
|
|
97
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
98
98
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
99
99
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
100
100
|
|
|
@@ -4,7 +4,7 @@ when: report, one-pager, summary, brief, whitepaper, case study, formatted docum
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_plug.
|
|
8
8
|
summary: Fetch the report template, fill it with the user's content, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -13,9 +13,9 @@ summary: Fetch the report template, fill it with the user's content, deploy it,
|
|
|
13
13
|
Detect the intent ("build me a report / one-pager / brief about X") and follow
|
|
14
14
|
this recipe. Do not ask setup questions first; use sensible defaults and build.
|
|
15
15
|
|
|
16
|
-
1. **Fetch the template.** Call `
|
|
16
|
+
1. **Fetch the template.** Call `grid_fetch("template", "report")` to load
|
|
17
17
|
the self-contained, print-friendly HTML report template.
|
|
18
|
-
2. **(Optional) Fetch the example.** Call `
|
|
18
|
+
2. **(Optional) Fetch the example.** Call `grid_fetch("example", "report")`
|
|
19
19
|
to see a filled report as a reference for tone and structure.
|
|
20
20
|
3. **Fill the template.** Replace the placeholders with the user's content:
|
|
21
21
|
- The report title, subtitle, and date line.
|
|
@@ -27,7 +27,7 @@ this recipe. Do not ask setup questions first; use sensible defaults and build.
|
|
|
27
27
|
stylesheets, fonts, or large embedded media.
|
|
28
28
|
4. **Deploy.** Deploy the filled HTML:
|
|
29
29
|
- Hosted MCP edition: call the drop tool with the HTML.
|
|
30
|
-
- Local MCP / CLI edition: write the HTML to a file and run `
|
|
30
|
+
- Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
|
|
31
31
|
A report is an inspiration and deploys synchronously, so you get a URL right
|
|
32
32
|
away.
|
|
33
33
|
5. **Return the live share URL.** Give the user the URL that serves the report.
|
|
@@ -37,13 +37,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
37
37
|
|
|
38
38
|
## 2. Auth + grid
|
|
39
39
|
|
|
40
|
-
1. Ensure signed in: `
|
|
40
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
41
41
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
42
42
|
grid, ask which to use; do not assume a target.
|
|
43
43
|
|
|
44
44
|
## 3. Fetch the blueprint and READ AGENTS.md
|
|
45
45
|
|
|
46
|
-
`
|
|
46
|
+
`grid_fetch("template", "restaurant-reservations")`. This is a **blueprint**,
|
|
47
47
|
so the deliverable is `cloudgrid.yaml` + `AGENTS.md`, not app code.
|
|
48
48
|
|
|
49
49
|
**Read `AGENTS.md` before building.** It defines:
|
|
@@ -56,7 +56,7 @@ so the deliverable is `cloudgrid.yaml` + `AGENTS.md`, not app code.
|
|
|
56
56
|
|
|
57
57
|
## 4. Scaffold + fill
|
|
58
58
|
|
|
59
|
-
1. `
|
|
59
|
+
1. `grid_init` an app `<name>` — creates the entity + `.cloudgrid/link.json`
|
|
60
60
|
and a `cloudgrid.yaml` with an EMPTY `services: {}`. Run `init` FIRST (plug
|
|
61
61
|
needs a linked directory).
|
|
62
62
|
2. Write the app under **`services/web/`** (`path:` is the URL mount, NOT the
|
|
@@ -85,9 +85,9 @@ so the deliverable is `cloudgrid.yaml` + `AGENTS.md`, not app code.
|
|
|
85
85
|
|
|
86
86
|
## 5. Config / secrets
|
|
87
87
|
|
|
88
|
-
- Secret values (Stripe, SendGrid, auth) → `
|
|
88
|
+
- Secret values (Stripe, SendGrid, auth) → `grid_secrets` (the `vault:` block
|
|
89
89
|
maps them to env vars). Non-secret config (publishable keys, flags) →
|
|
90
|
-
`
|
|
90
|
+
`grid_env`.
|
|
91
91
|
- Do **NOT** set the DB vars yourself (`DATABASE_MONGODB_URL` / `MONGODB_URL`) —
|
|
92
92
|
the grid injects them.
|
|
93
93
|
|
|
@@ -98,9 +98,9 @@ against dev Mongo. Seed the `menu` collection, test a booking. Don't require it.
|
|
|
98
98
|
|
|
99
99
|
## 7. Deploy (async)
|
|
100
100
|
|
|
101
|
-
Deploy `services/web/` with `
|
|
101
|
+
Deploy `services/web/` with `grid_plug`. A **runtime deploy is ASYNC**: the
|
|
102
102
|
first response is `status: building`, NOT a live URL.
|
|
103
|
-
- Poll `
|
|
103
|
+
- Poll `grid_status` (or the returned poll URL) until live.
|
|
104
104
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
105
105
|
- Only once live, return the deployed app URL (NOT the build/log link).
|
|
106
106
|
- If Stripe deposits are on, register the live `/api/webhooks/stripe` URL in the
|
|
@@ -32,13 +32,13 @@ edition** (Claude Desktop / Claude Code) or the CLI.
|
|
|
32
32
|
|
|
33
33
|
## 2. Auth + grid
|
|
34
34
|
|
|
35
|
-
1. Ensure signed in: `
|
|
35
|
+
1. Ensure signed in: `grid_login_status`; if not, `grid_login`.
|
|
36
36
|
2. A grid is required. Respect the grid picker: if the user has more than one
|
|
37
37
|
grid, ask which to use; do not assume a target.
|
|
38
38
|
|
|
39
39
|
## 3. Scaffold
|
|
40
40
|
|
|
41
|
-
`
|
|
41
|
+
`grid_init` an app `<name>`. `init` creates the entity + `.cloudgrid/link.json`
|
|
42
42
|
and writes a `cloudgrid.yaml` with an EMPTY `services: {}`. `plug` needs a linked
|
|
43
43
|
directory, so run `init` FIRST. Then (a) write the app under **`services/web/`**,
|
|
44
44
|
and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
@@ -63,7 +63,7 @@ and (b) fill `cloudgrid.yaml` to the shape below (`services.web` + `needs:
|
|
|
63
63
|
author new yaml with it, and never set `needs:` and `requires:` together (the
|
|
64
64
|
validator rejects it).
|
|
65
65
|
2. Fetch the template for the Mongo wiring + CRUD shape:
|
|
66
|
-
`
|
|
66
|
+
`grid_fetch("template", "revenue-dashboard")`. It is a minimal, real
|
|
67
67
|
Next.js + `mongodb`-driver dashboard under `services/web/`: a lazy client in
|
|
68
68
|
`services/web/lib/db.js`, an App-Router GET/POST/DELETE route on a `sales`
|
|
69
69
|
collection, a server-component page that computes the total + per-product
|
|
@@ -83,15 +83,15 @@ before deploying. Don't require it.
|
|
|
83
83
|
|
|
84
84
|
## 6. Config
|
|
85
85
|
|
|
86
|
-
- API keys / secrets → `
|
|
86
|
+
- API keys / secrets → `grid_secrets`. Non-secret config → `grid_env`.
|
|
87
87
|
- Do **NOT** set the DB connection vars yourself (`DATABASE_MONGODB_URL` or the
|
|
88
88
|
legacy `MONGODB_URL`) — the grid injects them.
|
|
89
89
|
|
|
90
90
|
## 7. Deploy (async)
|
|
91
91
|
|
|
92
|
-
Deploy the folder with `
|
|
92
|
+
Deploy the folder with `grid_plug`. A **runtime deploy is ASYNC**: the first
|
|
93
93
|
response is `status: "building"`, NOT a live URL yet.
|
|
94
|
-
- Poll `
|
|
94
|
+
- Poll `grid_status` (or the returned poll_url) until the entity is live.
|
|
95
95
|
- Surface a liveness signal while it builds — never a bare silent wait.
|
|
96
96
|
- Only once it is live, return the deployed app URL (NOT the build/log link).
|
|
97
97
|
|
|
@@ -4,7 +4,7 @@ when: SaaS marketing site, product marketing page, features and pricing page, mu
|
|
|
4
4
|
needs: none
|
|
5
5
|
deploy: inspiration
|
|
6
6
|
editions: all
|
|
7
|
-
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via
|
|
7
|
+
capabilities_note: static — no infrastructure. Publishes as an inspiration (instant, works on hosted) via grid_plug.
|
|
8
8
|
summary: Fetch the saas-marketing template, fill it with the user's product content, deploy it, and return the live share URL.
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ it when the request calls for pricing tiers, testimonials, and an FAQ, not just
|
|
|
16
16
|
hero. For a plain single-section landing page, use `landing-page`. Do not ask
|
|
17
17
|
setup questions first; use sensible defaults and build.
|
|
18
18
|
|
|
19
|
-
1. **Fetch the template.** Call `
|
|
19
|
+
1. **Fetch the template.** Call `grid_fetch("template", "saas-marketing")` to
|
|
20
20
|
load the self-contained HTML marketing site.
|
|
21
21
|
2. **Fill the template.** Replace the placeholders with the user's content:
|
|
22
22
|
- The product name, tagline, and hero eyebrow/headline/subheadline.
|
|
@@ -29,7 +29,7 @@ setup questions first; use sensible defaults and build.
|
|
|
29
29
|
stylesheets, fonts, or large embedded media.
|
|
30
30
|
3. **Deploy.** Deploy the filled HTML:
|
|
31
31
|
- Hosted MCP edition: call the drop tool with the HTML.
|
|
32
|
-
- Local MCP / CLI edition: write the HTML to a file and run `
|
|
32
|
+
- Local MCP / CLI edition: write the HTML to a file and run `grid plug`.
|
|
33
33
|
It is an inspiration and deploys synchronously, so you get a URL right away.
|
|
34
34
|
4. **Return the live share URL.** For revisions, re-deploy with the entity id
|
|
35
35
|
from the first deploy — it updates the same share URL.
|