Agent skill

Debug Tooling

by pikax in pikax/verter

In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux.

MITAuto-check passed

Install Debug Tooling

skills CLI
$ npx skills add pikax/verter --skill debug-tooling -a claude-code

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

GitHub CLI
$ gh skill install pikax/verter debug-tooling --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/pikax/verter.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/debug-tooling .claude/skills/debug-tooling && 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
debug-tooling
GitHub stars
112
Token cost
~1.9k tokens
SKILL.md length
664 words
Files
1
Skills in repo
14
Repo updated
First seen
Licence
MIT

At a glance

In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux.

  • Works in 3 steps: release-dbg Cargo profile → In-process watchdog backtrace dumper → LLDB attach wrapper
  • Something hangs
  • SKILL.md covers 1. release-dbg Cargo profile, 2. In-process watchdog…, 3. LLDB attach wrapper and When to use which tool, plus 2 more sections
  • Calls cargo and winget

What it does

Debug Tooling is an agent skill from pikax/verter. In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux. Use when something hangs, runs unexpectedly slow, or needs a stack snapshot mid-execution.

Its SKILL.md is about 1.9k 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 Linux and macOS. The repository describes itself as: Fast Rust-powered compiler, semantic extraction, and LSP for component frameworks. The licence is MIT.

When your agent uses it

  • Something hangs
  • Runs unexpectedly slow
  • Needs a stack snapshot mid-execution

Example prompts

  • “/debug-tooling”

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. release-dbg Cargo profile
  2. In-process watchdog backtrace dumper
  3. LLDB attach wrapper

What it can do on your machine

Read from SKILL.md and the folder at commit e4f9d26. 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

    Shell commands in SKILL.md call:

    • cargo
    • winget

    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

Debug Tooling loads about 1.9k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 664 words of instructions outside code blocks.

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

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 pikax/verter at commit e4f9d26, republished under its MIT licence (© pikax). 664 words, ~1,883 tokens.

