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 instructions/jakemarsh/ccthread/claude-mdgit clone --depth 1 https://github.com/jakemarsh/ccthreadWrote 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/instructions/jakemarsh/ccthread/claude-md)<a href="https://agentmods.dev/instructions/jakemarsh/ccthread/claude-md"><img src="https://agentmods.dev/badge/instructions/jakemarsh/ccthread/claude-md.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.02891 | $0.02891 |
| Opus 5 | $0.01445 | $0.01445 |
| Sonnet 5 | $0.00578 | $0.00578 |
| Haiku 4.5 | $0.00289 | $0.00289 |
Grade A, and why
ccthread CLAUDE.md scanned grade A with 0 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 3d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 174 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md — ccthread
Context for future agents working in this repo. Reading the code is fine; reading this first will save you time.
Why this exists
Claude Code writes every session to ~/.claude/projects/<encoded-project>/<session-uuid>.jsonl. Raw JSONL is unreadable for agents and humans. ccthread turns any session (or any slice) into clean markdown and offers cross-project search. The six target use cases:
- Finding things in past conversations
- Learning from past mistakes
- Reviewing/summarizing rounds of work for teammates
- Finding answers or values discussed before
- Reviewing conversations to create skills out of past processes (or enhance them)
- Reviewing conversations to populate a project's
CLAUDE.md
Stack & key decisions
- Bun + TypeScript. Chosen over C for portability, simplicity, and
bun build --compile— which emits a single cross-platform binary with the Bun runtime embedded. - Streaming everywhere. Real session files go up to 100+ MB / 35k lines. Never load a file whole. All parsing flows through
src/parser/stream.tswhich usesBun.file().stream()+ line splitter. - Ship a compiled binary. Users get
ccthreadas a single executable; Bun isn't required at runtime. - Plugin with a tiny dispatcher. The plugin repo stays ~few KB.
plugin/bin/ccthreaddetects OS/arch on first run and downloads the matching release asset into${CLAUDE_PLUGIN_DATA}/bin/, caches it, then execs it. - No SQLite index in v1. Streaming scan is plenty fast (sub-second for
findacross 11k files on an M-series Mac). v2 can addbun:sqlitefor offset caching. - Thinking on by default. Agents reviewing past work usually want the reasoning.
--no-thinkingflips it off. - Tool results truncated to 40 lines by default.
--tool-details fullshows everything;nonehides them entirely. - Pager is opt-in. Default is plain stdout (agent-friendly; humans can
| lessthemselves).
Architecture
src/
cli.ts # citty-based entry; dispatches subcommands
commands/ # one file per subcommand (projects, list, show, find, search, info, tools, stats, current)
parser/
stream.ts # streaming line-by-line reader (never buffers whole files)
types.ts # discriminated types for every known log-line shape
resolve.ts # resolves tool_result overflow to sibling tool-results/*.txt
format/
markdown.ts # canonical renderer; per-type rendering policy table lives here
truncate.ts # line truncation + image-block stripping
util/
current-session.ts # three-tier detector for the "current" session keyword
dates.ts # --since/--until parsing
paths.ts # ~/.claude/projects resolution; project-name decode (lossy → fs-verified)
tests/
fixtures/ # small crafted .jsonl files covering every message type we render
*.test.ts # unit + command-level tests (bun test)
.claude-plugin/marketplace.json # makes the repo itself a marketplace
# (`/plugin marketplace add jakemarsh/ccthread`)
plugin/
.claude-plugin/plugin.json
bin/ccthread # POSIX dispatcher
bin/ccthread.cmd # Windows dispatcher
bin/.ccthread-version # pinned binary version (bumped in lockstep with plugin.json)
hooks/hooks.json # SessionStart + SessionEnd wiring for the 'current' detector
hooks/record-session.sh # writes session id to $CLAUDE_PLUGIN_DATA/sessions/<claude-pid>.json
hooks/cleanup-session.sh # removes the file on session end
skills/ccthread/SKILL.md
scripts/
build-all.ts # cross-compile every target
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.
- 3d ago First seen · 174 lines · 2,891 tokens per session scan A cb60a9755270
ccthread CLAUDE.md is an instructions file published in the GitHub repository jakemarsh/ccthread (1 stars, last pushed 4mo ago), licensed MIT. It adds 2,891 tokens to every session, about $0.0145 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other instructions, from other repositories
travel-plan-viz CLAUDE.md
Instructions for zexuanw958-svg/travel-plan-viz, covering claude.md, 这是什么, 架构红线, 测试 and 数据采集约束(写在 references/research-guide.md,改动要同步).
codemap AGENTS.md
Instructions for beadnall/codemap, covering codemap, if you are claude, if you are grok build, if you are another agent and the short version.
databricks-logs-reader CLAUDE.md
Instructions for zencity/databricks-logs-reader, covering dbr-logs, commands, architecture and gotchas.
garmin-ai-coach AGENTS.md
AGENTS.md instructions for MECoban/garmin-ai-coach, covering agents.md — for ai agents working with this repo, use this when, the one thing that matters: authentication, where to look and boundaries.
nico-apple-mcp CLAUDE.md
Claude Code instructions for proxynico/nico-apple-mcp: Bun/TS MCP server for Apple Calendar, Notes, and Contacts. Commands and Linux/cloud caveats live in AGENTS.md.
ppt-agent CLAUDE.md
Claude Code instructions for Taffyreclaimed45/ppt-agent, covering ppt agent plugin, available commands, workflow phases, agent types and skill invocation conventions.