collect-node-data

collect-node-data is a skill for Claude Code, Codex from cloudrift-ai/emmy. It costs 78 tokens per session (4,986 once invoked), scanned C, original, Apache-2.0.

A workflow for collecting benchmark data from one specific GPU and adding it to an autotune database. The database stores measurements used to guide later kernel-tuning searches.

In plain words
What is it for?
Use it to run the budgeted GPU measurement sweep, merge the results into the local tuning database, back up that database, and optionally remove the rented server afterward.
Why use it?
It gathers hardware-specific data when the developer machine does not have the required GPU, while preserving a backup and cleaning up a rented server when appropriate.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/cloudrift-ai/emmy/collect-node-data
Any agent
npx skills add cloudrift-ai/emmy --skill collect-node-data
Clone the repo
git clone --depth 1 https://github.com/cloudrift-ai/emmy

Made for: Claude Code, Codex.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for collect-node-data

README.md
[![agentmods](https://agentmods.dev/badge/skills/cloudrift-ai/emmy/collect-node-data.svg)](https://agentmods.dev/skills/cloudrift-ai/emmy/collect-node-data)
Your own site
<a href="https://agentmods.dev/skills/cloudrift-ai/emmy/collect-node-data"><img src="https://agentmods.dev/badge/skills/cloudrift-ai/emmy/collect-node-data.svg" alt="Measured on agentmods" height="20"></a>
Per session 78 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,986 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00078 $0.04986
Opus 5 $0.00039 $0.02493
Sonnet 5 $0.00016 $0.00997
Haiku 4.5 $0.00008 $0.00499

Measured 4d ago against content hash 52ba25d29c3e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

collect-node-data scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Reaches for credential fileshighPrivilege escalation

SSH keys, cloud credentials, git-credentials, .npmrc, /etc/shadow: reading these is how a config file becomes a credential leak.

./venv/bin/python scripts/remote_node_collect.py --remote "<user@host>" --ssh-key ~/.ssh/id_ed25519 [--port <PORT>] \
.agents/skills/collect-node-data/SKILL.md · 266 lines

How it starts

The opening of the file, as written. The whole thing — 266 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Collect node-store data from specific hardware

The autotune node table (SearchDB, default ~/.cache/emmy/autotune.db) is a cross-hardware dataset of search-tree value-of-position rows — the leaf measurements the future offline prior trains on, with the full feature dict the prior sees. It is read by emmy eval prior --dataset nodes (Spearman + regret per card and compile regime) and feeds prior diagnostics. Because your dev box (and most of the fleet) has no local CUDA GPU, the data for any given card must be measured on that card and brought back.

This skill does exactly that for one GPU, in a single budgeted run on the box: get a server (an existing one the user provides, or rent one) → set up emmy → the golden sweep (scripts/remote_node_collect.py, driving scripts/golden_neighbor_bench.py) → merge the new card's node rows into the local DB → back the DB up → tear the server down (only if this run rented it). Everything long-running on the remote — the apt/make setup phase and the sweep itself — runs inside named tmux sessions (emmy-node-setup / emmy-node-sweep), so a dropped ssh connection never kills the work and a human can attach to watch it.

Why a budgeted sweep (and not a search-driven tune). The old flow ran an ε-greedy emmy tune --dataset golden first: its wall time grew with the golden set (patience-stopped search per shape, no budget knob), and even at ε=0.25 three quarters of its benches followed the incumbent prior — the collected rows over-sampled the branches the prior already liked (a censoring feedback loop). The sweep replaces it: a fixed --budget-s wall clock, and points drawn from the enumeration itself rather than a search trajectory, so the future offline prior gets clean leaf rows whose selection didn't depend on the incumbent's opinions. emmy tune --explore-eps still exists for interactive tuning; it is just no longer the collection vehicle.

Why three slices. Every golden shape's candidate pool (all kinds — matmul, reduce, rms_norm, softmax, attention, the fused norm_linear / mlp_geglu, …) is split by distance to the recorded golden anchors, and the budget is spent across the slices at configurable shares (default 60/25/15):

  • own — rows within --max-dist of the live card's OWN goldens: dense label support (and fine ranking resolution) exactly where this card's deploys land.
  • cross — rows near OTHER cards' goldens that realize on this card: every such point is verified-excellent somewhere, so measuring it here yields either transfer signal or an arch-disagreement row — the data the prior's arch × knob interactions (and a leave-one-card-out evaluation) need. An anchor that doesn't enumerate here is skipped, which is itself the realizability filter.
  • tail — a capped, hash-ordered (seed-independent, so stable across sessions) subsample of the rest of the enumeration: landscape support so the prior also learns what bad looks like.

Kind-stratified within each slice. After the slice draw, each batch picks a golden KIND uniformly among the kinds that still have points in that slice, and only then a shape within the kind (proportional to its remaining pool). Without this, matmul — ~87% of the selectable points on a 4090 — soaked up nearly the whole budget and small kinds (softmax, attention, linear_norm) could end a 4 h run with zero benches. Small kinds exhaust their pools early and their share flows back to the big ones, so a run guarantees every kind data first and spends the rest where the pool actually is.

Bench in the deployable regime. The offline prior trains on deployable records, and a sweep now measures there by default (emmy run --bench --ab, node recording on), so no pairing step is needed: every point collected is already a deployable measurement. Historical stores also hold -O1 rows from the era when sweeps ranked at that level; those are inert — the prior does not train on them and no deploy reads them. Do NOT pin --nvcc-flags to a non-deployable level to collect "cheaper" data: its error is biased along tile size, so it mis-ranks the wide register-tile family it would most matter for.

Read the full file on GitHub · 266 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 266 lines · 78 tokens per session scan C 52ba25d29c3e

Subscribe to this mod's changes

collect-node-data is a skill published in the GitHub repository cloudrift-ai/emmy (80 stars, last pushed 4d ago), licensed Apache-2.0. It adds 78 tokens to every session and 4,986 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it C with 1 finding (reaches for credential files). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

tilelang-ascend-kernel

Use when the user wants to add, modify, debug, or review an xLLM TileLang Ascend kernel or specialization, including Python kernel definitions, generated Ascend-C source, runtime wrapper dispatch, TileLang CMake wiring, and NPU tests.

xLLM-AI/xllm · 60 tokens

code-review

Review code changes for quality, security, performance, and correctness following project-specific standards. Use when reviewing pull requests, examining git diffs, or when the user asks for a code review. This skill should be used proactively — when the user asks for a review without specifying commits, automatically…

xLLM-AI/xllm · 71 tokens

add-unit-test

Add or update xLLM unit tests in the repository. Use when Codex needs to create a new C++/CUDA/NPU/MLU unit test, place a test under tests/, wire it into CMake with cctest, update an existing test target, choose platform gates, or validate test naming and dependencies against current xLLM test conventions.

xLLM-AI/xllm · 76 tokens

git-workflow

Use when the task involves Git operations for the public xLLM repository, including choosing branch or tag names, preparing commits and pull requests, backporting fixes, checking repo-specific review expectations, or drafting commit messages from actual diffs.

xLLM-AI/xllm · 52 tokens

bootloaders-embedded

Embedded bootloader skill for firmware update and app handoff. Use when writing a custom bootloader, jumping to application code, relocating VTOR, or implementing DFU/USB firmware update on Cortex-M. Activates on queries about bootloader jump, vector table relocation, application entry point, STM32 DFU, or dual-bank…

mohitmishra786/low-level-dev-skills · 74 tokens

mmio-and-bit-manipulation

MMIO and register access skill for bare-metal firmware. Use when accessing memory-mapped peripherals with volatile, bit masks, RMW patterns, or endianness concerns. Activates on queries about MMIO, volatile register, bit manipulation, read-modify-write, or register alignment.

mohitmishra786/low-level-dev-skills · 65 tokens