CodexBar Usage Reader
steipete/CodexBar
CodexBar read. Provider usage, limits, credits, config health. JSON. No writes.
Finds every LLM workflow in a repository, proposes a labeling table and, once you agree, wires labels so Caveman Cloud groups spend per workflow.
$ npx skills add JuliusBrussee/caveman --skill caveman-discover -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install JuliusBrussee/caveman caveman-discover --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/JuliusBrussee/caveman.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/caveman-discover .claude/skills/caveman-discover && 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 "caveman-discover" agent skill from https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover into .claude/skills/caveman-discover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "caveman-discover", 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/JuliusBrussee/caveman/tree/main/skills/caveman-discoverType 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 JuliusBrussee/caveman --skill caveman-discover -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install JuliusBrussee/caveman caveman-discover --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JuliusBrussee/caveman.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/caveman-discover .agents/skills/caveman-discover && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "caveman-discover" agent skill from https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover into .agents/skills/caveman-discover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "caveman-discover", 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 JuliusBrussee/caveman --skill caveman-discover -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install JuliusBrussee/caveman caveman-discover --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JuliusBrussee/caveman.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/caveman-discover .cursor/skills/caveman-discover && 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 "caveman-discover" agent skill from https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover into .cursor/skills/caveman-discover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "caveman-discover", 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/JuliusBrussee/caveman.git --path skills/caveman-discover--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 JuliusBrussee/caveman --skill caveman-discover -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install JuliusBrussee/caveman caveman-discover --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JuliusBrussee/caveman.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/caveman-discover .gemini/skills/caveman-discover && 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 "caveman-discover" agent skill from https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover into .gemini/skills/caveman-discover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "caveman-discover", 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 JuliusBrussee/caveman caveman-discoverInstalls 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 JuliusBrussee/caveman --skill caveman-discover -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/JuliusBrussee/caveman.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/caveman-discover .github/skills/caveman-discover && 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 "caveman-discover" agent skill from https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover into .github/skills/caveman-discover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "caveman-discover", 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 JuliusBrussee/caveman --skill caveman-discover -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install JuliusBrussee/caveman caveman-discover --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/JuliusBrussee/caveman.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/caveman-discover .opencode/skills/caveman-discover && 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 "caveman-discover" agent skill from https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-discover into .opencode/skills/caveman-discover/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "caveman-discover", 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.
caveman-discoverFinds every LLM workflow in a repository, proposes a labeling table and, once you agree, wires labels so Caveman Cloud groups spend per workflow.
Caveman Cloud groups LLM spend by workflow label, and unlabeled gateway traffic lands in a single unlabeled-workflow bucket. This skill has the agent find the repository's workflows, name them, wire the labels and verify that nothing broke. Because it edits code, the agent proposes a table first and applies changes only after you agree, and running it again on an already-labeled repo must change nothing.
The inventory starts from entry points, not imports: HTTP or RPC handlers that call an LLM, scheduled jobs and queue workers, CLI commands and scripts, eval harnesses that spend real tokens, and distinct agents or chains inside a framework such as LangGraph. One workflow is one job a person would name, so a shared helper used by three jobs makes three workflows, labeled at the callers. Names are lowercase slugs of 1–96 characters naming the job instead of the technology, such as support-reply or nightly-digest, and unclear ones are marked for review.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2e08b91. 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.
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.
Caveman Workflow Labeler loads about 1.3k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 590 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 JuliusBrussee/caveman at commit 2e08b91, republished under its Apache-2.0 licence (© JuliusBrussee). 590 words, ~1,312 tokens.
.claude/skills/caveman-discover/SKILL.md (or your agent's skills folder).You are labeling this repository's LLM workflows for Caveman Cloud. A
workflow is a job the code performs — "answer a support ticket", "build the
nightly digest", "run the eval suite" — not a technology. Every gateway
request can carry a workflow label; unlabeled traffic all lands in one
unlabeled-workflow bucket. Your job: find the workflows, name them well,
wire the labels, and verify nothing broke.
This changes code, so it goes through the user's normal review: propose the table first, apply after the user agrees. Re-running on an already-labeled repo must change nothing (idempotent).
This skill is operator-invoked. An unlabeled-traffic Cave Plan observation is
review-only and does not create an advisory file, proposal, or Draft PR. Do not
infer that telemetry selected a callsite or authorized an edit. Independently
inventory the repository, present the labeling table, and wait for the user's
approval before changing code.
Walk the repo from its entry points, not from its imports:
scripts/, bin/, package.json scripts)One workflow = one job a human would name. Ten callsites inside the same
request handler are one workflow; one shared llm.ts helper used by three
jobs is three workflows (label at the callers, never the shared helper).
Slug grammar (the gateway enforces this): lowercase [a-z0-9_-], 1–96 chars.
Name the job, not the tech:
support-reply, nightly-digest, pr-review, eval-suite,
onboarding-emailopenai-calls (tech), main (says nothing), SupportReply (invalid),
johns-test-3 (won't age)Names are forever-ish — renaming later splits the spend history. When a job's
purpose isn't clear from the code, derive the slug from the file name and mark
it review in the table rather than inventing a purpose.
Present this table and ask to proceed:
| workflow | job | where | how it gets labeled |
|---|---|---|---|
| support-reply | answers inbound tickets | src/bot/reply.ts:41 | defaultHeaders on the reply client |
| nightly-digest | 02:00 summary job | jobs/digest.ts:12 | header on the digest client |
| eval-suite (review) | scripts/eval.ts:8 — purpose inferred from filename | scripts/eval.ts:8 | env override at invocation |Then wire each label with the lightest mechanism available at that callsite:
workflow option, or
defaultWorkflow on the client a single-job service constructs."x-cave-workflow": "<slug>" to the same defaultHeaders /
default_headers / extra_headers block that already carries
x-cave-api-key. Shared client used by several jobs → pass the header per
call (every SDK above accepts per-request header overrides), or give each
job its own thin client.caveman wrap): --workflow <slug> flag or
CAVE_WORKFLOW=<slug> env at the invocation site (cron line, CI step).x-cave-workflow header to the request.Label the callers, keep the diff minimal, match the repo's style. If a callsite is not routed through the Caveman gateway at all, don't label it — list it under "not wired" in the report (labels only travel on gateway traffic; wiring is the caveman-setup skill's job).
Run whatever the repo already uses to exercise one labeled path (a test, a
dev script, one curl). Then confirm: the request still succeeds (the gateway
rejects an invalid label with 400 cave_invalid_request_header — fix the slug
if so). Labeled spend appears on the dashboard at /activity?tab=workflows as
each workflow next runs; jobs on a schedule show up when the schedule fires,
and that's worth saying in the report rather than pretending they're live.
## Workflows labeled
| workflow | job | where |
|---|---|---|
| support-reply | answers inbound tickets | src/bot/reply.ts:41 |
| nightly-digest | 02:00 summary job | jobs/digest.ts:12 |
Verified: <the labeled path you actually exercised, and what you observed>
Lands at: <DASHBOARD>/activity?tab=workflows — each row appears as that workflow
next runs. Anything still unlabeled shows as `unlabeled-workflow`.
Not wired (no gateway routing, so no label): <list or "none">
Marked review: <slugs whose purpose was inferred from filenames, or "none">If you found no LLM entry points at all: say exactly that, and point at the
setup skill (<docs origin>/docs/agent-setup.md) instead of manufacturing a
table.
© JuliusBrussee, Apache-2.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 skills/caveman-discover of JuliusBrussee/caveman.
Open the folder on GitHubat commit 2e08b91
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in JuliusBrussee/caveman, which our catalogue first saw on October 7, 2026.
Caveman Workflow Labeler 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 |
|---|---|---|---|---|---|---|
| Caveman Workflow Labeler this skillJuliusBrussee/caveman | 111k | 1 repos | ~1.3k | Automated safety check: Pass | Apache-2.0 | |
| CodexBar Usage Readersteipete/CodexBar | 22k | — | ~320 | Automated safety check: Pass | MIT | |
| Analyzing Claude Code Sessionsamd/gaia | 1.6k | — | ~2.3k | Automated safety check: Pass | MIT | |
| OmniRoute Cost and Usage CLIdiegosouzapw/OmniRoute | 75k | — | ~693 | Automated safety check: Pass | MIT | |
| Langfuse and LLM Gateway LogsKonghaYao/peri | 229 | — | ~4.3k | Automated safety check: Notes | Apache-2.0 | |
| Claude Code Daily Cost Reporttombelieber/claude-view | 111 | — | ~3k | Automated safety check: Pass | MIT |
steipete/CodexBar
CodexBar read. Provider usage, limits, credits, config health. JSON. No writes.
amd/gaia
Mines local Claude Code session transcripts with a deterministic Python pipeline to show what the agent is actually used for, how often it fails and what it costs.
diegosouzapw/OmniRoute
View cost breakdowns, token usage, and call logs from the CLI. Filter by provider, model, or date range. Export usage reports and inspect per-connection…
KonghaYao/peri
Queries Langfuse traces, prompts, datasets and sessions, and analyzes local LLM gateway logs for requests, context growth, token use and cache hits.
tombelieber/claude-view
Shows today's Claude Code spending through the claude-view MCP server, with total cost, running sessions and a per-session breakdown, and other date ranges on request.
getsentry/sentry-for-ai
Instrument an application with Sentry — detect the platform, install and initialize the SDK if needed, and wire up any signal — error monitoring, tracing/performance, logging, metrics, profiling…
JuliusBrussee/caveman
Read-only review of Caveman Cloud data to explain where LLM spend goes: cost, score, workflows, traces, latency, errors, routing and verified savings.
JuliusBrussee/caveman
Reads the state and results of Caveman Cloud experiments and reports one recommendation or a block, without changing an experiment's lifecycle itself.
JuliusBrussee/caveman
Turns a Caveman report-only optimization observation into one minimal code change and a paired baseline evaluation, after the operator picks which to pursue.
JuliusBrussee/caveman
Routes every LLM call in a repository through the Caveman Cloud gateway in record mode, so requests and costs are measured without changing behavior.
JuliusBrussee/caveman
Quick-reference card for the three caveman skills and their commands. Trigger: /caveman-help or "caveman help".
JuliusBrussee/caveman
Switches the agent to a terse reply style that gives the answer first, drops filler, and keeps every technical fact, command and number exact.
Categories
Finds every LLM workflow in a repository, proposes a labeling table and, once you agree, wires labels so Caveman Cloud groups spend per workflow. Caveman Cloud groups LLM spend by workflow label, and unlabeled gateway traffic lands in a single unlabeled-workflow bucket. This skill has the agent find the repository's workflows, name them, wire the labels and verify that nothing broke.
Caveman Workflow Labeler fits situations like: breaking down LLM spend by workflow in Caveman Cloud; finding every place a repository calls an LLM; labeling gateway requests so traffic stops landing in one bucket.
Run `npx skills add JuliusBrussee/caveman --skill caveman-discover -a claude-code`. Or copy the skill folder (skills/caveman-discover in JuliusBrussee/caveman) into .claude/skills/caveman-discover in your project. Claude Code loads it when a task matches its description.
Run `npx skills add JuliusBrussee/caveman --skill caveman-discover -a codex`. Or copy the skill folder (skills/caveman-discover in JuliusBrussee/caveman) into .agents/skills/caveman-discover 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 JuliusBrussee/caveman --skill caveman-discover -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/caveman-discover, .gemini/skills/caveman-discover, .github/skills/caveman-discover and .opencode/skills/caveman-discover in your project.
SKILL.md names no scripts, command-line tools or credentials: Caveman Workflow Labeler is instructions for the agent only. Our summary lists: A Caveman Cloud gateway that reads workflow labels.
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.
Caveman Workflow Labeler is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.3k tokens (SKILL.md is roughly 5.2k 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 Caveman Workflow Labeler: CodexBar Usage Reader (steipete/CodexBar, 22k stars), Analyzing Claude Code Sessions (amd/gaia, 1.6k stars), OmniRoute Cost and Usage CLI (diegosouzapw/OmniRoute, 75k stars) and Langfuse and LLM Gateway Logs (KonghaYao/peri, 229 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
JuliusBrussee (a GitHub user) maintains it in JuliusBrussee/caveman, which has 110,815 GitHub stars. The repository holds 18 skills in this directory. The repository was last updated on October 9, 2026.
Source: JuliusBrussee/caveman on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.