Agent skill

Token Doctor

by techwolf-ai in techwolf-ai/ai-first-toolkit

Personal diagnosis of where your Claude Code + Cowork spend goes.

MITAuto-check passedAgent Workflows

Install Token Doctor

skills CLI
$ npx skills add techwolf-ai/ai-first-toolkit --skill token-doctor -a claude-code

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

GitHub CLI
$ gh skill install techwolf-ai/ai-first-toolkit token-doctor --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/techwolf-ai/ai-first-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ai-adoption/skills/token-doctor .claude/skills/token-doctor && 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
token-doctor
GitHub stars
132
Token cost
~4.1k tokens
SKILL.md length
1,504 words
Files
12 (incl. scripts, references)
Skills in repo
29
Repo updated
First seen
Licence
MIT

At a glance

Personal diagnosis of where your Claude Code + Cowork spend goes.

  • Works in 2 steps: Fast diagnosis (always runs, you write… → Deep dive (opt-in)
  • The user asks why is my Claude spend so high
  • SKILL.md covers When to run, Prerequisites, STAGE 1 — Fast diagnosis… and STAGE 2 — Deep dive (opt-in), plus 3 more sections
  • Runs Python scripts from its folder

What it does

Token Doctor is an agent skill from techwolf-ai/ai-first-toolkit. Personal diagnosis of where your Claude Code + Cowork spend goes. Reads local transcripts, prints your conversation length distribution, marathon share, cache rebuild costs, and per-project diagnosis (good projects and problem projects) right in the terminal. Then offers a deeper dive that fans out parallel Haiku subagents over your most expensive (and most efficient) sessions and writes a tight Markdown report. Use when the user asks "why is my Claude spend so high", "where am I burning tokens", "diagnose my…

Its SKILL.md is about 4.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts and reference files (for example `references/antipattern-taxonomy.md`, `references/diagnosis-rubric.md` and `references/pricing.md`).

It sits in Agent Workflows, covering Subagents and LLM cost and token optimization. The repository describes itself as: Open-source Claude Code skills and Codex skills for AI-first work. Audit, re-engineer, and bootstrap projects with AI-first design principles. The licence is MIT.

When your agent uses it

  • The user asks why is my Claude spend so high
  • Where am I burning tokens
  • Diagnose my Claude habits
  • Audit my Claude usage

Example prompts

  • “why is my Claude spend so high”
  • “where am I burning tokens”
  • “diagnose my Claude habits”
  • “/token-doctor”

Requirements

  • Python 3

Workflow steps

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

  1. Fast diagnosis (always runs, you write the report)
  2. Deep dive (opt-in)

What it can do on your machine

Read from SKILL.md and the folder at commit 2ee7841. 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 7 files in scripts/ (Python), which the agent can run.

    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

Token Doctor loads about 4.1k tokens when it runs, and up to ~8.5k if it reads all its reference files. Until then it costs about 153 tokens; SKILL.md has 1,504 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from techwolf-ai/ai-first-toolkit at commit 2ee7841, republished under its MIT licence (© techwolf-ai). 1,504 words, ~4,123 tokens.

Download SKILL.mdSave it as .claude/skills/token-doctor/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.
name
token-doctor
description
Personal diagnosis of where your Claude Code + Cowork spend goes. Reads local transcripts, prints your conversation length distribution, marathon share, cache rebuild costs, and per-project diagnosis (good projects and problem projects) right in the terminal. Then offers a deeper dive that fans out parallel Haiku subagents over your most expensive (and most efficient) sessions and writes a tight Markdown report. Use when the user asks "why is my Claude spend so high", "where am I burning tokens", "diagnose my Claude habits", "audit my Claude usage", or asks for a personal token-cost diagnosis.

Token Doctor

Platforms: Claude Code / Cowork and Codex. scripts/inventory.py detects the host (via the platform stamp install.sh writes, or AI_FIRST_PLATFORM) and routes: Claude Code (~/.claude/projects) + Cowork transcripts, or Codex rollouts (~/.codex/sessions). Codex token usage comes from Codex's own per-response token_count events; cost uses OpenAI list rates in pricing.py (gpt-5.4 family; unknown models show token counts with no fabricated cost). Antigravity is unsupported: its IDE store is AEAD-encrypted at rest and its CLI store has no parseable turn/token content, so the skill prints a clear "not available" message and exits.

Two-stage diagnostic. Stage 1 is fast and lands directly in the terminal so the user always walks away with their numbers. Stage 2 is opt-in, fans out subagents over hotspots, and writes a tight Markdown report.

Read this whole file before running.

When to run

Trigger phrases: "diagnose my Claude habits", "why am I spending so much", "where are my tokens going", "audit my spend", "token doctor", "what's driving my Claude bill".

Do NOT trigger for:

  • "what tasks do I do with Claude" → that's task-profile.
  • "where did I work on X" → that's session-search.

The line is: token-doctor is about cost shape, not task inventory or recall.

Prerequisites

  • Claude Code transcripts: ~/.claude/projects/*/*.jsonl (CLI and desktop app)
  • Sub-agent transcripts: ~/.claude/projects/*/<sid>/subagents/**/*.jsonl, including workflow agents under subagents/workflows/<wf>/
  • Claude Cowork transcripts (optional): ~/Library/Application Support/Claude/local-agent-mode-sessions/*/*/local_*/audit.jsonl
  • Python 3, stdlib only. No external services.

If neither path exists, stop and say so.

What counts as one session

Sub-agent transcripts are separate files but the same piece of work, so their cost rolls into the parent session rather than appearing as sessions of their own. This matters when you read the report:

  • cost_usd is main conversation plus fan-out. main_cost_usd and subagent_cost_usd split it.
  • Turn counts, the timeline, cache rebuilds and the re-read ratio are main-session figures. They describe how that one conversation's context grew; sub-agents have their own context.
  • So a session can show 100 turns and $641. That is not a contradiction, it is fan-out. Say so rather than letting the reader trip over it.
  • One turn = one assistant message, not one transcript line. Claude Code writes a line per content block (thinking, text, each tool_use) and repeats the same usage object on every one, so counting lines inflates turns and cost by roughly 2-3x. The inventory dedupes by message.id. Turn counts from an older run of this skill are not comparable with these.

Automation excluded by default: sdk-cli background dispatch, paperclip, ditto-routines, scheduled tasks, and the automation slash commands. Desktop-app sessions are interactive work and are counted.


STAGE 1 — Fast diagnosis (always runs, you write the report)

The goal is: the user invokes the skill, sees a clean doctor's report within 10 seconds, knows which projects are healthy and which are bleeding, and can decide whether to go deeper. You write the report directly in your message based on the JSON the scripts produce. The scripts compute, you communicate.

Step 1.1 — Inventory (deterministic)
bash
~/.claude/skills/token-doctor/scripts/inventory.py --since YYYY-MM-DD --out out/sessions.jsonl

Default window: last 90 days. Flags: --since, --until, --all, --include-automation, --no-cowork. Automation runs (sdk-cli background dispatch, paperclip, /loop, /schedule, ditto-routines, scheduled-tasks) excluded by default.

--until YYYY-MM-DD means midnight at the start of that day, so it excludes that day's sessions. To include today, leave --until off.

The scan prints how many sub-agent transcripts it rolled into parent sessions. If it also reports sub-agents with no parent session on disk, that cost is not in the totals; mention it only if it is material.

Step 1.2 — Aggregate (deterministic)
bash
~/.claude/skills/token-doctor/scripts/personal_stats.py --in out/sessions.jsonl --out out/user-stats.json

Prints a single confirmation line. The full data is in out/user-stats.json.

Step 1.3 — Read the JSON and write the doctor's report

Read out/user-stats.json. Then write the report directly in your message as terminal-style ASCII with emojis. The user reads your message; no intermediate file.

Report structure (mandatory sections, in order)
🩺 ┌────────────────────────────────────────────────────────────────────┐
   │            TOKEN DOCTOR · personal diagnosis                       │
   └────────────────────────────────────────────────────────────────────┘

  Patient: <user's first name or "you">
  Window:  <window dates from inventory>
  Spend:   $<total> list-price equivalent · <conv count> conversations

  ── Vital signs ─────────────────────────────────────────────────────────

  🔴/🟡/🟢 Marathon (≥300 turns)    <N> conv  ·  $<X>  ·  <Y>% of spend
  🔴/🟡/🟢 Fan-out (≥5 sub-agents)  <N> conv  ·  $<X>  ·  <Y>% of spend
  🔴/🟡/🟢 Zombie (≥4h wall clock)  <N> conv  ·  $<X>  ·  <Y>% of spend
  🔴/🟡/🟢 Cache rebuilds            <N> events · <Z>M tokens · ~$<X>
  🔴/🟡/🟢 Re-read ratio             <X>×   (healthy ≤15×, org avg 30×)
  📈 Peak context observed       <X>k tokens
  🌳 Sub-agent cost               $<X> of $<total>  (<Y>%) across <N> transcripts

  ── Spend by conversation length ────────────────────────────────────────

       1 to 5        <bar>   <%>   (<N> conv)
       6 to 20       <bar>   <%>   (<N> conv)
       …
       1,000+        <bar>   <%>   (<N> conv)

  ── Model mix ───────────────────────────────────────────────────────────

    <model>        $<X>   <%>   <N> turns    main $<X>/<N>t · sub $<X>/<N>t
    <model>        $<X>   <%>   <N> turns    main $<X>/<N>t · sub $<X>/<N>t
    …

  ── Diagnosis ───────────────────────────────────────────────────────────

  <2-4 sentences synthesizing the vitals into one clear picture. Lead with
  the dominant antipattern in this user's data, then the corollary cost. End
  with one line about the strongest positive signal you see.>

  ── Project chart ───────────────────────────────────────────────────────

  ✅ clean · 🏃 marathon · 🌳 fanout · 🔄 rebuilds · 🧟 zombie · ⚠️ multiple

  <emoji>  $<X>  <truncated cwd>                              <meta line>
  <emoji>  $<X>  <truncated cwd>                              <meta line>
  … up to 10-12 rows from by_cwd_top

  ── Treatment plan ──────────────────────────────────────────────────────

  💚 Keep doing:
     <bullet referencing a clean project from by_cwd_top or by_cwd_clean_deeper,
      OR a positive structural signal like a high short_share if no clean cwd is in top 12>
     <2-3 bullets total>

  🎯 Change first:
     <one concrete action tied to the biggest lever, with cited project>
     <2-3 bullets total, ordered by expected impact>

  ── Want a deeper look? ─────────────────────────────────────────────────

  <one-line question asking if they want the deep dive>
Rules when writing the report
  • Use the emojis above consistently. Box-drawing characters (─ ┌ └ │) are fine and make the report look like a medical printout.
  • Traffic-light dots: 🔴 = bad, 🟡 = watch, 🟢 = healthy. Apply the bands in the rubric below.
  • Per-project emoji must come from by_cwd_top[i].emoji in the JSON. Do not re-classify.
  • Model mix comes from model_mix, already sorted by cost. Show every model down to 1% of spend, then stop. Use readable names (claude-opus-5 → Opus 5, claude-fable-5-1 → Fable 5.1). The main / sub split is the point of the section: a model that is cheap in the main conversation and expensive across sub-agents is the clearest lever in the whole report, because sub-agent model tier is a one-line change in an Agent(...) call. Call that out when you see it.
  • Fan-out uses fanout_conv / fanout_cost / fanout_share (sessions with ≥ 5 sub-agents) and subagent_cost / subagent_share (fan-out's share of total spend). If subagent_files is 0, drop both the fan-out vital and the sub-agent line rather than printing zeroes.
  • Bars for the length distribution: build them with █ characters proportional to the share. Use a fixed width like 36 chars.
  • The diagnosis paragraph is yours to write — it is the doctor's read on the data. Be specific. Don't restate the numbers; conclude from them. Aim for 3-5 sentences max. Examples of good diagnostic sentences:
    • "Your spend is concentrated in a small number of very long sessions: 22 conversations carry 70% of your bill."
    • "Cache rebuilds are minor at $388, but the re-read ratio of 23× tells me your context grows fast inside those long sessions."
    • "Three of your top five projects are evaluation runs from last month. Each is one long session; splitting them would compound."
  • Treatment plan must include both "keep doing" AND "change first" sections. Skipping the positive section is forbidden. Pick from:
    • by_cwd_top entries with emoji == "✅" for clean
    • by_cwd_clean_deeper for clean projects below the top 12
    • short_share if neither is available — frame as "X% of your spend is in short focused sessions, so the habit is there, you just don't use it everywhere"
  • Cite specific projects. Truncate cwds to the last 36-44 chars with a leading … if they're long. Drop the /Users/<name>/ prefix when it makes the line cleaner.
  • No em-dashes. Use commas, semicolons, or periods.
  • No "waste", "burning", "bad habit". Use "cost", "spend", "context", "rebuild".
Show full SKILL.md (504 more words)Show less
Traffic-light thresholds
Metric🟢🟡🔴
Marathon share< 20%20-50%≥ 50%
Fan-out share< 20%20-50%≥ 50%
Zombie share< 20%20-50%≥ 50%
Cache rebuild $< $50$50-$200≥ $200
Re-read ratio≤ 15×15-35×≥ 35×
Asking about the deep dive

End with one short line, not a paragraph. Example:

Want me to pull apart your top sessions one by one — what specifically drove each marathon, plus a couple of your most efficient runs to learn from? Takes about a minute, runs ~15 Haiku subagents in parallel.

If they say no, stop. The report is the deliverable.


STAGE 2 — Deep dive (opt-in)

Step 2.1 — Pick hotspots
bash
~/.claude/skills/token-doctor/scripts/pick_hotspots.py --in out/sessions.jsonl --out out/hotspots.json

Selects ~14 sessions:

  • 8 by absolute cost
  • 3 by cache rebuild tokens
  • 3 by raw turn count
  • 3 by read:create ratio at ≥$5 cost
  • 3 positive examples (lowest cost-per-turn at 20-100 turns)

Briefly tell the user the list before fan-out so they can drop sensitive sids. Keep it to one line per session: $X · N turns · short title.

Step 2.2 — Build payloads
bash
~/.claude/skills/token-doctor/scripts/build_payloads.py --sessions out/sessions.jsonl --hotspots out/hotspots.json --outdir out/payloads

Writes one redacted payload per hotspot. Payloads include token shape, tool-call counts, timeline samples, and a 120-char title. They do NOT include user prompt bodies or model output text.

Step 2.3 — Parallel subagent fan-out

For each payload in out/payloads/, dispatch one subagent. Send all calls in one message with multiple tool blocks so they run in parallel.

Agent(
  description="Diagnose one session",
  subagent_type="general-purpose",
  model="haiku",
  run_in_background=true,
  prompt="""
Diagnose the session at out/payloads/<sid>.json.

Read first, in order:
  1. ~/.claude/skills/token-doctor/references/antipattern-taxonomy.md
  2. ~/.claude/skills/token-doctor/references/diagnosis-rubric.md
  3. out/payloads/<sid>.json

Apply the rubric. Emit strictly the JSON schema (see rubric §Output) to out/analyses/<sid>.json. Hard length limits: what_happened max 2 sentences (~25 words), trigger_moment.what max 14 words, would_have_helped max 18 words. Lead with structural facts (turn count, context size, key signal). No restating the schema.

Tone: second-person, neutral, no "waste" / "burning".
"""
)

Wait for all to complete.

Step 2.4 — Synthesize the report (main agent)

Read every out/analyses/*.json. Then:

  1. Group by cwd. For each cwd that has ≥2 analyzed sessions, decide if it shows a dominant pattern.
  2. Find the signature: the one antipattern that recurs most across the user's data, and the one positive habit they have consistently.
  3. Write out/recommendations.md — tight, scannable, no padding. Structure:
markdown
# Token Doctor — your diagnosis

**Signature.** <one sentence: dominant antipattern + dominant strength>

**Bottom-line lever.** <one sentence: the single habit change with the biggest expected impact>

## What you're doing well

- **<positive pattern>** in `<cwd>`. <one sentence with one cited sid>
- **<positive pattern>** in `<cwd>`. <one sentence with one cited sid>

(2-3 bullets. At least one is mandatory; do not skip this section.)

## What's driving your bill

- **<antipattern>** in `<cwd>`. <one sentence. Cite the worst sid and one specific turn or signal>
- ...

(3-5 bullets ordered by estimated savings)

## Per-session diagnoses

| Cost | Turns | Verdict | What happened |
|---:|---:|---|---|
| $XXX | NNN | <label> | <1-2 line what_happened from the analysis> |
| ...

(Only the analyzed sessions. Use the `what_happened` field verbatim from each analysis JSON.)

Also write out/recommendations.json with structured form for re-use:

json
{
  "signature": {
    "primary_antipattern": "marathon | drip-feed | zombie | bloat | grind | drift | fanout | none",
    "primary_strength": "focused | front-loaded | time-bounded | lean | directed | none",
    "one_line": "<one sentence about how this user's spend is shaped>"
  },
  "bottom_line_lever": "<one sentence>",
  "positives": [{"pattern": "...", "cwd": "...", "evidence_sid": "...", "note": "..."}],
  "antipatterns": [{"pattern": "...", "cwd": "...", "evidence_sids": ["..."], "note": "...", "expected_impact": "small|medium|large"}],
  "session_table": [{"sid": "...", "cost": 0, "turns": 0, "verdict": "...", "what_happened": "..."}]
}

Keep the prose terse. The user already has the terminal numbers; the report's job is to point at specific projects and habits, not to recite stats.


Privacy contract

  • Everything runs locally. No transcript text leaves the machine.
  • Subagents receive token counts, tool-call names, turn indices, and a 120-char title. They do not receive user prompt text or model output text.
  • Output files in out/ contain session ids and short titles. They do not contain conversation content.
  • The user can rm -rf out/ to wipe everything.

Tone

  • Descriptive, not punitive. The user is reading their own data.
  • Both antipatterns and positive habits get airtime. Skipping the "what you're doing well" section is forbidden.
  • Specific numbers, specific turn indices, specific sids. Avoid hedging.
  • No em-dashes. No "waste", "burning", "bad habit".
  • Emojis are allowed in the terminal output (the personal_stats.py script uses them). Keep them out of the Markdown report — there it should look like an engineering doc.

Failure modes

  • No transcripts found. Stop with a clear message.
  • Subagent emitted invalid JSON. Skip that sid, log a warning once, continue.
  • All sessions are automation. Tell the user to re-run with --include-automation if they want those analyzed; otherwise note the interactive count.
  • Single-cwd user. Skip the per-cwd grouping in the report; recommendations still work as a flat list.

© techwolf-ai, 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 11 other files (scripts, references) in plugins/ai-adoption/skills/token-doctor of techwolf-ai/ai-first-toolkit.

  • SKILL.md
  • references/antipattern-taxonomy.md
  • references/diagnosis-rubric.md
  • references/pricing.md
  • references/recommendation-templates.md
  • scripts/build_payloads.py
  • scripts/codex_sessions.py
  • scripts/host_platform.py
  • scripts/inventory.py
  • scripts/personal_stats.py
  • scripts/pick_hotspots.py
  • scripts/pricing.py

Open the folder on GitHubat commit 2ee7841

Compare with similar skills

Token Doctor 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.

Token Doctor compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Token Doctor this skilltechwolf-ai/ai-first-toolkit132—~4.1kAutomated safety check: PassMIT
Fable Foremanolsenbrands/fable-foreman142—~5.2kAutomated safety check: PassMIT
Subagent Brief DisciplineLichAmnesia/lich-skills234—~1.6kAutomated safety check: PassMIT
Module Analyzer Generate DocLeoYeAI/openclaw-master-skills2.2k—~3.4kAutomated safety check: PassMIT
Skillkitrfxlamia/skillkit102—~3.7kAutomated safety check: PassApache-2.0
Code Context Slicingtrailofbits/skills7.4k—~2.1kAutomated safety check: PassCC-BY-SA-4.0

Similar skills

  • Fable Foreman

    olsenbrands/fable-foreman

    Turns the lead model into a foreman that plans, routes and verifies while cheaper Claude, Codex or Grok workers do the typing, using a per-machine routing card.

    142 GitHub stars~5.2k tokensUpdated 14 days ago
    Agent WorkflowsAuto-check passed
  • Subagent Brief Discipline

    LichAmnesia/lich-skills

    Checks every subagent prompt before spawning, swapping pasted files and context for paths and short summaries and trimming the brief, to avoid multiplied token cost.

    234 GitHub stars~1.6k tokensUpdated 4 mo ago
    Agent WorkflowsAuto-check passed
  • Module Analyzer Generate Doc

    LeoYeAI/openclaw-master-skills

    Java/Maven single-module deep documentation generator. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~3.4k tokensUpdated 2 mo ago
    Agent WorkflowsAuto-check passed
  • Skillkit

    rfxlamia/skillkit

    Toolkit for creating and validating skills and subagents. An agent skill from rfxlamia/skillkit.

    102 GitHub stars~3.7k tokensUpdated 6 mo ago
    Agent WorkflowsAuto-check passed
  • Code Context Slicing

    trailofbits/skills

    Official

    Picks a small, graph-based slice of source with Trailmark and hands a focused code task to a smaller or local model without exposing the whole repository.

    7.4k GitHub stars~2.1k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed
  • Claude Code Mastery

    borghei/Claude-Skills

    A skill your agent uses when the user asks to "optimize CLAUDE.md", "create a new skill", "write a custom agent", "configure hooks", "manage context window", "set up MCP servers", "scaffold a skill…

    886 GitHub stars~1.9k tokensUpdated yesterday
    Agent WorkflowsAuto-check passed

More from techwolf-ai/ai-first-toolkit

All 29 skills in this repo
  • Task Profile

    techwolf-ai/ai-first-toolkit

    Mine the user's Claude Code + Cowork session history into a structured task profile, what they do with AI, how often, how successfully where friction lives, then propose atomic skills that would…

    132 GitHub stars~3.6k tokensUpdated 9 days ago
    Auto-check passed
  • Session Search

    techwolf-ai/ai-first-toolkit

    Find context from past Claude Code (CLI) and Claude Cowork (desktop) sessions on this Mac.

    132 GitHub stars~1.1k tokensUpdated 9 days ago
    Auto-check passed
  • Write Blog Post

    techwolf-ai/ai-first-toolkit

    Write or develop a blog post. An agent skill from techwolf-ai/ai-first-toolkit.

    132 GitHub stars~1.1k tokensUpdated 9 days ago
    Auto-check passed
  • Write Opinion

    techwolf-ai/ai-first-toolkit

    Write or develop an opinion piece (opiniestuk/op-ed). An agent skill from techwolf-ai/ai-first-toolkit.

    132 GitHub stars~695 tokensUpdated 9 days ago
    Auto-check passed
  • AI Firstify

    techwolf-ai/ai-first-toolkit

    Analyze, re-engineer, or bootstrap projects to align with AI-first design principles.

    132 GitHub stars~646 tokensUpdated 9 days ago
    Auto-check passed
  • Setup Content Studio

    techwolf-ai/ai-first-toolkit

    Set up a new content studio for a person. An agent skill from techwolf-ai/ai-first-toolkit.

    132 GitHub stars~1.4k tokensUpdated 9 days ago
    Auto-check passed

Questions about Token Doctor

What does Token Doctor do?

Personal diagnosis of where your Claude Code + Cowork spend goes. Token Doctor is an agent skill from techwolf-ai/ai-first-toolkit. Personal diagnosis of where your Claude Code + Cowork spend goes.

When should I use Token Doctor?

Token Doctor fits situations like: the user asks why is my Claude spend so high; where am I burning tokens; diagnose my Claude habits; audit my Claude usage.

How do I install Token Doctor in Claude Code?

Run `npx skills add techwolf-ai/ai-first-toolkit --skill token-doctor -a claude-code`. Or copy the skill folder (plugins/ai-adoption/skills/token-doctor in techwolf-ai/ai-first-toolkit) into .claude/skills/token-doctor in your project. Claude Code loads it when a task matches its description.

How do I install Token Doctor in Codex?

Run `npx skills add techwolf-ai/ai-first-toolkit --skill token-doctor -a codex`. Or copy the skill folder (plugins/ai-adoption/skills/token-doctor in techwolf-ai/ai-first-toolkit) into .agents/skills/token-doctor in your project. Codex loads it when a task matches its description.

Can I use Token Doctor 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 techwolf-ai/ai-first-toolkit --skill token-doctor -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/token-doctor, .gemini/skills/token-doctor, .github/skills/token-doctor and .opencode/skills/token-doctor in your project.

What does Token Doctor need to run?

Going by SKILL.md and its folder, Token Doctor needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Token Doctor 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 Token Doctor 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Token Doctor use?

Token Doctor 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 Token Doctor use?

About 4.1k tokens (SKILL.md is roughly 16k 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 4.4k tokens, read only when the agent opens those files.

What are the alternatives to Token Doctor?

Skills that share tags, products or a category with Token Doctor: Fable Foreman (olsenbrands/fable-foreman, 142 stars), Subagent Brief Discipline (LichAmnesia/lich-skills, 234 stars), Module Analyzer Generate Doc (LeoYeAI/openclaw-master-skills, 2.2k stars) and Skillkit (rfxlamia/skillkit, 102 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Token Doctor?

techwolf-ai (a GitHub organization) maintains it in techwolf-ai/ai-first-toolkit, which has 132 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on September 29, 2026.

Source: techwolf-ai/ai-first-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.