From kolo
Traces Python code execution: functions, return values, locals, HTTP requests, SQL queries into greppable files for runtime debugging and real data inspection.
npx claudepluginhub koloai/kolo --plugin koloThis skill uses the workspace's default tool permissions.
1. Execute code with Kolo activated (`KOLO=1`)
Debugs Python errors, exceptions, and unexpected behavior by analyzing tracebacks, reproducing issues, isolating with pdb/icecream/print debugging, identifying root causes, and providing fixes.
Traces execution paths, maps dependencies, follows data flows, and explores unfamiliar code systematically from entry points to build incremental understanding.
Guides blackbox debugging: confirms AS-IS/TO-BE symptoms, traces callstacks step-by-step in trace.md, explores branches heuristically then exhaustively, verifies fixes via red-green tests.
Share bugs, ideas, or general feedback.
KOLO=1).kolo/traces — search for a function name, URL fragment, SQL table, or error string, then read the matching files
kolo trace list, then emit the desired trace manually with kolo trace emit <trace_id>.kolo/kolo.txt or run kolo cat <trace_id>pip install kolo - install kolo from PyPI as per the project's conventions and only if it's not already installedKOLO=1 environment variable.
kolo run - activate kolo for a specific python program or script: e.g. kolo run python my_script.pykolo.enable - activate kolo for a specific code block. use as context manager: with kolo.enable() or as decorator: @kolo.enable()Use the kolo cli to view trace data.
kolo to see useful commands, recent traces and the location of kolo.txt.kolo trace list to list traces (most recent first). Specify number of traces to list with --count <count> (optional)By default kolo will emit the 5 most recently captured traces in .kolo/traces/. Each trace is a directory containing the full trace data as plain text files with human-readable section headers — read one directly to see everything captured for a given call, no special parser needed.
Simply grepping for function names or HTTP request fragments will find the relevant data. The files contain:
Manually emit a trace using kolo trace emit <trace_id>. If you'd like to emit it to an output directory other than .kolo/traces specify it with --output-dir
kolo.txt is the "homepage" of kolo output. Read it with head - it contains useful commands, a list of recent traces, and the full compact (kolo cat) representation of the latest trace. Kolo automatically updates this file as new traces are captured.
kolo cat — prefer Grep first, not cat. cat dumps an entire trace to stdout and can easily exceed your context window on real applications. Only reach for cat after you've narrowed to a specific small trace.
kolo cat outputs the most recent trace in compact formatkolo cat TRACE_ID outputs a specific tracekolo cat TRACE_ID --returns includes input/return valueskolo trace node <trace_id> <node_index> — fetch full details of a specific node (args, locals, return value) without grepping. Faster than cat when you already know the node index from the trace summary.The kolo config file lives at .kolo/config.toml
By default Kolo traces all code the project directory and ignores standard library or third party code. Filters customize this behavior.
ignore_frames is a list of file path fragments:
# .kolo/config.toml
[filters]
ignore_frames = ["ignore_me.py", "/ignore_directory/"]
This will ignore any file called ignore_me.py or any file with /ignore_directory/ in its path.
# .kolo/config.toml
[filters]
include_frames = ["json", "django/db"]
This will include any frames from the json module of the standard library and from Django's database code in django.db.
Note: Including standard library and third party code can generate a lot of extra data, which may slow down execution. If you notice slow execution, adjust ignores and includes to capture fewer frames.
More config options: https://docs.kolo.app/reference/config
Skill version: v0.1