Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/gf-labs/claude-toolbox/statusgit clone --depth 1 https://github.com/gf-labs/claude-toolboxWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/gf-labs/claude-toolbox/status)<a href="https://agentmods.dev/commands/gf-labs/claude-toolbox/status"><img src="https://agentmods.dev/badge/commands/gf-labs/claude-toolbox/status.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00051 | $0.02008 |
| Opus 5 | $0.00026 | $0.01004 |
| Sonnet 5 | $0.00010 | $0.00402 |
| Haiku 4.5 | $0.00005 | $0.00201 |
Grade B, and why
status scanned grade B with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
**Project extension:** !`cat .claude/status.md 2>/dev/null || echo "(no project extension)"` Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
result = subprocess.run(['python3', os.environ.get('CLAUDE_TOOLBOX_ROOT', '') + '/scripts/collect-summarize.py'], How it starts
The opening of the file, as written. The whole thing — 222 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Collect context
The deterministic git/system context below is injected automatically via inline bang-backtick command syntax — it runs at command-render time and lands in your context before you respond, with no tool calls. The multi-line Python blocks further down are too involved to inline, so run those as bash before producing output. Store all results mentally.
Today's date: !date +%Y-%m-%d
Repo: !basename "$(git rev-parse --show-toplevel 2>/dev/null)" 2>/dev/null || echo "(not a git repo)"
Branch & sync: !git status -b --short 2>/dev/null | head -3 || echo "not a git repo"
Staged changes: !git diff --stat --cached HEAD 2>/dev/null || echo "none staged"
Unstaged changes: !git diff --stat 2>/dev/null || echo "none"
Untracked files: !git ls-files --others --exclude-standard 2>/dev/null | head -10 || echo "none"
Recent commits: !git log --oneline -8 2>/dev/null || echo "no commits"
Git diff hunk headers: !git diff HEAD --unified=0 2>/dev/null | grep '^@@' | head -20 || echo "no diff"
.claude/ inventory: !ls -1 .claude/ 2>/dev/null || echo "none"
Project extension: !cat .claude/status.md 2>/dev/null || echo "(no project extension)"
Run the remaining commands below before producing output. Store results mentally.
Top-level directory listing:
python3 -c "
from pathlib import Path
skip = {'.git', '.venv', 'venv', '__pycache__', 'node_modules'}
cwd = Path('.')
entries = sorted(cwd.iterdir(), key=lambda p: (p.is_file(), p.name))
for e in entries:
if e.name.startswith('.') or e.name in skip:
continue
if e.is_dir():
count = sum(1 for _ in e.rglob('*') if _.is_file())
print(f'{e.name}/ ({count} files)')
else:
print(e.name)
" 2>/dev/null || ls -1
Root config files:
for f in CLAUDE.md .gitignore pyproject.toml package.json Makefile; do
test -f "$f" && echo "present: $f" || echo "absent: $f"
done
Hooks configured:
python3 -c "
import json
from pathlib import Path
found = False
for src in ['hooks/hooks.json', '.claude/settings.json']:
p = Path(src)
if not p.exists():
continue
try:
d = json.loads(p.read_text())
hooks = d.get('hooks', {})
for event, entries in hooks.items():
count = sum(len(e.get('hooks', [])) for e in entries)
if count:
print(f'{event}: {count} handler(s) [{src}]')
found = True
except Exception:
pass
if not found:
print('none configured')
" 2>/dev/null || echo "none configured"
MCP servers (user scope):
python3 -c "
import json, os
from pathlib import Path
cfg = Path.home() / '.claude.json'
if not cfg.exists():
print('~/.claude.json not found')
else:
d = json.loads(cfg.read_text())
servers = d.get('mcpServers', {})
print('user scope: ' + ', '.join(servers.keys()) if servers else 'none at user scope')
" 2>/dev/null || echo "none"
This session's log entries:
python3 -c "
import os, re, sys, subprocess
from pathlib import Path
sys.path.insert(0, os.environ.get('CLAUDE_TOOLBOX_ROOT', '') + '/scripts')
from _scope import get_scope, project_key
# Get current session ID from collect-summarize.py
result = subprocess.run(['python3', os.environ.get('CLAUDE_TOOLBOX_ROOT', '') + '/scripts/collect-summarize.py'],
capture_output=True, text=True)
session_id = ''
for line in result.stdout.splitlines():
if line.startswith('SESSION:'):
session_id = line.split(':', 1)[1].strip()[:8]
break
mode, data, cwd = get_scope()
projects_dir = Path.home() / '.claude' / 'projects'
if mode == 'single':
key = data
else:
try:
git_root = subprocess.check_output(['git', 'rev-parse', '--show-toplevel'], stderr=subprocess.DEVNULL, text=True).strip()
key = project_key(git_root, projects_dir)
except Exception:
print('(could not determine project)')
sys.exit(0)
log = projects_dir / key / 'memory' / 'session-log.md'
if not log.exists():
print('(no session log)')
sys.exit(0)
text = log.read_text()
blocks = re.split(r'(?=^## \d{4}-\d{2}-\d{2})', text, flags=re.MULTILINE)
if session_id:
matched = [b for b in blocks if session_id in b]
if matched:
print('\n'.join(matched)[:1200])
else:
print('(no log entries yet this session)')
else:
print('(could not determine session ID)')
" 2>/dev/null || echo "(unavailable)"
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 222 lines · 51 tokens per session scan B 2cfd04b5bf15
status is a command published in the GitHub repository gf-labs/claude-toolbox (2 stars, last pushed 1mo ago), licensed MIT. It adds 51 tokens to every session and 2,008 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it B with 2 findings (reads agent configuration directories, runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
init
Install the formatters this repository needs, with every command visible before it runs.
brand-generate
Generate an on-brand document from a saved Brand Profile.
genshijin-compress
Markdown・テキストファイルを原始人形式へ安全圧縮.
save
Save this conversation as a new or existing reusable context.
wp-polylang
Translate an existing WordPress site into a second language using Polylang.
standup
Show a daily standup summary with completed, in-progress, and blocked tasks across all active epics.