Agent skill

Local Log Debug

by UniClipboard in UniClipboard/UniClipboard

Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom…

AGPL-3.0Auto-check passedDevelopment

Install Local Log Debug

skills CLI
$ npx skills add UniClipboard/UniClipboard --skill local-log-debug -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install UniClipboard/UniClipboard local-log-debug --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/UniClipboard/UniClipboard.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/local-log-debug .claude/skills/local-log-debug && rm -rf skills-src

Use ~/.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/

Facts

Skill name
local-log-debug
GitHub stars
1.8k
Token cost
~2.6k tokens
SKILL.md length
1,122 words
Files
2
Skills in repo
24
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom…

  • Works in 2 steps: Does the resolved log dir exist? If not,… → For each role, is the latest file live…
  • The user asks to check the logs
  • SKILL.md covers When this skill applies (and…, Log layout you must remember…, Always run status first and Commands, plus 5 more sections
  • Runs Shell scripts from its folder; calls jq

What it does

Local Log Debug is an agent skill from UniClipboard/UniClipboard. Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom (pairing, sync, transfer, clipboard capture, daemon lifecycle) back through the logs. Use when the user asks to "check the logs", "why did X fail", "what did the daemon do", or describes a bug to diagnose from logs on this one host. NOT for cross-device peer debugging (use dual-side-debug) and NOT for writing/reviewing…

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `uc-logs.sh`).

It sits in Development, covering Debugging and Responsive design. 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.

When your agent uses it

  • The user asks to check the logs
  • What did the daemon do
  • Describes a bug to diagnose from logs on this one host

Example prompts

  • “what just happened”
  • “check the logs”
  • “why did X fail”
  • “/local-log-debug”

Requirements

  • A Bash shell

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Does the resolved log dir exist? If not, you're probably on the wrong
  2. For each role, is the latest file live (<2m) / recent (<10m)? Anything

What it can do on your machine

