Skip to content
sinc-LLMBook a 30-minute call

Engineering reference

What Is an Auto-Scatter Hook? (And Why You Need One)

A walkthrough of the Auto-Scatter Hook's processing steps, automatic operation, and pass-through rule.

The services, methods, and examples described here do not establish an expected performance result for your workload.

Mario Alexandre  ·  March 26, 2026  ·  auto-scatter prompt-hook claude-code

Let me explain this from scratch. I have been calling it an "auto-scatter hook" for weeks. But I never explained what it actually means.

An auto-scatter hook is a piece of code that sits between you and your LLM. Every time you type a prompt, the hook grabs it. It rewrites it into a structured JSON format. Then it adds that structured version as context before the model sees your original words. You never see this happen. It is invisible. But the model behaves very differently because of it.

The name comes from signal processing. I treat prompts like signals. I "scatter" them, which means I break them into their parts. The math behind it is the Nyquist-Shannon sampling theorem. It treats a prompt as a sampled signal with 6 distinct frequency bands. Each band carries a different type of information.

sinc-LLM — signal reconstruction formula
x(t) = Σ x(nT) · sinc((t - nT) / T)

The six fields state the role, context, supplied data, rules, output structure, and task.

How It Works Step by Step

1
You type a raw prompt — "fix the auth bug" or a 500-word spec. Doesn't matter.
2
Hook intercepts — before the prompt reaches Claude, the hook captures it.
3
Haiku scatter call — the hook sends your prompt to Claude Haiku (cheap, fast) with a system prompt that asks it to decompose into 6 sinc bands and return JSON.
4
JSON injection — the structured sinc JSON gets injected as system context for the main model.
5
Main model responds — sees your original prompt PLUS the fully structured interpretation. One-shot response. No back-and-forth.

The "auto" part matters a lot. I tried manual scatter first. That meant writing the sinc JSON myself for every prompt. It worked well for quality. But it was not sustainable at all. Nobody structures their prompts by hand every single time. You are in the middle of work. You type what you want. You hit enter.

The auto-scatter hook makes all of that invisible. You still type whatever you want. The hook handles the structure for you. No effort required. It just runs.

In Claude Code, I built it as a PreToolUse hook. It fires on every user message. The hook is a Python server running locally on port 8461. The hook overhead is 2ms. The Haiku API call takes 300 to 800ms on top of that. The hook is non-blocking. If the scatter call fails, it passes your prompt through unchanged. Your workflow does not break.

The Pass-Through Rule

One important edge case: if the prompt is already valid sinc JSON (meaning it has the formula field, T field, and fragments array), the hook passes it straight through. It does not scatter it again. This matters for two reasons.

First, it prevents double-scattering. If you or another agent already structured the prompt correctly, the hook leaves it alone. Second, it gives me an escape hatch. If I need to talk to the model directly, bypassing the hook, I can write sinc JSON by hand. It will reach the model without any changes.

Record the prompts processed, responses per prompt, API token usage, scatter overhead, output checks, errors, and fallback events. Keep the workload and measurement window with the record.

I also fine-tuned a local Qwen2.5-7B model for scatter. The model file is a 4.7GB GGUF. With a local GPU, local inference replaces the Haiku call.

The code is open source. Leave a comment and I will drop the GitHub link.

// Production AI Engineering

Build AI systems that hold up in production.

sinc-LLM designs, audits, and stabilises production AI infrastructure: from vendor evaluation and cost accountability to incident controls and MCP architecture.

See what we do →
Additional context

sinc-LLM About Blog Services

DOI: 10.5281/zenodo.19152668 · © 2026 sinc-LLM · Mario Alexandre