Skills affaan-m ecc

context-budget

Use it when:
You ask how much context is left, or want to know how much context your installed skills, agents and MCP tools take up.
It does:
By default, only names the native meter, /context in Claude Code or /status in Codex, without reading files or running tools.
You get:
On an explicit audit request, a short read-only report of estimated always-loaded overhead by component, the heaviest entries and up to three optimizations.
Unlike file-scanning estimators:
Those estimate usage by scanning files; this one never guesses live usage, and its audit reads only the install root you name.
Works with:
Claude Code and Codex; with any other harness it says it can't read live state and asks which one you use.

TL;DR

Most context questions don't need a scan, and this ECC skill is built around that. Asked how much room is left, the agent calls no tools: it names the harness's own meter, /context or /context all in Claude Code, /status in the Codex CLI or app, since a skill can't run a slash command for you. The installation audit runs only when you ask for it explicitly, with --audit or audit installed components. If the scope is unclear it asks which harness and install root to look at, then reads only that root and the harness's known config files, never the workspace, home directory or transcripts, and caps listings at 50 entries per class. It counts what loads up front: skill and agent descriptions, commands the harness discovers eagerly, always-loaded instruction files, and MCP tool schemas when a manifest exposes them. Full skill and rule bodies are reported separately as disk size, since they load on demand, and every figure is labelled an estimate of static overhead, not live context. A third, opt-in diagnostic runs a short Python snippet on a session JSONL file you pick and prints the share of its bytes taken by attachment records.

Summarizes the skill at d2ef268.

npx skills add https://github.com/affaan-m/ecc --skill context-budget
Total Downloads
6,000 on skills.sh, Nov 9, 2026
Repo stars
299,776 affaan-m/ecc
First seen
May 19, 2026 on skills.sh
Weekly Downloads
504
+57% over the 8 weeks to Nov 9
Weekly values
Week toInstalls
Sep 21321
Sep 28203
Oct 5217
Oct 12300
Oct 19475
Oct 26456
Nov 2520
Nov 9504
Category

Build agents, orchestrate workers and give agents memory.

Find, write, vet and route to other skills.

Everything for building software: planning, coding, debugging, design, frameworks, cloud, agents and skills.

Type

A one-shot action you invoke by name, such as turning the conversation into a PRD.

Effect

Adds no side effects of its own. It shapes how the agent thinks, writes or reviews. Guidelines and routers are always effect:none, even when the task they support edits code.

Needs

Instructions only. Works in any agent that supports skills.

Publisher

Everyone else. Unverified vendor claims default to community.

Topics
Stack

SKILL.md

From affaan-m/ecc at d2ef268. Checked daily, last changed Nov 6, 2026.

Frontmatter
name: context-budget
description: Routes live context checks to the native Codex or Claude Code meter without scanning files, and performs a bounded static component audit only when explicitly requested. Use for context-budget requests about remaining capacity or installed context overhead.
metadata:
  origin: ECC

Context Budget

Use the provider's native meter for live session usage. Keep the separate, estimated installation audit behind an explicit opt-in.

Default: Live Context

Treat an invocation with no audit request as a live-context request. This includes requests for the current window, remaining capacity, headroom, token usage, or a context breakdown.

For this default path:

  • Do not call or use tools.
  • Do not scan or read files.
  • Do not run shell commands, provider CLIs, debug logging, or MCP discovery.
  • Reply with only the native command and one short explanation.

Route by the active harness:

Harness Native command Guidance
Codex CLI /status Shows current token usage and remaining context capacity. Use /statusline and enable Context stats plus Token counters for a persistent footer meter.
Codex app /status Shows current thread context usage and rate limits.
Claude Code /context Shows the live context breakdown. Use /context all for expanded items.
Other or unknown None verified State that ECC cannot read live provider state and ask which harness is active.

These commands are documented in the Codex command reference and Claude Code command reference.

A skill cannot invoke a TUI slash command on the user's behalf. Never replace the native command with an estimated scan and never infer an audit request from phrases such as “context is heavy” or “how much is left.”

Explicit Static Audit

Run an installation/configuration audit only when the user explicitly says --audit, “audit installed components,” or equivalent unambiguous wording. --verbose changes report detail; it does not opt into an audit by itself.

If the audit scope is ambiguous, ask for the harness and installation root before reading anything. Keep every audit bounded and read-only:

  1. Inspect only the named plugin/install root and the named harness's known configuration files.
  2. Never recursively enumerate the workspace root, home directory, provider cache, transcripts, debug logs, or unrelated worktrees.
  3. Never launch a provider CLI, MCP server, or debug session to count tools.
  4. Cap inventory output at 50 entries per component class. Summarize the rest.
  5. Do not write temporary logs or copy configuration content into the report.

Audit only the component metadata relevant to eager discovery:

  • agent and skill descriptions;
  • command descriptions when the harness discovers them eagerly;
  • always-loaded instruction files in the explicitly named scope;
  • configured MCP tool schemas when an existing bounded manifest exposes them.

Full skill, agent, command, and rule bodies are generally on-demand content. Report their disk size separately from estimated eager overhead instead of adding every body to the session baseline.

Audit Output

Return a compact report containing:

  • harness and exact paths inspected;
  • estimated eager/discovery overhead by component class;
  • installed counts and the heaviest metadata entries;
  • assumptions, unavailable measurements, and up to three optimizations.

Every calculated token number is an estimate of static configuration overhead, not live session context. Do not claim that an estimate is provider-reported, current, exact, or evidence of realized savings. Direct the user back to the native live-context command for current usage.

Optional Selected-Record Diagnostic

Inspect a persisted record only when the user explicitly selects that file for this diagnostic. This is separate from the default live-context request and the installation audit.

For a local file diagnostic, explicitly select a stable, regular JSONL file or a snapshot you intend to inspect. Replace the example path below; this does not find or reconnect a session. The snippet prints aggregate byte counts only. It reads one line at a time, so memory use depends on the largest record; avoid very large records and actively growing files.

python3 - "/path/to/selected-session.jsonl" <<'EOF'
import json
import sys

total = attachment = other = unclassified = 0
try:
    with open(sys.argv[1], "rb") as source:
        for raw in source:
            size = len(raw)
            total += size
            try:
                record = json.loads(raw.decode("utf-8"))
            except (UnicodeDecodeError, json.JSONDecodeError):
                unclassified += size
                continue
            record_type = record.get("type") if isinstance(record, dict) else None
            if not isinstance(record_type, str):
                unclassified += size
            elif record_type == "attachment":
                attachment += size
            else:
                other += size
except OSError:
    print("Cannot read selected JSONL file.", file=sys.stderr)
    raise SystemExit(1)

pct = attachment * 100.0 / total if total else 0.0
print(f"persisted {total}B | attachment records {attachment}B ({pct:.1f}%) | "
      f"other records {other}B | unclassified {unclassified}B")
EOF

The three categories add up to the original file bytes, including line endings and blank lines. attachment is an exact record-type filter, not a guarantee about a harness's current internal schema. Other records have a different string type; malformed JSON, invalid UTF-8, nonobject values, missing or non-string types, and blank lines are unclassified. Neither category means "conversation," and the percentage is only a share of persisted bytes.

These counts do not establish active context, remaining room, token usage, billing, or what a reconnect loads. For current harness-reported context and usage, use the version-appropriate /context and /usage commands (/cost is an alias).