@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.
Files changed (29) hide show
  1. package/README.md +7 -5
  2. package/manifest.json +904 -191
  3. package/package.json +1 -1
  4. package/skills/claude-code/SKILL.md +16 -14
  5. package/skills/claude-code/authoring-mcp-servers/SKILL.md +48 -0
  6. package/skills/claude-code/building-mcp-apps/SKILL.md +48 -0
  7. package/skills/claude-code/connecting-apis-to-mcp/SKILL.md +47 -0
  8. package/skills/claude-code/debugging-mcp-delivery/SKILL.md +48 -0
  9. package/skills/claude-code/deploying-mcp-services/SKILL.md +47 -0
  10. package/skills/claude-code/designing-mcp-products/SKILL.md +47 -0
  11. package/skills/claude-code/embedding-mcp-assistants/SKILL.md +47 -0
  12. package/skills/claude-code/examples/customer-auth/README.md +143 -1
  13. package/skills/claude-code/publishing-mcp-integrations/SKILL.md +47 -0
  14. package/skills/claude-code/references/embedded-assistant.md +142 -15
  15. package/skills/claude-code/reporting-noodle-feedback/SKILL.md +46 -0
  16. package/skills/claude-code/verifying-mcp-delivery/SKILL.md +47 -0
  17. package/skills/codex/SKILL.md +16 -14
  18. package/skills/codex/authoring-mcp-servers/SKILL.md +48 -0
  19. package/skills/codex/building-mcp-apps/SKILL.md +48 -0
  20. package/skills/codex/connecting-apis-to-mcp/SKILL.md +47 -0
  21. package/skills/codex/debugging-mcp-delivery/SKILL.md +48 -0
  22. package/skills/codex/deploying-mcp-services/SKILL.md +47 -0
  23. package/skills/codex/designing-mcp-products/SKILL.md +47 -0
  24. package/skills/codex/embedding-mcp-assistants/SKILL.md +47 -0
  25. package/skills/codex/examples/customer-auth/README.md +143 -1
  26. package/skills/codex/publishing-mcp-integrations/SKILL.md +47 -0
  27. package/skills/codex/references/embedded-assistant.md +142 -15
  28. package/skills/codex/reporting-noodle-feedback/SKILL.md +46 -0
  29. 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.39.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.39.0 hash:75dd0f6f85b04858 -->
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, then begin the work. Read supporting references only when the primary workflow sends you there or the named evidence exposes that concern. Stop discovery once the route is selected.
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: diagnosis of an existing failure takes the verification 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 the read-only route; hosted mutation requires the explicitly requested deployment route.
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 | Primary reference | Supporting references only when needed | Done when |
26
+ | User outcome | Load sibling skill | Canonical playbook | Done when |
27
27
  | :--- | :--- | :--- | :--- |
28
- | Create or extend a headless MCP server whose external API contract is already modeled | `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. |
29
- | Connect a real API when credentials or an API specification are available | `references/connect-an-api.md` | `references/authoring-workflow.md` | A representative live read returns populated, intentionally mapped fields without exposing credentials. |
30
- | Build or change an MCP App, widget, or host-visible UI | `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. |
31
- | Validate, test, diagnose, or recover a failing local or hosted project | `references/verify-and-recover.md` | `references/agent-contract.md`, `references/compile-errors.md` | The failing evidence layer is repaired and rerun, or the remaining blocker and exact next action are reported. |
32
- | Inspect or diagnose hosted status, logs, metrics, events, or deployment metadata read-only | `references/inspect-hosted.md` | None | The requested hosted evidence is reported without changing target, configuration, access, or deployment state. |
33
- | Deploy, configure, connect with writes, change access, or roll back a hosted MCP service when explicitly requested | `references/deploy-and-ops.md` | `references/cli-commands.md` | The requested hosted state is evidenced without claiming unperformed host or production checks. |
34
- | Embed a Noodle assistant in an existing SaaS or web application | `references/embedded-assistant.md` | `references/authoring-workflow.md` | The requested embed boundary works with verified identity and credential separation at the tested level. |
35
- | Prepare or submit an integration to a host directory | `references/publishing.md` | `references/app-directory-compliance.md` | The requested submission evidence is complete and any host-review uncertainty is explicit. |
36
- | Report a Noodle Seed bug, documentation gap, or product improvement | `references/feedback.md` | None | A sanitized command is shown to the user and is submitted only after explicit approval. |
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 React wrapper:
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.