polymath-society 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/LICENSE +52 -0
  2. package/README.md +311 -0
  3. package/dist/DATA-MAP.md +109 -0
  4. package/dist/cli.js +24136 -0
  5. package/dist/engine/closing-rubric.md +50 -0
  6. package/dist/engine/exp-allfacets.js +16832 -0
  7. package/dist/engine/exp-person.js +16922 -0
  8. package/dist/engine/exp-pipeline.js +16700 -0
  9. package/dist/engine/feel-seen-rubric.md +192 -0
  10. package/dist/engine/ingest-export.js +1423 -0
  11. package/dist/engine/peak-demos.js +16752 -0
  12. package/dist/engine/person-dimension-summary.js +16744 -0
  13. package/dist/engine/person-facet-lines.js +16784 -0
  14. package/dist/engine/person-headline.js +16733 -0
  15. package/dist/engine/person-report.js +16845 -0
  16. package/dist/engine/person-self-image.js +16689 -0
  17. package/dist/engine/public-report-guidelines.md +80 -0
  18. package/dist/engine/public-report.js +17284 -0
  19. package/dist/engine/run-analysis.js +16035 -0
  20. package/dist/engine/run-tagger.js +16092 -0
  21. package/dist/engine/top-companies.md +41 -0
  22. package/dist/engine/writing-well.md +56 -0
  23. package/dist/index.js +22021 -0
  24. package/dist/pipeline/TECHNIQUES.md +406 -0
  25. package/dist/pipeline/WRITING.md +48 -0
  26. package/dist/pipeline/coding-agglomerate.js +15876 -0
  27. package/dist/pipeline/coding-aggregate.js +440 -0
  28. package/dist/pipeline/coding-build.js +1168 -0
  29. package/dist/pipeline/coding-coaching.js +16893 -0
  30. package/dist/pipeline/coding-day-digest.js +15869 -0
  31. package/dist/pipeline/coding-delegation.js +16292 -0
  32. package/dist/pipeline/coding-expertise.js +15925 -0
  33. package/dist/pipeline/coding-flow.js +313 -0
  34. package/dist/pipeline/coding-frontier-detail.js +15878 -0
  35. package/dist/pipeline/coding-frontier.js +51 -0
  36. package/dist/pipeline/coding-gap-dist.js +293 -0
  37. package/dist/pipeline/coding-gap.js +17108 -0
  38. package/dist/pipeline/coding-grade.js +16195 -0
  39. package/dist/pipeline/coding-nutshell.js +15725 -0
  40. package/dist/pipeline/coding-projects.js +104 -0
  41. package/dist/pipeline/coding-walkthrough.js +15947 -0
  42. package/dist/web/app.js +12024 -0
  43. package/dist/web/index.html +1 -0
  44. package/dist/web/styles.css +1 -0
  45. package/package.json +61 -0
