Jev SEO
AgriciDaniel/jev-seo
Full live SEO audit of any website from its homepage URL, powered by Jev (TypeSafe's System One model).
Call NodeTool nodes as typed async functions from sandbox code, one importable module per node namespace, with streaming and plain JavaScript control flow
$ npx skills add nodetool-ai/nodetool --skill sandbox-flow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nodetool-ai/nodetool sandbox-flow --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/sandbox-packs/sandbox-flow .claude/skills/sandbox-flow && 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 "sandbox-flow" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-flow into .claude/skills/sandbox-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sandbox-flow", 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/sandbox-packs/sandbox-flowType 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 sandbox-flow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nodetool-ai/nodetool sandbox-flow --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/sandbox-packs/sandbox-flow .agents/skills/sandbox-flow && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sandbox-flow" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-flow into .agents/skills/sandbox-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sandbox-flow", 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 sandbox-flow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nodetool-ai/nodetool sandbox-flow --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/sandbox-packs/sandbox-flow .cursor/skills/sandbox-flow && 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 "sandbox-flow" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-flow into .cursor/skills/sandbox-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sandbox-flow", 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/sandbox-packs/sandbox-flow--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 sandbox-flow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nodetool-ai/nodetool sandbox-flow --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/sandbox-packs/sandbox-flow .gemini/skills/sandbox-flow && 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 "sandbox-flow" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-flow into .gemini/skills/sandbox-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sandbox-flow", 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 sandbox-flowInstalls 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 sandbox-flow -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/sandbox-packs/sandbox-flow .github/skills/sandbox-flow && 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 "sandbox-flow" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-flow into .github/skills/sandbox-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sandbox-flow", 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 sandbox-flow -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 sandbox-flow --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/sandbox-packs/sandbox-flow .opencode/skills/sandbox-flow && 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 "sandbox-flow" agent skill from https://github.com/nodetool-ai/nodetool/tree/main/packages/sandbox-packs/sandbox-flow into .opencode/skills/sandbox-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sandbox-flow", 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.
sandbox-flowCall NodeTool nodes as typed async functions from sandbox code, one importable module per node namespace, with streaming and plain JavaScript control flow
Sandbox Flow is an agent skill from nodetool-ai/nodetool. Call NodeTool nodes as typed async functions from sandbox code, one importable module per node namespace, with streaming and plain JavaScript control flow
Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 79 other files, including scripts (for example `package.json`, `sandbox/generated/gemini.audio.js` and `sandbox/generated/gemini.image.js`).
It sits in Documents & Office. It works with JavaScript. The repository describes itself as: Agent-first Creative Workspace. The licence is AGPL-3.0.
2 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 58765d3. 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.
Ships 1 file in scripts/ (JavaScript, from the files we listed), which the agent can run.
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.
Sandbox Flow loads about 1.1k tokens when it runs. Until then it costs about 42 tokens; SKILL.md has 465 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); the scripts in this folder are not scanned.
The full file from nodetool-ai/nodetool at commit 58765d3, republished under its AGPL-3.0 licence (© nodetool-ai). 465 words, ~1,110 tokens.
.claude/skills/sandbox-flow/SKILL.md (or your agent's skills folder). This skill also uses 77 other files; get the full folder from GitHub.Specifier: @nodetool-ai/sandbox-flow. Each node namespace is its own module —
@nodetool-ai/sandbox-flow/nodetool.text,
@nodetool-ai/sandbox-flow/lib.audio, and so on for all 69. Every node type is
a generated async function whose name and inputs come from the node's own
metadata, so a type this pack does not export has no import to resolve.
This is not the graph DSL. Nothing is built, saved, or scheduled: the call runs
the node and resolves to its outputs. await is the edge, a variable is the
wire, Promise.all is the fan-out, and if/for/try are themselves.
import { concat } from "@nodetool-ai/sandbox-flow/nodetool.text";
const r = await concat({ a: "hello ", b: "world" });
return r.output;import { … } from "@nodetool-ai/sandbox-flow/<namespace>"; — the nodes.import "@nodetool-ai/sandbox-nodetool/flow"; — the capability module.The second one is not decoration. The host mounts a capability module by
reading the body's static imports, and this pack's guest code calls into
@nodetool-ai/sandbox-nodetool/flow. Without the body-side import the facade
is never mounted and the pack's own import of it is refused by name.
import "@nodetool-ai/sandbox-nodetool/flow";
import { concat } from "@nodetool-ai/sandbox-flow/nodetool.text";A node that streams its output carries a .stream member; a one-shot node does
not, so the surface tells you which is which. Awaiting the plain call on a
streaming node still works — it drains the node and returns the last value per
slot.
import "@nodetool-ai/sandbox-nodetool/flow";
import { agent } from "@nodetool-ai/sandbox-flow/nodetool.agents";
let text = "";
for await (const chunk of agent.stream({ objective: "Summarize the file" })) {
text += chunk.chunk ?? "";
if (text.length > 2000) break; // closes the stream; the node stops
}
return text;Breaking early releases the stream on the host. Read it to the end, or break — both are fine; abandoning the loop object without either is what leaks.
A node written against the streaming-input contract streams {slot, value}
instead of partial outputs, one item per emission, and its inputs accept an
array wherever a single value goes:
import { take } from "@nodetool-ai/sandbox-flow/nodetool.control";
const kept = [];
for await (const { slot, value } of take.stream({ input_item: [1, 2, 3], n: 2 })) {
if (slot === "output") kept.push(value);
}Arrays are the whole of streaming input in this version. An async iterable on an input handle is not accepted.
A node that fails rejects the call with its own error. There is no verdict
machinery and no per-node error stream — your try/catch is the supervisor,
and retry, fallback, and timeout are yours to write:
import "@nodetool-ai/sandbox-nodetool/flow";
import { textToSpeech } from "@nodetool-ai/sandbox-flow/gemini.audio";
try {
return await textToSpeech({ text: draft });
} catch (error) {
return { error: String(error) };
}Concurrency is Promise.all, and it is real: the calls run at once.
const summaries = await Promise.all(
documents.map((document) => summarizer({ text: document }))
);Nothing throttles this. A hundred items is a hundred concurrent model calls — batch them yourself when that matters.
import { callNode } from "@nodetool-ai/sandbox-flow" takes a node type as a
string and checks nothing until the host answers. Use it when the type is
decided at run time; otherwise import the namespace, where a wrong name is an
import error rather than a failed call.
.output() — the call returns the outputs record.@nodetool-ai/sandbox-dsl instead.nodetool.text.Concat is concat,
nodetool.constant.Integer is integer. Reserved words take a trailing
underscore (if_).© 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
SKILL.md and 77 other files (scripts) in packages/sandbox-packs/sandbox-flow of nodetool-ai/nodetool.
Open the folder on GitHubat commit 58765d3
Sandbox Flow 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 |
|---|---|---|---|---|---|---|
| Sandbox Flow this skillnodetool-ai/nodetool | 560 | — | ~1.1k | Automated safety check: Pass | AGPL-3.0 | |
| Jev SEOAgriciDaniel/jev-seo | 539 | — | ~2.5k | Automated safety check: Notes | MIT | |
| HTML To Bento Slidesmucsbr/ppt-agent-workflow-san | 643 | — | ~1.6k | Automated safety check: Pass | None | |
| Jjtheowenyoung/home | 115 | — | ~2.5k | Automated safety check: Pass | None | |
| Write Documentdigital-go-jp/design-system-example-components-html | 115 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Md To DOCXgithub/awesome-copilot | 40k | 1 repos | ~688 | Automated safety check: Pass | MIT |
AgriciDaniel/jev-seo
Full live SEO audit of any website from its homepage URL, powered by Jev (TypeSafe's System One model).
mucsbr/ppt-agent-workflow-san
Convert an existing HTML/CSS/JavaScript slide presentation into an editable bento/slides .bento.html deck.
theowenyoung/home
Save the currently active browser page to the link collection at saved.owenyoung.com.
digital-go-jp/design-system-example-components-html
コンポーネントのMDXドキュメントを作成・更新する
github/awesome-copilot
Convert Markdown files to professionally formatted Word (.docx) documents with embedded PNG images — pure JavaScript, no external tools required
mukul975/Anthropic-Cybersecurity-Skills
Perform static analysis of malicious PDF documents using peepdf, pdfid, and pdf-parser to extract embedded JavaScript, shellcode, and suspicious objects.
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.
Works with
Categories
Call NodeTool nodes as typed async functions from sandbox code, one importable module per node namespace, with streaming and plain JavaScript control flow. Sandbox Flow is an agent skill from nodetool-ai/nodetool.
Sandbox Flow fits situations like: documents & Office work in your project.
Run `npx skills add nodetool-ai/nodetool --skill sandbox-flow -a claude-code`. Or copy the skill folder (packages/sandbox-packs/sandbox-flow in nodetool-ai/nodetool) into .claude/skills/sandbox-flow in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nodetool-ai/nodetool --skill sandbox-flow -a codex`. Or copy the skill folder (packages/sandbox-packs/sandbox-flow in nodetool-ai/nodetool) into .agents/skills/sandbox-flow 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 sandbox-flow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sandbox-flow, .gemini/skills/sandbox-flow, .github/skills/sandbox-flow and .opencode/skills/sandbox-flow in your project.
Going by SKILL.md and its folder, Sandbox Flow needs JavaScript for the scripts in its folder. Our summary lists: Node.js.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Sandbox Flow 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.1k tokens (SKILL.md is roughly 4.4k 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 Sandbox Flow: Jev SEO (AgriciDaniel/jev-seo, 539 stars), HTML To Bento Slides (mucsbr/ppt-agent-workflow-san, 643 stars), Jj (theowenyoung/home, 115 stars) and Write Document (digital-go-jp/design-system-example-components-html, 115 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 560 GitHub stars. The repository holds 127 skills in this directory. The repository was last updated on October 9, 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.