{"owner":"rocketride-org","repo":"rocketride-server","hasSkills":true,"totalSkillsCount":109,"totalTokensCount":48428,"categories":["cursor-rule","anthropic-skill","copilot-instructions","root-instruction","subagent-persona","claude-rule","plugin-manifest"],"hasMcp":true,"mcpConfig":{"mcpServers":{"rocketride-server":{"command":"npx","args":["-y","@modelcontextprotocol/server-rocketride-server"]}}},"found":[".cursorrules","docs/agents/skills/rocketride-designing-pipelines/SKILL.md","docs/agents/skills/rocketride-running-pipelines/SKILL.md","docs/agents/skills/rocketride-debugging-pipelines/SKILL.md","docs/agents/skills/rocketride-building-pipelines/SKILL.md","docs/agents/skills/rocketride-configuring-pipelines/SKILL.md",".github/copilot-instructions.md","nodes/AGENTS.md","docs/agents/README.md","AGENTS.md","docs/agents/task-battery.md",".claude/CLAUDE.md","packages/chat-widget/README.md","packages/chat-widget/package.json","packages/chat-widget/tsconfig.json","packages/chat-widget/tsconfig.test.json","packages/chat-widget/tsconfig.types.json","packages/client-mcp/README.md","packages/client-python/README.md","packages/client-typescript/README.md","packages/client-typescript/package.json","packages/client-typescript/tsconfig.cjs.json","packages/client-typescript/tsconfig.cli.json","packages/client-typescript/tsconfig.contract.json","packages/client-typescript/tsconfig.esm.json","packages/client-typescript/tsconfig.json","packages/client-typescript/tsconfig.types.json","packages/n8n-nodes/CHANGELOG.md","packages/n8n-nodes/README.md","packages/n8n-nodes/package-lock.json","packages/n8n-nodes/package.json","packages/n8n-nodes/tsconfig.json","packages/server/vcpkg.json","packages/shell/package.json","packages/shell/tsconfig.contract.json","packages/shell/tsconfig.json","tools/contract_checks/README.md","tools/dependabot-smoke/README.md","tools/sync_models/README.md","docs/agents/context/ROCKETRIDE_APPS.md","docs/agents/context/ROCKETRIDE_CLI.md","docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md","docs/agents/context/ROCKETRIDE_CONCEPTS.md","docs/agents/context/ROCKETRIDE_INTEGRATIONS.md","docs/agents/context/ROCKETRIDE_OBSERVABILITY.md","docs/agents/context/ROCKETRIDE_PIPELINES.md","docs/agents/context/ROCKETRIDE_README.md","docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md","docs/agents/context/ROCKETRIDE_python_API.md","docs/agents/context/ROCKETRIDE_typescript_API.md","docs/agents/skills/MCP_TOOL_CONTRACT.md","docs/agents/skills/README.md","packages/client-init/typescript/README.md","packages/client-init/typescript/package.json","packages/n8n-nodes/examples/run-pipeline.workflow.json","tools/sync_models/src/sync_models.config.json","docs/agents/context/stubs/AGENTS.md","docs/agents/context/stubs/CLAUDE.md","docs/agents/context/stubs/claude-code.md","docs/agents/context/stubs/copilot-instructions.md","docs/agents/context/stubs/windsurf.md","docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md","docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md","docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md","docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md","docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md","docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json","docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json","docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md","packages/client-python/tests/fixtures/otel_bridge_events.json","packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json","packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json","packages/server/test/pipelines/advrag-chat.json","packages/server/test/pipelines/advrag-ingest.json","packages/server/test/pipelines/chat-ingest.json","packages/server/test/pipelines/chat-ui.json","packages/server/test/pipelines/denodo-catalog.json","packages/server/test/pipelines/denodo-direct.json","packages/server/test/pipelines/ocr.json","packages/server/test/pipelines/ocr_thumbnail.json","packages/server/test/pipelines/parse.json","packages/server/test/pipelines/question-answer.json","packages/server/test/pipelines/remote.json","packages/server/test/pipelines/search.json","packages/server/test/pipelines/semantic-search.json","packages/server/test/pipelines/webhook.json","packages/shell/public/themes/dark.json","packages/shell/public/themes/gray.json","packages/shell/public/themes/light.json","packages/shell/public/themes/rocketride-light.json","packages/shell/public/themes/rocketride.json","packages/shell/public/themes/visual-studio.json","docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md","docs/agents/skills/rocketride-designing-pipelines/examples/README.md","nodes/src/nodes/webhook/tools/README.md","packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json","packages/server/cmake/ports/cpprestsdk/README.md","packages/server/cmake/ports/cpprestsdk/vcpkg.json","packages/server/cmake/ports/fastpfor/README.md","packages/server/cmake/ports/fastpfor/vcpkg.json","packages/server/cmake/ports/libuuid/vcpkg.json","packages/server/cmake/ports/replxx/README.md","packages/server/cmake/ports/tinyxml2/README.md","packages/ai/src/ai/modules/mcp/credentials.json","packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md","packages/ai/src/ai/common/graph/age/README.md","packages/ai/src/ai/common/models/ocr/README.md","packages/ai/src/ai/modules/mcp/apps/package.json","packages/ai/src/ai/modules/mcp/apps/tsconfig.json"],"skills":{".cursorrules":"# RocketRide — AI assistant instructions\n\nThe canonical contributor guide is `AGENTS.md` at the repository root. Read it\nfirst; it routes every task (integration code, nodes, clients, MCP, engine) to\nthe right documentation under `docs/`.\n\nBefore writing any RocketRide integration code, read\n`docs/agents/context/ROCKETRIDE_README.md` and the other `ROCKETRIDE_*` files in\n`docs/agents/context/`. If a request is ambiguous, stop and ask — do not guess.\n","docs/agents/skills/rocketride-designing-pipelines/SKILL.md":"---\nname: rocketride-designing-pipelines\ndescription: Use when choosing which RocketRide nodes a task needs and wiring them into a pipeline graph — exploring the node catalog, selecting nodes by archetype, and connecting them with typed lanes into a valid acyclic DAG.\n---\n\n# Designing RocketRide Pipelines\n\nTurns a plain-language request into an approved, lane-correct DAG — **before** any node is\nconfigured. Two outputs, two gates: a node selection (Gate A) and a wired topology (Gate B).\nThe gate rules and forcing functions are in\n`../rocketride-building-pipelines/GATE_PROTOCOL.md` — they apply here.\n\nYou work from the **node index** (L1): `LAYER1_NODE_INDEX.json` (bundled), or the live\n`get_services()` / `.rocketride/services-catalog.json`. Each entry is `name · classType · lanes ·\ninvoke`. The index is enough to **select and wire**; it carries no config fields (that's Phase 2).\nThe bundled index is reconciled against this repo's node corpus (`nodes/src/nodes/`), so it can\ndrift from the set a particular live engine actually has registered.\nThe live MCP `list_components` tool lists names/summaries only (**no lanes**) and hides nodes whose\nintegration isn't configured — use it to check availability, but **wire from the bundled index +\nper-node schemas**. If a node you expect is missing from it, check `list_integrations` first.\n\n## Phase 1a — Discover (→ Gate A)\n\n1. **Restate the task** in one line: the input data, the wanted output. (\"Input: user questions.\n   Output: answers grounded in uploaded PDFs.\")\n2. **Explore archetypes exhaustively.** Group the index by `classType` and walk every archetype\n   that could plausibly contribute. Don't stop at the first match. The archetypes:\n   `source` (chat/webhook/dropper/filesys/telegram) · `data`/parse (parse/llamaparse/reducto/\n   landing_ai_parse/landing_ai_extract) · `text` (extract_data/ner/anonymize_text/dictionary/prompt/summarization) ·\n   `preprocessor` · `image` · `audio` · `video` · `embedding` · `llm` (14 providers) · `store`\n   (vector DBs) · `database` (db_*) · `agent` · `tool` (tool_*) · `memory` · `rerank` · `search` ·\n   `guard` · `infrastructure`/`target`/`response_*` (terminals).\n   For each relevant archetype, list the candidate nodes you see in the index.\n3. **Select**, citing each: `Found in index: <name> · classType=[…] · lanes={…}`. A pipeline needs\n   a resolvable **source** (one Source-mode node, or several with `source` naming the one that\n   starts the run, in the file or at launch) and a **terminal** (`response_*` for a reply; a store / `db_*` for\n   ingestion). Pull the right converters from the lane cheat-sheet in\n   `../rocketride-building-pipelines/pipeline-patterns.md`.\n4. **Gate A** — end with the count line and the gate:\n   > Archetypes explored (N). Selected nodes (M): <name · role>, … — all cited from the index.\n   > Approve these M nodes? (yes / adjust / cancel)\n   Then **use the Write tool to write `.context/GATE_STATE.md`** = `GATE A | presented | status:\n   AWAITING` (GATE_PROTOCOL §2 — so the gate survives a context reset), and **STOP**. (See §1.)\n\n## Phase 1b — Design the DAG (→ Gate B)\n\nOnly after Gate A is approved.\n\n1. **Fetch each selected node's schema** (L2 — `describe_component` / `tools/` shim in\n   `../rocketride-configuring-pipelines/tools/fetch-node-schema.py` / `.rocketride/schema/<n>.json`).\n   You need the real **lane signatures** here, not the index summary — wiring from the summary is\n   the most common silent bug. (Forcing function 8.) **Lazily — only for the nodes you selected at\n   Gate A; never `ls`/`cat`/glob the whole `.rocketride/schema/` dir or \"pull every schema up front\"\n   (FF#17). Select from the index first; fetch only the few schemas you need.**\n2. **Wire the lanes.** Each non-source node gets `input: [{lane, from}]`. State **every edge** with\n   its lane type: `chat_1 → embedding_1 (lane: questions)`. The output lane of `from` must be a\n   real output of that node and a valid input of the target. If types don't match, insert a\n   converter (cheat-sheet) — don't force it.\n   - `<Bad>`: `parse_1 → store_1 (lane: text)`, wiring parsed text straight into a vector store.\n     It passes the eye test but fails validation: a store ingests `documents` that already carry\n     embedding vectors, and `text` is not one of its lanes.\n   - `<Good>`: `parse_1 → preprocessor_langchain_1 (lane: text)`, then\n     `preprocessor_langchain_1 → embedding_1 (lane: documents)`, then `embedding_1 → store_1 (lane: documents)`.\n3. **Apply the structural rules** (`PIPELINE_RULES_SUMMARY.md`): a resolvable source (rule 1); acyclic (no\n   loops); no orphans (every node reachable from the source); embedding **before** any store;\n   agents wire their `llm`/`tool`/`memory` via the **control plane** (the controlled node carries\n   `control: [{classType, from: <agent>}]`, the agent does not) and must meet each `invoke`\n   min/max from the index.\n4. **Draw it** (Mermaid or ASCII) and **Gate B**:\n   > <diagram>. Edges (K): <node → node (lane: type)>, … — all lane-checked against schemas.\n   > Approve this topology? (yes / adjust / cancel)\n   Then **Write `.context/GATE_STATE.md`** = `GATE B | presented | status: AWAITING` (§2), and STOP.\n\nHand the approved selection + topology to `rocketride-configuring-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll list the obvious nodes and move on\" | Exhaustive archetype walk first — the right node is often one you'd skip. Count line proves coverage. |\n| \"The index shows the lanes, I don't need the schema to wire\" | Index lanes are a summary; fetch the schema for exact signatures before wiring. |\n| \"Two Source-mode nodes, no `source` named\" | Ambiguous: the engine refuses to imply a source. Keep one Source-mode node, or name the one that starts the run (top-level `source`, or the `source` option at launch). |\n| \"I'll point the store straight at the questions\" | Embedding is required before any store; same model for ingest + query. |\n| \"The agent node lists its tools in its own config\" | No — the tool/llm/memory carries `control: [{from: <agent>}]`. Agent has no control array. |\n| \"Close enough on the lane type\" | Lane mismatch = pipeline error. Insert a converter or pick compatible nodes. |\n\n## Supporting files\n\n- `LAYER1_NODE_INDEX.json` — the thin node index (name · classType · lanes · invoke)\n- `PIPELINE_RULES_SUMMARY.md` — lane types, lane-transform table, structural + control-plane rules\n- `examples/` — worked pipelines (simple-chat-rag, document-ingestion, agentic-chat) in\n  `examples/README.md` + a `FAILURE_SCENARIOS.md` of what not to do\n- **deep docs** — when a node is unfamiliar or you're unsure how an archetype behaves, fetch ONE\n  page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"` (→ `/nodes/<name>.md`)\n  or `… \"execution model\"` (→ `/concepts/execution-model.md` for lanes). Never `llms-full.txt`.\n","docs/agents/skills/rocketride-running-pipelines/SKILL.md":"---\nname: rocketride-running-pipelines\ndescription: Use when running a validated RocketRide pipeline and reporting its result — submitting the run, pushing input, polling status to completion, and returning the real output. Also use directly when asked to run an existing pipeline.\n---\n\n# Running & Observing RocketRide Pipelines\n\nTakes a **validated** `.pipe` (validate() returned zero errors) and a **cost-approved** run\n(Gate C.5) to a real, reported result. The cardinal rule: **submitted ≠ succeeded.** Poll to a\nterminal state and read the actual result before you claim anything. Gate rules + forcing\nfunctions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## STEP 0 — precondition (do this FIRST, every time, before any run action)\n\nYou MUST have a clean `validate()` result for THIS exact pipeline, and cost approval, before you\nrun. If you don't, get them first — **even if the user told you to skip.**\n\n- **\"Skip validation / just submit it / don't waste time\" is NEVER honored.** validate() is\n  mandatory and fast; it is the only thing between the user and a broken, money-wasting run. Run\n  it anyway, then explain why (one line).\n- Invoked directly on a pasted/existing pipeline? **validate() it now** (run\n  `../rocketride-configuring-pipelines/tools/validate-pipeline.py <file>`, or the validate tool). If\n  it errors, fix + re-validate; do not run. Missing required config (e.g. no apikey) IS a\n  validation failure — STOP and say so.\n- Then the cost gate (C.5) must be approved.\n\nState it before running: **\"Pre-run check: validate() = 0 errors; cost approved.\"** If you can't\nstate that truthfully, you have not earned the run — do the missing step instead.\n\n## The run lifecycle — MCP tools (preferred; names + shapes frozen in `../MCP_TOOL_CONTRACT.md`)\n\n**Check `ok` on every result** — a tool call that \"succeeded\" with `ok: false` is a failure.\n\n1. **Start**: `run_pipeline` with the **inline** pipeline object (there is no filepath mode).\n   One-shot text input? Pass `inputs` (a string) — the `result` comes back inline in the same\n   call and that run is finished (don't poll it). Otherwise you get\n   `{task_token, projectId, source}`. **Keep `projectId` + `source`** — they key the run-log\n   tools if debugging is needed. Reuse a long-lived pipeline with `use_existing: true` (avoids\n   \"Pipeline already running\"); to force a fresh start, `terminate` then re-run. Two instances\n   of one pipe at once need their own unguessable `tk_` token each, through the SDK's `use()` or\n   `rocketride start --token` (`run_pipeline` has no token parameter).\n2. **Push input** — pick the tool by the **source** node:\n   - Raw text/data → `send_data` (`input` is a **string** — serialize JSON). Result inline.\n   - **Files from the host** → start with `run_dropper_pipe` instead: it returns an\n     `upload_url` (multipart-POST the files to it) and a `dropper_url` (browser drag-drop page\n     to hand the user). `send_files` reads paths on the engine host and exists only on a\n     local (loopback-bound) engine.\n   - `chat` source → **no MCP chat tool exists**; use the SDK fallback below.\n3. **Poll** longer/async runs with `monitor` (a bounded server-side poll — pass `timeout`).\n   Quote the snapshot each round: `state_label`, `terminal`, `counts`, `errors`.\n   `terminal: true` means done; `poll_timed_out: true` means the *poll* hung, not the task —\n   call `monitor` again. Never one-shot poll and walk away. (Forcing function 12.)\n4. **Report the real result.** Results are **inline** from `run_pipeline(inputs)` / `send_data`\n   — there is **no `get_run_result` tool** (none exists, none is planned; never invent it).\n   Read the response by its result key (default lane key — `answers`, `text`, …; check\n   `result_types` for the actual mapping). On failure, report the error + which node, then hand\n   `projectId`/`source` to `rocketride-debugging-pipelines` (its evidence is the `log_*` tools).\n5. **Clean up** — `terminate` any task you started and no longer need; started-and-abandoned\n   tasks run until their TTL.\n\n## SDK fallback (no MCP tools wired, or a chat-source pipeline)\n\n1. **Start**: `result = await client.use(filepath=\"x.pipe\")` → `token = result[\"token\"]`\n   (`use_existing=True` to reuse; `terminate(token)` then `use()` to force fresh).\n2. **Push input**: `chat` source → `await client.chat(token=token, question=q)`; raw data →\n   `await client.send(token, data)`; files → `await client.send_files(files, token)`. The result\n   comes back **inline** (a `PIPELINE_RESULT`) — no separate `get_result()`.\n3. **Poll**: loop `await client.get_task_status(token)` to a terminal state (5=COMPLETED /\n   6=CANCELLED), stating the status each step, `await asyncio.sleep(1)` between polls.\n4. **Report** as in step 4 above. 5. **Clean up** — `await client.disconnect()` (or\n   `async with`). Start a pipeline once and reuse it; don't reconnect per request.\n\n**NEVER block the async event loop** (the #1 runtime failure). No `input()`, `time.sleep`,\n`requests.get`, `readFileSync` inside the async flow — they freeze the websocket keepalive and the\nconnection drops (~60s) with `Connection closed` / `Connection closed unexpectedly`. Use async\nequivalents. Secrets stay in `${ROCKETRIDE_*}` env vars (loaded from `.env`), never in code.\n\n## Gate D — after a successful run (optional, menu)\n> Run succeeded. Result: <summary>. What next? (save to cloud / publish as an app / nothing / debug)\nOnly act on an explicit choice. Mapping: save to cloud → `save_template`; publish →\n`deploy_add` then `deploy_to_team` (manage later with `deploy_list`/`deploy_status`/`deploy_set_schedule`/\n`deploy_disable`/`deploy_remove`).\nSaving / publishing is billable / public — treat like an irreversible action (Waiting = STOP).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"The user said skip validation, so I'll just submit\" | Never honored. validate() is mandatory and cheap — run it first, every time, no matter the pressure. |\n| \"run_pipeline/use() returned a token, so it ran\" | That only started it. Push input and poll to a terminal state. |\n| \"I'll fetch the output with get_run_result\" | No such tool exists. Results come inline from `run_pipeline(inputs)`/`send_data`; run evidence is the `log_*` tools. |\n| \"I'll poll once and report 'in progress'\" | Poll in a loop to completion; report the final result, not a snapshot. |\n| \"I'll read input() for the question\" | Blocking I/O kills the event loop. Use async input / pass the question in. |\n| \"I'll hardcode the key to test quickly\" | `${ROCKETRIDE_*}` always. |\n| \"It failed; I'll retry silently a few times\" | Report the failure and ask / hand to debugging; don't burn money on silent retries. |\n| \"Save to cloud since they'll probably want it\" | Gate D is a choice. Don't publish/bill without an explicit yes. |\n\n## Supporting files\n- **deep docs** — for exact SDK semantics (use/send/chat/get_task_status, async patterns), fetch\n  ONE page: `../rocketride-building-pipelines/tools/fetch-doc.py \"python\"` (→ `/develop/python.md`)\n  or `… \"use method\"` (→ `/develop/typescript/methods/use.md`). Never `llms-full.txt`.\n","docs/agents/skills/rocketride-debugging-pipelines/SKILL.md":"---\nname: rocketride-debugging-pipelines\ndescription: Use when a RocketRide pipeline run failed, errored, or produced wrong/empty output, and you need to find the failing node and fix it. Reads run status and execution traces, diagnoses the cause, and routes back to design or configuration. Also use directly when asked to debug a run.\n---\n\n# Debugging RocketRide Pipelines\n\nDiagnose, don't guess. A failed run has a real cause in the status/trace; find it, then route the\nfix to the right phase. No re-running until the cause is identified and the fix is validated.\n\n## Procedure\n\n1. **Read the status.** MCP: `monitor(task_token)` → quote `state_label`, `errors[]`,\n   `warnings[]`, `counts` verbatim. SDK: `get_task_status(token)` → `state`, `errors[]`,\n   `warnings[]`, `exitCode`, `exitMessage`, `failedCount`. Don't paraphrase error messages.\n2. **Read the trace.** MCP — the run-log (DVR) tools work for past *and* live runs, keyed by the\n   `projectId` + `source` returned by `run_pipeline`/`run_dropper_pipe` (never the task token):\n   `log_chapters` to find the run → `log_read` for paged events (≤200/page; follow the cursor) →\n   `log_traces` to list per-object traces → `log_trace` for one object's full per-node\n   `enter`/`leave` with `lane`, `data`, `result`, `error`. Retention: 7 days dev / 30 days\n   deploy. A run started with `pipelineTraceLevel=\"none\"` has chapters/console but **empty\n   traces** — re-run with `\"summary\"`/`\"full\"` for flow evidence. SDK fallback: the\n   `apaevt_flow` / `_trace` events in the response. Either way, find the **first** node whose op\n   shows an error or whose output is empty/wrong — that's the failure point. Downstream errors\n   are usually consequences.\n3. **Classify the cause** (see `ERROR_TABLE.md`):\n   - **Config** — bad/missing field, wrong API key, wrong model name → fix in\n     `rocketride-configuring-pipelines` (re-fetch schema, re-validate).\n   - **Wiring/lane** — lane mismatch, missing converter, wrong source method → fix in\n     `rocketride-designing-pipelines` (re-wire), then re-configure + re-validate.\n   - **Runtime** — event-loop blocked (`Connection closed`/timeout), `Pipeline already running`,\n     blocking I/O → fix the run code in `rocketride-running-pipelines`.\n   - **Data** — empty/garbage input, wrong response key (`KeyError`) → check input + `result_types`.\n4. **Propose a specific fix** tied to the evidence: \"Node `llm_1` failed: `Invalid API key`. The\n   `${ROCKETRIDE_OPENAI_KEY}` env var is unset / wrong. Fix: set it, re-validate, re-run.\" Route to\n   the owning phase. **Do not re-run until the fix is made and `validate()` is clean again.**\n\n## Common diagnoses (full table in ERROR_TABLE.md)\n- `Connection closed` / `Connection closed unexpectedly` → **event loop blocked by sync I/O** (most\n  common runtime failure) — fix the run code, not the pipeline.\n- `The service <provider> was not found` → misspelled `provider`; check the index.\n- `input has unknown lane` (validate) → lane mismatch; add a converter or pick compatible nodes.\n- `KeyError: '<key>'` → response key vs `laneName` mismatch; read `result_types`.\n- `Pipeline is already running.` → `use_existing=True` or `terminate()` first; a second instance of\n  the same pipe needs its own unguessable `tk_` token (SDK `use()` or `rocketride start --token`; not MCP).\n- `Invalid API key` / a `project_id` rejection → config fix.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll just re-run, maybe it works\" | Find the cause first; blind re-runs cost money and teach nothing. |\n| \"The last node errored, fix that node\" | The **first** failing node in the trace is usually the cause; later errors cascade. |\n| \"Connection dropped — the engine is flaky\" | Almost always a blocked event loop (sync I/O in async code), not the engine. |\n| \"I'll paraphrase the error\" | Quote it verbatim — the exact message maps to the exact fix. |\n| \"Fixed it, re-running\" | Re-validate() after any fix before re-running. |\n\n## Supporting files\n- `ERROR_TABLE.md` — error message → cause → owning phase → fix\n- **deep docs** — for failure modes the table doesn't cover, fetch ONE page:\n  `../rocketride-building-pipelines/tools/fetch-doc.py \"error handling\"`\n  (→ `/concepts/error-handling.md`) or `… \"observability\"` (→ `/protocols/websocket/observability.md`).\n  Never `llms-full.txt`.\n","docs/agents/skills/rocketride-building-pipelines/SKILL.md":"---\nname: rocketride-building-pipelines\ndescription: Use when asked to build, run, or validate a RocketRide pipeline (e.g. \"build me a chatbot that answers from my docs\", \"make a pipeline that summarizes uploaded PDFs\", \"run this pipeline\"), or whenever turning a plain-language data/AI task into a working RocketRide pipeline.\n---\n\n# Building RocketRide Pipelines\n\nMaster workflow: a plain-language request in, a **valid, running** RocketRide pipeline out.\nFollow the phases in order. Each phase is owned by a REQUIRED SUB-SKILL. The gates are **hard\nstops** — present to the user and wait.\n\n```\nTHE IRON LAW OF GATES — WAITING = STOP:\nWAITING FOR A HUMAN'S ANSWER MEANS ENDING YOUR TURN.\nA dismissed / headless / unanswered gate is a STOP — NEVER an approval. No exceptions.\n```\n\n**Real-world impact:** this one rule took gate blast-through from 32–45% to **0/24** on Haiku — the\ncheap model behaves like an expensive one because it holds the protocol, not because it is smart.\n\n**Waiting means ENDING YOUR TURN.** A dismissed question dialog, an unanswered question, or a\nnon-interactive/headless session is a STOP, never an approval. No exceptions:\n- Don't \"proceed with the recommended defaults\" — a recommendation is not a confirmation.\n- Don't treat silence, dismissal, or the absence of a user as consent.\n- Don't later write \"the user approved this\" unless a human actually answered.\nIf nobody can answer, deliver the gate brief as your final message and stop — an unbuilt\npipeline costs nothing; an unapproved run wastes the user's money and compute.\n\nFull gate rules, the deterministic gate wording, and the forcing functions live in\n`GATE_PROTOCOL.md`. **Read it before your first gate.** Multi-turn gate state lives in\n`.context/GATE_STATE.md` (in the current project): **write it (Write tool) whenever you present a\ngate, and read it FIRST on every re-engagement** — a fresh session or a vague \"continue\" must\nre-present an `AWAITING` gate, never auto-approve. See GATE_PROTOCOL §2.\n\n## How reliability works here (read this once)\n\nYou do **not** need to be smart to build a correct pipeline. You need to follow the process and\nlet the tools be the judge:\n- **Never invent a node.** Every node you name must be cited from the node index (Phase 0). If\n  it isn't in the index, it doesn't exist — STOP and tell the user.\n- **Never invent a config field.** Fetch the node's schema before configuring it.\n- **Never claim \"valid\" or \"ran\" without the tool saying so.** `validate()` is the compiler;\n  the run status/result is the proof. Quote them; don't paraphrase.\n- **Count what you list.** Every multi-item list ends with a count line so omissions are visible.\n\n## The tool/data layer (three layers + run)\n\nEach step has the same fallback ladder — use the **first** option your environment supports:\n\n| Need | Layer | Preferred (MCP tool) | Fallback (bundled shim, uses SDK) | Offline |\n|---|---|---|---|---|\n| List/select nodes | L1 | `list_components` (names/summaries only — **wire** from the bundled index) | `tools/generate-index.py` | bundled `LAYER1_NODE_INDEX.json` |\n| One node's config schema | L2 | `describe_component` | `tools/fetch-node-schema.py <node>` | `.rocketride/schema/<node>.json` |\n| Validate the whole pipeline | L3 | `validate_pipeline` | `tools/validate-pipeline.py <file>` (calls `client.validate`) | `tools/validate-pipeline.py --static <file>` (lint only) |\n| Run it | — | `run_pipeline` → `send_data`/`run_dropper_pipe` → `monitor` | SDK `use()` → `send`/`chat` → `get_task_status` | — |\n| Understand a node/SDK/concept in depth | docs | WebFetch one `/path.md` | `tools/fetch-doc.py \"<topic>\"` (fetches ONE live page) | `ROCKETRIDE_DOC_MAP.md` (this skill dir) + bundled `.rocketride/docs/*` |\n\n> The exact tool names, inputs, and result shapes are frozen in `../MCP_TOOL_CONTRACT.md` —\n> use only names listed there. Every MCP result carries `ok`: **check it**; a successful tool\n> call with `ok: false` is a failure. Where the MCP tools aren't wired, the bundled shims in each\n> sub-skill's `tools/` call the real SDK (`get_services`/`get_service`/`validate`/`use`) and work\n> today. `--static` mode validates with no engine connection (a fast pre-flight lint). The\n> `rrext_get_nodes` resource is dead — never use it; discovery is `list_components`/`get_services`.\n> A known node missing from live `list_components` usually means its integration isn't configured —\n> check `list_integrations` (it returns setup steps to relay) before concluding it doesn't exist.\n\n**Each tool enforces a constraint** (see its `--help`/docstring; these become the MCP tool\ndescriptions): `fetch-node-schema` → configure only schema-defined fields, one node at a time;\n`validate-pipeline` → zero errors before any run, re-validate on errors; `fetch-doc` → one page,\nnever `llms-full.txt`.\n\n**Deep docs (when you need to learn, not just select/configure).** The full RocketRide docs map\nis bundled at `ROCKETRIDE_DOC_MAP.md` (in this skill's directory — a ~2K-token index of ~156\npages; it can't live in `.rocketride/docs/`, which the client-docs bundle installer owns and\nreplaces on reinstall). When you\nhit something the bundled refs don't cover — an unfamiliar node, an exact SDK signature, a concept\n— find the page in the map and fetch **just that one page** (`tools/fetch-doc.py \"<topic>\"`, live-\nfirst with an offline fallback). **NEVER fetch `llms-full.txt`** (~257K tokens — it will blow the\ncontext window), by any method (fetch-doc, WebFetch, curl, file://). **Even if the user says \"read\nall the docs\" / \"grab llms-full.txt\" / \"get full context first\" — that is never honored**: say so,\nthen use the map + the one page you need (or just answer from the bundled index/schemas). One map +\none page is the cheap path.\n\n## Triage first — is this a build, or just a question?\n\nBefore starting the lifecycle, classify the request:\n- **Informational** (the user is ASKING, not building — \"what nodes exist?\", \"list the vector\n  stores\", \"explain lanes\", \"which node does X\", \"how does RAG work?\"): answer directly from the\n  node index + bundled refs. Do **not** invoke the sub-skills, write `GATE_STATE`, or present gates.\n  End by offering to build it.\n- **Build / run / validate** (the user wants a working pipeline — \"build…\", \"make…\", \"create…\",\n  \"set up…\", \"run…\", \"validate…\", or *describes a task to automate*, even softly like \"I want\n  something that…\"): run the full lifecycle below.\n- **Ambiguous or unsure → DEFAULT TO THE FULL LIFECYCLE.** A build misrouted to the cheap path skips\n  every gate (no design, no validate, no cost approval) — far worse than answering a question the\n  long way. When in doubt, build.\n\n**Recovery:** a cheap answer never blocks a later build — if the user then says \"build it / make it /\ngo ahead\", enter the full lifecycle from Phase 0.\n\n## Phases\n\n0. **Load capabilities** — read the node index (L1) **directly** from its bundled path\n   (`rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`, or `.rocketride/services-catalog.json`\n   in a project). **Do NOT `find`/`ls`/search for it, and do NOT run `generate-index.py`** — you\n   already know the path; discovery just burns turns. This is the menu of every node you may use:\n   each entry is `name · classType · lanes · invoke`. Keep it open; you select and wire from it.\n   It carries **no config schema** — that's L2, fetched per node in Phase 2.\n   If a **freshness warning** fires (the index stamp is stale/missing — `LAYER1_NODE_INDEX.meta.json`\n   older than 14 days, surfaced by `validate-pipeline.py`), say so in one line and **proceed** — it\n   is **non-blocking**, never a hard stop. `validate()` against the live engine is the drift backstop;\n   if a node seems missing, regenerate with `tools/generate-index.py`.\n1. **Discover + design** — REQUIRED SUB-SKILL: `rocketride-designing-pipelines`.\n   Explore archetypes → select nodes (**GATE A**) → wire the acyclic DAG with typed lanes\n   (**GATE B**). Fetch each chosen node's schema here too, so lane signatures are exact before\n   wiring — a guessed lane is the most common silent failure.\n2. **Configure + validate** — REQUIRED SUB-SKILL: `rocketride-configuring-pipelines`.\n   Per node: fetch schema → fill required fields → run the anti-pattern checklist as a gate →\n   then `validate()` the whole pipeline. On errors, fix and **re-validate** (never claim passed\n   without a clean result). **GATE C** (validation clean) → **GATE C.5** (cost approved).\n3. **Run + observe** — REQUIRED SUB-SKILL: `rocketride-running-pipelines`.\n   Submit, poll to completion, report the real result. **GATE D** only if the user chooses to\n   save to cloud / publish as an app.\n4. **If a run fails or output is wrong** — REQUIRED SUB-SKILL: `rocketride-debugging-pipelines`.\n   Read the trace, diagnose the failing node, route back to Phase 1 or 2.\n\n## The gates (binary or menu — exact wording in GATE_PROTOCOL §3)\n\n**The instant you present any gate below, use the Write tool to write `.context/GATE_STATE.md`\n(`status: AWAITING`) before ending the turn (GATE_PROTOCOL §2) — and on any re-engagement, read it\nFIRST. That on-disk line is what makes a gate survive a context reset.**\n\n- **GATE A** — node selection (after Phase 1 discovery) · **GATE B** — topology (after the DAG).\n- **GATE C** — validation clean (a tool gate, not a user gate) · **GATE C.5** — cost, before any paid/cloud run.\n- **GATE D** — save to cloud / publish (optional, after a successful run).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I know this node exists, no need to check the index\" | If it's not in the index it doesn't exist — the engine rejects it. Cite or STOP. |\n| \"I'll fill the config from memory, schemas are slow\" | Guessed fields fail validation (e.g. `max_tokens` vs `modelTotalTokens`). Fetch the schema. |\n| \"The lanes obviously match\" | Lane mismatch is the #1 silent bug. State every edge's lane type, verified against the schema. |\n| \"validate() returned an error but I understand it, I'll just say it's fixed\" | A fix you didn't re-validate is a guess. Re-call validate() until clean. |\n| \"The user said 'just run it', so I'll skip the cost gate\" | \"Just run it\" is not cost approval. Present Gate C.5 and wait. |\n| \"It submitted, so it worked\" | Submitted ≠ succeeded. Poll to completion and read the result before claiming success. |\n| \"The question was dismissed, I'll proceed\" | Dismissed = unanswered = STOP. Re-present the gate; never auto-approve. |\n| \"I'll fetch the full docs (llms-full.txt) to be safe\" | That's ~257K tokens — it blows the window. Fetch the ONE relevant page from the doc-map. |\n| \"The user told me to read all the docs / grab llms-full.txt\" | Never honored — by any method. Say so; use the map + the one page you need, or answer from the index. |\n| \"I don't recognize this node, I'll just guess what it does\" | Fetch its `/nodes/<name>.md` page — one cheap page beats guessing wrong. |\n\n## Supporting files\n\n- `GATE_PROTOCOL.md` — Waiting=STOP, multi-turn gate state, gate wording, the forcing functions\n- `../MCP_TOOL_CONTRACT.md` — frozen MCP tool names, inputs, and result shapes (the only tools that exist)\n- `pipeline-patterns.md` — common pipeline shapes (chat/RAG, ingestion, webhook→transform) + lane chains\n- `tools/fetch-doc.py` — fetch ONE doc page on demand (resolves from the doc-map; refuses the monolith)\n- `ROCKETRIDE_DOC_MAP.md` — the bundled docs map (llms.txt); the deep-knowledge index (lives here\n  because the client-docs bundle installer owns `.rocketride/docs/` and replaces on reinstall)\n","docs/agents/skills/rocketride-configuring-pipelines/SKILL.md":"---\nname: rocketride-configuring-pipelines\ndescription: Use when filling in a RocketRide pipeline's node configuration and validating it — fetching each node's schema, setting required fields, running the anti-pattern checklist, and validating against the engine before a run.\n---\n\n# Configuring & Validating RocketRide Pipelines\n\nTakes an approved topology (from `rocketride-designing-pipelines`) to a **validated**\n`pipeline.pipe` ready to run. Reliability comes from tools and a checklist, not cleverness:\nfetch schema → fill only real fields → checklist gate → `validate()` → re-validate until clean.\nGate rules + forcing functions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## Step 1 — Configure each node (schema-driven, one at a time)\n\nFor every node in the approved topology, in order:\n\n1. **Fetch the schema** (L2): `describe_component` / `tools/fetch-node-schema.py <node>` /\n   `.rocketride/schema/<node>.json`. Never configure from memory. (Forcing function 5.) Fetch **one\n   node at a time** — never bulk-load every schema (FF#17). If you already fetched this node's schema\n   while designing (Phase 1b) this session, reuse it with `--cache-ok` (serves the cached copy with\n   no reconnect — still schema-grounded, just not re-fetched); a full re-fetch only on a cache miss.\n2. **State what the schema says** before filling: the **required** fields, any **conditional**\n   rules in prose (\"if `batch_size` set, `max_batch_wait_ms` is required\"), and the profile shape\n   for LLM/embedding/store nodes. (Forcing function 10.)\n3. **Fill only fields the schema defines.** Use `${ROCKETRIDE_*}` env references for secrets —\n   never literal keys. Secret **values** never travel through tools or the model: over MCP,\n   credentials are configured out-of-band — `list_integrations` reports per-integration readiness\n   and (with a `name`) returns concrete setup steps to relay to the user. LLM/embedding/store nodes use a profile block:\n   ```json\n   \"config\": { \"profile\": \"openai-5\", \"openai-5\": { \"apikey\": \"${ROCKETRIDE_OPENAI_KEY}\" }, \"parameters\": {} }\n   ```\n   Source nodes need the full source config, not `{}`:\n   `{ \"hideForm\": true, \"mode\": \"Source\", \"parameters\": {}, \"type\": \"<provider>\" }`.\n\n   The block above is the `<Good>` shape. The `<Bad>` shape — guessed from memory — fails validation\n   and leaks a key:\n   ```json\n   \"config\": { \"model\": \"gpt-5\", \"apikey\": \"sk-...\", \"max_tokens\": 4096 }\n   ```\n   Three bugs in one line: a **literal key** (must be `${ROCKETRIDE_*}`), **no `profile` wrapper**,\n   and **`max_tokens` is not a real field** (the schema calls it `modelTotalTokens`). Fetch the\n   schema, then copy the `<Good>` shape — never type config from memory.\n4. **Run the 9-point checklist as a gate** (full list in `PIPELINE_ANTIPATTERNS.md`). State each\n   item yes/no for this node before moving on — do not skip and claim \"applied\":\n   > Node `<id>`: 1 ext✓ 2 components-order✓ 3 literal-guid✓ 4 source-match✓ 5 unique-id✓\n   > 6 input-array✓ 7 lane-types✓ 8 acyclic/no-orphan✓ 9 ROCKETRIDE_ env✓\n\n## Step 2 — Assemble & validate (→ Gate C)\n\n1. **Assemble** the `.pipe`: `components` first (each with `id`, `provider`, `config`, and\n   `input` for non-source nodes; `control` on controlled nodes), then a **literal-GUID**\n   `project_id`, `viewport`, `version: 1`. File extension **`.pipe`**.\n2. **validate()** the whole pipeline (L3): `validate_pipeline` tool / `tools/validate-pipeline.py <file>`\n   (calls `client.validate()` → `{errors, warnings}`) / `--static` lint if no engine.\n3. **The re-validation loop** (Forcing function 11): if `errors` is non-empty, show them\n   **verbatim**, fix the offending node (loop back to Step 1 for that node — don't restart\n   design), then **call validate() again**. Repeat until `errors == []`. Never write \"validation\n   passed\" without a clean result in hand. Address warnings or explain why each is acceptable.\n4. **Gate C** is a tool gate, not a user gate — it is \"passed\" only when validate() returns zero\n   errors. Quote it: `validate(): 0 errors, K warnings`.\n\n## Step 3 — Cost approval (→ Gate C.5)\n\nBefore handing off to run, estimate cost and gate it (GATE_PROTOCOL §5):\n- Count paid/LLM nodes × expected calls × rough token cost; note if it runs on cloud compute\n  (billed to the wallet) vs the user's own dev keys locally.\n- **Gate C.5:**\n  > This run will cost ≈ $X (<basis>). Approve this run? (yes / no)\n  Then **Write `.context/GATE_STATE.md`** = `GATE C.5 | presented | status: AWAITING` (§2), and STOP\n  and wait. \"Just run it\" earlier is not cost approval. A tiny local test on the user's own key can\n  be a one-line confirm; cloud/large runs always gate.\n\nHand the validated `.pipe` to `rocketride-running-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll set apikey/model from what I remember\" | Fetch the schema; field names differ per provider (`modelTotalTokens`, profile keys). |\n| \"Required fields only; prose constraints are optional\" | Conditional rules (\"if X then Y\") are required too — state and satisfy them. |\n| \"I'll run the checklist once at the end\" | Per node, as a gate, stated yes/no. A checklist skimmed once is a checklist skipped. |\n| \"validate() erred but I fixed it in the text\" | A fix you didn't re-validate is a guess. Re-call validate() until errors == []. |\n| \"Zero errors but warnings — ship it\" | Read each warning; fix or justify. Warnings are often the real bug. |\n| \"Hardcode the key just for the test\" | Never. `${ROCKETRIDE_*}` always; literal keys leak and break substitution. |\n| \"Skip the cost gate, it's a small run\" | Present Gate C.5 regardless; let the user decide. |\n\n## Supporting files\n\n- `PIPELINE_ANTIPATTERNS.md` — the real common mistakes, the 9-point checklist, the error table\n- `tools/fetch-node-schema.py` — `get_service(name)` (live) or read `.rocketride/schema/<name>.json`\n- `tools/validate-pipeline.py` — `client.validate(pipeline)`; `--static` = local lint, no engine\n- **deep docs** — for provider-specific config nuance/profiles the schema alone doesn't explain,\n  fetch the node's doc page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"`\n  (→ `/nodes/<name>.md`). The schema gives exact fields; the page gives the why. Never `llms-full.txt`.\n",".github/copilot-instructions.md":"<!-- ROCKETRIDE:BEGIN -->\n\n# RocketRide: AI Pipeline & App Platform\n\nUse RocketRide when building AI pipelines (document processing, RAG, agents, data integration) or when building apps on the RocketRide platform (React UIs on the platform shell, often embedding pipelines).\n\n## Documentation\n\nFull docs: `.rocketride/docs/`\n\n**Read the relevant doc(s) before generating any RocketRide code.**\n\n| File                              | Read when...                                                        |\n| --------------------------------- | ------------------------------------------------------------------- |\n| ROCKETRIDE_README.md              | Starting ANY RocketRide work: the platform map, setup, task router  |\n| ROCKETRIDE_CLI.md                 | The `rocketride` command: validate, start/upload runs, store, deploy, app verbs; when to prefer it over SDK code |\n| ROCKETRIDE_CONCEPTS.md            | Early, always: workspace, connection, deploy/publish lifecycle, how apps and pipelines fit together |\n| ROCKETRIDE_PIPELINES.md           | Writing or editing a `.pipe`: format, lanes, profiles, patterns, pitfalls |\n| ROCKETRIDE_COMPONENT_REFERENCE.md | Choosing/configuring pipeline components via the catalog + schemas  |\n| ROCKETRIDE_APPS.md                | Building or modifying an app: App Builder, shell UI, manifest, deploy/publish |\n| ROCKETRIDE_UI_COMPONENTS.md       | Using a specific UI component in an app: props, wiring, snippets    |\n| ROCKETRIDE_INTEGRATIONS.md        | MCP tools, n8n, external webhooks, Telegram, mid-pipeline HTTP, CI  |\n| ROCKETRIDE_python_API.md          | Python SDK: client methods, deploy & schedules, file store, events  |\n| ROCKETRIDE_typescript_API.md      | TypeScript SDK: client methods, app-sdk, deploy & schedules, events |\n| ROCKETRIDE_OBSERVABILITY.md       | Consuming runtime events and logs, building monitoring              |\n\n## Before writing ANY RocketRide code\n\n1. Read `.rocketride/docs/ROCKETRIDE_README.md` and follow its task router for the job at hand\n2. Building a pipeline: ROCKETRIDE_CONCEPTS.md + ROCKETRIDE_PIPELINES.md + ROCKETRIDE_COMPONENT_REFERENCE.md\n3. Building an app: ROCKETRIDE_CONCEPTS.md + ROCKETRIDE_APPS.md + ROCKETRIDE_UI_COMPONENTS.md\n4. Driving either from code: NEVER invent anything — verify `client.*` method names and signatures against your language's API doc (`ROCKETRIDE_python_API.md` / `ROCKETRIDE_typescript_API.md`), and pipeline component names and config fields against `.rocketride/services-catalog.json` and `.rocketride/schema/`\n5. Two connections may exist in `.env`: `ROCKETRIDE_URI`/`ROCKETRIDE_APIKEY` (development - run/validate/iterate) and `ROCKETRIDE_DEPLOY_URI`/`ROCKETRIDE_DEPLOY_APIKEY` (deployment target - deploy/publish/schedule). Never run lifecycle verbs against the dev pair; if the DEPLOY pair is absent, no deploy target is configured - ask the user.\n6. NEW apps are created ONLY through the scaffold - agents call `client.deploy.createApp(slug, ...)` (install the client first from the workspace's own `.rocketride/client/rocketride.tgz` - the scaffold vendors it from the connected server, so it is present once the workspace has been opened against one; with no server URL known the scaffold skips vendoring and the tarball lands on the next connected open - NEVER from the npm registry); humans use the App Builder's New App wizard. Never hand-create app files. (For lifecycle operations generally, prefer the `rocketride` command; see ROCKETRIDE_CLI.md.)\n\n<!-- ROCKETRIDE:END -->\n","nodes/AGENTS.md":"# nodes/ — agent guide\n\nEvery node README (`src/nodes/<name>/README.md`) must follow the schema at\n`../docs/development/nodes/readme-schema.md`. The node's `services*.json` decides\nwhich sections are required — check your work with:\n\n```bash\npython3 ../scripts/validate-node-readme.py src/nodes/<name>\n```\n\nThe `ROCKETRIDE:GENERATED:PARAMS` region at the end of each README is\nmaintained by `nodes:docs-generate` — never edit it by hand. The\n`services.json` contract itself is documented in\n`../docs/development/nodes/services-schema.md`; testing in\n`../docs/development/nodes/testing.md`.\n","docs/agents/README.md":"# docs/agents/\n\nDocumentation written for AI coding assistants, not people.\n\n- **`context/`** — installed verbatim into a workspace's `.rocketride/docs/` by the\n  VS Code extension and by `rocketride init`. `client-docs:agent`\n  (`scripts/tasks.js` here) packs this folder — the `ROCKETRIDE_*.md` files at\n  the root and `stubs/` beneath them — into `docs.zip`, which the engine serves\n  at `GET /client/docs`. Everything in `context/` ships; nothing outside it does.\n  `stubs/` holds the per-assistant pointer files (`CLAUDE.md`, `cursor.mdc`, ...)\n  the installer writes next to a workspace's code.\n- **`skills/`** — hand-curated pipeline-building skills. Not part of the bundle;\n  installed only by an explicit skill install.\n- **`task-battery.md`** — the acceptance test for `context/`: 256 tasks a user\n  would hand a coding agent, grouped by category, with the latest doc-coverage\n  scoring pass. Run a category against an agent that has only `context/` loaded\n  when you change a doc; items it cannot complete are the gaps. Not part of the\n  bundle.\n\nThe site does not render this folder. Edit `context/` and rebuild any client\n(`./builder client-typescript:build`, `client-python:build`, `vscode:build`)\nor run `./builder client-docs:agent` to restage the bundle.\n","AGENTS.md":"# AGENTS.md\n\nContributor guide for humans and agents working in this repository. This file\nis the single source of truth for repo-wide rules — `.claude/CLAUDE.md` and\n`.cursorrules` point here.\n\n## Overview\n\nMonorepo for the RocketRide (Aparavi) data toolchain: a C++ engine\n(`packages/server/`), Python SDK and nodes (`packages/client-python/`,\n`nodes/`), a TypeScript SDK and VS Code extension (`packages/client-typescript/`,\n`apps/vscode/`), and supporting packages. `./builder` wraps builds and test\norchestration.\n\n## Where to look — task routing\n\nRead the doc for your task before writing code. Paths are repo-relative.\n\n| Task | Read |\n|---|---|\n| Use RocketRide / write integration code | `docs/agents/context/ROCKETRIDE_README.md` first, then the other `ROCKETRIDE_*` files there |\n| Build or edit a node | `docs/development/nodes/readme-schema.md` (README contract), `docs/development/nodes/services-schema.md` (services.json contract), `docs/development/nodes/index.md` (what a node is; the per-node READMEs are the catalog) |\n| Test a node | `docs/development/nodes/testing.md` |\n| Client (SDK) docs | `docs/development/clients/readme-schema.md`; sources in `docs/public/<name>/` |\n| MCP surface | `docs/public/mcp/` |\n| Engine internals | `docs/development/engine/index.md` |\n| WebSocket (5565) protocol | `docs/public/product/connect/websocket/` |\n| Crash reporting / minidumps | `docs/development/engine/crash-reporting.md` |\n| Shell apps | `docs/public/product/guides/apps/index.md` (app API), `docs/development/apps/index.md` (monorepo setup) |\n| Document a shipped app | `apps/<app>/` only (`README.md`, `docs/`, `assets/`); never a site page or spine entry. Exceptions: VS Code (`docs/docusaurus/apps/vscode/`) and App Builder (`docs/public/product/guides/apps/app-builder.md`) |\n| Builder / hooks | `docs/development/builder/reference.md` (run builds), `docs/development/builder/authoring.md` (write tasks.js), `docs/development/builder/pre-commit-hooks.md` |\n| Product docs (site spine) | `docs/public/product/` |\n\n## Common commands\n\n```bash\n./builder build                  # Build EVERYTHING (global command: expands to every module's :build — server, shell, all UIs, SDKs, vscode)\n./builder test                   # All tests\npython -m pytest <path>          # Python tests directly\npython -m ruff check <path>      # Python lint (format: ruff format)\nnpx tsc --noEmit                 # TypeScript type-check\n\n# Documentation checks\n./builder docs:validate                              # node README + client-doc schemas (also inside docs:test)\npython3 scripts/validate-node-readme.py <node-dir>   # one node (--all nodes/src/nodes for every node)\npython3 scripts/validate-client-docs.py              # client docs parity\nnode scripts/build.js docs:check                     # export drift gate (CI-enforced)\n./builder docs:build                                 # stage the docs site\n```\n\n## Conventions\n\n- **Commits**: conventional commits (`feat(scope):`, `fix(scope):`, `chore(scope):`).\n- **Branches**: `feat/RR-<ticket>-short-description`, `fix/RR-<ticket>-...`; PR base is `develop`.\n- **Python**: 3.10+, single quotes, ruff for lint/format.\n- **TypeScript**: tabs, single quotes, semicolons.\n- **Store apps**: pipelines bundled in an app for the public store use\n  catalog nodes only (the nodes that ship with the engine; see 'Catalog\n  nodes only' in `docs/agents/context/ROCKETRIDE_APPS.md`). `scaffold_node`\n  and `local_nodes` are for self-hosted engines and for nodes contributed\n  to the catalog, never for a store app.\n- **VS Code extension only**: wrap errors with `Callout.call()` (no raw\n  try/catch), throw `AppError` (never plain `Error`), log via `logger.*`\n  (never `console.log`). Docs-site theme components (`docs/docusaurus`) are\n  exempt by design.\n\n## Documentation rules\n\nHand-written docs live in the top-level `docs/` tree and are gathered into the\ndocs site by `builder docs:build`. When a change alters a public contract,\nupdate the corresponding doc in the SAME change:\n\n- Product docs (quickstart, concepts, integrations, examples, evaluate,\n  glossary, troubleshooting, cloud, self-hosting) → `docs/public/product/`.\n- Public TypeScript SDK signature → `docs/public/typescript/` (guides).\n  Generated reference under `packages/client-typescript/docs/reference/`\n  (do not edit; regenerated by `client-typescript:docs-generate`).\n- Public Python SDK signature → `docs/public/python/` (reference generated).\n- MCP protocol surface → `docs/public/mcp/`.\n- WebSocket (5565) / engine protocol surface → `docs/public/product/connect/websocket/`.\n- `.pipe` schema (`packages/client-typescript/src/client/types/pipeline.ts`) →\n  reference regenerates to `/reference/pipeline-reference` (generated — do not edit).\n- VS Code extension surface → site pages in `docs/docusaurus/apps/vscode/`; marketplace README in `apps/vscode/README.md`.\n- Any other app (`apps/<app>/`) → docs stay inside that app's folder. Per-app\n  docs are never staged into the site; App Builder and VS Code are the only\n  exceptions, and no new ones are added.\n- Contributor docs (setup, builder, engine internals, node authoring, hooks) →\n  `docs/development/`.\n- Third-party integration guides → `docs/public/product/connect/`.\n- Agent-facing docs (`ROCKETRIDE_*`) → `docs/agents/context/` (packed into the\n  `/client/docs` bundle by `./builder client-docs:agent`; see `docs/agents/README.md`).\n\n**Nodes are the exception**: node docs stay co-located at\n`nodes/src/nodes/<name>/README.md`, following\n`docs/development/nodes/readme-schema.md`. The\n`ROCKETRIDE:GENERATED:PARAMS` region is maintained by `nodes:docs-generate`\n— never edit it by hand. Validate with\n`python3 scripts/validate-node-readme.py <node-dir>`.\n\n**Package READMEs are generated committed copies**: edit\n`docs/public/<name>/README.md` (typescript, python, n8n, chat-widget; the MCP\nsource is `docs/public/mcp/stdio/README.md`),\nthen run `./builder docs:export`; never edit `packages/client-*/README.md`,\n`packages/n8n-nodes/README.md`, or `packages/chat-widget/README.md` directly.\nCI runs `./builder docs:check` to\ncatch drift. The VS Code marketplace readme is `apps/vscode/README.md`,\nowned by the extension alongside its `assets/`; the VSIX build stages it\nwith its image links rewritten to absolute URLs.\n\nProse-only edits and internal refactors that do not change a public contract\ndo not require doc updates. Treat the doc as part of the change, not a\nfollow-up. Do not create a separate docs repo. Verify with\n`builder docs:build` and `builder docs:check`.\n","docs/agents/task-battery.md":"# RocketRide User Task Battery — 256 Acceptance Questions\n\nPurpose: the acceptance test for the agent-doc rewrite. Every item is something a\nreal user would ask a coding agent to do with RocketRide. A doc file is DONE when\nan agent can complete its items from the delivered docs alone — no reading\n`shell.d.ts`, no reading platform source, no trial-and-error recovery.\n\nGrounding: the 151-node services catalog, the TypeScript client (79 client\nmethods + Account/Billing/Deploy/Log/Database sub-clients + app-sdk), the Python\nclient (~157 callables across mixins and sub-clients), the shell API surface\n(110 exports), and the App Builder lifecycle.\n\nRule of use: when a doc section is drafted, run its category here against an\nagent with ONLY the docs in context. Items it cannot complete mark the gaps.\n\n---\n\n## Doc-coverage scoring pass — executed 2026-08-20 09:39 (third pass)\n\nScored against ONLY the `CLAUDE.md` stub and the ten `ROCKETRIDE_*` files it\nreferenced (now `docs/agents/context/stubs/CLAUDE.md` and\n`docs/agents/context/`; `ROCKETRIDE_CLI.md` postdates this pass). No source\ncode, no shell.d.ts, no prior product knowledge was used. Pass history: 7.7\n(first), 9.0 (second, after UI_COMPONENTS / INTEGRATIONS / Patterns 16–29),\n9.0 (this pass — see below).\n\nChanges since the second pass: the **two-`.env`-pair credentials contract**\n(`ROCKETRIDE_URI`/`APIKEY` = development server, `ROCKETRIDE_DEPLOY_URI`/\n`APIKEY` = deployment target; absence of the deploy pair = stop and ask) in\nCONCEPTS, README, the stub, and both API docs, with mixed-topology semantics\n(deploy server's clock and env layers); the **scaffold-only rule** with three\nfront doors (`New App wizard`, `client.deploy.createApp`, `rocketride app\ncreate`, `local.<slug>` default id); **scriptable app packaging** —\n`deploy.addApp`/`add_app` (packs exactly as the App Builder: include entries,\ngitignore + baseline, 50MB/512MB caps), `deploy.verifyApp`/`verify_app`\n(local dry run), and the `rocketride app create/verify/deploy` CLI trio;\nthe **server-matched client version note**; and the **pnpm requirement** for\napp work. These land mostly on operational-correctness ground the battery\ntouches lightly, so the headline barely moves (2295 → 2307 points) — but they\nclose the last workflow gaps: scripted app deploys, dev-vs-deploy targeting,\nand hand-rolled app scaffolds.\n\nEach question's leading number is replaced by a score `[n]` on a 0–10 scale:\nhow completely and accurately the delivered docs alone answer it.\n\n| Score | Meaning |\n| --- | --- |\n| 10 | Fully answered: complete, accurate, directly actionable from the docs |\n| 7–9 | Answerable with minor gaps (a detail, an example, or an edge missing) |\n| 4–6 | Partially answered: the concept or API is present but key steps must be guessed or composed from fragments |\n| 1–3 | Barely touched: named or implied, not actionable |\n| 0 | Not covered at all |\n\n### Category summary\n\n| Category | Avg | Prev | Δ | Items |\n| --- | --- | --- | --- | --- |\n| A. Setup, connection & workspace | 8.7 | 8.1 | +0.6 | 12 |\n| B. Pipeline grammar & wiring | 9.1 | 9.1 | — | 14 |\n| C. Pipeline recipes by use case | 9.0 | 9.0 | — | 28 |\n| D. Driving pipelines from code | 8.8 | 8.8 | — | 18 |\n| E. Chat, Question & streaming | 9.1 | 9.1 | — | 8 |\n| F. Files, cloud store & templates | 8.6 | 8.6 | — | 14 |\n| G. Events, monitoring & run logs | 8.6 | 8.6 | — | 14 |\n| H. Deploying & scheduling pipelines | 9.4 | 9.3 | +0.1 | 14 |\n| I. App structure & layout | 9.6 | 9.5 | +0.1 | 14 |\n| J. App UI components | 9.8 | 9.8 | — | 16 |\n| K. App hooks, state, theming & styles | 9.5 | 9.5 | — | 12 |\n| L. App + pipeline integration | 9.2 | 9.2 | — | 10 |\n| M. App dev loop & debugging | 8.3 | 8.3 | — | 8 |\n| N. App packaging, publish, store & review | 9.3 | 9.3 | +0.1 raw | 16 |\n| O. Account, orgs, teams, keys & env | 8.8 | 8.8 | — | 12 |\n| P. Billing & plans | 7.3 | 7.3 | — | 6 |\n| Q. Dashboard & operations | 7.8 | 7.8 | — | 6 |\n| R. Database & SQL | 9.8 | 9.8 | — | 4 |\n| S. CLI | 9.4 | 9.4 | — | 8 |\n| T. MCP & external integrations | 10.0 | 10.0 | — | 6 |\n| U. Observability ingestion | 9.3 | 9.3 | — | 6 |\n| V. Performance profiling | 9.0 | 9.0 | — | 2 |\n| W. Troubleshooting | 8.1 | 8.0 | +0.1 | 8 |\n| **Overall** | **9.0** | **9.0** | **+12 pts** | **256** |\n\nItems that moved this pass: workspace setup [8→9], cloud connect/sign-in\n[6→8] (the two-pair contract removes auth-flow guesswork), API-key handling\n[8→9], dev-vs-cloud switching [7→9], headless auth [9→10], two-team configs\n[7→8] (deploy-server env-layer rule), wizard/scaffold [9→10], app-id\nreservations [8→9] (`local.*` now documented), Package-tab readiness [8→9]\n(`verifyApp` mirrors it scriptably), blank-preview diagnosis [6→7] (the\nscaffold section now names the failure symptoms and their causes in one place).\n\nRemaining items at 5 or below: store size/quota limits [2], per-user vs\nper-app storage path conventions [4], `.pipe` git/team sharing [5], invoking a\nsingle node capability without a pipeline [5], what counts against billing\nquota [5]. Weakest categories: P. Billing & plans (7.3) and Q. Dashboard &\noperations (7.8).\n\n---\n\n## A. Setup, connection & workspace — avg 8.7\n\n| Score | Question |\n| --- | --- |\n| 9 | Set up a brand-new RocketRide workspace from an empty folder — what goes where? |\n| 8 | Connect my workspace to RocketRide Cloud and sign in. |\n| 8 | Connect to my self-hosted engine at ws://myserver:5565 instead of the cloud. |\n| 9 | Where does my API key come from, and how do I keep it out of git? |\n| 9 | Switch my project between a local dev server and the cloud without editing code. |\n| 10 | Authenticate a headless script with an API key instead of a browser login. |\n| 7 | Log in from a TypeScript app with OAuth/PKCE and log out cleanly. |\n| 9 | Reconnect automatically when the server drops, and surface connection state in my app. |\n| 10 | Use environment-variable substitution (`${ROCKETRIDE_APIKEY}`) inside a `.pipe` file. |\n| 9 | What is the `.rocketride/` folder in my workspace, and which parts may I edit? |\n| 9 | Check what server version and features I'm connected to. |\n| 7 | Write a check script that proves my project's connection and pipeline are healthy. |\n\n## B. Pipeline grammar & wiring — avg 9.1\n\n| Score | Question |\n| --- | --- |\n| 10 | Create my first `.pipe` file by hand — the minimal valid structure and required field order. |\n| 10 | What are lanes, and how do I know which two nodes can connect? |\n| 9 | Wire one parser's output into two different consumers. |\n| 10 | What's the difference between a source node and a processing node — and which sources exist? |\n| 8 | Configure a node with profiles vs inline config — when is each right? |\n| 10 | Override one field of a built-in profile without redefining the whole thing. |\n| 10 | Discover every available node and its config options from my workspace. |\n| 9 | Read a node's schema to learn required vs optional config fields. |\n| 10 | Attach a tool node to an agent — why doesn't that connection use lanes? |\n| 10 | Build a sub-pipeline invoked as a tool (`tool_pipe`) and the ownership rules it must obey. |\n| 10 | Why is my sub-pipeline rejected as \"reachable from two control roots\"? |\n| 7 | Position and hide nodes with the `ui` block — does layout affect execution? |\n| 9 | Validate a pipeline without running it, and interpret the validation errors. |\n| 5 | Version my `.pipe` files in git and share them with my team. |\n\n## C. Pipeline recipes by use case — avg 9.0\n\n| Score | Question |\n| --- | --- |\n| 9 | Drop any file — PDF, DOCX, image, audio, video — and get its text back. |\n| 8 | Classic RAG: chunk documents, embed, store in Qdrant, answer questions with citations. |\n| 7 | Swap the vector store: the same RAG on Pinecone, Milvus, Weaviate, or Chroma. |\n| 10 | Use Postgres as my vector store instead of a dedicated engine. |\n| 9 | OCR scanned documents and photos of documents. |\n| 10 | Parse with LlamaParse, Landing.AI, or Reducto instead of the built-in parser — when and why? |\n| 8 | Transcribe audio files and answer questions about what was said. |\n| 10 | Text-to-speech: generate spoken audio with ElevenLabs or OpenAI TTS and return it. |\n| 10 | Grab frames from a video and describe them with a vision LLM. |\n| 10 | Video understanding and search with TwelveLabs. |\n| 9 | Detect and anonymize PII before anything hits storage. |\n| 7 | Extract named entities (people, orgs, places) from documents. |\n| 7 | Summarize long contracts and extract their key facts. |\n| 10 | Extract structured JSON from invoices and validate it against a schema. |\n| 10 | Put guardrails on LLM output before it reaches the user. |\n| 9 | A chat pipeline with conversation memory — internal vs persistent memory. |\n| 8 | Long-term user memory across sessions with mem0. |\n| 8 | Swap the LLM provider (OpenAI → Anthropic → Gemini → local Ollama) with a one-line change. |\n| 8 | Which model should I use for quality vs speed vs cost — current guidance. |\n| 10 | Vision Q&A over images (GPT-4o vision, Gemini, Mistral, Ollama). |\n| 10 | Batch image cleanup: background removal and thumbnail generation. |\n| 10 | Pose estimation or depth estimation over an image set. |\n| 7 | Build a knowledge graph from documents (Neo4j / FalkorDB) and query it. |\n| 10 | GraphRAG with Cognee. |\n| 10 | A web-research pipeline: Exa/Tavily search plus Firecrawl scraping, synthesized by an LLM. |\n| 10 | A crew of agents: CrewAI manager delegating to subagents. |\n| 7 | agent_rocketride vs CrewAI vs LangChain vs LlamaIndex vs DeepAgent — pick one and wire it. |\n| 10 | An agent that can safely run Python code as a tool. |\n\n## D. Driving pipelines from code — avg 8.8\n\n| Score | Question |\n| --- | --- |\n| 9 | Run a `.pipe` from a Python script and wait for the result. |\n| 10 | Run a pipeline object from a browser app, where file paths don't exist. |\n| 9 | Reuse an already-running pipeline instead of starting a new one (`useExisting`) — exact semantics. |\n| 10 | Pass runtime arguments into a pipeline (`args`). |\n| 9 | Set a TTL so an idle pipeline shuts itself down. |\n| 9 | Send a text payload into a running pipeline and receive the response. |\n| 8 | Upload many files with bounded concurrency and per-file progress. |\n| 10 | Stream data chunks into a running pipeline (DataPipe open/write/close). |\n| 9 | Poll task status and distinguish queued vs running vs finished vs failed. |\n| 9 | Get a running task's token and reattach to it from another process. |\n| 9 | Retrieve the exact pipeline definition a running task is executing. |\n| 9 | Restart a task with a modified pipeline. |\n| 9 | Terminate a running pipeline cleanly. |\n| 6 | Process a large document set concurrently — threads and throughput guidance. |\n| 5 | Invoke a single node's capability directly without authoring a pipeline. |\n| 10 | List available services and fetch one service's definition programmatically. |\n| 8 | Handle the SDK exception hierarchy and retry transient failures sensibly. |\n| 10 | Why does my long CPU-bound loop kill the websocket after ~60 seconds, and how do I fix it? |\n\n## E. Chat, Question & streaming — avg 9.1\n\n| Score | Question |\n| --- | --- |\n| 10 | Ask a one-shot question to a chat pipeline and print the answer. |\n| 10 | Stream tokens live (SSE) into my UI as the model generates. |\n| 9 | Build a multi-part Question with system instructions. |\n| 10 | Get the answer back as structured JSON (`expectJson`). |\n| 8 | Restrict which documents the chat searches with a filter. |\n| 8 | Keep conversation context across multiple chat calls to the same task. |\n| 9 | Route follow-up questions from different browser tabs to the same running chat. |\n| 9 | `response_answers` vs `response_text` — which do I wire, and why? |\n\n## F. Files, cloud store & templates — avg 8.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Write pipeline results to the cloud file store and read them back later. |\n| 10 | List a store directory and stat individual files. |\n| 10 | Read and write JSON objects to the store without manual serialization. |\n| 10 | Fetch many store files in one round trip. |\n| 10 | Rename, move, and delete files; create and remove directories. |\n| 10 | Get a download URL I can hand to a browser. |\n| 9 | Stream a large store file without loading it all in memory. |\n| 9 | Save a pipeline as a reusable template; list, apply, and delete templates. |\n| 10 | Where do dropper-uploaded files land, and how do I fetch them afterward? |\n| 10 | Return a generated artifact (say, TTS audio) to my app's user as a download. |\n| 2 | What are the store's size and quota limits? |\n| 9 | Share store files between my app and my pipelines. |\n| 4 | Organize storage per-user vs per-app — path conventions. |\n| 7 | Clean up old artifacts programmatically. |\n\n## G. Events, monitoring & run logs — avg 8.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Subscribe to every event from one task. |\n| 9 | Monitor all my tasks at once, dashboard-style. |\n| 10 | Choose event types (TASK/SUMMARY/FLOW/OUTPUT/SSE/DETAIL) — what each carries. |\n| 9 | Stop monitoring cleanly when my component unmounts. |\n| 9 | Migrate off the deprecated `setEvents` to monitors. |\n| 8 | Identify my client connection — why and when it matters. |\n| 8 | Show a live pipeline-progress graph from per-node FLOW events. |\n| 9 | Record a run and replay it later (the run-log DVR). |\n| 9 | List and delete recorded run logs. |\n| 9 | Seek inside a recorded run — chapters and segments. |\n| 8 | Choose a pipeline trace level — detail vs cost. |\n| 8 | Capture full debug output for one run. |\n| 9 | Update my app's UI from platform events — shell events vs task monitors, which for what? |\n| 6 | Alert me (or call my webhook) when any pipeline errors. |\n\n## H. Deploying & scheduling pipelines — avg 9.4\n\n| Score | Question |\n| --- | --- |\n| 10 | Deploy a pipeline to the server so it runs without my machine. |\n| 10 | Deploy v2 of a pipeline, list versions, and see what each contains. |\n| 10 | Point my team at version N; roll back to N−1 without rebuilding. |\n| 10 | Run a deployed pipeline on demand. |\n| 10 | Schedule a deployed pipeline to run Monday/Wednesday/Friday from 08:00 to 15:00. |\n| 10 | Pause a schedule for the holidays and resume it — without losing the cron. |\n| 10 | Set per-source trace and debug settings that ride every scheduled run. |\n| 8 | See the run history of a deployment. |\n| 7 | Preview what a deployed source will do before running it. |\n| 10 | Disable, enable, and remove a deployment. |\n| 8 | Deploy the same pipeline for two teams with different configurations. |\n| 9 | What is a sourceId — schedule two sources of one project independently. |\n| 9 | Download the artifact of a deployed version. |\n| 10 | Guarantee a scheduled run always ends by a wall-clock time. |\n\n## I. App structure & layout — avg 9.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Create a new app with the App Builder wizard — what the templates give me. |\n| 10 | The anatomy of a scaffolded app — what each of the ten files is for. |\n| 10 | Every `appManifest` field, explained — id, publisher, categories, mode, authenticated, and the rest. |\n| 9 | Choose my app id — why `<developer>.<name>` matters and what's reserved. |\n| 10 | Add a sidebar to my app with AppLayout. |\n| 9 | Turn on the bottom status bar and know what it shows. |\n| 10 | Put my own content in the status bar. |\n| 9 | A multi-view app: sidebar navigation that switches content panes. |\n| 10 | A file-editor app using the Documents system — tabs, explorer, split views. |\n| 10 | Persist my app's UI state across reloads. |\n| 9 | Ship and render my app's icon correctly. |\n| 9 | What are my app's props (`isConnected`, `identity`) and when do they change? |\n| 10 | Expose a second component from my app for others to embed. |\n| 10 | Embed a component from another app into mine. |\n\n## J. App UI components — avg 9.8\n\n| Score | Question |\n| --- | --- |\n| 10 | What stock components exist, and where do I browse them? |\n| 10 | A data table with sorting, filtering, and pagination over live data. |\n| 8 | A card-grid view with a filter strip as an alternative to the table. |\n| 10 | A full chat UI wired to a chat pipeline. |\n| 10 | Render LLM/markdown output safely — including images and charts. |\n| 10 | A file drop zone — styling, multiple files, accepted types. |\n| 10 | Modals, confirmations, and save-file dialogs. |\n| 10 | Form inputs: text fields, toggles, chips. |\n| 9 | Buttons — variants, sizes, disabled states, icon buttons. |\n| 10 | Status displays: badges, dots, banners, empty states. |\n| 10 | Page scaffolding: cards, sections, label/value rows. |\n| 10 | A content header with title and action buttons. |\n| 10 | Tabbed interfaces and slide-in detail panels. |\n| 10 | Sidebar menus and the announcements footer. |\n| 10 | Rich grid cells: badges, buttons, avatars, monospace — and a custom actions column. |\n| 10 | Remember each user's grid layout and column choices. |\n\n## K. App hooks, state, theming & styles — avg 9.5\n\n| Score | Question |\n| --- | --- |\n| 10 | Get the connected client and connection state in any component. |\n| 10 | React to platform events (login, org change, theme change) with typed handlers. |\n| 9 | Read the signed-in user and offer a working logout. |\n| 10 | Style with theme tokens so dark and light modes both look right. |\n| 10 | What's in `commonStyles`, and when do I use it versus my own styles? |\n| 10 | The styling rules of the platform — what's idiomatic, what's forbidden. |\n| 10 | React to a theme change at runtime. |\n| 10 | Debounce a search box; poll a value on an interval. |\n| 10 | Position a custom popup that closes on outside click. |\n| 9 | Respond to the sidebar collapsing. |\n| 6 | Handle running inside VS Code vs the browser — what differs. |\n| 10 | Embed external web content in an iframe that follows the platform theme. |\n\n## L. App + pipeline integration — avg 9.2\n\n| Score | Question |\n| --- | --- |\n| 10 | Import a `.pipe` file into my app's code and start it (including the type declaration). |\n| 9 | Start the pipeline on connect, keep its token in state, and survive hot reload. |\n| 9 | Send dropped files through a pipeline and render the returned text. |\n| 8 | Show live progress while the pipeline processes a file. |\n| 10 | Stream a chat answer token-by-token into my chat component. |\n| 7 | Run two different pipelines in one app and keep their tokens straight. |\n| 9 | Ship pipelines inside the app package — how packaging embeds them, and why they can't be scheduled. |\n| 10 | One shared pipeline task for all users vs a task per user — how to choose and implement. |\n| 10 | Show a useful error state when the pipeline fails mid-run. |\n| 10 | Trigger a server-deployed pipeline from my app instead of embedding one. |\n\n## M. App dev loop & debugging — avg 8.3\n\n| Score | Question |\n| --- | --- |\n| 10 | Run my app live with watch — what triggers rebuild, reinstall, restart. |\n| 9 | Preview at phone/tablet/desktop sizes; zoom and fit. |\n| 9 | See my `console.log` output and runtime errors while developing. |\n| 6 | Debug my app with breakpoints from VS Code. |\n| 8 | The preview shows stale code — why, and the reload rules. |\n| 7 | Test my app in dark, light, and VS Code themes before shipping. |\n| 9 | Preview as my signed-in self vs as an anonymous user. |\n| 8 | Use the component gallery: live demos, knobs, and copyable snippets. |\n\n## N. App packaging, publish, store & review — avg 9.3\n\n| Score | Question |\n| --- | --- |\n| 9 | Make the Package tab fully green — identity, icon, README, include paths. |\n| 10 | Include a shared workspace folder in my app's package. |\n| 9 | Deploy even with type errors — the typecheck waiver and its consequences. |\n| 10 | Deploy my app to the server — what the server build does with my source. |\n| 8 | Publish to myself and run it from the app rail. |\n| 9 | Publish to my team. |\n| 9 | Submit my app to the public store — what review involves. |\n| 9 | Track review status and reply to reviewer feedback. |\n| 10 | Withdraw a submission. |\n| 9 | My server build failed — find the build log and fix the cause. |\n| 10 | Ship an update: deploy v4, repoint the audience, roll back if it breaks. |\n| 10 | Where is my app live right now — every rung, version, and state at a glance. |\n| 9 | Register my developer id — namespace ownership rules for app ids. |\n| 8 | Write the store listing: description, categories, and pricing plans. |\n| 10 | Take a published app down — disable vs remove. |\n| 10 | Test a specific published version in the browser via the version override. |\n\n## O. Account, orgs, teams, keys & env — avg 8.8\n\n| Score | Question |\n| --- | --- |\n| 9 | See my profile and which organization I'm operating in. |\n| 8 | Switch organizations — what changes when I do. |\n| 10 | Invite someone to my org; remove someone who left. |\n| 9 | Create teams and use them as deploy audiences. |\n| 10 | Create an API key for CI; revoke it later. |\n| 9 | Set the org's OpenAI key once so every member's pipelines use it. |\n| 9 | Layered environment secrets — org vs team vs user precedence. |\n| 9 | Use server-side secrets in pipelines with no local `.env` at all. |\n| 10 | What can members do vs admins? |\n| 6 | A key leaked — rotate it everywhere, fast. |\n| 9 | Read account info inside my app and react when it changes. |\n| 7 | Make my app require sign-in (`authenticated: true`) — what the user experiences. |\n\n## P. Billing & plans — avg 7.3\n\n| Score | Question |\n| --- | --- |\n| 8 | See my current plan and usage. |\n| 8 | Upgrade my plan from inside the product. |\n| 5 | What counts against my quota — tasks, tokens, storage? |\n| 9 | Define paid plans for my own store app. |\n| 6 | How do my app's subscribers get billed, and how are entitlements enforced? |\n| 8 | Manage invoices and payment methods. |\n\n## Q. Dashboard & operations — avg 7.8\n\n| Score | Question |\n| --- | --- |\n| 7 | What's running right now across my org? |\n| 9 | Who's connected to my server? |\n| 8 | Kill a stuck task from an ops script. |\n| 8 | Watch fleet-wide activity with the dashboard event feed. |\n| 9 | Build a health/usage panel into my own admin app. |\n| 6 | How long is task history retained, and where do old runs go? |\n\n## R. Database & SQL — avg 9.8\n\n| Score | Question |\n| --- | --- |\n| 10 | Run SQL from my app through the platform's database client. |\n| 10 | Wrap multiple statements in a transaction with commit/rollback. |\n| 9 | Query pipeline results that a `db_postgres` node stored. |\n| 10 | When do I use a relational store vs a vector store vs a graph store? |\n\n## S. CLI — avg 9.4\n\n| Score | Question |\n| --- | --- |\n| 10 | Start a pipeline from the terminal. |\n| 10 | Upload files to a running task from the terminal. |\n| 10 | Check status and stop a task from the terminal. |\n| 9 | List my running tasks from the terminal. |\n| 10 | Browse the cloud store from the terminal. |\n| 7 | Upload, download, and delete store files from the terminal. |\n| 9 | Follow a task's events from the terminal. |\n| 10 | Use the CLI in CI to smoke-test a deployed pipeline. |\n\n## T. MCP & external integrations — avg 10.0\n\n| Score | Question |\n| --- | --- |\n| 10 | Expose my pipelines as MCP tools so Claude/Cursor can call them. |\n| 10 | Control which pipelines become tools and how they're described to the model. |\n| 10 | Call RocketRide from an n8n workflow. |\n| 10 | Trigger a pipeline from an external system's webhook — including auth. |\n| 10 | Put a Telegram bot in front of a pipeline. |\n| 10 | Call my own HTTP API from the middle of a pipeline. |\n\n## U. Observability ingestion — avg 9.3\n\n| Score | Question |\n| --- | --- |\n| 10 | Build an external service that ingests all platform events. |\n| 9 | Authenticate a headless monitoring daemon. |\n| 9 | Which event payload schemas are stable enough to parse? |\n| 9 | Capture run lifecycle reliably across my daemon's reconnects. |\n| 9 | Live ingestion vs DVR replay — when is each the right source? |\n| 10 | Feed events into my own metrics database — the recommended ingester shape. |\n\n## V. Performance profiling — avg 9.0\n\n| Score | Question |\n| --- | --- |\n| 9 | Profile the server-side performance of my pipeline. |\n| 9 | Read the profile tree and find the slow node. |\n\n## W. Troubleshooting — avg 8.1\n\n| Score | Question |\n| --- | --- |\n| 7 | \"Component not found\" when opening my pipeline — diagnose it. |\n| 9 | Two nodes won't connect — read the lane mismatch and fix the wiring. |\n| 8 | The pipeline starts but nothing happens — the source-node config checklist. |\n| 7 | My app preview is a blank screen — the module-federation checklist. |\n| 9 | I deployed v3 but users still see v2 — version vs binding, untangled. |\n| 10 | Login loops forever in my app preview — the auth checklist. |\n| 8 | Events stop arriving after a few minutes — keepalive and blocking causes. |\n| 7 | A scheduled run failed overnight — which log has the answer, build vs run. |\n",".claude/CLAUDE.md":"@../AGENTS.md\n","packages/chat-widget/README.md":"# chat-widget Documentation\n\nPath: `packages/chat-widget/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/README.md)","packages/chat-widget/package.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/package.json)","packages/chat-widget/tsconfig.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.json)","packages/chat-widget/tsconfig.test.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.test.json)","packages/chat-widget/tsconfig.types.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.types.json)","packages/client-mcp/README.md":"# client-mcp Documentation\n\nPath: `packages/client-mcp/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/README.md)","packages/client-python/README.md":"# client-python Documentation\n\nPath: `packages/client-python/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/README.md)","packages/client-typescript/README.md":"# client-typescript Documentation\n\nPath: `packages/client-typescript/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/README.md)","packages/client-typescript/package.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/package.json)","packages/client-typescript/tsconfig.cjs.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cjs.json)","packages/client-typescript/tsconfig.cli.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cli.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cli.json)","packages/client-typescript/tsconfig.contract.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.contract.json)","packages/client-typescript/tsconfig.esm.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.esm.json)","packages/client-typescript/tsconfig.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.json)","packages/client-typescript/tsconfig.types.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.types.json)","packages/n8n-nodes/CHANGELOG.md":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/CHANGELOG.md)","packages/n8n-nodes/README.md":"# n8n-nodes Documentation\n\nPath: `packages/n8n-nodes/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/README.md)","packages/n8n-nodes/package-lock.json":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package-lock.json)","packages/n8n-nodes/package.json":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package.json)","packages/n8n-nodes/tsconfig.json":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/tsconfig.json)","packages/server/vcpkg.json":"# Server Skill\n\nPath: `packages/server/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/vcpkg.json)","packages/shell/package.json":"# Shell Skill\n\nPath: `packages/shell/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/package.json)","packages/shell/tsconfig.contract.json":"# Shell Skill\n\nPath: `packages/shell/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.contract.json)","packages/shell/tsconfig.json":"# Shell Skill\n\nPath: `packages/shell/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.json)","tools/contract_checks/README.md":"# contract_checks Documentation\n\nPath: `tools/contract_checks/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/contract_checks/README.md)","tools/dependabot-smoke/README.md":"# dependabot-smoke Documentation\n\nPath: `tools/dependabot-smoke/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/dependabot-smoke/README.md)","tools/sync_models/README.md":"# sync_models Documentation\n\nPath: `tools/sync_models/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/README.md)","docs/agents/context/ROCKETRIDE_APPS.md":"# Subagent: rocketride_apps\n\nPath: `docs/agents/context/ROCKETRIDE_APPS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_APPS.md)","docs/agents/context/ROCKETRIDE_CLI.md":"# Subagent: rocketride_cli\n\nPath: `docs/agents/context/ROCKETRIDE_CLI.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CLI.md)","docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md":"# Subagent: rocketride_component_reference\n\nPath: `docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md)","docs/agents/context/ROCKETRIDE_CONCEPTS.md":"# Subagent: rocketride_concepts\n\nPath: `docs/agents/context/ROCKETRIDE_CONCEPTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CONCEPTS.md)","docs/agents/context/ROCKETRIDE_INTEGRATIONS.md":"# Subagent: rocketride_integrations\n\nPath: `docs/agents/context/ROCKETRIDE_INTEGRATIONS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_INTEGRATIONS.md)","docs/agents/context/ROCKETRIDE_OBSERVABILITY.md":"# Subagent: rocketride_observability\n\nPath: `docs/agents/context/ROCKETRIDE_OBSERVABILITY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_OBSERVABILITY.md)","docs/agents/context/ROCKETRIDE_PIPELINES.md":"# Subagent: rocketride_pipelines\n\nPath: `docs/agents/context/ROCKETRIDE_PIPELINES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_PIPELINES.md)","docs/agents/context/ROCKETRIDE_README.md":"# Subagent: rocketride_readme\n\nPath: `docs/agents/context/ROCKETRIDE_README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_README.md)","docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md":"# Subagent: rocketride_ui_components\n\nPath: `docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md)","docs/agents/context/ROCKETRIDE_python_API.md":"# Subagent: rocketride_python_api\n\nPath: `docs/agents/context/ROCKETRIDE_python_API.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_python_API.md)","docs/agents/context/ROCKETRIDE_typescript_API.md":"# Subagent: rocketride_typescript_api\n\nPath: `docs/agents/context/ROCKETRIDE_typescript_API.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_typescript_API.md)","docs/agents/skills/MCP_TOOL_CONTRACT.md":"# Subagent: mcp_tool_contract\n\nPath: `docs/agents/skills/MCP_TOOL_CONTRACT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/MCP_TOOL_CONTRACT.md)","docs/agents/skills/README.md":"# Subagent: readme\n\nPath: `docs/agents/skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/README.md)","packages/client-init/typescript/README.md":"# typescript Documentation\n\nPath: `packages/client-init/typescript/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/README.md)","packages/client-init/typescript/package.json":"# Typescript Skill\n\nPath: `packages/client-init/typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/package.json)","packages/n8n-nodes/examples/run-pipeline.workflow.json":"# Examples Skill\n\nPath: `packages/n8n-nodes/examples/run-pipeline.workflow.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/examples/run-pipeline.workflow.json)","tools/sync_models/src/sync_models.config.json":"# Src Skill\n\nPath: `tools/sync_models/src/sync_models.config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/src/sync_models.config.json)","docs/agents/context/stubs/AGENTS.md":"# Subagent: agents\n\nPath: `docs/agents/context/stubs/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/AGENTS.md)","docs/agents/context/stubs/CLAUDE.md":"# Subagent: claude\n\nPath: `docs/agents/context/stubs/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/CLAUDE.md)","docs/agents/context/stubs/claude-code.md":"# Subagent: claude-code\n\nPath: `docs/agents/context/stubs/claude-code.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/claude-code.md)","docs/agents/context/stubs/copilot-instructions.md":"# Subagent: copilot-instructions\n\nPath: `docs/agents/context/stubs/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/copilot-instructions.md)","docs/agents/context/stubs/windsurf.md":"# Subagent: windsurf\n\nPath: `docs/agents/context/stubs/windsurf.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/windsurf.md)","docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md":"# Subagent: gate_protocol\n\nPath: `docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md)","docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md":"# Subagent: rocketride_doc_map\n\nPath: `docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md)","docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md":"# Subagent: pipeline-patterns\n\nPath: `docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md)","docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md":"# Subagent: pipeline_antipatterns\n\nPath: `docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md)","docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md":"# Subagent: error_table\n\nPath: `docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md)","docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json":"# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json)","docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json":"# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json)","docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md":"# Subagent: pipeline_rules_summary\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md)","packages/client-python/tests/fixtures/otel_bridge_events.json":"# Fixtures Skill\n\nPath: `packages/client-python/tests/fixtures/otel_bridge_events.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/tests/fixtures/otel_bridge_events.json)","packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json":"# RocketRide Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json)","packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json":"# RocketRideInboundTrigger Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json)","packages/server/test/pipelines/advrag-chat.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/advrag-chat.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-chat.json)","packages/server/test/pipelines/advrag-ingest.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/advrag-ingest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-ingest.json)","packages/server/test/pipelines/chat-ingest.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/chat-ingest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ingest.json)","packages/server/test/pipelines/chat-ui.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/chat-ui.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ui.json)","packages/server/test/pipelines/denodo-catalog.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/denodo-catalog.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-catalog.json)","packages/server/test/pipelines/denodo-direct.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/denodo-direct.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-direct.json)","packages/server/test/pipelines/ocr.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/ocr.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr.json)","packages/server/test/pipelines/ocr_thumbnail.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/ocr_thumbnail.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr_thumbnail.json)","packages/server/test/pipelines/parse.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/parse.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/parse.json)","packages/server/test/pipelines/question-answer.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/question-answer.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/question-answer.json)","packages/server/test/pipelines/remote.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/remote.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/remote.json)","packages/server/test/pipelines/search.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/search.json)","packages/server/test/pipelines/semantic-search.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/semantic-search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/semantic-search.json)","packages/server/test/pipelines/webhook.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/webhook.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/webhook.json)","packages/shell/public/themes/dark.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/dark.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/dark.json)","packages/shell/public/themes/gray.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/gray.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/gray.json)","packages/shell/public/themes/light.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/light.json)","packages/shell/public/themes/rocketride-light.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/rocketride-light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride-light.json)","packages/shell/public/themes/rocketride.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/rocketride.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride.json)","packages/shell/public/themes/visual-studio.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/visual-studio.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/visual-studio.json)","docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md":"# Subagent: failure_scenarios\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md)","docs/agents/skills/rocketride-designing-pipelines/examples/README.md":"# Subagent: readme\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/README.md)","nodes/src/nodes/webhook/tools/README.md":"# tools Documentation\n\nPath: `nodes/src/nodes/webhook/tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/nodes/src/nodes/webhook/tools/README.md)","packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json":"# Pipelines Skill\n\nPath: `packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json)","packages/server/cmake/ports/cpprestsdk/README.md":"# cpprestsdk Documentation\n\nPath: `packages/server/cmake/ports/cpprestsdk/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/README.md)","packages/server/cmake/ports/cpprestsdk/vcpkg.json":"# Cpprestsdk Skill\n\nPath: `packages/server/cmake/ports/cpprestsdk/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/vcpkg.json)","packages/server/cmake/ports/fastpfor/README.md":"# fastpfor Documentation\n\nPath: `packages/server/cmake/ports/fastpfor/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/README.md)","packages/server/cmake/ports/fastpfor/vcpkg.json":"# Fastpfor Skill\n\nPath: `packages/server/cmake/ports/fastpfor/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/vcpkg.json)","packages/server/cmake/ports/libuuid/vcpkg.json":"# Libuuid Skill\n\nPath: `packages/server/cmake/ports/libuuid/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/libuuid/vcpkg.json)","packages/server/cmake/ports/replxx/README.md":"# replxx Documentation\n\nPath: `packages/server/cmake/ports/replxx/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/replxx/README.md)","packages/server/cmake/ports/tinyxml2/README.md":"# tinyxml2 Documentation\n\nPath: `packages/server/cmake/ports/tinyxml2/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/tinyxml2/README.md)","packages/ai/src/ai/modules/mcp/credentials.json":"# Mcp Skill\n\nPath: `packages/ai/src/ai/modules/mcp/credentials.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/credentials.json)","packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md":"# site-packages Documentation\n\nPath: `packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md)","packages/ai/src/ai/common/graph/age/README.md":"# age Documentation\n\nPath: `packages/ai/src/ai/common/graph/age/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/graph/age/README.md)","packages/ai/src/ai/common/models/ocr/README.md":"# ocr Documentation\n\nPath: `packages/ai/src/ai/common/models/ocr/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/models/ocr/README.md)","packages/ai/src/ai/modules/mcp/apps/package.json":"# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/package.json)","packages/ai/src/ai/modules/mcp/apps/tsconfig.json":"# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/tsconfig.json)"},"files":{".cursorrules":"# RocketRide — AI assistant instructions\n\nThe canonical contributor guide is `AGENTS.md` at the repository root. Read it\nfirst; it routes every task (integration code, nodes, clients, MCP, engine) to\nthe right documentation under `docs/`.\n\nBefore writing any RocketRide integration code, read\n`docs/agents/context/ROCKETRIDE_README.md` and the other `ROCKETRIDE_*` files in\n`docs/agents/context/`. If a request is ambiguous, stop and ask — do not guess.\n","docs/agents/skills/rocketride-designing-pipelines/SKILL.md":"---\nname: rocketride-designing-pipelines\ndescription: Use when choosing which RocketRide nodes a task needs and wiring them into a pipeline graph — exploring the node catalog, selecting nodes by archetype, and connecting them with typed lanes into a valid acyclic DAG.\n---\n\n# Designing RocketRide Pipelines\n\nTurns a plain-language request into an approved, lane-correct DAG — **before** any node is\nconfigured. Two outputs, two gates: a node selection (Gate A) and a wired topology (Gate B).\nThe gate rules and forcing functions are in\n`../rocketride-building-pipelines/GATE_PROTOCOL.md` — they apply here.\n\nYou work from the **node index** (L1): `LAYER1_NODE_INDEX.json` (bundled), or the live\n`get_services()` / `.rocketride/services-catalog.json`. Each entry is `name · classType · lanes ·\ninvoke`. The index is enough to **select and wire**; it carries no config fields (that's Phase 2).\nThe bundled index is reconciled against this repo's node corpus (`nodes/src/nodes/`), so it can\ndrift from the set a particular live engine actually has registered.\nThe live MCP `list_components` tool lists names/summaries only (**no lanes**) and hides nodes whose\nintegration isn't configured — use it to check availability, but **wire from the bundled index +\nper-node schemas**. If a node you expect is missing from it, check `list_integrations` first.\n\n## Phase 1a — Discover (→ Gate A)\n\n1. **Restate the task** in one line: the input data, the wanted output. (\"Input: user questions.\n   Output: answers grounded in uploaded PDFs.\")\n2. **Explore archetypes exhaustively.** Group the index by `classType` and walk every archetype\n   that could plausibly contribute. Don't stop at the first match. The archetypes:\n   `source` (chat/webhook/dropper/filesys/telegram) · `data`/parse (parse/llamaparse/reducto/\n   landing_ai_parse/landing_ai_extract) · `text` (extract_data/ner/anonymize_text/dictionary/prompt/summarization) ·\n   `preprocessor` · `image` · `audio` · `video` · `embedding` · `llm` (14 providers) · `store`\n   (vector DBs) · `database` (db_*) · `agent` · `tool` (tool_*) · `memory` · `rerank` · `search` ·\n   `guard` · `infrastructure`/`target`/`response_*` (terminals).\n   For each relevant archetype, list the candidate nodes you see in the index.\n3. **Select**, citing each: `Found in index: <name> · classType=[…] · lanes={…}`. A pipeline needs\n   a resolvable **source** (one Source-mode node, or several with `source` naming the one that\n   starts the run, in the file or at launch) and a **terminal** (`response_*` for a reply; a store / `db_*` for\n   ingestion). Pull the right converters from the lane cheat-sheet in\n   `../rocketride-building-pipelines/pipeline-patterns.md`.\n4. **Gate A** — end with the count line and the gate:\n   > Archetypes explored (N). Selected nodes (M): <name · role>, … — all cited from the index.\n   > Approve these M nodes? (yes / adjust / cancel)\n   Then **use the Write tool to write `.context/GATE_STATE.md`** = `GATE A | presented | status:\n   AWAITING` (GATE_PROTOCOL §2 — so the gate survives a context reset), and **STOP**. (See §1.)\n\n## Phase 1b — Design the DAG (→ Gate B)\n\nOnly after Gate A is approved.\n\n1. **Fetch each selected node's schema** (L2 — `describe_component` / `tools/` shim in\n   `../rocketride-configuring-pipelines/tools/fetch-node-schema.py` / `.rocketride/schema/<n>.json`).\n   You need the real **lane signatures** here, not the index summary — wiring from the summary is\n   the most common silent bug. (Forcing function 8.) **Lazily — only for the nodes you selected at\n   Gate A; never `ls`/`cat`/glob the whole `.rocketride/schema/` dir or \"pull every schema up front\"\n   (FF#17). Select from the index first; fetch only the few schemas you need.**\n2. **Wire the lanes.** Each non-source node gets `input: [{lane, from}]`. State **every edge** with\n   its lane type: `chat_1 → embedding_1 (lane: questions)`. The output lane of `from` must be a\n   real output of that node and a valid input of the target. If types don't match, insert a\n   converter (cheat-sheet) — don't force it.\n   - `<Bad>`: `parse_1 → store_1 (lane: text)`, wiring parsed text straight into a vector store.\n     It passes the eye test but fails validation: a store ingests `documents` that already carry\n     embedding vectors, and `text` is not one of its lanes.\n   - `<Good>`: `parse_1 → preprocessor_langchain_1 (lane: text)`, then\n     `preprocessor_langchain_1 → embedding_1 (lane: documents)`, then `embedding_1 → store_1 (lane: documents)`.\n3. **Apply the structural rules** (`PIPELINE_RULES_SUMMARY.md`): a resolvable source (rule 1); acyclic (no\n   loops); no orphans (every node reachable from the source); embedding **before** any store;\n   agents wire their `llm`/`tool`/`memory` via the **control plane** (the controlled node carries\n   `control: [{classType, from: <agent>}]`, the agent does not) and must meet each `invoke`\n   min/max from the index.\n4. **Draw it** (Mermaid or ASCII) and **Gate B**:\n   > <diagram>. Edges (K): <node → node (lane: type)>, … — all lane-checked against schemas.\n   > Approve this topology? (yes / adjust / cancel)\n   Then **Write `.context/GATE_STATE.md`** = `GATE B | presented | status: AWAITING` (§2), and STOP.\n\nHand the approved selection + topology to `rocketride-configuring-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll list the obvious nodes and move on\" | Exhaustive archetype walk first — the right node is often one you'd skip. Count line proves coverage. |\n| \"The index shows the lanes, I don't need the schema to wire\" | Index lanes are a summary; fetch the schema for exact signatures before wiring. |\n| \"Two Source-mode nodes, no `source` named\" | Ambiguous: the engine refuses to imply a source. Keep one Source-mode node, or name the one that starts the run (top-level `source`, or the `source` option at launch). |\n| \"I'll point the store straight at the questions\" | Embedding is required before any store; same model for ingest + query. |\n| \"The agent node lists its tools in its own config\" | No — the tool/llm/memory carries `control: [{from: <agent>}]`. Agent has no control array. |\n| \"Close enough on the lane type\" | Lane mismatch = pipeline error. Insert a converter or pick compatible nodes. |\n\n## Supporting files\n\n- `LAYER1_NODE_INDEX.json` — the thin node index (name · classType · lanes · invoke)\n- `PIPELINE_RULES_SUMMARY.md` — lane types, lane-transform table, structural + control-plane rules\n- `examples/` — worked pipelines (simple-chat-rag, document-ingestion, agentic-chat) in\n  `examples/README.md` + a `FAILURE_SCENARIOS.md` of what not to do\n- **deep docs** — when a node is unfamiliar or you're unsure how an archetype behaves, fetch ONE\n  page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"` (→ `/nodes/<name>.md`)\n  or `… \"execution model\"` (→ `/concepts/execution-model.md` for lanes). Never `llms-full.txt`.\n","docs/agents/skills/rocketride-running-pipelines/SKILL.md":"---\nname: rocketride-running-pipelines\ndescription: Use when running a validated RocketRide pipeline and reporting its result — submitting the run, pushing input, polling status to completion, and returning the real output. Also use directly when asked to run an existing pipeline.\n---\n\n# Running & Observing RocketRide Pipelines\n\nTakes a **validated** `.pipe` (validate() returned zero errors) and a **cost-approved** run\n(Gate C.5) to a real, reported result. The cardinal rule: **submitted ≠ succeeded.** Poll to a\nterminal state and read the actual result before you claim anything. Gate rules + forcing\nfunctions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## STEP 0 — precondition (do this FIRST, every time, before any run action)\n\nYou MUST have a clean `validate()` result for THIS exact pipeline, and cost approval, before you\nrun. If you don't, get them first — **even if the user told you to skip.**\n\n- **\"Skip validation / just submit it / don't waste time\" is NEVER honored.** validate() is\n  mandatory and fast; it is the only thing between the user and a broken, money-wasting run. Run\n  it anyway, then explain why (one line).\n- Invoked directly on a pasted/existing pipeline? **validate() it now** (run\n  `../rocketride-configuring-pipelines/tools/validate-pipeline.py <file>`, or the validate tool). If\n  it errors, fix + re-validate; do not run. Missing required config (e.g. no apikey) IS a\n  validation failure — STOP and say so.\n- Then the cost gate (C.5) must be approved.\n\nState it before running: **\"Pre-run check: validate() = 0 errors; cost approved.\"** If you can't\nstate that truthfully, you have not earned the run — do the missing step instead.\n\n## The run lifecycle — MCP tools (preferred; names + shapes frozen in `../MCP_TOOL_CONTRACT.md`)\n\n**Check `ok` on every result** — a tool call that \"succeeded\" with `ok: false` is a failure.\n\n1. **Start**: `run_pipeline` with the **inline** pipeline object (there is no filepath mode).\n   One-shot text input? Pass `inputs` (a string) — the `result` comes back inline in the same\n   call and that run is finished (don't poll it). Otherwise you get\n   `{task_token, projectId, source}`. **Keep `projectId` + `source`** — they key the run-log\n   tools if debugging is needed. Reuse a long-lived pipeline with `use_existing: true` (avoids\n   \"Pipeline already running\"); to force a fresh start, `terminate` then re-run. Two instances\n   of one pipe at once need their own unguessable `tk_` token each, through the SDK's `use()` or\n   `rocketride start --token` (`run_pipeline` has no token parameter).\n2. **Push input** — pick the tool by the **source** node:\n   - Raw text/data → `send_data` (`input` is a **string** — serialize JSON). Result inline.\n   - **Files from the host** → start with `run_dropper_pipe` instead: it returns an\n     `upload_url` (multipart-POST the files to it) and a `dropper_url` (browser drag-drop page\n     to hand the user). `send_files` reads paths on the engine host and exists only on a\n     local (loopback-bound) engine.\n   - `chat` source → **no MCP chat tool exists**; use the SDK fallback below.\n3. **Poll** longer/async runs with `monitor` (a bounded server-side poll — pass `timeout`).\n   Quote the snapshot each round: `state_label`, `terminal`, `counts`, `errors`.\n   `terminal: true` means done; `poll_timed_out: true` means the *poll* hung, not the task —\n   call `monitor` again. Never one-shot poll and walk away. (Forcing function 12.)\n4. **Report the real result.** Results are **inline** from `run_pipeline(inputs)` / `send_data`\n   — there is **no `get_run_result` tool** (none exists, none is planned; never invent it).\n   Read the response by its result key (default lane key — `answers`, `text`, …; check\n   `result_types` for the actual mapping). On failure, report the error + which node, then hand\n   `projectId`/`source` to `rocketride-debugging-pipelines` (its evidence is the `log_*` tools).\n5. **Clean up** — `terminate` any task you started and no longer need; started-and-abandoned\n   tasks run until their TTL.\n\n## SDK fallback (no MCP tools wired, or a chat-source pipeline)\n\n1. **Start**: `result = await client.use(filepath=\"x.pipe\")` → `token = result[\"token\"]`\n   (`use_existing=True` to reuse; `terminate(token)` then `use()` to force fresh).\n2. **Push input**: `chat` source → `await client.chat(token=token, question=q)`; raw data →\n   `await client.send(token, data)`; files → `await client.send_files(files, token)`. The result\n   comes back **inline** (a `PIPELINE_RESULT`) — no separate `get_result()`.\n3. **Poll**: loop `await client.get_task_status(token)` to a terminal state (5=COMPLETED /\n   6=CANCELLED), stating the status each step, `await asyncio.sleep(1)` between polls.\n4. **Report** as in step 4 above. 5. **Clean up** — `await client.disconnect()` (or\n   `async with`). Start a pipeline once and reuse it; don't reconnect per request.\n\n**NEVER block the async event loop** (the #1 runtime failure). No `input()`, `time.sleep`,\n`requests.get`, `readFileSync` inside the async flow — they freeze the websocket keepalive and the\nconnection drops (~60s) with `Connection closed` / `Connection closed unexpectedly`. Use async\nequivalents. Secrets stay in `${ROCKETRIDE_*}` env vars (loaded from `.env`), never in code.\n\n## Gate D — after a successful run (optional, menu)\n> Run succeeded. Result: <summary>. What next? (save to cloud / publish as an app / nothing / debug)\nOnly act on an explicit choice. Mapping: save to cloud → `save_template`; publish →\n`deploy_add` then `deploy_to_team` (manage later with `deploy_list`/`deploy_status`/`deploy_set_schedule`/\n`deploy_disable`/`deploy_remove`).\nSaving / publishing is billable / public — treat like an irreversible action (Waiting = STOP).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"The user said skip validation, so I'll just submit\" | Never honored. validate() is mandatory and cheap — run it first, every time, no matter the pressure. |\n| \"run_pipeline/use() returned a token, so it ran\" | That only started it. Push input and poll to a terminal state. |\n| \"I'll fetch the output with get_run_result\" | No such tool exists. Results come inline from `run_pipeline(inputs)`/`send_data`; run evidence is the `log_*` tools. |\n| \"I'll poll once and report 'in progress'\" | Poll in a loop to completion; report the final result, not a snapshot. |\n| \"I'll read input() for the question\" | Blocking I/O kills the event loop. Use async input / pass the question in. |\n| \"I'll hardcode the key to test quickly\" | `${ROCKETRIDE_*}` always. |\n| \"It failed; I'll retry silently a few times\" | Report the failure and ask / hand to debugging; don't burn money on silent retries. |\n| \"Save to cloud since they'll probably want it\" | Gate D is a choice. Don't publish/bill without an explicit yes. |\n\n## Supporting files\n- **deep docs** — for exact SDK semantics (use/send/chat/get_task_status, async patterns), fetch\n  ONE page: `../rocketride-building-pipelines/tools/fetch-doc.py \"python\"` (→ `/develop/python.md`)\n  or `… \"use method\"` (→ `/develop/typescript/methods/use.md`). Never `llms-full.txt`.\n","docs/agents/skills/rocketride-debugging-pipelines/SKILL.md":"---\nname: rocketride-debugging-pipelines\ndescription: Use when a RocketRide pipeline run failed, errored, or produced wrong/empty output, and you need to find the failing node and fix it. Reads run status and execution traces, diagnoses the cause, and routes back to design or configuration. Also use directly when asked to debug a run.\n---\n\n# Debugging RocketRide Pipelines\n\nDiagnose, don't guess. A failed run has a real cause in the status/trace; find it, then route the\nfix to the right phase. No re-running until the cause is identified and the fix is validated.\n\n## Procedure\n\n1. **Read the status.** MCP: `monitor(task_token)` → quote `state_label`, `errors[]`,\n   `warnings[]`, `counts` verbatim. SDK: `get_task_status(token)` → `state`, `errors[]`,\n   `warnings[]`, `exitCode`, `exitMessage`, `failedCount`. Don't paraphrase error messages.\n2. **Read the trace.** MCP — the run-log (DVR) tools work for past *and* live runs, keyed by the\n   `projectId` + `source` returned by `run_pipeline`/`run_dropper_pipe` (never the task token):\n   `log_chapters` to find the run → `log_read` for paged events (≤200/page; follow the cursor) →\n   `log_traces` to list per-object traces → `log_trace` for one object's full per-node\n   `enter`/`leave` with `lane`, `data`, `result`, `error`. Retention: 7 days dev / 30 days\n   deploy. A run started with `pipelineTraceLevel=\"none\"` has chapters/console but **empty\n   traces** — re-run with `\"summary\"`/`\"full\"` for flow evidence. SDK fallback: the\n   `apaevt_flow` / `_trace` events in the response. Either way, find the **first** node whose op\n   shows an error or whose output is empty/wrong — that's the failure point. Downstream errors\n   are usually consequences.\n3. **Classify the cause** (see `ERROR_TABLE.md`):\n   - **Config** — bad/missing field, wrong API key, wrong model name → fix in\n     `rocketride-configuring-pipelines` (re-fetch schema, re-validate).\n   - **Wiring/lane** — lane mismatch, missing converter, wrong source method → fix in\n     `rocketride-designing-pipelines` (re-wire), then re-configure + re-validate.\n   - **Runtime** — event-loop blocked (`Connection closed`/timeout), `Pipeline already running`,\n     blocking I/O → fix the run code in `rocketride-running-pipelines`.\n   - **Data** — empty/garbage input, wrong response key (`KeyError`) → check input + `result_types`.\n4. **Propose a specific fix** tied to the evidence: \"Node `llm_1` failed: `Invalid API key`. The\n   `${ROCKETRIDE_OPENAI_KEY}` env var is unset / wrong. Fix: set it, re-validate, re-run.\" Route to\n   the owning phase. **Do not re-run until the fix is made and `validate()` is clean again.**\n\n## Common diagnoses (full table in ERROR_TABLE.md)\n- `Connection closed` / `Connection closed unexpectedly` → **event loop blocked by sync I/O** (most\n  common runtime failure) — fix the run code, not the pipeline.\n- `The service <provider> was not found` → misspelled `provider`; check the index.\n- `input has unknown lane` (validate) → lane mismatch; add a converter or pick compatible nodes.\n- `KeyError: '<key>'` → response key vs `laneName` mismatch; read `result_types`.\n- `Pipeline is already running.` → `use_existing=True` or `terminate()` first; a second instance of\n  the same pipe needs its own unguessable `tk_` token (SDK `use()` or `rocketride start --token`; not MCP).\n- `Invalid API key` / a `project_id` rejection → config fix.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll just re-run, maybe it works\" | Find the cause first; blind re-runs cost money and teach nothing. |\n| \"The last node errored, fix that node\" | The **first** failing node in the trace is usually the cause; later errors cascade. |\n| \"Connection dropped — the engine is flaky\" | Almost always a blocked event loop (sync I/O in async code), not the engine. |\n| \"I'll paraphrase the error\" | Quote it verbatim — the exact message maps to the exact fix. |\n| \"Fixed it, re-running\" | Re-validate() after any fix before re-running. |\n\n## Supporting files\n- `ERROR_TABLE.md` — error message → cause → owning phase → fix\n- **deep docs** — for failure modes the table doesn't cover, fetch ONE page:\n  `../rocketride-building-pipelines/tools/fetch-doc.py \"error handling\"`\n  (→ `/concepts/error-handling.md`) or `… \"observability\"` (→ `/protocols/websocket/observability.md`).\n  Never `llms-full.txt`.\n","docs/agents/skills/rocketride-building-pipelines/SKILL.md":"---\nname: rocketride-building-pipelines\ndescription: Use when asked to build, run, or validate a RocketRide pipeline (e.g. \"build me a chatbot that answers from my docs\", \"make a pipeline that summarizes uploaded PDFs\", \"run this pipeline\"), or whenever turning a plain-language data/AI task into a working RocketRide pipeline.\n---\n\n# Building RocketRide Pipelines\n\nMaster workflow: a plain-language request in, a **valid, running** RocketRide pipeline out.\nFollow the phases in order. Each phase is owned by a REQUIRED SUB-SKILL. The gates are **hard\nstops** — present to the user and wait.\n\n```\nTHE IRON LAW OF GATES — WAITING = STOP:\nWAITING FOR A HUMAN'S ANSWER MEANS ENDING YOUR TURN.\nA dismissed / headless / unanswered gate is a STOP — NEVER an approval. No exceptions.\n```\n\n**Real-world impact:** this one rule took gate blast-through from 32–45% to **0/24** on Haiku — the\ncheap model behaves like an expensive one because it holds the protocol, not because it is smart.\n\n**Waiting means ENDING YOUR TURN.** A dismissed question dialog, an unanswered question, or a\nnon-interactive/headless session is a STOP, never an approval. No exceptions:\n- Don't \"proceed with the recommended defaults\" — a recommendation is not a confirmation.\n- Don't treat silence, dismissal, or the absence of a user as consent.\n- Don't later write \"the user approved this\" unless a human actually answered.\nIf nobody can answer, deliver the gate brief as your final message and stop — an unbuilt\npipeline costs nothing; an unapproved run wastes the user's money and compute.\n\nFull gate rules, the deterministic gate wording, and the forcing functions live in\n`GATE_PROTOCOL.md`. **Read it before your first gate.** Multi-turn gate state lives in\n`.context/GATE_STATE.md` (in the current project): **write it (Write tool) whenever you present a\ngate, and read it FIRST on every re-engagement** — a fresh session or a vague \"continue\" must\nre-present an `AWAITING` gate, never auto-approve. See GATE_PROTOCOL §2.\n\n## How reliability works here (read this once)\n\nYou do **not** need to be smart to build a correct pipeline. You need to follow the process and\nlet the tools be the judge:\n- **Never invent a node.** Every node you name must be cited from the node index (Phase 0). If\n  it isn't in the index, it doesn't exist — STOP and tell the user.\n- **Never invent a config field.** Fetch the node's schema before configuring it.\n- **Never claim \"valid\" or \"ran\" without the tool saying so.** `validate()` is the compiler;\n  the run status/result is the proof. Quote them; don't paraphrase.\n- **Count what you list.** Every multi-item list ends with a count line so omissions are visible.\n\n## The tool/data layer (three layers + run)\n\nEach step has the same fallback ladder — use the **first** option your environment supports:\n\n| Need | Layer | Preferred (MCP tool) | Fallback (bundled shim, uses SDK) | Offline |\n|---|---|---|---|---|\n| List/select nodes | L1 | `list_components` (names/summaries only — **wire** from the bundled index) | `tools/generate-index.py` | bundled `LAYER1_NODE_INDEX.json` |\n| One node's config schema | L2 | `describe_component` | `tools/fetch-node-schema.py <node>` | `.rocketride/schema/<node>.json` |\n| Validate the whole pipeline | L3 | `validate_pipeline` | `tools/validate-pipeline.py <file>` (calls `client.validate`) | `tools/validate-pipeline.py --static <file>` (lint only) |\n| Run it | — | `run_pipeline` → `send_data`/`run_dropper_pipe` → `monitor` | SDK `use()` → `send`/`chat` → `get_task_status` | — |\n| Understand a node/SDK/concept in depth | docs | WebFetch one `/path.md` | `tools/fetch-doc.py \"<topic>\"` (fetches ONE live page) | `ROCKETRIDE_DOC_MAP.md` (this skill dir) + bundled `.rocketride/docs/*` |\n\n> The exact tool names, inputs, and result shapes are frozen in `../MCP_TOOL_CONTRACT.md` —\n> use only names listed there. Every MCP result carries `ok`: **check it**; a successful tool\n> call with `ok: false` is a failure. Where the MCP tools aren't wired, the bundled shims in each\n> sub-skill's `tools/` call the real SDK (`get_services`/`get_service`/`validate`/`use`) and work\n> today. `--static` mode validates with no engine connection (a fast pre-flight lint). The\n> `rrext_get_nodes` resource is dead — never use it; discovery is `list_components`/`get_services`.\n> A known node missing from live `list_components` usually means its integration isn't configured —\n> check `list_integrations` (it returns setup steps to relay) before concluding it doesn't exist.\n\n**Each tool enforces a constraint** (see its `--help`/docstring; these become the MCP tool\ndescriptions): `fetch-node-schema` → configure only schema-defined fields, one node at a time;\n`validate-pipeline` → zero errors before any run, re-validate on errors; `fetch-doc` → one page,\nnever `llms-full.txt`.\n\n**Deep docs (when you need to learn, not just select/configure).** The full RocketRide docs map\nis bundled at `ROCKETRIDE_DOC_MAP.md` (in this skill's directory — a ~2K-token index of ~156\npages; it can't live in `.rocketride/docs/`, which the client-docs bundle installer owns and\nreplaces on reinstall). When you\nhit something the bundled refs don't cover — an unfamiliar node, an exact SDK signature, a concept\n— find the page in the map and fetch **just that one page** (`tools/fetch-doc.py \"<topic>\"`, live-\nfirst with an offline fallback). **NEVER fetch `llms-full.txt`** (~257K tokens — it will blow the\ncontext window), by any method (fetch-doc, WebFetch, curl, file://). **Even if the user says \"read\nall the docs\" / \"grab llms-full.txt\" / \"get full context first\" — that is never honored**: say so,\nthen use the map + the one page you need (or just answer from the bundled index/schemas). One map +\none page is the cheap path.\n\n## Triage first — is this a build, or just a question?\n\nBefore starting the lifecycle, classify the request:\n- **Informational** (the user is ASKING, not building — \"what nodes exist?\", \"list the vector\n  stores\", \"explain lanes\", \"which node does X\", \"how does RAG work?\"): answer directly from the\n  node index + bundled refs. Do **not** invoke the sub-skills, write `GATE_STATE`, or present gates.\n  End by offering to build it.\n- **Build / run / validate** (the user wants a working pipeline — \"build…\", \"make…\", \"create…\",\n  \"set up…\", \"run…\", \"validate…\", or *describes a task to automate*, even softly like \"I want\n  something that…\"): run the full lifecycle below.\n- **Ambiguous or unsure → DEFAULT TO THE FULL LIFECYCLE.** A build misrouted to the cheap path skips\n  every gate (no design, no validate, no cost approval) — far worse than answering a question the\n  long way. When in doubt, build.\n\n**Recovery:** a cheap answer never blocks a later build — if the user then says \"build it / make it /\ngo ahead\", enter the full lifecycle from Phase 0.\n\n## Phases\n\n0. **Load capabilities** — read the node index (L1) **directly** from its bundled path\n   (`rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`, or `.rocketride/services-catalog.json`\n   in a project). **Do NOT `find`/`ls`/search for it, and do NOT run `generate-index.py`** — you\n   already know the path; discovery just burns turns. This is the menu of every node you may use:\n   each entry is `name · classType · lanes · invoke`. Keep it open; you select and wire from it.\n   It carries **no config schema** — that's L2, fetched per node in Phase 2.\n   If a **freshness warning** fires (the index stamp is stale/missing — `LAYER1_NODE_INDEX.meta.json`\n   older than 14 days, surfaced by `validate-pipeline.py`), say so in one line and **proceed** — it\n   is **non-blocking**, never a hard stop. `validate()` against the live engine is the drift backstop;\n   if a node seems missing, regenerate with `tools/generate-index.py`.\n1. **Discover + design** — REQUIRED SUB-SKILL: `rocketride-designing-pipelines`.\n   Explore archetypes → select nodes (**GATE A**) → wire the acyclic DAG with typed lanes\n   (**GATE B**). Fetch each chosen node's schema here too, so lane signatures are exact before\n   wiring — a guessed lane is the most common silent failure.\n2. **Configure + validate** — REQUIRED SUB-SKILL: `rocketride-configuring-pipelines`.\n   Per node: fetch schema → fill required fields → run the anti-pattern checklist as a gate →\n   then `validate()` the whole pipeline. On errors, fix and **re-validate** (never claim passed\n   without a clean result). **GATE C** (validation clean) → **GATE C.5** (cost approved).\n3. **Run + observe** — REQUIRED SUB-SKILL: `rocketride-running-pipelines`.\n   Submit, poll to completion, report the real result. **GATE D** only if the user chooses to\n   save to cloud / publish as an app.\n4. **If a run fails or output is wrong** — REQUIRED SUB-SKILL: `rocketride-debugging-pipelines`.\n   Read the trace, diagnose the failing node, route back to Phase 1 or 2.\n\n## The gates (binary or menu — exact wording in GATE_PROTOCOL §3)\n\n**The instant you present any gate below, use the Write tool to write `.context/GATE_STATE.md`\n(`status: AWAITING`) before ending the turn (GATE_PROTOCOL §2) — and on any re-engagement, read it\nFIRST. That on-disk line is what makes a gate survive a context reset.**\n\n- **GATE A** — node selection (after Phase 1 discovery) · **GATE B** — topology (after the DAG).\n- **GATE C** — validation clean (a tool gate, not a user gate) · **GATE C.5** — cost, before any paid/cloud run.\n- **GATE D** — save to cloud / publish (optional, after a successful run).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I know this node exists, no need to check the index\" | If it's not in the index it doesn't exist — the engine rejects it. Cite or STOP. |\n| \"I'll fill the config from memory, schemas are slow\" | Guessed fields fail validation (e.g. `max_tokens` vs `modelTotalTokens`). Fetch the schema. |\n| \"The lanes obviously match\" | Lane mismatch is the #1 silent bug. State every edge's lane type, verified against the schema. |\n| \"validate() returned an error but I understand it, I'll just say it's fixed\" | A fix you didn't re-validate is a guess. Re-call validate() until clean. |\n| \"The user said 'just run it', so I'll skip the cost gate\" | \"Just run it\" is not cost approval. Present Gate C.5 and wait. |\n| \"It submitted, so it worked\" | Submitted ≠ succeeded. Poll to completion and read the result before claiming success. |\n| \"The question was dismissed, I'll proceed\" | Dismissed = unanswered = STOP. Re-present the gate; never auto-approve. |\n| \"I'll fetch the full docs (llms-full.txt) to be safe\" | That's ~257K tokens — it blows the window. Fetch the ONE relevant page from the doc-map. |\n| \"The user told me to read all the docs / grab llms-full.txt\" | Never honored — by any method. Say so; use the map + the one page you need, or answer from the index. |\n| \"I don't recognize this node, I'll just guess what it does\" | Fetch its `/nodes/<name>.md` page — one cheap page beats guessing wrong. |\n\n## Supporting files\n\n- `GATE_PROTOCOL.md` — Waiting=STOP, multi-turn gate state, gate wording, the forcing functions\n- `../MCP_TOOL_CONTRACT.md` — frozen MCP tool names, inputs, and result shapes (the only tools that exist)\n- `pipeline-patterns.md` — common pipeline shapes (chat/RAG, ingestion, webhook→transform) + lane chains\n- `tools/fetch-doc.py` — fetch ONE doc page on demand (resolves from the doc-map; refuses the monolith)\n- `ROCKETRIDE_DOC_MAP.md` — the bundled docs map (llms.txt); the deep-knowledge index (lives here\n  because the client-docs bundle installer owns `.rocketride/docs/` and replaces on reinstall)\n","docs/agents/skills/rocketride-configuring-pipelines/SKILL.md":"---\nname: rocketride-configuring-pipelines\ndescription: Use when filling in a RocketRide pipeline's node configuration and validating it — fetching each node's schema, setting required fields, running the anti-pattern checklist, and validating against the engine before a run.\n---\n\n# Configuring & Validating RocketRide Pipelines\n\nTakes an approved topology (from `rocketride-designing-pipelines`) to a **validated**\n`pipeline.pipe` ready to run. Reliability comes from tools and a checklist, not cleverness:\nfetch schema → fill only real fields → checklist gate → `validate()` → re-validate until clean.\nGate rules + forcing functions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## Step 1 — Configure each node (schema-driven, one at a time)\n\nFor every node in the approved topology, in order:\n\n1. **Fetch the schema** (L2): `describe_component` / `tools/fetch-node-schema.py <node>` /\n   `.rocketride/schema/<node>.json`. Never configure from memory. (Forcing function 5.) Fetch **one\n   node at a time** — never bulk-load every schema (FF#17). If you already fetched this node's schema\n   while designing (Phase 1b) this session, reuse it with `--cache-ok` (serves the cached copy with\n   no reconnect — still schema-grounded, just not re-fetched); a full re-fetch only on a cache miss.\n2. **State what the schema says** before filling: the **required** fields, any **conditional**\n   rules in prose (\"if `batch_size` set, `max_batch_wait_ms` is required\"), and the profile shape\n   for LLM/embedding/store nodes. (Forcing function 10.)\n3. **Fill only fields the schema defines.** Use `${ROCKETRIDE_*}` env references for secrets —\n   never literal keys. Secret **values** never travel through tools or the model: over MCP,\n   credentials are configured out-of-band — `list_integrations` reports per-integration readiness\n   and (with a `name`) returns concrete setup steps to relay to the user. LLM/embedding/store nodes use a profile block:\n   ```json\n   \"config\": { \"profile\": \"openai-5\", \"openai-5\": { \"apikey\": \"${ROCKETRIDE_OPENAI_KEY}\" }, \"parameters\": {} }\n   ```\n   Source nodes need the full source config, not `{}`:\n   `{ \"hideForm\": true, \"mode\": \"Source\", \"parameters\": {}, \"type\": \"<provider>\" }`.\n\n   The block above is the `<Good>` shape. The `<Bad>` shape — guessed from memory — fails validation\n   and leaks a key:\n   ```json\n   \"config\": { \"model\": \"gpt-5\", \"apikey\": \"sk-...\", \"max_tokens\": 4096 }\n   ```\n   Three bugs in one line: a **literal key** (must be `${ROCKETRIDE_*}`), **no `profile` wrapper**,\n   and **`max_tokens` is not a real field** (the schema calls it `modelTotalTokens`). Fetch the\n   schema, then copy the `<Good>` shape — never type config from memory.\n4. **Run the 9-point checklist as a gate** (full list in `PIPELINE_ANTIPATTERNS.md`). State each\n   item yes/no for this node before moving on — do not skip and claim \"applied\":\n   > Node `<id>`: 1 ext✓ 2 components-order✓ 3 literal-guid✓ 4 source-match✓ 5 unique-id✓\n   > 6 input-array✓ 7 lane-types✓ 8 acyclic/no-orphan✓ 9 ROCKETRIDE_ env✓\n\n## Step 2 — Assemble & validate (→ Gate C)\n\n1. **Assemble** the `.pipe`: `components` first (each with `id`, `provider`, `config`, and\n   `input` for non-source nodes; `control` on controlled nodes), then a **literal-GUID**\n   `project_id`, `viewport`, `version: 1`. File extension **`.pipe`**.\n2. **validate()** the whole pipeline (L3): `validate_pipeline` tool / `tools/validate-pipeline.py <file>`\n   (calls `client.validate()` → `{errors, warnings}`) / `--static` lint if no engine.\n3. **The re-validation loop** (Forcing function 11): if `errors` is non-empty, show them\n   **verbatim**, fix the offending node (loop back to Step 1 for that node — don't restart\n   design), then **call validate() again**. Repeat until `errors == []`. Never write \"validation\n   passed\" without a clean result in hand. Address warnings or explain why each is acceptable.\n4. **Gate C** is a tool gate, not a user gate — it is \"passed\" only when validate() returns zero\n   errors. Quote it: `validate(): 0 errors, K warnings`.\n\n## Step 3 — Cost approval (→ Gate C.5)\n\nBefore handing off to run, estimate cost and gate it (GATE_PROTOCOL §5):\n- Count paid/LLM nodes × expected calls × rough token cost; note if it runs on cloud compute\n  (billed to the wallet) vs the user's own dev keys locally.\n- **Gate C.5:**\n  > This run will cost ≈ $X (<basis>). Approve this run? (yes / no)\n  Then **Write `.context/GATE_STATE.md`** = `GATE C.5 | presented | status: AWAITING` (§2), and STOP\n  and wait. \"Just run it\" earlier is not cost approval. A tiny local test on the user's own key can\n  be a one-line confirm; cloud/large runs always gate.\n\nHand the validated `.pipe` to `rocketride-running-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll set apikey/model from what I remember\" | Fetch the schema; field names differ per provider (`modelTotalTokens`, profile keys). |\n| \"Required fields only; prose constraints are optional\" | Conditional rules (\"if X then Y\") are required too — state and satisfy them. |\n| \"I'll run the checklist once at the end\" | Per node, as a gate, stated yes/no. A checklist skimmed once is a checklist skipped. |\n| \"validate() erred but I fixed it in the text\" | A fix you didn't re-validate is a guess. Re-call validate() until errors == []. |\n| \"Zero errors but warnings — ship it\" | Read each warning; fix or justify. Warnings are often the real bug. |\n| \"Hardcode the key just for the test\" | Never. `${ROCKETRIDE_*}` always; literal keys leak and break substitution. |\n| \"Skip the cost gate, it's a small run\" | Present Gate C.5 regardless; let the user decide. |\n\n## Supporting files\n\n- `PIPELINE_ANTIPATTERNS.md` — the real common mistakes, the 9-point checklist, the error table\n- `tools/fetch-node-schema.py` — `get_service(name)` (live) or read `.rocketride/schema/<name>.json`\n- `tools/validate-pipeline.py` — `client.validate(pipeline)`; `--static` = local lint, no engine\n- **deep docs** — for provider-specific config nuance/profiles the schema alone doesn't explain,\n  fetch the node's doc page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"`\n  (→ `/nodes/<name>.md`). The schema gives exact fields; the page gives the why. Never `llms-full.txt`.\n",".github/copilot-instructions.md":"<!-- ROCKETRIDE:BEGIN -->\n\n# RocketRide: AI Pipeline & App Platform\n\nUse RocketRide when building AI pipelines (document processing, RAG, agents, data integration) or when building apps on the RocketRide platform (React UIs on the platform shell, often embedding pipelines).\n\n## Documentation\n\nFull docs: `.rocketride/docs/`\n\n**Read the relevant doc(s) before generating any RocketRide code.**\n\n| File                              | Read when...                                                        |\n| --------------------------------- | ------------------------------------------------------------------- |\n| ROCKETRIDE_README.md              | Starting ANY RocketRide work: the platform map, setup, task router  |\n| ROCKETRIDE_CLI.md                 | The `rocketride` command: validate, start/upload runs, store, deploy, app verbs; when to prefer it over SDK code |\n| ROCKETRIDE_CONCEPTS.md            | Early, always: workspace, connection, deploy/publish lifecycle, how apps and pipelines fit together |\n| ROCKETRIDE_PIPELINES.md           | Writing or editing a `.pipe`: format, lanes, profiles, patterns, pitfalls |\n| ROCKETRIDE_COMPONENT_REFERENCE.md | Choosing/configuring pipeline components via the catalog + schemas  |\n| ROCKETRIDE_APPS.md                | Building or modifying an app: App Builder, shell UI, manifest, deploy/publish |\n| ROCKETRIDE_UI_COMPONENTS.md       | Using a specific UI component in an app: props, wiring, snippets    |\n| ROCKETRIDE_INTEGRATIONS.md        | MCP tools, n8n, external webhooks, Telegram, mid-pipeline HTTP, CI  |\n| ROCKETRIDE_python_API.md          | Python SDK: client methods, deploy & schedules, file store, events  |\n| ROCKETRIDE_typescript_API.md      | TypeScript SDK: client methods, app-sdk, deploy & schedules, events |\n| ROCKETRIDE_OBSERVABILITY.md       | Consuming runtime events and logs, building monitoring              |\n\n## Before writing ANY RocketRide code\n\n1. Read `.rocketride/docs/ROCKETRIDE_README.md` and follow its task router for the job at hand\n2. Building a pipeline: ROCKETRIDE_CONCEPTS.md + ROCKETRIDE_PIPELINES.md + ROCKETRIDE_COMPONENT_REFERENCE.md\n3. Building an app: ROCKETRIDE_CONCEPTS.md + ROCKETRIDE_APPS.md + ROCKETRIDE_UI_COMPONENTS.md\n4. Driving either from code: NEVER invent anything — verify `client.*` method names and signatures against your language's API doc (`ROCKETRIDE_python_API.md` / `ROCKETRIDE_typescript_API.md`), and pipeline component names and config fields against `.rocketride/services-catalog.json` and `.rocketride/schema/`\n5. Two connections may exist in `.env`: `ROCKETRIDE_URI`/`ROCKETRIDE_APIKEY` (development - run/validate/iterate) and `ROCKETRIDE_DEPLOY_URI`/`ROCKETRIDE_DEPLOY_APIKEY` (deployment target - deploy/publish/schedule). Never run lifecycle verbs against the dev pair; if the DEPLOY pair is absent, no deploy target is configured - ask the user.\n6. NEW apps are created ONLY through the scaffold - agents call `client.deploy.createApp(slug, ...)` (install the client first from the workspace's own `.rocketride/client/rocketride.tgz` - the scaffold vendors it from the connected server, so it is present once the workspace has been opened against one; with no server URL known the scaffold skips vendoring and the tarball lands on the next connected open - NEVER from the npm registry); humans use the App Builder's New App wizard. Never hand-create app files. (For lifecycle operations generally, prefer the `rocketride` command; see ROCKETRIDE_CLI.md.)\n\n<!-- ROCKETRIDE:END -->\n","nodes/AGENTS.md":"# nodes/ — agent guide\n\nEvery node README (`src/nodes/<name>/README.md`) must follow the schema at\n`../docs/development/nodes/readme-schema.md`. The node's `services*.json` decides\nwhich sections are required — check your work with:\n\n```bash\npython3 ../scripts/validate-node-readme.py src/nodes/<name>\n```\n\nThe `ROCKETRIDE:GENERATED:PARAMS` region at the end of each README is\nmaintained by `nodes:docs-generate` — never edit it by hand. The\n`services.json` contract itself is documented in\n`../docs/development/nodes/services-schema.md`; testing in\n`../docs/development/nodes/testing.md`.\n","docs/agents/README.md":"# docs/agents/\n\nDocumentation written for AI coding assistants, not people.\n\n- **`context/`** — installed verbatim into a workspace's `.rocketride/docs/` by the\n  VS Code extension and by `rocketride init`. `client-docs:agent`\n  (`scripts/tasks.js` here) packs this folder — the `ROCKETRIDE_*.md` files at\n  the root and `stubs/` beneath them — into `docs.zip`, which the engine serves\n  at `GET /client/docs`. Everything in `context/` ships; nothing outside it does.\n  `stubs/` holds the per-assistant pointer files (`CLAUDE.md`, `cursor.mdc`, ...)\n  the installer writes next to a workspace's code.\n- **`skills/`** — hand-curated pipeline-building skills. Not part of the bundle;\n  installed only by an explicit skill install.\n- **`task-battery.md`** — the acceptance test for `context/`: 256 tasks a user\n  would hand a coding agent, grouped by category, with the latest doc-coverage\n  scoring pass. Run a category against an agent that has only `context/` loaded\n  when you change a doc; items it cannot complete are the gaps. Not part of the\n  bundle.\n\nThe site does not render this folder. Edit `context/` and rebuild any client\n(`./builder client-typescript:build`, `client-python:build`, `vscode:build`)\nor run `./builder client-docs:agent` to restage the bundle.\n","AGENTS.md":"# AGENTS.md\n\nContributor guide for humans and agents working in this repository. This file\nis the single source of truth for repo-wide rules — `.claude/CLAUDE.md` and\n`.cursorrules` point here.\n\n## Overview\n\nMonorepo for the RocketRide (Aparavi) data toolchain: a C++ engine\n(`packages/server/`), Python SDK and nodes (`packages/client-python/`,\n`nodes/`), a TypeScript SDK and VS Code extension (`packages/client-typescript/`,\n`apps/vscode/`), and supporting packages. `./builder` wraps builds and test\norchestration.\n\n## Where to look — task routing\n\nRead the doc for your task before writing code. Paths are repo-relative.\n\n| Task | Read |\n|---|---|\n| Use RocketRide / write integration code | `docs/agents/context/ROCKETRIDE_README.md` first, then the other `ROCKETRIDE_*` files there |\n| Build or edit a node | `docs/development/nodes/readme-schema.md` (README contract), `docs/development/nodes/services-schema.md` (services.json contract), `docs/development/nodes/index.md` (what a node is; the per-node READMEs are the catalog) |\n| Test a node | `docs/development/nodes/testing.md` |\n| Client (SDK) docs | `docs/development/clients/readme-schema.md`; sources in `docs/public/<name>/` |\n| MCP surface | `docs/public/mcp/` |\n| Engine internals | `docs/development/engine/index.md` |\n| WebSocket (5565) protocol | `docs/public/product/connect/websocket/` |\n| Crash reporting / minidumps | `docs/development/engine/crash-reporting.md` |\n| Shell apps | `docs/public/product/guides/apps/index.md` (app API), `docs/development/apps/index.md` (monorepo setup) |\n| Document a shipped app | `apps/<app>/` only (`README.md`, `docs/`, `assets/`); never a site page or spine entry. Exceptions: VS Code (`docs/docusaurus/apps/vscode/`) and App Builder (`docs/public/product/guides/apps/app-builder.md`) |\n| Builder / hooks | `docs/development/builder/reference.md` (run builds), `docs/development/builder/authoring.md` (write tasks.js), `docs/development/builder/pre-commit-hooks.md` |\n| Product docs (site spine) | `docs/public/product/` |\n\n## Common commands\n\n```bash\n./builder build                  # Build EVERYTHING (global command: expands to every module's :build — server, shell, all UIs, SDKs, vscode)\n./builder test                   # All tests\npython -m pytest <path>          # Python tests directly\npython -m ruff check <path>      # Python lint (format: ruff format)\nnpx tsc --noEmit                 # TypeScript type-check\n\n# Documentation checks\n./builder docs:validate                              # node README + client-doc schemas (also inside docs:test)\npython3 scripts/validate-node-readme.py <node-dir>   # one node (--all nodes/src/nodes for every node)\npython3 scripts/validate-client-docs.py              # client docs parity\nnode scripts/build.js docs:check                     # export drift gate (CI-enforced)\n./builder docs:build                                 # stage the docs site\n```\n\n## Conventions\n\n- **Commits**: conventional commits (`feat(scope):`, `fix(scope):`, `chore(scope):`).\n- **Branches**: `feat/RR-<ticket>-short-description`, `fix/RR-<ticket>-...`; PR base is `develop`.\n- **Python**: 3.10+, single quotes, ruff for lint/format.\n- **TypeScript**: tabs, single quotes, semicolons.\n- **Store apps**: pipelines bundled in an app for the public store use\n  catalog nodes only (the nodes that ship with the engine; see 'Catalog\n  nodes only' in `docs/agents/context/ROCKETRIDE_APPS.md`). `scaffold_node`\n  and `local_nodes` are for self-hosted engines and for nodes contributed\n  to the catalog, never for a store app.\n- **VS Code extension only**: wrap errors with `Callout.call()` (no raw\n  try/catch), throw `AppError` (never plain `Error`), log via `logger.*`\n  (never `console.log`). Docs-site theme components (`docs/docusaurus`) are\n  exempt by design.\n\n## Documentation rules\n\nHand-written docs live in the top-level `docs/` tree and are gathered into the\ndocs site by `builder docs:build`. When a change alters a public contract,\nupdate the corresponding doc in the SAME change:\n\n- Product docs (quickstart, concepts, integrations, examples, evaluate,\n  glossary, troubleshooting, cloud, self-hosting) → `docs/public/product/`.\n- Public TypeScript SDK signature → `docs/public/typescript/` (guides).\n  Generated reference under `packages/client-typescript/docs/reference/`\n  (do not edit; regenerated by `client-typescript:docs-generate`).\n- Public Python SDK signature → `docs/public/python/` (reference generated).\n- MCP protocol surface → `docs/public/mcp/`.\n- WebSocket (5565) / engine protocol surface → `docs/public/product/connect/websocket/`.\n- `.pipe` schema (`packages/client-typescript/src/client/types/pipeline.ts`) →\n  reference regenerates to `/reference/pipeline-reference` (generated — do not edit).\n- VS Code extension surface → site pages in `docs/docusaurus/apps/vscode/`; marketplace README in `apps/vscode/README.md`.\n- Any other app (`apps/<app>/`) → docs stay inside that app's folder. Per-app\n  docs are never staged into the site; App Builder and VS Code are the only\n  exceptions, and no new ones are added.\n- Contributor docs (setup, builder, engine internals, node authoring, hooks) →\n  `docs/development/`.\n- Third-party integration guides → `docs/public/product/connect/`.\n- Agent-facing docs (`ROCKETRIDE_*`) → `docs/agents/context/` (packed into the\n  `/client/docs` bundle by `./builder client-docs:agent`; see `docs/agents/README.md`).\n\n**Nodes are the exception**: node docs stay co-located at\n`nodes/src/nodes/<name>/README.md`, following\n`docs/development/nodes/readme-schema.md`. The\n`ROCKETRIDE:GENERATED:PARAMS` region is maintained by `nodes:docs-generate`\n— never edit it by hand. Validate with\n`python3 scripts/validate-node-readme.py <node-dir>`.\n\n**Package READMEs are generated committed copies**: edit\n`docs/public/<name>/README.md` (typescript, python, n8n, chat-widget; the MCP\nsource is `docs/public/mcp/stdio/README.md`),\nthen run `./builder docs:export`; never edit `packages/client-*/README.md`,\n`packages/n8n-nodes/README.md`, or `packages/chat-widget/README.md` directly.\nCI runs `./builder docs:check` to\ncatch drift. The VS Code marketplace readme is `apps/vscode/README.md`,\nowned by the extension alongside its `assets/`; the VSIX build stages it\nwith its image links rewritten to absolute URLs.\n\nProse-only edits and internal refactors that do not change a public contract\ndo not require doc updates. Treat the doc as part of the change, not a\nfollow-up. Do not create a separate docs repo. Verify with\n`builder docs:build` and `builder docs:check`.\n","docs/agents/task-battery.md":"# RocketRide User Task Battery — 256 Acceptance Questions\n\nPurpose: the acceptance test for the agent-doc rewrite. Every item is something a\nreal user would ask a coding agent to do with RocketRide. A doc file is DONE when\nan agent can complete its items from the delivered docs alone — no reading\n`shell.d.ts`, no reading platform source, no trial-and-error recovery.\n\nGrounding: the 151-node services catalog, the TypeScript client (79 client\nmethods + Account/Billing/Deploy/Log/Database sub-clients + app-sdk), the Python\nclient (~157 callables across mixins and sub-clients), the shell API surface\n(110 exports), and the App Builder lifecycle.\n\nRule of use: when a doc section is drafted, run its category here against an\nagent with ONLY the docs in context. Items it cannot complete mark the gaps.\n\n---\n\n## Doc-coverage scoring pass — executed 2026-08-20 09:39 (third pass)\n\nScored against ONLY the `CLAUDE.md` stub and the ten `ROCKETRIDE_*` files it\nreferenced (now `docs/agents/context/stubs/CLAUDE.md` and\n`docs/agents/context/`; `ROCKETRIDE_CLI.md` postdates this pass). No source\ncode, no shell.d.ts, no prior product knowledge was used. Pass history: 7.7\n(first), 9.0 (second, after UI_COMPONENTS / INTEGRATIONS / Patterns 16–29),\n9.0 (this pass — see below).\n\nChanges since the second pass: the **two-`.env`-pair credentials contract**\n(`ROCKETRIDE_URI`/`APIKEY` = development server, `ROCKETRIDE_DEPLOY_URI`/\n`APIKEY` = deployment target; absence of the deploy pair = stop and ask) in\nCONCEPTS, README, the stub, and both API docs, with mixed-topology semantics\n(deploy server's clock and env layers); the **scaffold-only rule** with three\nfront doors (`New App wizard`, `client.deploy.createApp`, `rocketride app\ncreate`, `local.<slug>` default id); **scriptable app packaging** —\n`deploy.addApp`/`add_app` (packs exactly as the App Builder: include entries,\ngitignore + baseline, 50MB/512MB caps), `deploy.verifyApp`/`verify_app`\n(local dry run), and the `rocketride app create/verify/deploy` CLI trio;\nthe **server-matched client version note**; and the **pnpm requirement** for\napp work. These land mostly on operational-correctness ground the battery\ntouches lightly, so the headline barely moves (2295 → 2307 points) — but they\nclose the last workflow gaps: scripted app deploys, dev-vs-deploy targeting,\nand hand-rolled app scaffolds.\n\nEach question's leading number is replaced by a score `[n]` on a 0–10 scale:\nhow completely and accurately the delivered docs alone answer it.\n\n| Score | Meaning |\n| --- | --- |\n| 10 | Fully answered: complete, accurate, directly actionable from the docs |\n| 7–9 | Answerable with minor gaps (a detail, an example, or an edge missing) |\n| 4–6 | Partially answered: the concept or API is present but key steps must be guessed or composed from fragments |\n| 1–3 | Barely touched: named or implied, not actionable |\n| 0 | Not covered at all |\n\n### Category summary\n\n| Category | Avg | Prev | Δ | Items |\n| --- | --- | --- | --- | --- |\n| A. Setup, connection & workspace | 8.7 | 8.1 | +0.6 | 12 |\n| B. Pipeline grammar & wiring | 9.1 | 9.1 | — | 14 |\n| C. Pipeline recipes by use case | 9.0 | 9.0 | — | 28 |\n| D. Driving pipelines from code | 8.8 | 8.8 | — | 18 |\n| E. Chat, Question & streaming | 9.1 | 9.1 | — | 8 |\n| F. Files, cloud store & templates | 8.6 | 8.6 | — | 14 |\n| G. Events, monitoring & run logs | 8.6 | 8.6 | — | 14 |\n| H. Deploying & scheduling pipelines | 9.4 | 9.3 | +0.1 | 14 |\n| I. App structure & layout | 9.6 | 9.5 | +0.1 | 14 |\n| J. App UI components | 9.8 | 9.8 | — | 16 |\n| K. App hooks, state, theming & styles | 9.5 | 9.5 | — | 12 |\n| L. App + pipeline integration | 9.2 | 9.2 | — | 10 |\n| M. App dev loop & debugging | 8.3 | 8.3 | — | 8 |\n| N. App packaging, publish, store & review | 9.3 | 9.3 | +0.1 raw | 16 |\n| O. Account, orgs, teams, keys & env | 8.8 | 8.8 | — | 12 |\n| P. Billing & plans | 7.3 | 7.3 | — | 6 |\n| Q. Dashboard & operations | 7.8 | 7.8 | — | 6 |\n| R. Database & SQL | 9.8 | 9.8 | — | 4 |\n| S. CLI | 9.4 | 9.4 | — | 8 |\n| T. MCP & external integrations | 10.0 | 10.0 | — | 6 |\n| U. Observability ingestion | 9.3 | 9.3 | — | 6 |\n| V. Performance profiling | 9.0 | 9.0 | — | 2 |\n| W. Troubleshooting | 8.1 | 8.0 | +0.1 | 8 |\n| **Overall** | **9.0** | **9.0** | **+12 pts** | **256** |\n\nItems that moved this pass: workspace setup [8→9], cloud connect/sign-in\n[6→8] (the two-pair contract removes auth-flow guesswork), API-key handling\n[8→9], dev-vs-cloud switching [7→9], headless auth [9→10], two-team configs\n[7→8] (deploy-server env-layer rule), wizard/scaffold [9→10], app-id\nreservations [8→9] (`local.*` now documented), Package-tab readiness [8→9]\n(`verifyApp` mirrors it scriptably), blank-preview diagnosis [6→7] (the\nscaffold section now names the failure symptoms and their causes in one place).\n\nRemaining items at 5 or below: store size/quota limits [2], per-user vs\nper-app storage path conventions [4], `.pipe` git/team sharing [5], invoking a\nsingle node capability without a pipeline [5], what counts against billing\nquota [5]. Weakest categories: P. Billing & plans (7.3) and Q. Dashboard &\noperations (7.8).\n\n---\n\n## A. Setup, connection & workspace — avg 8.7\n\n| Score | Question |\n| --- | --- |\n| 9 | Set up a brand-new RocketRide workspace from an empty folder — what goes where? |\n| 8 | Connect my workspace to RocketRide Cloud and sign in. |\n| 8 | Connect to my self-hosted engine at ws://myserver:5565 instead of the cloud. |\n| 9 | Where does my API key come from, and how do I keep it out of git? |\n| 9 | Switch my project between a local dev server and the cloud without editing code. |\n| 10 | Authenticate a headless script with an API key instead of a browser login. |\n| 7 | Log in from a TypeScript app with OAuth/PKCE and log out cleanly. |\n| 9 | Reconnect automatically when the server drops, and surface connection state in my app. |\n| 10 | Use environment-variable substitution (`${ROCKETRIDE_APIKEY}`) inside a `.pipe` file. |\n| 9 | What is the `.rocketride/` folder in my workspace, and which parts may I edit? |\n| 9 | Check what server version and features I'm connected to. |\n| 7 | Write a check script that proves my project's connection and pipeline are healthy. |\n\n## B. Pipeline grammar & wiring — avg 9.1\n\n| Score | Question |\n| --- | --- |\n| 10 | Create my first `.pipe` file by hand — the minimal valid structure and required field order. |\n| 10 | What are lanes, and how do I know which two nodes can connect? |\n| 9 | Wire one parser's output into two different consumers. |\n| 10 | What's the difference between a source node and a processing node — and which sources exist? |\n| 8 | Configure a node with profiles vs inline config — when is each right? |\n| 10 | Override one field of a built-in profile without redefining the whole thing. |\n| 10 | Discover every available node and its config options from my workspace. |\n| 9 | Read a node's schema to learn required vs optional config fields. |\n| 10 | Attach a tool node to an agent — why doesn't that connection use lanes? |\n| 10 | Build a sub-pipeline invoked as a tool (`tool_pipe`) and the ownership rules it must obey. |\n| 10 | Why is my sub-pipeline rejected as \"reachable from two control roots\"? |\n| 7 | Position and hide nodes with the `ui` block — does layout affect execution? |\n| 9 | Validate a pipeline without running it, and interpret the validation errors. |\n| 5 | Version my `.pipe` files in git and share them with my team. |\n\n## C. Pipeline recipes by use case — avg 9.0\n\n| Score | Question |\n| --- | --- |\n| 9 | Drop any file — PDF, DOCX, image, audio, video — and get its text back. |\n| 8 | Classic RAG: chunk documents, embed, store in Qdrant, answer questions with citations. |\n| 7 | Swap the vector store: the same RAG on Pinecone, Milvus, Weaviate, or Chroma. |\n| 10 | Use Postgres as my vector store instead of a dedicated engine. |\n| 9 | OCR scanned documents and photos of documents. |\n| 10 | Parse with LlamaParse, Landing.AI, or Reducto instead of the built-in parser — when and why? |\n| 8 | Transcribe audio files and answer questions about what was said. |\n| 10 | Text-to-speech: generate spoken audio with ElevenLabs or OpenAI TTS and return it. |\n| 10 | Grab frames from a video and describe them with a vision LLM. |\n| 10 | Video understanding and search with TwelveLabs. |\n| 9 | Detect and anonymize PII before anything hits storage. |\n| 7 | Extract named entities (people, orgs, places) from documents. |\n| 7 | Summarize long contracts and extract their key facts. |\n| 10 | Extract structured JSON from invoices and validate it against a schema. |\n| 10 | Put guardrails on LLM output before it reaches the user. |\n| 9 | A chat pipeline with conversation memory — internal vs persistent memory. |\n| 8 | Long-term user memory across sessions with mem0. |\n| 8 | Swap the LLM provider (OpenAI → Anthropic → Gemini → local Ollama) with a one-line change. |\n| 8 | Which model should I use for quality vs speed vs cost — current guidance. |\n| 10 | Vision Q&A over images (GPT-4o vision, Gemini, Mistral, Ollama). |\n| 10 | Batch image cleanup: background removal and thumbnail generation. |\n| 10 | Pose estimation or depth estimation over an image set. |\n| 7 | Build a knowledge graph from documents (Neo4j / FalkorDB) and query it. |\n| 10 | GraphRAG with Cognee. |\n| 10 | A web-research pipeline: Exa/Tavily search plus Firecrawl scraping, synthesized by an LLM. |\n| 10 | A crew of agents: CrewAI manager delegating to subagents. |\n| 7 | agent_rocketride vs CrewAI vs LangChain vs LlamaIndex vs DeepAgent — pick one and wire it. |\n| 10 | An agent that can safely run Python code as a tool. |\n\n## D. Driving pipelines from code — avg 8.8\n\n| Score | Question |\n| --- | --- |\n| 9 | Run a `.pipe` from a Python script and wait for the result. |\n| 10 | Run a pipeline object from a browser app, where file paths don't exist. |\n| 9 | Reuse an already-running pipeline instead of starting a new one (`useExisting`) — exact semantics. |\n| 10 | Pass runtime arguments into a pipeline (`args`). |\n| 9 | Set a TTL so an idle pipeline shuts itself down. |\n| 9 | Send a text payload into a running pipeline and receive the response. |\n| 8 | Upload many files with bounded concurrency and per-file progress. |\n| 10 | Stream data chunks into a running pipeline (DataPipe open/write/close). |\n| 9 | Poll task status and distinguish queued vs running vs finished vs failed. |\n| 9 | Get a running task's token and reattach to it from another process. |\n| 9 | Retrieve the exact pipeline definition a running task is executing. |\n| 9 | Restart a task with a modified pipeline. |\n| 9 | Terminate a running pipeline cleanly. |\n| 6 | Process a large document set concurrently — threads and throughput guidance. |\n| 5 | Invoke a single node's capability directly without authoring a pipeline. |\n| 10 | List available services and fetch one service's definition programmatically. |\n| 8 | Handle the SDK exception hierarchy and retry transient failures sensibly. |\n| 10 | Why does my long CPU-bound loop kill the websocket after ~60 seconds, and how do I fix it? |\n\n## E. Chat, Question & streaming — avg 9.1\n\n| Score | Question |\n| --- | --- |\n| 10 | Ask a one-shot question to a chat pipeline and print the answer. |\n| 10 | Stream tokens live (SSE) into my UI as the model generates. |\n| 9 | Build a multi-part Question with system instructions. |\n| 10 | Get the answer back as structured JSON (`expectJson`). |\n| 8 | Restrict which documents the chat searches with a filter. |\n| 8 | Keep conversation context across multiple chat calls to the same task. |\n| 9 | Route follow-up questions from different browser tabs to the same running chat. |\n| 9 | `response_answers` vs `response_text` — which do I wire, and why? |\n\n## F. Files, cloud store & templates — avg 8.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Write pipeline results to the cloud file store and read them back later. |\n| 10 | List a store directory and stat individual files. |\n| 10 | Read and write JSON objects to the store without manual serialization. |\n| 10 | Fetch many store files in one round trip. |\n| 10 | Rename, move, and delete files; create and remove directories. |\n| 10 | Get a download URL I can hand to a browser. |\n| 9 | Stream a large store file without loading it all in memory. |\n| 9 | Save a pipeline as a reusable template; list, apply, and delete templates. |\n| 10 | Where do dropper-uploaded files land, and how do I fetch them afterward? |\n| 10 | Return a generated artifact (say, TTS audio) to my app's user as a download. |\n| 2 | What are the store's size and quota limits? |\n| 9 | Share store files between my app and my pipelines. |\n| 4 | Organize storage per-user vs per-app — path conventions. |\n| 7 | Clean up old artifacts programmatically. |\n\n## G. Events, monitoring & run logs — avg 8.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Subscribe to every event from one task. |\n| 9 | Monitor all my tasks at once, dashboard-style. |\n| 10 | Choose event types (TASK/SUMMARY/FLOW/OUTPUT/SSE/DETAIL) — what each carries. |\n| 9 | Stop monitoring cleanly when my component unmounts. |\n| 9 | Migrate off the deprecated `setEvents` to monitors. |\n| 8 | Identify my client connection — why and when it matters. |\n| 8 | Show a live pipeline-progress graph from per-node FLOW events. |\n| 9 | Record a run and replay it later (the run-log DVR). |\n| 9 | List and delete recorded run logs. |\n| 9 | Seek inside a recorded run — chapters and segments. |\n| 8 | Choose a pipeline trace level — detail vs cost. |\n| 8 | Capture full debug output for one run. |\n| 9 | Update my app's UI from platform events — shell events vs task monitors, which for what? |\n| 6 | Alert me (or call my webhook) when any pipeline errors. |\n\n## H. Deploying & scheduling pipelines — avg 9.4\n\n| Score | Question |\n| --- | --- |\n| 10 | Deploy a pipeline to the server so it runs without my machine. |\n| 10 | Deploy v2 of a pipeline, list versions, and see what each contains. |\n| 10 | Point my team at version N; roll back to N−1 without rebuilding. |\n| 10 | Run a deployed pipeline on demand. |\n| 10 | Schedule a deployed pipeline to run Monday/Wednesday/Friday from 08:00 to 15:00. |\n| 10 | Pause a schedule for the holidays and resume it — without losing the cron. |\n| 10 | Set per-source trace and debug settings that ride every scheduled run. |\n| 8 | See the run history of a deployment. |\n| 7 | Preview what a deployed source will do before running it. |\n| 10 | Disable, enable, and remove a deployment. |\n| 8 | Deploy the same pipeline for two teams with different configurations. |\n| 9 | What is a sourceId — schedule two sources of one project independently. |\n| 9 | Download the artifact of a deployed version. |\n| 10 | Guarantee a scheduled run always ends by a wall-clock time. |\n\n## I. App structure & layout — avg 9.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Create a new app with the App Builder wizard — what the templates give me. |\n| 10 | The anatomy of a scaffolded app — what each of the ten files is for. |\n| 10 | Every `appManifest` field, explained — id, publisher, categories, mode, authenticated, and the rest. |\n| 9 | Choose my app id — why `<developer>.<name>` matters and what's reserved. |\n| 10 | Add a sidebar to my app with AppLayout. |\n| 9 | Turn on the bottom status bar and know what it shows. |\n| 10 | Put my own content in the status bar. |\n| 9 | A multi-view app: sidebar navigation that switches content panes. |\n| 10 | A file-editor app using the Documents system — tabs, explorer, split views. |\n| 10 | Persist my app's UI state across reloads. |\n| 9 | Ship and render my app's icon correctly. |\n| 9 | What are my app's props (`isConnected`, `identity`) and when do they change? |\n| 10 | Expose a second component from my app for others to embed. |\n| 10 | Embed a component from another app into mine. |\n\n## J. App UI components — avg 9.8\n\n| Score | Question |\n| --- | --- |\n| 10 | What stock components exist, and where do I browse them? |\n| 10 | A data table with sorting, filtering, and pagination over live data. |\n| 8 | A card-grid view with a filter strip as an alternative to the table. |\n| 10 | A full chat UI wired to a chat pipeline. |\n| 10 | Render LLM/markdown output safely — including images and charts. |\n| 10 | A file drop zone — styling, multiple files, accepted types. |\n| 10 | Modals, confirmations, and save-file dialogs. |\n| 10 | Form inputs: text fields, toggles, chips. |\n| 9 | Buttons — variants, sizes, disabled states, icon buttons. |\n| 10 | Status displays: badges, dots, banners, empty states. |\n| 10 | Page scaffolding: cards, sections, label/value rows. |\n| 10 | A content header with title and action buttons. |\n| 10 | Tabbed interfaces and slide-in detail panels. |\n| 10 | Sidebar menus and the announcements footer. |\n| 10 | Rich grid cells: badges, buttons, avatars, monospace — and a custom actions column. |\n| 10 | Remember each user's grid layout and column choices. |\n\n## K. App hooks, state, theming & styles — avg 9.5\n\n| Score | Question |\n| --- | --- |\n| 10 | Get the connected client and connection state in any component. |\n| 10 | React to platform events (login, org change, theme change) with typed handlers. |\n| 9 | Read the signed-in user and offer a working logout. |\n| 10 | Style with theme tokens so dark and light modes both look right. |\n| 10 | What's in `commonStyles`, and when do I use it versus my own styles? |\n| 10 | The styling rules of the platform — what's idiomatic, what's forbidden. |\n| 10 | React to a theme change at runtime. |\n| 10 | Debounce a search box; poll a value on an interval. |\n| 10 | Position a custom popup that closes on outside click. |\n| 9 | Respond to the sidebar collapsing. |\n| 6 | Handle running inside VS Code vs the browser — what differs. |\n| 10 | Embed external web content in an iframe that follows the platform theme. |\n\n## L. App + pipeline integration — avg 9.2\n\n| Score | Question |\n| --- | --- |\n| 10 | Import a `.pipe` file into my app's code and start it (including the type declaration). |\n| 9 | Start the pipeline on connect, keep its token in state, and survive hot reload. |\n| 9 | Send dropped files through a pipeline and render the returned text. |\n| 8 | Show live progress while the pipeline processes a file. |\n| 10 | Stream a chat answer token-by-token into my chat component. |\n| 7 | Run two different pipelines in one app and keep their tokens straight. |\n| 9 | Ship pipelines inside the app package — how packaging embeds them, and why they can't be scheduled. |\n| 10 | One shared pipeline task for all users vs a task per user — how to choose and implement. |\n| 10 | Show a useful error state when the pipeline fails mid-run. |\n| 10 | Trigger a server-deployed pipeline from my app instead of embedding one. |\n\n## M. App dev loop & debugging — avg 8.3\n\n| Score | Question |\n| --- | --- |\n| 10 | Run my app live with watch — what triggers rebuild, reinstall, restart. |\n| 9 | Preview at phone/tablet/desktop sizes; zoom and fit. |\n| 9 | See my `console.log` output and runtime errors while developing. |\n| 6 | Debug my app with breakpoints from VS Code. |\n| 8 | The preview shows stale code — why, and the reload rules. |\n| 7 | Test my app in dark, light, and VS Code themes before shipping. |\n| 9 | Preview as my signed-in self vs as an anonymous user. |\n| 8 | Use the component gallery: live demos, knobs, and copyable snippets. |\n\n## N. App packaging, publish, store & review — avg 9.3\n\n| Score | Question |\n| --- | --- |\n| 9 | Make the Package tab fully green — identity, icon, README, include paths. |\n| 10 | Include a shared workspace folder in my app's package. |\n| 9 | Deploy even with type errors — the typecheck waiver and its consequences. |\n| 10 | Deploy my app to the server — what the server build does with my source. |\n| 8 | Publish to myself and run it from the app rail. |\n| 9 | Publish to my team. |\n| 9 | Submit my app to the public store — what review involves. |\n| 9 | Track review status and reply to reviewer feedback. |\n| 10 | Withdraw a submission. |\n| 9 | My server build failed — find the build log and fix the cause. |\n| 10 | Ship an update: deploy v4, repoint the audience, roll back if it breaks. |\n| 10 | Where is my app live right now — every rung, version, and state at a glance. |\n| 9 | Register my developer id — namespace ownership rules for app ids. |\n| 8 | Write the store listing: description, categories, and pricing plans. |\n| 10 | Take a published app down — disable vs remove. |\n| 10 | Test a specific published version in the browser via the version override. |\n\n## O. Account, orgs, teams, keys & env — avg 8.8\n\n| Score | Question |\n| --- | --- |\n| 9 | See my profile and which organization I'm operating in. |\n| 8 | Switch organizations — what changes when I do. |\n| 10 | Invite someone to my org; remove someone who left. |\n| 9 | Create teams and use them as deploy audiences. |\n| 10 | Create an API key for CI; revoke it later. |\n| 9 | Set the org's OpenAI key once so every member's pipelines use it. |\n| 9 | Layered environment secrets — org vs team vs user precedence. |\n| 9 | Use server-side secrets in pipelines with no local `.env` at all. |\n| 10 | What can members do vs admins? |\n| 6 | A key leaked — rotate it everywhere, fast. |\n| 9 | Read account info inside my app and react when it changes. |\n| 7 | Make my app require sign-in (`authenticated: true`) — what the user experiences. |\n\n## P. Billing & plans — avg 7.3\n\n| Score | Question |\n| --- | --- |\n| 8 | See my current plan and usage. |\n| 8 | Upgrade my plan from inside the product. |\n| 5 | What counts against my quota — tasks, tokens, storage? |\n| 9 | Define paid plans for my own store app. |\n| 6 | How do my app's subscribers get billed, and how are entitlements enforced? |\n| 8 | Manage invoices and payment methods. |\n\n## Q. Dashboard & operations — avg 7.8\n\n| Score | Question |\n| --- | --- |\n| 7 | What's running right now across my org? |\n| 9 | Who's connected to my server? |\n| 8 | Kill a stuck task from an ops script. |\n| 8 | Watch fleet-wide activity with the dashboard event feed. |\n| 9 | Build a health/usage panel into my own admin app. |\n| 6 | How long is task history retained, and where do old runs go? |\n\n## R. Database & SQL — avg 9.8\n\n| Score | Question |\n| --- | --- |\n| 10 | Run SQL from my app through the platform's database client. |\n| 10 | Wrap multiple statements in a transaction with commit/rollback. |\n| 9 | Query pipeline results that a `db_postgres` node stored. |\n| 10 | When do I use a relational store vs a vector store vs a graph store? |\n\n## S. CLI — avg 9.4\n\n| Score | Question |\n| --- | --- |\n| 10 | Start a pipeline from the terminal. |\n| 10 | Upload files to a running task from the terminal. |\n| 10 | Check status and stop a task from the terminal. |\n| 9 | List my running tasks from the terminal. |\n| 10 | Browse the cloud store from the terminal. |\n| 7 | Upload, download, and delete store files from the terminal. |\n| 9 | Follow a task's events from the terminal. |\n| 10 | Use the CLI in CI to smoke-test a deployed pipeline. |\n\n## T. MCP & external integrations — avg 10.0\n\n| Score | Question |\n| --- | --- |\n| 10 | Expose my pipelines as MCP tools so Claude/Cursor can call them. |\n| 10 | Control which pipelines become tools and how they're described to the model. |\n| 10 | Call RocketRide from an n8n workflow. |\n| 10 | Trigger a pipeline from an external system's webhook — including auth. |\n| 10 | Put a Telegram bot in front of a pipeline. |\n| 10 | Call my own HTTP API from the middle of a pipeline. |\n\n## U. Observability ingestion — avg 9.3\n\n| Score | Question |\n| --- | --- |\n| 10 | Build an external service that ingests all platform events. |\n| 9 | Authenticate a headless monitoring daemon. |\n| 9 | Which event payload schemas are stable enough to parse? |\n| 9 | Capture run lifecycle reliably across my daemon's reconnects. |\n| 9 | Live ingestion vs DVR replay — when is each the right source? |\n| 10 | Feed events into my own metrics database — the recommended ingester shape. |\n\n## V. Performance profiling — avg 9.0\n\n| Score | Question |\n| --- | --- |\n| 9 | Profile the server-side performance of my pipeline. |\n| 9 | Read the profile tree and find the slow node. |\n\n## W. Troubleshooting — avg 8.1\n\n| Score | Question |\n| --- | --- |\n| 7 | \"Component not found\" when opening my pipeline — diagnose it. |\n| 9 | Two nodes won't connect — read the lane mismatch and fix the wiring. |\n| 8 | The pipeline starts but nothing happens — the source-node config checklist. |\n| 7 | My app preview is a blank screen — the module-federation checklist. |\n| 9 | I deployed v3 but users still see v2 — version vs binding, untangled. |\n| 10 | Login loops forever in my app preview — the auth checklist. |\n| 8 | Events stop arriving after a few minutes — keepalive and blocking causes. |\n| 7 | A scheduled run failed overnight — which log has the answer, build vs run. |\n",".claude/CLAUDE.md":"@../AGENTS.md\n","packages/chat-widget/README.md":"# chat-widget Documentation\n\nPath: `packages/chat-widget/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/README.md)","packages/chat-widget/package.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/package.json)","packages/chat-widget/tsconfig.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.json)","packages/chat-widget/tsconfig.test.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.test.json)","packages/chat-widget/tsconfig.types.json":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.types.json)","packages/client-mcp/README.md":"# client-mcp Documentation\n\nPath: `packages/client-mcp/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/README.md)","packages/client-python/README.md":"# client-python Documentation\n\nPath: `packages/client-python/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/README.md)","packages/client-typescript/README.md":"# client-typescript Documentation\n\nPath: `packages/client-typescript/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/README.md)","packages/client-typescript/package.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/package.json)","packages/client-typescript/tsconfig.cjs.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cjs.json)","packages/client-typescript/tsconfig.cli.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cli.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cli.json)","packages/client-typescript/tsconfig.contract.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.contract.json)","packages/client-typescript/tsconfig.esm.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.esm.json)","packages/client-typescript/tsconfig.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.json)","packages/client-typescript/tsconfig.types.json":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.types.json)","packages/n8n-nodes/CHANGELOG.md":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/CHANGELOG.md)","packages/n8n-nodes/README.md":"# n8n-nodes Documentation\n\nPath: `packages/n8n-nodes/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/README.md)","packages/n8n-nodes/package-lock.json":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package-lock.json)","packages/n8n-nodes/package.json":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package.json)","packages/n8n-nodes/tsconfig.json":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/tsconfig.json)","packages/server/vcpkg.json":"# Server Skill\n\nPath: `packages/server/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/vcpkg.json)","packages/shell/package.json":"# Shell Skill\n\nPath: `packages/shell/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/package.json)","packages/shell/tsconfig.contract.json":"# Shell Skill\n\nPath: `packages/shell/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.contract.json)","packages/shell/tsconfig.json":"# Shell Skill\n\nPath: `packages/shell/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.json)","tools/contract_checks/README.md":"# contract_checks Documentation\n\nPath: `tools/contract_checks/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/contract_checks/README.md)","tools/dependabot-smoke/README.md":"# dependabot-smoke Documentation\n\nPath: `tools/dependabot-smoke/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/dependabot-smoke/README.md)","tools/sync_models/README.md":"# sync_models Documentation\n\nPath: `tools/sync_models/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/README.md)","docs/agents/context/ROCKETRIDE_APPS.md":"# Subagent: rocketride_apps\n\nPath: `docs/agents/context/ROCKETRIDE_APPS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_APPS.md)","docs/agents/context/ROCKETRIDE_CLI.md":"# Subagent: rocketride_cli\n\nPath: `docs/agents/context/ROCKETRIDE_CLI.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CLI.md)","docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md":"# Subagent: rocketride_component_reference\n\nPath: `docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md)","docs/agents/context/ROCKETRIDE_CONCEPTS.md":"# Subagent: rocketride_concepts\n\nPath: `docs/agents/context/ROCKETRIDE_CONCEPTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CONCEPTS.md)","docs/agents/context/ROCKETRIDE_INTEGRATIONS.md":"# Subagent: rocketride_integrations\n\nPath: `docs/agents/context/ROCKETRIDE_INTEGRATIONS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_INTEGRATIONS.md)","docs/agents/context/ROCKETRIDE_OBSERVABILITY.md":"# Subagent: rocketride_observability\n\nPath: `docs/agents/context/ROCKETRIDE_OBSERVABILITY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_OBSERVABILITY.md)","docs/agents/context/ROCKETRIDE_PIPELINES.md":"# Subagent: rocketride_pipelines\n\nPath: `docs/agents/context/ROCKETRIDE_PIPELINES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_PIPELINES.md)","docs/agents/context/ROCKETRIDE_README.md":"# Subagent: rocketride_readme\n\nPath: `docs/agents/context/ROCKETRIDE_README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_README.md)","docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md":"# Subagent: rocketride_ui_components\n\nPath: `docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md)","docs/agents/context/ROCKETRIDE_python_API.md":"# Subagent: rocketride_python_api\n\nPath: `docs/agents/context/ROCKETRIDE_python_API.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_python_API.md)","docs/agents/context/ROCKETRIDE_typescript_API.md":"# Subagent: rocketride_typescript_api\n\nPath: `docs/agents/context/ROCKETRIDE_typescript_API.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_typescript_API.md)","docs/agents/skills/MCP_TOOL_CONTRACT.md":"# Subagent: mcp_tool_contract\n\nPath: `docs/agents/skills/MCP_TOOL_CONTRACT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/MCP_TOOL_CONTRACT.md)","docs/agents/skills/README.md":"# Subagent: readme\n\nPath: `docs/agents/skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/README.md)","packages/client-init/typescript/README.md":"# typescript Documentation\n\nPath: `packages/client-init/typescript/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/README.md)","packages/client-init/typescript/package.json":"# Typescript Skill\n\nPath: `packages/client-init/typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/package.json)","packages/n8n-nodes/examples/run-pipeline.workflow.json":"# Examples Skill\n\nPath: `packages/n8n-nodes/examples/run-pipeline.workflow.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/examples/run-pipeline.workflow.json)","tools/sync_models/src/sync_models.config.json":"# Src Skill\n\nPath: `tools/sync_models/src/sync_models.config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/src/sync_models.config.json)","docs/agents/context/stubs/AGENTS.md":"# Subagent: agents\n\nPath: `docs/agents/context/stubs/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/AGENTS.md)","docs/agents/context/stubs/CLAUDE.md":"# Subagent: claude\n\nPath: `docs/agents/context/stubs/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/CLAUDE.md)","docs/agents/context/stubs/claude-code.md":"# Subagent: claude-code\n\nPath: `docs/agents/context/stubs/claude-code.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/claude-code.md)","docs/agents/context/stubs/copilot-instructions.md":"# Subagent: copilot-instructions\n\nPath: `docs/agents/context/stubs/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/copilot-instructions.md)","docs/agents/context/stubs/windsurf.md":"# Subagent: windsurf\n\nPath: `docs/agents/context/stubs/windsurf.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/windsurf.md)","docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md":"# Subagent: gate_protocol\n\nPath: `docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md)","docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md":"# Subagent: rocketride_doc_map\n\nPath: `docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md)","docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md":"# Subagent: pipeline-patterns\n\nPath: `docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md)","docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md":"# Subagent: pipeline_antipatterns\n\nPath: `docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md)","docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md":"# Subagent: error_table\n\nPath: `docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md)","docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json":"# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json)","docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json":"# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json)","docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md":"# Subagent: pipeline_rules_summary\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md)","packages/client-python/tests/fixtures/otel_bridge_events.json":"# Fixtures Skill\n\nPath: `packages/client-python/tests/fixtures/otel_bridge_events.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/tests/fixtures/otel_bridge_events.json)","packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json":"# RocketRide Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json)","packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json":"# RocketRideInboundTrigger Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json)","packages/server/test/pipelines/advrag-chat.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/advrag-chat.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-chat.json)","packages/server/test/pipelines/advrag-ingest.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/advrag-ingest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-ingest.json)","packages/server/test/pipelines/chat-ingest.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/chat-ingest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ingest.json)","packages/server/test/pipelines/chat-ui.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/chat-ui.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ui.json)","packages/server/test/pipelines/denodo-catalog.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/denodo-catalog.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-catalog.json)","packages/server/test/pipelines/denodo-direct.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/denodo-direct.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-direct.json)","packages/server/test/pipelines/ocr.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/ocr.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr.json)","packages/server/test/pipelines/ocr_thumbnail.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/ocr_thumbnail.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr_thumbnail.json)","packages/server/test/pipelines/parse.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/parse.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/parse.json)","packages/server/test/pipelines/question-answer.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/question-answer.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/question-answer.json)","packages/server/test/pipelines/remote.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/remote.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/remote.json)","packages/server/test/pipelines/search.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/search.json)","packages/server/test/pipelines/semantic-search.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/semantic-search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/semantic-search.json)","packages/server/test/pipelines/webhook.json":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/webhook.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/webhook.json)","packages/shell/public/themes/dark.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/dark.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/dark.json)","packages/shell/public/themes/gray.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/gray.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/gray.json)","packages/shell/public/themes/light.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/light.json)","packages/shell/public/themes/rocketride-light.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/rocketride-light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride-light.json)","packages/shell/public/themes/rocketride.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/rocketride.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride.json)","packages/shell/public/themes/visual-studio.json":"# Themes Skill\n\nPath: `packages/shell/public/themes/visual-studio.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/visual-studio.json)","docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md":"# Subagent: failure_scenarios\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md)","docs/agents/skills/rocketride-designing-pipelines/examples/README.md":"# Subagent: readme\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/README.md)","nodes/src/nodes/webhook/tools/README.md":"# tools Documentation\n\nPath: `nodes/src/nodes/webhook/tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/nodes/src/nodes/webhook/tools/README.md)","packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json":"# Pipelines Skill\n\nPath: `packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json)","packages/server/cmake/ports/cpprestsdk/README.md":"# cpprestsdk Documentation\n\nPath: `packages/server/cmake/ports/cpprestsdk/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/README.md)","packages/server/cmake/ports/cpprestsdk/vcpkg.json":"# Cpprestsdk Skill\n\nPath: `packages/server/cmake/ports/cpprestsdk/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/vcpkg.json)","packages/server/cmake/ports/fastpfor/README.md":"# fastpfor Documentation\n\nPath: `packages/server/cmake/ports/fastpfor/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/README.md)","packages/server/cmake/ports/fastpfor/vcpkg.json":"# Fastpfor Skill\n\nPath: `packages/server/cmake/ports/fastpfor/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/vcpkg.json)","packages/server/cmake/ports/libuuid/vcpkg.json":"# Libuuid Skill\n\nPath: `packages/server/cmake/ports/libuuid/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/libuuid/vcpkg.json)","packages/server/cmake/ports/replxx/README.md":"# replxx Documentation\n\nPath: `packages/server/cmake/ports/replxx/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/replxx/README.md)","packages/server/cmake/ports/tinyxml2/README.md":"# tinyxml2 Documentation\n\nPath: `packages/server/cmake/ports/tinyxml2/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/tinyxml2/README.md)","packages/ai/src/ai/modules/mcp/credentials.json":"# Mcp Skill\n\nPath: `packages/ai/src/ai/modules/mcp/credentials.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/credentials.json)","packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md":"# site-packages Documentation\n\nPath: `packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md)","packages/ai/src/ai/common/graph/age/README.md":"# age Documentation\n\nPath: `packages/ai/src/ai/common/graph/age/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/graph/age/README.md)","packages/ai/src/ai/common/models/ocr/README.md":"# ocr Documentation\n\nPath: `packages/ai/src/ai/common/models/ocr/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/models/ocr/README.md)","packages/ai/src/ai/modules/mcp/apps/package.json":"# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/package.json)","packages/ai/src/ai/modules/mcp/apps/tsconfig.json":"# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/tsconfig.json)"},"items":[{"name":"AGENTS.md","path":"AGENTS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/AGENTS.md","title":"AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# AGENTS.md\n\nContributor guide for humans and agents working in this repository. This file\nis the single source of truth for repo-wide rules — `.claude/CLAUDE.md` and\n`.cursorrules` point here.\n\n## Overview\n\nMonorepo for the RocketRide (Aparavi) data toolchain: a C++ engine\n(`packages/server/`), Python SDK and nodes (`packages/client-python/`,\n`nodes/`), a TypeScript SDK and VS Code extension (`packages/client-typescript/`,\n`apps/vscode/`), and supporting packages. `./builder` wraps builds and test\norchestration.\n\n## Where to look — task routing\n\nRead the doc for your task before writing code. Paths are repo-relative.\n\n| Task | Read |\n|---|---|\n| Use RocketRide / write integration code | `docs/agents/context/ROCKETRIDE_README.md` first, then the other `ROCKETRIDE_*` files there |\n| Build or edit a node | `docs/development/nodes/readme-schema.md` (README contract), `docs/development/nodes/services-schema.md` (services.json contract), `docs/development/nodes/index.md` (what a node is; the per-node READMEs are the catalog) |\n| Test a node | `docs/development/nodes/testing.md` |\n| Client (SDK) docs | `docs/development/clients/readme-schema.md`; sources in `docs/public/<name>/` |\n| MCP surface | `docs/public/mcp/` |\n| Engine internals | `docs/development/engine/index.md` |\n| WebSocket (5565) protocol | `docs/public/product/connect/websocket/` |\n| Crash reporting / minidumps | `docs/development/engine/crash-reporting.md` |\n| Shell apps | `docs/public/product/guides/apps/index.md` (app API), `docs/development/apps/index.md` (monorepo setup) |\n| Document a shipped app | `apps/<app>/` only (`README.md`, `docs/`, `assets/`); never a site page or spine entry. Exceptions: VS Code (`docs/docusaurus/apps/vscode/`) and App Builder (`docs/public/product/guides/apps/app-builder.md`) |\n| Builder / hooks | `docs/development/builder/reference.md` (run builds), `docs/development/builder/authoring.md` (write tasks.js), `docs/development/builder/pre-commit-hooks.md` |\n| Product docs (site spine) | `docs/public/product/` |\n\n## Common commands\n\n```bash\n./builder build                  # Build EVERYTHING (global command: expands to every module's :build — server, shell, all UIs, SDKs, vscode)\n./builder test                   # All tests\npython -m pytest <path>          # Python tests directly\npython -m ruff check <path>      # Python lint (format: ruff format)\nnpx tsc --noEmit                 # TypeScript type-check\n\n# Documentation checks\n./builder docs:validate                              # node README + client-doc schemas (also inside docs:test)\npython3 scripts/validate-node-readme.py <node-dir>   # one node (--all nodes/src/nodes for every node)\npython3 scripts/validate-client-docs.py              # client docs parity\nnode scripts/build.js docs:check                     # export drift gate (CI-enforced)\n./builder docs:build                                 # stage the docs site\n```\n\n## Conventions\n\n- **Commits**: conventional commits (`feat(scope):`, `fix(scope):`, `chore(scope):`).\n- **Branches**: `feat/RR-<ticket>-short-description`, `fix/RR-<ticket>-...`; PR base is `develop`.\n- **Python**: 3.10+, single quotes, ruff for lint/format.\n- **TypeScript**: tabs, single quotes, semicolons.\n- **Store apps**: pipelines bundled in an app for the public store use\n  catalog nodes only (the nodes that ship with the engine; see 'Catalog\n  nodes only' in `docs/agents/context/ROCKETRIDE_APPS.md`). `scaffold_node`\n  and `local_nodes` are for self-hosted engines and for nodes contributed\n  to the catalog, never for a store app.\n- **VS Code extension only**: wrap errors with `Callout.call()` (no raw\n  try/catch), throw `AppError` (never plain `Error`), log via `logger.*`\n  (never `console.log`). Docs-site theme components (`docs/docusaurus`) are\n  exempt by design.\n\n## Documentation rules\n\nHand-written docs live in the top-level `docs/` tree and are gathered into the\ndocs site by `builder docs:build`. When a change alters a public contract,\nupdate the corresponding doc in the SAME change:\n\n- Product docs (quickstart, concepts, integrations, examples, evaluate,\n  glossary, troubleshooting, cloud, self-hosting) → `docs/public/product/`.\n- Public TypeScript SDK signature → `docs/public/typescript/` (guides).\n  Generated reference under `packages/client-typescript/docs/reference/`\n  (do not edit; regenerated by `client-typescript:docs-generate`).\n- Public Python SDK signature → `docs/public/python/` (reference generated).\n- MCP protocol surface → `docs/public/mcp/`.\n- WebSocket (5565) / engine protocol surface → `docs/public/product/connect/websocket/`.\n- `.pipe` schema (`packages/client-typescript/src/client/types/pipeline.ts`) →\n  reference regenerates to `/reference/pipeline-reference` (generated — do not edit).\n- VS Code extension surface → site pages in `docs/docusaurus/apps/vscode/`; marketplace README in `apps/vscode/README.md`.\n- Any other app (`apps/<app>/`) → docs stay inside that app's folder. Per-app\n  docs are never staged into the site; App Builder and VS Code are the only\n  exceptions, and no new ones are added.\n- Contributor docs (setup, builder, engine internals, node authoring, hooks) →\n  `docs/development/`.\n- Third-party integration guides → `docs/public/product/connect/`.\n- Agent-facing docs (`ROCKETRIDE_*`) → `docs/agents/context/` (packed into the\n  `/client/docs` bundle by `./builder client-docs:agent`; see `docs/agents/README.md`).\n\n**Nodes are the exception**: node docs stay co-located at\n`nodes/src/nodes/<name>/README.md`, following\n`docs/development/nodes/readme-schema.md`. The\n`ROCKETRIDE:GENERATED:PARAMS` region is maintained by `nodes:docs-generate`\n— never edit it by hand. Validate with\n`python3 scripts/validate-node-readme.py <node-dir>`.\n\n**Package READMEs are generated committed copies**: edit\n`docs/public/<name>/README.md` (typescript, python, n8n, chat-widget; the MCP\nsource is `docs/public/mcp/stdio/README.md`),\nthen run `./builder docs:export`; never edit `packages/client-*/README.md`,\n`packages/n8n-nodes/README.md`, or `packages/chat-widget/README.md` directly.\nCI runs `./builder docs:check` to\ncatch drift. The VS Code marketplace readme is `apps/vscode/README.md`,\nowned by the extension alongside its `assets/`; the VSIX build stages it\nwith its image links rewritten to absolute URLs.\n\nProse-only edits and internal refactors that do not change a public contract\ndo not require doc updates. Treat the doc as part of the change, not a\nfollow-up. Do not create a separate docs repo. Verify with\n`builder docs:build` and `builder docs:check`.\n","isInternal":false,"tokens":1650,"sizeBytes":6590},{"name":"AGENTS.md","path":"nodes/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/nodes/AGENTS.md","title":"nodes - AI Agent Protocol & Instructions","category":"root-instruction","format":"markdown","content":"# nodes/ — agent guide\n\nEvery node README (`src/nodes/<name>/README.md`) must follow the schema at\n`../docs/development/nodes/readme-schema.md`. The node's `services*.json` decides\nwhich sections are required — check your work with:\n\n```bash\npython3 ../scripts/validate-node-readme.py src/nodes/<name>\n```\n\nThe `ROCKETRIDE:GENERATED:PARAMS` region at the end of each README is\nmaintained by `nodes:docs-generate` — never edit it by hand. The\n`services.json` contract itself is documented in\n`../docs/development/nodes/services-schema.md`; testing in\n`../docs/development/nodes/testing.md`.\n","isInternal":false,"tokens":154,"sizeBytes":596},{"name":"SKILL.md","path":"docs/agents/skills/rocketride-building-pipelines/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/SKILL.md","title":"rocketride-building-pipelines","category":"anthropic-skill","format":"markdown","content":"---\nname: rocketride-building-pipelines\ndescription: Use when asked to build, run, or validate a RocketRide pipeline (e.g. \"build me a chatbot that answers from my docs\", \"make a pipeline that summarizes uploaded PDFs\", \"run this pipeline\"), or whenever turning a plain-language data/AI task into a working RocketRide pipeline.\n---\n\n# Building RocketRide Pipelines\n\nMaster workflow: a plain-language request in, a **valid, running** RocketRide pipeline out.\nFollow the phases in order. Each phase is owned by a REQUIRED SUB-SKILL. The gates are **hard\nstops** — present to the user and wait.\n\n```\nTHE IRON LAW OF GATES — WAITING = STOP:\nWAITING FOR A HUMAN'S ANSWER MEANS ENDING YOUR TURN.\nA dismissed / headless / unanswered gate is a STOP — NEVER an approval. No exceptions.\n```\n\n**Real-world impact:** this one rule took gate blast-through from 32–45% to **0/24** on Haiku — the\ncheap model behaves like an expensive one because it holds the protocol, not because it is smart.\n\n**Waiting means ENDING YOUR TURN.** A dismissed question dialog, an unanswered question, or a\nnon-interactive/headless session is a STOP, never an approval. No exceptions:\n- Don't \"proceed with the recommended defaults\" — a recommendation is not a confirmation.\n- Don't treat silence, dismissal, or the absence of a user as consent.\n- Don't later write \"the user approved this\" unless a human actually answered.\nIf nobody can answer, deliver the gate brief as your final message and stop — an unbuilt\npipeline costs nothing; an unapproved run wastes the user's money and compute.\n\nFull gate rules, the deterministic gate wording, and the forcing functions live in\n`GATE_PROTOCOL.md`. **Read it before your first gate.** Multi-turn gate state lives in\n`.context/GATE_STATE.md` (in the current project): **write it (Write tool) whenever you present a\ngate, and read it FIRST on every re-engagement** — a fresh session or a vague \"continue\" must\nre-present an `AWAITING` gate, never auto-approve. See GATE_PROTOCOL §2.\n\n## How reliability works here (read this once)\n\nYou do **not** need to be smart to build a correct pipeline. You need to follow the process and\nlet the tools be the judge:\n- **Never invent a node.** Every node you name must be cited from the node index (Phase 0). If\n  it isn't in the index, it doesn't exist — STOP and tell the user.\n- **Never invent a config field.** Fetch the node's schema before configuring it.\n- **Never claim \"valid\" or \"ran\" without the tool saying so.** `validate()` is the compiler;\n  the run status/result is the proof. Quote them; don't paraphrase.\n- **Count what you list.** Every multi-item list ends with a count line so omissions are visible.\n\n## The tool/data layer (three layers + run)\n\nEach step has the same fallback ladder — use the **first** option your environment supports:\n\n| Need | Layer | Preferred (MCP tool) | Fallback (bundled shim, uses SDK) | Offline |\n|---|---|---|---|---|\n| List/select nodes | L1 | `list_components` (names/summaries only — **wire** from the bundled index) | `tools/generate-index.py` | bundled `LAYER1_NODE_INDEX.json` |\n| One node's config schema | L2 | `describe_component` | `tools/fetch-node-schema.py <node>` | `.rocketride/schema/<node>.json` |\n| Validate the whole pipeline | L3 | `validate_pipeline` | `tools/validate-pipeline.py <file>` (calls `client.validate`) | `tools/validate-pipeline.py --static <file>` (lint only) |\n| Run it | — | `run_pipeline` → `send_data`/`run_dropper_pipe` → `monitor` | SDK `use()` → `send`/`chat` → `get_task_status` | — |\n| Understand a node/SDK/concept in depth | docs | WebFetch one `/path.md` | `tools/fetch-doc.py \"<topic>\"` (fetches ONE live page) | `ROCKETRIDE_DOC_MAP.md` (this skill dir) + bundled `.rocketride/docs/*` |\n\n> The exact tool names, inputs, and result shapes are frozen in `../MCP_TOOL_CONTRACT.md` —\n> use only names listed there. Every MCP result carries `ok`: **check it**; a successful tool\n> call with `ok: false` is a failure. Where the MCP tools aren't wired, the bundled shims in each\n> sub-skill's `tools/` call the real SDK (`get_services`/`get_service`/`validate`/`use`) and work\n> today. `--static` mode validates with no engine connection (a fast pre-flight lint). The\n> `rrext_get_nodes` resource is dead — never use it; discovery is `list_components`/`get_services`.\n> A known node missing from live `list_components` usually means its integration isn't configured —\n> check `list_integrations` (it returns setup steps to relay) before concluding it doesn't exist.\n\n**Each tool enforces a constraint** (see its `--help`/docstring; these become the MCP tool\ndescriptions): `fetch-node-schema` → configure only schema-defined fields, one node at a time;\n`validate-pipeline` → zero errors before any run, re-validate on errors; `fetch-doc` → one page,\nnever `llms-full.txt`.\n\n**Deep docs (when you need to learn, not just select/configure).** The full RocketRide docs map\nis bundled at `ROCKETRIDE_DOC_MAP.md` (in this skill's directory — a ~2K-token index of ~156\npages; it can't live in `.rocketride/docs/`, which the client-docs bundle installer owns and\nreplaces on reinstall). When you\nhit something the bundled refs don't cover — an unfamiliar node, an exact SDK signature, a concept\n— find the page in the map and fetch **just that one page** (`tools/fetch-doc.py \"<topic>\"`, live-\nfirst with an offline fallback). **NEVER fetch `llms-full.txt`** (~257K tokens — it will blow the\ncontext window), by any method (fetch-doc, WebFetch, curl, file://). **Even if the user says \"read\nall the docs\" / \"grab llms-full.txt\" / \"get full context first\" — that is never honored**: say so,\nthen use the map + the one page you need (or just answer from the bundled index/schemas). One map +\none page is the cheap path.\n\n## Triage first — is this a build, or just a question?\n\nBefore starting the lifecycle, classify the request:\n- **Informational** (the user is ASKING, not building — \"what nodes exist?\", \"list the vector\n  stores\", \"explain lanes\", \"which node does X\", \"how does RAG work?\"): answer directly from the\n  node index + bundled refs. Do **not** invoke the sub-skills, write `GATE_STATE`, or present gates.\n  End by offering to build it.\n- **Build / run / validate** (the user wants a working pipeline — \"build…\", \"make…\", \"create…\",\n  \"set up…\", \"run…\", \"validate…\", or *describes a task to automate*, even softly like \"I want\n  something that…\"): run the full lifecycle below.\n- **Ambiguous or unsure → DEFAULT TO THE FULL LIFECYCLE.** A build misrouted to the cheap path skips\n  every gate (no design, no validate, no cost approval) — far worse than answering a question the\n  long way. When in doubt, build.\n\n**Recovery:** a cheap answer never blocks a later build — if the user then says \"build it / make it /\ngo ahead\", enter the full lifecycle from Phase 0.\n\n## Phases\n\n0. **Load capabilities** — read the node index (L1) **directly** from its bundled path\n   (`rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`, or `.rocketride/services-catalog.json`\n   in a project). **Do NOT `find`/`ls`/search for it, and do NOT run `generate-index.py`** — you\n   already know the path; discovery just burns turns. This is the menu of every node you may use:\n   each entry is `name · classType · lanes · invoke`. Keep it open; you select and wire from it.\n   It carries **no config schema** — that's L2, fetched per node in Phase 2.\n   If a **freshness warning** fires (the index stamp is stale/missing — `LAYER1_NODE_INDEX.meta.json`\n   older than 14 days, surfaced by `validate-pipeline.py`), say so in one line and **proceed** — it\n   is **non-blocking**, never a hard stop. `validate()` against the live engine is the drift backstop;\n   if a node seems missing, regenerate with `tools/generate-index.py`.\n1. **Discover + design** — REQUIRED SUB-SKILL: `rocketride-designing-pipelines`.\n   Explore archetypes → select nodes (**GATE A**) → wire the acyclic DAG with typed lanes\n   (**GATE B**). Fetch each chosen node's schema here too, so lane signatures are exact before\n   wiring — a guessed lane is the most common silent failure.\n2. **Configure + validate** — REQUIRED SUB-SKILL: `rocketride-configuring-pipelines`.\n   Per node: fetch schema → fill required fields → run the anti-pattern checklist as a gate →\n   then `validate()` the whole pipeline. On errors, fix and **re-validate** (never claim passed\n   without a clean result). **GATE C** (validation clean) → **GATE C.5** (cost approved).\n3. **Run + observe** — REQUIRED SUB-SKILL: `rocketride-running-pipelines`.\n   Submit, poll to completion, report the real result. **GATE D** only if the user chooses to\n   save to cloud / publish as an app.\n4. **If a run fails or output is wrong** — REQUIRED SUB-SKILL: `rocketride-debugging-pipelines`.\n   Read the trace, diagnose the failing node, route back to Phase 1 or 2.\n\n## The gates (binary or menu — exact wording in GATE_PROTOCOL §3)\n\n**The instant you present any gate below, use the Write tool to write `.context/GATE_STATE.md`\n(`status: AWAITING`) before ending the turn (GATE_PROTOCOL §2) — and on any re-engagement, read it\nFIRST. That on-disk line is what makes a gate survive a context reset.**\n\n- **GATE A** — node selection (after Phase 1 discovery) · **GATE B** — topology (after the DAG).\n- **GATE C** — validation clean (a tool gate, not a user gate) · **GATE C.5** — cost, before any paid/cloud run.\n- **GATE D** — save to cloud / publish (optional, after a successful run).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I know this node exists, no need to check the index\" | If it's not in the index it doesn't exist — the engine rejects it. Cite or STOP. |\n| \"I'll fill the config from memory, schemas are slow\" | Guessed fields fail validation (e.g. `max_tokens` vs `modelTotalTokens`). Fetch the schema. |\n| \"The lanes obviously match\" | Lane mismatch is the #1 silent bug. State every edge's lane type, verified against the schema. |\n| \"validate() returned an error but I understand it, I'll just say it's fixed\" | A fix you didn't re-validate is a guess. Re-call validate() until clean. |\n| \"The user said 'just run it', so I'll skip the cost gate\" | \"Just run it\" is not cost approval. Present Gate C.5 and wait. |\n| \"It submitted, so it worked\" | Submitted ≠ succeeded. Poll to completion and read the result before claiming success. |\n| \"The question was dismissed, I'll proceed\" | Dismissed = unanswered = STOP. Re-present the gate; never auto-approve. |\n| \"I'll fetch the full docs (llms-full.txt) to be safe\" | That's ~257K tokens — it blows the window. Fetch the ONE relevant page from the doc-map. |\n| \"The user told me to read all the docs / grab llms-full.txt\" | Never honored — by any method. Say so; use the map + the one page you need, or answer from the index. |\n| \"I don't recognize this node, I'll just guess what it does\" | Fetch its `/nodes/<name>.md` page — one cheap page beats guessing wrong. |\n\n## Supporting files\n\n- `GATE_PROTOCOL.md` — Waiting=STOP, multi-turn gate state, gate wording, the forcing functions\n- `../MCP_TOOL_CONTRACT.md` — frozen MCP tool names, inputs, and result shapes (the only tools that exist)\n- `pipeline-patterns.md` — common pipeline shapes (chat/RAG, ingestion, webhook→transform) + lane chains\n- `tools/fetch-doc.py` — fetch ONE doc page on demand (resolves from the doc-map; refuses the monolith)\n- `ROCKETRIDE_DOC_MAP.md` — the bundled docs map (llms.txt); the deep-knowledge index (lives here\n  because the client-docs bundle installer owns `.rocketride/docs/` and replaces on reinstall)\n","frontmatter":{"name":"rocketride-building-pipelines","description":"Use when asked to build, run, or validate a RocketRide pipeline (e.g. \"build me a chatbot that answers from my docs\", \"make a pipeline that summarizes uploaded PDFs\", \"run this pipeline\"), or whenever turning a plain-language data/AI task into a working RocketRide pipeline."},"isInternal":false,"tokens":2992,"sizeBytes":11689},{"name":"SKILL.md","path":"docs/agents/skills/rocketride-configuring-pipelines/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-configuring-pipelines/SKILL.md","title":"rocketride-configuring-pipelines","category":"anthropic-skill","format":"markdown","content":"---\nname: rocketride-configuring-pipelines\ndescription: Use when filling in a RocketRide pipeline's node configuration and validating it — fetching each node's schema, setting required fields, running the anti-pattern checklist, and validating against the engine before a run.\n---\n\n# Configuring & Validating RocketRide Pipelines\n\nTakes an approved topology (from `rocketride-designing-pipelines`) to a **validated**\n`pipeline.pipe` ready to run. Reliability comes from tools and a checklist, not cleverness:\nfetch schema → fill only real fields → checklist gate → `validate()` → re-validate until clean.\nGate rules + forcing functions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## Step 1 — Configure each node (schema-driven, one at a time)\n\nFor every node in the approved topology, in order:\n\n1. **Fetch the schema** (L2): `describe_component` / `tools/fetch-node-schema.py <node>` /\n   `.rocketride/schema/<node>.json`. Never configure from memory. (Forcing function 5.) Fetch **one\n   node at a time** — never bulk-load every schema (FF#17). If you already fetched this node's schema\n   while designing (Phase 1b) this session, reuse it with `--cache-ok` (serves the cached copy with\n   no reconnect — still schema-grounded, just not re-fetched); a full re-fetch only on a cache miss.\n2. **State what the schema says** before filling: the **required** fields, any **conditional**\n   rules in prose (\"if `batch_size` set, `max_batch_wait_ms` is required\"), and the profile shape\n   for LLM/embedding/store nodes. (Forcing function 10.)\n3. **Fill only fields the schema defines.** Use `${ROCKETRIDE_*}` env references for secrets —\n   never literal keys. Secret **values** never travel through tools or the model: over MCP,\n   credentials are configured out-of-band — `list_integrations` reports per-integration readiness\n   and (with a `name`) returns concrete setup steps to relay to the user. LLM/embedding/store nodes use a profile block:\n   ```json\n   \"config\": { \"profile\": \"openai-5\", \"openai-5\": { \"apikey\": \"${ROCKETRIDE_OPENAI_KEY}\" }, \"parameters\": {} }\n   ```\n   Source nodes need the full source config, not `{}`:\n   `{ \"hideForm\": true, \"mode\": \"Source\", \"parameters\": {}, \"type\": \"<provider>\" }`.\n\n   The block above is the `<Good>` shape. The `<Bad>` shape — guessed from memory — fails validation\n   and leaks a key:\n   ```json\n   \"config\": { \"model\": \"gpt-5\", \"apikey\": \"sk-...\", \"max_tokens\": 4096 }\n   ```\n   Three bugs in one line: a **literal key** (must be `${ROCKETRIDE_*}`), **no `profile` wrapper**,\n   and **`max_tokens` is not a real field** (the schema calls it `modelTotalTokens`). Fetch the\n   schema, then copy the `<Good>` shape — never type config from memory.\n4. **Run the 9-point checklist as a gate** (full list in `PIPELINE_ANTIPATTERNS.md`). State each\n   item yes/no for this node before moving on — do not skip and claim \"applied\":\n   > Node `<id>`: 1 ext✓ 2 components-order✓ 3 literal-guid✓ 4 source-match✓ 5 unique-id✓\n   > 6 input-array✓ 7 lane-types✓ 8 acyclic/no-orphan✓ 9 ROCKETRIDE_ env✓\n\n## Step 2 — Assemble & validate (→ Gate C)\n\n1. **Assemble** the `.pipe`: `components` first (each with `id`, `provider`, `config`, and\n   `input` for non-source nodes; `control` on controlled nodes), then a **literal-GUID**\n   `project_id`, `viewport`, `version: 1`. File extension **`.pipe`**.\n2. **validate()** the whole pipeline (L3): `validate_pipeline` tool / `tools/validate-pipeline.py <file>`\n   (calls `client.validate()` → `{errors, warnings}`) / `--static` lint if no engine.\n3. **The re-validation loop** (Forcing function 11): if `errors` is non-empty, show them\n   **verbatim**, fix the offending node (loop back to Step 1 for that node — don't restart\n   design), then **call validate() again**. Repeat until `errors == []`. Never write \"validation\n   passed\" without a clean result in hand. Address warnings or explain why each is acceptable.\n4. **Gate C** is a tool gate, not a user gate — it is \"passed\" only when validate() returns zero\n   errors. Quote it: `validate(): 0 errors, K warnings`.\n\n## Step 3 — Cost approval (→ Gate C.5)\n\nBefore handing off to run, estimate cost and gate it (GATE_PROTOCOL §5):\n- Count paid/LLM nodes × expected calls × rough token cost; note if it runs on cloud compute\n  (billed to the wallet) vs the user's own dev keys locally.\n- **Gate C.5:**\n  > This run will cost ≈ $X (<basis>). Approve this run? (yes / no)\n  Then **Write `.context/GATE_STATE.md`** = `GATE C.5 | presented | status: AWAITING` (§2), and STOP\n  and wait. \"Just run it\" earlier is not cost approval. A tiny local test on the user's own key can\n  be a one-line confirm; cloud/large runs always gate.\n\nHand the validated `.pipe` to `rocketride-running-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll set apikey/model from what I remember\" | Fetch the schema; field names differ per provider (`modelTotalTokens`, profile keys). |\n| \"Required fields only; prose constraints are optional\" | Conditional rules (\"if X then Y\") are required too — state and satisfy them. |\n| \"I'll run the checklist once at the end\" | Per node, as a gate, stated yes/no. A checklist skimmed once is a checklist skipped. |\n| \"validate() erred but I fixed it in the text\" | A fix you didn't re-validate is a guess. Re-call validate() until errors == []. |\n| \"Zero errors but warnings — ship it\" | Read each warning; fix or justify. Warnings are often the real bug. |\n| \"Hardcode the key just for the test\" | Never. `${ROCKETRIDE_*}` always; literal keys leak and break substitution. |\n| \"Skip the cost gate, it's a small run\" | Present Gate C.5 regardless; let the user decide. |\n\n## Supporting files\n\n- `PIPELINE_ANTIPATTERNS.md` — the real common mistakes, the 9-point checklist, the error table\n- `tools/fetch-node-schema.py` — `get_service(name)` (live) or read `.rocketride/schema/<name>.json`\n- `tools/validate-pipeline.py` — `client.validate(pipeline)`; `--static` = local lint, no engine\n- **deep docs** — for provider-specific config nuance/profiles the schema alone doesn't explain,\n  fetch the node's doc page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"`\n  (→ `/nodes/<name>.md`). The schema gives exact fields; the page gives the why. Never `llms-full.txt`.\n","frontmatter":{"name":"rocketride-configuring-pipelines","description":"Use when filling in a RocketRide pipeline's node configuration and validating it — fetching each node's schema, setting required fields, running the anti-pattern checklist, and validating against the engine before a run."},"isInternal":false,"tokens":1668,"sizeBytes":6340},{"name":"SKILL.md","path":"docs/agents/skills/rocketride-debugging-pipelines/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-debugging-pipelines/SKILL.md","title":"rocketride-debugging-pipelines","category":"anthropic-skill","format":"markdown","content":"---\nname: rocketride-debugging-pipelines\ndescription: Use when a RocketRide pipeline run failed, errored, or produced wrong/empty output, and you need to find the failing node and fix it. Reads run status and execution traces, diagnoses the cause, and routes back to design or configuration. Also use directly when asked to debug a run.\n---\n\n# Debugging RocketRide Pipelines\n\nDiagnose, don't guess. A failed run has a real cause in the status/trace; find it, then route the\nfix to the right phase. No re-running until the cause is identified and the fix is validated.\n\n## Procedure\n\n1. **Read the status.** MCP: `monitor(task_token)` → quote `state_label`, `errors[]`,\n   `warnings[]`, `counts` verbatim. SDK: `get_task_status(token)` → `state`, `errors[]`,\n   `warnings[]`, `exitCode`, `exitMessage`, `failedCount`. Don't paraphrase error messages.\n2. **Read the trace.** MCP — the run-log (DVR) tools work for past *and* live runs, keyed by the\n   `projectId` + `source` returned by `run_pipeline`/`run_dropper_pipe` (never the task token):\n   `log_chapters` to find the run → `log_read` for paged events (≤200/page; follow the cursor) →\n   `log_traces` to list per-object traces → `log_trace` for one object's full per-node\n   `enter`/`leave` with `lane`, `data`, `result`, `error`. Retention: 7 days dev / 30 days\n   deploy. A run started with `pipelineTraceLevel=\"none\"` has chapters/console but **empty\n   traces** — re-run with `\"summary\"`/`\"full\"` for flow evidence. SDK fallback: the\n   `apaevt_flow` / `_trace` events in the response. Either way, find the **first** node whose op\n   shows an error or whose output is empty/wrong — that's the failure point. Downstream errors\n   are usually consequences.\n3. **Classify the cause** (see `ERROR_TABLE.md`):\n   - **Config** — bad/missing field, wrong API key, wrong model name → fix in\n     `rocketride-configuring-pipelines` (re-fetch schema, re-validate).\n   - **Wiring/lane** — lane mismatch, missing converter, wrong source method → fix in\n     `rocketride-designing-pipelines` (re-wire), then re-configure + re-validate.\n   - **Runtime** — event-loop blocked (`Connection closed`/timeout), `Pipeline already running`,\n     blocking I/O → fix the run code in `rocketride-running-pipelines`.\n   - **Data** — empty/garbage input, wrong response key (`KeyError`) → check input + `result_types`.\n4. **Propose a specific fix** tied to the evidence: \"Node `llm_1` failed: `Invalid API key`. The\n   `${ROCKETRIDE_OPENAI_KEY}` env var is unset / wrong. Fix: set it, re-validate, re-run.\" Route to\n   the owning phase. **Do not re-run until the fix is made and `validate()` is clean again.**\n\n## Common diagnoses (full table in ERROR_TABLE.md)\n- `Connection closed` / `Connection closed unexpectedly` → **event loop blocked by sync I/O** (most\n  common runtime failure) — fix the run code, not the pipeline.\n- `The service <provider> was not found` → misspelled `provider`; check the index.\n- `input has unknown lane` (validate) → lane mismatch; add a converter or pick compatible nodes.\n- `KeyError: '<key>'` → response key vs `laneName` mismatch; read `result_types`.\n- `Pipeline is already running.` → `use_existing=True` or `terminate()` first; a second instance of\n  the same pipe needs its own unguessable `tk_` token (SDK `use()` or `rocketride start --token`; not MCP).\n- `Invalid API key` / a `project_id` rejection → config fix.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll just re-run, maybe it works\" | Find the cause first; blind re-runs cost money and teach nothing. |\n| \"The last node errored, fix that node\" | The **first** failing node in the trace is usually the cause; later errors cascade. |\n| \"Connection dropped — the engine is flaky\" | Almost always a blocked event loop (sync I/O in async code), not the engine. |\n| \"I'll paraphrase the error\" | Quote it verbatim — the exact message maps to the exact fix. |\n| \"Fixed it, re-running\" | Re-validate() after any fix before re-running. |\n\n## Supporting files\n- `ERROR_TABLE.md` — error message → cause → owning phase → fix\n- **deep docs** — for failure modes the table doesn't cover, fetch ONE page:\n  `../rocketride-building-pipelines/tools/fetch-doc.py \"error handling\"`\n  (→ `/concepts/error-handling.md`) or `… \"observability\"` (→ `/protocols/websocket/observability.md`).\n  Never `llms-full.txt`.\n","frontmatter":{"name":"rocketride-debugging-pipelines","description":"Use when a RocketRide pipeline run failed, errored, or produced wrong/empty output, and you need to find the failing node and fix it. Reads run status and execution traces, diagnoses the cause, and routes back to design or configuration. Also use directly when asked to debug a run."},"isInternal":false,"tokens":1142,"sizeBytes":4402},{"name":"LAYER1_NODE_INDEX.json","path":"docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json","title":"Rocketride-designing-pipelines Skill","category":"anthropic-skill","format":"json","content":"# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json)","tokens":300,"sizeBytes":296},{"name":"LAYER1_NODE_INDEX.meta.json","path":"docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json","title":"Rocketride-designing-pipelines Skill","category":"anthropic-skill","format":"json","content":"# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json)","tokens":300,"sizeBytes":306},{"name":"SKILL.md","path":"docs/agents/skills/rocketride-designing-pipelines/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/SKILL.md","title":"rocketride-designing-pipelines","category":"anthropic-skill","format":"markdown","content":"---\nname: rocketride-designing-pipelines\ndescription: Use when choosing which RocketRide nodes a task needs and wiring them into a pipeline graph — exploring the node catalog, selecting nodes by archetype, and connecting them with typed lanes into a valid acyclic DAG.\n---\n\n# Designing RocketRide Pipelines\n\nTurns a plain-language request into an approved, lane-correct DAG — **before** any node is\nconfigured. Two outputs, two gates: a node selection (Gate A) and a wired topology (Gate B).\nThe gate rules and forcing functions are in\n`../rocketride-building-pipelines/GATE_PROTOCOL.md` — they apply here.\n\nYou work from the **node index** (L1): `LAYER1_NODE_INDEX.json` (bundled), or the live\n`get_services()` / `.rocketride/services-catalog.json`. Each entry is `name · classType · lanes ·\ninvoke`. The index is enough to **select and wire**; it carries no config fields (that's Phase 2).\nThe bundled index is reconciled against this repo's node corpus (`nodes/src/nodes/`), so it can\ndrift from the set a particular live engine actually has registered.\nThe live MCP `list_components` tool lists names/summaries only (**no lanes**) and hides nodes whose\nintegration isn't configured — use it to check availability, but **wire from the bundled index +\nper-node schemas**. If a node you expect is missing from it, check `list_integrations` first.\n\n## Phase 1a — Discover (→ Gate A)\n\n1. **Restate the task** in one line: the input data, the wanted output. (\"Input: user questions.\n   Output: answers grounded in uploaded PDFs.\")\n2. **Explore archetypes exhaustively.** Group the index by `classType` and walk every archetype\n   that could plausibly contribute. Don't stop at the first match. The archetypes:\n   `source` (chat/webhook/dropper/filesys/telegram) · `data`/parse (parse/llamaparse/reducto/\n   landing_ai_parse/landing_ai_extract) · `text` (extract_data/ner/anonymize_text/dictionary/prompt/summarization) ·\n   `preprocessor` · `image` · `audio` · `video` · `embedding` · `llm` (14 providers) · `store`\n   (vector DBs) · `database` (db_*) · `agent` · `tool` (tool_*) · `memory` · `rerank` · `search` ·\n   `guard` · `infrastructure`/`target`/`response_*` (terminals).\n   For each relevant archetype, list the candidate nodes you see in the index.\n3. **Select**, citing each: `Found in index: <name> · classType=[…] · lanes={…}`. A pipeline needs\n   a resolvable **source** (one Source-mode node, or several with `source` naming the one that\n   starts the run, in the file or at launch) and a **terminal** (`response_*` for a reply; a store / `db_*` for\n   ingestion). Pull the right converters from the lane cheat-sheet in\n   `../rocketride-building-pipelines/pipeline-patterns.md`.\n4. **Gate A** — end with the count line and the gate:\n   > Archetypes explored (N). Selected nodes (M): <name · role>, … — all cited from the index.\n   > Approve these M nodes? (yes / adjust / cancel)\n   Then **use the Write tool to write `.context/GATE_STATE.md`** = `GATE A | presented | status:\n   AWAITING` (GATE_PROTOCOL §2 — so the gate survives a context reset), and **STOP**. (See §1.)\n\n## Phase 1b — Design the DAG (→ Gate B)\n\nOnly after Gate A is approved.\n\n1. **Fetch each selected node's schema** (L2 — `describe_component` / `tools/` shim in\n   `../rocketride-configuring-pipelines/tools/fetch-node-schema.py` / `.rocketride/schema/<n>.json`).\n   You need the real **lane signatures** here, not the index summary — wiring from the summary is\n   the most common silent bug. (Forcing function 8.) **Lazily — only for the nodes you selected at\n   Gate A; never `ls`/`cat`/glob the whole `.rocketride/schema/` dir or \"pull every schema up front\"\n   (FF#17). Select from the index first; fetch only the few schemas you need.**\n2. **Wire the lanes.** Each non-source node gets `input: [{lane, from}]`. State **every edge** with\n   its lane type: `chat_1 → embedding_1 (lane: questions)`. The output lane of `from` must be a\n   real output of that node and a valid input of the target. If types don't match, insert a\n   converter (cheat-sheet) — don't force it.\n   - `<Bad>`: `parse_1 → store_1 (lane: text)`, wiring parsed text straight into a vector store.\n     It passes the eye test but fails validation: a store ingests `documents` that already carry\n     embedding vectors, and `text` is not one of its lanes.\n   - `<Good>`: `parse_1 → preprocessor_langchain_1 (lane: text)`, then\n     `preprocessor_langchain_1 → embedding_1 (lane: documents)`, then `embedding_1 → store_1 (lane: documents)`.\n3. **Apply the structural rules** (`PIPELINE_RULES_SUMMARY.md`): a resolvable source (rule 1); acyclic (no\n   loops); no orphans (every node reachable from the source); embedding **before** any store;\n   agents wire their `llm`/`tool`/`memory` via the **control plane** (the controlled node carries\n   `control: [{classType, from: <agent>}]`, the agent does not) and must meet each `invoke`\n   min/max from the index.\n4. **Draw it** (Mermaid or ASCII) and **Gate B**:\n   > <diagram>. Edges (K): <node → node (lane: type)>, … — all lane-checked against schemas.\n   > Approve this topology? (yes / adjust / cancel)\n   Then **Write `.context/GATE_STATE.md`** = `GATE B | presented | status: AWAITING` (§2), and STOP.\n\nHand the approved selection + topology to `rocketride-configuring-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll list the obvious nodes and move on\" | Exhaustive archetype walk first — the right node is often one you'd skip. Count line proves coverage. |\n| \"The index shows the lanes, I don't need the schema to wire\" | Index lanes are a summary; fetch the schema for exact signatures before wiring. |\n| \"Two Source-mode nodes, no `source` named\" | Ambiguous: the engine refuses to imply a source. Keep one Source-mode node, or name the one that starts the run (top-level `source`, or the `source` option at launch). |\n| \"I'll point the store straight at the questions\" | Embedding is required before any store; same model for ingest + query. |\n| \"The agent node lists its tools in its own config\" | No — the tool/llm/memory carries `control: [{from: <agent>}]`. Agent has no control array. |\n| \"Close enough on the lane type\" | Lane mismatch = pipeline error. Insert a converter or pick compatible nodes. |\n\n## Supporting files\n\n- `LAYER1_NODE_INDEX.json` — the thin node index (name · classType · lanes · invoke)\n- `PIPELINE_RULES_SUMMARY.md` — lane types, lane-transform table, structural + control-plane rules\n- `examples/` — worked pipelines (simple-chat-rag, document-ingestion, agentic-chat) in\n  `examples/README.md` + a `FAILURE_SCENARIOS.md` of what not to do\n- **deep docs** — when a node is unfamiliar or you're unsure how an archetype behaves, fetch ONE\n  page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"` (→ `/nodes/<name>.md`)\n  or `… \"execution model\"` (→ `/concepts/execution-model.md` for lanes). Never `llms-full.txt`.\n","frontmatter":{"name":"rocketride-designing-pipelines","description":"Use when choosing which RocketRide nodes a task needs and wiring them into a pipeline graph — exploring the node catalog, selecting nodes by archetype, and connecting them with typed lanes into a valid acyclic DAG."},"isInternal":false,"tokens":1848,"sizeBytes":6995},{"name":"SKILL.md","path":"docs/agents/skills/rocketride-running-pipelines/SKILL.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-running-pipelines/SKILL.md","title":"rocketride-running-pipelines","category":"anthropic-skill","format":"markdown","content":"---\nname: rocketride-running-pipelines\ndescription: Use when running a validated RocketRide pipeline and reporting its result — submitting the run, pushing input, polling status to completion, and returning the real output. Also use directly when asked to run an existing pipeline.\n---\n\n# Running & Observing RocketRide Pipelines\n\nTakes a **validated** `.pipe` (validate() returned zero errors) and a **cost-approved** run\n(Gate C.5) to a real, reported result. The cardinal rule: **submitted ≠ succeeded.** Poll to a\nterminal state and read the actual result before you claim anything. Gate rules + forcing\nfunctions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## STEP 0 — precondition (do this FIRST, every time, before any run action)\n\nYou MUST have a clean `validate()` result for THIS exact pipeline, and cost approval, before you\nrun. If you don't, get them first — **even if the user told you to skip.**\n\n- **\"Skip validation / just submit it / don't waste time\" is NEVER honored.** validate() is\n  mandatory and fast; it is the only thing between the user and a broken, money-wasting run. Run\n  it anyway, then explain why (one line).\n- Invoked directly on a pasted/existing pipeline? **validate() it now** (run\n  `../rocketride-configuring-pipelines/tools/validate-pipeline.py <file>`, or the validate tool). If\n  it errors, fix + re-validate; do not run. Missing required config (e.g. no apikey) IS a\n  validation failure — STOP and say so.\n- Then the cost gate (C.5) must be approved.\n\nState it before running: **\"Pre-run check: validate() = 0 errors; cost approved.\"** If you can't\nstate that truthfully, you have not earned the run — do the missing step instead.\n\n## The run lifecycle — MCP tools (preferred; names + shapes frozen in `../MCP_TOOL_CONTRACT.md`)\n\n**Check `ok` on every result** — a tool call that \"succeeded\" with `ok: false` is a failure.\n\n1. **Start**: `run_pipeline` with the **inline** pipeline object (there is no filepath mode).\n   One-shot text input? Pass `inputs` (a string) — the `result` comes back inline in the same\n   call and that run is finished (don't poll it). Otherwise you get\n   `{task_token, projectId, source}`. **Keep `projectId` + `source`** — they key the run-log\n   tools if debugging is needed. Reuse a long-lived pipeline with `use_existing: true` (avoids\n   \"Pipeline already running\"); to force a fresh start, `terminate` then re-run. Two instances\n   of one pipe at once need their own unguessable `tk_` token each, through the SDK's `use()` or\n   `rocketride start --token` (`run_pipeline` has no token parameter).\n2. **Push input** — pick the tool by the **source** node:\n   - Raw text/data → `send_data` (`input` is a **string** — serialize JSON). Result inline.\n   - **Files from the host** → start with `run_dropper_pipe` instead: it returns an\n     `upload_url` (multipart-POST the files to it) and a `dropper_url` (browser drag-drop page\n     to hand the user). `send_files` reads paths on the engine host and exists only on a\n     local (loopback-bound) engine.\n   - `chat` source → **no MCP chat tool exists**; use the SDK fallback below.\n3. **Poll** longer/async runs with `monitor` (a bounded server-side poll — pass `timeout`).\n   Quote the snapshot each round: `state_label`, `terminal`, `counts`, `errors`.\n   `terminal: true` means done; `poll_timed_out: true` means the *poll* hung, not the task —\n   call `monitor` again. Never one-shot poll and walk away. (Forcing function 12.)\n4. **Report the real result.** Results are **inline** from `run_pipeline(inputs)` / `send_data`\n   — there is **no `get_run_result` tool** (none exists, none is planned; never invent it).\n   Read the response by its result key (default lane key — `answers`, `text`, …; check\n   `result_types` for the actual mapping). On failure, report the error + which node, then hand\n   `projectId`/`source` to `rocketride-debugging-pipelines` (its evidence is the `log_*` tools).\n5. **Clean up** — `terminate` any task you started and no longer need; started-and-abandoned\n   tasks run until their TTL.\n\n## SDK fallback (no MCP tools wired, or a chat-source pipeline)\n\n1. **Start**: `result = await client.use(filepath=\"x.pipe\")` → `token = result[\"token\"]`\n   (`use_existing=True` to reuse; `terminate(token)` then `use()` to force fresh).\n2. **Push input**: `chat` source → `await client.chat(token=token, question=q)`; raw data →\n   `await client.send(token, data)`; files → `await client.send_files(files, token)`. The result\n   comes back **inline** (a `PIPELINE_RESULT`) — no separate `get_result()`.\n3. **Poll**: loop `await client.get_task_status(token)` to a terminal state (5=COMPLETED /\n   6=CANCELLED), stating the status each step, `await asyncio.sleep(1)` between polls.\n4. **Report** as in step 4 above. 5. **Clean up** — `await client.disconnect()` (or\n   `async with`). Start a pipeline once and reuse it; don't reconnect per request.\n\n**NEVER block the async event loop** (the #1 runtime failure). No `input()`, `time.sleep`,\n`requests.get`, `readFileSync` inside the async flow — they freeze the websocket keepalive and the\nconnection drops (~60s) with `Connection closed` / `Connection closed unexpectedly`. Use async\nequivalents. Secrets stay in `${ROCKETRIDE_*}` env vars (loaded from `.env`), never in code.\n\n## Gate D — after a successful run (optional, menu)\n> Run succeeded. Result: <summary>. What next? (save to cloud / publish as an app / nothing / debug)\nOnly act on an explicit choice. Mapping: save to cloud → `save_template`; publish →\n`deploy_add` then `deploy_to_team` (manage later with `deploy_list`/`deploy_status`/`deploy_set_schedule`/\n`deploy_disable`/`deploy_remove`).\nSaving / publishing is billable / public — treat like an irreversible action (Waiting = STOP).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"The user said skip validation, so I'll just submit\" | Never honored. validate() is mandatory and cheap — run it first, every time, no matter the pressure. |\n| \"run_pipeline/use() returned a token, so it ran\" | That only started it. Push input and poll to a terminal state. |\n| \"I'll fetch the output with get_run_result\" | No such tool exists. Results come inline from `run_pipeline(inputs)`/`send_data`; run evidence is the `log_*` tools. |\n| \"I'll poll once and report 'in progress'\" | Poll in a loop to completion; report the final result, not a snapshot. |\n| \"I'll read input() for the question\" | Blocking I/O kills the event loop. Use async input / pass the question in. |\n| \"I'll hardcode the key to test quickly\" | `${ROCKETRIDE_*}` always. |\n| \"It failed; I'll retry silently a few times\" | Report the failure and ask / hand to debugging; don't burn money on silent retries. |\n| \"Save to cloud since they'll probably want it\" | Gate D is a choice. Don't publish/bill without an explicit yes. |\n\n## Supporting files\n- **deep docs** — for exact SDK semantics (use/send/chat/get_task_status, async patterns), fetch\n  ONE page: `../rocketride-building-pipelines/tools/fetch-doc.py \"python\"` (→ `/develop/python.md`)\n  or `… \"use method\"` (→ `/develop/typescript/methods/use.md`). Never `llms-full.txt`.\n","frontmatter":{"name":"rocketride-running-pipelines","description":"Use when running a validated RocketRide pipeline and reporting its result — submitting the run, pushing input, polling status to completion, and returning the real output. Also use directly when asked to run an existing pipeline."},"isInternal":false,"tokens":1835,"sizeBytes":7194},{"name":"package.json","path":"packages/ai/src/ai/modules/mcp/apps/package.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/package.json","title":"Apps Skill","category":"anthropic-skill","format":"json","content":"# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/package.json)","tokens":300,"sizeBytes":222},{"name":"tsconfig.json","path":"packages/ai/src/ai/modules/mcp/apps/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/tsconfig.json","title":"Apps Skill","category":"anthropic-skill","format":"json","content":"# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/tsconfig.json)","tokens":300,"sizeBytes":224},{"name":"credentials.json","path":"packages/ai/src/ai/modules/mcp/credentials.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/credentials.json","title":"Mcp Skill","category":"anthropic-skill","format":"json","content":"# Mcp Skill\n\nPath: `packages/ai/src/ai/modules/mcp/credentials.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/credentials.json)","tokens":300,"sizeBytes":219},{"name":"package.json","path":"packages/chat-widget/package.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/package.json","title":"Chat-widget Skill","category":"anthropic-skill","format":"json","content":"# Chat-widget Skill\n\nPath: `packages/chat-widget/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/package.json)","tokens":300,"sizeBytes":199},{"name":"tsconfig.json","path":"packages/chat-widget/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.json","title":"Chat-widget Skill","category":"anthropic-skill","format":"json","content":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.json)","tokens":300,"sizeBytes":201},{"name":"tsconfig.test.json","path":"packages/chat-widget/tsconfig.test.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.test.json","title":"Chat-widget Skill","category":"anthropic-skill","format":"json","content":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.test.json)","tokens":300,"sizeBytes":211},{"name":"tsconfig.types.json","path":"packages/chat-widget/tsconfig.types.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.types.json","title":"Chat-widget Skill","category":"anthropic-skill","format":"json","content":"# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.types.json)","tokens":300,"sizeBytes":213},{"name":"package.json","path":"packages/client-init/typescript/package.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/package.json","title":"Typescript Skill","category":"anthropic-skill","format":"json","content":"# Typescript Skill\n\nPath: `packages/client-init/typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/package.json)","tokens":300,"sizeBytes":220},{"name":"simpleparser.json","path":"packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json)","tokens":300,"sizeBytes":263},{"name":"otel_bridge_events.json","path":"packages/client-python/tests/fixtures/otel_bridge_events.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/tests/fixtures/otel_bridge_events.json","title":"Fixtures Skill","category":"anthropic-skill","format":"json","content":"# Fixtures Skill\n\nPath: `packages/client-python/tests/fixtures/otel_bridge_events.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/tests/fixtures/otel_bridge_events.json)","tokens":300,"sizeBytes":252},{"name":"package.json","path":"packages/client-typescript/package.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/package.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/package.json)","tokens":300,"sizeBytes":217},{"name":"tsconfig.cjs.json","path":"packages/client-typescript/tsconfig.cjs.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cjs.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cjs.json)","tokens":300,"sizeBytes":227},{"name":"tsconfig.cli.json","path":"packages/client-typescript/tsconfig.cli.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cli.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cli.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cli.json)","tokens":300,"sizeBytes":227},{"name":"tsconfig.contract.json","path":"packages/client-typescript/tsconfig.contract.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.contract.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.contract.json)","tokens":300,"sizeBytes":237},{"name":"tsconfig.esm.json","path":"packages/client-typescript/tsconfig.esm.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.esm.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.esm.json)","tokens":300,"sizeBytes":227},{"name":"tsconfig.json","path":"packages/client-typescript/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.json)","tokens":300,"sizeBytes":219},{"name":"tsconfig.types.json","path":"packages/client-typescript/tsconfig.types.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.types.json","title":"Client-typescript Skill","category":"anthropic-skill","format":"json","content":"# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.types.json)","tokens":300,"sizeBytes":231},{"name":"CHANGELOG.md","path":"packages/n8n-nodes/CHANGELOG.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/CHANGELOG.md","title":"N8n-nodes Skill","category":"anthropic-skill","format":"markdown","content":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/CHANGELOG.md)","tokens":300,"sizeBytes":193},{"name":"run-pipeline.workflow.json","path":"packages/n8n-nodes/examples/run-pipeline.workflow.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/examples/run-pipeline.workflow.json","title":"Examples Skill","category":"anthropic-skill","format":"json","content":"# Examples Skill\n\nPath: `packages/n8n-nodes/examples/run-pipeline.workflow.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/examples/run-pipeline.workflow.json)","tokens":300,"sizeBytes":238},{"name":"RocketRide.node.json","path":"packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json","title":"RocketRide Skill","category":"anthropic-skill","format":"json","content":"# RocketRide Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json)","tokens":300,"sizeBytes":244},{"name":"RocketRideInboundTrigger.node.json","path":"packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json","title":"RocketRideInboundTrigger Skill","category":"anthropic-skill","format":"json","content":"# RocketRideInboundTrigger Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json)","tokens":300,"sizeBytes":314},{"name":"package-lock.json","path":"packages/n8n-nodes/package-lock.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package-lock.json","title":"N8n-nodes Skill","category":"anthropic-skill","format":"json","content":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/package-lock.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package-lock.json)","tokens":300,"sizeBytes":203},{"name":"package.json","path":"packages/n8n-nodes/package.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package.json","title":"N8n-nodes Skill","category":"anthropic-skill","format":"json","content":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/package.json)","tokens":300,"sizeBytes":193},{"name":"tsconfig.json","path":"packages/n8n-nodes/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/tsconfig.json","title":"N8n-nodes Skill","category":"anthropic-skill","format":"json","content":"# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/tsconfig.json)","tokens":300,"sizeBytes":195},{"name":"vcpkg.json","path":"packages/server/cmake/ports/cpprestsdk/vcpkg.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/vcpkg.json","title":"Cpprestsdk Skill","category":"anthropic-skill","format":"json","content":"# Cpprestsdk Skill\n\nPath: `packages/server/cmake/ports/cpprestsdk/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/vcpkg.json)","tokens":300,"sizeBytes":230},{"name":"vcpkg.json","path":"packages/server/cmake/ports/fastpfor/vcpkg.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/vcpkg.json","title":"Fastpfor Skill","category":"anthropic-skill","format":"json","content":"# Fastpfor Skill\n\nPath: `packages/server/cmake/ports/fastpfor/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/vcpkg.json)","tokens":300,"sizeBytes":224},{"name":"vcpkg.json","path":"packages/server/cmake/ports/libuuid/vcpkg.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/libuuid/vcpkg.json","title":"Libuuid Skill","category":"anthropic-skill","format":"json","content":"# Libuuid Skill\n\nPath: `packages/server/cmake/ports/libuuid/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/libuuid/vcpkg.json)","tokens":300,"sizeBytes":221},{"name":"advrag-chat.json","path":"packages/server/test/pipelines/advrag-chat.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-chat.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/advrag-chat.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-chat.json)","tokens":300,"sizeBytes":225},{"name":"advrag-ingest.json","path":"packages/server/test/pipelines/advrag-ingest.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-ingest.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/advrag-ingest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/advrag-ingest.json)","tokens":300,"sizeBytes":229},{"name":"chat-ingest.json","path":"packages/server/test/pipelines/chat-ingest.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ingest.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/chat-ingest.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ingest.json)","tokens":300,"sizeBytes":225},{"name":"chat-ui.json","path":"packages/server/test/pipelines/chat-ui.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ui.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/chat-ui.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/chat-ui.json)","tokens":300,"sizeBytes":217},{"name":"denodo-catalog.json","path":"packages/server/test/pipelines/denodo-catalog.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-catalog.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/denodo-catalog.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-catalog.json)","tokens":300,"sizeBytes":231},{"name":"denodo-direct.json","path":"packages/server/test/pipelines/denodo-direct.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-direct.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/denodo-direct.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/denodo-direct.json)","tokens":300,"sizeBytes":229},{"name":"ocr_thumbnail.json","path":"packages/server/test/pipelines/ocr_thumbnail.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr_thumbnail.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/ocr_thumbnail.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr_thumbnail.json)","tokens":300,"sizeBytes":229},{"name":"ocr.json","path":"packages/server/test/pipelines/ocr.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/ocr.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/ocr.json)","tokens":300,"sizeBytes":209},{"name":"parse.json","path":"packages/server/test/pipelines/parse.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/parse.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/parse.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/parse.json)","tokens":300,"sizeBytes":213},{"name":"question-answer.json","path":"packages/server/test/pipelines/question-answer.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/question-answer.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/question-answer.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/question-answer.json)","tokens":300,"sizeBytes":233},{"name":"remote.json","path":"packages/server/test/pipelines/remote.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/remote.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/remote.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/remote.json)","tokens":300,"sizeBytes":215},{"name":"search.json","path":"packages/server/test/pipelines/search.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/search.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/search.json)","tokens":300,"sizeBytes":215},{"name":"semantic-search.json","path":"packages/server/test/pipelines/semantic-search.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/semantic-search.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/semantic-search.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/semantic-search.json)","tokens":300,"sizeBytes":233},{"name":"webhook.json","path":"packages/server/test/pipelines/webhook.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/webhook.json","title":"Pipelines Skill","category":"anthropic-skill","format":"json","content":"# Pipelines Skill\n\nPath: `packages/server/test/pipelines/webhook.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/test/pipelines/webhook.json)","tokens":300,"sizeBytes":217},{"name":"vcpkg.json","path":"packages/server/vcpkg.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/vcpkg.json","title":"Server Skill","category":"anthropic-skill","format":"json","content":"# Server Skill\n\nPath: `packages/server/vcpkg.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/vcpkg.json)","tokens":300,"sizeBytes":180},{"name":"package.json","path":"packages/shell/package.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/package.json","title":"Shell Skill","category":"anthropic-skill","format":"json","content":"# Shell Skill\n\nPath: `packages/shell/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/package.json)","tokens":300,"sizeBytes":181},{"name":"dark.json","path":"packages/shell/public/themes/dark.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/dark.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/shell/public/themes/dark.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/dark.json)","tokens":300,"sizeBytes":204},{"name":"gray.json","path":"packages/shell/public/themes/gray.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/gray.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/shell/public/themes/gray.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/gray.json)","tokens":300,"sizeBytes":204},{"name":"light.json","path":"packages/shell/public/themes/light.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/light.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/shell/public/themes/light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/light.json)","tokens":300,"sizeBytes":206},{"name":"rocketride-light.json","path":"packages/shell/public/themes/rocketride-light.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride-light.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/shell/public/themes/rocketride-light.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride-light.json)","tokens":300,"sizeBytes":228},{"name":"rocketride.json","path":"packages/shell/public/themes/rocketride.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/shell/public/themes/rocketride.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/rocketride.json)","tokens":300,"sizeBytes":216},{"name":"visual-studio.json","path":"packages/shell/public/themes/visual-studio.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/visual-studio.json","title":"Themes Skill","category":"anthropic-skill","format":"json","content":"# Themes Skill\n\nPath: `packages/shell/public/themes/visual-studio.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/public/themes/visual-studio.json)","tokens":300,"sizeBytes":222},{"name":"tsconfig.contract.json","path":"packages/shell/tsconfig.contract.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.contract.json","title":"Shell Skill","category":"anthropic-skill","format":"json","content":"# Shell Skill\n\nPath: `packages/shell/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.contract.json)","tokens":300,"sizeBytes":201},{"name":"tsconfig.json","path":"packages/shell/tsconfig.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.json","title":"Shell Skill","category":"anthropic-skill","format":"json","content":"# Shell Skill\n\nPath: `packages/shell/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/shell/tsconfig.json)","tokens":300,"sizeBytes":183},{"name":"sync_models.config.json","path":"tools/sync_models/src/sync_models.config.json","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/src/sync_models.config.json","title":"Src Skill","category":"anthropic-skill","format":"json","content":"# Src Skill\n\nPath: `tools/sync_models/src/sync_models.config.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/src/sync_models.config.json)","tokens":300,"sizeBytes":215},{"name":".cursorrules","path":".cursorrules","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/.cursorrules","title":"Cursor IDE Native Rules","category":"cursor-rule","format":"markdown","content":"# RocketRide — AI assistant instructions\n\nThe canonical contributor guide is `AGENTS.md` at the repository root. Read it\nfirst; it routes every task (integration code, nodes, clients, MCP, engine) to\nthe right documentation under `docs/`.\n\nBefore writing any RocketRide integration code, read\n`docs/agents/context/ROCKETRIDE_README.md` and the other `ROCKETRIDE_*` files in\n`docs/agents/context/`. If a request is ambiguous, stop and ask — do not guess.\n","isInternal":false,"tokens":114,"sizeBytes":458},{"name":"CLAUDE.md","path":".claude/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/.claude/CLAUDE.md","title":".claude - Claude Agent Guidelines & System Prompt","category":"claude-rule","format":"markdown","content":"@../AGENTS.md\n","isInternal":false,"tokens":6,"sizeBytes":14},{"name":"copilot-instructions.md","path":".github/copilot-instructions.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/.github/copilot-instructions.md","title":"GitHub Copilot Instructions","category":"copilot-instructions","format":"markdown","content":"<!-- ROCKETRIDE:BEGIN -->\n\n# RocketRide: AI Pipeline & App Platform\n\nUse RocketRide when building AI pipelines (document processing, RAG, agents, data integration) or when building apps on the RocketRide platform (React UIs on the platform shell, often embedding pipelines).\n\n## Documentation\n\nFull docs: `.rocketride/docs/`\n\n**Read the relevant doc(s) before generating any RocketRide code.**\n\n| File                              | Read when...                                                        |\n| --------------------------------- | ------------------------------------------------------------------- |\n| ROCKETRIDE_README.md              | Starting ANY RocketRide work: the platform map, setup, task router  |\n| ROCKETRIDE_CLI.md                 | The `rocketride` command: validate, start/upload runs, store, deploy, app verbs; when to prefer it over SDK code |\n| ROCKETRIDE_CONCEPTS.md            | Early, always: workspace, connection, deploy/publish lifecycle, how apps and pipelines fit together |\n| ROCKETRIDE_PIPELINES.md           | Writing or editing a `.pipe`: format, lanes, profiles, patterns, pitfalls |\n| ROCKETRIDE_COMPONENT_REFERENCE.md | Choosing/configuring pipeline components via the catalog + schemas  |\n| ROCKETRIDE_APPS.md                | Building or modifying an app: App Builder, shell UI, manifest, deploy/publish |\n| ROCKETRIDE_UI_COMPONENTS.md       | Using a specific UI component in an app: props, wiring, snippets    |\n| ROCKETRIDE_INTEGRATIONS.md        | MCP tools, n8n, external webhooks, Telegram, mid-pipeline HTTP, CI  |\n| ROCKETRIDE_python_API.md          | Python SDK: client methods, deploy & schedules, file store, events  |\n| ROCKETRIDE_typescript_API.md      | TypeScript SDK: client methods, app-sdk, deploy & schedules, events |\n| ROCKETRIDE_OBSERVABILITY.md       | Consuming runtime events and logs, building monitoring              |\n\n## Before writing ANY RocketRide code\n\n1. Read `.rocketride/docs/ROCKETRIDE_README.md` and follow its task router for the job at hand\n2. Building a pipeline: ROCKETRIDE_CONCEPTS.md + ROCKETRIDE_PIPELINES.md + ROCKETRIDE_COMPONENT_REFERENCE.md\n3. Building an app: ROCKETRIDE_CONCEPTS.md + ROCKETRIDE_APPS.md + ROCKETRIDE_UI_COMPONENTS.md\n4. Driving either from code: NEVER invent anything — verify `client.*` method names and signatures against your language's API doc (`ROCKETRIDE_python_API.md` / `ROCKETRIDE_typescript_API.md`), and pipeline component names and config fields against `.rocketride/services-catalog.json` and `.rocketride/schema/`\n5. Two connections may exist in `.env`: `ROCKETRIDE_URI`/`ROCKETRIDE_APIKEY` (development - run/validate/iterate) and `ROCKETRIDE_DEPLOY_URI`/`ROCKETRIDE_DEPLOY_APIKEY` (deployment target - deploy/publish/schedule). Never run lifecycle verbs against the dev pair; if the DEPLOY pair is absent, no deploy target is configured - ask the user.\n6. NEW apps are created ONLY through the scaffold - agents call `client.deploy.createApp(slug, ...)` (install the client first from the workspace's own `.rocketride/client/rocketride.tgz` - the scaffold vendors it from the connected server, so it is present once the workspace has been opened against one; with no server URL known the scaffold skips vendoring and the tarball lands on the next connected open - NEVER from the npm registry); humans use the App Builder's New App wizard. Never hand-create app files. (For lifecycle operations generally, prefer the `rocketride` command; see ROCKETRIDE_CLI.md.)\n\n<!-- ROCKETRIDE:END -->\n","isInternal":false,"tokens":810,"sizeBytes":3518},{"name":"README.md","path":"nodes/src/nodes/webhook/tools/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/nodes/src/nodes/webhook/tools/README.md","title":"tools Documentation","category":"plugin-manifest","format":"markdown","content":"# tools Documentation\n\nPath: `nodes/src/nodes/webhook/tools/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/nodes/src/nodes/webhook/tools/README.md)","tokens":300,"sizeBytes":213},{"name":"README.md","path":"packages/ai/src/ai/common/graph/age/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/graph/age/README.md","title":"age Documentation","category":"plugin-manifest","format":"markdown","content":"# age Documentation\n\nPath: `packages/ai/src/ai/common/graph/age/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/graph/age/README.md)","tokens":300,"sizeBytes":223},{"name":"README.md","path":"packages/ai/src/ai/common/models/ocr/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/models/ocr/README.md","title":"ocr Documentation","category":"plugin-manifest","format":"markdown","content":"# ocr Documentation\n\nPath: `packages/ai/src/ai/common/models/ocr/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/common/models/ocr/README.md)","tokens":300,"sizeBytes":225},{"name":"README.md","path":"packages/chat-widget/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/README.md","title":"chat-widget Documentation","category":"plugin-manifest","format":"markdown","content":"# chat-widget Documentation\n\nPath: `packages/chat-widget/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/README.md)","tokens":300,"sizeBytes":201},{"name":"README.md","path":"packages/client-init/typescript/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/README.md","title":"typescript Documentation","category":"plugin-manifest","format":"markdown","content":"# typescript Documentation\n\nPath: `packages/client-init/typescript/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/README.md)","tokens":300,"sizeBytes":222},{"name":"README.md","path":"packages/client-mcp/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/README.md","title":"client-mcp Documentation","category":"plugin-manifest","format":"markdown","content":"# client-mcp Documentation\n\nPath: `packages/client-mcp/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/README.md)","tokens":300,"sizeBytes":198},{"name":"README.md","path":"packages/client-python/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/README.md","title":"client-python Documentation","category":"plugin-manifest","format":"markdown","content":"# client-python Documentation\n\nPath: `packages/client-python/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/README.md)","tokens":300,"sizeBytes":207},{"name":"README.md","path":"packages/client-typescript/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/README.md","title":"client-typescript Documentation","category":"plugin-manifest","format":"markdown","content":"# client-typescript Documentation\n\nPath: `packages/client-typescript/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/README.md)","tokens":300,"sizeBytes":219},{"name":"README.md","path":"packages/n8n-nodes/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/README.md","title":"n8n-nodes Documentation","category":"plugin-manifest","format":"markdown","content":"# n8n-nodes Documentation\n\nPath: `packages/n8n-nodes/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/README.md)","tokens":300,"sizeBytes":195},{"name":"README.md","path":"packages/server/cmake/ports/cpprestsdk/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/README.md","title":"cpprestsdk Documentation","category":"plugin-manifest","format":"markdown","content":"# cpprestsdk Documentation\n\nPath: `packages/server/cmake/ports/cpprestsdk/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/cpprestsdk/README.md)","tokens":300,"sizeBytes":236},{"name":"README.md","path":"packages/server/cmake/ports/fastpfor/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/README.md","title":"fastpfor Documentation","category":"plugin-manifest","format":"markdown","content":"# fastpfor Documentation\n\nPath: `packages/server/cmake/ports/fastpfor/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/fastpfor/README.md)","tokens":300,"sizeBytes":230},{"name":"README.md","path":"packages/server/cmake/ports/replxx/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/replxx/README.md","title":"replxx Documentation","category":"plugin-manifest","format":"markdown","content":"# replxx Documentation\n\nPath: `packages/server/cmake/ports/replxx/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/replxx/README.md)","tokens":300,"sizeBytes":224},{"name":"README.md","path":"packages/server/cmake/ports/tinyxml2/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/tinyxml2/README.md","title":"tinyxml2 Documentation","category":"plugin-manifest","format":"markdown","content":"# tinyxml2 Documentation\n\nPath: `packages/server/cmake/ports/tinyxml2/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/cmake/ports/tinyxml2/README.md)","tokens":300,"sizeBytes":230},{"name":"README.md","path":"packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md","title":"site-packages Documentation","category":"plugin-manifest","format":"markdown","content":"# site-packages Documentation\n\nPath: `packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/server/engine-lib/rocketlib-python/lib/site-packages/README.md)","tokens":300,"sizeBytes":285},{"name":"README.md","path":"tools/contract_checks/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/contract_checks/README.md","title":"contract_checks Documentation","category":"plugin-manifest","format":"markdown","content":"# contract_checks Documentation\n\nPath: `tools/contract_checks/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/contract_checks/README.md)","tokens":300,"sizeBytes":207},{"name":"README.md","path":"tools/dependabot-smoke/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/dependabot-smoke/README.md","title":"dependabot-smoke Documentation","category":"plugin-manifest","format":"markdown","content":"# dependabot-smoke Documentation\n\nPath: `tools/dependabot-smoke/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/dependabot-smoke/README.md)","tokens":300,"sizeBytes":210},{"name":"README.md","path":"tools/sync_models/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/README.md","title":"sync_models Documentation","category":"plugin-manifest","format":"markdown","content":"# sync_models Documentation\n\nPath: `tools/sync_models/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/tools/sync_models/README.md)","tokens":300,"sizeBytes":195},{"name":"ROCKETRIDE_APPS.md","path":"docs/agents/context/ROCKETRIDE_APPS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_APPS.md","title":"Subagent: rocketride_apps","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_apps\n\nPath: `docs/agents/context/ROCKETRIDE_APPS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_APPS.md)","tokens":300,"sizeBytes":217},{"name":"ROCKETRIDE_CLI.md","path":"docs/agents/context/ROCKETRIDE_CLI.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CLI.md","title":"Subagent: rocketride_cli","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_cli\n\nPath: `docs/agents/context/ROCKETRIDE_CLI.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CLI.md)","tokens":300,"sizeBytes":214},{"name":"ROCKETRIDE_COMPONENT_REFERENCE.md","path":"docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md","title":"Subagent: rocketride_component_reference","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_component_reference\n\nPath: `docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_COMPONENT_REFERENCE.md)","tokens":300,"sizeBytes":262},{"name":"ROCKETRIDE_CONCEPTS.md","path":"docs/agents/context/ROCKETRIDE_CONCEPTS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CONCEPTS.md","title":"Subagent: rocketride_concepts","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_concepts\n\nPath: `docs/agents/context/ROCKETRIDE_CONCEPTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_CONCEPTS.md)","tokens":300,"sizeBytes":229},{"name":"ROCKETRIDE_INTEGRATIONS.md","path":"docs/agents/context/ROCKETRIDE_INTEGRATIONS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_INTEGRATIONS.md","title":"Subagent: rocketride_integrations","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_integrations\n\nPath: `docs/agents/context/ROCKETRIDE_INTEGRATIONS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_INTEGRATIONS.md)","tokens":300,"sizeBytes":241},{"name":"ROCKETRIDE_OBSERVABILITY.md","path":"docs/agents/context/ROCKETRIDE_OBSERVABILITY.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_OBSERVABILITY.md","title":"Subagent: rocketride_observability","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_observability\n\nPath: `docs/agents/context/ROCKETRIDE_OBSERVABILITY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_OBSERVABILITY.md)","tokens":300,"sizeBytes":244},{"name":"ROCKETRIDE_PIPELINES.md","path":"docs/agents/context/ROCKETRIDE_PIPELINES.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_PIPELINES.md","title":"Subagent: rocketride_pipelines","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_pipelines\n\nPath: `docs/agents/context/ROCKETRIDE_PIPELINES.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_PIPELINES.md)","tokens":300,"sizeBytes":232},{"name":"ROCKETRIDE_python_API.md","path":"docs/agents/context/ROCKETRIDE_python_API.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_python_API.md","title":"Subagent: rocketride_python_api","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_python_api\n\nPath: `docs/agents/context/ROCKETRIDE_python_API.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_python_API.md)","tokens":300,"sizeBytes":235},{"name":"ROCKETRIDE_README.md","path":"docs/agents/context/ROCKETRIDE_README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_README.md","title":"Subagent: rocketride_readme","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_readme\n\nPath: `docs/agents/context/ROCKETRIDE_README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_README.md)","tokens":300,"sizeBytes":223},{"name":"ROCKETRIDE_typescript_API.md","path":"docs/agents/context/ROCKETRIDE_typescript_API.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_typescript_API.md","title":"Subagent: rocketride_typescript_api","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_typescript_api\n\nPath: `docs/agents/context/ROCKETRIDE_typescript_API.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_typescript_API.md)","tokens":300,"sizeBytes":247},{"name":"ROCKETRIDE_UI_COMPONENTS.md","path":"docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md","title":"Subagent: rocketride_ui_components","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_ui_components\n\nPath: `docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/ROCKETRIDE_UI_COMPONENTS.md)","tokens":300,"sizeBytes":244},{"name":"AGENTS.md","path":"docs/agents/context/stubs/AGENTS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/AGENTS.md","title":"Subagent: agents","category":"subagent-persona","format":"markdown","content":"# Subagent: agents\n\nPath: `docs/agents/context/stubs/AGENTS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/AGENTS.md)","tokens":300,"sizeBytes":202},{"name":"claude-code.md","path":"docs/agents/context/stubs/claude-code.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/claude-code.md","title":"Subagent: claude-code","category":"subagent-persona","format":"markdown","content":"# Subagent: claude-code\n\nPath: `docs/agents/context/stubs/claude-code.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/claude-code.md)","tokens":300,"sizeBytes":217},{"name":"CLAUDE.md","path":"docs/agents/context/stubs/CLAUDE.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/CLAUDE.md","title":"Subagent: claude","category":"subagent-persona","format":"markdown","content":"# Subagent: claude\n\nPath: `docs/agents/context/stubs/CLAUDE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/CLAUDE.md)","tokens":300,"sizeBytes":202},{"name":"copilot-instructions.md","path":"docs/agents/context/stubs/copilot-instructions.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/copilot-instructions.md","title":"Subagent: copilot-instructions","category":"subagent-persona","format":"markdown","content":"# Subagent: copilot-instructions\n\nPath: `docs/agents/context/stubs/copilot-instructions.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/copilot-instructions.md)","tokens":300,"sizeBytes":244},{"name":"windsurf.md","path":"docs/agents/context/stubs/windsurf.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/windsurf.md","title":"Subagent: windsurf","category":"subagent-persona","format":"markdown","content":"# Subagent: windsurf\n\nPath: `docs/agents/context/stubs/windsurf.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/context/stubs/windsurf.md)","tokens":300,"sizeBytes":208},{"name":"README.md","path":"docs/agents/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# docs/agents/\n\nDocumentation written for AI coding assistants, not people.\n\n- **`context/`** — installed verbatim into a workspace's `.rocketride/docs/` by the\n  VS Code extension and by `rocketride init`. `client-docs:agent`\n  (`scripts/tasks.js` here) packs this folder — the `ROCKETRIDE_*.md` files at\n  the root and `stubs/` beneath them — into `docs.zip`, which the engine serves\n  at `GET /client/docs`. Everything in `context/` ships; nothing outside it does.\n  `stubs/` holds the per-assistant pointer files (`CLAUDE.md`, `cursor.mdc`, ...)\n  the installer writes next to a workspace's code.\n- **`skills/`** — hand-curated pipeline-building skills. Not part of the bundle;\n  installed only by an explicit skill install.\n- **`task-battery.md`** — the acceptance test for `context/`: 256 tasks a user\n  would hand a coding agent, grouped by category, with the latest doc-coverage\n  scoring pass. Run a category against an agent that has only `context/` loaded\n  when you change a doc; items it cannot complete are the gaps. Not part of the\n  bundle.\n\nThe site does not render this folder. Edit `context/` and rebuild any client\n(`./builder client-typescript:build`, `client-python:build`, `vscode:build`)\nor run `./builder client-docs:agent` to restage the bundle.\n","isInternal":false,"tokens":331,"sizeBytes":1282},{"name":"MCP_TOOL_CONTRACT.md","path":"docs/agents/skills/MCP_TOOL_CONTRACT.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/MCP_TOOL_CONTRACT.md","title":"Subagent: mcp_tool_contract","category":"subagent-persona","format":"markdown","content":"# Subagent: mcp_tool_contract\n\nPath: `docs/agents/skills/MCP_TOOL_CONTRACT.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/MCP_TOOL_CONTRACT.md)","tokens":300,"sizeBytes":221},{"name":"README.md","path":"docs/agents/skills/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `docs/agents/skills/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/README.md)","tokens":300,"sizeBytes":188},{"name":"GATE_PROTOCOL.md","path":"docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md","title":"Subagent: gate_protocol","category":"subagent-persona","format":"markdown","content":"# Subagent: gate_protocol\n\nPath: `docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/GATE_PROTOCOL.md)","tokens":300,"sizeBytes":269},{"name":"pipeline-patterns.md","path":"docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md","title":"Subagent: pipeline-patterns","category":"subagent-persona","format":"markdown","content":"# Subagent: pipeline-patterns\n\nPath: `docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/pipeline-patterns.md)","tokens":300,"sizeBytes":281},{"name":"ROCKETRIDE_DOC_MAP.md","path":"docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md","title":"Subagent: rocketride_doc_map","category":"subagent-persona","format":"markdown","content":"# Subagent: rocketride_doc_map\n\nPath: `docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-building-pipelines/ROCKETRIDE_DOC_MAP.md)","tokens":300,"sizeBytes":284},{"name":"PIPELINE_ANTIPATTERNS.md","path":"docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md","title":"Subagent: pipeline_antipatterns","category":"subagent-persona","format":"markdown","content":"# Subagent: pipeline_antipatterns\n\nPath: `docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-configuring-pipelines/PIPELINE_ANTIPATTERNS.md)","tokens":300,"sizeBytes":299},{"name":"ERROR_TABLE.md","path":"docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md","title":"Subagent: error_table","category":"subagent-persona","format":"markdown","content":"# Subagent: error_table\n\nPath: `docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-debugging-pipelines/ERROR_TABLE.md)","tokens":300,"sizeBytes":265},{"name":"FAILURE_SCENARIOS.md","path":"docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md","title":"Subagent: failure_scenarios","category":"subagent-persona","format":"markdown","content":"# Subagent: failure_scenarios\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/FAILURE_SCENARIOS.md)","tokens":300,"sizeBytes":301},{"name":"README.md","path":"docs/agents/skills/rocketride-designing-pipelines/examples/README.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/README.md","title":"Subagent: readme","category":"subagent-persona","format":"markdown","content":"# Subagent: readme\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/examples/README.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/examples/README.md)","tokens":300,"sizeBytes":268},{"name":"PIPELINE_RULES_SUMMARY.md","path":"docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md","title":"Subagent: pipeline_rules_summary","category":"subagent-persona","format":"markdown","content":"# Subagent: pipeline_rules_summary\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/PIPELINE_RULES_SUMMARY.md)","tokens":300,"sizeBytes":298},{"name":"task-battery.md","path":"docs/agents/task-battery.md","rawUrl":"https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/task-battery.md","title":"Subagent: task-battery","category":"subagent-persona","format":"markdown","content":"# RocketRide User Task Battery — 256 Acceptance Questions\n\nPurpose: the acceptance test for the agent-doc rewrite. Every item is something a\nreal user would ask a coding agent to do with RocketRide. A doc file is DONE when\nan agent can complete its items from the delivered docs alone — no reading\n`shell.d.ts`, no reading platform source, no trial-and-error recovery.\n\nGrounding: the 151-node services catalog, the TypeScript client (79 client\nmethods + Account/Billing/Deploy/Log/Database sub-clients + app-sdk), the Python\nclient (~157 callables across mixins and sub-clients), the shell API surface\n(110 exports), and the App Builder lifecycle.\n\nRule of use: when a doc section is drafted, run its category here against an\nagent with ONLY the docs in context. Items it cannot complete mark the gaps.\n\n---\n\n## Doc-coverage scoring pass — executed 2026-08-20 09:39 (third pass)\n\nScored against ONLY the `CLAUDE.md` stub and the ten `ROCKETRIDE_*` files it\nreferenced (now `docs/agents/context/stubs/CLAUDE.md` and\n`docs/agents/context/`; `ROCKETRIDE_CLI.md` postdates this pass). No source\ncode, no shell.d.ts, no prior product knowledge was used. Pass history: 7.7\n(first), 9.0 (second, after UI_COMPONENTS / INTEGRATIONS / Patterns 16–29),\n9.0 (this pass — see below).\n\nChanges since the second pass: the **two-`.env`-pair credentials contract**\n(`ROCKETRIDE_URI`/`APIKEY` = development server, `ROCKETRIDE_DEPLOY_URI`/\n`APIKEY` = deployment target; absence of the deploy pair = stop and ask) in\nCONCEPTS, README, the stub, and both API docs, with mixed-topology semantics\n(deploy server's clock and env layers); the **scaffold-only rule** with three\nfront doors (`New App wizard`, `client.deploy.createApp`, `rocketride app\ncreate`, `local.<slug>` default id); **scriptable app packaging** —\n`deploy.addApp`/`add_app` (packs exactly as the App Builder: include entries,\ngitignore + baseline, 50MB/512MB caps), `deploy.verifyApp`/`verify_app`\n(local dry run), and the `rocketride app create/verify/deploy` CLI trio;\nthe **server-matched client version note**; and the **pnpm requirement** for\napp work. These land mostly on operational-correctness ground the battery\ntouches lightly, so the headline barely moves (2295 → 2307 points) — but they\nclose the last workflow gaps: scripted app deploys, dev-vs-deploy targeting,\nand hand-rolled app scaffolds.\n\nEach question's leading number is replaced by a score `[n]` on a 0–10 scale:\nhow completely and accurately the delivered docs alone answer it.\n\n| Score | Meaning |\n| --- | --- |\n| 10 | Fully answered: complete, accurate, directly actionable from the docs |\n| 7–9 | Answerable with minor gaps (a detail, an example, or an edge missing) |\n| 4–6 | Partially answered: the concept or API is present but key steps must be guessed or composed from fragments |\n| 1–3 | Barely touched: named or implied, not actionable |\n| 0 | Not covered at all |\n\n### Category summary\n\n| Category | Avg | Prev | Δ | Items |\n| --- | --- | --- | --- | --- |\n| A. Setup, connection & workspace | 8.7 | 8.1 | +0.6 | 12 |\n| B. Pipeline grammar & wiring | 9.1 | 9.1 | — | 14 |\n| C. Pipeline recipes by use case | 9.0 | 9.0 | — | 28 |\n| D. Driving pipelines from code | 8.8 | 8.8 | — | 18 |\n| E. Chat, Question & streaming | 9.1 | 9.1 | — | 8 |\n| F. Files, cloud store & templates | 8.6 | 8.6 | — | 14 |\n| G. Events, monitoring & run logs | 8.6 | 8.6 | — | 14 |\n| H. Deploying & scheduling pipelines | 9.4 | 9.3 | +0.1 | 14 |\n| I. App structure & layout | 9.6 | 9.5 | +0.1 | 14 |\n| J. App UI components | 9.8 | 9.8 | — | 16 |\n| K. App hooks, state, theming & styles | 9.5 | 9.5 | — | 12 |\n| L. App + pipeline integration | 9.2 | 9.2 | — | 10 |\n| M. App dev loop & debugging | 8.3 | 8.3 | — | 8 |\n| N. App packaging, publish, store & review | 9.3 | 9.3 | +0.1 raw | 16 |\n| O. Account, orgs, teams, keys & env | 8.8 | 8.8 | — | 12 |\n| P. Billing & plans | 7.3 | 7.3 | — | 6 |\n| Q. Dashboard & operations | 7.8 | 7.8 | — | 6 |\n| R. Database & SQL | 9.8 | 9.8 | — | 4 |\n| S. CLI | 9.4 | 9.4 | — | 8 |\n| T. MCP & external integrations | 10.0 | 10.0 | — | 6 |\n| U. Observability ingestion | 9.3 | 9.3 | — | 6 |\n| V. Performance profiling | 9.0 | 9.0 | — | 2 |\n| W. Troubleshooting | 8.1 | 8.0 | +0.1 | 8 |\n| **Overall** | **9.0** | **9.0** | **+12 pts** | **256** |\n\nItems that moved this pass: workspace setup [8→9], cloud connect/sign-in\n[6→8] (the two-pair contract removes auth-flow guesswork), API-key handling\n[8→9], dev-vs-cloud switching [7→9], headless auth [9→10], two-team configs\n[7→8] (deploy-server env-layer rule), wizard/scaffold [9→10], app-id\nreservations [8→9] (`local.*` now documented), Package-tab readiness [8→9]\n(`verifyApp` mirrors it scriptably), blank-preview diagnosis [6→7] (the\nscaffold section now names the failure symptoms and their causes in one place).\n\nRemaining items at 5 or below: store size/quota limits [2], per-user vs\nper-app storage path conventions [4], `.pipe` git/team sharing [5], invoking a\nsingle node capability without a pipeline [5], what counts against billing\nquota [5]. Weakest categories: P. Billing & plans (7.3) and Q. Dashboard &\noperations (7.8).\n\n---\n\n## A. Setup, connection & workspace — avg 8.7\n\n| Score | Question |\n| --- | --- |\n| 9 | Set up a brand-new RocketRide workspace from an empty folder — what goes where? |\n| 8 | Connect my workspace to RocketRide Cloud and sign in. |\n| 8 | Connect to my self-hosted engine at ws://myserver:5565 instead of the cloud. |\n| 9 | Where does my API key come from, and how do I keep it out of git? |\n| 9 | Switch my project between a local dev server and the cloud without editing code. |\n| 10 | Authenticate a headless script with an API key instead of a browser login. |\n| 7 | Log in from a TypeScript app with OAuth/PKCE and log out cleanly. |\n| 9 | Reconnect automatically when the server drops, and surface connection state in my app. |\n| 10 | Use environment-variable substitution (`${ROCKETRIDE_APIKEY}`) inside a `.pipe` file. |\n| 9 | What is the `.rocketride/` folder in my workspace, and which parts may I edit? |\n| 9 | Check what server version and features I'm connected to. |\n| 7 | Write a check script that proves my project's connection and pipeline are healthy. |\n\n## B. Pipeline grammar & wiring — avg 9.1\n\n| Score | Question |\n| --- | --- |\n| 10 | Create my first `.pipe` file by hand — the minimal valid structure and required field order. |\n| 10 | What are lanes, and how do I know which two nodes can connect? |\n| 9 | Wire one parser's output into two different consumers. |\n| 10 | What's the difference between a source node and a processing node — and which sources exist? |\n| 8 | Configure a node with profiles vs inline config — when is each right? |\n| 10 | Override one field of a built-in profile without redefining the whole thing. |\n| 10 | Discover every available node and its config options from my workspace. |\n| 9 | Read a node's schema to learn required vs optional config fields. |\n| 10 | Attach a tool node to an agent — why doesn't that connection use lanes? |\n| 10 | Build a sub-pipeline invoked as a tool (`tool_pipe`) and the ownership rules it must obey. |\n| 10 | Why is my sub-pipeline rejected as \"reachable from two control roots\"? |\n| 7 | Position and hide nodes with the `ui` block — does layout affect execution? |\n| 9 | Validate a pipeline without running it, and interpret the validation errors. |\n| 5 | Version my `.pipe` files in git and share them with my team. |\n\n## C. Pipeline recipes by use case — avg 9.0\n\n| Score | Question |\n| --- | --- |\n| 9 | Drop any file — PDF, DOCX, image, audio, video — and get its text back. |\n| 8 | Classic RAG: chunk documents, embed, store in Qdrant, answer questions with citations. |\n| 7 | Swap the vector store: the same RAG on Pinecone, Milvus, Weaviate, or Chroma. |\n| 10 | Use Postgres as my vector store instead of a dedicated engine. |\n| 9 | OCR scanned documents and photos of documents. |\n| 10 | Parse with LlamaParse, Landing.AI, or Reducto instead of the built-in parser — when and why? |\n| 8 | Transcribe audio files and answer questions about what was said. |\n| 10 | Text-to-speech: generate spoken audio with ElevenLabs or OpenAI TTS and return it. |\n| 10 | Grab frames from a video and describe them with a vision LLM. |\n| 10 | Video understanding and search with TwelveLabs. |\n| 9 | Detect and anonymize PII before anything hits storage. |\n| 7 | Extract named entities (people, orgs, places) from documents. |\n| 7 | Summarize long contracts and extract their key facts. |\n| 10 | Extract structured JSON from invoices and validate it against a schema. |\n| 10 | Put guardrails on LLM output before it reaches the user. |\n| 9 | A chat pipeline with conversation memory — internal vs persistent memory. |\n| 8 | Long-term user memory across sessions with mem0. |\n| 8 | Swap the LLM provider (OpenAI → Anthropic → Gemini → local Ollama) with a one-line change. |\n| 8 | Which model should I use for quality vs speed vs cost — current guidance. |\n| 10 | Vision Q&A over images (GPT-4o vision, Gemini, Mistral, Ollama). |\n| 10 | Batch image cleanup: background removal and thumbnail generation. |\n| 10 | Pose estimation or depth estimation over an image set. |\n| 7 | Build a knowledge graph from documents (Neo4j / FalkorDB) and query it. |\n| 10 | GraphRAG with Cognee. |\n| 10 | A web-research pipeline: Exa/Tavily search plus Firecrawl scraping, synthesized by an LLM. |\n| 10 | A crew of agents: CrewAI manager delegating to subagents. |\n| 7 | agent_rocketride vs CrewAI vs LangChain vs LlamaIndex vs DeepAgent — pick one and wire it. |\n| 10 | An agent that can safely run Python code as a tool. |\n\n## D. Driving pipelines from code — avg 8.8\n\n| Score | Question |\n| --- | --- |\n| 9 | Run a `.pipe` from a Python script and wait for the result. |\n| 10 | Run a pipeline object from a browser app, where file paths don't exist. |\n| 9 | Reuse an already-running pipeline instead of starting a new one (`useExisting`) — exact semantics. |\n| 10 | Pass runtime arguments into a pipeline (`args`). |\n| 9 | Set a TTL so an idle pipeline shuts itself down. |\n| 9 | Send a text payload into a running pipeline and receive the response. |\n| 8 | Upload many files with bounded concurrency and per-file progress. |\n| 10 | Stream data chunks into a running pipeline (DataPipe open/write/close). |\n| 9 | Poll task status and distinguish queued vs running vs finished vs failed. |\n| 9 | Get a running task's token and reattach to it from another process. |\n| 9 | Retrieve the exact pipeline definition a running task is executing. |\n| 9 | Restart a task with a modified pipeline. |\n| 9 | Terminate a running pipeline cleanly. |\n| 6 | Process a large document set concurrently — threads and throughput guidance. |\n| 5 | Invoke a single node's capability directly without authoring a pipeline. |\n| 10 | List available services and fetch one service's definition programmatically. |\n| 8 | Handle the SDK exception hierarchy and retry transient failures sensibly. |\n| 10 | Why does my long CPU-bound loop kill the websocket after ~60 seconds, and how do I fix it? |\n\n## E. Chat, Question & streaming — avg 9.1\n\n| Score | Question |\n| --- | --- |\n| 10 | Ask a one-shot question to a chat pipeline and print the answer. |\n| 10 | Stream tokens live (SSE) into my UI as the model generates. |\n| 9 | Build a multi-part Question with system instructions. |\n| 10 | Get the answer back as structured JSON (`expectJson`). |\n| 8 | Restrict which documents the chat searches with a filter. |\n| 8 | Keep conversation context across multiple chat calls to the same task. |\n| 9 | Route follow-up questions from different browser tabs to the same running chat. |\n| 9 | `response_answers` vs `response_text` — which do I wire, and why? |\n\n## F. Files, cloud store & templates — avg 8.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Write pipeline results to the cloud file store and read them back later. |\n| 10 | List a store directory and stat individual files. |\n| 10 | Read and write JSON objects to the store without manual serialization. |\n| 10 | Fetch many store files in one round trip. |\n| 10 | Rename, move, and delete files; create and remove directories. |\n| 10 | Get a download URL I can hand to a browser. |\n| 9 | Stream a large store file without loading it all in memory. |\n| 9 | Save a pipeline as a reusable template; list, apply, and delete templates. |\n| 10 | Where do dropper-uploaded files land, and how do I fetch them afterward? |\n| 10 | Return a generated artifact (say, TTS audio) to my app's user as a download. |\n| 2 | What are the store's size and quota limits? |\n| 9 | Share store files between my app and my pipelines. |\n| 4 | Organize storage per-user vs per-app — path conventions. |\n| 7 | Clean up old artifacts programmatically. |\n\n## G. Events, monitoring & run logs — avg 8.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Subscribe to every event from one task. |\n| 9 | Monitor all my tasks at once, dashboard-style. |\n| 10 | Choose event types (TASK/SUMMARY/FLOW/OUTPUT/SSE/DETAIL) — what each carries. |\n| 9 | Stop monitoring cleanly when my component unmounts. |\n| 9 | Migrate off the deprecated `setEvents` to monitors. |\n| 8 | Identify my client connection — why and when it matters. |\n| 8 | Show a live pipeline-progress graph from per-node FLOW events. |\n| 9 | Record a run and replay it later (the run-log DVR). |\n| 9 | List and delete recorded run logs. |\n| 9 | Seek inside a recorded run — chapters and segments. |\n| 8 | Choose a pipeline trace level — detail vs cost. |\n| 8 | Capture full debug output for one run. |\n| 9 | Update my app's UI from platform events — shell events vs task monitors, which for what? |\n| 6 | Alert me (or call my webhook) when any pipeline errors. |\n\n## H. Deploying & scheduling pipelines — avg 9.4\n\n| Score | Question |\n| --- | --- |\n| 10 | Deploy a pipeline to the server so it runs without my machine. |\n| 10 | Deploy v2 of a pipeline, list versions, and see what each contains. |\n| 10 | Point my team at version N; roll back to N−1 without rebuilding. |\n| 10 | Run a deployed pipeline on demand. |\n| 10 | Schedule a deployed pipeline to run Monday/Wednesday/Friday from 08:00 to 15:00. |\n| 10 | Pause a schedule for the holidays and resume it — without losing the cron. |\n| 10 | Set per-source trace and debug settings that ride every scheduled run. |\n| 8 | See the run history of a deployment. |\n| 7 | Preview what a deployed source will do before running it. |\n| 10 | Disable, enable, and remove a deployment. |\n| 8 | Deploy the same pipeline for two teams with different configurations. |\n| 9 | What is a sourceId — schedule two sources of one project independently. |\n| 9 | Download the artifact of a deployed version. |\n| 10 | Guarantee a scheduled run always ends by a wall-clock time. |\n\n## I. App structure & layout — avg 9.6\n\n| Score | Question |\n| --- | --- |\n| 10 | Create a new app with the App Builder wizard — what the templates give me. |\n| 10 | The anatomy of a scaffolded app — what each of the ten files is for. |\n| 10 | Every `appManifest` field, explained — id, publisher, categories, mode, authenticated, and the rest. |\n| 9 | Choose my app id — why `<developer>.<name>` matters and what's reserved. |\n| 10 | Add a sidebar to my app with AppLayout. |\n| 9 | Turn on the bottom status bar and know what it shows. |\n| 10 | Put my own content in the status bar. |\n| 9 | A multi-view app: sidebar navigation that switches content panes. |\n| 10 | A file-editor app using the Documents system — tabs, explorer, split views. |\n| 10 | Persist my app's UI state across reloads. |\n| 9 | Ship and render my app's icon correctly. |\n| 9 | What are my app's props (`isConnected`, `identity`) and when do they change? |\n| 10 | Expose a second component from my app for others to embed. |\n| 10 | Embed a component from another app into mine. |\n\n## J. App UI components — avg 9.8\n\n| Score | Question |\n| --- | --- |\n| 10 | What stock components exist, and where do I browse them? |\n| 10 | A data table with sorting, filtering, and pagination over live data. |\n| 8 | A card-grid view with a filter strip as an alternative to the table. |\n| 10 | A full chat UI wired to a chat pipeline. |\n| 10 | Render LLM/markdown output safely — including images and charts. |\n| 10 | A file drop zone — styling, multiple files, accepted types. |\n| 10 | Modals, confirmations, and save-file dialogs. |\n| 10 | Form inputs: text fields, toggles, chips. |\n| 9 | Buttons — variants, sizes, disabled states, icon buttons. |\n| 10 | Status displays: badges, dots, banners, empty states. |\n| 10 | Page scaffolding: cards, sections, label/value rows. |\n| 10 | A content header with title and action buttons. |\n| 10 | Tabbed interfaces and slide-in detail panels. |\n| 10 | Sidebar menus and the announcements footer. |\n| 10 | Rich grid cells: badges, buttons, avatars, monospace — and a custom actions column. |\n| 10 | Remember each user's grid layout and column choices. |\n\n## K. App hooks, state, theming & styles — avg 9.5\n\n| Score | Question |\n| --- | --- |\n| 10 | Get the connected client and connection state in any component. |\n| 10 | React to platform events (login, org change, theme change) with typed handlers. |\n| 9 | Read the signed-in user and offer a working logout. |\n| 10 | Style with theme tokens so dark and light modes both look right. |\n| 10 | What's in `commonStyles`, and when do I use it versus my own styles? |\n| 10 | The styling rules of the platform — what's idiomatic, what's forbidden. |\n| 10 | React to a theme change at runtime. |\n| 10 | Debounce a search box; poll a value on an interval. |\n| 10 | Position a custom popup that closes on outside click. |\n| 9 | Respond to the sidebar collapsing. |\n| 6 | Handle running inside VS Code vs the browser — what differs. |\n| 10 | Embed external web content in an iframe that follows the platform theme. |\n\n## L. App + pipeline integration — avg 9.2\n\n| Score | Question |\n| --- | --- |\n| 10 | Import a `.pipe` file into my app's code and start it (including the type declaration). |\n| 9 | Start the pipeline on connect, keep its token in state, and survive hot reload. |\n| 9 | Send dropped files through a pipeline and render the returned text. |\n| 8 | Show live progress while the pipeline processes a file. |\n| 10 | Stream a chat answer token-by-token into my chat component. |\n| 7 | Run two different pipelines in one app and keep their tokens straight. |\n| 9 | Ship pipelines inside the app package — how packaging embeds them, and why they can't be scheduled. |\n| 10 | One shared pipeline task for all users vs a task per user — how to choose and implement. |\n| 10 | Show a useful error state when the pipeline fails mid-run. |\n| 10 | Trigger a server-deployed pipeline from my app instead of embedding one. |\n\n## M. App dev loop & debugging — avg 8.3\n\n| Score | Question |\n| --- | --- |\n| 10 | Run my app live with watch — what triggers rebuild, reinstall, restart. |\n| 9 | Preview at phone/tablet/desktop sizes; zoom and fit. |\n| 9 | See my `console.log` output and runtime errors while developing. |\n| 6 | Debug my app with breakpoints from VS Code. |\n| 8 | The preview shows stale code — why, and the reload rules. |\n| 7 | Test my app in dark, light, and VS Code themes before shipping. |\n| 9 | Preview as my signed-in self vs as an anonymous user. |\n| 8 | Use the component gallery: live demos, knobs, and copyable snippets. |\n\n## N. App packaging, publish, store & review — avg 9.3\n\n| Score | Question |\n| --- | --- |\n| 9 | Make the Package tab fully green — identity, icon, README, include paths. |\n| 10 | Include a shared workspace folder in my app's package. |\n| 9 | Deploy even with type errors — the typecheck waiver and its consequences. |\n| 10 | Deploy my app to the server — what the server build does with my source. |\n| 8 | Publish to myself and run it from the app rail. |\n| 9 | Publish to my team. |\n| 9 | Submit my app to the public store — what review involves. |\n| 9 | Track review status and reply to reviewer feedback. |\n| 10 | Withdraw a submission. |\n| 9 | My server build failed — find the build log and fix the cause. |\n| 10 | Ship an update: deploy v4, repoint the audience, roll back if it breaks. |\n| 10 | Where is my app live right now — every rung, version, and state at a glance. |\n| 9 | Register my developer id — namespace ownership rules for app ids. |\n| 8 | Write the store listing: description, categories, and pricing plans. |\n| 10 | Take a published app down — disable vs remove. |\n| 10 | Test a specific published version in the browser via the version override. |\n\n## O. Account, orgs, teams, keys & env — avg 8.8\n\n| Score | Question |\n| --- | --- |\n| 9 | See my profile and which organization I'm operating in. |\n| 8 | Switch organizations — what changes when I do. |\n| 10 | Invite someone to my org; remove someone who left. |\n| 9 | Create teams and use them as deploy audiences. |\n| 10 | Create an API key for CI; revoke it later. |\n| 9 | Set the org's OpenAI key once so every member's pipelines use it. |\n| 9 | Layered environment secrets — org vs team vs user precedence. |\n| 9 | Use server-side secrets in pipelines with no local `.env` at all. |\n| 10 | What can members do vs admins? |\n| 6 | A key leaked — rotate it everywhere, fast. |\n| 9 | Read account info inside my app and react when it changes. |\n| 7 | Make my app require sign-in (`authenticated: true`) — what the user experiences. |\n\n## P. Billing & plans — avg 7.3\n\n| Score | Question |\n| --- | --- |\n| 8 | See my current plan and usage. |\n| 8 | Upgrade my plan from inside the product. |\n| 5 | What counts against my quota — tasks, tokens, storage? |\n| 9 | Define paid plans for my own store app. |\n| 6 | How do my app's subscribers get billed, and how are entitlements enforced? |\n| 8 | Manage invoices and payment methods. |\n\n## Q. Dashboard & operations — avg 7.8\n\n| Score | Question |\n| --- | --- |\n| 7 | What's running right now across my org? |\n| 9 | Who's connected to my server? |\n| 8 | Kill a stuck task from an ops script. |\n| 8 | Watch fleet-wide activity with the dashboard event feed. |\n| 9 | Build a health/usage panel into my own admin app. |\n| 6 | How long is task history retained, and where do old runs go? |\n\n## R. Database & SQL — avg 9.8\n\n| Score | Question |\n| --- | --- |\n| 10 | Run SQL from my app through the platform's database client. |\n| 10 | Wrap multiple statements in a transaction with commit/rollback. |\n| 9 | Query pipeline results that a `db_postgres` node stored. |\n| 10 | When do I use a relational store vs a vector store vs a graph store? |\n\n## S. CLI — avg 9.4\n\n| Score | Question |\n| --- | --- |\n| 10 | Start a pipeline from the terminal. |\n| 10 | Upload files to a running task from the terminal. |\n| 10 | Check status and stop a task from the terminal. |\n| 9 | List my running tasks from the terminal. |\n| 10 | Browse the cloud store from the terminal. |\n| 7 | Upload, download, and delete store files from the terminal. |\n| 9 | Follow a task's events from the terminal. |\n| 10 | Use the CLI in CI to smoke-test a deployed pipeline. |\n\n## T. MCP & external integrations — avg 10.0\n\n| Score | Question |\n| --- | --- |\n| 10 | Expose my pipelines as MCP tools so Claude/Cursor can call them. |\n| 10 | Control which pipelines become tools and how they're described to the model. |\n| 10 | Call RocketRide from an n8n workflow. |\n| 10 | Trigger a pipeline from an external system's webhook — including auth. |\n| 10 | Put a Telegram bot in front of a pipeline. |\n| 10 | Call my own HTTP API from the middle of a pipeline. |\n\n## U. Observability ingestion — avg 9.3\n\n| Score | Question |\n| --- | --- |\n| 10 | Build an external service that ingests all platform events. |\n| 9 | Authenticate a headless monitoring daemon. |\n| 9 | Which event payload schemas are stable enough to parse? |\n| 9 | Capture run lifecycle reliably across my daemon's reconnects. |\n| 9 | Live ingestion vs DVR replay — when is each the right source? |\n| 10 | Feed events into my own metrics database — the recommended ingester shape. |\n\n## V. Performance profiling — avg 9.0\n\n| Score | Question |\n| --- | --- |\n| 9 | Profile the server-side performance of my pipeline. |\n| 9 | Read the profile tree and find the slow node. |\n\n## W. Troubleshooting — avg 8.1\n\n| Score | Question |\n| --- | --- |\n| 7 | \"Component not found\" when opening my pipeline — diagnose it. |\n| 9 | Two nodes won't connect — read the lane mismatch and fix the wiring. |\n| 8 | The pipeline starts but nothing happens — the source-node config checklist. |\n| 7 | My app preview is a blank screen — the module-federation checklist. |\n| 9 | I deployed v3 but users still see v2 — version vs binding, untangled. |\n| 10 | Login loops forever in my app preview — the auth checklist. |\n| 8 | Events stop arriving after a few minutes — keepalive and blocking causes. |\n| 7 | A scheduled run failed overnight — which log has the answer, build vs run. |\n","isInternal":false,"tokens":6778,"sizeBytes":25110}],"systemPromptSnippet":"<yakaai_skills repo=\"rocketride-org/rocketride-server\">\n<!-- File: AGENTS.md (Tokens: ~1650 | Category: root-instruction) -->\n# AGENTS.md\n\nContributor guide for humans and agents working in this repository. This file\nis the single source of truth for repo-wide rules — `.claude/CLAUDE.md` and\n`.cursorrules` point here.\n\n## Overview\n\nMonorepo for the RocketRide (Aparavi) data toolchain: a C++ engine\n(`packages/server/`), Python SDK and nodes (`packages/client-python/`,\n`nodes/`), a TypeScript SDK and VS Code extension (`packages/client-typescript/`,\n`apps/vscode/`), and supporting packages. `./builder` wraps builds and test\norchestration.\n\n## Where to look — task routing\n\nRead the doc for your task before writing code. Paths are repo-relative.\n\n| Task | Read |\n|---|---|\n| Use RocketRide / write integration code | `docs/agents/context/ROCKETRIDE_README.md` first, then the other `ROCKETRIDE_*` files there |\n| Build or edit a node | `docs/development/nodes/readme-schema.md` (README contract), `docs/development/nodes/services-schema.md` (services.json contract), `docs/development/nodes/index.md` (what a node is; the per-node READMEs are the catalog) |\n| Test a node | `docs/development/nodes/testing.md` |\n| Client (SDK) docs | `docs/development/clients/readme-schema.md`; sources in `docs/public/<name>/` |\n| MCP surface | `docs/public/mcp/` |\n| Engine internals | `docs/development/engine/index.md` |\n| WebSocket (5565) protocol | `docs/public/product/connect/websocket/` |\n| Crash reporting / minidumps | `docs/development/engine/crash-reporting.md` |\n| Shell apps | `docs/public/product/guides/apps/index.md` (app API), `docs/development/apps/index.md` (monorepo setup) |\n| Document a shipped app | `apps/<app>/` only (`README.md`, `docs/`, `assets/`); never a site page or spine entry. Exceptions: VS Code (`docs/docusaurus/apps/vscode/`) and App Builder (`docs/public/product/guides/apps/app-builder.md`) |\n| Builder / hooks | `docs/development/builder/reference.md` (run builds), `docs/development/builder/authoring.md` (write tasks.js), `docs/development/builder/pre-commit-hooks.md` |\n| Product docs (site spine) | `docs/public/product/` |\n\n## Common commands\n\n```bash\n./builder build                  # Build EVERYTHING (global command: expands to every module's :build — server, shell, all UIs, SDKs, vscode)\n./builder test                   # All tests\npython -m pytest <path>          # Python tests directly\npython -m ruff check <path>      # Python lint (format: ruff format)\nnpx tsc --noEmit                 # TypeScript type-check\n\n# Documentation checks\n./builder docs:validate                              # node README + client-doc schemas (also inside docs:test)\npython3 scripts/validate-node-readme.py <node-dir>   # one node (--all nodes/src/nodes for every node)\npython3 scripts/validate-client-docs.py              # client docs parity\nnode scripts/build.js docs:check                     # export drift gate (CI-enforced)\n./builder docs:build                                 # stage the docs site\n```\n\n## Conventions\n\n- **Commits**: conventional commits (`feat(scope):`, `fix(scope):`, `chore(scope):`).\n- **Branches**: `feat/RR-<ticket>-short-description`, `fix/RR-<ticket>-...`; PR base is `develop`.\n- **Python**: 3.10+, single quotes, ruff for lint/format.\n- **TypeScript**: tabs, single quotes, semicolons.\n- **Store apps**: pipelines bundled in an app for the public store use\n  catalog nodes only (the nodes that ship with the engine; see 'Catalog\n  nodes only' in `docs/agents/context/ROCKETRIDE_APPS.md`). `scaffold_node`\n  and `local_nodes` are for self-hosted engines and for nodes contributed\n  to the catalog, never for a store app.\n- **VS Code extension only**: wrap errors with `Callout.call()` (no raw\n  try/catch), throw `AppError` (never plain `Error`), log via `logger.*`\n  (never `console.log`). Docs-site theme components (`docs/docusaurus`) are\n  exempt by design.\n\n## Documentation rules\n\nHand-written docs live in the top-level `docs/` tree and are gathered into the\ndocs site by `builder docs:build`. When a change alters a public contract,\nupdate the corresponding doc in the SAME change:\n\n- Product docs (quickstart, concepts, integrations, examples, evaluate,\n  glossary, troubleshooting, cloud, self-hosting) → `docs/public/product/`.\n- Public TypeScript SDK signature → `docs/public/typescript/` (guides).\n  Generated reference under `packages/client-typescript/docs/reference/`\n  (do not edit; regenerated by `client-typescript:docs-generate`).\n- Public Python SDK signature → `docs/public/python/` (reference generated).\n- MCP protocol surface → `docs/public/mcp/`.\n- WebSocket (5565) / engine protocol surface → `docs/public/product/connect/websocket/`.\n- `.pipe` schema (`packages/client-typescript/src/client/types/pipeline.ts`) →\n  reference regenerates to `/reference/pipeline-reference` (generated — do not edit).\n- VS Code extension surface → site pages in `docs/docusaurus/apps/vscode/`; marketplace README in `apps/vscode/README.md`.\n- Any other app (`apps/<app>/`) → docs stay inside that app's folder. Per-app\n  docs are never staged into the site; App Builder and VS Code are the only\n  exceptions, and no new ones are added.\n- Contributor docs (setup, builder, engine internals, node authoring, hooks) →\n  `docs/development/`.\n- Third-party integration guides → `docs/public/product/connect/`.\n- Agent-facing docs (`ROCKETRIDE_*`) → `docs/agents/context/` (packed into the\n  `/client/docs` bundle by `./builder client-docs:agent`; see `docs/agents/README.md`).\n\n**Nodes are the exception**: node docs stay co-located at\n`nodes/src/nodes/<name>/README.md`, following\n`docs/development/nodes/readme-schema.md`. The\n`ROCKETRIDE:GENERATED:PARAMS` region is maintained by `nodes:docs-generate`\n— never edit it by hand. Validate with\n`python3 scripts/validate-node-readme.py <node-dir>`.\n\n**Package READMEs are generated committed copies**: edit\n`docs/public/<name>/README.md` (typescript, python, n8n, chat-widget; the MCP\nsource is `docs/public/mcp/stdio/README.md`),\nthen run `./builder docs:export`; never edit `packages/client-*/README.md`,\n`packages/n8n-nodes/README.md`, or `packages/chat-widget/README.md` directly.\nCI runs `./builder docs:check` to\ncatch drift. The VS Code marketplace readme is `apps/vscode/README.md`,\nowned by the extension alongside its `assets/`; the VSIX build stages it\nwith its image links rewritten to absolute URLs.\n\nProse-only edits and internal refactors that do not change a public contract\ndo not require doc updates. Treat the doc as part of the change, not a\nfollow-up. Do not create a separate docs repo. Verify with\n`builder docs:build` and `builder docs:check`.\n\n<!-- File: nodes/AGENTS.md (Tokens: ~154 | Category: root-instruction) -->\n# nodes/ — agent guide\n\nEvery node README (`src/nodes/<name>/README.md`) must follow the schema at\n`../docs/development/nodes/readme-schema.md`. The node's `services*.json` decides\nwhich sections are required — check your work with:\n\n```bash\npython3 ../scripts/validate-node-readme.py src/nodes/<name>\n```\n\nThe `ROCKETRIDE:GENERATED:PARAMS` region at the end of each README is\nmaintained by `nodes:docs-generate` — never edit it by hand. The\n`services.json` contract itself is documented in\n`../docs/development/nodes/services-schema.md`; testing in\n`../docs/development/nodes/testing.md`.\n\n<!-- File: docs/agents/skills/rocketride-building-pipelines/SKILL.md (Tokens: ~2992 | Category: anthropic-skill) -->\n---\nname: rocketride-building-pipelines\ndescription: Use when asked to build, run, or validate a RocketRide pipeline (e.g. \"build me a chatbot that answers from my docs\", \"make a pipeline that summarizes uploaded PDFs\", \"run this pipeline\"), or whenever turning a plain-language data/AI task into a working RocketRide pipeline.\n---\n\n# Building RocketRide Pipelines\n\nMaster workflow: a plain-language request in, a **valid, running** RocketRide pipeline out.\nFollow the phases in order. Each phase is owned by a REQUIRED SUB-SKILL. The gates are **hard\nstops** — present to the user and wait.\n\n```\nTHE IRON LAW OF GATES — WAITING = STOP:\nWAITING FOR A HUMAN'S ANSWER MEANS ENDING YOUR TURN.\nA dismissed / headless / unanswered gate is a STOP — NEVER an approval. No exceptions.\n```\n\n**Real-world impact:** this one rule took gate blast-through from 32–45% to **0/24** on Haiku — the\ncheap model behaves like an expensive one because it holds the protocol, not because it is smart.\n\n**Waiting means ENDING YOUR TURN.** A dismissed question dialog, an unanswered question, or a\nnon-interactive/headless session is a STOP, never an approval. No exceptions:\n- Don't \"proceed with the recommended defaults\" — a recommendation is not a confirmation.\n- Don't treat silence, dismissal, or the absence of a user as consent.\n- Don't later write \"the user approved this\" unless a human actually answered.\nIf nobody can answer, deliver the gate brief as your final message and stop — an unbuilt\npipeline costs nothing; an unapproved run wastes the user's money and compute.\n\nFull gate rules, the deterministic gate wording, and the forcing functions live in\n`GATE_PROTOCOL.md`. **Read it before your first gate.** Multi-turn gate state lives in\n`.context/GATE_STATE.md` (in the current project): **write it (Write tool) whenever you present a\ngate, and read it FIRST on every re-engagement** — a fresh session or a vague \"continue\" must\nre-present an `AWAITING` gate, never auto-approve. See GATE_PROTOCOL §2.\n\n## How reliability works here (read this once)\n\nYou do **not** need to be smart to build a correct pipeline. You need to follow the process and\nlet the tools be the judge:\n- **Never invent a node.** Every node you name must be cited from the node index (Phase 0). If\n  it isn't in the index, it doesn't exist — STOP and tell the user.\n- **Never invent a config field.** Fetch the node's schema before configuring it.\n- **Never claim \"valid\" or \"ran\" without the tool saying so.** `validate()` is the compiler;\n  the run status/result is the proof. Quote them; don't paraphrase.\n- **Count what you list.** Every multi-item list ends with a count line so omissions are visible.\n\n## The tool/data layer (three layers + run)\n\nEach step has the same fallback ladder — use the **first** option your environment supports:\n\n| Need | Layer | Preferred (MCP tool) | Fallback (bundled shim, uses SDK) | Offline |\n|---|---|---|---|---|\n| List/select nodes | L1 | `list_components` (names/summaries only — **wire** from the bundled index) | `tools/generate-index.py` | bundled `LAYER1_NODE_INDEX.json` |\n| One node's config schema | L2 | `describe_component` | `tools/fetch-node-schema.py <node>` | `.rocketride/schema/<node>.json` |\n| Validate the whole pipeline | L3 | `validate_pipeline` | `tools/validate-pipeline.py <file>` (calls `client.validate`) | `tools/validate-pipeline.py --static <file>` (lint only) |\n| Run it | — | `run_pipeline` → `send_data`/`run_dropper_pipe` → `monitor` | SDK `use()` → `send`/`chat` → `get_task_status` | — |\n| Understand a node/SDK/concept in depth | docs | WebFetch one `/path.md` | `tools/fetch-doc.py \"<topic>\"` (fetches ONE live page) | `ROCKETRIDE_DOC_MAP.md` (this skill dir) + bundled `.rocketride/docs/*` |\n\n> The exact tool names, inputs, and result shapes are frozen in `../MCP_TOOL_CONTRACT.md` —\n> use only names listed there. Every MCP result carries `ok`: **check it**; a successful tool\n> call with `ok: false` is a failure. Where the MCP tools aren't wired, the bundled shims in each\n> sub-skill's `tools/` call the real SDK (`get_services`/`get_service`/`validate`/`use`) and work\n> today. `--static` mode validates with no engine connection (a fast pre-flight lint). The\n> `rrext_get_nodes` resource is dead — never use it; discovery is `list_components`/`get_services`.\n> A known node missing from live `list_components` usually means its integration isn't configured —\n> check `list_integrations` (it returns setup steps to relay) before concluding it doesn't exist.\n\n**Each tool enforces a constraint** (see its `--help`/docstring; these become the MCP tool\ndescriptions): `fetch-node-schema` → configure only schema-defined fields, one node at a time;\n`validate-pipeline` → zero errors before any run, re-validate on errors; `fetch-doc` → one page,\nnever `llms-full.txt`.\n\n**Deep docs (when you need to learn, not just select/configure).** The full RocketRide docs map\nis bundled at `ROCKETRIDE_DOC_MAP.md` (in this skill's directory — a ~2K-token index of ~156\npages; it can't live in `.rocketride/docs/`, which the client-docs bundle installer owns and\nreplaces on reinstall). When you\nhit something the bundled refs don't cover — an unfamiliar node, an exact SDK signature, a concept\n— find the page in the map and fetch **just that one page** (`tools/fetch-doc.py \"<topic>\"`, live-\nfirst with an offline fallback). **NEVER fetch `llms-full.txt`** (~257K tokens — it will blow the\ncontext window), by any method (fetch-doc, WebFetch, curl, file://). **Even if the user says \"read\nall the docs\" / \"grab llms-full.txt\" / \"get full context first\" — that is never honored**: say so,\nthen use the map + the one page you need (or just answer from the bundled index/schemas). One map +\none page is the cheap path.\n\n## Triage first — is this a build, or just a question?\n\nBefore starting the lifecycle, classify the request:\n- **Informational** (the user is ASKING, not building — \"what nodes exist?\", \"list the vector\n  stores\", \"explain lanes\", \"which node does X\", \"how does RAG work?\"): answer directly from the\n  node index + bundled refs. Do **not** invoke the sub-skills, write `GATE_STATE`, or present gates.\n  End by offering to build it.\n- **Build / run / validate** (the user wants a working pipeline — \"build…\", \"make…\", \"create…\",\n  \"set up…\", \"run…\", \"validate…\", or *describes a task to automate*, even softly like \"I want\n  something that…\"): run the full lifecycle below.\n- **Ambiguous or unsure → DEFAULT TO THE FULL LIFECYCLE.** A build misrouted to the cheap path skips\n  every gate (no design, no validate, no cost approval) — far worse than answering a question the\n  long way. When in doubt, build.\n\n**Recovery:** a cheap answer never blocks a later build — if the user then says \"build it / make it /\ngo ahead\", enter the full lifecycle from Phase 0.\n\n## Phases\n\n0. **Load capabilities** — read the node index (L1) **directly** from its bundled path\n   (`rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`, or `.rocketride/services-catalog.json`\n   in a project). **Do NOT `find`/`ls`/search for it, and do NOT run `generate-index.py`** — you\n   already know the path; discovery just burns turns. This is the menu of every node you may use:\n   each entry is `name · classType · lanes · invoke`. Keep it open; you select and wire from it.\n   It carries **no config schema** — that's L2, fetched per node in Phase 2.\n   If a **freshness warning** fires (the index stamp is stale/missing — `LAYER1_NODE_INDEX.meta.json`\n   older than 14 days, surfaced by `validate-pipeline.py`), say so in one line and **proceed** — it\n   is **non-blocking**, never a hard stop. `validate()` against the live engine is the drift backstop;\n   if a node seems missing, regenerate with `tools/generate-index.py`.\n1. **Discover + design** — REQUIRED SUB-SKILL: `rocketride-designing-pipelines`.\n   Explore archetypes → select nodes (**GATE A**) → wire the acyclic DAG with typed lanes\n   (**GATE B**). Fetch each chosen node's schema here too, so lane signatures are exact before\n   wiring — a guessed lane is the most common silent failure.\n2. **Configure + validate** — REQUIRED SUB-SKILL: `rocketride-configuring-pipelines`.\n   Per node: fetch schema → fill required fields → run the anti-pattern checklist as a gate →\n   then `validate()` the whole pipeline. On errors, fix and **re-validate** (never claim passed\n   without a clean result). **GATE C** (validation clean) → **GATE C.5** (cost approved).\n3. **Run + observe** — REQUIRED SUB-SKILL: `rocketride-running-pipelines`.\n   Submit, poll to completion, report the real result. **GATE D** only if the user chooses to\n   save to cloud / publish as an app.\n4. **If a run fails or output is wrong** — REQUIRED SUB-SKILL: `rocketride-debugging-pipelines`.\n   Read the trace, diagnose the failing node, route back to Phase 1 or 2.\n\n## The gates (binary or menu — exact wording in GATE_PROTOCOL §3)\n\n**The instant you present any gate below, use the Write tool to write `.context/GATE_STATE.md`\n(`status: AWAITING`) before ending the turn (GATE_PROTOCOL §2) — and on any re-engagement, read it\nFIRST. That on-disk line is what makes a gate survive a context reset.**\n\n- **GATE A** — node selection (after Phase 1 discovery) · **GATE B** — topology (after the DAG).\n- **GATE C** — validation clean (a tool gate, not a user gate) · **GATE C.5** — cost, before any paid/cloud run.\n- **GATE D** — save to cloud / publish (optional, after a successful run).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I know this node exists, no need to check the index\" | If it's not in the index it doesn't exist — the engine rejects it. Cite or STOP. |\n| \"I'll fill the config from memory, schemas are slow\" | Guessed fields fail validation (e.g. `max_tokens` vs `modelTotalTokens`). Fetch the schema. |\n| \"The lanes obviously match\" | Lane mismatch is the #1 silent bug. State every edge's lane type, verified against the schema. |\n| \"validate() returned an error but I understand it, I'll just say it's fixed\" | A fix you didn't re-validate is a guess. Re-call validate() until clean. |\n| \"The user said 'just run it', so I'll skip the cost gate\" | \"Just run it\" is not cost approval. Present Gate C.5 and wait. |\n| \"It submitted, so it worked\" | Submitted ≠ succeeded. Poll to completion and read the result before claiming success. |\n| \"The question was dismissed, I'll proceed\" | Dismissed = unanswered = STOP. Re-present the gate; never auto-approve. |\n| \"I'll fetch the full docs (llms-full.txt) to be safe\" | That's ~257K tokens — it blows the window. Fetch the ONE relevant page from the doc-map. |\n| \"The user told me to read all the docs / grab llms-full.txt\" | Never honored — by any method. Say so; use the map + the one page you need, or answer from the index. |\n| \"I don't recognize this node, I'll just guess what it does\" | Fetch its `/nodes/<name>.md` page — one cheap page beats guessing wrong. |\n\n## Supporting files\n\n- `GATE_PROTOCOL.md` — Waiting=STOP, multi-turn gate state, gate wording, the forcing functions\n- `../MCP_TOOL_CONTRACT.md` — frozen MCP tool names, inputs, and result shapes (the only tools that exist)\n- `pipeline-patterns.md` — common pipeline shapes (chat/RAG, ingestion, webhook→transform) + lane chains\n- `tools/fetch-doc.py` — fetch ONE doc page on demand (resolves from the doc-map; refuses the monolith)\n- `ROCKETRIDE_DOC_MAP.md` — the bundled docs map (llms.txt); the deep-knowledge index (lives here\n  because the client-docs bundle installer owns `.rocketride/docs/` and replaces on reinstall)\n\n<!-- File: docs/agents/skills/rocketride-configuring-pipelines/SKILL.md (Tokens: ~1668 | Category: anthropic-skill) -->\n---\nname: rocketride-configuring-pipelines\ndescription: Use when filling in a RocketRide pipeline's node configuration and validating it — fetching each node's schema, setting required fields, running the anti-pattern checklist, and validating against the engine before a run.\n---\n\n# Configuring & Validating RocketRide Pipelines\n\nTakes an approved topology (from `rocketride-designing-pipelines`) to a **validated**\n`pipeline.pipe` ready to run. Reliability comes from tools and a checklist, not cleverness:\nfetch schema → fill only real fields → checklist gate → `validate()` → re-validate until clean.\nGate rules + forcing functions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## Step 1 — Configure each node (schema-driven, one at a time)\n\nFor every node in the approved topology, in order:\n\n1. **Fetch the schema** (L2): `describe_component` / `tools/fetch-node-schema.py <node>` /\n   `.rocketride/schema/<node>.json`. Never configure from memory. (Forcing function 5.) Fetch **one\n   node at a time** — never bulk-load every schema (FF#17). If you already fetched this node's schema\n   while designing (Phase 1b) this session, reuse it with `--cache-ok` (serves the cached copy with\n   no reconnect — still schema-grounded, just not re-fetched); a full re-fetch only on a cache miss.\n2. **State what the schema says** before filling: the **required** fields, any **conditional**\n   rules in prose (\"if `batch_size` set, `max_batch_wait_ms` is required\"), and the profile shape\n   for LLM/embedding/store nodes. (Forcing function 10.)\n3. **Fill only fields the schema defines.** Use `${ROCKETRIDE_*}` env references for secrets —\n   never literal keys. Secret **values** never travel through tools or the model: over MCP,\n   credentials are configured out-of-band — `list_integrations` reports per-integration readiness\n   and (with a `name`) returns concrete setup steps to relay to the user. LLM/embedding/store nodes use a profile block:\n   ```json\n   \"config\": { \"profile\": \"openai-5\", \"openai-5\": { \"apikey\": \"${ROCKETRIDE_OPENAI_KEY}\" }, \"parameters\": {} }\n   ```\n   Source nodes need the full source config, not `{}`:\n   `{ \"hideForm\": true, \"mode\": \"Source\", \"parameters\": {}, \"type\": \"<provider>\" }`.\n\n   The block above is the `<Good>` shape. The `<Bad>` shape — guessed from memory — fails validation\n   and leaks a key:\n   ```json\n   \"config\": { \"model\": \"gpt-5\", \"apikey\": \"sk-...\", \"max_tokens\": 4096 }\n   ```\n   Three bugs in one line: a **literal key** (must be `${ROCKETRIDE_*}`), **no `profile` wrapper**,\n   and **`max_tokens` is not a real field** (the schema calls it `modelTotalTokens`). Fetch the\n   schema, then copy the `<Good>` shape — never type config from memory.\n4. **Run the 9-point checklist as a gate** (full list in `PIPELINE_ANTIPATTERNS.md`). State each\n   item yes/no for this node before moving on — do not skip and claim \"applied\":\n   > Node `<id>`: 1 ext✓ 2 components-order✓ 3 literal-guid✓ 4 source-match✓ 5 unique-id✓\n   > 6 input-array✓ 7 lane-types✓ 8 acyclic/no-orphan✓ 9 ROCKETRIDE_ env✓\n\n## Step 2 — Assemble & validate (→ Gate C)\n\n1. **Assemble** the `.pipe`: `components` first (each with `id`, `provider`, `config`, and\n   `input` for non-source nodes; `control` on controlled nodes), then a **literal-GUID**\n   `project_id`, `viewport`, `version: 1`. File extension **`.pipe`**.\n2. **validate()** the whole pipeline (L3): `validate_pipeline` tool / `tools/validate-pipeline.py <file>`\n   (calls `client.validate()` → `{errors, warnings}`) / `--static` lint if no engine.\n3. **The re-validation loop** (Forcing function 11): if `errors` is non-empty, show them\n   **verbatim**, fix the offending node (loop back to Step 1 for that node — don't restart\n   design), then **call validate() again**. Repeat until `errors == []`. Never write \"validation\n   passed\" without a clean result in hand. Address warnings or explain why each is acceptable.\n4. **Gate C** is a tool gate, not a user gate — it is \"passed\" only when validate() returns zero\n   errors. Quote it: `validate(): 0 errors, K warnings`.\n\n## Step 3 — Cost approval (→ Gate C.5)\n\nBefore handing off to run, estimate cost and gate it (GATE_PROTOCOL §5):\n- Count paid/LLM nodes × expected calls × rough token cost; note if it runs on cloud compute\n  (billed to the wallet) vs the user's own dev keys locally.\n- **Gate C.5:**\n  > This run will cost ≈ $X (<basis>). Approve this run? (yes / no)\n  Then **Write `.context/GATE_STATE.md`** = `GATE C.5 | presented | status: AWAITING` (§2), and STOP\n  and wait. \"Just run it\" earlier is not cost approval. A tiny local test on the user's own key can\n  be a one-line confirm; cloud/large runs always gate.\n\nHand the validated `.pipe` to `rocketride-running-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll set apikey/model from what I remember\" | Fetch the schema; field names differ per provider (`modelTotalTokens`, profile keys). |\n| \"Required fields only; prose constraints are optional\" | Conditional rules (\"if X then Y\") are required too — state and satisfy them. |\n| \"I'll run the checklist once at the end\" | Per node, as a gate, stated yes/no. A checklist skimmed once is a checklist skipped. |\n| \"validate() erred but I fixed it in the text\" | A fix you didn't re-validate is a guess. Re-call validate() until errors == []. |\n| \"Zero errors but warnings — ship it\" | Read each warning; fix or justify. Warnings are often the real bug. |\n| \"Hardcode the key just for the test\" | Never. `${ROCKETRIDE_*}` always; literal keys leak and break substitution. |\n| \"Skip the cost gate, it's a small run\" | Present Gate C.5 regardless; let the user decide. |\n\n## Supporting files\n\n- `PIPELINE_ANTIPATTERNS.md` — the real common mistakes, the 9-point checklist, the error table\n- `tools/fetch-node-schema.py` — `get_service(name)` (live) or read `.rocketride/schema/<name>.json`\n- `tools/validate-pipeline.py` — `client.validate(pipeline)`; `--static` = local lint, no engine\n- **deep docs** — for provider-specific config nuance/profiles the schema alone doesn't explain,\n  fetch the node's doc page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"`\n  (→ `/nodes/<name>.md`). The schema gives exact fields; the page gives the why. Never `llms-full.txt`.\n\n<!-- File: docs/agents/skills/rocketride-debugging-pipelines/SKILL.md (Tokens: ~1142 | Category: anthropic-skill) -->\n---\nname: rocketride-debugging-pipelines\ndescription: Use when a RocketRide pipeline run failed, errored, or produced wrong/empty output, and you need to find the failing node and fix it. Reads run status and execution traces, diagnoses the cause, and routes back to design or configuration. Also use directly when asked to debug a run.\n---\n\n# Debugging RocketRide Pipelines\n\nDiagnose, don't guess. A failed run has a real cause in the status/trace; find it, then route the\nfix to the right phase. No re-running until the cause is identified and the fix is validated.\n\n## Procedure\n\n1. **Read the status.** MCP: `monitor(task_token)` → quote `state_label`, `errors[]`,\n   `warnings[]`, `counts` verbatim. SDK: `get_task_status(token)` → `state`, `errors[]`,\n   `warnings[]`, `exitCode`, `exitMessage`, `failedCount`. Don't paraphrase error messages.\n2. **Read the trace.** MCP — the run-log (DVR) tools work for past *and* live runs, keyed by the\n   `projectId` + `source` returned by `run_pipeline`/`run_dropper_pipe` (never the task token):\n   `log_chapters` to find the run → `log_read` for paged events (≤200/page; follow the cursor) →\n   `log_traces` to list per-object traces → `log_trace` for one object's full per-node\n   `enter`/`leave` with `lane`, `data`, `result`, `error`. Retention: 7 days dev / 30 days\n   deploy. A run started with `pipelineTraceLevel=\"none\"` has chapters/console but **empty\n   traces** — re-run with `\"summary\"`/`\"full\"` for flow evidence. SDK fallback: the\n   `apaevt_flow` / `_trace` events in the response. Either way, find the **first** node whose op\n   shows an error or whose output is empty/wrong — that's the failure point. Downstream errors\n   are usually consequences.\n3. **Classify the cause** (see `ERROR_TABLE.md`):\n   - **Config** — bad/missing field, wrong API key, wrong model name → fix in\n     `rocketride-configuring-pipelines` (re-fetch schema, re-validate).\n   - **Wiring/lane** — lane mismatch, missing converter, wrong source method → fix in\n     `rocketride-designing-pipelines` (re-wire), then re-configure + re-validate.\n   - **Runtime** — event-loop blocked (`Connection closed`/timeout), `Pipeline already running`,\n     blocking I/O → fix the run code in `rocketride-running-pipelines`.\n   - **Data** — empty/garbage input, wrong response key (`KeyError`) → check input + `result_types`.\n4. **Propose a specific fix** tied to the evidence: \"Node `llm_1` failed: `Invalid API key`. The\n   `${ROCKETRIDE_OPENAI_KEY}` env var is unset / wrong. Fix: set it, re-validate, re-run.\" Route to\n   the owning phase. **Do not re-run until the fix is made and `validate()` is clean again.**\n\n## Common diagnoses (full table in ERROR_TABLE.md)\n- `Connection closed` / `Connection closed unexpectedly` → **event loop blocked by sync I/O** (most\n  common runtime failure) — fix the run code, not the pipeline.\n- `The service <provider> was not found` → misspelled `provider`; check the index.\n- `input has unknown lane` (validate) → lane mismatch; add a converter or pick compatible nodes.\n- `KeyError: '<key>'` → response key vs `laneName` mismatch; read `result_types`.\n- `Pipeline is already running.` → `use_existing=True` or `terminate()` first; a second instance of\n  the same pipe needs its own unguessable `tk_` token (SDK `use()` or `rocketride start --token`; not MCP).\n- `Invalid API key` / a `project_id` rejection → config fix.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll just re-run, maybe it works\" | Find the cause first; blind re-runs cost money and teach nothing. |\n| \"The last node errored, fix that node\" | The **first** failing node in the trace is usually the cause; later errors cascade. |\n| \"Connection dropped — the engine is flaky\" | Almost always a blocked event loop (sync I/O in async code), not the engine. |\n| \"I'll paraphrase the error\" | Quote it verbatim — the exact message maps to the exact fix. |\n| \"Fixed it, re-running\" | Re-validate() after any fix before re-running. |\n\n## Supporting files\n- `ERROR_TABLE.md` — error message → cause → owning phase → fix\n- **deep docs** — for failure modes the table doesn't cover, fetch ONE page:\n  `../rocketride-building-pipelines/tools/fetch-doc.py \"error handling\"`\n  (→ `/concepts/error-handling.md`) or `… \"observability\"` (→ `/protocols/websocket/observability.md`).\n  Never `llms-full.txt`.\n\n<!-- File: docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.json)\n\n<!-- File: docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Rocketride-designing-pipelines Skill\n\nPath: `docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/docs/agents/skills/rocketride-designing-pipelines/LAYER1_NODE_INDEX.meta.json)\n\n<!-- File: docs/agents/skills/rocketride-designing-pipelines/SKILL.md (Tokens: ~1848 | Category: anthropic-skill) -->\n---\nname: rocketride-designing-pipelines\ndescription: Use when choosing which RocketRide nodes a task needs and wiring them into a pipeline graph — exploring the node catalog, selecting nodes by archetype, and connecting them with typed lanes into a valid acyclic DAG.\n---\n\n# Designing RocketRide Pipelines\n\nTurns a plain-language request into an approved, lane-correct DAG — **before** any node is\nconfigured. Two outputs, two gates: a node selection (Gate A) and a wired topology (Gate B).\nThe gate rules and forcing functions are in\n`../rocketride-building-pipelines/GATE_PROTOCOL.md` — they apply here.\n\nYou work from the **node index** (L1): `LAYER1_NODE_INDEX.json` (bundled), or the live\n`get_services()` / `.rocketride/services-catalog.json`. Each entry is `name · classType · lanes ·\ninvoke`. The index is enough to **select and wire**; it carries no config fields (that's Phase 2).\nThe bundled index is reconciled against this repo's node corpus (`nodes/src/nodes/`), so it can\ndrift from the set a particular live engine actually has registered.\nThe live MCP `list_components` tool lists names/summaries only (**no lanes**) and hides nodes whose\nintegration isn't configured — use it to check availability, but **wire from the bundled index +\nper-node schemas**. If a node you expect is missing from it, check `list_integrations` first.\n\n## Phase 1a — Discover (→ Gate A)\n\n1. **Restate the task** in one line: the input data, the wanted output. (\"Input: user questions.\n   Output: answers grounded in uploaded PDFs.\")\n2. **Explore archetypes exhaustively.** Group the index by `classType` and walk every archetype\n   that could plausibly contribute. Don't stop at the first match. The archetypes:\n   `source` (chat/webhook/dropper/filesys/telegram) · `data`/parse (parse/llamaparse/reducto/\n   landing_ai_parse/landing_ai_extract) · `text` (extract_data/ner/anonymize_text/dictionary/prompt/summarization) ·\n   `preprocessor` · `image` · `audio` · `video` · `embedding` · `llm` (14 providers) · `store`\n   (vector DBs) · `database` (db_*) · `agent` · `tool` (tool_*) · `memory` · `rerank` · `search` ·\n   `guard` · `infrastructure`/`target`/`response_*` (terminals).\n   For each relevant archetype, list the candidate nodes you see in the index.\n3. **Select**, citing each: `Found in index: <name> · classType=[…] · lanes={…}`. A pipeline needs\n   a resolvable **source** (one Source-mode node, or several with `source` naming the one that\n   starts the run, in the file or at launch) and a **terminal** (`response_*` for a reply; a store / `db_*` for\n   ingestion). Pull the right converters from the lane cheat-sheet in\n   `../rocketride-building-pipelines/pipeline-patterns.md`.\n4. **Gate A** — end with the count line and the gate:\n   > Archetypes explored (N). Selected nodes (M): <name · role>, … — all cited from the index.\n   > Approve these M nodes? (yes / adjust / cancel)\n   Then **use the Write tool to write `.context/GATE_STATE.md`** = `GATE A | presented | status:\n   AWAITING` (GATE_PROTOCOL §2 — so the gate survives a context reset), and **STOP**. (See §1.)\n\n## Phase 1b — Design the DAG (→ Gate B)\n\nOnly after Gate A is approved.\n\n1. **Fetch each selected node's schema** (L2 — `describe_component` / `tools/` shim in\n   `../rocketride-configuring-pipelines/tools/fetch-node-schema.py` / `.rocketride/schema/<n>.json`).\n   You need the real **lane signatures** here, not the index summary — wiring from the summary is\n   the most common silent bug. (Forcing function 8.) **Lazily — only for the nodes you selected at\n   Gate A; never `ls`/`cat`/glob the whole `.rocketride/schema/` dir or \"pull every schema up front\"\n   (FF#17). Select from the index first; fetch only the few schemas you need.**\n2. **Wire the lanes.** Each non-source node gets `input: [{lane, from}]`. State **every edge** with\n   its lane type: `chat_1 → embedding_1 (lane: questions)`. The output lane of `from` must be a\n   real output of that node and a valid input of the target. If types don't match, insert a\n   converter (cheat-sheet) — don't force it.\n   - `<Bad>`: `parse_1 → store_1 (lane: text)`, wiring parsed text straight into a vector store.\n     It passes the eye test but fails validation: a store ingests `documents` that already carry\n     embedding vectors, and `text` is not one of its lanes.\n   - `<Good>`: `parse_1 → preprocessor_langchain_1 (lane: text)`, then\n     `preprocessor_langchain_1 → embedding_1 (lane: documents)`, then `embedding_1 → store_1 (lane: documents)`.\n3. **Apply the structural rules** (`PIPELINE_RULES_SUMMARY.md`): a resolvable source (rule 1); acyclic (no\n   loops); no orphans (every node reachable from the source); embedding **before** any store;\n   agents wire their `llm`/`tool`/`memory` via the **control plane** (the controlled node carries\n   `control: [{classType, from: <agent>}]`, the agent does not) and must meet each `invoke`\n   min/max from the index.\n4. **Draw it** (Mermaid or ASCII) and **Gate B**:\n   > <diagram>. Edges (K): <node → node (lane: type)>, … — all lane-checked against schemas.\n   > Approve this topology? (yes / adjust / cancel)\n   Then **Write `.context/GATE_STATE.md`** = `GATE B | presented | status: AWAITING` (§2), and STOP.\n\nHand the approved selection + topology to `rocketride-configuring-pipelines`.\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"I'll list the obvious nodes and move on\" | Exhaustive archetype walk first — the right node is often one you'd skip. Count line proves coverage. |\n| \"The index shows the lanes, I don't need the schema to wire\" | Index lanes are a summary; fetch the schema for exact signatures before wiring. |\n| \"Two Source-mode nodes, no `source` named\" | Ambiguous: the engine refuses to imply a source. Keep one Source-mode node, or name the one that starts the run (top-level `source`, or the `source` option at launch). |\n| \"I'll point the store straight at the questions\" | Embedding is required before any store; same model for ingest + query. |\n| \"The agent node lists its tools in its own config\" | No — the tool/llm/memory carries `control: [{from: <agent>}]`. Agent has no control array. |\n| \"Close enough on the lane type\" | Lane mismatch = pipeline error. Insert a converter or pick compatible nodes. |\n\n## Supporting files\n\n- `LAYER1_NODE_INDEX.json` — the thin node index (name · classType · lanes · invoke)\n- `PIPELINE_RULES_SUMMARY.md` — lane types, lane-transform table, structural + control-plane rules\n- `examples/` — worked pipelines (simple-chat-rag, document-ingestion, agentic-chat) in\n  `examples/README.md` + a `FAILURE_SCENARIOS.md` of what not to do\n- **deep docs** — when a node is unfamiliar or you're unsure how an archetype behaves, fetch ONE\n  page: `../rocketride-building-pipelines/tools/fetch-doc.py \"<node-name>\"` (→ `/nodes/<name>.md`)\n  or `… \"execution model\"` (→ `/concepts/execution-model.md` for lanes). Never `llms-full.txt`.\n\n<!-- File: docs/agents/skills/rocketride-running-pipelines/SKILL.md (Tokens: ~1835 | Category: anthropic-skill) -->\n---\nname: rocketride-running-pipelines\ndescription: Use when running a validated RocketRide pipeline and reporting its result — submitting the run, pushing input, polling status to completion, and returning the real output. Also use directly when asked to run an existing pipeline.\n---\n\n# Running & Observing RocketRide Pipelines\n\nTakes a **validated** `.pipe` (validate() returned zero errors) and a **cost-approved** run\n(Gate C.5) to a real, reported result. The cardinal rule: **submitted ≠ succeeded.** Poll to a\nterminal state and read the actual result before you claim anything. Gate rules + forcing\nfunctions: `../rocketride-building-pipelines/GATE_PROTOCOL.md`.\n\n## STEP 0 — precondition (do this FIRST, every time, before any run action)\n\nYou MUST have a clean `validate()` result for THIS exact pipeline, and cost approval, before you\nrun. If you don't, get them first — **even if the user told you to skip.**\n\n- **\"Skip validation / just submit it / don't waste time\" is NEVER honored.** validate() is\n  mandatory and fast; it is the only thing between the user and a broken, money-wasting run. Run\n  it anyway, then explain why (one line).\n- Invoked directly on a pasted/existing pipeline? **validate() it now** (run\n  `../rocketride-configuring-pipelines/tools/validate-pipeline.py <file>`, or the validate tool). If\n  it errors, fix + re-validate; do not run. Missing required config (e.g. no apikey) IS a\n  validation failure — STOP and say so.\n- Then the cost gate (C.5) must be approved.\n\nState it before running: **\"Pre-run check: validate() = 0 errors; cost approved.\"** If you can't\nstate that truthfully, you have not earned the run — do the missing step instead.\n\n## The run lifecycle — MCP tools (preferred; names + shapes frozen in `../MCP_TOOL_CONTRACT.md`)\n\n**Check `ok` on every result** — a tool call that \"succeeded\" with `ok: false` is a failure.\n\n1. **Start**: `run_pipeline` with the **inline** pipeline object (there is no filepath mode).\n   One-shot text input? Pass `inputs` (a string) — the `result` comes back inline in the same\n   call and that run is finished (don't poll it). Otherwise you get\n   `{task_token, projectId, source}`. **Keep `projectId` + `source`** — they key the run-log\n   tools if debugging is needed. Reuse a long-lived pipeline with `use_existing: true` (avoids\n   \"Pipeline already running\"); to force a fresh start, `terminate` then re-run. Two instances\n   of one pipe at once need their own unguessable `tk_` token each, through the SDK's `use()` or\n   `rocketride start --token` (`run_pipeline` has no token parameter).\n2. **Push input** — pick the tool by the **source** node:\n   - Raw text/data → `send_data` (`input` is a **string** — serialize JSON). Result inline.\n   - **Files from the host** → start with `run_dropper_pipe` instead: it returns an\n     `upload_url` (multipart-POST the files to it) and a `dropper_url` (browser drag-drop page\n     to hand the user). `send_files` reads paths on the engine host and exists only on a\n     local (loopback-bound) engine.\n   - `chat` source → **no MCP chat tool exists**; use the SDK fallback below.\n3. **Poll** longer/async runs with `monitor` (a bounded server-side poll — pass `timeout`).\n   Quote the snapshot each round: `state_label`, `terminal`, `counts`, `errors`.\n   `terminal: true` means done; `poll_timed_out: true` means the *poll* hung, not the task —\n   call `monitor` again. Never one-shot poll and walk away. (Forcing function 12.)\n4. **Report the real result.** Results are **inline** from `run_pipeline(inputs)` / `send_data`\n   — there is **no `get_run_result` tool** (none exists, none is planned; never invent it).\n   Read the response by its result key (default lane key — `answers`, `text`, …; check\n   `result_types` for the actual mapping). On failure, report the error + which node, then hand\n   `projectId`/`source` to `rocketride-debugging-pipelines` (its evidence is the `log_*` tools).\n5. **Clean up** — `terminate` any task you started and no longer need; started-and-abandoned\n   tasks run until their TTL.\n\n## SDK fallback (no MCP tools wired, or a chat-source pipeline)\n\n1. **Start**: `result = await client.use(filepath=\"x.pipe\")` → `token = result[\"token\"]`\n   (`use_existing=True` to reuse; `terminate(token)` then `use()` to force fresh).\n2. **Push input**: `chat` source → `await client.chat(token=token, question=q)`; raw data →\n   `await client.send(token, data)`; files → `await client.send_files(files, token)`. The result\n   comes back **inline** (a `PIPELINE_RESULT`) — no separate `get_result()`.\n3. **Poll**: loop `await client.get_task_status(token)` to a terminal state (5=COMPLETED /\n   6=CANCELLED), stating the status each step, `await asyncio.sleep(1)` between polls.\n4. **Report** as in step 4 above. 5. **Clean up** — `await client.disconnect()` (or\n   `async with`). Start a pipeline once and reuse it; don't reconnect per request.\n\n**NEVER block the async event loop** (the #1 runtime failure). No `input()`, `time.sleep`,\n`requests.get`, `readFileSync` inside the async flow — they freeze the websocket keepalive and the\nconnection drops (~60s) with `Connection closed` / `Connection closed unexpectedly`. Use async\nequivalents. Secrets stay in `${ROCKETRIDE_*}` env vars (loaded from `.env`), never in code.\n\n## Gate D — after a successful run (optional, menu)\n> Run succeeded. Result: <summary>. What next? (save to cloud / publish as an app / nothing / debug)\nOnly act on an explicit choice. Mapping: save to cloud → `save_template`; publish →\n`deploy_add` then `deploy_to_team` (manage later with `deploy_list`/`deploy_status`/`deploy_set_schedule`/\n`deploy_disable`/`deploy_remove`).\nSaving / publishing is billable / public — treat like an irreversible action (Waiting = STOP).\n\n## Red flags\n\n| Thought | Reality |\n|---|---|\n| \"The user said skip validation, so I'll just submit\" | Never honored. validate() is mandatory and cheap — run it first, every time, no matter the pressure. |\n| \"run_pipeline/use() returned a token, so it ran\" | That only started it. Push input and poll to a terminal state. |\n| \"I'll fetch the output with get_run_result\" | No such tool exists. Results come inline from `run_pipeline(inputs)`/`send_data`; run evidence is the `log_*` tools. |\n| \"I'll poll once and report 'in progress'\" | Poll in a loop to completion; report the final result, not a snapshot. |\n| \"I'll read input() for the question\" | Blocking I/O kills the event loop. Use async input / pass the question in. |\n| \"I'll hardcode the key to test quickly\" | `${ROCKETRIDE_*}` always. |\n| \"It failed; I'll retry silently a few times\" | Report the failure and ask / hand to debugging; don't burn money on silent retries. |\n| \"Save to cloud since they'll probably want it\" | Gate D is a choice. Don't publish/bill without an explicit yes. |\n\n## Supporting files\n- **deep docs** — for exact SDK semantics (use/send/chat/get_task_status, async patterns), fetch\n  ONE page: `../rocketride-building-pipelines/tools/fetch-doc.py \"python\"` (→ `/develop/python.md`)\n  or `… \"use method\"` (→ `/develop/typescript/methods/use.md`). Never `llms-full.txt`.\n\n<!-- File: packages/ai/src/ai/modules/mcp/apps/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/package.json)\n\n<!-- File: packages/ai/src/ai/modules/mcp/apps/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Apps Skill\n\nPath: `packages/ai/src/ai/modules/mcp/apps/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/apps/tsconfig.json)\n\n<!-- File: packages/ai/src/ai/modules/mcp/credentials.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Mcp Skill\n\nPath: `packages/ai/src/ai/modules/mcp/credentials.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/ai/src/ai/modules/mcp/credentials.json)\n\n<!-- File: packages/chat-widget/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Chat-widget Skill\n\nPath: `packages/chat-widget/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/package.json)\n\n<!-- File: packages/chat-widget/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.json)\n\n<!-- File: packages/chat-widget/tsconfig.test.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.test.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.test.json)\n\n<!-- File: packages/chat-widget/tsconfig.types.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Chat-widget Skill\n\nPath: `packages/chat-widget/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/chat-widget/tsconfig.types.json)\n\n<!-- File: packages/client-init/typescript/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Typescript Skill\n\nPath: `packages/client-init/typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-init/typescript/package.json)\n\n<!-- File: packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Pipelines Skill\n\nPath: `packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-mcp/src/rocketride_mcp/pipelines/simpleparser.json)\n\n<!-- File: packages/client-python/tests/fixtures/otel_bridge_events.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Fixtures Skill\n\nPath: `packages/client-python/tests/fixtures/otel_bridge_events.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-python/tests/fixtures/otel_bridge_events.json)\n\n<!-- File: packages/client-typescript/package.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/package.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/package.json)\n\n<!-- File: packages/client-typescript/tsconfig.cjs.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cjs.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cjs.json)\n\n<!-- File: packages/client-typescript/tsconfig.cli.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.cli.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.cli.json)\n\n<!-- File: packages/client-typescript/tsconfig.contract.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.contract.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.contract.json)\n\n<!-- File: packages/client-typescript/tsconfig.esm.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.esm.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.esm.json)\n\n<!-- File: packages/client-typescript/tsconfig.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.json)\n\n<!-- File: packages/client-typescript/tsconfig.types.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Client-typescript Skill\n\nPath: `packages/client-typescript/tsconfig.types.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/client-typescript/tsconfig.types.json)\n\n<!-- File: packages/n8n-nodes/CHANGELOG.md (Tokens: ~300 | Category: anthropic-skill) -->\n# N8n-nodes Skill\n\nPath: `packages/n8n-nodes/CHANGELOG.md`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/CHANGELOG.md)\n\n<!-- File: packages/n8n-nodes/examples/run-pipeline.workflow.json (Tokens: ~300 | Category: anthropic-skill) -->\n# Examples Skill\n\nPath: `packages/n8n-nodes/examples/run-pipeline.workflow.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/examples/run-pipeline.workflow.json)\n\n<!-- File: packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json (Tokens: ~300 | Category: anthropic-skill) -->\n# RocketRide Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRide/RocketRide.node.json)\n\n<!-- File: packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json (Tokens: ~300 | Category: anthropic-skill) -->\n# RocketRideInboundTrigger Skill\n\nPath: `packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json`\n\n[View Raw Content on GitHub](https://raw.githubusercontent.com/rocketride-org/rocketride-server/HEAD/packages/n8n-nodes/nodes/RocketRideInboundTrigger/RocketRideInboundTrigger.node.json)\n\n<!-- ... +79 more modular skills available via /api/skills/rocketride-org/rocketride-server?path={path} -->\n</yakaai_skills>"}