Agent Skills: Context Attribution

Estimate per-turn token attribution across 6 categories in Claude Code sessions to show where context budget is spent

UncategorizedID: oimiragieo/agent-studio/context-attribution

Install this agent skill to your local

pnpm dlx add-skill https://github.com/oimiragieo/agent-studio/tree/HEAD/.claude/skills/context-attribution

Skill Files

Browse the full folder contents for context-attribution.

Download Skill

Loading file tree…

.claude/skills/context-attribution/SKILL.md

Skill Metadata

Name
context-attribution
Description
Estimate per-turn token attribution across 6 categories in Claude Code sessions to show where context budget is spent

Context Attribution

Estimate per-turn token attribution across 6 categories in Claude Code sessions. Based on claude-devtools visible context tracker.

When to Invoke

Skill({ skill: 'context-attribution' });

Use when: context pressure is high, optimizing CLAUDE.md sizes, understanding which tool calls consume the most tokens, debugging context overflow.

The 6 Categories

| Category | Detection Pattern | Typical % | | ----------------- | ---------------------------------------------------- | --------- | | CLAUDE.md files | System messages with claudeMd or CLAUDE.md content | 20-40% | | @-mentioned files | Read tool results triggered by user file references | 10-20% | | Tool outputs | All tool_result content blocks | 15-30% | | AI thinking/text | Assistant message content (text + thinking blocks) | 10-25% | | Team coordination | Messages containing <teammate-message> XML | 0-15% | | User messages | User role messages (prompts, follow-ups) | 5-15% |

Workflow

Step 1: Load Session JSONL

# Find most recent session
SESSION=$(ls -t ~/.claude/projects/$(pwd | sed 's|/|-|g; s|^-||')/*.jsonl | head -1)

Step 2: Extract Per-Turn Token Data

For each message, classify into one of the 6 categories and estimate tokens:

# Count user messages (Category 6)
grep '"role":"user"' "$SESSION" | grep -v '"tool_result"' | wc -l

# Count tool results (Categories 2-3)
grep '"type":"tool_result"' "$SESSION" | wc -l

# Count assistant output (Category 4)
grep '"role":"assistant"' "$SESSION" | wc -l

# Check for team messages (Category 5)
grep 'teammate-message' "$SESSION" | wc -l

Step 3: Estimate Tokens Per Category

Use the usage field from each assistant turn for accurate counts. Fall back to chars/4 when unavailable.

Step 4: Output Attribution Table

Turn | CLAUDE.md | Files | Tools | AI Out | Team | User | Total
-----|-----------|-------|-------|--------|------|------|------
  1  |   12,400  |     0 |     0 |    800 |    0 |  200 | 13,400
  2  |        0  | 3,200 | 1,500 |  2,100 |    0 |  150 |  6,950
...  |      ...  |   ... |   ... |    ... |  ... |  ... |   ...

Step 5: Identify Top Consumers

Report which category consumes the most tokens and suggest optimizations (e.g., reduce CLAUDE.md size, compress tool outputs).

Memory Protocol (MANDATORY)

Before starting: ```bash cat .claude/context/memory/learnings.md cat .claude/context/memory/decisions.md ```

After completing:

  • New pattern -> `.claude/context/memory/learnings.md`
  • Issue found -> `.claude/context/memory/issues.md`
  • Decision made -> `.claude/context/memory/decisions.md`

ASSUME INTERRUPTION: Your context may reset. If it's not in memory, it didn't happen.