Read from SKILL.md and the folder at commit 9c76e0f. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Ships script files (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Local Log Debug loads about 2.6k tokens when it runs. Until then it costs about 143 tokens; SKILL.md has 1,122 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~143
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from UniClipboard/UniClipboard at commit 9c76e0f, republished under its AGPL-3.0 licence (© UniClipboard). 1,122 words, ~2,557 tokens.

Download SKILL.mdSave it as .claude/skills/local-log-debug/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
local-log-debug
description
Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom (pairing, sync, transfer, clipboard capture, daemon lifecycle) back through the logs. Use when the user asks to "check the logs", "why did X fail", "what did the daemon do", or describes a bug to diagnose from logs on this one host. NOT for cross-device peer debugging (use dual-side-debug) and NOT for writing/reviewing tracing code (use tracing-best-practices).

local-log-debug

Read and reason over uniclipboard's local logs on one machine, across the three process roles (gui / daemon / cli), using the current platform-conventional log layout.

The helper script .agents/skills/local-log-debug/uc-logs.sh is the only thing you should need to invoke for log work — it resolves the per-platform log directory, picks the latest file per role, and handles tail / grep / structured query / time-merge. Don't hand-roll ls/tail/jq pipelines unless the script genuinely can't express what you need.

When this skill applies (and when it does NOT)

SituationUse
"Check the logs on this machine", trace a symptom from local logsthis skill
Cross-device: "Windows didn't receive…", "Mac sent but peer…"dual-side-debug (two hosts, SMB-mounted peer)
Writing / reviewing #[instrument], tracing::*, subscriber setuptracing-best-practices
Bundling recent logs to hand off / attach to an issueuniclip debug export-logs (CLI) — see below
Build / cargo / typecheck failuresnot these JSONL logs at all
Daemon HTTP API behavior or sqlite statelogs are observability, not state

Log layout you must remember (current, post-split)

Single source of truth for where logs live is uc_app_paths::app_log_dir(). Logs are separate from the data root (since the platform-log-dir split) and are written per role so co-resident processes never share a file.

  • Directory (<app> = app.uniclipboard.desktop[-<UC_PROFILE>]):
    • macOS: ~/Library/Logs/<app>/
    • Linux: $XDG_STATE_HOME/<app>/logs/ (default ~/.local/state/...; falls back to the data-local root)
    • Windows: %LOCALAPPDATA%\<app>\logs\
    • portable build: <exe>/data/logs/
  • Per-role files, daily rotation, 7-day retention (older pruned on start):
    • uniclipboard-gui.json.<UTC-date> — the Tauri GUI host (uniclipboard)
    • uniclipboard-daemon.json.<UTC-date> — the detached uniclipd daemon
    • uniclipboard-cli.json.<UTC-date> — the uniclip CLI
  • Format: JSON Lines. Every line has timestamp (UTC ISO-8601, ends Z, and is always the first field), level, target, message, usually span and device_id, plus flattened span/event fields.
  • The date in the filename is UTC, not local time. A ...2026-06-17 file can be the live one while it's still 2026-06-16 in your local evening.

⚠️ Do not trust the older layout. The dual-side-debug skill and some legacy data roots still reference ~/Library/Application Support/.../logs/uniclipboard.json (single file, no role). That is the pre-split layout — wrong for this skill.

Profile resolution

The app dir gets a -<profile> suffix from UC_PROFILE. The local dev default is dev (package.json's tauri:dev sets UC_PROFILE=dev), so the script assumes dev. Override with --profile <name>, or --profile default for the no-suffix app.uniclipboard.desktop dir.

Escape hatch: UC_LOG_DIR

If the script's platform/profile resolution ever disagrees with reality (portable build, WSL reading a Windows app's logs under /mnt/c/..., an unusual mount), set UC_LOG_DIR=/abs/path/to/logs and the script uses it verbatim. This is also the fallback for a pure-PowerShell host where bash can't run: resolve the dir per the table above and read the JSONL with your own tools.

Always run status first

Before answering anything that depends on log content:

bash
.agents/skills/local-log-debug/uc-logs.sh status

Then judge:

  1. Does the resolved log dir exist? If not, you're probably on the wrong profile — try --profile default, or check sibling dirs in the parent.
  2. For each role, is the latest file live (<2m) / recent (<10m)? Anything stale / old / cold means that process likely isn't running right now — you may be reading a frozen session.

If the user is actively reproducing but the relevant role is cold/(no file), stop and confirm the profile before drawing conclusions. Don't silently analyze stale logs.

Commands

Always invoke via the script, from the repo root:

bash
.agents/skills/local-log-debug/uc-logs.sh <command> [args] [flags]
CommandWhen to use
statusFirst call of any session. Profile + resolved dir + per-role freshness.
pathsJust need the resolved dir and latest file per role (to feed another tool).
tailQuick "what just happened" — last 50 lines per selected role.
grep <pattern>Plain string match (a device id, an error fragment, a request id). Cheap first probe.
query --filter '<jq>'Structured jq filter over the JSONL. Best for level / target / span filters.
mergeTime-interleave the selected roles into one chronological stream, injecting .role. Use whenever the question is "what happened across gui ↔ daemon around time X".
Flags
  • --role gui\|daemon\|cli\|all — restrict to a role (default all).
  • --profile <name> — profile override (default dev; default = no suffix).
  • --lines N — output cap for tail/grep/query (default 50); per-file scan depth for merge (default 2000).
  • --since <ISO8601> — merge only: drop lines older than this UTC timestamp.
Show full SKILL.md (450 more words)Show less
  1. Ground yourself. Run status. Confirm the right profile and that the relevant role is live. Resolve any profile mismatch with the user first.
  2. Narrow the time window. Ask when the issue reproduced (or read it from the conversation), convert to UTC, and pass it to merge --since.
  3. Start broad, then narrow.
    • Broad cross-role story: merge --since <UTC> --lines 800.
    • Narrow by signal: query --filter '.level=="ERROR" or .level=="WARN"', or by target / span for the suspect subsystem.
  4. Correlate by id, don't assume. When the symptom spans roles ("GUI asked, daemon never acted"), grep the same id (request_id, transfer_id, entry_id, device_id, session_token_jti) across roles — the merged view beats two parallel monologues.
  5. Quote sparingly. Logs are noisy. In your reply, quote the 3–10 lines that carry signal, with role + timestamp. Never dump raw JSONL walls.

jq cookbook

Plug these straight into query --filter '<jq>':

jq
# Errors and warnings only
.level == "ERROR" or .level == "WARN"

# One subsystem (substring match on target)
.target | test("pairing|file_transfer|clipboard_sync")

# A specific span chain
.span | test("daemon.ws.connection")

# Around a particular id (works for any flattened field)
.request_id == "b6c8588aa8a8699c"
.device_id == "acf2b4da-a6f9-4b77-9074-e13b0ffc9496"

Compact projection for human reading (pipe query/merge output through this):

bash
... | jq -c '{ts:.timestamp, role:.role, lvl:.level, tgt:.target, span:.span, msg:.message}'
Subsystem target / span cheat-sheet

Real strings seen in these logs, to seed your target/span filters:

SubsystemRepresentative target / span
Daemon HTTP/WS APIuc_webserver::api::server, uc_webserver::api::ws, span daemon.ws.connection, uc_webserver::api::control_lease
Daemon lifecycle / workersuc_daemon::daemon::app, uc_daemon::daemon::workers::* (clipboard_watcher, peer_keepalive, file_sync_orchestrator, inbound_clipboard_sync)
Clipboard capture (Linux)uc_platform::clipboard::platform::linux::x11::event_loop (Wayland under the sibling wayland path)
Sync / transfer (app layer)uc_application::usecases::clipboard_sync, uc_application::usecases::file_transfer, uc_application::usecases::mobile_sync, span peer.dispatch
Pairing / setupuc_application::facade::space_setup, uc_application::usecases::pairing_*
Searchuc_application::facade::search::coordinator, span search.run_manual_rebuild_now
iroh networking (noisy)iroh::net_report, iroh::magicsock, iroh_relay::ping_tracker, iroh_blobs::store::*

Note: a lot of iroh* / relay traffic is infra noise. The log profiles already mute the worst of it; when scanning, prefer filtering to uc_* targets first.

Verbosity is controlled elsewhere

Local log level comes from RUST_LOG > UC_LOG_PROFILE > build type (debug→Dev, release→Prod). If a subsystem's lines are missing entirely, the profile may be filtering them — that's a capture problem, not a reading problem, and belongs to how the app was launched (e.g. uniclip debug on, UC_LOG_PROFILE=debug_clipboard), not to this skill.

Relationship to uniclip debug export-logs

The CLI can bundle recent logs for handoff:

bash
uniclip debug export-logs [--since-hours N]   # default 24h; writes a dir + manifest

Use that when the goal is to package logs (attach to an issue, send to the user). Use this skill when the goal is to read and reason about them in place. Related: uniclip debug status|on|off shows/toggles the effective log profile.

Things to avoid

  • Don't cat whole log files — daemon files get large.
  • Don't conclude "the daemon is broken" without checking its log freshness in status first; a cold file just means the daemon isn't running.
  • Don't convert UTC ↔ local time silently. If you convert, say so.
  • Don't edit log paths in this doc if the layout changes — fix uc-logs.sh first (and confirm against uc_app_paths::app_log_dir()), then this doc.
  • Don't confuse this with dual-side-debug: that skill reads a second host's logs over a mount and still uses the old single-file layout.
text

© 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

Files

SKILL.md and 1 other file in .agents/skills/local-log-debug of UniClipboard/UniClipboard.

  • SKILL.md
  • uc-logs.sh

Open the folder on GitHubat commit 9c76e0f

Compare with similar skills

Local Log Debug 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.

Local Log Debug compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Local Log Debug this skillUniClipboard/UniClipboard1.8k—~2.6kAutomated safety check: PassAGPL-3.0
Debugging Codesickn33/agentic-awesome-skills47k1 repos~3.1kAutomated safety check: PassMIT
Openocd Jtagmohitmishra786/low-level-dev-skills253—~1.6kAutomated safety check: PassMIT
Gearcoleco Debuggingdrhelius/Gearcoleco141—~3.5kAutomated safety check: PassGPL-3.0
Dbgtheodo-group/debug-that158—~1.9kAutomated safety check: PassMIT
Ue Live DebuggingJasonMa0012/MooaToon749—~2.9kAutomated safety check: NotesCustom licence

Similar skills

  • Debugging Code

    sickn33/agentic-awesome-skills

    Interactively debug source code — set breakpoints, step through execution line by line, inspect live variable state, evaluate expressions against the running program, and navigate the call stack to…

    47k GitHub starsUsed in 1 repo~3.1k tokens
    DevelopmentAuto-check passed
  • Openocd Jtag

    mohitmishra786/low-level-dev-skills

    OpenOCD skill for embedded hardware debugging. An agent skill from mohitmishra786/low-level-dev-skills.

    253 GitHub stars~1.6k tokensUpdated 3 mo ago
    DevelopmentAuto-check passed
  • Gearcoleco Debugging

    drhelius/Gearcoleco

    Debug and trace ColecoVision and Super Game Module games using the Gearcoleco emulator MCP server.

    141 GitHub stars~3.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Dbg

    theodo-group/debug-that

    Debug applications using the dbg CLI debugger. An agent skill from theodo-group/debug-that.

    158 GitHub stars~1.9k tokensUpdated 4 mo ago
    DevelopmentAuto-check passed
  • Ue Live Debugging

    JasonMa0012/MooaToon

    A skill your agent uses when debugging UE C++ crashes, runtime bugs, or unexpected behavior with Rider MCP available.

    749 GitHub stars~2.9k tokensUpdated 19 days ago
    DevelopmentAuto-check: notes
  • Eclipse Debug

    gradusnikov/eclipse-chatgpt-plugin

    Debug Java applications in Eclipse — set breakpoints, launch in debug mode, step through code, inspect stack traces, evaluate expressions, and hot-swap code changes.

    171 GitHub stars~1.3k tokensUpdated 9 days ago
    Frontend & DesignAuto-check passed

More from UniClipboard/UniClipboard

All 24 skills in this repo
  • Beui

    UniClipboard/UniClipboard

    Pick and install beUI (@beui) animated React components from the shadcn registry.

    1.8k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Create PR

    UniClipboard/UniClipboard

    Push the current branch and open a GitHub pull request against main.

    1.8k GitHub stars~4.6k tokensUpdated today
    Auto-check passed
  • Design Audit

    UniClipboard/UniClipboard

    定期审计代码库的工程设计问题(高心智复杂度、单一真相源被破坏、catch-all 胖接口、死代码、散落魔法字面量、泄漏抽象、资源生命周期靠环形缓冲)与可优化点,范围限定为自上次审计以来的 git churn,每条发现都落到 file:line 并对照本项目自己的 VISION.md / 各级 AGENTS.md / memory…

    1.8k GitHub stars~554 tokensUpdated today
    Auto-check passed
  • Dual Side Debug

    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.

    1.8k GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • E2E Test Thinker

    UniClipboard/UniClipboard

    Analyze the current branch's diff against main and determine which changes are testable via CLI-based end-to-end tests.

    1.8k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • iOS Log Diagnose

    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.

    1.8k GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Questions about Local Log Debug

What does Local Log Debug do?

Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom…. Local Log Debug is an agent skill from UniClipboard/UniClipboard. Inspect and analyze uniclipboard's local JSONL logs on a SINGLE machine — query, filter, and time-merge the per-role (gui/daemon/cli) log files to answer "what just happened" or trace a symptom (pairing, sync, transfer, clipboard capture, daemon lifecycle) back through the logs.

When should I use Local Log Debug?

Local Log Debug fits situations like: the user asks to check the logs; what did the daemon do; describes a bug to diagnose from logs on this one host.

How do I install Local Log Debug in Claude Code?

Run `npx skills add UniClipboard/UniClipboard --skill local-log-debug -a claude-code`. Or copy the skill folder (.agents/skills/local-log-debug in UniClipboard/UniClipboard) into .claude/skills/local-log-debug in your project. Claude Code loads it when a task matches its description.

How do I install Local Log Debug in Codex?

Run `npx skills add UniClipboard/UniClipboard --skill local-log-debug -a codex`. Or copy the skill folder (.agents/skills/local-log-debug in UniClipboard/UniClipboard) into .agents/skills/local-log-debug in your project. Codex loads it when a task matches its description.

Can I use Local Log Debug in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add UniClipboard/UniClipboard --skill local-log-debug -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/local-log-debug, .gemini/skills/local-log-debug, .github/skills/local-log-debug and .opencode/skills/local-log-debug in your project.

What does Local Log Debug need to run?

Going by SKILL.md and its folder, Local Log Debug needs a shell for the scripts in its folder and the command-line tools its instructions call (jq). Our summary lists: A Bash shell.

Does Local Log Debug access the network?

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.

Is Local Log Debug safe to install?

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.

What licence does Local Log Debug use?

Local Log Debug 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.

How many tokens does Local Log Debug use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Local Log Debug?

Skills that share tags, products or a category with Local Log Debug: Debugging Code (sickn33/agentic-awesome-skills, 47k stars), Openocd Jtag (mohitmishra786/low-level-dev-skills, 253 stars), Gearcoleco Debugging (drhelius/Gearcoleco, 141 stars) and Dbg (theodo-group/debug-that, 158 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Local Log Debug?

UniClipboard (a GitHub organization) maintains it in UniClipboard/UniClipboard, which has 1,847 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 7, 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.