@nullplatform/mcp 0.1.5 → 0.1.7
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/dist/i18n.js +206 -22
- package/dist/md.js +14 -4
- package/dist/np/client.js +3 -0
- package/dist/np/journey.js +236 -24
- package/dist/surfaces/developer.js +1 -1
- package/dist/tool-names.js +7 -0
- package/dist/tools/action-flow.js +94 -0
- package/dist/tools/approvals.js +2 -2
- package/dist/tools/builds.js +23 -6
- package/dist/tools/create-link.js +163 -0
- package/dist/tools/create-service.js +149 -0
- package/dist/tools/delete-flow.js +30 -0
- package/dist/tools/delete-link.js +95 -0
- package/dist/tools/delete-param.js +76 -0
- package/dist/tools/delete-service.js +108 -0
- package/dist/tools/deployments.js +2 -2
- package/dist/tools/index.js +14 -0
- package/dist/tools/logs.js +2 -2
- package/dist/tools/metrics.js +4 -1
- package/dist/tools/overview.js +2 -2
- package/dist/tools/params.js +78 -17
- package/dist/tools/playbook.js +2 -1
- package/dist/tools/releases.js +2 -2
- package/dist/tools/services.js +2 -2
- package/dist/tools/set-params.js +61 -11
- package/dist/tools/shared.js +4 -0
- package/dist/tools/update-link.js +87 -0
- package/dist/tools/update-service.js +92 -0
- package/dist/ui.js +4 -1
- package/package.json +3 -1
- package/skills/starting-a-new-app/SKILL.md +71 -0
- package/widgets-dist/approvals.html +257 -53
- package/widgets-dist/builds.html +261 -57
- package/widgets-dist/create-app.html +252 -48
- package/widgets-dist/deployments.html +253 -49
- package/widgets-dist/find-apps.html +251 -47
- package/widgets-dist/logs.html +256 -52
- package/widgets-dist/manifest.json +16 -13
- package/widgets-dist/metrics.html +261 -57
- package/widgets-dist/np-panel.html +257 -53
- package/widgets-dist/overview.html +261 -57
- package/widgets-dist/params.html +257 -53
- package/widgets-dist/releases.html +259 -55
- package/widgets-dist/service-action.html +1118 -0
- package/widgets-dist/service-create.html +1117 -0
- package/widgets-dist/{playbook.html → service-delete.html} +258 -58
- package/widgets-dist/service-link.html +1117 -0
- package/widgets-dist/services.html +255 -51
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: starting-a-new-app
|
|
3
|
+
description: Use when standing up something NEW on nullplatform — a new application (or a small set, e.g. a frontend and its API), choosing where it lives, wiring its data dependencies, and getting it to a first running deploy before any features are built. The greenfield counterpart to working-from-a-ticket.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Starting a new app on nullplatform
|
|
7
|
+
|
|
8
|
+
nullplatform owns the *platform* half — where the app lives, how it ships, what it depends on.
|
|
9
|
+
The code is your own craft. This playbook carries a new thing from a request to its first running
|
|
10
|
+
deploy with its dependencies wired, then hands the feature-building back to you. Do it in order:
|
|
11
|
+
each step de-risks the next. Standing up the skeleton and *then* coding beats coding against a
|
|
12
|
+
platform you haven't proven yet.
|
|
13
|
+
|
|
14
|
+
## 1. Place it before you create it
|
|
15
|
+
|
|
16
|
+
`application_create` opens a pre-filled form — but *where* it goes is a real decision, not a
|
|
17
|
+
default. Read the request for the home it implies (a demo for a banking client in Argentina is not
|
|
18
|
+
the same namespace as a throwaway): list the namespaces the form offers and pick the account +
|
|
19
|
+
namespace that fits, and confirm that choice for anything that isn't obviously disposable. New repo
|
|
20
|
+
vs. importing an existing one is the other fork the form covers; it derives the repo URL for new ones.
|
|
21
|
+
|
|
22
|
+
A request often implies **more than one app** (a frontend *and* its API). Create them one at a time
|
|
23
|
+
in the same namespace, named so the pair reads as a set — there is no batch-create, and that's fine:
|
|
24
|
+
two focused creates are clearer than one opaque one.
|
|
25
|
+
|
|
26
|
+
## 2. Get it running before you build on it
|
|
27
|
+
|
|
28
|
+
Deploy the boilerplate to a real scope *first*, so the next step is "add features to a running app,"
|
|
29
|
+
not "debug the platform and my code at once." Create the target environment with
|
|
30
|
+
`managing-environments`, then ship the skeleton with `deploying-safely` (first-ever-deploy semantics
|
|
31
|
+
live there). Real environments are usually **policy-gated** — a production scope or deploy may land
|
|
32
|
+
in `creating_approval`; that's normal, surface it and don't fight it, keep moving on what isn't gated.
|
|
33
|
+
|
|
34
|
+
## 3. Wire the data it needs
|
|
35
|
+
|
|
36
|
+
A new product usually needs a dependency — a SQL database, a queue, a cache. `application_service_list`
|
|
37
|
+
shows what's already attached and the catalog available; `application_service_create` provisions one
|
|
38
|
+
and autolinks it. Provisioning creates **real cloud resources (cost-bearing)** and runs
|
|
39
|
+
asynchronously, so it is **form-first**: call it to open the form, let the user fill the parameters
|
|
40
|
+
and submit (the submit is the cost confirmation) — never pass `provision:true` unprompted. Target the
|
|
41
|
+
link at the scope that needs the data. Don't call it "ready" until the service is active and linked.
|
|
42
|
+
|
|
43
|
+
Once a service is linked, its connection details arrive **automatically as read-only parameters**
|
|
44
|
+
(`DATABASE_URL`, host, credentials — secrets masked). Your code reads those env vars; you never
|
|
45
|
+
hard-code them or re-create them by hand. New parameters only reach a running scope on the **next
|
|
46
|
+
deploy**.
|
|
47
|
+
|
|
48
|
+
## 4. Hand off to the build
|
|
49
|
+
|
|
50
|
+
The platform's job is done when the app exists, runs, and its dependencies are wired and surfaced as
|
|
51
|
+
parameters. Writing the REST API, the UI, the schema or its codegen — that is your craft, not this
|
|
52
|
+
playbook's job (same boundary as `working-from-a-ticket`). Build against the injected env vars, keep
|
|
53
|
+
the work on a branch with the issue key (`tracing-a-change`), push so CI produces a build, and ship
|
|
54
|
+
it with `deploying-safely`.
|
|
55
|
+
|
|
56
|
+
## 5. Configure and redeploy
|
|
57
|
+
|
|
58
|
+
App-level config the code expects — a page-size cap, feature flags — is a parameter, not a code
|
|
59
|
+
constant: set it with `application_parameter_create` (`configuring-safely` for targeting at app vs.
|
|
60
|
+
scope vs. dimension). Remember values apply on the **next** deploy, so redeploy to pick them up.
|
|
61
|
+
|
|
62
|
+
## Don'ts
|
|
63
|
+
|
|
64
|
+
- Don't drop a new app in the default namespace without checking it fits the request.
|
|
65
|
+
- Don't write feature code before the boilerplate has a running deploy — prove the platform first.
|
|
66
|
+
- Don't re-create or hard-code connection details a service link already injects — read them as
|
|
67
|
+
parameters (they're `read_only`).
|
|
68
|
+
- Don't treat provisioning as instant — it's async and costs money; confirm before, and don't mark
|
|
69
|
+
data "ready" until the service is active, linked, and a redeploy has surfaced its params.
|
|
70
|
+
- Don't block the whole product on one approval — production gates are routine; surface them and
|
|
71
|
+
keep moving on everything that isn't gated.
|