Skip to main content

cold-read-gate

Gate outward-bound text (upstream issues, docs, PR bodies) through isolated haiku fresh-reader critique before publishing. Use when an artifact must survive a reader with zero project context.

Informações da origem

Repositório
laurigates/claude-plugins
Última atividade na origem
2 de setembro de 2026 às 11:19
Idioma detectado do SKILL.md
inglês
Estrelas
60
Forks
6

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
cold-read-gate
description
Gate outward-bound text (upstream issues, docs, PR bodies) through isolated haiku fresh-reader critique before publishing. Use when an artifact must survive a reader with zero project context.
allowed-tools
Agent, Read, Write, Edit, TodoWrite
model
opus
created
2026-06-11T00:00:00.000Z
modified
2026-10-07T00:00:00.000Z
compatibility
claude-code
reviewed
2026-09-02T00:00:00.000Z
# Cold-Read Gate Text written inside a long session inherits the session's context — codenames, version baselines, internal PR numbers, "the obvious fix" — and the author can no longer see which parts won't survive contact with a reader who has none of it. Before publishing an outward-bound artifact, **dispatch an isolated, cheap, context-free agent to read it cold and interrogate it**. What confuses the cold reader is what will cost you a round-trip question (or a silent deprioritization) from the real audience. The reader is deliberately **haiku, isolated, and shown only the artifact**. This is a measured exception to the "always Opus for subagents" rule: the subagent here is not doing delegated work — it *is* the measurement instrument. The test is "can a low-context reader act on this text alone?", and a stronger model (or one with session context) would answer a different, easier question. If haiku can act on it, a busy maintainer can. ## When to Use This Skill "Outward-bound" means any audience that lacks your session context — external maintainers *and* future teammates reading internal docs cold both qualify. | Use this skill when... | Skip when... | |---|---| | Filing issues/MRs on an upstream tracker (external maintainers) | Internal scratch notes, commit messages, chat replies | | Publishing docs a new team member will land on cold | The artifact is throwaway or has a captive expert audience | | PR descriptions for reviewers outside the work's context | The text is one paragraph — just reread it yourself | | Emails / announcements leaving the team | The same artifact already passed a gate and only typos changed | | Batch-producing N artifacts (one reader per artifact, parallel) | | ## The Gate Protocol ### Step 1: Artifact on disk The artifact must be a file. The reader gets a path, not pasted text — paste invites the orchestrator to "helpfully" add context, which defeats the test. ### Step 2: Dispatch the cold reader — synchronously One `Agent` per artifact, all in a single message when batching. Run each reader **synchronously** (`run_in_background: false` — set it explicitly; as of Claude Code 2.1.232 non-teammate spawns run in the background by default) — the reader's entire job is a one-shot critique, and a synchronous run returns that critique directly as the `Agent` tool result. There is nothing to gain from backgrounding it. If a reader *was* spawned with `run_in_background: true`, read its critique from the **task-completion result** the harness returns when the task ends — never by `SendMessage`. A completed background agent only emits `idle_notification`s on the message channel, so asking it there for its output loops forever without ever returning the analysis (issue #2063). Template: ``` subagent_type: general-purpose model: haiku run_in_background: false prompt: | You are <persona — see table>. You have NO context beyond the text itself. Read ONLY this file (no other files, no repository exploration, no web): <absolute path> Produce: 1. THE ASK — state in ONE sentence what this text wants you to DO. If you cannot state it, say so plainly: that is the most important finding. 2. QUESTIONS — anything unclear, ambiguous, undefined (jargon, acronyms, unexplained references), or missing that you'd have to ask the author before acting. Quote the exact phrase that confused you. 3. HESITATIONS — claims you can't verify from the text alone, confusing structure, anything that would make you deprioritize it. 4. Verdict: exactly one of `clear` | `needs-revision`. Ignore: <known artifacts of the test — see Step 3. Plus anything the surrounding UI renders for the real reader — see "The reader is context-free; your audience may not be" below. Example: "Ignore the HTML comments at the top (they are stripped by the filing script before publishing) and do not ask which repository this is — the issue is filed on the target project's own tracker. The reader can see the merge box, the check names, the review state and both branch names; do not ask about those."> Concise bullets. Your final message is the deliverable. ``` Item 1 is load-bearing: QUESTIONS and HESITATIONS surface *local* defects, but an artifact can be locally clear and still ask for something incoherent. A reader that cannot state the ask has found a structural flaw the author cannot see, because each half of the argument is individually true. | Audience | Persona | |---|---| | Upstream bug report | "an open-source maintainer triaging a newly filed issue" | | Team documentation | "a new team member reading this doc with no project context" | | PR description | "a reviewer seeing this change for the first time" | ### The reader is context-free; your audience may not be The gate removes context on purpose, and for a bug report filed into an empty tracker that matches the real reader well. It matches badly whenever the artifact is published *into a surface that renders state around it* — a PR or issue comment, a review thread, a dashboard card, a chat message under a link preview. There the real reader sees the page; the cold reader sees a bare file. The gate then asks for explanations the surface already supplies, and acting on them inflates the artifact with duplication. > Observed 2026-09-02 (`Comfy-Org/ComfyUI_frontend#13280`): round-one readers > asked what the fork-PR approval gate was and whether the four named workflows > were the whole set. Answering both produced a closing paragraph that restated > the merge box sitting directly below the comment — "17 workflows awaiting > approval / This workflow requires approval from a maintainer", GitHub's own > explainer link, and the required checks by name. The comment lost 58% of its > words when a human asked whether that paragraph needed to exist. - **Name the rendered context in the `Ignore:` list**, concretely enough that the reader stops asking: the merge box, check names and states, review status, branch names, labels, diff size. - **A verdict scores sentences, never whether a paragraph should exist.** Both this gate and a prose linter judge what is on the page. Neither asks what should be cut, so a `needs-revision` acted on literally makes an artifact longer — check the word count across rounds, and treat growth as a signal to re-read rather than a sign of progress. - **Disclosed limitations are not defects.** A reader will often restate a caveat the author volunteered as a reason to hesitate. Tell it to judge clarity, not merge-readiness, or it converts your honesty into a `needs-revision`. For the GitHub-specific inventory of what the page renders, see `repos-claude-config` `.claude/rules/pr-comment-vs-ui-affordances.md`. **When one artifact serves two channels, give each reader its real audience.** An issue-triage persona and a busy-chat-skimmer persona on the same argument returned non-overlapping findings — coherence and exception-shopping from the first, skimmability and cross-section consistency from the second. Two personas cover two axes; the same persona twice covers one. ### Step 3: Triage the critique — gaps, measurements, test artifacts The cold reader cannot know the publishing context, so some complaints are artifacts of the test, not defects. A third class is neither: an objection the text cannot settle but a **command** can. Triage into three buckets before revising: | Genuine gap — fix it | Answerable with evidence — measure it | Test artifact — ignore it | |---|---|---| | Bare file paths instead of clickable links pinned to a ref | "Impact is environment-specific" — a result quoted on one machine/config only | "Which repo is this?" when the artifact is filed *on* that repo's tracker | | Unexplained acronym/jargon on first use | "I can't verify this claim" about something a single run would settle | Complaints about metadata the publish step strips (HTML comments, frontmatter) | | Symptom asserted without the actual error output | A benchmark with no baseline, or a ratio with no absolute numbers | Demands for repro environments beyond what quoted source code shows | | Three suggested fixes with no preference | | Critique of pre-existing scope the current change didn't touch | | Internal references (PR #s, ticket IDs) leaking into external text | | Requests to restructure a document section you didn't write | | Internal arithmetic that doesn't add up ("12 across two waves" — which 12?) | | | **Test the objection before softening the sentence.** A hedge ("results may vary") answers nothing; the measurement often *inverts* the objection. Capping `RAYON_NUM_THREADS` at 1/2/4/8/24 to answer "the 8.7x is on 24 cores, which is uncommon" cost one command and showed the win saturates near 4 threads — an ordinary laptop gets nearly all of it (tracel-ai/burn#5332). Route here, not to a rewrite, whenever a bounded run can produce the number. ### Step 4: Revise once, re-read only on failure Apply the genuine gaps with a revise pass (the orchestrator or a revise agent). Re-dispatch a fresh cold reader **only if the first verdict was `needs-revision`**; a `clear` verdict with minor notes means apply the genuine ones and publish without a second opinion. Do not loop more than twice — a third round means the artifact has a structural problem the gate can't fix. **Fallback when the reader can't deliver.** If the critique cannot be retrieved (reader died, harness hiccup, background-spawn confusion), do not block publication on the gate: perform the deterministic portion inline — scan the artifact yourself for internal references (PR/ticket numbers, codenames), unexplained jargon, and self-containment — and publish on that basis. The cold read is the better instrument, but a hand scan beats an abandoned gate. ## Workflow-Script Integration Inside a `Workflow` script the gate is one schema-enforced stage per item: [references/workflow-script.md](references/workflow-script.md). ## Evidence and common mistakes Production runs: [references/evidence.md](references/evidence.md). Mistakes to check before dispatching or acting on a critique: [references/common-mistakes.md](references/common-mistakes.md). ## Related - [`verify-before-plan`](../verify-before-plan/SKILL.md) — verifies premises before work; this skill verifies legibility after - `workflow-orchestration-plugin:workflow-verify-before-filing` — the filing pipeline this gate slots into as the pre-publish stage - [`parallel-agent-dispatch`](../parallel-agent-dispatch/SKILL.md) — batching N readers follows its single-message dispatch contract
Ver no GitHub