Borrowing it
Nothing to install: this file belongs to deepnoodle-ai/dive. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/deepnoodle-ai/dive/main/CLAUDE.mdgit clone --depth 1 https://github.com/deepnoodle-ai/diveWrote 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/deepnoodle-ai/dive/claude-md)<a href="https://agentmods.dev/instructions/deepnoodle-ai/dive/claude-md"><img src="https://agentmods.dev/badge/instructions/deepnoodle-ai/dive/claude-md/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/instructions/deepnoodle-ai/dive/claude-md"><img src="https://agentmods.dev/badge/instructions/deepnoodle-ai/dive/claude-md.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.02753 | $0.02753 |
| Opus 5.5 | $0.01101 | $0.01101 |
| Sonnet 5.5 | $0.00551 | $0.00551 |
| Haiku 4.5 | $0.00275 | $0.00275 |
Grade A, and why
dive 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 1mo 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 — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.
CLAUDE.md
Project Overview
Dive is a Go library for building AI agents and integrating with leading LLMs.
Library-first approach — the CLI in experimental/cmd/dive/ is secondary.
Commands
go test ./...— Run all testscd experimental/cmd/dive && go build— Build the CLI (optional)- Use
github.com/deepnoodle-ai/wonton/assertfor all tests
Architecture
Core Types
- Agent (
agent.go): Created viaNewAgent(AgentOptions), returns*Agent. Manages tool execution and conversation. - Extension (
agent.go):Extensioninterface (Tools,Hooks,Rules) for composable agent capabilities. Set onAgentOptions.Extensions. Extensions provide tools, hooks, and system prompt rules that are merged duringNewAgent. - Session (
dive.go):Sessioninterface (ID,Messages,SaveTurn). Set onAgentOptions.Sessionor per-call viaWithSession. Thesessionpackage providesNew()(in-memory) and store-backed implementations. - LLM (
llm/llm.go):LLMandStreamingLLMinterfaces abstract over providers. - Tool (
tool.go):ToolandTypedTool[T]interfaces.FuncTool[T]()creates tools from functions with auto-generated schemas.Toolsetinterface provides dynamic tool resolution per LLM request. Tool panics are auto-recovered. All toolkit constructors return*dive.TypedToolAdapter[T](satisfiesdive.Tool).ToolDeclarer(DeclaredTools) marks a provider-defined toolset such asanthropic.ComputerToolset: calls route to the declared tools by name, which are left out of the request while the declarer is present.ToolAnnotations.HaltsBatch(automatic for calls withToolsetName) runs a batch in order and answers later halting calls after a failure with an error,ToolCallResult.Error == ErrBatchHalted. - Hooks (
hooks.go):Hooksstruct groups hook slices onAgentOptions. Hook types:SessionStartHook,PreGenerationHook,PostGenerationHook,PreToolUseHook,PostToolUseHook,PostToolUseFailureHook,StopHook,PreIterationHook,OnSuspendHook. All hooks receive*HookContext. PreToolUse hooks can setHookContext.UpdatedInputto rewrite the tool args.SessionStartHookfires once at the start of a fresh conversation (no prior messages, non-resume) and returns a*SessionStartResultto seed it (durable or ephemeral viaPersist). - Tracer (
tracer.go):Tracerinterface for observation (tracing, metrics, audit logging). Three methods (StartAgentRun,StartChat,StartToolCall) return(ctx, span); the agent threads ctx through downstream calls so spans nest naturally.NopTracer(default) andMultiTracerlive in core; the OpenTelemetry adapter isotel.NewTracerin thedive/otelmodule. - Turn outcome (
outcome.go,turn.go): once the turn begins (just before PreGeneration), every exit goes throughturn.end, which reads oneturnRecord. An error exit returns(resp, err)withStatus == ResponseStatusIncomplete,resp.Turn.Outcomeclassifying the error, anderrwrapping*GenerationError{Response: resp}; a failed partial resume returns(nil, err).Response.Turn(messages saved, usage, outcome or suspension,Persistence) is set for every status, andResponseItemTypeTurnEndedis the last item emitted. A tool batch that stops early (toolbatch.go) returns its partial batch;closeToolBatchanswers each call it did not finish as not run or unknown,Outcome.ToolCallsrecords their states, and a parallel call still running gets aBackgroundTaskHandlefor its late result.WithSoftCancel(softcancel.go) stops at the next step boundary. The loop reads each response's stop reason (llm.ClassifyStopReason): an output or context limit, a refusal, a provider stop and the iteration limit run no tool call, and a pause is resent. An incomplete turn is closed (closeturn.go: every call answered, aturn-incompletereminder whose details hold the outcome), passed toOnIncompleteTurnhooks and saved;WithContinuepicks it up;IncompleteTurns.Discardrestores the old error behaviour. Every turn has an ID (TurnID(ctx)), a status and per-call states onTurn; aTurnStoresession (Load,CheckpointTurn, revisions;session.Sessionis one, insession/turns.go) stores the record, and the agent saves through it in place of the other writes, folding aWithContinueinto the open turn.Agent.CancelSuspendedTurncloses a suspended turn without a model call.DurabilityOptions(durability.go) adds step checkpoints (arunningrecord at each model response and tool call; a turn found running on load is closed withprocess_exit) and session claims (SessionClaimer,session/claims.go) for several processes on one session. Design:docs/design/incomplete-turns.md. - Suspend/Resume (
tool.go,response.go,dive.go): A tool can pause the agent mid-turn by returningNewSuspendResult(prompt, metadata)orNewSuspendResultWithReason(prompt, reason, metadata)(setsToolResult.Suspend).SuspendReasonclassifies why:SuspendReasonInput(default) orSuspendReasonAuth.CreateResponsereturns(*Response, nil)withStatus == ResponseStatusSuspendedandResponse.Suspension *SuspensionState. Resume viaWithToolResults(session-backed) orWithResume(state, results)(stateless).SuspendableSessionis an optionalSessionextension for auto-persistence;Agent.CancelSuspendedTurncloses a suspended turn andsession.Session.RemoveLastTurndeletes one. A resent result already accepted is skipped (ErrConflictingToolResultif it differs);WithResumeRequestchecks the turn ID and revision first.OnSuspendhooks fire before persistence. Seedocs/guides/suspend-resume.md.
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.
- 1mo ago Changed · +2 lines · +482 tokens per session 04962cf0da52
- 1mo ago Changed · +3 lines · +355 tokens per session b5f7b1337e87
- 2mo ago First seen · 93 lines · 1,916 tokens per session scan A 4c597bff0109
dive CLAUDE.md is an instructions file published in the GitHub repository deepnoodle-ai/dive (133 stars, last pushed 8d ago), licensed Apache-2.0. It adds 2,753 tokens to every session, about $0.0110 per session on Opus 5.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-30.
dive CLAUDE.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| dive CLAUDE.mddeepnoodle-ai/dive | Instructions file | 133 | 8d ago | Apache-2.0 | A | 2,753 | Claude Code |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | today | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |