Agent skill

Rdc CLI

by BANANASJIM in BANANASJIM/rdc-cli

A skill your agent uses when working with RenderDoc capture files (.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures.

MITAuto-check passedGame Development

Install Rdc CLI

skills CLI
$ npx skills add BANANASJIM/rdc-cli --skill rdc-cli -a claude-code

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

GitHub CLI
$ gh skill install BANANASJIM/rdc-cli rdc-cli --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/BANANASJIM/rdc-cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/rdc/_skills .claude/skills/rdc-cli && 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
rdc-cli
GitHub stars
180
Token cost
~2.9k tokens
SKILL.md length
1,154 words
Files
3 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when working with RenderDoc capture files (.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures.

  • Works in 7 steps: Open a capture → Inspect metadata: rdc info, rdc stats,… → Navigate the VFS: rdc ls /, rdc ls… → …
  • Working with RenderDoc capture files (.rdc)
  • SKILL.md covers Overview, Core Workflow, Output Formats and Render Pass Analysis, plus 8 more sections
  • Runs Python scripts from its folder; calls jq, pip and ssh

What it does

Rdc CLI is an agent skill from BANANASJIM/rdc-cli. Use this skill when working with RenderDoc capture files (.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures. Trigger phrases: "open capture", "rdc file", ".rdc", "renderdoc", "shader debug", "pixel trace", "draw calls", "GPU frame", "assert pixel", "export render target".

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `__init__.py` and `references/commands-quick-ref.md`).

It sits in Game Development, covering Shaders. It works with Python and Linux. The repository describes itself as: Scriptable CLI for RenderDoc captures — built for terminal workflows, CI pipelines, and AI agents. The licence is MIT.

When your agent uses it

  • Working with RenderDoc capture files (.rdc)
  • Analyzing GPU frames
  • Tracing shaders
  • Inspecting draw calls

Example prompts

  • “open capture”
  • “rdc file”
  • “renderdoc”
  • “/rdc-cli”

Requirements

  • Python 3

Workflow steps

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

  1. Open a capture
  2. Inspect metadata: rdc info, rdc stats, rdc events
  3. Navigate the VFS: rdc ls /, rdc ls /textures, rdc cat /draws/0/pipeline/summary
  4. Analyze specifics: rdc shaders, rdc pipeline, rdc resources, rdc bindings
  5. Debug shaders: rdc debug pixel EID X Y, rdc debug vertex EID VTXID, rdc debug thread EID GX GY GZ
  6. Export data: rdc texture ID -o out.png, rdc rt EID, rdc buffer ID -o buf.bin, rdc cbuffer EID --stage ps --binding 0, rdc log
  7. Close the session: rdc close

What it can do on your machine

Read from SKILL.md and the folder at commit ae559ee. 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 (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • jq
    • pip
    • ssh

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

  • Network

    No URLs in SKILL.md. Its commands use pip and ssh, which can reach the network depending on how they are called.

    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

Rdc CLI loads about 2.9k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 1,154 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~11k

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 BANANASJIM/rdc-cli at commit ae559ee, republished under its MIT licence (© BANANASJIM). 1,154 words, ~2,902 tokens.

Download SKILL.mdSave it as .claude/skills/rdc-cli/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
rdc-cli
description
Use this skill when working with RenderDoc capture files (.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures. Trigger phrases: "open capture", "rdc file", ".rdc", "renderdoc", "shader debug", "pixel trace", "draw calls", "GPU frame", "assert pixel", "export render target".

rdc-cli Skill

Overview

rdc-cli is a Unix-friendly command-line interface for RenderDoc GPU captures. It provides a daemon-backed architecture using JSON-RPC over TCP, a virtual filesystem (VFS) path namespace for navigating capture internals, and composable commands designed for shell pipelines, scripting, and CI assertions.

Install: pip install rdc-cli (requires a local RenderDoc build with Python bindings). Check setup: rdc doctor.

Core Workflow

Follow this session lifecycle for any capture analysis task:

  1. Open a capture:
    • Local: rdc open path/to/capture.rdc
    • Remote replay (Proxy): rdc open capture.rdc --proxy host:port
    • Split thin-client: rdc open --connect host:port --token TOKEN
    • Android device: rdc open capture.rdc --android [--serial SERIAL]
  2. Inspect metadata: rdc info, rdc stats, rdc events
  3. Navigate the VFS: rdc ls /, rdc ls /textures, rdc cat /draws/0/pipeline/summary
  4. Analyze specifics: rdc shaders, rdc pipeline, rdc resources, rdc bindings
  5. Debug shaders: rdc debug pixel EID X Y, rdc debug vertex EID VTXID, rdc debug thread EID GX GY GZ
  6. Export data: rdc texture ID -o out.png, rdc rt EID, rdc buffer ID -o buf.bin, rdc cbuffer EID --stage ps --binding 0, rdc log
  7. Close the session: rdc close
Session Management
  • Default session name: default (or value of $RDC_SESSION).
  • Override per-command: rdc --session myname open capture.rdc.
  • Check active session: rdc status.
  • Navigate to a specific event: rdc goto EID.

Output Formats

All list/table commands default to TSV (tab-separated values) with a header row, suitable for cut, awk, and sort.

FlagFormatUse Case
(default)TSV with headerHuman reading, shell pipelines
--no-headerTSV without headerPiping to awk/cut without stripping
--jsonJSON arrayStructured processing with jq
--jsonlNewline-delimited JSONStreaming processing, large datasets
-q / --quietMinimal (single column)Extracting IDs for loops

Example -- get all draw call EIDs as a plain list:

bash
rdc draws -q

Example -- JSON pipeline with jq:

bash
rdc events --json | jq '.[] | select(.type == "DrawIndexed")'

Render Pass Analysis

List passes (Phase 8 columns)

rdc passes outputs 6 columns: NAME, DRAWS, DISPATCHES, TRIANGLES, BEGIN_EID, END_EID.

bash
rdc passes                          # TSV table
rdc passes --json                   # includes load_ops/store_ops per pass
rdc passes --deps --table           # per-pass READS/WRITES/LOAD/STORE
Inspect a single pass

rdc pass <name> shows enriched attachments: resource name, format, dimensions, and load/store ops.

bash
rdc pass GBuffer
rdc pass GBuffer --json
rdc pass 0                          # by 0-based index
Detect dead render targets

rdc unused-targets finds render targets written but never consumed by visible output. Columns: ID, NAME, WRITTEN_BY, WAVE.

bash
rdc unused-targets                  # TSV
rdc unused-targets --json           # structured
rdc unused-targets -q               # one resource ID per line (for scripting)
Frame statistics

rdc stats outputs three sections: Per-Pass Breakdown, Top Draws by Triangle Count, and Largest Resources.

bash
rdc stats                           # all three sections
rdc stats --json                    # includes largest_resources array

GL/GLES/D3D11 captures without native BeginPass/EndPass markers get synthetic pass inference automatically — no extra flags needed.

Common Tasks

Find all draw calls
bash
rdc draws
rdc draws --pass "GBuffer" --json
Trace a pixel
bash
rdc debug pixel 1024 512 384            # EID first, then X Y
rdc debug pixel 1024 512 384 --json     # structured output
rdc debug pixel 1024 512 384 --trace    # full step-by-step trace
Search shaders by name or source
bash
rdc search "main"                  # regex search over shader disassembly
rdc search "Sample" --stage ps -C 2
rdc shaders --name "GBuffer*"
Export render targets
bash
rdc rt EID -o output.png
rdc rt EID --depth -o depth.png      # export the raw depth attachment
rdc texture ID -o tex.png            # export a texture by resource ID (PNG)
Decode a constant buffer
bash
rdc cbuffer EID --stage ps --binding 0           # decode to JSON
rdc cbuffer EID --stage vs --binding 0 --raw -o cbuffer.bin
Browse VFS paths
bash
rdc ls /
rdc ls /textures -l
rdc tree /draws/42/pipeline --depth 2     # pipeline state lives under /draws/<eid>/pipeline/
rdc cat /draws/42/pipeline/summary
rdc cat /events/42
Inspect pipeline state at a draw call
bash
rdc goto EID
rdc pipeline --json
rdc bindings --json
Compare state before/after a pass
bash
rdc goto 100 && rdc pipeline --json > before.json
rdc goto 200 && rdc pipeline --json > after.json
diff before.json after.json

CI Assertions

rdc-cli provides assertion commands that exit non-zero on failure, designed for automated testing pipelines:

CommandPurpose
rdc assert-pixel EID X Y --expect "R G B A"Assert pixel RGBA (4 space-separated floats) at EID/coordinates
rdc assert-cleanAssert no validation errors in capture
rdc assert-count <what> --expect N [--op CHOICE]Assert a capture metric (e.g. draws) satisfies a comparison
rdc assert-state EID KEY-PATH --expect VALUEAssert pipeline state value at EID matches expected
rdc assert-image EXPECTED ACTUAL [--threshold FLOAT]Compare two image files pixel-by-pixel

Example CI script:

bash
#!/bin/bash
set -e
rdc open test_capture.rdc
rdc assert-clean
rdc assert-count draws --expect 10 --op ge
rdc assert-pixel 1024 256 256 --expect "1.0 0.0 0.0 1.0"
rdc close

Shader Edit-Replay

Modify and replay shaders without recompiling the application:

bash
rdc shader-encodings                       # list available encodings
rdc shader EID ps --source > s.frag        # extract shader source
# ... edit s.frag ...
rdc shader-build s.frag --stage ps         # compile; prints the built shader ID
rdc shader-replace EID ps --with <ID>      # hot-swap built shader ID into capture
rdc shader-restore EID ps                  # revert single shader (STAGE required)
rdc shader-restore-all                     # revert all modifications

Remote Capture Workflow

rdc-cli wraps renderdoccmd remoteserver to support PC-to-PC remote captures.

  • rdc serve [--port PORT] [--allow-ips CIDR] [--no-exec] [--daemon] — launch remoteserver on the target machine
  • rdc remote connect <host:port> — save remote connection state
  • rdc remote list — enumerate capturable apps on the remote
  • rdc remote capture <app> -o frame.rdc [--args ...] [--frame N] [--keep-remote] — inject, capture, and transfer back. --keep-remote skips the transfer and prints the remote path; replay it with rdc open <path> --proxy host:port. (The CLI's own next: hint currently still references the deprecated --remote alias for --proxy.)
  • rdc open frame.rdc --proxy host:port — remote-backed replay (daemon local, GPU remote)

remote_state.py persists the last connected host so subsequent rdc remote list can omit --url.

Show full SKILL.md (521 more words)Show less

Split Mode (thin client)

Split mode decouples CLI and daemon — run the daemon where the GPU is and connect from a machine that doesn't need the renderdoc module. Useful when the analyst's laptop is macOS/Windows and the GPU is on a Linux server.

  • Server side: rdc open capture.rdc --listen [ADDR[:PORT]]
    • Prints these four labeled lines to stdout (among other status output): host: ADDR, port: PORT, token: TOKEN, connect with: rdc open --connect ADDR:PORT --token TOKEN
  • Client side: rdc open --connect HOST:PORT --token TOKEN

SSH tunnel tip (use the port from --listen, or rdc serve's default 39920): ssh -L 39920:localhost:39920 user@server, then connect to localhost:39920.

Every normal command (rdc draws, rdc rt, ...) works transparently in Split mode. Binary exports use file_read RPC with raw binary frames — no base64 overhead.

Android Workflow

  • Prerequisite: the RenderDoc APK must already be installed on the host via rdc setup-renderdoc --android (upstream) or --android --arm (ARM PS fork for Mali). rdc android setup does not push the APK itself.
  • rdc android setup [--serial SERIAL] — starts remoteserver on the device via RenderDoc's Device Protocol API (StartRemoteServer), sets adb forward, saves remote state.
  • rdc android capture <activity> [--serial SERIAL] [--timeout N] [--port PORT] [-o out.rdc] — GPU debug layers based capture (works around EMUI/Mali injection limitations).
  • rdc android stop [--serial SERIAL] — stops the remoteserver and cleans state.
  • For remote replay: rdc open frame.rdc --android [--serial SERIAL] — this is the only form that rewrites the saved adb://SERIAL to the forwarded localhost:PORT. Passing --proxy adb://SERIAL directly bypasses the rewrite and is known to crash the daemon (see session.py:_resolve_android_url).

Hardware matrix: Adreno is the happy path; Mali may need the ARM Performance Studio fork (see rdc setup-renderdoc --android --arm).

Troubleshooting

Always run rdc doctor first. It reports status for renderdoc module, renderdoccmd, adb, Android APK, and platform-specific toolchains. Only the missing-renderdoc-module case emits a dedicated build-hint block; other checks surface inline hints in the detail column, so read each failing line rather than relying on a uniform next-step list.

Common failure categories (conceptual, not literal error strings — map from the text the tool actually emits):

  • network / connect failed — remote host unreachable, firewall, wrong port. Verify rdc serve is running on the target.
  • version mismatch — host and target RenderDoc versions differ. Re-run rdc setup-renderdoc or rdc setup-renderdoc --android to align.
  • inject failed / ident=0 — injection blocked (Android EMUI, macOS SIP, Windows privilege). Run rdc doctor and check the platform-specific detail.
  • OpenCapture unsupported — local GPU can't replay the capture's API surface; switch to --proxy or --android remote replay.
  • duplicate Vulkan layer — rdc doctor warns when more than one VK_LAYER_RENDERDOC_Capture Vulkan layer is registered (a system-installed RenderDoc plus the rdc-managed one create a split-brain). The loader then picks one non-deterministically and capture can silently time out; unregister the extra manifest so only one remains.
  • not loaded / no session — forgot rdc open; use rdc status to inspect.

For long operations (large capture transfers, remote replay init), the CLI has limited progress feedback — this is a known UX gap, not a hang. Wait up to the --timeout value before concluding failure.

Command Reference

For the complete list of all commands with their arguments, options, types, and defaults, see references/commands-quick-ref.md.

© BANANASJIM, MIT. 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 2 other files (references) in src/rdc/_skills of BANANASJIM/rdc-cli.

  • SKILL.md
  • __init__.py
  • references/commands-quick-ref.md

Open the folder on GitHubat commit ae559ee

Compare with similar skills

Rdc CLI 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.

Rdc CLI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Rdc CLI this skillBANANASJIM/rdc-cli180—~2.9kAutomated safety check: PassMIT
Sokol Netelix22/Sokol.NET154—~2.8kAutomated safety check: PassMIT
Agfx Writing Bindless ShadersAmelieHeinrich/agfx144—~3.4kAutomated safety check: PassMIT
Renderdoc GPU Debugrudybear/renderdoc-skill211—~4kAutomated safety check: PassMIT
Apple Container Test RunnerRustPython/RustPython22k—~467Automated safety check: PassMIT
The Art of Debuggingstas00/the-art-of-debugging1.7k—~6.1kAutomated safety check: NotesCC-BY-SA-4.0

Similar skills

  • Sokol Net

    elix22/Sokol.NET

    Sokol.NET framework development — use for ANY work in this repo: creating or debugging examples, building/running for desktop/Android/iOS/Web, writing or compiling shaders, adding a new C/C++…

    154 GitHub stars~2.8k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • ALWAYS use when writing or modifying HLSL shaders for AGFX, or wiring the agfxShaderCompiler / agfxShaderModule / agfxRenderPipeline / agfxComputePipeline pipeline around them.

    144 GitHub stars~3.4k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed
  • Renderdoc GPU Debug

    rudybear/renderdoc-skill

    GPU frame debugging with RenderDoc via rdc-cli. An agent skill from rudybear/renderdoc-skill.

    211 GitHub stars~4k tokensUpdated 7 mo ago
    DevelopmentAuto-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
  • The Art of Debugging

    stas00/the-art-of-debugging

    Condensed debugging method and tool recipes for Unix, Python and PyTorch programs: crashes, hangs, segfaults, wrong output, CUDA OOM, NaN values and slowness.

    1.7k GitHub stars~6.1k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Temporal Developer

    latitude-dev/latitude-llm

    This skill should be used when the user asks to "create a Temporal workflow", "write a Temporal activity", "debug stuck workflow", "fix non-determinism error", "Temporal Python", "Temporal…

    4.7k GitHub stars~1.5k tokensUpdated yesterday
    Backend & APIsAuto-check passed

Works with

Questions about Rdc CLI

What does Rdc CLI do?

A skill your agent uses when working with RenderDoc capture files (.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures. Rdc CLI is an agent skill from BANANASJIM/rdc-cli.rdc), analyzing GPU frames, tracing shaders, inspecting draw calls, or running CI assertions against GPU captures.

When should I use Rdc CLI?

Rdc CLI fits situations like: working with RenderDoc capture files (.rdc); analyzing GPU frames; tracing shaders; inspecting draw calls.

How do I install Rdc CLI in Claude Code?

Run `npx skills add BANANASJIM/rdc-cli --skill rdc-cli -a claude-code`. Or copy the skill folder (src/rdc/_skills in BANANASJIM/rdc-cli) into .claude/skills/rdc-cli in your project. Claude Code loads it when a task matches its description.

How do I install Rdc CLI in Codex?

Run `npx skills add BANANASJIM/rdc-cli --skill rdc-cli -a codex`. Or copy the skill folder (src/rdc/_skills in BANANASJIM/rdc-cli) into .agents/skills/rdc-cli in your project. Codex loads it when a task matches its description.

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

What does Rdc CLI need to run?

Going by SKILL.md and its folder, Rdc CLI needs Python for the scripts in its folder and the command-line tools its instructions call (jq, pip and ssh). Our summary lists: Python 3.

Does Rdc CLI access the network?

SKILL.md contains no URLs. Its commands use pip and ssh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Rdc CLI 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 Rdc CLI use?

Rdc CLI 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 Rdc CLI use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.9k tokens, read only when the agent opens those files.

What are the alternatives to Rdc CLI?

Skills that share tags, products or a category with Rdc CLI: Sokol Net (elix22/Sokol.NET, 154 stars), Agfx Writing Bindless Shaders (AmelieHeinrich/agfx, 144 stars), Renderdoc GPU Debug (rudybear/renderdoc-skill, 211 stars) and Apple Container Test Runner (RustPython/RustPython, 22k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Rdc CLI?

BANANASJIM (a GitHub user) maintains it in BANANASJIM/rdc-cli, which has 180 GitHub stars. The repository was last updated on July 22, 2026.

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