Check Loanword
ayutaz/piper-plus
ZH-EN code-switching loanword の同期と forward-compat を 1 コマンドで検査。zhenloanword.json を編集したり 5 ランタイムのいずれかに新規エントリを追加する前後に呼ぶ。Python source を canonical とし、Rust×2 / Go / C / WASM / C++ の 6 mirror + Python…
Develop, debug, and manage the runtimed daemon, Python bindings, and build system.
$ npx skills add nteract/nteract --skill daemon-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install nteract/nteract daemon-dev --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/nteract/nteract.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/daemon-dev .claude/skills/daemon-dev && 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 "daemon-dev" agent skill from https://github.com/nteract/nteract/tree/main/.agents/skills/daemon-dev into .claude/skills/daemon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "daemon-dev", 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/nteract/nteract/tree/main/.agents/skills/daemon-devType 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 nteract/nteract --skill daemon-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install nteract/nteract daemon-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/nteract.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/daemon-dev .agents/skills/daemon-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "daemon-dev" agent skill from https://github.com/nteract/nteract/tree/main/.agents/skills/daemon-dev into .agents/skills/daemon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "daemon-dev", 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 nteract/nteract --skill daemon-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install nteract/nteract daemon-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/nteract.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/daemon-dev .cursor/skills/daemon-dev && 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 "daemon-dev" agent skill from https://github.com/nteract/nteract/tree/main/.agents/skills/daemon-dev into .cursor/skills/daemon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "daemon-dev", 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/nteract/nteract.git --path .agents/skills/daemon-dev--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 nteract/nteract --skill daemon-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install nteract/nteract daemon-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/nteract.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/daemon-dev .gemini/skills/daemon-dev && 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 "daemon-dev" agent skill from https://github.com/nteract/nteract/tree/main/.agents/skills/daemon-dev into .gemini/skills/daemon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "daemon-dev", 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 nteract/nteract daemon-devInstalls 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 nteract/nteract --skill daemon-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/nteract/nteract.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/daemon-dev .github/skills/daemon-dev && 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 "daemon-dev" agent skill from https://github.com/nteract/nteract/tree/main/.agents/skills/daemon-dev into .github/skills/daemon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "daemon-dev", 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 nteract/nteract --skill daemon-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install nteract/nteract daemon-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/nteract/nteract.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/daemon-dev .opencode/skills/daemon-dev && 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 "daemon-dev" agent skill from https://github.com/nteract/nteract/tree/main/.agents/skills/daemon-dev into .opencode/skills/daemon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "daemon-dev", 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.
daemon-devDevelop, debug, and manage the runtimed daemon, Python bindings, and build system.
Daemon Dev is an agent skill from nteract/nteract. Develop, debug, and manage the runtimed daemon, Python bindings, and build system. Use when working on daemon code, kernel issues, maturin builds, or xtask workflows.
Its SKILL.md is about 3k 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 Development. It works with Python, WebAssembly and Rust. The repository describes itself as: We're back! Now firing notebooks out of a t-shirt gun. The licence is BSD-3-Clause.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 217d6fe. 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.
Shell commands in SKILL.md call:
cargouvpython3pythonpnpmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use uv and pnpm, which can reach the network depending on how they are called.
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.
Daemon Dev loads about 3k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 1,138 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 nteract/nteract at commit 217d6fe, republished under its BSD-3-Clause licence (© nteract). 1,138 words, ~2,953 tokens.
.claude/skills/daemon-dev/SKILL.md (or your agent's skills folder).| Task | Command |
|---|---|
| Start full dev loop | cargo xtask dev |
| Report app + daemon identity | cargo xtask dev status |
| Focus exact macOS dev app | cargo xtask dev focus |
| Restart app + daemon cleanly | cargo xtask dev --fresh |
| Start dev daemon | cargo xtask dev-daemon |
| Full build | cargo xtask build |
| Rust-only rebuild | cargo xtask build --rust-only |
| Fast sidecar check | cargo xtask build --rust-only --skip-tauri |
| Run bundled binary | cargo xtask run |
| WASM rebuild | cargo xtask wasm |
| Install nightly (Linux) | ./scripts/install-nightly |
| Daemon status | ./target/debug/runt daemon status |
| Daemon status (JSON) | ./target/debug/runt daemon status --json |
| Tail logs | ./target/debug/runt daemon logs -f |
| List kernels | ./target/debug/runt ps |
| List notebooks | ./target/debug/runt notebooks |
| Flush pool | ./target/debug/runt daemon flush |
| Stop daemon | ./target/debug/runt daemon stop |
| Run daemon tests | cargo test -p runtimed |
| Lint | cargo xtask lint --fix |
The daemon (runtimed) is a singleton coordinating notebook windows over a Unix socket. Without it: race conditions on prewarmed environments, wasted resources, slow cold starts.
Components: Unix socket (IPC), lock file (singleton guarantee), UV/Conda pools (prewarmed envs), blob store (content-addressed outputs), notebook-docs (persisted Automerge documents).
Protocol: Length-prefixed typed frames over Unix socket. Preamble → JSON handshake → Automerge sync → steady state. Frame types: AutomergeSync (0x00), Request (0x01), Response (0x02), Broadcast (0x03), Presence (0x04), RuntimeStateSync (0x05), PoolStateSync (0x06), SessionControl (0x07), PutBlob (0x08), CommsDocSync (0x09).
CRDT ownership: Frontend WASM writes cell source, position, type, metadata. Daemon writes RuntimeStateDoc for outputs, execution counts, comm topology, trust, env progress, and project context. Mutable widget state lives in CommsDoc and is gated by RuntimeStateDoc topology. Write to a CRDT document only from an authority allowed for that document.
cargo xtask build works (4 phases)cargo build -p runtimed -p runt -p nteract-mcp -p mcp-supervisor. Sidecars copied to crates/notebook/binaries/. The notebook crate is intentionally excluded until the Tauri link phase after frontend assets exist.pnpm build (TypeScript + Vite). --rust-only skips this.cargo tauri build --debug --no-bundle with embedded frontend assets. Use --skip-tauri only for fast edit checks where updated sidecar binaries are enough; run a normal build before launching the bundled app.All Rust targets build in one cargo build call to avoid feature-unification recompilation. WASM outputs are gitignored; runtimed's build.rs panics if missing. nteract-mcp embeds the MCP widget HTML; prepare it with cargo xtask artifacts ensure mcp-widget.
Run after changing crates/runtimed-wasm/, crates/sift-wasm/, crates/notebook-doc/, crates/notebook-wire/, or scripts/build-renderer-plugins.ts:
cargo xtask wasm # all (runtimed-wasm + sift-wasm + renderer plugins)
cargo xtask wasm runtimed # only runtimed-wasm
cargo xtask wasm sift # only sift-wasmcargo xtask devThis is the normal desktop workflow: it starts the per-worktree daemon, waits for readiness, launches the hot-reload app, and stops the daemon it started when the app exits. On macOS the app has a distinct per-worktree display name, bundle ID, and process record. Inspect or focus that exact process with:
cargo xtask dev status
cargo xtask dev focusAfter Tauri bootstrap or listener changes, use cargo xtask dev --fresh to reset
only this worktree's app and daemon. Use the split workflow when the daemon must
remain independently managed:
# Terminal 1
cargo xtask dev-daemon
# Terminal 2
cargo xtask notebookcargo test -p runtimed # All tests
cargo test -p runtimed --test integration # Integration tests only
cargo test -p runtimed test_daemon_ping_pong # Specific testcargo xtask dev, cargo xtask dev-daemon, cargo xtask notebook, and cargo xtask run-mcp derive the git worktree automatically. State lives at <cache>/runt-nightly/worktrees/{hash}/. Set RUNTIMED_DEV=1 and RUNTIMED_WORKSPACE_PATH="$(pwd)" only for raw ./target/debug/runt commands outside xtask.
| Venv | Path | Purpose |
|---|---|---|
| Workspace | .venv (repo root) | Day-to-day dev, MCP server |
| Test | python/runtimed/.venv | Isolated pytest runs |
# Into workspace venv (most common; what `up rebuild=true` does)
cd crates/runtimed-py
VIRTUAL_ENV=../../.venv uv run --directory ../../python/runtimed maturin develop
# Into test venv (for pytest)
VIRTUAL_ENV=../../python/runtimed/.venv uv run --directory ../../python/runtimed maturin developAlways set VIRTUAL_ENV explicitly. Without it, the .so installs into whichever venv uv run resolves.
import asyncio, runtimed
async def main():
client = runtimed.Client()
async with await client.create_notebook() as notebook:
cell = await notebook.cells.create("print('hello')")
result = await cell.run()
print(result.stdout) # "hello\n"
# Granular execution control
execution = await cell.execute()
print(execution.status) # "queued" | "running" | "done" | "error"
result = await execution.result()
asyncio.run(main())| MIME category | Python type | Notes |
|---|---|---|
Binary image (image/png) | bytes | Raw binary |
JSON (application/json) | dict | Parsed |
Text (text/plain, text/html) | str | UTF-8 |
LLM hint (text/llm+plain) | str | Synthesized blob URL |
RUNTIMED_SOCKET_PATH="$(./target/debug/runt daemon status --json | python3 -c 'import sys,json; print(json.load(sys.stdin)["socket_path"])')" \
python/runtimed/.venv/bin/python -m pytest python/runtimed/tests/test_daemon_integration.py -vUse nteract mcp for the supervised MCP server. runt mcp remains available to run the worker directly. Run via cargo xtask run-mcp for development.
Advertised tools (all_tools()): list_active_notebooks, list_notebooks, connect_notebook, create_notebook, save_notebook, show_notebook, disconnect_notebook, create_cell, set_cell, delete_cell, move_cell, execute_cell, run_all_cells, get_results, interrupt_kernel, restart_kernel, manage_dependencies, replace_match, replace_regex.
Hidden/callable read tools (hidden_tools()): get_cell, get_all_cells. These are callable but not advertised in list_tools(). They are dispatch-only read paths for clients that prefer direct tool calls over resource URIs.
Legacy dependency and cell-metadata tool names still dispatch for compatibility, but new workflows should use manage_dependencies for dependency inspection/edits and get_results for execution output lookup by execution_id.
Daemon-authoritative Automerge document synced via frame 0x05. Frontend reads only (useRuntimeState()); Python reads via notebook.runtime.
Schema: kernel/{status, starting_phase, name, language, env_source}, queue/{executing, queued}, executions/{id → cell_id, status, execution_count, success}, env/{in_sync, added, removed}, trust/{status, needs_approval}, last_saved, plus comm topology/routing. Mutable widget values live in CommsDoc, not RuntimeStateDoc.
Execution lifecycle: Client sends ExecuteCell → daemon generates execution_id → writes to queue → status progresses through running/done/error → Python Execution handle polls for updates.
Any daemon code that reads doc state, does async work, then writes back must
reconcile against the captured baseline heads. Prefer document-owned
transact_at_heads_recovering(...) for ordinary async writes. Use
fork_with_actor(...) + merge_recovering(...) only when the async worker
genuinely needs an editable fork across the await. Direct mutation after an
async gap overwrites concurrent edits.
let baseline_heads = {
let mut doc = room.doc.write().await;
doc.get_heads()
};
let result = do_async_work().await;
let mut doc = room.doc.write().await;
doc.transact_at_heads_recovering(&baseline_heads, Some("runtimed:formatter"), "tx", |doc| {
doc.update_source(&cell_id, &result)?;
Ok(())
}).ok();For synchronous blocks: doc.fork_and_merge(|fork| { ... }).
Each open notebook has a room (NotebookRoom), keyed by UUID. A PathIndex maps canonical paths to room UUIDs.
notebook-docs/{hash}.automerge; snapshots in notebook-docs/snapshots/.is_binary_mime() has one canonical Rust implementation in notebook-doc::mime, shared across all crates.allow-same-origin is forbidden.cargo test -p runtimed --test tokio_mutex_lint).order for visual positioning.Daemon lock held: Inspect the selected endpoint with nteract daemon status and check its daemon.lock with lsof. The OS releases the advisory lock when its owner exits; an existing file is not proof of a live owner. Do not delete the lock file to bypass contention, since replacing its inode can allow two owners. Filesystem failures are separate errors, and live socket metadata is the discovery source.
Pool not replenishing: Verify uv --version and check ~/.cache/runt/envs/.
Wrong daemon (Python): If outputs return parse errors with hashes, the bindings connect to the wrong daemon (blob store is per-daemon). Set RUNTIMED_SOCKET_PATH.
Build not reflected (Python): Rebuild into the correct venv with explicit VIRTUAL_ENV. Or use up rebuild=true.
Production daemon installs as a system service (macOS: launchd, Linux: systemd user). Manage with nteract daemon {status,stop,start,logs,uninstall}.
Key paths (macOS): Binary at ~/Library/Application Support/runt/bin/runtimed, socket at ~/Library/Caches/runt/runtimed.sock, logs at ~/Library/Caches/runt/runtimed.log.
Use ./target/debug/runt daemon stop to stop only your worktree's daemon. Avoid pkill/killall because they affect every worktree.
© nteract, BSD-3-Clause. 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 .agents/skills/daemon-dev of nteract/nteract.
Open the folder on GitHubat commit 217d6fe
Daemon Dev 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 |
|---|---|---|---|---|---|---|
| Daemon Dev this skillnteract/nteract | 178 | — | ~3k | Automated safety check: Pass | BSD-3-Clause | |
| Check Loanwordayutaz/piper-plus | 218 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Prepare Releaseayutaz/piper-plus | 218 | — | ~2k | Automated safety check: Pass | MIT | |
| Run Testsayutaz/piper-plus | 218 | — | ~641 | Automated safety check: Pass | MIT | |
| Edge Pythondylan-sutton-chavez/edge-python | 271 | — | ~12k | Automated safety check: Pass | Custom licence | |
| Test Runnernoumena-labs/Sipp | 121 | — | ~854 | Automated safety check: Pass | Apache-2.0 |
ayutaz/piper-plus
ZH-EN code-switching loanword の同期と forward-compat を 1 コマンドで検査。zhenloanword.json を編集したり 5 ランタイムのいずれかに新規エントリを追加する前後に呼ぶ。Python source を canonical とし、Rust×2 / Go / C / WASM / C++ の 6 mirror + Python…
ayutaz/piper-plus
9 パッケージ × 5 レジストリの version bump と関連ファイル更新 (Cargo.lock / package-lock.json / Swift checksum / CHANGELOG 昇格) を 1 コマンドで適用案にする read-mostly skill。release-prep (確認用) の続きに呼び、 実 bump 差分の markdown 提案 + 順序付き…
ayutaz/piper-plus
piper-plus の各言語ランタイムのテストを実行します。引数 python/rust/cs/go/js/cpp/all で対象を選択。未指定なら git diff から自動判定。
dylan-sutton-chavez/edge-python
Write, run, test and package Edge Python programs with the edge CLI.
noumena-labs/Sipp
Runs the narrowest relevant tests to validate changes. An agent skill from noumena-labs/Sipp.
ayutaz/piper-plus
推論パスの canonical Python (exportonnx.py / vits/models.py:VitsModel.infer) を変更した PR で、6 ランタイム (Python runtime / Rust / Go / C / C++ / WASM) の inference path が追随しているかを git diff で確認。PR
nteract/nteract
Automerge sync protocol internals, document model (OpSet, ChangeGraph, fork/merge, save/load lifecycle), and higher-level protocol design patterns.
nteract/nteract
The end-to-end cell execution pipeline from MCP tool call through daemon to kernel and back.
nteract/nteract
Pull and triage submitted nteract diagnostics archives from Cloudflare using a diagnostics id/token.
nteract/nteract
Use nteract notebooks as a persistent Python REPL. An agent skill from nteract/nteract.
nteract/nteract
Run tests, verify changes, and collect diagnostics. An agent skill from nteract/nteract.
nteract/nteract
Architecture and documentation framing for cross-cutting repo decisions, docs taxonomy placement, ADRs, memos, PRDs, implementation plans, audits, measurements, runbooks, and source-grounded…
Works with
Categories
Develop, debug, and manage the runtimed daemon, Python bindings, and build system. Daemon Dev is an agent skill from nteract/nteract. Develop, debug, and manage the runtimed daemon, Python bindings, and build system.
Daemon Dev fits situations like: working on daemon code; xtask workflows.
Run `npx skills add nteract/nteract --skill daemon-dev -a claude-code`. Or copy the skill folder (.agents/skills/daemon-dev in nteract/nteract) into .claude/skills/daemon-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add nteract/nteract --skill daemon-dev -a codex`. Or copy the skill folder (.agents/skills/daemon-dev in nteract/nteract) into .agents/skills/daemon-dev 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 nteract/nteract --skill daemon-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/daemon-dev, .gemini/skills/daemon-dev, .github/skills/daemon-dev and .opencode/skills/daemon-dev in your project.
Going by SKILL.md and its folder, Daemon Dev needs the command-line tools its instructions call (cargo, uv, python3, python and pnpm). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use uv, which can reach the network depending on how they are called. 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.
Daemon Dev is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k 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 Daemon Dev: Check Loanword (ayutaz/piper-plus, 218 stars), Prepare Release (ayutaz/piper-plus, 218 stars), Run Tests (ayutaz/piper-plus, 218 stars) and Edge Python (dylan-sutton-chavez/edge-python, 271 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
nteract (a GitHub organization) maintains it in nteract/nteract, which has 178 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 7, 2026.
Source: nteract/nteract on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.