OpenLogi Device Diagnosis
AprilNEA/OpenLogi
Finds the first failing layer when an OpenLogi Logitech device is missing or misbehaving across enumeration, open, probe, IPC and UI.
Profile Elodin with Tracy. An agent skill from elodin-sys/elodin.
$ npx skills add elodin-sys/elodin --skill elodin-tracy -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install elodin-sys/elodin elodin-tracy --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/elodin-sys/elodin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.cursor/skills/elodin-tracy .claude/skills/elodin-tracy && 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 "elodin-tracy" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracy into .claude/skills/elodin-tracy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-tracy", 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/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracyType 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 elodin-sys/elodin --skill elodin-tracy -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install elodin-sys/elodin elodin-tracy --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.cursor/skills/elodin-tracy .agents/skills/elodin-tracy && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "elodin-tracy" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracy into .agents/skills/elodin-tracy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-tracy", 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 elodin-sys/elodin --skill elodin-tracy -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install elodin-sys/elodin elodin-tracy --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.cursor/skills/elodin-tracy .cursor/skills/elodin-tracy && 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 "elodin-tracy" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracy into .cursor/skills/elodin-tracy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-tracy", 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/elodin-sys/elodin.git --path .cursor/skills/elodin-tracy--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 elodin-sys/elodin --skill elodin-tracy -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install elodin-sys/elodin elodin-tracy --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.cursor/skills/elodin-tracy .gemini/skills/elodin-tracy && 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 "elodin-tracy" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracy into .gemini/skills/elodin-tracy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-tracy", 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 elodin-sys/elodin elodin-tracyInstalls 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 elodin-sys/elodin --skill elodin-tracy -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .github/skills && cp -r skills-src/.cursor/skills/elodin-tracy .github/skills/elodin-tracy && 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 "elodin-tracy" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracy into .github/skills/elodin-tracy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-tracy", 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 elodin-sys/elodin --skill elodin-tracy -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install elodin-sys/elodin elodin-tracy --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/elodin-sys/elodin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.cursor/skills/elodin-tracy .opencode/skills/elodin-tracy && 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 "elodin-tracy" agent skill from https://github.com/elodin-sys/elodin/tree/main/.cursor/skills/elodin-tracy into .opencode/skills/elodin-tracy/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "elodin-tracy", 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.
elodin-tracyProfile Elodin with Tracy. An agent skill from elodin-sys/elodin.
Elodin Tracy is an agent skill from elodin-sys/elodin. Profile Elodin with Tracy. Use when profiling the editor, simulation, building with tracy features, capturing traces, analyzing performance, or adding custom instrumentation.
Its SKILL.md is about 2.8k 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 Rust and Linux. The repository describes itself as: Elodin simulation and flight software monorepo. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 729022c. 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:
justnixshcargoFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
docs.rsAlso links to:
github.comFrom 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.
Elodin Tracy loads about 2.8k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 898 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 noted patterns worth knowing about, such as sudo or a known installer.
sudo elodin editor examples/sensor-camera/main.pysudo elodin editor examples/sensor-camera/main.pysudo sh -c "ulimit -n 65536 && elodin editor examples/sensor-camera/main.py"sudo systemctl stop systemd-timesyncdsudo systemctl start systemd-timesyncdAutomated 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 elodin-sys/elodin at commit 729022c, republished under its Apache-2.0 licence (© elodin-sys). 898 words, ~2,783 tokens.
.claude/skills/elodin-tracy/SKILL.md (or your agent's skills folder).Tracy is a real-time, nanosecond-resolution hybrid frame and sampling profiler. https://github.com/wolfpld/tracy | BSD 3-clause
Linux only. Tracy profiling requires Linux. On macOS, just install tracy will abort with an explanation. Use a Linux machine or an OrbStack NixOS VM (see the elodin-nix skill) for profiling workflows.
nix develop
just install tracy
elodin editor examples/sensor-camera/main.pyIn a second terminal:
tracy # launches the Tracy profiler GUIClick Connect in the Tracy UI. You will see both the editor process (Bevy systems, UI rendering) and the simulation subprocess (IREE kernel execution) as separate clients.
For full sampling and context-switch data on Linux, run the profiled binary with elevated privileges:
sudo elodin editor examples/sensor-camera/main.pyEach Elodin process uses a dedicated Tracy port so they can be profiled independently or simultaneously:
| Process | Tracy Port |
|---|---|
Editor / elodin run | 8087 |
| Render server | 8088 |
| Simulation (IREE) | 8089 |
| Elodin-DB | 8090 |
When using the Tracy GUI, connect to each port separately. When using tracy-capture, specify the port with -p.
To capture traces headlessly (useful for CI, remote machines, or agentic workflows):
# Editor + render-server (Tracy v0.13.x protocol):
tracy-capture -a 127.0.0.1 -p 8087 -o /tmp/trace-editor.tracy -s 30 &
tracy-capture -a 127.0.0.1 -p 8088 -o /tmp/trace-render.tracy -s 30 &
sleep 1
elodin editor examples/sensor-camera/main.py
# After capture completes, export to CSV for analysis:
tracy-csvexport /tmp/trace-editor.tracy > /tmp/trace-editor.csv
tracy-csvexport /tmp/trace-render.tracy > /tmp/trace-render.csv
tracy-csvexport /tmp/trace-sim.tracy > /tmp/trace-sim.csvStart the capture before launching Elodin so the servers are listening when the Tracy clients initialize. The -s 30 flag records for 30 seconds; adjust as needed.
You can also open saved .tracy files in the GUI later:
tracy /tmp/trace-editor.tracyWhen the tracy feature is enabled, the editor binary (apps/elodin) sets up a tracing_tracy::TracyLayer in its tracing subscriber (apps/elodin/src/cli/mod.rs). This means every Rust tracing span becomes a Tracy zone.
Automatic (zero code changes):
bevy/trace_tracy)#[tracing::instrument]Bevy's own profiling guide: https://github.com/bevyengine/bevy/blob/main/docs/profiling.md
Tracy-specific runtime behavior:
AutoNoVsync (eliminates vsync idle from profiles)continuous() mode instead of reactive/game modeWhen cranelift-mlir is built with --features tracy (propagated via nox-py/tracy from just install tracy), each JIT-compiled function emits a Tracy zone named after its FuncId → name mapping (e.g. main, inner_929, svd). The zones appear in the same sim-subprocess Tracy port (8089) alongside the existing sim instrumentation.
Activation requires both:
--features tracy (or just install tracy)ELODIN_CRANELIFT_DEBUG_DIR=<path>Without ELODIN_CRANELIFT_DEBUG_DIR, the Cranelift JIT IR emits no probe calls, so Tracy produces zero zones for JIT'd functions — the feature is runtime-toggled orthogonally to the Cargo feature. See libs/cranelift-mlir/PERFORMANCE.md for the full workflow.
When built with --features tracy, the elodin-db binary (libs/db/src/main.rs) adds a TracyLayer to its tracing subscriber on port 8090. Instrumented hot paths:
handle_conn -- per-connection lifetimehandle_packet -- per-packet dispatchsink_table -- table decomposition + write-lock acquisition (the primary write path)apply_value (trace-level) -- per-component write within a tablepush_buf (trace-level) -- mmap append to index + data filesfollow_stream -- follow/replication egress pathcoalescing_flush (trace-level) -- TCP write coalescingThe apply_value and push_buf spans use trace_span! to minimize overhead at default log levels. Set RUST_LOG=trace or connect Tracy to capture them.
A throughput benchmark is available:
# Customer scenario: 400 components at 250Hz, per-component connections, with a reader
elodin-db-bench --scenario customer --json
# Same workload but batched into single-table packets (faster)
elodin-db-bench --scenario customer --mode batch --json
# Custom configuration
elodin-db-bench --components 1000 --frequency 100 --duration 20 --mode per-componentjust install tracy doesnox-py (Python extension) with maturin develop -F tracyelodin editor and elodin-db binaries with cargo build --release -p elodin -p elodin-db --features tracy, which activates bevy/trace_tracy and adds tracing-tracy to both processesapps/elodin tracy = ["elodin-editor/tracy", "bevy/trace_tracy", "dep:tracing-tracy"]
libs/elodin-editor tracy = ["bevy/trace_tracy"]
libs/db tracy = ["dep:tracing-tracy"] (adds TracyLayer to subscriber, port 8090)
libs/nox-py tracy = ["cranelift-mlir/tracy"] (forwards to JIT profiling layer)
libs/cranelift-mlir tracy = ["dep:tracy-client"] (emits per-JIT-function zones, port 8089)Any tracing span automatically appears in Tracy when the tracy feature is enabled:
#[tracing::instrument]
fn my_hot_function() {
// entire function is a Tracy zone
}
fn partial_instrumentation() {
let _span = tracing::info_span!("critical_section").entered();
// only this block is a Tracy zone
}The current EnvFilter (s10=info,elodin=info,impeller=info,...) controls which spans reach Tracy. To capture more detail:
RUST_LOG=debug elodin editor examples/sensor-camera/main.py#[tracing::instrument(skip(graph))]
fn my_hot_function() {
// Entire function is a Tracy zone.
}
The `skip(graph)` option tells [`#[tracing::instrument]`](https://docs.rs/tracing/0.1/tracing/attr.instrument.html) not to attach the `graph` argument as a span field. By default the macro would try to record every parameter (usually via `Debug`), which is noisy for large values, can fail if a type has no useful `Debug`, and is rarely needed when you only want a named zone in Tracy.
---
## 6. Tips and Troubleshooting
### Tracy won't connect
- Ensure the profiler UI is running and listening **before** starting the Elodin binary
- Or set `TRACY_NO_EXIT=1` to keep the app alive until Tracy connects:
```bash
TRACY_NO_EXIT=1 elodin editor examples/sensor-camera/main.pySampling and context-switch capture require elevated privileges on Linux:
sudo elodin editor examples/sensor-camera/main.pyIf you see the Tracy timeline but no ghost zones or CPU core list, this is the cause.
Tracy keeps many file descriptors open. Increase the limit:
sudo sh -c "ulimit -n 65536 && elodin editor examples/sensor-camera/main.py"On some Linux systems, GPU and CPU timelines drift due to network time sync:
sudo systemctl stop systemd-timesyncd
# Re-enable when done:
sudo systemctl start systemd-timesyncdWith Tracy enabled, Bevy's RenderDiagnosticsPlugin requires a DiagnosticsStore resource. The headless render server disables DiagnosticsPlugin but now explicitly initializes DiagnosticsStore to prevent panics (libs/elodin-editor/src/headless.rs).
tracy-profiler [file.tracy] # Open saved trace
tracy-profiler -a 127.0.0.1 [-p 8086] # Auto-connect to addresstracy-capture -o out.tracy [-a addr] [-p port] [-f] [-s seconds] [-m mem%]tracy-csvexport trace.tracy [-f name] [-c] [-s sep] [-e] [-u] > out.csvColumns: name, src_file, src_line, total_ns, total_perc, counts, mean_ns, min_ns, max_ns, std_ns.
tracy-update old.tracy new.tracy [-4|-h|-e|-z level] [-j streams] [-d] [-c] [-r] [-s flags]Strip flags: locks messages plots Memory images ctx-switches sampling Code Source-cache.
All defined project-wide. In Elodin, these are managed by the tracy-client-sys crate (editor).
TRACY_ENABLE -- required; without it all macros are no-opsTRACY_ON_DEMAND -- profile only when server is connected (saves memory)TRACY_NO_EXIT -- wait for server before exiting (also env var)TRACY_NO_BROADCAST -- no UDP presence announcementTRACY_ONLY_LOCALHOST -- localhost only (also env var)TRACY_PORT -- data+broadcast port (default 8086; also env var)TRACY_NO_SYSTEM_TRACING -- no kernel data (also env var)TRACY_NO_CONTEXT_SWITCH -- no context switch captureTRACY_NO_SAMPLING -- no call stack samplingTRACY_NO_CALLSTACK -- no call stack support at allTRACY_NO_CODE_TRANSFER -- no executable code retrievalTRACY_FIBERS -- fiber/coroutine support (small perf hit)TRACY_CALLSTACK=<depth> -- force callstack capture on all macrosTRACY_SAMPLING_HZ=<freq> -- sampling frequency (default 10 kHz Linux)| Key | Action |
|---|---|
A/D | Scroll left/right |
W/S | Zoom in/out |
Ctrl+F | Find Zone |
Ctrl+drag | Define time range |
Ctrl+click zone | Zone statistics |
| Middle-click | Zoom to extent |
| Left-click zone | Zone info |
| Right-click zone | Set time range |
Ctrl+Alt+R | Reconnect (live) |
Hard limits: 64 threads/lock, 65534 source locations, 255 recursive zone appearances, 1.6-day max session, 4B memory frees, 16M unique callstacks. Little-endian only, 48-bit VA.
Pitfalls:
exit() inside a zone = hang. Use exception workaround.Free needs matching Alloc. Mismatch kills session.TRACY_ON_DEMAND, events buffer unbounded in RAM.Linux notes:
perf_event_paranoid set to -1.--privileged --pid=host --user 0:0, mount /sys/kernel/debug.© elodin-sys, Apache-2.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 .cursor/skills/elodin-tracy of elodin-sys/elodin.
Open the folder on GitHubat commit 729022c
Elodin Tracy 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 |
|---|---|---|---|---|---|---|
| Elodin Tracy this skillelodin-sys/elodin | 547 | — | ~2.8k | Automated safety check: Notes | Apache-2.0 | |
| OpenLogi Device DiagnosisAprilNEA/OpenLogi | 23k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| Prosestatic-web-server/static-web-server | 2.4k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Gridbash Panesjasonsuhari/gridbash | 134 | — | ~1.5k | Automated safety check: Pass | MIT | |
| Emskin Patternsemskin/emskin | 124 | — | ~1.6k | Automated safety check: Pass | GPL-3.0 | |
| Rust Backendstatic-web-server/static-web-server | 2.4k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 |
AprilNEA/OpenLogi
Finds the first failing layer when an OpenLogi Logitech device is missing or misbehaving across enumeration, open, probe, IPC and UI.
static-web-server/static-web-server
Write or edit human-readable text for the Static Web Server (SWS) project — commit messages, CHANGELOG entries, PR descriptions, issue bodies, rustdoc comments, CLI help text, READMEs, and user docs…
jasonsuhari/gridbash
Coordinate with sibling agent panes from inside a GridBash grid — list panes and their roles, read what a pane is currently doing, prompt one pane or every other pane, and rename pane titles so the…
emskin/emskin
Coding and workflow patterns extracted from the emskin repo (nested Wayland compositor for Emacs).
static-web-server/static-web-server
Write or modify Rust code in the Static Web Server (SWS) project — modules, types, error handling, async code, hyper responses, feature-gated code, and the local commands that mirror CI.
static-web-server/static-web-server
Review or self-check a change to the Static Web Server (SWS) project before it is called done — correctness, invariants, API design, concurrency, maintainability, and an SWS-specific review checklist.
elodin-sys/elodin
Compare two git branches (usually the current branch vs main) by running every example on each, capturing exit codes, logs, and editor screenshots, then diffing the results.
elodin-sys/elodin
Work with the Cranelift JIT MLIR backend. An agent skill from elodin-sys/elodin.
elodin-sys/elodin
Work with Elodin-DB, the time-series telemetry database. An agent skill from elodin-sys/elodin.
elodin-sys/elodin
Develop and contribute to the Elodin codebase. An agent skill from elodin-sys/elodin.
elodin-sys/elodin
Contribute to the Elodin Editor, the 3D viewer and graphing tool.
elodin-sys/elodin
Run the Elodin Editor without a physical display in Gamescope, take screenshots, and record video through PipeWire and GStreamer.
Categories
Profile Elodin with Tracy. An agent skill from elodin-sys/elodin. Elodin Tracy is an agent skill from elodin-sys/elodin. Profile Elodin with Tracy.
Elodin Tracy fits situations like: profiling the editor; building with tracy features; capturing traces; analyzing performance.
Run `npx skills add elodin-sys/elodin --skill elodin-tracy -a claude-code`. Or copy the skill folder (.cursor/skills/elodin-tracy in elodin-sys/elodin) into .claude/skills/elodin-tracy in your project. Claude Code loads it when a task matches its description.
Run `npx skills add elodin-sys/elodin --skill elodin-tracy -a codex`. Or copy the skill folder (.cursor/skills/elodin-tracy in elodin-sys/elodin) into .agents/skills/elodin-tracy 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 elodin-sys/elodin --skill elodin-tracy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elodin-tracy, .gemini/skills/elodin-tracy, .github/skills/elodin-tracy and .opencode/skills/elodin-tracy in your project.
Going by SKILL.md and its folder, Elodin Tracy needs the command-line tools its instructions call (just, nix, sh and cargo). Our summary lists: Python 3; Docker.
SKILL.md names 2 domains. In commands or code: docs.rs; the agent is likely to contact it when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (runs commands with sudo), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Elodin Tracy is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.8k tokens (SKILL.md is roughly 11k 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 Elodin Tracy: OpenLogi Device Diagnosis (AprilNEA/OpenLogi, 23k stars), Prose (static-web-server/static-web-server, 2.4k stars), Gridbash Panes (jasonsuhari/gridbash, 134 stars) and Emskin Patterns (emskin/emskin, 124 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
elodin-sys (a GitHub organization) maintains it in elodin-sys/elodin, which has 547 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 9, 2026.
Source: elodin-sys/elodin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.