Update V8 Version
openinterpreter/openinterpreter
Bumps the pinned v8 and rusty_v8 versions in Codex, validates the release-candidate path with the v8-canary check, and traces failures to upstream build changes.
TRIGGER when writing, modifying, or reviewing any Rust code that involves tracing, logging, spans, events,
$ npx skills add UniClipboard/UniClipboard --skill tracing-best-practices -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install UniClipboard/UniClipboard tracing-best-practices --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/UniClipboard/UniClipboard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/tracing-best-practices .claude/skills/tracing-best-practices && 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 "tracing-best-practices" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practices into .claude/skills/tracing-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tracing-best-practices", 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/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practicesType 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 UniClipboard/UniClipboard --skill tracing-best-practices -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install UniClipboard/UniClipboard tracing-best-practices --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/tracing-best-practices .agents/skills/tracing-best-practices && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tracing-best-practices" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practices into .agents/skills/tracing-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tracing-best-practices", 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 UniClipboard/UniClipboard --skill tracing-best-practices -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install UniClipboard/UniClipboard tracing-best-practices --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/tracing-best-practices .cursor/skills/tracing-best-practices && 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 "tracing-best-practices" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practices into .cursor/skills/tracing-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tracing-best-practices", 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/UniClipboard/UniClipboard.git --path .agents/skills/tracing-best-practices--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 UniClipboard/UniClipboard --skill tracing-best-practices -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install UniClipboard/UniClipboard tracing-best-practices --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/tracing-best-practices .gemini/skills/tracing-best-practices && 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 "tracing-best-practices" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practices into .gemini/skills/tracing-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tracing-best-practices", 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 UniClipboard/UniClipboard tracing-best-practicesInstalls 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 UniClipboard/UniClipboard --skill tracing-best-practices -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/tracing-best-practices .github/skills/tracing-best-practices && 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 "tracing-best-practices" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practices into .github/skills/tracing-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tracing-best-practices", 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 UniClipboard/UniClipboard --skill tracing-best-practices -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install UniClipboard/UniClipboard tracing-best-practices --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/tracing-best-practices .opencode/skills/tracing-best-practices && 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 "tracing-best-practices" agent skill from https://github.com/UniClipboard/UniClipboard/tree/main/.agents/skills/tracing-best-practices into .opencode/skills/tracing-best-practices/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tracing-best-practices", 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.
tracing-best-practicesTRIGGER when writing, modifying, or reviewing any Rust code that involves tracing, logging, spans, events,
Tracing Best Practices is an agent skill from UniClipboard/UniClipboard. TRIGGER when writing, modifying, or reviewing any Rust code that involves tracing, logging, spans, events,
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It works with Rust. The repository describes itself as: Real-time clipboard sync across all your devices — local-first, peer-to-peer, and end-to-end encrypted. No account. No cloud dependency. No central server. The licence is AGPL-3.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit add157e. 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 rust).
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.
Tracing Best Practices loads about 4k tokens when it runs. Until then it costs about 32 tokens; SKILL.md has 1,175 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 UniClipboard/UniClipboard at commit add157e, republished under its AGPL-3.0 licence (© UniClipboard). 1,175 words, ~4,023 tokens.
.claude/skills/tracing-best-practices/SKILL.md (or your agent's skills folder).This skill MUST be followed whenever you:
#[instrument] attributestracing::info!, tracing::debug!, tracing::warn!, tracing::error!, tracing::trace! eventsinfo_span!, debug_span!, etc.)tokio::spawn or any async task spawningtracing records three types of structured data — NOT print text:
trace_id, device_id, session_id, state, elapsed_ms)#[instrument] alone only creates a span; tracing_subscriber::fmt only outputs events. A span with no events inside it produces zero log output, making the function invisible in logs.Applies to: host command handlers, CLI handlers, HTTP/IPC handlers, background task entries, scheduled task entries.
#[instrument(
name = "cmd.get_clipboard_items",
level = "info",
skip(runtime),
fields(trace_id = %uuid::Uuid::new_v4())
)]
pub async fn get_clipboard_items(runtime: State<'_, AppRuntime>) -> Result<Vec<Item>, String> {
// ...
}Requirements:
trace_id or equivalent request identifiersession_id, device_id, space_id)Applies to: start_join_space, submit_passphrase, persist_entry, handle_event, sync_once, etc.
#[instrument(
name = "space_access.submit_passphrase",
level = "info",
skip(self, passphrase),
fields(session_id = %self.session_id, device_id = %self.device_id, state = ?self.state)
)]
async fn submit_passphrase(&mut self, passphrase: String) -> Result<()> {
// Span name reflects business action, not technical detail
}Applies to: DB read/write, file I/O, network send/receive, subprocess calls, encryption boundaries, WebSocket/libp2p/relay/RPC.
// CORRECT - Propagate current span
tokio::spawn(task().in_current_span());
// CORRECT - Create specific span for spawned work
let span = tracing::info_span!("pairing_session", session_id = %session_id);
tokio::spawn(task.instrument(span));Long-lived background loops MUST create child spans or events per iteration. Channel/callback boundaries MUST re-attach message IDs into new span context.
.entered() in async functionsEnteredSpan contains *mut () → not Send → holding it across .await makes the future non-Send → tokio::spawn / JoinSet::spawn will fail to compile.
#[instrument] (preferred)Best for: standalone async functions where parameters can be skipped.
#[instrument(skip_all, fields(session_id = %session_id, peer_id = %peer_id))]
async fn handle_message(session_id: &str, peer_id: &str, msg: Message) -> Result<()> {
info!("received message"); // automatically under the span
do_something().await; // await-safe
}.instrument(span)Best for: futures passed to tokio::spawn / JoinSet::spawn.
let span = tracing::info_span!("pairing.action_loop");
tasks.spawn(run_action_loop(rx, cancel).instrument(span));async { }.instrument(span).awaitBest for: match arms, if-branches, or other blocks that need a local span with .await inside.
match event {
Event::Succeeded { session_id } => {
let span = info_span!("pairing.session", session_id = %session_id);
async {
info!(event = "succeeded"); // under the span
notify_peer().await; // await-safe
}.instrument(span).await;
}
}// ❌ Compile error — EnteredSpan is not Send
let _guard = info_span!("my_span").entered();
something.await; // _guard held across await
// ❌ Same problem, different syntax
let span = info_span!("my_span");
let _guard = span.enter();
something.await; // _guard still held across await#[instrument]hash_bytes, normalize_path, parse_header, to_png — no business semantics, no span. Adds noise.
Tight loops, per-poll/tick functions, per-item iteration helpers. Use sampled events or aggregate stats instead.
#[instrument] records params via Debug by default. Passwords, tokens, ciphertext, large blobs WILL leak unless explicitly skip()-ed.
#[instrument] Standard Template#[instrument(
name = "space_access.submit_passphrase", // Stable name — survives refactors
level = "info", // Explicit default level
skip(self, passphrase), // Skip sensitive/large params
fields(
session_id = %self.session_id, // Key business context
device_id = %self.device_id,
state = ?self.state
)
)]
async fn submit_passphrase(&mut self, passphrase: String) -> Result<()> { ... }skip Rules — ALWAYS skip:self (unless Debug is very light and valuable)password, passphrase, token, secretArc<AppState> / runtime / container% vs ? Selection:%field (Display): stable, short, search-friendly fields?field (Debug): enums, struct summaries, diagnostic detailDo NOT automatically record full return values. Log key results as separate events:
tracing::info!(session_id = %session_id, result = "accepted", "space access completed");#[instrument] Requires Events Inside the Function Body#[instrument] generates a span, not an event. tracing_subscriber::fmt only writes events to log output (console/JSON file). A function with only #[instrument] and no event macros (info!, debug!, etc.) produces zero log output — the function is completely invisible in logs.
Every #[instrument]-annotated function MUST emit at least one tracing event. Minimum pattern:
#[instrument(name = "api.search_query", level = "info", skip(state, params), fields(query = %params.query))]
async fn search_query_handler(state: State, params: Query) -> Result<Json<Response>, Error> {
// ... business logic ...
let result = do_search().await?;
// At minimum, log the outcome — this makes the function visible in logs
info!(total = result.total, "search completed");
Ok(Json(result))
}For thin delegation functions (usecases that just call a port), a single debug! after the call is sufficient:
#[tracing::instrument(name = "usecase.index_entry.execute", skip(self, doc, postings), fields(entry_id = %doc.entry_id))]
pub async fn execute(&self, doc: SearchDocument, postings: Vec<SearchPosting>) -> Result<(), SearchError> {
self.search_index.index_entry(doc, postings).await?;
tracing::debug!("entry indexed successfully");
Ok(())
}Events record facts within a span. Message MUST be short; fields carry the data.
tracing::info!(
session_id = %session_id,
peer_id = %peer_id,
attempt = retry_count,
"relay connection established"
);MUST include: error_kind (stable category), error or source = ?err, retryability flag, key context IDs.
tracing::error!(
session_id = %session_id,
error_kind = "proof_verification_failed",
retryable = false,
error = %err,
"space access failed"
);tracing::debug!(
session_id = %session_id,
event = "ReceivedProof",
from_state = ?old_state,
to_state = ?new_state,
"state transition"
);Field names MUST be stable (once shipped, avoid renaming). Use snake_case.
| Field | Purpose |
|---|---|
trace_id | Cross-boundary request correlation |
request_id | Per-request identifier |
session_id | Pairing/space session |
task_id | Background task identifier |
device_id | Device identifier |
space_id | Space identifier |
peer_id | Network peer |
user_action | What the user triggered |
state / from_state / to_state | State machine context |
elapsed_ms | Duration |
retry_count | Retry attempts |
error_code | Business error code |
error_kind | Stable error classification |
error: human-readable summaryerror_kind: stable classificationerror_code: business error codesource: originating moduleretryable: whether retry makes senseWhen debugging, log: length, hash, summary, or object ID instead.
| Level | Meaning | Examples |
|---|---|---|
| ERROR | Unrecoverable, or main flow result affected | Decryption failed, DB corruption, illegal state transition |
| WARN | Abnormal but system continues, or fallback triggered | Relay failed -> switched backup, invalid config -> using default |
| INFO | Important business milestones (safe for production) | Space join success, pairing established, sync start/complete |
| DEBUG | Development/troubleshooting context | State machine event received, branch selection, retry parameters |
| TRACE | Ultra-fine internal behavior (local debugging only) | Per protocol frame, per loop iteration, per poll |
At least one error event MUST exist at the boundary where the error is discovered.
// WRONG - Same error logged at 5 stack levels
error!("failed: {}", err); // layer 1
error!("op failed: {}", err); // layer 2
error!("handler failed: {}", err); // layer 3
// CORRECT - Full detail at boundary, summary at top
// At discovery boundary:
tracing::error!(error_kind = "db_write_failed", error = %err, entry_id = %id, "persist failed");
// Upper layer: just propagate via ? or log only business outcomeDon't lump them with generic failures. They need separate classification for operational statistics.
State machines are the MOST important tracing target in this project.
#[instrument(
name = "space_access.handle_event",
level = "debug",
skip(self, event),
fields(session_id = %self.session_id, state = ?self.state)
)]
async fn handle_event(&mut self, event: Event) -> Result<()> { ... }Fields: event, from_state, to_state, reason, session_id.
Never lump with generic failures.
Fields: trace_id, request_id, route/command, client/source, session_id.
GUI sends trace_id with each daemon request; daemon creates span with same ID. Connects "frontend click -> IPC -> usecase -> infra" into one trace.
Record length, type, or object ID only.
observability::init_tracing() / bootstrap::init_observability(). No module may independently initialize a subscriber.
info baseline, own crates at debug, noisy third-party crates at warn. Uses EnvFilter with directives.
tracing_appender::non_blocking)When writing or reviewing tracing code, verify:
| Check | Rule |
|---|---|
| Entry function has span? | MUST |
| Key usecase/orchestrator has span? | MUST |
#[instrument] function has at least one event inside? | MUST |
tokio::spawn propagates span? | MUST |
Sensitive params use skip()? | MUST |
| Errors have structured fields (not just string)? | MUST |
| Field names follow project convention? | MUST |
| Subscriber init centralized? | MUST |
| File output holds WorkerGuard? | MUST |
High-frequency function avoids needless #[instrument]? | SHOULD |
| Span names stable and business-oriented? | SHOULD |
info level safe for long-term production? | SHOULD |
| State machine transitions use structured events? | SHOULD |
| Same error repeated across stack layers? | FORBIDDEN |
| Secret/large payload in tracing output? | FORBIDDEN |
.entered() / .enter() held across .await in async? | FORBIDDEN |
#[instrument] with no events inside (silent span)? | FORBIDDEN |
© UniClipboard, 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 .agents/skills/tracing-best-practices of UniClipboard/UniClipboard.
Open the folder on GitHubat commit add157e
Tracing Best Practices 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 |
|---|---|---|---|---|---|---|
| Tracing Best Practices this skillUniClipboard/UniClipboard | 1.9k | — | ~4k | Automated safety check: Pass | AGPL-3.0 | |
| Update V8 Versionopeninterpreter/openinterpreter | 69k | 2 repos | ~845 | Automated safety check: Pass | Apache-2.0 | |
| Firecrawl Page Scrape Integrationfirecrawl/firecrawl | 190k | 1 repos | ~944 | Automated safety check: Pass | ISC | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 42k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| Rust TDD Workflowrtk-ai/rtk | 83k | — | ~753 | Automated safety check: Notes | Apache-2.0 | |
| OpenLogi macOS Permissions TriageAprilNEA/OpenLogi | 23k | — | ~2.5k | Automated safety check: Notes | Apache-2.0 |
openinterpreter/openinterpreter
Bumps the pinned v8 and rusty_v8 versions in Codex, validates the release-candidate path with the v8-canary check, and traces failures to upstream build changes.
firecrawl/firecrawl
Adds Firecrawl's /scrape endpoint to application code to pull markdown, HTML, links, screenshots or structured data from a single known URL.
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
rtk-ai/rtk
Enforces red-green-refactor for Rust work, with idiomatic test patterns, a naming convention and a pre-commit gate of cargo fmt, clippy and test.
AprilNEA/OpenLogi
Decides whether an OpenLogi device problem on macOS is a privacy-permission (TCC) problem, using agent log lines, and says which identity needs which grant.
farm-fe/farm
Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.
UniClipboard/UniClipboard
Pick and install beUI (@beui) animated React components from the shadcn registry.
UniClipboard/UniClipboard
Push the current branch and open a GitHub pull request against main.
UniClipboard/UniClipboard
定期审计代码库的工程设计问题(高心智复杂度、单一真相源被破坏、catch-all 胖接口、死代码、散落魔法字面量、泄漏抽象、资源生命周期靠环形缓冲)与可优化点,范围限定为自上次审计以来的 git churn,每条发现都落到 file:line 并对照本项目自己的 VISION.md / 各级 AGENTS.md / memory…
UniClipboard/UniClipboard
Inspect uniclipboard logs from BOTH the macOS host and the mounted Windows peer when debugging cross-platform sync, pairing, transfer, or daemon issues.
UniClipboard/UniClipboard
Analyze the current branch's diff against main and determine which changes are testable via CLI-based end-to-end tests.
UniClipboard/UniClipboard
Drive the UniClipboard iOS app in a simulator and read its OSLog yourself to diagnose a mobile-sync bug, instead of asking the user to paste logs.
Works with
TRIGGER when writing, modifying, or reviewing any Rust code that involves tracing, logging, spans, events,. Tracing Best Practices is an agent skill from UniClipboard/UniClipboard.
Tracing Best Practices fits situations like: reviewing any Rust code that involves tracing.
Run `npx skills add UniClipboard/UniClipboard --skill tracing-best-practices -a claude-code`. Or copy the skill folder (.agents/skills/tracing-best-practices in UniClipboard/UniClipboard) into .claude/skills/tracing-best-practices in your project. Claude Code loads it when a task matches its description.
Run `npx skills add UniClipboard/UniClipboard --skill tracing-best-practices -a codex`. Or copy the skill folder (.agents/skills/tracing-best-practices in UniClipboard/UniClipboard) into .agents/skills/tracing-best-practices 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 UniClipboard/UniClipboard --skill tracing-best-practices -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tracing-best-practices, .gemini/skills/tracing-best-practices, .github/skills/tracing-best-practices and .opencode/skills/tracing-best-practices in your project.
SKILL.md names no scripts, command-line tools or credentials: Tracing Best Practices 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.
Tracing Best Practices 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 4k tokens (SKILL.md is roughly 16k 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 Tracing Best Practices: Update V8 Version (openinterpreter/openinterpreter, 69k stars), Firecrawl Page Scrape Integration (firecrawl/firecrawl, 190k stars), Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars) and Rust TDD Workflow (rtk-ai/rtk, 83k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
UniClipboard (a GitHub organization) maintains it in UniClipboard/UniClipboard, which has 1,867 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 10, 2026.
Source: UniClipboard/UniClipboard on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.