Trigger.dev Configuration
papermark/papermark
Configures Trigger.dev projects through trigger.config.ts, with build extensions for Prisma, Playwright, Puppeteer, FFmpeg, Python and system packages.
Call nodetool.workflows, nodetool.jobs or nodetool.nodes from a code action: list, validate, save, run, debug and version workflow graphs, wait on background jobs, and look up or probe node types.
$ npx skills add nodetool-ai/nodetool --skill api-workflows -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nodetool-ai/nodetool api-workflows --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/system-skills/api-workflows .claude/skills/api-workflows && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "api-workflows" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflows into .claude/skills/api-workflows/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "api-workflows", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflowsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add nodetool-ai/nodetool --skill api-workflows -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nodetool-ai/nodetool api-workflows --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/system-skills/api-workflows .agents/skills/api-workflows && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "api-workflows" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflows into .agents/skills/api-workflows/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "api-workflows", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nodetool-ai/nodetool --skill api-workflows -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nodetool-ai/nodetool api-workflows --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/system-skills/api-workflows .cursor/skills/api-workflows && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "api-workflows" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflows into .cursor/skills/api-workflows/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "api-workflows", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/nodetool-ai/nodetool.git --path packages/system-skills/api-workflows--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add nodetool-ai/nodetool --skill api-workflows -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nodetool-ai/nodetool api-workflows --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/system-skills/api-workflows .gemini/skills/api-workflows && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "api-workflows" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflows into .gemini/skills/api-workflows/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "api-workflows", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install nodetool-ai/nodetool api-workflowsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add nodetool-ai/nodetool --skill api-workflows -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/system-skills/api-workflows .github/skills/api-workflows && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "api-workflows" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflows into .github/skills/api-workflows/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "api-workflows", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add nodetool-ai/nodetool --skill api-workflows -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nodetool-ai/nodetool api-workflows --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nodetool-ai/nodetool.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/system-skills/api-workflows .opencode/skills/api-workflows && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "api-workflows" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/system-skills/api-workflows into .opencode/skills/api-workflows/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "api-workflows", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
api-workflowsCall nodetool.workflows, nodetool.jobs or nodetool.nodes from a code action: list, validate, save, run, debug and version workflow graphs, wait on background jobs, and look up or probe node types.
API Workflows is an agent skill from nodetool-ai/nodetool. Call nodetool.workflows, nodetool.jobs or nodetool.nodes from a code action: list, validate, save, run, debug and version workflow graphs, wait on background jobs, and look up or probe node types. Load before the first call into these namespaces.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Background jobs. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit 515bd28. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
API Workflows loads about 1.7k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 800 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from nodetool-ai/nodetool at commit 515bd28, republished under its AGPL-3.0 licence (© nodetool-ai). 800 words, ~1,657 tokens.
.claude/skills/api-workflows/SKILL.md (or your agent's skills folder).These three namespaces cover saved graphs, the runs they start, and the node
catalog a graph is built from. How to design a graph is
nodetool-workflow-builder. This skill is the call reference.
Every method takes an id as the full id or its 12-character prefix, and every method throws when its backing tool is not on this belt.
| Call | Does | Answers |
|---|---|---|
list({workflow_type, query, limit}) | Lists workflows. workflow_type is "user" (default), "example" or "all". | {workflows: [{id, name, description, tags}]} — an envelope, not an array |
get(id) | Reads one workflow with its graph. | The workflow record |
create(name, graph, {description, tags, access, project_id}) | Saves a new workflow. graph is a DSL result, {nodes, edges}, or a workflow record. create({name, graph}) also works. | The saved workflow with its id |
validate(idOrGraph) | Checks a graph against the node registry without a run. | {ok, issues}. Throws when the graph has errors, so a broken graph cannot reach a paid run. |
run(id, params, {interactive}) | Runs and blocks until the run settles. | The run result. With interactive: true, a failed node returns status: "escalated". |
start(id, params) | Starts a run and returns at once. | A receipt {job_id, id, status: "running"} |
debug(id, params, {interactive, include_graph, log_limit}) | Runs and reports. | {workflow_id, run, job, workflow} |
resolve(sessionId, escalationId, action, {outputs, reason, apply_to}) | Answers an escalation. | The next escalation, or the final report |
example("<package>/<name>") | Loads a shipped example with its graph. A bare name reads from nodetool-base. | The example workflow |
versions(id, {limit}), getVersion(id, n) | Lists and reads snapshots. | Version rows, newest first |
snapshot(id, {name, description}) | Saves the current graph as a manual version. | The new version number |
restore(id, n) | Rolls the graph back. The graph it replaces is snapshotted first, so a restore can be undone. | — |
deleteVersion(id, n) | Deletes one snapshot. This cannot be undone. | — |
open(id?) | Opens the editable object model of a graph that is open in the editor. Throws when no editor tools are on the belt. | A workflow object: addNode, connect, commit() |
debug answers {workflow_id, run, job, workflow}:
run.status is the verdict of the run, and run.error names the failure.run.outputs is keyed by output name. Each name holds an array of the
values it emitted, so read run.outputs.summary[0], not run.outputs.summary.run.verdict.issues lists what went wrong, node by node.job carries the status, the cost and the logs.An interactive run parks on a failed node and answers status: "escalated"
with a session_id, an escalation_id and the allowedActions. The actions
are retry, substitute (with {outputs}, only when the escalation has a
candidateOutput), skip, end_stream and fail (with {reason}).
apply_to: "signature" also answers later failures with the same signature.
Write the whole loop in one action:
let report = await nodetool.workflows.debug(id, params, { interactive: true });
while (report.status === "escalated") {
const e = report;
report = await nodetool.workflows.resolve(e.session_id, e.escalation_id, "skip");
}
return { status: report.run?.status, issues: report.run?.verdict?.issues };run.create and before a paid run. validate throws on errors,
and its message lists the errors only.*_model property left unset fails validation. Assign
(await nodetool.models.pick(capability)).ref.create checks model properties. An unknown provider or model id is refused
and not saved.A job is one execution of a workflow, and a render of a timeline is a job too.
| Call | Answers |
|---|---|
list({workflow_id, limit}) | Job rows with status, timing, error and the names of the outputs. The values are not in the list. |
get(idOrReceipt) | One job, with the outputs once it has settled |
logs(idOrReceipt, {limit}) | The log tail. It answers for a failed job too, with the failure under job_error. |
wait(idOrReceipt, {timeoutMs, pollMs}) | Polls until the status is completed, failed, cancelled or error, then answers the job. The default timeout is 600000 ms. On a timeout it throws with the last status. |
Every call takes the id string or the receipt that start() answered.
Start, do other work, then wait, all in one action:
const receipt = await nodetool.workflows.start(id, { prompt: "a fox" });
// … other work in the same action …
const settled = await nodetool.jobs.wait(receipt, { timeoutMs: 300000 });
return { status: settled.status, outputs: settled.outputs };Do not write one get() per action. wait is the polling loop.
| Call | Does | Answers |
|---|---|---|
search(query, {n_results, namespace, input_type, output_type, include_provider_nodes}) | Searches the catalog. query is a string or an array of terms. | {total, results}. The node type of a result is on type, not node_type. |
info(type) | Reads one node type: properties, inputs, outputs, defaults. | The node metadata |
list({namespace, limit}) | Browses a namespace. An unknown namespace answers with the namespaces that exist. | Node rows |
run(type, inputs) | Runs ONE node with a property bag, with no workflow. | The outputs, keyed by slot |
info for the exact property
names before you wire the node.openai.*, fal.* and others) are hidden unless you pass
include_provider_nodes: true. Pass it only when the user named a provider.run is the cheapest probe of what a node does. Try one node before you
put it in a graph.@nodetool-ai/sandbox-flow. To author a graph, import them from
@nodetool-ai/sandbox-dsl. nodetool-js-scripting covers both packs.© nodetool-ai, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in packages/system-skills/api-workflows of nodetool-ai/nodetool.
Open the folder on GitHubat commit 515bd28
API Workflows next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| API Workflows this skillnodetool-ai/nodetool | 556 | — | ~1.7k | Automated safety check: Pass | AGPL-3.0 | |
| Trigger.dev Configurationpapermark/papermark | 9.2k | — | ~1.2k | Automated safety check: Pass | Custom licence | |
| FoundatioFoundatioFx/Foundatio | 2.1k | — | ~3.9k | Automated safety check: Pass | Apache-2.0 | |
| AI Model NodejsTencentCloudBase/CloudBase-AI-Toolkit | 1.1k | 3 repos | ~5k | Automated safety check: Pass | MIT | |
| Trigger.dev Realtimepapermark/papermark | 9.2k | — | ~1.7k | Automated safety check: Pass | Custom licence | |
| NubaseOtterMind/Nubase | 623 | — | ~2.2k | Automated safety check: Notes | Apache-2.0 |
papermark/papermark
Configures Trigger.dev projects through trigger.config.ts, with build extensions for Prisma, Playwright, Puppeteer, FFmpeg, Python and system packages.
FoundatioFx/Foundatio
A skill your agent uses when working with Foundatio infrastructure abstractions for .NET -- caching, queuing, messaging, file storage, distributed locking, or background jobs.
TencentCloudBase/CloudBase-AI-Toolkit
A skill your agent uses for Node.js backend AI via @cloudbase/node-sdk (=3.16.0) — cloud functions, CloudRun, Express/Koa/NestJS, serverless APIs, scheduled jobs, LLM proxies, agent orchestration.
papermark/papermark
Shows how to subscribe to Trigger.dev task runs from the backend and from React for progress indicators, live dashboards, AI response streams and approval waits.
OtterMind/Nubase
A skill your agent uses when the user mentions Nubase broadly, wants a backend for an AI-generated app, or needs to deploy/publish generated code online — across Database, Auth, Storage, Assets…
papermark/papermark
Guides building durable background tasks, scheduled jobs and queues with Trigger.dev, including retries, waits, idempotency and concurrency limits.
nodetool-ai/nodetool
Cut a NodeTool timeline to music and shape its pacing — detect the beat grid, place cuts on phrases, pick a cut type, build speed ramps with time remap, and give the piece an arc.
nodetool-ai/nodetool
Add and animate a consistent text layer on an existing NodeTool timeline.
nodetool-ai/nodetool
Choose and animate colour on a NodeTool timeline, including shape and text gradients, colour grades, 3D LUTs, and dither.
nodetool-ai/nodetool
Write a shootable, precisely timed commercial beat sheet and store it as a NodeTool storyboard, with a consistent entity roster behind every shot.
nodetool-ai/nodetool
Direct ElevenLabs speech, dialogue, sound effects and music — the bracketed audio tags v3 acts on and why the voice decides whether a tag lands, stability as the delivery dial, punctuation instead…
nodetool-ai/nodetool
Stage the frame on a NodeTool timeline — grids, focal placement, safe areas per aspect ratio, depth layers and parallax, camera moves, and where elements enter and leave.
Categories
Call nodetool.workflows, nodetool.jobs or nodetool.nodes from a code action: list, validate, save, run, debug and version workflow graphs, wait on background jobs, and look up or probe node types. API Workflows is an agent skill from nodetool-ai/nodetool.nodes from a code action: list, validate, save, run, debug and version workflow graphs, wait on background jobs, and look up or probe node types.
API Workflows fits situations like: tasks that involve Background jobs.
Run `npx skills add nodetool-ai/nodetool --skill api-workflows -a claude-code`. Or copy the skill folder (packages/system-skills/api-workflows in nodetool-ai/nodetool) into .claude/skills/api-workflows in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nodetool-ai/nodetool --skill api-workflows -a codex`. Or copy the skill folder (packages/system-skills/api-workflows in nodetool-ai/nodetool) into .agents/skills/api-workflows in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nodetool-ai/nodetool --skill api-workflows -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/api-workflows, .gemini/skills/api-workflows, .github/skills/api-workflows and .opencode/skills/api-workflows in your project.
SKILL.md names no scripts, command-line tools or credentials: API Workflows is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
API Workflows is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with API Workflows: Trigger.dev Configuration (papermark/papermark, 9.2k stars), Foundatio (FoundatioFx/Foundatio, 2.1k stars), AI Model Nodejs (TencentCloudBase/CloudBase-AI-Toolkit, 1.1k stars) and Trigger.dev Realtime (papermark/papermark, 9.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nodetool-ai (a GitHub organization) maintains it in nodetool-ai/nodetool, which has 556 GitHub stars. The repository holds 127 skills in this directory. The repository was last updated on October 8, 2026.
Source: nodetool-ai/nodetool on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.