{"slug":"transcript-hygiene-2","title":"transcript-hygiene","summary":"Bound what subagents return and what tool output enters the transcript; load when briefing a subagent or reading large output.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-28T16:27:09.747304Z","repo":{"url":"https://github.com/JakeSelby/model-citizen","stars":23,"forks":4,"license":"MIT","updatedAt":"2026-09-28T16:20:22Z"},"bodyHtml":"<hr>\n<h2>name: transcript-hygiene\ndescription: Bound what subagents return and what tool output enters the transcript; load when briefing a subagent or reading large output.</h2>\n<h1>Transcript hygiene</h1>\n<p>The operative lines live in the resident rule <code>primitives/rules/transcript-hygiene.md</code>. This skill\ncarries the reasoning behind them, the numbers in context, and the examples.</p>\n<p>The user reads the transcript, not just the final message. <strong>Thinking summaries are wanted and\nstay</strong> — they are collapsed and opened deliberately. Everything else in the scroll is cost they\ndid not ask for, and the worst offenders are tool output and relayed subagent reports, not prose.</p>\n<h2>Read narrowly</h2>\n<ul>\n<li><strong>Never <code>cat</code> a whole file to answer a narrow question.</strong> <code>sed -n '40,80p'</code>, <code>head -40</code>, or\n<code>grep -n</code> with the pattern. Read the whole file only when you will actually use the whole file.</li>\n<li><strong>Never chain <code>cat A &amp;&amp; cat B &amp;&amp; cat C</code></strong> to orient. Orient with <code>grep -n '^#'</code> for headings,\n<code>wc -l</code> for size, then read the part that matters.</li>\n<li><strong>Filter every <code>find</code> and <code>ls</code>.</strong> A repo with a <code>renders/</code>, <code>data/</code> or <code>target/</code> directory will\nprint hundreds of generated filenames. Scope the glob or pipe to <code>head</code>.</li>\n<li><strong>A command printing more than ~100 lines needs a reason</strong> you could state out loud.</li>\n</ul>\n<h2>Bound what a subagent hands back</h2>\n<p><code>delegation.md</code> says to cap the return. These are the numbers.</p>\n<ul>\n<li><strong>Gathering agent: 400 words.</strong> Research digest: <strong>600</strong>. Adversarial review: findings only,\nno restatement of what it read.</li>\n<li><strong>Detail goes to a file, not into the return.</strong> Brief it to write the long version into the\nscratchpad and return the verdict, the findings that change a decision, and the path.\nSame split as a plan: card in the message, addendum on disk.</li>\n<li><strong>A word cap is not a budget to spend.</strong> Ask for what changes the answer, and nothing else.</li>\n</ul>\n<h2>Never reprint a subagent's output</h2>\n<ul>\n<li><strong>Synthesize, never relay.</strong> A finding that matters belongs in your own answer, in your own\nwords, carrying the source. A finding that does not matter does not appear at all.</li>\n<li><strong>Never paste the report</strong> — not as a quote, not as a \"here is what the research agent found\"\nblock, not lightly edited. The harness already renders the agent's own row.</li>\n<li><strong>Never echo the brief you sent.</strong> The user has no reason to read a prompt they did not write.</li>\n<li><strong>No arrival narration.</strong> Not \"both research threads are back\", not \"the agents have\nreturned\". Shape the reply by the <code>voice</code> stance; the reader does not need the machinery.</li>\n</ul>\n<h2>The tool description is the action log</h2>\n<p>In a focus view, tool calls, results and thinking collapse into one-line expandable rows, and\nthe line the user sees is the <code>description</code> you passed. It is the log, not a label for your own\nbenefit.</p>\n<ul>\n<li><strong>Write it for a reader who never opens the row.</strong> \"Check whether the plan card fits the cap\",\nnot \"run awk on the plan file\".</li>\n<li><strong>No flags, no paths, no command text.</strong> They are not reading the command; that is what\nexpanding is for.</li>\n<li><strong>One clear action in plain words</strong>, five to ten for routine commands, longer only when a\nglance would not tell them what it does.</li>\n</ul>\n<p>Text you write between tool calls stays visible in a focus view. A one-line note before a batch\nis welcome; narrating each call is not.</p>\n<h2>The one exception</h2>\n<p>Verbatim relay is correct when the exact text <em>is</em> the finding: an error message, a licence\nclause, a quoted decision row, a failing assertion. Quote the line, not the report around it.</p>\n","files":[{"path":"SKILL.md","sizeBytes":3490,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-28T16:27:27.996142Z","sha256":"B7E1DB4EE974A725794A9AF2130E74977A1D201551E8BCFF049777193BACDD30","sizeBytes":1785},"review":null,"source":{"repositoryUrl":"https://github.com/JakeSelby/model-citizen","path":"primitives/skills/transcript-hygiene","license":"MIT","commit":"83efc262099a16dd6557058bf6c538e1cdf67524","subtreeSha":"4C950D1399B5FAF156D06DF476C9F2F569E89A149BFEBD9D459A91FFDF18ECBD","lastSyncedAt":"2026-09-28T16:27:08.094899Z"},"reviewedAt":"2026-09-28T16:28:06.718831Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/JakeSelby/model-citizen/tree/main/primitives/skills/transcript-hygiene"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install jakeselby-model-citizen@llmmart"},{"target":"git","command":"git clone https://github.com/JakeSelby/model-citizen.git"}]}