Download SKILL.mdSave it as .claude/skills/debug-tooling/SKILL.md (or your agent's skills folder).
name
debug-tooling
description
In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux. Use when something hangs, runs unexpectedly slow, or needs a stack snapshot mid-execution.

Debug Tooling — Watchdog + LLDB Attach

Three independent pieces (combine as needed), from commit 6f603f05 (chore(debug): in-process backtrace watchdog + lldb attach wrapper). Use when:

  • A bench/binary hangs and you don't know where.
  • A function is much slower than expected and you need a stack snapshot.
  • An external sampler (samply --record, cdb, windbg, perf) is unavailable (typical on Windows without the Windows Kits).

1. release-dbg Cargo profile

Cargo.toml defines release-dbg: inherits release (full optimisation, LTO, single codegen-unit) but keeps debug = "line-tables-only" and strip = "none". Backtraces resolve to crates/<crate>/src/<file>.rs:LINE with ~5% binary size increase over release. Regular release profile is unchanged (small, frame-pointer-omitted) so production benchmarks stay clean.

Build:

bash
cargo build --profile=release-dbg --example audit_real_component_meta -p verter_bench

Output: target/release-dbg/examples/. Use whenever attaching a debugger or capturing a backtrace.

2. In-process watchdog backtrace dumper

crates/verter_type_engine/src/loop5_instrumentation.rs — sampling watchdog that captures std::backtrace::Backtrace::force_capture() from the running thread. Wired into shallow_lower_type_expr (recursive workhorse of TypeExpr → SemanticNodeId lowering). Inert when not spawned (single relaxed atomic load per call site).

Two modes
  • Sample — [WATCHDOG_DUMP] every interval_ms regardless of progress. For slow recursive work where the heartbeat advances rapidly but the call is stuck deep in one subtree (e.g., walking a 99 MB TypeExpr tree).
  • Stall — [WATCHDOG_DUMP] only after watchdog_beat stops advancing for stall_threshold_ms. For true hangs where the function never returns.
Bench harness env vars

audit_real_component_meta.rs reads:

Env varDefaultMeaning
VERTER_WATCHDOG_MODEstallstall or sample
VERTER_WATCHDOG_STALL_MS(no spawn)Stall mode threshold; setting this enables stall
VERTER_WATCHDOG_INTERVAL_MS1000Sample interval / stall poll period
Recipes

Sample every 10s while a bench is hanging on ChatMessage cold:

bash
VERTER_AUDIT_PROJECT_ROOT=.integration-tests/repos/nuxt-ui-codex-bench \
  VERTER_AUDIT_OUT_DIR="${TMPDIR:-/tmp}/loop-dbg" \
  VERTER_AUDIT_TARGETS=ChatMessage \
  VERTER_AUDIT_PASSES=fresh-cold \
  VERTER_WATCHDOG_MODE=sample \
  VERTER_WATCHDOG_INTERVAL_MS=10000 \
  timeout 120 ./target/release-dbg/examples/audit_real_component_meta.exe \
  > /tmp/audit-watchdog.txt 2>&1

Detect a true hang (no heartbeat for 30s):

bash
VERTER_WATCHDOG_MODE=stall VERTER_WATCHDOG_STALL_MS=30000 ./target/release-dbg/...

Read the result:

bash
grep -A40 "WATCHDOG_DUMP" /tmp/audit-watchdog.txt | head -100

A typical dump:

[WATCHDOG_SAMPLE] serial=1 beat=1234567
[WATCHDOG_DUMP] serial=1 label=shallow_lower_type_expr backtrace=
   6: shallow_lower_type_expr  at lower.rs:87        (entry hook)
   7: shallow_lower_type_expr  at lower.rs:1335      (TypeExpr::IndexedAccess.index)
   8: shallow_lower_type_expr  at lower.rs:639       (TypeExpr::Ref arg)
   9: shallow_lower_type_expr  at lower.rs:549       (TypeExpr::Union arm)
  ...
  35: until_stable_full         at field_types.rs:189
  36: until_stable              at field_types.rs:61
  37: (the per-field rescue cascade, since retired)
  ... [up to bench main]

Line numbers map to match arms in shallow_lower_type_expr, identifying which TypeExpr variant the recursion is processing at each frame.

Wiring the watchdog into a new hot path
rust
// In your hot-path entry:
crate::loop5_instrumentation::watchdog_beat();
crate::loop5_instrumentation::watchdog_check_and_dump("my_hot_function");

Both calls are inert when the watchdog is not spawned (single relaxed atomic load each in production).

3. LLDB attach wrapper

tools/debug/lldb-attach.sh wraps bundled LLVM lldb.exe for Windows. Fixes python311.dll PATH (lldb 22.1 dynamically links it) and emits thread backtrace all + process detach.

Prerequisite (one-time):

bash
winget install Python.Python.3.11

python311.dll lives at %LOCALAPPDATA%\Programs\Python\Python311\python311.dll; the wrapper finds it automatically.

Usage:

bash
# Attach by process name (case-sensitive)
tools/debug/lldb-attach.sh audit_real_component_meta.exe /tmp/stack.txt

# Attach by PID
tools/debug/lldb-attach.sh 12345 /tmp/stack.txt

Output goes to stdout (live) and the file. Detaches automatically so the target keeps running.

Use when watchdog isn't sufficient:

  • Process isn't a verter bench (no watchdog wired up).
  • Want a snapshot at a specific moment without modifying the binary.
  • Want all thread backtraces, not just the one running shallow_lower_type_expr.
Show full SKILL.md (271 more words)Show less

When to use which tool

SymptomTool
Bench hangs in shallow_lower_type_exprWatchdog Sample mode
Process is silent for minutes, no progress logsWatchdog Stall mode
Want to inspect a process you can't restartLLDB attach
Want all-thread state, not just the lowering threadLLDB attach
Need source line numbers on attached backtracesrelease-dbg profile
Want full step-through interactive debuggingLLDB or VS 2022

What to do with a backtrace

A stack trace tells you where the hang/slowness lives:

  1. Map line numbers to source: each frame is at file.rs:LINE — open and read surrounding code.
  2. Determine: "fast code walking giant input" vs "slow code walking normal input":
    • Fast code, giant input → bug is upstream in whoever built the input; trace back through the call chain.
    • Slow code, normal input → optimise the function (algorithm, caching, allocation pattern).
  3. If recursion is deep but per-frame is fast, input shape is pathological. Dump it (format!("{:?}", expr) at a strategic checkpoint, gated on VERTER_PROGRESS_STREAM) and check size.

Caveats

  • Watchdog requires the target binary to be linked against the version of verter_session that includes the watchdog module. Other workspaces cannot use it without that dependency.
  • Backtrace::force_capture() ignores RUST_BACKTRACE; no need to set that env var. Release-mode backtraces work as long as the binary has line-tables-only debug info (built via release-dbg).
  • The watchdog's check-and-dump runs on the same thread as the slow function — does not capture other threads. For multi-threaded hangs, use LLDB attach.
  • LLDB on Windows is sensitive to symbol availability. If frames show <unknown> instead of source lines, verify the binary was built with release-dbg and that the .pdb file lives next to the .exe.

© pikax, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/debug-tooling of pikax/verter.

Open the folder on GitHubat commit e4f9d26

Compare with similar skills

Debug Tooling 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.

Debug Tooling compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Debug Tooling this skillpikax/verter112—~1.9kAutomated safety check: PassMIT
Engine Whats Newflutter/flutter179k—~978Automated safety check: PassBSD-3-Clause
Openclaw Live Updateropenclaw/openclaw392k—~3.7kAutomated safety check: PassMIT
Apple Container Test RunnerRustPython/RustPython22k—~467Automated safety check: PassMIT
Native Feel Cross Platform Desktopyetone/native-feel-skill1.9k1 repos~1.5kAutomated safety check: PassMIT
TreeSheets Agent Socketaardappel/treesheets3.2k—~5.7kAutomated safety check: NotesZlib

Similar skills

  • Engine Whats New

    flutter/flutter

    Generates the "what's new" release summary and diff file for changes in the Flutter engine (//engine/src/flutter) between two releases (e.g., 3.47 vs 3.44).

    179k GitHub stars~978 tokensUpdated today
    MobileAuto-check passed
  • Openclaw Live Updater

    openclaw/openclaw

    Maintain the canonical live OpenClaw main checkout, macOS LaunchAgent-managed Gateway, local macOS app, exact-head main CI, and recurring full release validation.

    392k GitHub stars~3.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Apple Container Test Runner

    RustPython/RustPython

    Runs RustPython tests inside a Linux container built with Apple's container CLI, so macOS users can compare Linux results with their local ones.

    22k GitHub stars~467 tokensUpdated today
    Testing & QAAuto-check passed
  • Native Feel Cross Platform Desktop

    yetone/native-feel-skill

    A skill your agent uses when the user is designing, prototyping, or rewriting a desktop app that must run on multiple OSes (macOS + Windows, optionally Linux) AND feel indistinguishable from a…

    1.9k GitHub starsUsed in 1 repo~1.5k tokens
    DevelopmentAuto-check passed
  • TreeSheets Agent Socket

    aardappel/treesheets

    Runs Lobster scripts against the document open in a running TreeSheets instance through its local agent socket, and returns the results or errors.

    3.2k GitHub stars~5.7k tokensUpdated yesterday
    Productivity & AutomationAuto-check: notes
  • Open Computer Use

    iFurySt/open-codex-computer-use

    Platform-neutral guidance for using Open Computer Use, the open-source Computer Use MCP server and CLI for macOS, Linux, and Windows.

    2.4k GitHub stars~1.5k tokensUpdated yesterday
    Productivity & AutomationAuto-check passed

More from pikax/verter

All 14 skills in this repo
  • Agent Prompts

    pikax/verter

    Generate copy-pasteable prompts for driving separate Claude Code sessions through refactor, review, or migration work.

    112 GitHub stars~5k tokensUpdated today
    Auto-check: warnings
  • Build dependency chains, rebuild sequences, profiling with MCP, and Analysis MCP server setup for Verter

    112 GitHub stars~4.3k tokensUpdated today
    Auto-check passed
  • Compiler Codegen

    pikax/verter

    Rust compiler pipeline, template codegen (VDOM/IDE), CodeTransform, cached directives, strict slots, IDE error recovery, style preprocessing, CompileTarget, compiler authority/policy/demand/admission

    112 GitHub stars~21k tokensUpdated today
    Auto-check passed
  • CTO/manager-of-managers methodology for autonomous multi-train plans where the user says "you are the MoM/CTO", "orchestrate the whole plan", "drive the migration end-to-end", "manager-of-managers"…

    112 GitHub stars~3.5k tokensUpdated today
    Auto-check passed
  • Rust Performance

    pikax/verter

    Rust performance optimization patterns: batch operations, allocation hierarchy, object pooling, CodeTransform API for vertercompiler

    112 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Signature Kernel

    pikax/verter

    Verter semantic signature kernel — signature records/descriptors, epoch-safe interned storage and retirement, request-pinned borrowed reads, positional matching, call substitution, ordered…

    112 GitHub stars~4.4k tokensUpdated today
    Auto-check passed

Works with

Questions about Debug Tooling

What does Debug Tooling do?

In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux. Debug Tooling is an agent skill from pikax/verter. In-process backtrace watchdog + LLDB attach wrapper + release-dbg profile for diagnosing hangs and slow paths in Verter benches and binaries on Windows / macOS / Linux.

When should I use Debug Tooling?

Debug Tooling fits situations like: something hangs; runs unexpectedly slow; needs a stack snapshot mid-execution.

How do I install Debug Tooling in Claude Code?

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

How do I install Debug Tooling in Codex?

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

Can I use Debug Tooling 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 pikax/verter --skill debug-tooling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/debug-tooling, .gemini/skills/debug-tooling, .github/skills/debug-tooling and .opencode/skills/debug-tooling in your project.

What does Debug Tooling need to run?

Going by SKILL.md and its folder, Debug Tooling needs the command-line tools its instructions call (cargo and winget).

Does Debug Tooling 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 Debug Tooling 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 Debug Tooling use?

Debug Tooling is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Debug Tooling use?

About 1.9k tokens (SKILL.md is roughly 7.5k 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 Debug Tooling?

Skills that share tags, products or a category with Debug Tooling: Engine Whats New (flutter/flutter, 179k stars), Openclaw Live Updater (openclaw/openclaw, 392k stars), Apple Container Test Runner (RustPython/RustPython, 22k stars) and Native Feel Cross Platform Desktop (yetone/native-feel-skill, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Debug Tooling?

pikax (a GitHub user) maintains it in pikax/verter, which has 112 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 8, 2026.

Source: pikax/verter on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.