@noodleseed/agent-kit 0.39.0 → 0.41.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 +7 -5
- package/manifest.json +904 -191
- package/package.json +1 -1
- package/skills/claude-code/SKILL.md +16 -14
- package/skills/claude-code/authoring-mcp-servers/SKILL.md +48 -0
- package/skills/claude-code/building-mcp-apps/SKILL.md +48 -0
- package/skills/claude-code/connecting-apis-to-mcp/SKILL.md +47 -0
- package/skills/claude-code/debugging-mcp-delivery/SKILL.md +48 -0
- package/skills/claude-code/deploying-mcp-services/SKILL.md +47 -0
- package/skills/claude-code/designing-mcp-products/SKILL.md +47 -0
- package/skills/claude-code/embedding-mcp-assistants/SKILL.md +47 -0
- package/skills/claude-code/examples/customer-auth/README.md +143 -1
- package/skills/claude-code/publishing-mcp-integrations/SKILL.md +47 -0
- package/skills/claude-code/references/embedded-assistant.md +142 -15
- package/skills/claude-code/reporting-noodle-feedback/SKILL.md +46 -0
- package/skills/claude-code/verifying-mcp-delivery/SKILL.md +47 -0
- package/skills/codex/SKILL.md +16 -14
- package/skills/codex/authoring-mcp-servers/SKILL.md +48 -0
- package/skills/codex/building-mcp-apps/SKILL.md +48 -0
- package/skills/codex/connecting-apis-to-mcp/SKILL.md +47 -0
- package/skills/codex/debugging-mcp-delivery/SKILL.md +48 -0
- package/skills/codex/deploying-mcp-services/SKILL.md +47 -0
- package/skills/codex/designing-mcp-products/SKILL.md +47 -0
- package/skills/codex/embedding-mcp-assistants/SKILL.md +47 -0
- package/skills/codex/examples/customer-auth/README.md +143 -1
- package/skills/codex/publishing-mcp-integrations/SKILL.md +47 -0
- package/skills/codex/references/embedded-assistant.md +142 -15
- package/skills/codex/reporting-noodle-feedback/SKILL.md +46 -0
- package/skills/codex/verifying-mcp-delivery/SKILL.md +47 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@noodleseed/agent-kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.41.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",
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: noodle-seed
|
|
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.
|
|
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.41.0 hash:2ea7d6dcc8358b35 -->
|
|
7
7
|
|
|
8
8
|
# Noodle Seed
|
|
9
9
|
|
|
@@ -17,23 +17,25 @@ If the request is unrelated to the Noodle MCP surface, stop here: follow the pro
|
|
|
17
17
|
|
|
18
18
|
## Route the request
|
|
19
19
|
|
|
20
|
-
Choose exactly one primary route from the user outcome below. Read that primary reference in full
|
|
20
|
+
Choose exactly one primary route from the user outcome below, then load the selected sibling skill and hand off the request. Read that primary reference in full; read supporting references only when the sibling or observed evidence requires them. Do not reread the corpus or restart discovery after the handoff.
|
|
21
21
|
|
|
22
|
-
Apply this precedence when wording overlaps:
|
|
22
|
+
Apply this precedence when wording overlaps: concrete failure evidence takes the debugging route; an MCP App/UI outcome takes the App route; external API integration from credentials, a URL, or an API specification takes precedence over generic server building; hosted inspection is debugging read-only; hosted mutation requires the explicitly requested deployment route.
|
|
23
23
|
|
|
24
24
|
Negative routing examples: “Inspect hosted logs/status” → `inspect-hosted` (read-only). “Prepare for deployment” → the applicable build or verification route and stop with a handoff; preparation does not authorize `link`, hosted config, deployment, rollback, host writes, or submission. “Keep this local” → a build or verification route, never a hosted route.
|
|
25
25
|
|
|
26
|
-
| User outcome |
|
|
26
|
+
| User outcome | Load sibling skill | Canonical playbook | Done when |
|
|
27
27
|
| :--- | :--- | :--- | :--- |
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
|
|
|
35
|
-
|
|
|
36
|
-
|
|
|
28
|
+
| Turn a vague MCP product idea into a bounded design before implementation | `designing-mcp-products` | `references/experience-design.md` (`references/authoring-workflow.md`) | The product contract identifies the user benefit, model boundary, evidence, and next implementation skill. |
|
|
29
|
+
| Create or extend a headless MCP server whose external API contract is already modeled | `authoring-mcp-servers` | `references/build-an-mcp-server.md` (`references/authoring-workflow.md`, `references/sdk-surface.md`) | The requested server behavior is locally validated and tested; connector reads have real-output evidence. |
|
|
30
|
+
| Connect a real API when credentials or an API specification are available | `connecting-apis-to-mcp` | `references/connect-an-api.md` (`references/authoring-workflow.md`) | A representative live read returns populated, intentionally mapped fields without exposing credentials. |
|
|
31
|
+
| Build or change an MCP App, widget, or host-visible UI | `building-mcp-apps` | `references/build-an-mcp-app.md` (`references/experience-design.md`, `references/widgets-and-apps.md`) | The UI has a stated user benefit, passes the requested checks, and degrades to useful text. |
|
|
32
|
+
| Validate, test, or prove a project at a named delivery evidence level | `verifying-mcp-delivery` | `references/verify-and-recover.md` (`references/test-in-hosts.md`) | The failing evidence layer is repaired and rerun, or the remaining blocker and exact next action are reported. |
|
|
33
|
+
| Diagnose or recover an existing project with concrete local or hosted failure evidence | `debugging-mcp-delivery` | `references/verify-and-recover.md` (`references/troubleshooting.md`, `references/inspect-hosted.md`) | The failing layer is repaired and rerun, or the stable blocker and exact next action are reported. |
|
|
34
|
+
| Inspect or diagnose hosted status, logs, metrics, events, or deployment metadata read-only | `debugging-mcp-delivery` | `references/verify-and-recover.md` (`references/troubleshooting.md`, `references/inspect-hosted.md`) | The requested hosted evidence is reported without changing target, configuration, access, or deployment state. |
|
|
35
|
+
| Deploy, configure, connect with writes, change access, or roll back a hosted MCP service when explicitly requested | `deploying-mcp-services` | `references/deploy-and-ops.md` (`references/cli-commands.md`) | The requested hosted state is evidenced without claiming unperformed host or production checks. |
|
|
36
|
+
| Embed a Noodle assistant in an existing SaaS or web application | `embedding-mcp-assistants` | `references/embedded-assistant.md` (`references/authoring-workflow.md`) | The requested embed boundary works with verified identity and credential separation at the tested level. |
|
|
37
|
+
| Prepare or submit an integration to a host directory | `publishing-mcp-integrations` | `references/publishing.md` (`references/app-directory-compliance.md`) | The requested submission evidence is complete and any host-review uncertainty is explicit. |
|
|
38
|
+
| Report a Noodle Seed bug, documentation gap, or product improvement | `reporting-noodle-feedback` | `references/feedback.md` (None) | A sanitized command is shown to the user and is submitted only after explicit approval. |
|
|
37
39
|
|
|
38
40
|
## Common machine loop
|
|
39
41
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: authoring-mcp-servers
|
|
3
|
+
description: "Use when creating or extending a headless Noodle Seed MCP server, tool, resource, prompt, or typed model-facing capability."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:0b2fd8c7e43fc69f -->
|
|
7
|
+
|
|
8
|
+
# authoring-mcp-servers
|
|
9
|
+
|
|
10
|
+
Deliver focused model-facing MCP behavior through the configured TypeScript entrypoint.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Build a headless MCP server.
|
|
15
|
+
- Add a typed tool, resource, or prompt.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use when the primary outcome is a widget.
|
|
20
|
+
- Do not use only to diagnose or deploy existing behavior.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Requested user intent.
|
|
25
|
+
- Expected typed result.
|
|
26
|
+
- External operation contract when applicable.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/build-an-mcp-server.md` at `../noodle-seed/references/build-an-mcp-server.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/authoring-workflow.md` at `../noodle-seed/references/authoring-workflow.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
Load `references/sdk-surface.md` at `../noodle-seed/references/sdk-surface.md` only when the playbook or observed evidence names that concern.
|
|
33
|
+
|
|
34
|
+
## Verification evidence
|
|
35
|
+
|
|
36
|
+
The TypeScript behavior validates and passes local smoke; connector reads also have real-output proof.
|
|
37
|
+
|
|
38
|
+
## Recovery paths
|
|
39
|
+
|
|
40
|
+
Resume at the first failing compile, smoke, credential, mapping, or live-read layer.
|
|
41
|
+
|
|
42
|
+
## Stop conditions
|
|
43
|
+
|
|
44
|
+
Stop at local delivery unless another requested outcome explicitly authorizes a handoff.
|
|
45
|
+
|
|
46
|
+
## Handoff contract
|
|
47
|
+
|
|
48
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: building-mcp-apps
|
|
3
|
+
description: "Use when a Noodle Seed MCP App, widget, interactive card, visual interaction, or host-visible UI is the primary requested outcome."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:f7fa54992c8d7692 -->
|
|
7
|
+
|
|
8
|
+
# building-mcp-apps
|
|
9
|
+
|
|
10
|
+
Deliver an MCP App whose visual interaction earns its place and preserves useful model-visible fallback.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Build an MCP App or widget.
|
|
15
|
+
- Add a host-visible interactive workflow.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use when concise text fully serves the user.
|
|
20
|
+
- Do not use for headless server work with no UI outcome.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Target user and explicit UI benefit.
|
|
25
|
+
- Primary interaction and states.
|
|
26
|
+
- Model-visible result and text fallback.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/build-an-mcp-app.md` at `../noodle-seed/references/build-an-mcp-app.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/experience-design.md` at `../noodle-seed/references/experience-design.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
Load `references/widgets-and-apps.md` at `../noodle-seed/references/widgets-and-apps.md` only when the playbook or observed evidence names that concern.
|
|
33
|
+
|
|
34
|
+
## Verification evidence
|
|
35
|
+
|
|
36
|
+
The App passes validation, local smoke, app checks, and the requested preview or host evidence level.
|
|
37
|
+
|
|
38
|
+
## Recovery paths
|
|
39
|
+
|
|
40
|
+
Distinguish data-contract, widget-runtime, rendering, host, and deployment failures.
|
|
41
|
+
|
|
42
|
+
## Stop conditions
|
|
43
|
+
|
|
44
|
+
Stop before deployment or publication unless that distinct outcome was requested.
|
|
45
|
+
|
|
46
|
+
## Handoff contract
|
|
47
|
+
|
|
48
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: connecting-apis-to-mcp
|
|
3
|
+
description: "Use when credentials, an API URL, an OpenAPI document, or an observed response must become real Noodle Seed MCP behavior."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:1e86b8704f407bd3 -->
|
|
7
|
+
|
|
8
|
+
# connecting-apis-to-mcp
|
|
9
|
+
|
|
10
|
+
Connect a real API using managed credentials and mappings proven against observed output.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Connect this OpenAPI URL to MCP.
|
|
15
|
+
- Use these API credentials for a real connector.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use for static local behavior.
|
|
20
|
+
- Do not use when credentials or a representative safe read are unavailable.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- API base URL and authentication scheme.
|
|
25
|
+
- Representative safe read.
|
|
26
|
+
- User intent and observed response shape.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/connect-an-api.md` at `../noodle-seed/references/connect-an-api.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/authoring-workflow.md` at `../noodle-seed/references/authoring-workflow.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
|
|
33
|
+
## Verification evidence
|
|
34
|
+
|
|
35
|
+
A safe live read returns populated intentionally mapped fields through the effective local target.
|
|
36
|
+
|
|
37
|
+
## Recovery paths
|
|
38
|
+
|
|
39
|
+
Separate authentication, transport, response-shape, mapping, and empty-result failures before editing.
|
|
40
|
+
|
|
41
|
+
## Stop conditions
|
|
42
|
+
|
|
43
|
+
Stop before live writes without explicit approval, known effect, and a safe target.
|
|
44
|
+
|
|
45
|
+
## Handoff contract
|
|
46
|
+
|
|
47
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debugging-mcp-delivery
|
|
3
|
+
description: "Use when an existing Noodle Seed MCP project has a concrete validation, runtime, connector, App, host, deployment, or production failure."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:aa715bae12041d7c -->
|
|
7
|
+
|
|
8
|
+
# debugging-mcp-delivery
|
|
9
|
+
|
|
10
|
+
Repair or isolate the first failing evidence layer while preserving everything already proven.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Diagnose this failing MCP project.
|
|
15
|
+
- Inspect a hosted failure from logs or status.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use for a greenfield build with no failure evidence.
|
|
20
|
+
- Do not mutate hosted state during read-only inspection.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Exact failing command or symptom.
|
|
25
|
+
- Current target and evidence level.
|
|
26
|
+
- Most recent sanitized failure.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/verify-and-recover.md` at `../noodle-seed/references/verify-and-recover.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/troubleshooting.md` at `../noodle-seed/references/troubleshooting.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
Load `references/inspect-hosted.md` at `../noodle-seed/references/inspect-hosted.md` only when the playbook or observed evidence names that concern.
|
|
33
|
+
|
|
34
|
+
## Verification evidence
|
|
35
|
+
|
|
36
|
+
The failed layer is rerun successfully, or the stable blocker and exact next action are reported.
|
|
37
|
+
|
|
38
|
+
## Recovery paths
|
|
39
|
+
|
|
40
|
+
After two attempts with the same signature, stop editing and preserve the repro and passing layers.
|
|
41
|
+
|
|
42
|
+
## Stop conditions
|
|
43
|
+
|
|
44
|
+
Stop before hosted mutation unless the user separately requests deploying-mcp-services.
|
|
45
|
+
|
|
46
|
+
## Handoff contract
|
|
47
|
+
|
|
48
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deploying-mcp-services
|
|
3
|
+
description: "Use when the user explicitly requests a Noodle Seed hosted link, configuration write, deployment, access change, rollback, or connection write."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:93e735b7ffb45df1 -->
|
|
7
|
+
|
|
8
|
+
# deploying-mcp-services
|
|
9
|
+
|
|
10
|
+
Apply only the explicitly authorized hosted mutation to the explicit org, app, and environment.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Deploy this MCP service to an explicit environment.
|
|
15
|
+
- Roll back or change hosted access.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use for preparation, inspection, or local-only work.
|
|
20
|
+
- Do not select or default a mutation target implicitly.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Explicit org, app, and environment.
|
|
25
|
+
- Authorized mutation.
|
|
26
|
+
- Pre-deploy verification evidence.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/deploy-and-ops.md` at `../noodle-seed/references/deploy-and-ops.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/cli-commands.md` at `../noodle-seed/references/cli-commands.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
|
|
33
|
+
## Verification evidence
|
|
34
|
+
|
|
35
|
+
The requested hosted state is confirmed without claiming unperformed host or production checks.
|
|
36
|
+
|
|
37
|
+
## Recovery paths
|
|
38
|
+
|
|
39
|
+
Preserve local evidence and isolate authentication, target, build, rollout, health, or rollback failures.
|
|
40
|
+
|
|
41
|
+
## Stop conditions
|
|
42
|
+
|
|
43
|
+
Stop and ask when target, authority, or effect is ambiguous.
|
|
44
|
+
|
|
45
|
+
## Handoff contract
|
|
46
|
+
|
|
47
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: designing-mcp-products
|
|
3
|
+
description: "Use when a Noodle Seed MCP product idea needs conversational fit, user benefit, scope, interaction, or evidence design before implementation."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:76cce86729cffbee -->
|
|
7
|
+
|
|
8
|
+
# designing-mcp-products
|
|
9
|
+
|
|
10
|
+
Produce the smallest decision-ready MCP product design before code or hosted mutation.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Turn a vague product idea into an MCP product.
|
|
15
|
+
- Decide whether this job needs an MCP App.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use for an already specified implementation.
|
|
20
|
+
- Do not use for generic product or UI design outside MCP.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Target user and job.
|
|
25
|
+
- System data or action the model cannot supply.
|
|
26
|
+
- Requested stopping point.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/experience-design.md` at `../noodle-seed/references/experience-design.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/authoring-workflow.md` at `../noodle-seed/references/authoring-workflow.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
|
|
33
|
+
## Verification evidence
|
|
34
|
+
|
|
35
|
+
A bounded product contract states user benefit, model boundary, interaction, fallback, risks, and next implementation skill.
|
|
36
|
+
|
|
37
|
+
## Recovery paths
|
|
38
|
+
|
|
39
|
+
If the idea is broad, reduce it to one conversational job and one representative success path.
|
|
40
|
+
|
|
41
|
+
## Stop conditions
|
|
42
|
+
|
|
43
|
+
Stop before implementation when the design inputs or product fit are unresolved.
|
|
44
|
+
|
|
45
|
+
## Handoff contract
|
|
46
|
+
|
|
47
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: embedding-mcp-assistants
|
|
3
|
+
description: "Use when embedding a Noodle assistant into an existing SaaS or web application with browser, identity, session, and credential boundaries."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:5d8f40f904d6ab4b -->
|
|
7
|
+
|
|
8
|
+
# embedding-mcp-assistants
|
|
9
|
+
|
|
10
|
+
Deliver the requested assistant embed with identity and credential separation proven at the tested level.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Embed the Noodle assistant in an existing web app.
|
|
15
|
+
- Wire browser mounting and session exchange.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use to build a standalone MCP App.
|
|
20
|
+
- Do not use when the request is only server authoring or deployment.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Application origin and mounting point.
|
|
25
|
+
- Identity/session boundary.
|
|
26
|
+
- Requested local or hosted evidence level.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/embedded-assistant.md` at `../noodle-seed/references/embedded-assistant.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/authoring-workflow.md` at `../noodle-seed/references/authoring-workflow.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
|
|
33
|
+
## Verification evidence
|
|
34
|
+
|
|
35
|
+
The embed works at the requested boundary without forwarding inbound credentials to business backends.
|
|
36
|
+
|
|
37
|
+
## Recovery paths
|
|
38
|
+
|
|
39
|
+
Localize failures to origin, session exchange, browser mount, MCP surface, or hosted configuration.
|
|
40
|
+
|
|
41
|
+
## Stop conditions
|
|
42
|
+
|
|
43
|
+
Stop when unavailable identity, origin, or hosted authority blocks the next evidence layer.
|
|
44
|
+
|
|
45
|
+
## Handoff contract
|
|
46
|
+
|
|
47
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|
|
@@ -169,7 +169,7 @@ customer backend. The model URL, model name, and model API key remain managed by
|
|
|
169
169
|
|
|
170
170
|
The customer's authenticated backend calls `createAssistantSession(...)` from
|
|
171
171
|
`@noodleseed/assistant/server`, passing the already-verified user and browser origin. The browser then uses
|
|
172
|
-
the returned short-lived session through the Web Component or
|
|
172
|
+
the returned short-lived session through the managed Web Component/React renderer or a customer-owned UI:
|
|
173
173
|
|
|
174
174
|
```bash
|
|
175
175
|
pnpm add @noodleseed/assistant
|
|
@@ -185,6 +185,148 @@ import { NoodleAssistant } from '@noodleseed/assistant/react';
|
|
|
185
185
|
/>;
|
|
186
186
|
```
|
|
187
187
|
|
|
188
|
+
For an entirely application-owned React renderer, use the renderer-free hook. It creates no custom element
|
|
189
|
+
and returns the AI SDK transcript plus the canonical client commands:
|
|
190
|
+
|
|
191
|
+
```tsx
|
|
192
|
+
'use client';
|
|
193
|
+
|
|
194
|
+
import { useState } from 'react';
|
|
195
|
+
import { useNoodleAssistant } from '@noodleseed/assistant/react/client';
|
|
196
|
+
|
|
197
|
+
export function CustomerAssistant({ principalKey }: { principalKey: string }) {
|
|
198
|
+
const [draft, setDraft] = useState('');
|
|
199
|
+
const { client, messages, status, error } = useNoodleAssistant({
|
|
200
|
+
sessionEndpoint: '/api/noodle-assistant/session',
|
|
201
|
+
principalKey,
|
|
202
|
+
});
|
|
203
|
+
const busy = status === 'submitted' || status === 'streaming';
|
|
204
|
+
const settle = (operation: Promise<void>) => {
|
|
205
|
+
void operation.catch(() => {
|
|
206
|
+
// The hook exposes this same structured failure through `error`.
|
|
207
|
+
});
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
return (
|
|
211
|
+
<section aria-label="Assistant" aria-busy={busy}>
|
|
212
|
+
{messages.map((message) => (
|
|
213
|
+
<article key={message.id} data-role={message.role}>
|
|
214
|
+
{message.parts.map((part, index) => {
|
|
215
|
+
if (part.type === 'text') return <p key={index}>{part.text}</p>;
|
|
216
|
+
if (part.type === 'data-confirmation') {
|
|
217
|
+
const review = part.data;
|
|
218
|
+
return (
|
|
219
|
+
<section key={review.id} aria-label="Review proposed action">
|
|
220
|
+
<h3>{review.title ?? 'Review proposed action'}</h3>
|
|
221
|
+
{review.description ? <p>{review.description}</p> : null}
|
|
222
|
+
<pre aria-label="Proposed action arguments">
|
|
223
|
+
{JSON.stringify(review.arguments ?? {}, null, 2)}
|
|
224
|
+
</pre>
|
|
225
|
+
<button
|
|
226
|
+
disabled={busy || review.status !== 'pending'}
|
|
227
|
+
onClick={() => settle(client.respond(review.id, { action: 'accept' }))}
|
|
228
|
+
>
|
|
229
|
+
Confirm
|
|
230
|
+
</button>
|
|
231
|
+
<button
|
|
232
|
+
disabled={busy || review.status !== 'pending'}
|
|
233
|
+
onClick={() => settle(client.respond(review.id, { action: 'decline' }))}
|
|
234
|
+
>
|
|
235
|
+
Don't proceed
|
|
236
|
+
</button>
|
|
237
|
+
</section>
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
if (part.type === 'data-input-request') {
|
|
241
|
+
const request = part.data;
|
|
242
|
+
return (
|
|
243
|
+
<section key={request.id} aria-label="Assistant needs input">
|
|
244
|
+
<p>{request.message}</p>
|
|
245
|
+
<p>This renderer has not implemented the requested form.</p>
|
|
246
|
+
<button
|
|
247
|
+
disabled={busy || request.status !== 'pending'}
|
|
248
|
+
onClick={() => settle(client.respond(request.id, { action: 'decline' }))}
|
|
249
|
+
>
|
|
250
|
+
Cancel request
|
|
251
|
+
</button>
|
|
252
|
+
</section>
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
if (part.type === 'data-tool-result') {
|
|
256
|
+
return (
|
|
257
|
+
<pre key={part.data.id} aria-label={`${part.data.tool} result`}>
|
|
258
|
+
{JSON.stringify(part.data.result, null, 2)}
|
|
259
|
+
</pre>
|
|
260
|
+
);
|
|
261
|
+
}
|
|
262
|
+
if (part.type === 'data-view') {
|
|
263
|
+
return (
|
|
264
|
+
<p key={part.data.id}>
|
|
265
|
+
Trusted app view available: {part.data.title ?? part.data.resourceUri}
|
|
266
|
+
</p>
|
|
267
|
+
);
|
|
268
|
+
}
|
|
269
|
+
return <p key={index}>Unsupported assistant content.</p>;
|
|
270
|
+
})}
|
|
271
|
+
</article>
|
|
272
|
+
))}
|
|
273
|
+
{error ? <p role="alert">{error.message}</p> : null}
|
|
274
|
+
<form
|
|
275
|
+
onSubmit={(event) => {
|
|
276
|
+
event.preventDefault();
|
|
277
|
+
const message = draft.trim();
|
|
278
|
+
if (!message) return;
|
|
279
|
+
setDraft('');
|
|
280
|
+
settle(client.sendMessage(message));
|
|
281
|
+
}}
|
|
282
|
+
>
|
|
283
|
+
<input
|
|
284
|
+
aria-label="Message"
|
|
285
|
+
value={draft}
|
|
286
|
+
onChange={(event) => setDraft(event.currentTarget.value)}
|
|
287
|
+
/>
|
|
288
|
+
{busy ? (
|
|
289
|
+
<button type="button" onClick={() => client.abort()}>
|
|
290
|
+
Stop
|
|
291
|
+
</button>
|
|
292
|
+
) : (
|
|
293
|
+
<button type="submit">Send</button>
|
|
294
|
+
)}
|
|
295
|
+
</form>
|
|
296
|
+
</section>
|
|
297
|
+
);
|
|
298
|
+
}
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
`principalKey` stays in the browser. Change it whenever the authenticated user or tenant changes; the hook
|
|
302
|
+
then aborts and clears the prior session and transcript. The sample fails closed on input requests until its
|
|
303
|
+
fallback is replaced with a form generated from `requestedSchema`. A production renderer must show the
|
|
304
|
+
complete confirmation review and both decisions. For `data-view`, map `resourceUri` or `tool` and the
|
|
305
|
+
bounded/redacted result to a component already trusted by this application. Never inject `part.data.html`,
|
|
306
|
+
assign it to `srcdoc`, or fetch a `ui://` URI.
|
|
307
|
+
|
|
308
|
+
Outside React, subscribe to the DOM-free client directly. It exposes the same conversation as headless AI
|
|
309
|
+
SDK `UIMessage` state, including typed confirmation, input, tool-result, and linked-view parts:
|
|
310
|
+
|
|
311
|
+
```ts
|
|
312
|
+
import { createAssistantClient } from '@noodleseed/assistant/client';
|
|
313
|
+
|
|
314
|
+
const assistant = createAssistantClient({
|
|
315
|
+
sessionEndpoint: '/api/noodle-assistant/session',
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
assistant.subscribeChat((state) => {
|
|
319
|
+
renderUIMessageState(state);
|
|
320
|
+
for (const message of state.messages) {
|
|
321
|
+
for (const part of message.parts) {
|
|
322
|
+
if (part.type === 'data-confirmation' && part.data.status === 'pending') {
|
|
323
|
+
renderConfirmation(part.data, (response) => assistant.respond(part.data.id, response));
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
```
|
|
329
|
+
|
|
188
330
|
`theme="auto"` follows the SaaS application. The server-level `branding` block is inherited by both MCP App
|
|
189
331
|
widgets and the assistant; documented `--ns-assistant-*` semantic CSS variables remain the final integration
|
|
190
332
|
escape hatch. There is no second assistant branding declaration.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: publishing-mcp-integrations
|
|
3
|
+
description: "Use when preparing, reviewing, or submitting a Noodle Seed MCP integration to a host or app directory."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- noodle-skill version:0.41.0 hash:efffbf82007f935d -->
|
|
7
|
+
|
|
8
|
+
# publishing-mcp-integrations
|
|
9
|
+
|
|
10
|
+
Produce complete submission evidence with host-review uncertainty stated explicitly.
|
|
11
|
+
|
|
12
|
+
## Use when
|
|
13
|
+
|
|
14
|
+
- Prepare this MCP integration for a directory.
|
|
15
|
+
- Review or submit the host listing.
|
|
16
|
+
|
|
17
|
+
## Do not use when
|
|
18
|
+
|
|
19
|
+
- Do not use for ordinary deployment.
|
|
20
|
+
- Do not submit when the user requested preparation or review only.
|
|
21
|
+
|
|
22
|
+
## Required inputs
|
|
23
|
+
|
|
24
|
+
- Target directory.
|
|
25
|
+
- Current deployment and verification evidence.
|
|
26
|
+
- Requested review, preparation, or submission boundary.
|
|
27
|
+
|
|
28
|
+
## Workflow
|
|
29
|
+
|
|
30
|
+
Read and follow the canonical playbook `references/publishing.md` at `../noodle-seed/references/publishing.md`. It owns the workflow; do not recreate it here or load the command catalog speculatively.
|
|
31
|
+
Load `references/app-directory-compliance.md` at `../noodle-seed/references/app-directory-compliance.md` only when the playbook or observed evidence names that concern.
|
|
32
|
+
|
|
33
|
+
## Verification evidence
|
|
34
|
+
|
|
35
|
+
Required product, policy, deployment, media, and test evidence is present or explicitly missing.
|
|
36
|
+
|
|
37
|
+
## Recovery paths
|
|
38
|
+
|
|
39
|
+
Return missing implementation or evidence to its owning skill without restarting discovery.
|
|
40
|
+
|
|
41
|
+
## Stop conditions
|
|
42
|
+
|
|
43
|
+
Stop before external submission without explicit user authorization.
|
|
44
|
+
|
|
45
|
+
## Handoff contract
|
|
46
|
+
|
|
47
|
+
Pass the selected outcome, explicit target, changed files, commands run, passing evidence, first unproven evidence layer, sanitized failure, remaining authority, and exact next action. The receiving skill continues from that layer; do not restart discovery or discard prior proof.
|