@noodleseed/agent-kit 0.73.0 → 0.75.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/manifest.json +271 -271
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +1 -1
- package/skills/claude-code/authoring-mcp-servers/SKILL.md +1 -1
- package/skills/claude-code/building-mcp-apps/SKILL.md +1 -1
- package/skills/claude-code/connecting-apis-to-mcp/SKILL.md +1 -1
- package/skills/claude-code/creating-product-agent-guides/SKILL.md +1 -1
- package/skills/claude-code/debugging-mcp-delivery/SKILL.md +1 -1
- package/skills/claude-code/deploying-mcp-services/SKILL.md +1 -1
- package/skills/claude-code/designing-mcp-products/SKILL.md +1 -1
- package/skills/claude-code/embedding-mcp-assistants/SKILL.md +1 -1
- package/skills/claude-code/examples/acme-discovery/src/server.ts +7 -2
- package/skills/claude-code/examples/food-ordering/README.md +21 -0
- package/skills/claude-code/executing-noodle-plans/SKILL.md +1 -1
- package/skills/claude-code/publishing-mcp-integrations/SKILL.md +1 -1
- package/skills/claude-code/references/authoring-workflow.md +4 -2
- package/skills/claude-code/references/cli-commands.md +2 -1
- package/skills/claude-code/references/embedded-assistant.md +2 -0
- package/skills/claude-code/references/publishing.md +17 -0
- package/skills/claude-code/references/sdk-surface.md +4 -0
- package/skills/claude-code/reporting-noodle-feedback/SKILL.md +1 -1
- package/skills/claude-code/verifying-mcp-delivery/SKILL.md +1 -1
- package/skills/claude-code/wrapping-existing-applications/SKILL.md +1 -1
- package/skills/codex/SKILL.md +1 -1
- package/skills/codex/authoring-mcp-servers/SKILL.md +1 -1
- package/skills/codex/building-mcp-apps/SKILL.md +1 -1
- package/skills/codex/connecting-apis-to-mcp/SKILL.md +1 -1
- package/skills/codex/creating-product-agent-guides/SKILL.md +1 -1
- package/skills/codex/debugging-mcp-delivery/SKILL.md +1 -1
- package/skills/codex/deploying-mcp-services/SKILL.md +1 -1
- package/skills/codex/designing-mcp-products/SKILL.md +1 -1
- package/skills/codex/embedding-mcp-assistants/SKILL.md +1 -1
- package/skills/codex/examples/acme-discovery/src/server.ts +7 -2
- package/skills/codex/examples/food-ordering/README.md +21 -0
- package/skills/codex/executing-noodle-plans/SKILL.md +1 -1
- package/skills/codex/publishing-mcp-integrations/SKILL.md +1 -1
- package/skills/codex/references/authoring-workflow.md +4 -2
- package/skills/codex/references/cli-commands.md +2 -1
- package/skills/codex/references/embedded-assistant.md +2 -0
- package/skills/codex/references/publishing.md +17 -0
- package/skills/codex/references/sdk-surface.md +4 -0
- package/skills/codex/reporting-noodle-feedback/SKILL.md +1 -1
- package/skills/codex/verifying-mcp-delivery/SKILL.md +1 -1
- package/skills/codex/wrapping-existing-applications/SKILL.md +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/agent-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.75.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Self-checking, self-updating agent skills for the Noodle Seed CLI. Authored in this repo by @noodle-borg/agent-kit; this is the published, independently-versioned canonical skills artifact the CLI fetches and verifies.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -3,7 +3,7 @@ name: noodle-seed
|
|
|
3
3
|
description: "Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:13ddce01769caae4 -->
|
|
7
7
|
|
|
8
8
|
# Noodle Seed
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: authoring-mcp-servers
|
|
|
3
3
|
description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:11523cb33b9473c0 -->
|
|
7
7
|
|
|
8
8
|
# authoring-mcp-servers
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: building-mcp-apps
|
|
|
3
3
|
description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:9fd67d4d24328e15 -->
|
|
7
7
|
|
|
8
8
|
# building-mcp-apps
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: connecting-apis-to-mcp
|
|
|
3
3
|
description: "Use when all four API-evidence inputs exist—and only then: API base URL, authentication scheme, representative safe read, and observed response."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:21bbd3ec441ffd30 -->
|
|
7
7
|
|
|
8
8
|
# connecting-apis-to-mcp
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: creating-product-agent-guides
|
|
|
3
3
|
description: "Use when a Noodle Seed MCP server needs a new or revised product agent guide, App Package skill, or explicit product-skill regeneration."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:0fa48a82fe836cf0 -->
|
|
7
7
|
|
|
8
8
|
# creating-product-agent-guides
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: debugging-mcp-delivery
|
|
|
3
3
|
description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:aa715bae12041d7c -->
|
|
7
7
|
|
|
8
8
|
# debugging-mcp-delivery
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: deploying-mcp-services
|
|
|
3
3
|
description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:93e735b7ffb45df1 -->
|
|
7
7
|
|
|
8
8
|
# deploying-mcp-services
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: designing-mcp-products
|
|
|
3
3
|
description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:78a6f181b61f92f1 -->
|
|
7
7
|
|
|
8
8
|
# designing-mcp-products
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: embedding-mcp-assistants
|
|
|
3
3
|
description: "Use when embedding a Noodle assistant into an existing SaaS or web application with browser, identity, session, and credential boundaries."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:cc54a67f21c0ecdb -->
|
|
7
7
|
|
|
8
8
|
# embedding-mcp-assistants
|
|
9
9
|
|
|
@@ -200,8 +200,12 @@ const shortlistGetaway = tool('shortlist_getaway', {
|
|
|
200
200
|
});
|
|
201
201
|
|
|
202
202
|
// Grounding beyond the catalog: two controlled files answer policy/pricing/support questions with
|
|
203
|
-
// citations, and Acme's live public site
|
|
204
|
-
// no handwritten search tool. One declaration, one generated
|
|
203
|
+
// citations, and Acme's live public site is crawled on deploy and re-crawled on the declared
|
|
204
|
+
// refresh cadence — no sync job, no handwritten search tool. One declaration, one generated
|
|
205
|
+
// `search_destinations` capability. The managed crawler and index are the defaults; a component
|
|
206
|
+
// can instead bring its own via `crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })`
|
|
207
|
+
// and `index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })`
|
|
208
|
+
// — the code names the config, `noodle secrets|variables set` supplies the values.
|
|
205
209
|
const destinations = knowledge('destinations', {
|
|
206
210
|
title: 'Acme Getaways destinations',
|
|
207
211
|
description: 'Public destination, pricing, cancellation, and support information.',
|
|
@@ -216,6 +220,7 @@ const destinations = knowledge('destinations', {
|
|
|
216
220
|
site({
|
|
217
221
|
origin: 'https://getaways.acme.example',
|
|
218
222
|
include: ['/destinations/**', '/pricing', '/support'],
|
|
223
|
+
refresh: '12h',
|
|
219
224
|
}),
|
|
220
225
|
],
|
|
221
226
|
});
|
|
@@ -158,6 +158,27 @@ hosted readiness. If it is interrupted, rerun the same command to resume the unf
|
|
|
158
158
|
duplicate deployment. Use `--access org-members` for an org-wide internal demo. This example has no
|
|
159
159
|
connector secrets and does not include tokens, caller-key mechanisms, or `.env.noodle` values.
|
|
160
160
|
|
|
161
|
+
### Publish an immutable host archive
|
|
162
|
+
|
|
163
|
+
Only when this demo is intentionally being prepared for an external directory, deploy it with exact public
|
|
164
|
+
access and use the returned deployment ID to publish the matching local source:
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
noodle deploy --org demo --app food-ordering --env prod --access public
|
|
168
|
+
noodle distributions publish <deployment-id> src/server.ts --target openai --category "Food & Drink"
|
|
169
|
+
noodle distributions list <deployment-id> --target openai
|
|
170
|
+
noodle distributions readiness <distribution-id> --status ready --note "Archive and review evidence checked"
|
|
171
|
+
noodle distributions release <distribution-id> --visibility private
|
|
172
|
+
noodle distributions grant <distribution-id> --expires-in 900
|
|
173
|
+
noodle distributions download <distribution-id> --output food-ordering-openai.zip
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Publish fails if local `src/server.ts` no longer compiles to that deployment's package snapshot. Readiness is
|
|
177
|
+
an explicit operator claim, the private release keeps anonymous discovery off, and the grant prints one
|
|
178
|
+
sensitive exact-version reviewer URL. Record `noodle distributions review` only after a human observes the
|
|
179
|
+
real portal state. Public Noodle delivery, rollback, deprecation, and terminal revocation are separate explicit
|
|
180
|
+
actions; none submits to a directory or claims acceptance.
|
|
181
|
+
|
|
161
182
|
## Demo Assets
|
|
162
183
|
|
|
163
184
|
The packaged demo images live under `assets/`. The current app uses `assets/noodle-bowl.jpg` as the server
|
|
@@ -3,7 +3,7 @@ name: executing-noodle-plans
|
|
|
3
3
|
description: "Use when the user asks to execute an approved, decision-complete implementation plan for a Noodle Seed project task by task with test-first changes, review, recovery, and final verification."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:6a9f132ddb79352e -->
|
|
7
7
|
|
|
8
8
|
# Execute a Noodle Seed implementation plan
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: publishing-mcp-integrations
|
|
|
3
3
|
description: "Use when preparing, reviewing, or submitting a Noodle Seed MCP integration to a host or app directory."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:efffbf82007f935d -->
|
|
7
7
|
|
|
8
8
|
# publishing-mcp-integrations
|
|
9
9
|
|
|
@@ -420,12 +420,14 @@ const product = knowledge('product', {
|
|
|
420
420
|
file('./knowledge/faq.txt', { title: 'FAQ' }),
|
|
421
421
|
],
|
|
422
422
|
sites: [
|
|
423
|
-
site({ origin: 'https://www.acme.example', include: ['/docs/**', '/pricing'] }),
|
|
423
|
+
site({ origin: 'https://www.acme.example', include: ['/docs/**', '/pricing'], refresh: '6h' }),
|
|
424
424
|
],
|
|
425
425
|
});
|
|
426
426
|
```
|
|
427
427
|
|
|
428
|
-
The compiler validates and hashes every document at build time (bad extensions, root escapes, symlinks, oversize, and non-UTF-8 fail `noodle validate` with the exact path); deployment publishes versioned files transactionally with the app and the
|
|
428
|
+
The compiler validates and hashes every document at build time (bad extensions, root escapes, symlinks, oversize, and non-UTF-8 fail `noodle validate` with the exact path); deployment publishes versioned files transactionally with the app, crawls declared sites, and re-crawls them on the `refresh` cadence (`15m`–`7d`, default daily; `noodle knowledge refresh <name>` crawls on demand). Component names are lowercase snake-case; each component implies exactly one generated bounded search capability with cited results.
|
|
429
|
+
|
|
430
|
+
The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
|
|
429
431
|
|
|
430
432
|
## Boundaries
|
|
431
433
|
|
|
@@ -59,6 +59,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
|
|
|
59
59
|
| `noodle apps` | List or inspect hosted apps for an org (`apps list`/`apps inspect <app>`). |
|
|
60
60
|
| `noodle envs` | List or inspect environments for an app (`envs list`/`envs inspect <env>`). |
|
|
61
61
|
| `noodle deployments` | List or inspect individual deployments (`deployments list`/`deployments inspect <id>`). |
|
|
62
|
+
| `noodle distributions` | Publish immutable host archives, record their lifecycle, and operate bounded delivery. |
|
|
62
63
|
| `noodle service` | Query hosted service capabilities. |
|
|
63
64
|
| `noodle login` | Authenticate with Noodle Seed Cloud. |
|
|
64
65
|
| `noodle logout` | Clear saved credentials. |
|
|
@@ -86,7 +87,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
|
|
|
86
87
|
| Command | What it does |
|
|
87
88
|
| :-- | :-- |
|
|
88
89
|
| `noodle audit` | Operator governance audit status and event queries. |
|
|
89
|
-
| `noodle knowledge` | Operator-only knowledge components: list and
|
|
90
|
+
| `noodle knowledge` | Operator-only knowledge components: list, status, and refresh (ADR 0202). |
|
|
90
91
|
| `noodle logs` | View service/deployment logs. |
|
|
91
92
|
| `noodle metrics` | MCP analytics for a deployed server (volume, sessions, latency percentiles, two-tier errors, tools, clients). Agents: `noodle metrics --agent-output` for a health verdict + next actions. |
|
|
92
93
|
| `noodle events` | The per-request MCP event stream with status/tool/client filters; `--session <id>` replays one session in order. Agents: add `--json` and filter (`--status tool_error\|mcp_error`) when debugging. |
|
|
@@ -84,6 +84,8 @@ At most one public surface (`public` or `mixed`) and at most one authenticated s
|
|
|
84
84
|
|
|
85
85
|
A public surface **must** declare `capabilities`: the exact positive allowlist it may reach. It is required by the type, and it is the whole externally reachable surface — a reviewer should read it in one screenful. Anything absent stays private, and a capability added to the server later is excluded until someone lists it. `authenticatedWebsite` may also take `capabilities` to narrow the in-app surface; omitted, it projects the whole server.
|
|
86
86
|
|
|
87
|
+
A public `embedId` Web Component automatically attaches bounded anonymous same-origin Markdown page context, never DOM text. It is untrusted and nonpersistent, falls back to the URL alone on failure, yields to explicit `pageContext`, and never runs for authenticated or headless clients.
|
|
88
|
+
|
|
87
89
|
### Mixed surfaces: let a visitor sign in mid-conversation
|
|
88
90
|
|
|
89
91
|
Add `signIn: true` to a public surface when some capabilities need a signed-in visitor. The surface becomes `mixed`: anonymous visitors start immediately, an identity-dependent capability stays **visible** so the assistant can offer it, and reaching for it raises a sign-in prompt instead of executing.
|
|
@@ -8,6 +8,7 @@ Directory requirements evolve. Identify the requested directory first and verify
|
|
|
8
8
|
|
|
9
9
|
- Shared readiness gate
|
|
10
10
|
- Distribution metadata source
|
|
11
|
+
- Hosted immutable distribution
|
|
11
12
|
- Directory-specific evidence
|
|
12
13
|
- Submission boundary
|
|
13
14
|
|
|
@@ -35,6 +36,22 @@ Local or repository testing and public-directory submission are distinct packagi
|
|
|
35
36
|
|
|
36
37
|
When an export reports `uploadArtifacts`, treat its output archive as an outer review kit. Extract it, follow the generated instructions, and upload only the named inner artifacts to their matching fields. Never substitute the outer kit for a nested single-purpose upload.
|
|
37
38
|
|
|
39
|
+
## Hosted immutable distribution
|
|
40
|
+
|
|
41
|
+
Publishing a deployment-bound archive is a hosted mutation. Run it only when the current request explicitly authorizes that exact deployment and target: `noodle distributions publish <deployment-id> [server.ts] --target <target>`. The command compiles local TypeScript and requires its package snapshot to exactly match the selected deployment before it uploads anything. It uses the endpoint and package identity returned by the service; never substitute a local URL or a different deployment.
|
|
42
|
+
|
|
43
|
+
Use `noodle distributions list <deployment-id>` to discover immutable versions, `noodle distributions inspect <distribution-id>` to inspect one, and `noodle distributions download <distribution-id> --output <archive.zip>` to retrieve its exact archive. Download verifies the service length and digest before an atomic local write; a failed verification must leave no output file.
|
|
44
|
+
|
|
45
|
+
Lifecycle and delivery are separate mutations. Run `readiness`, `review`, `release`, `rollback`, `deprecate`, `revoke`, or `grant` only when the request explicitly authorizes that exact distribution and action. Inspect first when the active state or version is not already known.
|
|
46
|
+
|
|
47
|
+
Set readiness from evidence you can verify. Record `review` only from a real human-observed host status; never infer submission, approval, or publication from a generated archive or a successful Noodle command, and never put reviewer credentials or secrets in feedback.
|
|
48
|
+
|
|
49
|
+
`release --visibility private` creates or advances a stable Noodle channel without anonymous discovery; `release --visibility public` enables Noodle public delivery only. Both still require the underlying MCP deployment to use exact public access. Neither action publishes to an external directory.
|
|
50
|
+
|
|
51
|
+
`grant` returns one short-lived, exact-version bearer URL. Treat the complete URL as a secret, disclose it only to the authorized reviewer, and do not paste it into source, logs, issues, or durable docs. `rollback` moves only the channel pointer to an older ready version; `deprecate` stops delivery and `revoke` is terminal.
|
|
52
|
+
|
|
53
|
+
A hosted archive is still a submission candidate. Creating, listing, inspecting, downloading, releasing, or granting it does not submit it to an external directory, satisfy review, or publish a host listing.
|
|
54
|
+
|
|
38
55
|
## Directory-specific evidence
|
|
39
56
|
|
|
40
57
|
Read the selected directory’s current official submission documentation at review time. Record each additional requirement separately from the shared checklist, including listing fields, identity verification, test credentials, screenshots, policy declarations, review limits, and appeal or resubmission steps. Never project one directory’s requirements onto another.
|
|
@@ -53,18 +53,22 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
|
|
|
53
53
|
|
|
54
54
|
### Other
|
|
55
55
|
|
|
56
|
+
- `algolia`
|
|
56
57
|
- `authenticatedWebsite`
|
|
57
58
|
- `clientCredentials`
|
|
58
59
|
- `customerEndpoint`
|
|
59
60
|
- `embeddedAssistant`
|
|
60
61
|
- `externalExchange`
|
|
61
62
|
- `file`
|
|
63
|
+
- `firecrawl`
|
|
62
64
|
- `gmailConnector`
|
|
63
65
|
- `knowledge`
|
|
64
66
|
- `managedSecret`
|
|
67
|
+
- `meilisearch`
|
|
65
68
|
- `openAICompatible`
|
|
66
69
|
- `publicWebsite`
|
|
67
70
|
- `site`
|
|
71
|
+
- `tavily`
|
|
68
72
|
|
|
69
73
|
## Authoring signatures
|
|
70
74
|
|
|
@@ -3,7 +3,7 @@ name: reporting-noodle-feedback
|
|
|
3
3
|
description: "Use when a Noodle Seed bug, misleading instruction, missing capability, or concrete product improvement should be proposed to the user."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:0f404109f4845683 -->
|
|
7
7
|
|
|
8
8
|
# reporting-noodle-feedback
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: verifying-mcp-delivery
|
|
|
3
3
|
description: "Use when proving a Noodle Seed MCP project works at a named compile, local, connector, App, host, deployment, or production evidence level."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:6ef6ef551e26b78e -->
|
|
7
7
|
|
|
8
8
|
# verifying-mcp-delivery
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: wrapping-existing-applications
|
|
|
3
3
|
description: "Use when an existing application has no stable usable API and needs a read-only, identity-first Noodle Seed integration plan before implementation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:eccc3c158dcafba8 -->
|
|
7
7
|
|
|
8
8
|
# wrapping-existing-applications
|
|
9
9
|
|
package/skills/codex/SKILL.md
CHANGED
|
@@ -3,7 +3,7 @@ name: noodle-seed
|
|
|
3
3
|
description: "Use when building, validating, testing, deploying, or operating a local or hosted Noodle Seed MCP server or app authored in TypeScript with the noodle CLI."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:13ddce01769caae4 -->
|
|
7
7
|
|
|
8
8
|
# Noodle Seed
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: authoring-mcp-servers
|
|
|
3
3
|
description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:11523cb33b9473c0 -->
|
|
7
7
|
|
|
8
8
|
# authoring-mcp-servers
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: building-mcp-apps
|
|
|
3
3
|
description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:9fd67d4d24328e15 -->
|
|
7
7
|
|
|
8
8
|
# building-mcp-apps
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: connecting-apis-to-mcp
|
|
|
3
3
|
description: "Use when all four API-evidence inputs exist—and only then: API base URL, authentication scheme, representative safe read, and observed response."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:21bbd3ec441ffd30 -->
|
|
7
7
|
|
|
8
8
|
# connecting-apis-to-mcp
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: creating-product-agent-guides
|
|
|
3
3
|
description: "Use when a Noodle Seed MCP server needs a new or revised product agent guide, App Package skill, or explicit product-skill regeneration."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:0fa48a82fe836cf0 -->
|
|
7
7
|
|
|
8
8
|
# creating-product-agent-guides
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: debugging-mcp-delivery
|
|
|
3
3
|
description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:aa715bae12041d7c -->
|
|
7
7
|
|
|
8
8
|
# debugging-mcp-delivery
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: deploying-mcp-services
|
|
|
3
3
|
description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:93e735b7ffb45df1 -->
|
|
7
7
|
|
|
8
8
|
# deploying-mcp-services
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: designing-mcp-products
|
|
|
3
3
|
description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:78a6f181b61f92f1 -->
|
|
7
7
|
|
|
8
8
|
# designing-mcp-products
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: embedding-mcp-assistants
|
|
|
3
3
|
description: "Use when embedding a Noodle assistant into an existing SaaS or web application with browser, identity, session, and credential boundaries."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:cc54a67f21c0ecdb -->
|
|
7
7
|
|
|
8
8
|
# embedding-mcp-assistants
|
|
9
9
|
|
|
@@ -200,8 +200,12 @@ const shortlistGetaway = tool('shortlist_getaway', {
|
|
|
200
200
|
});
|
|
201
201
|
|
|
202
202
|
// Grounding beyond the catalog: two controlled files answer policy/pricing/support questions with
|
|
203
|
-
// citations, and Acme's live public site
|
|
204
|
-
// no handwritten search tool. One declaration, one generated
|
|
203
|
+
// citations, and Acme's live public site is crawled on deploy and re-crawled on the declared
|
|
204
|
+
// refresh cadence — no sync job, no handwritten search tool. One declaration, one generated
|
|
205
|
+
// `search_destinations` capability. The managed crawler and index are the defaults; a component
|
|
206
|
+
// can instead bring its own via `crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })`
|
|
207
|
+
// and `index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })`
|
|
208
|
+
// — the code names the config, `noodle secrets|variables set` supplies the values.
|
|
205
209
|
const destinations = knowledge('destinations', {
|
|
206
210
|
title: 'Acme Getaways destinations',
|
|
207
211
|
description: 'Public destination, pricing, cancellation, and support information.',
|
|
@@ -216,6 +220,7 @@ const destinations = knowledge('destinations', {
|
|
|
216
220
|
site({
|
|
217
221
|
origin: 'https://getaways.acme.example',
|
|
218
222
|
include: ['/destinations/**', '/pricing', '/support'],
|
|
223
|
+
refresh: '12h',
|
|
219
224
|
}),
|
|
220
225
|
],
|
|
221
226
|
});
|
|
@@ -158,6 +158,27 @@ hosted readiness. If it is interrupted, rerun the same command to resume the unf
|
|
|
158
158
|
duplicate deployment. Use `--access org-members` for an org-wide internal demo. This example has no
|
|
159
159
|
connector secrets and does not include tokens, caller-key mechanisms, or `.env.noodle` values.
|
|
160
160
|
|
|
161
|
+
### Publish an immutable host archive
|
|
162
|
+
|
|
163
|
+
Only when this demo is intentionally being prepared for an external directory, deploy it with exact public
|
|
164
|
+
access and use the returned deployment ID to publish the matching local source:
|
|
165
|
+
|
|
166
|
+
```sh
|
|
167
|
+
noodle deploy --org demo --app food-ordering --env prod --access public
|
|
168
|
+
noodle distributions publish <deployment-id> src/server.ts --target openai --category "Food & Drink"
|
|
169
|
+
noodle distributions list <deployment-id> --target openai
|
|
170
|
+
noodle distributions readiness <distribution-id> --status ready --note "Archive and review evidence checked"
|
|
171
|
+
noodle distributions release <distribution-id> --visibility private
|
|
172
|
+
noodle distributions grant <distribution-id> --expires-in 900
|
|
173
|
+
noodle distributions download <distribution-id> --output food-ordering-openai.zip
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Publish fails if local `src/server.ts` no longer compiles to that deployment's package snapshot. Readiness is
|
|
177
|
+
an explicit operator claim, the private release keeps anonymous discovery off, and the grant prints one
|
|
178
|
+
sensitive exact-version reviewer URL. Record `noodle distributions review` only after a human observes the
|
|
179
|
+
real portal state. Public Noodle delivery, rollback, deprecation, and terminal revocation are separate explicit
|
|
180
|
+
actions; none submits to a directory or claims acceptance.
|
|
181
|
+
|
|
161
182
|
## Demo Assets
|
|
162
183
|
|
|
163
184
|
The packaged demo images live under `assets/`. The current app uses `assets/noodle-bowl.jpg` as the server
|
|
@@ -3,7 +3,7 @@ name: executing-noodle-plans
|
|
|
3
3
|
description: "Use when the user asks to execute an approved, decision-complete implementation plan for a Noodle Seed project task by task with test-first changes, review, recovery, and final verification."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:6a9f132ddb79352e -->
|
|
7
7
|
|
|
8
8
|
# Execute a Noodle Seed implementation plan
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: publishing-mcp-integrations
|
|
|
3
3
|
description: "Use when preparing, reviewing, or submitting a Noodle Seed MCP integration to a host or app directory."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:efffbf82007f935d -->
|
|
7
7
|
|
|
8
8
|
# publishing-mcp-integrations
|
|
9
9
|
|
|
@@ -420,12 +420,14 @@ const product = knowledge('product', {
|
|
|
420
420
|
file('./knowledge/faq.txt', { title: 'FAQ' }),
|
|
421
421
|
],
|
|
422
422
|
sites: [
|
|
423
|
-
site({ origin: 'https://www.acme.example', include: ['/docs/**', '/pricing'] }),
|
|
423
|
+
site({ origin: 'https://www.acme.example', include: ['/docs/**', '/pricing'], refresh: '6h' }),
|
|
424
424
|
],
|
|
425
425
|
});
|
|
426
426
|
```
|
|
427
427
|
|
|
428
|
-
The compiler validates and hashes every document at build time (bad extensions, root escapes, symlinks, oversize, and non-UTF-8 fail `noodle validate` with the exact path); deployment publishes versioned files transactionally with the app and the
|
|
428
|
+
The compiler validates and hashes every document at build time (bad extensions, root escapes, symlinks, oversize, and non-UTF-8 fail `noodle validate` with the exact path); deployment publishes versioned files transactionally with the app, crawls declared sites, and re-crawls them on the `refresh` cadence (`15m`–`7d`, default daily; `noodle knowledge refresh <name>` crawls on demand). Component names are lowercase snake-case; each component implies exactly one generated bounded search capability with cited results.
|
|
429
|
+
|
|
430
|
+
The managed crawler and managed index are the defaults and need no configuration. A component may instead bring its own crawler (`crawler: firecrawl({ apiKey: secret('FIRECRAWL_API_KEY') })` or `tavily(...)`) and/or its own index (`index: algolia({ appId: variable('ALGOLIA_APP_ID'), apiKey: secret('ALGOLIA_API_KEY') })` or `meilisearch({ host: variable(...), apiKey: secret(...) })`). The code declares only config names; operators supply values with `noodle secrets set` / `noodle variables set`, and deploy preflight fails closed naming any unset reference.
|
|
429
431
|
|
|
430
432
|
## Boundaries
|
|
431
433
|
|
|
@@ -59,6 +59,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
|
|
|
59
59
|
| `noodle apps` | List or inspect hosted apps for an org (`apps list`/`apps inspect <app>`). |
|
|
60
60
|
| `noodle envs` | List or inspect environments for an app (`envs list`/`envs inspect <env>`). |
|
|
61
61
|
| `noodle deployments` | List or inspect individual deployments (`deployments list`/`deployments inspect <id>`). |
|
|
62
|
+
| `noodle distributions` | Publish immutable host archives, record their lifecycle, and operate bounded delivery. |
|
|
62
63
|
| `noodle service` | Query hosted service capabilities. |
|
|
63
64
|
| `noodle login` | Authenticate with Noodle Seed Cloud. |
|
|
64
65
|
| `noodle logout` | Clear saved credentials. |
|
|
@@ -86,7 +87,7 @@ Developer-facing `noodle` commands, grouped by area. Local authoring commands (`
|
|
|
86
87
|
| Command | What it does |
|
|
87
88
|
| :-- | :-- |
|
|
88
89
|
| `noodle audit` | Operator governance audit status and event queries. |
|
|
89
|
-
| `noodle knowledge` | Operator-only knowledge components: list and
|
|
90
|
+
| `noodle knowledge` | Operator-only knowledge components: list, status, and refresh (ADR 0202). |
|
|
90
91
|
| `noodle logs` | View service/deployment logs. |
|
|
91
92
|
| `noodle metrics` | MCP analytics for a deployed server (volume, sessions, latency percentiles, two-tier errors, tools, clients). Agents: `noodle metrics --agent-output` for a health verdict + next actions. |
|
|
92
93
|
| `noodle events` | The per-request MCP event stream with status/tool/client filters; `--session <id>` replays one session in order. Agents: add `--json` and filter (`--status tool_error\|mcp_error`) when debugging. |
|
|
@@ -84,6 +84,8 @@ At most one public surface (`public` or `mixed`) and at most one authenticated s
|
|
|
84
84
|
|
|
85
85
|
A public surface **must** declare `capabilities`: the exact positive allowlist it may reach. It is required by the type, and it is the whole externally reachable surface — a reviewer should read it in one screenful. Anything absent stays private, and a capability added to the server later is excluded until someone lists it. `authenticatedWebsite` may also take `capabilities` to narrow the in-app surface; omitted, it projects the whole server.
|
|
86
86
|
|
|
87
|
+
A public `embedId` Web Component automatically attaches bounded anonymous same-origin Markdown page context, never DOM text. It is untrusted and nonpersistent, falls back to the URL alone on failure, yields to explicit `pageContext`, and never runs for authenticated or headless clients.
|
|
88
|
+
|
|
87
89
|
### Mixed surfaces: let a visitor sign in mid-conversation
|
|
88
90
|
|
|
89
91
|
Add `signIn: true` to a public surface when some capabilities need a signed-in visitor. The surface becomes `mixed`: anonymous visitors start immediately, an identity-dependent capability stays **visible** so the assistant can offer it, and reaching for it raises a sign-in prompt instead of executing.
|
|
@@ -8,6 +8,7 @@ Directory requirements evolve. Identify the requested directory first and verify
|
|
|
8
8
|
|
|
9
9
|
- Shared readiness gate
|
|
10
10
|
- Distribution metadata source
|
|
11
|
+
- Hosted immutable distribution
|
|
11
12
|
- Directory-specific evidence
|
|
12
13
|
- Submission boundary
|
|
13
14
|
|
|
@@ -35,6 +36,22 @@ Local or repository testing and public-directory submission are distinct packagi
|
|
|
35
36
|
|
|
36
37
|
When an export reports `uploadArtifacts`, treat its output archive as an outer review kit. Extract it, follow the generated instructions, and upload only the named inner artifacts to their matching fields. Never substitute the outer kit for a nested single-purpose upload.
|
|
37
38
|
|
|
39
|
+
## Hosted immutable distribution
|
|
40
|
+
|
|
41
|
+
Publishing a deployment-bound archive is a hosted mutation. Run it only when the current request explicitly authorizes that exact deployment and target: `noodle distributions publish <deployment-id> [server.ts] --target <target>`. The command compiles local TypeScript and requires its package snapshot to exactly match the selected deployment before it uploads anything. It uses the endpoint and package identity returned by the service; never substitute a local URL or a different deployment.
|
|
42
|
+
|
|
43
|
+
Use `noodle distributions list <deployment-id>` to discover immutable versions, `noodle distributions inspect <distribution-id>` to inspect one, and `noodle distributions download <distribution-id> --output <archive.zip>` to retrieve its exact archive. Download verifies the service length and digest before an atomic local write; a failed verification must leave no output file.
|
|
44
|
+
|
|
45
|
+
Lifecycle and delivery are separate mutations. Run `readiness`, `review`, `release`, `rollback`, `deprecate`, `revoke`, or `grant` only when the request explicitly authorizes that exact distribution and action. Inspect first when the active state or version is not already known.
|
|
46
|
+
|
|
47
|
+
Set readiness from evidence you can verify. Record `review` only from a real human-observed host status; never infer submission, approval, or publication from a generated archive or a successful Noodle command, and never put reviewer credentials or secrets in feedback.
|
|
48
|
+
|
|
49
|
+
`release --visibility private` creates or advances a stable Noodle channel without anonymous discovery; `release --visibility public` enables Noodle public delivery only. Both still require the underlying MCP deployment to use exact public access. Neither action publishes to an external directory.
|
|
50
|
+
|
|
51
|
+
`grant` returns one short-lived, exact-version bearer URL. Treat the complete URL as a secret, disclose it only to the authorized reviewer, and do not paste it into source, logs, issues, or durable docs. `rollback` moves only the channel pointer to an older ready version; `deprecate` stops delivery and `revoke` is terminal.
|
|
52
|
+
|
|
53
|
+
A hosted archive is still a submission candidate. Creating, listing, inspecting, downloading, releasing, or granting it does not submit it to an external directory, satisfy review, or publish a host listing.
|
|
54
|
+
|
|
38
55
|
## Directory-specific evidence
|
|
39
56
|
|
|
40
57
|
Read the selected directory’s current official submission documentation at review time. Record each additional requirement separately from the shared checklist, including listing fields, identity verification, test credentials, screenshots, policy declarations, review limits, and appeal or resubmission steps. Never project one directory’s requirements onto another.
|
|
@@ -53,18 +53,22 @@ Platform helper connectors are explicit subpath imports from `@noodleseed/one/pl
|
|
|
53
53
|
|
|
54
54
|
### Other
|
|
55
55
|
|
|
56
|
+
- `algolia`
|
|
56
57
|
- `authenticatedWebsite`
|
|
57
58
|
- `clientCredentials`
|
|
58
59
|
- `customerEndpoint`
|
|
59
60
|
- `embeddedAssistant`
|
|
60
61
|
- `externalExchange`
|
|
61
62
|
- `file`
|
|
63
|
+
- `firecrawl`
|
|
62
64
|
- `gmailConnector`
|
|
63
65
|
- `knowledge`
|
|
64
66
|
- `managedSecret`
|
|
67
|
+
- `meilisearch`
|
|
65
68
|
- `openAICompatible`
|
|
66
69
|
- `publicWebsite`
|
|
67
70
|
- `site`
|
|
71
|
+
- `tavily`
|
|
68
72
|
|
|
69
73
|
## Authoring signatures
|
|
70
74
|
|
|
@@ -3,7 +3,7 @@ name: reporting-noodle-feedback
|
|
|
3
3
|
description: "Use when a Noodle Seed bug, misleading instruction, missing capability, or concrete product improvement should be proposed to the user."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:0f404109f4845683 -->
|
|
7
7
|
|
|
8
8
|
# reporting-noodle-feedback
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: verifying-mcp-delivery
|
|
|
3
3
|
description: "Use when proving a Noodle Seed MCP project works at a named compile, local, connector, App, host, deployment, or production evidence level."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:6ef6ef551e26b78e -->
|
|
7
7
|
|
|
8
8
|
# verifying-mcp-delivery
|
|
9
9
|
|
|
@@ -3,7 +3,7 @@ name: wrapping-existing-applications
|
|
|
3
3
|
description: "Use when an existing application has no stable usable API and needs a read-only, identity-first Noodle Seed integration plan before implementation."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
<!-- noodle-skill version:0.
|
|
6
|
+
<!-- noodle-skill version:0.75.0 hash:eccc3c158dcafba8 -->
|
|
7
7
|
|
|
8
8
|
# wrapping-existing-applications
|
|
9
9
|
|