Skip to content
Agentmart
Submit a tool

large-tool-response-summarization

When a tool result exceeds a token threshold, save the full response to disk under the session dir, feed it to a cheap summarizer (Haiku) with an intent-aware…

Skill by kjuhwa

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/kjuhwa-large-tool-response-summarization

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

When a tool result exceeds a token threshold, save the full response to disk under the session dir, feed it to a cheap summarizer (Haiku) with an intent-aware prompt, and return the summary + file reference to the agent.

Use cases: agent-building

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/large-tool-response-summarization

What's inside

Skill name
large-tool-response-summarization
Description
When a tool result exceeds a token threshold, save the full response to disk under the session dir, feed it to a cheap summarizer (Haiku) with an intent-aware prompt, and return the summary + file reference to the agent.
License
MIT
Instructions
53 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Large tool response summarization

## When to use
- Agent calls tools that can return 60KB+ of output (log fetches, DB dumps, API list responses).
- Feeding the full response into the LLM wastes tokens and pushes context window limits.
- Want the agent to still be able to Read/Grep the full result afterward.

## How it works
1. After the tool runs, estimate tokens: `Math.ceil(text.length / 4)` (close enough, cheap).
2. If under `TOKEN_LIMIT` (~15000 tokens = ~60KB): return as-is.
3. If over: save full response to `<sessionDir>/long_responses/<timestamp>_<toolName>.<ext>` - deterministic filename so it's greppable later.
4. If response is **detectable binary** (base64-encoded image/PDF, detected via magic-byte signature): save the binary directly with the right extension.
5. If text is under `MAX_SUMMARIZATION_INPUT` (~100k tokens = ~400KB): run a small LLM (Haiku, Gemini Flash, etc.) with a prompt that includes the tool's `_intent` metadata (see `mcp-tool-intent-metadata-injection`).
6. If text is over the summarization limit: skip LLM call; return head + tail preview + file path.
7. Return to the agent a synthetic tool result like:
   ```
   <summary...>
   
   Full response saved to: long_responses/<file> (<bytes> bytes)
   Use Read/Grep to inspect details.
   ```
8. Keep the saved path *relative* to session dir so sessions stay portable when moved.

## Example
```ts
export const TOKEN_LIMIT = 15000;
export const MAX_SUMMARIZATION_INPUT = 100000;

async function guardLargeResult(text: string, opts: { sessionDir, tool, intent, runMini }) {
  const tokens = estimateTokens(text);
  if (tokens <= TOKEN_LIMIT) return text;

  const { absolutePath, relativePath } = saveToDisk(text, opts.sessionDir, opts.tool);
  if (tokens > MAX_SUMMARIZATION_INPUT) {
    return `[truncated - ${formatBytes(text.length)} saved to ${relativePath}]\n\n` +
           text.slice(0, 2000) + '\n...\n' + text.slice(-2000);
  }
  const summary = await opts.runMini({
    prompt: `Tool intent: ${opts.intent}\nSummarize this output focused on that intent:\n${text}`,
    model: 'haiku',
  });
  return `${summary}\n\nFull response: ${relativePath} (${formatBytes(text.length)})`;
}
```

## Gotchas
- Detect binary BEFORE trying to summarize - dumping 2MB of base64 into Haiku is both wasteful and unhelpful.
- Use the tool's `_intent` field (see related skill) in the summarizer prompt so summaries keep the user's goal in view.
- Save to a session-scoped directory, not a global temp - the agent should be able to Read/Grep it later in the same session.
- Keep `TOKEN_LIMIT` generous (15k) - too aggressive means the agent loses fidelity on medium-size responses.
- Use `sessionPath`-portable tokens (e.g. `{{SESSION_PATH}}`) so moving the session dir later still resolves paths.

From kjuhwa/skills-hub, MIT.

More from kjuhwa/skills-hub

Signals

Stars
0
Forks
0
Open issues
17
Last commit (this folder)
Apr 25, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from kjuhwa

Cite this page

large-tool-response-summarization skill. Agent Mart. https://agentmart.dev/skills/kjuhwa-large-tool-response-summarization (last updated 2026-10-24)