@@ -0,0 +1,406 @@
1
+ # The best ways to use Claude Code — the gap rubric
2
+
3
+ Recommend from THIS catalog only. It is sourced primarily from **Boris Cherny** (he created
4
+ Claude Code): his "tips from the Claude Code team" thread (Feb 2026,
5
+ [x.com/bcherny](https://x.com/bcherny/status/2017742743125299476)) **and** his newer threads on
6
+ loops, mobile/remote, and `/batch` (spring 2026). It also includes a few first-party Claude Code
7
+ features he and the team ship: **session forking**, **`/by the way` side queries**, the **Chrome
8
+ extension**, **slash commands**, and **`SessionStart` hooks**. If a technique isn't in this file,
9
+ it is out of scope — no "auto mode," no `/compact`/`/clear`, no model-effort tips.
10
+
11
+ ---
12
+
13
+ ## ⛔ CRITICAL — DISCUSSING a feature is NOT USING it
14
+
15
+ This person builds tooling FOR Claude Code, so their transcripts are saturated with the words
16
+ "worktree," "pull request," "fork," "plan mode," "by the way," "teleport," etc. **A keyword in a
17
+ transcript is NOT evidence they use the feature** — it usually means they were talking about
18
+ building it. **Gate every recommendation on STRUCTURAL usage facts** (tool-call counts,
19
+ `EnterPlanMode` count, session `entrypoint`s, git branch names, `duplicateOf` copies,
20
+ `maxConcurrent`, `subagentSpawns`) — never on a keyword appearing in the text.
21
+
22
+ ## ⛔ Claude-auto tools — NEVER recommend or credit these
23
+
24
+ Some tools Claude reaches for on its own; they are NOT the user's choice: **visualize /
25
+ show_widget** (visual widgets & HTML), **live-preview / Claude_Preview**, **queue-ahead**,
26
+ **deferred-tools (ToolSearch)**, **subagent fan-out**, **task orchestration
27
+ (TaskCreate/Update)**, **web-research (WebSearch/WebFetch)**. Never write "use visualize MCP" or
28
+ name any of these — the user just ASKS Claude for the outcome and Claude picks the tool. These are
29
+ filtered from the builder's inputs (`CLAUDE_AUTO_CAP` / `CLAUDE_AUTO_MCP` in
30
+ `scripts/coding-gap.mts`).
31
+
32
+ ---
33
+
34
+ ## THE PRIME DIRECTIVE — order recommendations most-difference-making → least
35
+
36
+ Every recommendation carries a **`differenceRank`** (1 = the single biggest unlock for THIS
37
+ person). The report shows them in that order. The ranking is **conditional on their data**:
38
+
39
+ - **If they are NOT already running several agents in parallel** (`maxConcurrent` < 2, or
40
+ `parallelHours` ≈ 0) → **"Do more in parallel" is `differenceRank` 1.** For someone working one
41
+ agent at a time, nothing else comes close.
42
+ - **If they already parallelize** (`maxConcurrent` ≥ 2) → **"Invest in your CLAUDE.md / tune your
43
+ context" is `differenceRank` 1.** Boris's framing: better context *dramatically* improves
44
+ performance, and it is the highest-leverage move for someone who already runs agents in parallel.
45
+
46
+ Then, in general (skip any that don't apply, and honor each tip's gate):
47
+
48
+ > parallel (if low) → **CLAUDE.md / context** → **Plan mode** → **give Claude test cases (auto-
49
+ > verify, run longer)** → **subagents** → loops (if collaborative) → remote/mobile (if workstation-bound) →
50
+ > forking → slash commands → Chrome extension → `/by the way` → skills → visuals → the de-emphasized
51
+ > three (bug-fixing, prompting, data/analytics).
52
+
53
+ Respect the person's deliberate choices in the gap config (e.g. they stay on `main` on purpose —
54
+ never tell them to hand-juggle worktrees; `/batch` managing its own worktrees is fine).
55
+
56
+ **Omission rule — a gated tip whose gate fails is DROPPED, never softened.** If the data says a tip
57
+ doesn't apply (no PRs → no loops) it does not appear at all — a "when you someday…" card reads as
58
+ not having looked. If the data says they ALREADY do it (recent forking, regular browser-driving,
59
+ voice), it moves to **alreadyStrong** — never to recommendations. Judge "already do it" on the
60
+ RECENT window: adopting a habit last week counts as doing it.
61
+
62
+ ---
63
+
64
+ ## 1 · Invest in your CLAUDE.md — tune your context [usually the #1 unlock]
65
+
66
+ **The core Boris point: better context dramatically improves performance, and tuning it is the
67
+ highest-leverage thing you can do.** After any correction, *"just tell Claude to add that to your
68
+ CLAUDE.md"* — one line, and it's remembered every future session so you never re-type it. Then
69
+ ruthlessly refine it (keep it tight — under ~200 lines or Claude starts ignoring rules).
70
+
71
+ - **Teams / shared context [EMPHASIZE when they collaborate]:** CLAUDE.md is checked into git, so
72
+ it is *shared project context* — every teammate (and every future session) inherits the same
73
+ conventions, commands, and architecture. On a team this compounds: one person's hard-won
74
+ correction becomes everyone's default.
75
+ - **Nested CLAUDE.md per subfolder:** a subdirectory can have its OWN `CLAUDE.md`. Claude Code
76
+ loads it **automatically, on demand** — the moment Claude reads any file in that subtree, that
77
+ folder's CLAUDE.md is pulled into context. Nothing extra to wire up (the root file is loaded at
78
+ launch; subtree files load when touched). So subsystem-specific rules (e.g. "in `packages/x/`,
79
+ always do Y") belong in a CLAUDE.md *next to that subsystem*, not crammed into the root file.
80
+ - **The sub-agents you should have defined:** recurring multi-step jobs deserve a saved, reusable
81
+ subagent in `.claude/agents/` — and that agent should be NAMED in CLAUDE.md so Claude reaches for
82
+ it. Ground this: point at a specific repeated job in THEIR sessions that should be a standing
83
+ subagent + a CLAUDE.md line telling Claude when to use it.
84
+ - **How to instruct Claude to do it:** the move is dead simple and worth spelling out — you don't
85
+ hand-edit the file; you say *"add that to your CLAUDE.md"* / *"make that a subagent and note it in
86
+ CLAUDE.md,"* and Claude writes it. Say this explicitly so they know the cost is one sentence.
87
+ - **`SessionStart` hook (only if warranted):** static CLAUDE.md holds ~95% of context (architecture,
88
+ conventions, exact commands, "never use X library," testing workflow). A `SessionStart` hook is
89
+ for *dynamic, computed* context that CLAUDE.md can't hold — a summary of recent commits, the
90
+ current branch, the assigned ticket, config pulled from elsewhere. Only suggest the hook if their
91
+ sessions show repetitive *computed* setup; otherwise CLAUDE.md is simpler and you should say so.
92
+ - **whyItHelps must name THEIR OWN recurring standing instructions** — discover them from the
93
+ excerpts (common classes: a "talk to me before you change things" rule, a house convention about
94
+ how a rubric/output should be shaped, an "always give concrete examples" rule) — and say the fix
95
+ is one line: tell Claude to add them. Do NOT invent the instruction; find the one they actually
96
+ repeat.
97
+ - **KEEP OUT** (so the illustration stays honest): anything Claude can read from the code, standard
98
+ conventions it knows, pasted code snippets (they rot — use `file:line`), README duplication
99
+ (`@README`), vague fluff ("write clean code").
100
+ - **Signal:** the SAME standing instruction recurs across sessions; a thin or absent CLAUDE.md;
101
+ subsystem rules re-typed instead of living in a nested CLAUDE.md; repeated multi-step jobs with no
102
+ saved subagent.
103
+
104
+ ## 2 · Start every complex task in Plan mode [EMPHASIZE — high priority]
105
+
106
+ *"Pour your energy into the plan so Claude can 1-shot the implementation."* Shift+Tab twice to enter
107
+ Plan mode; iterate the plan in detail until it's solid, then let Claude execute. If it drifts, go
108
+ back and re-plan rather than pushing through. Skip it only when you could describe the diff in one
109
+ sentence.
110
+
111
+ - **Name the problem precisely:** skipping plan mode makes the model pause mid-build to ask for
112
+ feedback and drift from intent — so the person ends up steering turn-by-turn *during*
113
+ implementation what they could have settled once, up front. **The plan IS the feedback loop** —
114
+ iterating on it (with no context-switching cost, since nothing's been built yet) is what makes
115
+ both of you think better and produces a much better system in one shot.
116
+ - **Ground it:** find a real session where they iterated a lot mid-implementation to fine-tune
117
+ something — that back-and-forth belonged in the plan.
118
+ - **See the plan as HTML, not a wall of markdown [Tariq, "the unreasonable effectiveness of HTML
119
+ files"]:** while in Plan mode, ask Claude to render the design/UI as an HTML mock you can click
120
+ through — even a few different directions side by side — instead of a long markdown plan nobody
121
+ reads. HTML is information-dense and ergonomic; you catch a misunderstanding by *seeing* it before
122
+ any code is written, and can screenshot it back to Claude to refine. (Do NOT name the tool — the
123
+ user just asks Claude to "show me this as HTML.")
124
+ - **Keep THIS rec about iterating the DESIGN — not test cases.** The "seed the plan with expected
125
+ results / test cases so Claude runs autonomously longer" idea now lives in its own tip (#3, Give
126
+ Claude a way to verify its own work). Do NOT put test-case/fixture copy in the plan-mode
127
+ recommendation too — the two cards must not echo. Plan mode here = settle the approach and see it
128
+ as HTML before code.
129
+ - **Signal:** `EnterPlanMode` ≈ 0 while sessions are large multi-file changes; lots of
130
+ mid-implementation back-and-forth or `[Request interrupted by user]`; the person literally says
131
+ "discuss the architecture/approach first" but isn't in plan mode.
132
+
133
+ ## 3 · Give Claude test cases up front so it can auto-verify and run longer [EMPHASIZE — Boris: "the most important thing"]
134
+
135
+ **The single highest-leverage habit in both Claude Code talks: give Claude some way to CHECK its own
136
+ output, and it will iterate to near-perfect on its own.** Boris, verbatim: *"Give it some sort of
137
+ tool that it can use for feedback to check its work, and it will iterate by itself, and you're going
138
+ to get a much better result."* Hand it a mock and a way to see the rendered result, unit tests to
139
+ run, a screenshot to compare — *"let it iterate two or three times, often it gets it almost
140
+ perfect."*
141
+
142
+ - **LEAD WITH: "make the test cases up front, so Claude can work for much longer."** This is the
143
+ clearest, highest-value framing — write the expected outputs / test cases BEFORE the work starts,
144
+ and Claude runs autonomously far longer without stopping to ask, because it checks itself as it
145
+ goes. The whyItHelps should open on this.
146
+ - **What makes a good test-case recommendation — GENERAL PRINCIPLES, illustrated with a GENERIC
147
+ example (never the person's own codebase; the builder specializes these to their project):**
148
+ **Core idea: the richer and more DETAILED the test cases handed to Claude UP FRONT, the more it
149
+ has to work off of — more data up front = better, more autonomous results. So the test cases you
150
+ recommend to THIS person (grounded in their own usage) must themselves be rich and detailed, not a
151
+ token example.**
152
+ 1. **Rich and comprehensive — a LIST of behaviors, not one case.** Tell them to have Claude
153
+ enumerate the FULL set of behaviors/scenarios to test and test each on its own — the whole
154
+ surface, edge cases included, not a single happy path. Generic illustration: for a to-do app
155
+ that's adding an item, removing an item, editing an item, completing an item, emailing an item,
156
+ an empty list — a real, complete list.
157
+ 2. **At a HIGH level of abstraction — the flows the person already keeps in their head.** Test
158
+ cases are USER-LEVEL flows and behaviors, the kind the person can rattle off in one breath:
159
+ for a to-do app, "add an item, remove an item, modify an item, send an item as an email to a
160
+ friend." NEVER implementation-level assertions ("make sure this function fires at this time")
161
+ or internal-machinery checks — the person doesn't think in those terms, and supplying them is
162
+ far too cognitively expensive. If a case couldn't plausibly come out of the person's mouth,
163
+ it's at the wrong level; Claude translates the high-level flows into detailed tests itself.
164
+ 3. **The WHY rides along with every case — richness lives in the REASON, not in machinery
165
+ detail.** A test case is `example/flow → expected outcome → the reason it's correct`. A bare
166
+ expected value ("X = 11", "add item works") teaches Claude nothing about WHY it's right — the
167
+ reason is exactly the "more data up front," and it's what lets Claude verify it got things
168
+ right FOR THE RIGHT REASONS, not by luck. FEWER cases each carrying a reason beat a long list
169
+ of bare values.
170
+ 3b. **Write every case FROM THE PERSON'S POINT OF VIEW — what they'd actually remember.** Ask:
171
+ given what this person is building, which cases do they already know really well in their head?
172
+ Those are the ones to suggest. The reason must read like the person's own recollection —
173
+ first-person, vivid-but-possibly-vague ("in that conversation I came up with the concept
174
+ myself — I thought that was brilliant"), because a vibe-level memory is all a real person has.
175
+ NEVER analyst/rubric language ("applies an existing model correctly but never stress-tests its
176
+ assumptions") — no person describes their own memories that way, and asking them to is
177
+ cognitively expensive. Vague is fine; Claude sharpens a vague memory into a precise check
178
+ itself.
179
+ 4. **Reasons come from the PERSON, never invented.** When the card shows example cases, each
180
+ attached reason must be TRACEABLE to something the person actually said/argued in their
181
+ sessions (their own words, their own argument) — never analysis the model composed to sound
182
+ right. If no traceable reason exists for a case, do NOT fabricate one: frame it as "Claude
183
+ drafts the candidate list with proposed reasons; you correct them from memory" — the person is
184
+ the only source of the memorable reasons.
185
+ 5. **Generated by Claude from the project, then reviewed.** Ask Claude to produce the rich list
186
+ from the actual code/spec; you review and correct it — fuller coverage than hand-typing cases.
187
+ 6. **Up front, so it runs longer — asked for in PLAIN ENGLISH.** The list exists before the work
188
+ starts, so Claude checks itself after each change and runs autonomously far longer. Do NOT
189
+ prescribe wiring a CLI harness or command (`bun run evals`-style plumbing) — the person just
190
+ tells Claude in English to check against the cases; Claude handles the mechanics itself.
191
+ The whyItHelps APPLIES these to whatever the person is building (do NOT assume any particular kind
192
+ of app): a list of HIGH-LEVEL flows/behaviors their project should test, with the REASON attached
193
+ to at least the anchor cases — the kind of list they could say out loud in one breath. FAILED
194
+ cards: internal-machinery assertions (per-subsystem/per-function checks); a single thin case; a
195
+ run of bare `X = value` pairs with no reasons. This card may run longer to fit the list. This
196
+ rubric states only the principles + the generic illustration; the person-specific cases come from
197
+ their data.
198
+ - **Make verification NATIVE to the artifact [Tariq's workshop — the deepest level]:** don't leave
199
+ yourself as the one who eyeballs correctness. Build the check *into the thing*: expected outputs
200
+ as fixtures, invariants that must always hold, probes that push off the happy path, and a single
201
+ command (or DOM/data contract) Claude can run to see pass/fail — from a human dashboard, from the
202
+ browser, or headlessly in CI. The Claude Code team even records these verification runs as
203
+ evidence.
204
+ - **This is BROADER than plan-mode test cases (tip 2).** That was "seed the plan with a few expected
205
+ results." This is a *standing verification harness* Claude runs after every change, on every task
206
+ — so it self-corrects instead of you re-checking by hand.
207
+ - **Ground it in THEIR work (state the principle generically; let the model find the instance):**
208
+ when the person builds something whose correctness they can specify — an evaluation/scoring
209
+ engine, a data transform, a parser — the move is to encode the expected results and invariants as
210
+ a self-check Claude runs itself, so it catches its own regressions. Point at where they are
211
+ currently the manual verifier (re-reading outputs, re-checking a view by hand after each change)
212
+ and show how a one-command self-check would take that off them and let Claude iterate unattended.
213
+ - **The recommendation TITLE must be about TEST CASES and contain "test cases" (e.g. "Give Claude
214
+ test cases so it can auto-verify and run longer")** so the report picks the right icon. Do NOT
215
+ name a Claude-auto tool for the "see the result" step — the user just asks Claude to check its
216
+ work / show the result.
217
+ - **Signal:** the person is the one eyeballing correctness after each change; UI/output checked by
218
+ hand; no test/`verify` step the agent runs itself; long sessions of manual back-and-forth that a
219
+ self-check would have closed. (Note: they already drive the browser a lot — the gap is turning
220
+ that manual checking into a check CLAUDE runs and iterates against.)
221
+
222
+ ## 4 · Use subagents [EMPHASIZE — high priority]
223
+
224
+ Append **"use subagents"** to any request to allocate more compute; **"use 5 subagents to explore
225
+ the codebase"** for parallel exploration; offload heavy sub-work so the main agent's context stays
226
+ focused. Save reusable ones in `.claude/agents/`. **[Make it visceral with THEIR work: name the
227
+ exact request in their sessions where this was the move — e.g. a broad "explore/analyze the whole
228
+ X→Y pipeline" ask that ran single-threaded and should have been "use 5 subagents to explore."]**
229
+
230
+ - **Signal:** broad explore/analyze requests run single-threaded; low `subagentSpawns`; never saves
231
+ reusable agents.
232
+
233
+ ## 5 · Run loops for the collaborative grind [GATE on collaboration volume]
234
+
235
+ Boris runs cron loops that babysit PRs and fix CI automatically — *"every night I have a few
236
+ thousand agents running,"* 150 PRs in a day, much of it from his phone. His actual loops:
237
+
238
+ - `/loop 5m /babysit` — auto-address code-review comments, auto-rebase, shepherd PRs to production.
239
+ - `/loop 30m /slack-feedback` — put up PRs for Slack feedback on a cadence.
240
+ - `/loop /post-merge-sweeper` — open PRs to address review comments that were missed.
241
+ - `/loop 1h /pr-pruner` — close out stale, no-longer-needed PRs.
242
+
243
+ **[REQUIRED — quote Boris VERBATIM: the whyItHelps for this tip MUST list his exact loops with his
244
+ exact wording — `/loop 5m /babysit` (auto-address code review, auto-rebase, and shepherd PRs to
245
+ production), `/loop 30m /slack-feedback`, `/loop /post-merge-sweeper`, `/loop 1h /pr-pruner` — not a
246
+ paraphrase. It is fine for this card to run longer than the others to fit them.]**
247
+
248
+ Also **`/batch` for big one-off parallelizable work** (migrations): it interviews you, then fans the
249
+ work out to *"as many worktree agents as it takes (dozens, hundreds, even thousands),"* each isolated
250
+ in its own worktree, each testing its work before opening a PR. Usage:
251
+ `/batch migrate src/ from Solid to React`.
252
+
253
+ - **[GATE — CRITICAL: loops are almost entirely for COLLABORATIVE work — PRs, pushes, review, CI.
254
+ Surface loops ONLY if the STRUCTURAL data shows real collaborative volume: many `git push`/`gh
255
+ pr`, branch-per-feature, review activity. For a solo builder who works on `main` and doesn't open
256
+ PRs, this tip FAILS its gate — OMIT it from recommendations ENTIRELY, not even a light/conditional
257
+ "when you someday open PRs" card; recommending PR-shepherding loops to someone with no PRs reads
258
+ as not having looked at their data. `/batch` applies to anyone facing a large one-off migration —
259
+ but only mention it if a migration is actually visible in their sessions, and then inside another
260
+ relevant card or on its own merits, not as a vehicle to sneak the loops card in.]**
261
+ - **Signal:** high `git push` / `gh pr` / review volume, multiple feature branches → loops fit; a
262
+ looming large migration or sweeping mechanical change → `/batch`.
263
+
264
+ ## 6 · Code from anywhere — mobile app, `/teleport`, `/remote-control`, a remote instance [GATE on workstation-bound]
265
+
266
+ Boris writes a lot of his code from the **iOS/Android app** (Claude app → Code tab): a convenient
267
+ way to make changes without opening a laptop. And you can move a session across surfaces:
268
+ `claude --teleport` or `/teleport` continues a cloud session on your machine; `/remote-control`
269
+ controls a locally running session from your phone or the web (he keeps "Enable Remote Control for
270
+ all sessions" set in `/config`). About half his engineering now happens on his phone.
271
+
272
+ - **Remote instance:** stand up a persistent remote box (e.g. an **EC2 instance**) so agents keep
273
+ running when your laptop is closed. The **mobile app can connect straight to that remote
274
+ instance** — much easier than reaching a session running on your local machine — so you kick off
275
+ and check work from your phone. Worth the one-time setup if you're otherwise stuck coding only
276
+ when you're physically at your desk. **[whyItHelps SHOULD mention the iOS app connecting to the
277
+ remote instance as the payoff.]**
278
+ - **[GATE — only if the person is WORKSTATION-BOUND: all sessions come from the desktop app /
279
+ terminal at their machine, with ZERO web or mobile `entrypoint`s. That means every bit of their
280
+ work is gated on being at the workstation — the unlock is being able to kick off and check agents
281
+ from their phone via a remote instance. If they already have web/mobile sessions, this is a
282
+ strength, not a gap.]**
283
+ - **Signal:** `entrypoint`s are 100% desktop/CLI with none web/mobile → recommend the mobile app +
284
+ `/remote-control` + setting up a remote (EC2) instance. Icon key: "remote" / "EC2" / cloud.
285
+
286
+ ## 7 · Fork your session — branch the context instead of rebuilding it
287
+
288
+ Forking clones a session's full context at a point, so you can chase a side path or spin up a
289
+ parallel line of work WITHOUT re-establishing everything from scratch. It's one of the best ways to
290
+ both **save context** and **parallelize** — you branch from a shared, already-warmed-up setup.
291
+
292
+ - **[CHECK the logs — and judge on the RECENT window, not all-time: `duplicateOf` marks resume/fork
293
+ copies (it conflates the two). If the RECENT count shows they fork in the current window, they
294
+ have ALREADY adopted it — this tip FAILS its gate: OMIT it from recommendations and credit it
295
+ under alreadyStrong (someone who started forking last week must not be told to start forking).
296
+ Only surface forking as a gap when recent forking is ~absent, grounded in a moment where a fork
297
+ would have carried the context.]**
298
+ - **Signal:** long sessions rebuilt from scratch when a fork would have carried the context; ~zero
299
+ `duplicateOf` copies in the RECENT window.
300
+
301
+ ## 8 · Turn repeated multi-step prompts into slash commands [team leverage]
302
+
303
+ Boris uses a `/commit-push-pr` command dozens of times a day. Commands live in `.claude/commands/`,
304
+ checked into git — so on a **team, everyone shares the same commands** and the same "inner loop"
305
+ workflows. It's the lighter, prompt-level sibling of a skill.
306
+
307
+ - **[Ground with concrete commands THIS repo could have — DERIVE the class from their repeated
308
+ multi-step prompts, don't hardcode their exact wording. E.g. if they re-type a multi-step "run the
309
+ analysis / regrade / regenerate the snapshot" sequence, that's a `/`-command. Name 2–3 plausible
310
+ commands their repo is missing.]** Emphasize the team payoff if they collaborate.
311
+ - **Signal:** the same multi-step prompt re-typed across sessions; no `.claude/commands/`.
312
+
313
+ ## 9 · Use the Chrome extension to automate whole browser tasks [GATE — omit if they already use it]
314
+
315
+ The Claude Chrome extension lets Claude drive a real browser and **automate complete web tasks end
316
+ to end** — the chores that can ONLY be done through a front end: signing up for things (programs,
317
+ awards, services), retrieving credentials/API keys from dashboards, filling and submitting forms,
318
+ working through auth-gated or JS-only flows. Hand Claude the whole errand, not just a click.
319
+
320
+ - **[GATE — CRITICAL: if their usage shows they ALREADY drive the browser regularly
321
+ (usage.chrome.chromeToolCalls is substantial), this tip FAILS its gate — OMIT it from
322
+ recommendations entirely and credit it under alreadyStrong. Recommending the Chrome extension to
323
+ someone who already uses it reads as not having looked at their data. Only recommend when
324
+ browser-driving is absent, grounded in a web chore from their sessions Claude could have run.]**
325
+ - **Signal:** ~zero browser-driving tool calls PLUS manual web chores visible in their sessions.
326
+
327
+ ## 10 · Use `/btw` for side queries while an agent runs
328
+
329
+ While the main agent is working, the **`/btw`** command lets you fire a side question — understand a
330
+ piece of the codebase, sanity-check an assumption, look something up — WITHOUT interrupting or
331
+ derailing the run. It reuses the conversation's context (so it's near-free), answers in an overlay
332
+ that vanishes, and keeps the main task moving while you learn alongside it. The command is `/btw`,
333
+ not "by the way".
334
+
335
+ - **[Tell them they're UNDER-using this: they interrupt running work (or context-switch) to ask
336
+ small questions that could have been `/btw` side queries. Ground in a moment where they broke a
337
+ run to ask something. The recommendation TITLE should say `/btw`.]**
338
+ - **Signal:** `[Request interrupted by user]` to ask a question; stopping a run to ask something
339
+ small that didn't need to halt the work.
340
+
341
+ ## 11 · If you do something more than once a day, make it a skill
342
+
343
+ Boris's rule, verbatim — *"If you do something more than once a day, turn it into a skill or
344
+ command"* (`.claude/skills/<name>/SKILL.md`, checked into git). **[The recommendation TITLE must be
345
+ this GENERAL rule (Boris's wording), NOT a specific skill name. The specific instance goes inside
346
+ whyItHelps — e.g. a multi-step startup briefing they re-type at the start of every session is the
347
+ obvious thing to make a skill.]** Boris's examples: `/techdebt`, context-sync commands, dbt agents.
348
+ Import instead of building: `skill-creator` ([anthropics/skills](https://github.com/anthropics/skills)),
349
+ marketplace plugins (**commit-commands**, **pr-review-toolkit**, **security-guidance**).
350
+
351
+ - **Signal:** repeated multi-step manual prompts that should be one command; no custom skills.
352
+
353
+ ## 12 · Have Claude explain things to you with visuals
354
+
355
+ **[Problem-led: the person built their own system (rubrics, a scoring/collector pipeline, etc.) but
356
+ doesn't fully hold how the mechanics fit together — they re-question outputs and re-derive the logic
357
+ repeatedly. Solution: just ASK Claude to build a visual, interactive walkthrough of how it works (do
358
+ NOT name a tool — Claude picks it; the user never "uses visualize MCP"). In their context: an
359
+ interactive page stepping through their own pipeline makes the mechanics clear once, so they stop
360
+ re-explaining.]** Also: the **Explanatory** output style; a **spaced-repetition** skill.
361
+
362
+ - **REQUIRED in whyItHelps — the plan-as-HTML move [Tariq, "the unreasonable effectiveness of HTML
363
+ files"]:** the recommendation MUST include that, while in Plan mode, they can ask Claude to render
364
+ the design/plan as clickable HTML mockups (even a few different directions side by side) instead
365
+ of reviewing a long markdown plan. Seeing it as HTML is denser and more ergonomic — they catch a
366
+ misunderstanding before any code is written, and can screenshot it back to refine. This is the
367
+ most concrete, highest-value form of "explain with visuals," so lead the whyItHelps with it. (Do
368
+ NOT name the tool — the user just asks Claude to "show me this as HTML.")
369
+
370
+ - **Signal:** repeatedly asks "how does X work" / "how are the numbers assigned" about THEIR OWN
371
+ system → have Claude build a visual explainer or mock site that shows how it works.
372
+
373
+ ---
374
+
375
+ ## De-emphasized (surface only on a clear, repeated instance)
376
+
377
+ ## 13 · Claude fixes most bugs by itself [DE-EMPHASIZE]
378
+ Enable the Slack MCP, paste a bug thread, say "fix"; "Go fix the failing CI tests"; point Claude at
379
+ docker logs. **Signal:** only if their sessions show them hand-relaying bug reports / CI failures
380
+ the agent could pull and fix itself.
381
+
382
+ ## 14 · Level up your prompting [DE-EMPHASIZE]
383
+ Challenge Claude as a reviewer, request behavior diffs; after a mediocre fix, "implement the elegant
384
+ solution"; write detailed specs. **Signal:** low priority — only a clear, repeated instance of
385
+ accepting a weak first attempt.
386
+
387
+ ## 15 · Use Claude for data & analytics [DE-EMPHASIZE]
388
+ CLI tools like `bq` for BigQuery directly inside Claude Code. **Signal:** only if their sessions
389
+ show them manually running/relaying DB queries.
390
+
391
+ ---
392
+
393
+ ## Voice dictation (interface QoL — detect, don't assume)
394
+
395
+ Double-tap `fn` on macOS for ~3× typing speed. **[DETECT from prompt length: consistently SHORT
396
+ prompts → they TYPE → recommend voice AND a cheap (~$20) USB mic. LONG / run-on / speech-like
397
+ prompts → they already dictate → treat as a STRENGTH, do NOT recommend voice.]**
398
+
399
+ ---
400
+
401
+ **Sources:** Boris Cherny — "tips from the Claude Code team"
402
+ ([x.com/bcherny](https://x.com/bcherny/status/2017742743125299476)); the loops / mobile /
403
+ `/teleport` / `/remote-control` / `/batch` thread (spring 2026); plus first-party Claude Code docs
404
+ for nested CLAUDE.md ([on-demand subtree loading](https://code.claude.com/docs/en/claude-directory)),
405
+ remote control ([docs](https://code.claude.com/docs/en/remote-control)), forking, `/by the way`,
406
+ slash commands, and `SessionStart` hooks.
@@ -0,0 +1,48 @@
1
+ # Coding-report writing rubric — the house voice
2
+
3
+ Every line of user-facing copy in the coding report (component strings, LLM-written
4
+ sections, coaching, headlines) must pass this rubric. If a sentence fails, cut or rewrite it.
5
+
6
+ ## The one rule: NO FLUFF
7
+
8
+ Fluff is any text that does not carry a fact, a number, a named thing, or a decision.
9
+ If you delete the sentence and the reader loses nothing concrete, it was fluff. Cut it.
10
+
11
+ Banned outright:
12
+ - Throat-clearing subtitles that restate the section title in prettier words
13
+ ("the deliberate moves you make, and where the frontier is" → DELETE).
14
+ - Adjective stacks that assert quality without evidence ("genuinely strong, real,
15
+ discriminating taste"). Show the instance instead.
16
+ - Hedge-and-flatter filler ("a real, developing sense", "a strong signal", "honestly").
17
+ - Meta-narration ("Here's the honest read:", "In a nutshell —", "Let's look at").
18
+ - Generic best-practice advice not tied to THIS person's data.
19
+
20
+ ## Concrete or it doesn't ship
21
+
22
+ - Name the thing: the skill (`deep-research`), the project (Polymath Society), the
23
+ session, the date, the number. Never "various tools" or "several sessions".
24
+ - Every quality claim must be anchored to a specific instance the person will recognize:
25
+ "you reframed the grading rubric around load-bearing rungs on 06-12" beats
26
+ "strong abstraction". The point is they think "oh — it actually saw that."
27
+ - Prefer one sharp example over three vague ones.
28
+
29
+ ## Nothing important in grey
30
+
31
+ Grey (`text-faint`/`text-muted`) text is skimmed past and ignored. If it matters, it is
32
+ `text-ink` (black) and weighted. Grey is only for axis labels, units, and true asides.
33
+ Never put a real finding, a name, or a number in grey.
34
+
35
+ ## Make them feel seen, don't flatter
36
+
37
+ Seen = you named something true and specific about how they work that they hadn't seen
38
+ articulated. Flattery = adjectives with no referent. Calibrate praise to what's load-bearing
39
+ and TRUE (see lib/agents/report/feel-seen-rubric.md), then point at the receipt.
40
+
41
+ ## Mechanics
42
+
43
+ - Short. One idea per sentence. Cut every word that isn't doing work.
44
+ - Active voice, second person ("you"), present tense.
45
+ - A number beats a word; a named instance beats a number; the reader's own recognition
46
+ beats both.
47
+ - Coaching tells them ONE concrete thing to do differently, drawn from their data — not a
48
+ menu, not a platitude.