catchup
Rebuild working context fast after /clear or a fresh session — reads the handoff note and the…
Estimate per-turn token cost of `.claude/` and `CLAUDE.md` — always-loaded vs path-scoped vs invoked-only, top contributors, over-budget flags. Add `--api` for exact tokenizer counts.
$ npx -y skills add poshan0126/dotclaude --skill context-budget --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/context-budgetContext preview
The summary Claude sees to decide when to auto-load this skill.
Estimate per-turn token cost of `.claude/` and `CLAUDE.md` — always-loaded vs path-scoped vs invoked-only, top contributors, over-budget flags. Add `--api` for exact tokenizer counts.
name: context-budget description: Estimate per-turn token cost of `.claude/` and `CLAUDE.md` — always-loaded vs path-scoped vs invoked-only, top contributors, over-budget flags. Add `--api` for exact tokenizer counts. argument-hint: "[--api]" disable-model-invocation: true
Estimate the token cost of this project's `.claude/` configuration and `CLAUDE.md` so the user can see exactly which files load every turn versus only when triggered.
From the project root:
ls CLAUDE.md 2>/dev/null find .claude/rules -name '*.md' -type f 2>/dev/null find .claude/skills -name 'SKILL.md' -type f 2>/dev/null find .claude/agents -name '*.md' -type f 2>/dev/null [ -f .claude/CLAUDE.md ] && echo "WARN: .claude/CLAUDE.md exists. CLAUDE.md belongs at the project root."
Skip any file under `.claude/agents/README.md`, `.claude/rules/README.md`, etc. Those are folder descriptions, not loaded by Claude Code at runtime.
For every `.md` file in `.claude/rules/`, read the YAML frontmatter (the block between the first two `---` lines).
| Frontmatter contains | Classification | Per-turn cost | |---|---|---| | `paths: [...]` | Path-scoped | Loaded only when working near matched files | | No `paths:` (or no frontmatter) | Always-loaded | Every turn |
Other categories:
Default mode (no API call): chars-based heuristic. Anthropic documents that English text averages roughly 4 characters per token. Compute:
chars=$(wc -c < "$FILE" | tr -d ' ') tokens=$((chars / 4))
Note this in the report so the user knows the count is approximate (within roughly 10 to 15 percent of the exact count for typical config text).
`--api` mode: if `$ARGUMENTS` contains `--api`:
if [ -z "$ANTHROPIC_API_KEY" ]; then
echo "ERROR: --api requested but ANTHROPIC_API_KEY is not set. Falling back to heuristic."
else
CONTENT=$(jq -Rs . < "$FILE")
tokens=$(curl -s https://api.anthropic.com/v1/messages/count_tokens \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d "{\"model\":\"claude-sonnet-4-6\",\"messages\":[{\"role\":\"user\",\"content\":$CONTENT}]}" \
| jq -r '.input_tokens')
fiThe endpoint returns Anthropic's exact tokenizer count. That is the factual number Claude Code itself would see when loading the file.
Sum tokens within each category, identify the top 3 contributors among always-loaded files, then print:
Context budget for <project root> Method: heuristic (chars/4) [or: Anthropic count_tokens API] Always-loaded (every turn): ~N tokens CLAUDE.md ~N tokens .claude/rules/code-quality.md (always) ~N tokens .claude/rules/testing.md (always) ~N tokens Path-scoped (loaded near matched files): ~N tokens (max, if every glob matches) .claude/rules/security.md (paths: src/api/**, ...) ~N tokens .claude/rules/frontend.md (paths: **/*.tsx, ...) ~N tokens Invoked-only (zero per-turn cost): Cumulative size if every skill and agent loaded once: ~N tokens .claude/skills/<name>/SKILL.md ~N tokens .claude/agents/<name>.md ~N tokens Top 3 always-loaded contributors: 1. <file> ~N tokens 2. <file> ~N tokens 3. <file> ~N tokens Verdict: PASS / NEAR LIMIT / OVER BUDGET
End the report with the highest-leverage trim recommendation if any class is over budget.
| Class | Target | Hard cap | Action when over | |-------------------------------|--------------------|--------------------|------------------| | `CLAUDE.md` | <25 non-blank lines | <50 non-blank lines | Trim per Phase 4 of `/setupdotclaude`. | | Each always-loaded rule | <30 lines, ~250 tok | n/a | Push content to a path-scoped rule or into an agent. | | Total always-loaded | <1000 tokens | <1500 tokens | Identify the single biggest contributor and trim it. |
A lean .claude/ setup for daily development. Seven specialist agents, twelve workflow skills, six modular rules, and eight safety/productivity hooks. No bloat, no model assignments, no opinions you can't override.
Repo: poshan0126/dotclaude
Rebuild working context fast after /clear or a fresh session — reads the handoff note and the…
Keep CLAUDE.md current and lean — capture this session's durable learnings into it (default),…
Find and fix a bug. Default is careful (reproduce, investigate, test). Add `--fast` for…
Explain code. Default is a one-sentence summary plus a mental model. Add `verbose` to also…
Take a GitHub issue from number to tested fix — read the issue and comments, reproduce,…
Get oriented in an unfamiliar codebase fast. An Explore-subagent-driven tour that goes from a…