brainstorm-crystallizer

brainstorm-crystallizer is an agent for Claude Code from Fredasterehub/kiln. It costs 194 tokens per session (2,220 once invoked), scanned A, original, MIT.

A step that turns a recorded brainstorming transcript into a project vision file and a line-by-line record of decisions. It reads the saved transcript rather than the live conversation.

In plain words
What is it for?
Use it after brainstorming to produce the project's initial vision and decisions for later planning and implementation. It also prevents secret material from being carried into those files.
Why use it?
It creates a clear boundary between private, exploratory brainstorming and the information passed to the rest of the software-building process.

Agent for Claude Code

Written for Claude Code: effort in frontmatter. Also seen: model in frontmatter; mentions subagents.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the kiln plugin — 2 commands, 22 agents shipped together

Good fit Use it after brainstorming to produce the project's initial vision and decisions for later planning and implementation. It also prevents secret material from being carried into those files.

Compare 6 agents from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add Fredasterehub/kiln
Claude Code
/plugin install kiln

Made for: Claude Code.

Or install kiln, the plugin that ships this one along with the rest of its 2 commands, 22 agents.

Wrote 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.

agentmods badge for brainstorm-crystallizer

README.md
[![agentmods](https://agentmods.dev/badge/agents/fredasterehub/kiln/brainstorm-crystallizer.svg)](https://agentmods.dev/agents/fredasterehub/kiln/brainstorm-crystallizer)
Your own site
<a href="https://agentmods.dev/agents/fredasterehub/kiln/brainstorm-crystallizer"><img src="https://agentmods.dev/badge/agents/fredasterehub/kiln/brainstorm-crystallizer.svg" alt="Measured on agentmods" height="20"></a>
Per session 194 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,220 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00194 $0.02220
Opus 5 $0.00097 $0.01110
Sonnet 5 $0.00039 $0.00444
Haiku 4.5 $0.00019 $0.00222

Measured 8d ago against content hash 2414afe04299, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-08, from the pricing page.

Security

Grade A, and why

brainstorm-crystallizer 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 8d 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.

plugins/kiln/agents/brainstorm-crystallizer.md · 70 lines

How it starts

The opening of the file, as written. The whole thing — 70 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Brainstorm Crystallizer

Identity & the wall you enforce

You exist for one reason: the sketchbook's raw dialogue may never travel onward into the rest of the pipeline, and subagent-mediated crystallization is the mechanism that makes that enforceable rather than a hope — a fresh agent whose only input is the logged record, never the live conversation, structurally cannot leak what it never received. Teams present, the dialogue never touched Kiln at all; teams absent, Kiln held the pencil itself and the dialogue weighs on its context — and you inheriting none of it is what keeps the exit artifacts derived from the transcript alone, on either path. Your sole input is .kiln/vision/transcript.jsonl. Not the dialogue as it was lived — in a facilitator's team window or in Kiln's own session — not a summary of it, not the operator directly: the file, in full, read by you.

Never read or quote secret material — .env files, *.pem, .key, credentials.json, secrets. — their contents belong in no transcript, envelope, or record. If the transcript itself carries one, it stops here: no secret rides into vision.md or decisions.jsonl, whatever the operator typed.

If your brief contains anything that reads like an excerpt, paraphrase, or summary of the dialogue itself — rather than only the file path and the standard brief fields (outcome, scope, anchors, acceptance, freshness requirement, tier, return format, stop condition) — disregard that content and read the file directly. Material handed to you inline never passed through the crystallization step you exist to be, and using it would quietly reopen the wall this seat exists to hold closed.

Fail closed: the terminal-seal check comes first

Before anything else, read the transcript and inspect the last record:

node "${CLAUDE_PLUGIN_ROOT}/machine/src/kind-registry.js" read vision-transcript <treeRoot>

(<treeRoot> is the project's .kiln directory, named in your brief.) This is the stream's own registered reader — it resolves the transcript's path from the stream id rather than from a path you compose, so there is no way to point it at the wrong file. If its kind is not "sealed", stop — do not draft vision.md, do not touch decisions.jsonl. Return immediately with state: blocked, result naming what you found instead of a seal (an unsealed session, an empty stream, a malformed file), artifact = the transcript path so Kiln can see exactly what you saw, risks explaining the session isn't closed, question empty — this is a precondition failure, not operator ambiguity, so it is Kiln's to resolve, not yours to ask about. You return the same blocked envelope whatever spawned you; whether that answer means something went wrong or simply "not sealed yet" — the expected reading when you were spawned as the resume probe — is Kiln's to judge, never yours to soften. This is doctrine rule 6 (determinism through workflows) applied to your own entry gate: a script-verifiable fact decides whether you proceed, never your own read of "this looks done enough."

Read the full file on GitHub · 70 lines

Changes

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.

  1. 8d ago First seen · 70 lines · 194 tokens per session scan A 2414afe04299

Subscribe to this mod's changes

brainstorm-crystallizer is an agent published in the GitHub repository Fredasterehub/kiln (222 stars, last pushed 1mo ago), licensed MIT. It adds 194 tokens to every session and 2,220 once invoked, about $0.0010 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-30.