distill-transcripts
Distill a project's transcripts into proposals for eliminating repetitive work: skills, scripts, hooks, rules, or fixes to whatever causes the repetition.
Skill by TomerAberbach
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/tomeraberbach-distill-transcripts
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/distill-transcripts
What's inside
- Skill name
distill-transcripts- Description
- Distill a project's transcripts into proposals for eliminating repetitive work: skills, scripts, hooks, rules, or fixes to whatever causes the repetition.
- License
- MIT
- Instructions
- 271 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (4)
- SKILL.md
- extract-actions.sh
- extract-prompts.sh
- query-actions.sh
SKILL.md (first lines)
Read the project's transcripts for work that repeats, both the work the user
asks for and the work you do to satisfy it, then propose a remedy for each
pattern nothing already covers. Build nothing unless the user picks it.
Arguments: $ARGUMENTS
Read the transcripts of the project directory named in the arguments, or of the
current working directory if the arguments name none. If they ask for every
project (say, "all transcripts"), pass `--all`. If they name a focus area
instead (say, "testing" or "anything involving jj"), read the current project's
transcripts and keep only candidates in that area.
Load `/distill` first. It covers reducing a body of data to an artifact. This
skill supplies the data (transcripts), the question ("what work recurs?"), and
the artifact (a proposal list).
# Workflow
1. Run `extract-prompts.sh` (in this skill's directory) with the project
directory as its argument, or `--all` for every project, writing its output
to a file in the scratchpad directory. It prints one tab-separated `project`,
`session id`, `timestamp`, `prompt` line per prompt, so `wc -l` gives the
prompt count and `cut -f2 | sort -u` the session count. Pass
`--max-chars 900` when the prompts are too long to read whole: it keeps each
request and marks how much it cut. For a pasted log or a plan, that is all
you need. Say in the report that you truncated. When the project has no
transcripts it exits with an error. Report that and stop
2. Run `extract-actions.sh` (in this skill's directory) with the same argument,
writing its output to a second file in the scratchpad directory. It prints
one line per tool call, from the main thread and from the subagents a session
spawned, with each tool's input reduced to a signature. Never read this file
whole. See "Reading the action extract"
3. Enumerate what already covers repetitive work here, before reading a single
prompt, so you judge candidates against a fixed list. See "Enumerating
existing coverage"
4. Read every extracted prompt. Call none irrelevant before you read it
5. Cluster the prompts by what the user wanted, not by the words used. "Rewrite
this so each function stays at one level" and "this reads bottom-up, fix it"
are one task. For each cluster, keep every prompt in it, the sessions it
spans, and two or three verbatim examples showing the range. See "What counts
as repetitive work"
6. Cluster the actions. See "Reading the action extract"
7. Judge each cluster against the enumeration. See "Judging existing coverage"
8. For each surviving candidate, choose the remedy. See "Choosing a remedy",
then "Choosing a level" for the remedies that have one
9. Report as in "Reporting". Offer to build the ones the user picks: run
`/create-skill` for a skill, `/update-config` for a hook or a permission
entry, and write a rule, script, or fix yourself
# Enumerating existing coverage
List what already exists, with a one-line summary of each:
- User skills: `~/.claude/skills/*/SKILL.md`
- Project skills: `<project>/.claude/skills/*/SKILL.md`
- Project commands: `<project>/.claude/commands/*.md`
- Plugin and built-in skills: the ones listed in this session's available-skills
list
- Rules: `~/.claude/CLAUDE.md` and every `CLAUDE.md` in the project
- Hooks and permissions: the `hooks` and `permissions` keys of
`~/.claude/settings.json` and the project's `.claude/settings.json`
- Scripts: the project's `package.json` scripts, `Makefile` targets, and
whatever it keeps in `scripts/` or `bin/`
Count them by kind. The report opens with those counts. Read every summary, and
the body of anything close to a candidate. A name is not a procedure. Only the
body describes what it does.
# What counts as repetitive work
A cluster is a candidate when all of these hold:
- It holds three or more prompts spanning two or more sessions. One elaborate
request is not a pattern; three plain ones are. Prompts repeated inside a
single session count as one, because they are one task restated
- The user wanted the same outcome each time, whatever the phrasing
- The next occurrence is likely. A migration that finished last month will not
come up again
A cluster that meets the last two but holds two prompts, one per session, is
borderline. Report it in a separate list of weaker candidates. Never drop it
silently.
The counts are the argument. A proposal without prompts behind it is your taste,
presented as evidence.
Corrections tell you more than plain requests do. A prompt that corrects what
you did ("no, split that into separate commits first") states a procedure the
user expects and you missed. Several such prompts across sessions form one
candidate.
Other kinds of clusters worth keeping:
- A preference restated in different projects or files
- A sequence the user walks you through step by step, the same way each time
- A command invoked repeatedly with the same hard-to-remember flags
- A prompt that is nothing but context you could have looked up yourself: a file
path, a command's flags, a convention already written down
- Requests that already invoke a skill and then correct its output: evidence to
amend that skill, not to add one
These aren't exhaustive. Reason from first principles when none fits cleanly.
# Reading the action extract
A prompt cluster shows what the user asked for more than once. An action cluster
shows what the same request cost: the commands re-derived, the files re-read,
the calls that failed before they worked.
`extract-actions.sh` prints one tab-separated line per tool call:
| Column | Contents |
| ------ | -------------------------------------------------------------------- |
| 1 | project |
| 2 | session id |
| 3 | timestamp |
| 4 | tool name |
| 5 | signature: `Bash:jj diff`, `Edit:src/parse.py`, `Skill:humanize` |
| 6 | `err` when the call returned an error, empty otherwise |From TomerAberbach/claude-config, MIT.
More from TomerAberbach/claude-config
- 0.561score
allay
TomerAberbach
Settle an unnamed unease about a piece of code by naming the design defect behind it or ruling the unease unfounded, then handing off to the skill that fixes…
SkillAFreshness: AClaude Code +9 - 0.561score
concretize
TomerAberbach
Replace jargon and imported metaphors in code and prose with concrete, domain-fitting terms a reader understands without translation.
SkillAFreshness: AClaude Code +9 - 0.561score
homogenize
TomerAberbach
Make a set of things (code, prose, config, docs) consistent along a dimension the user names, by picking a canonical form and conforming every member to it.
SkillAFreshness: AClaude Code +9 - 0.561score
distill
TomerAberbach
Distill a body of data into a small artifact that keeps what matters: a research document, code that handles the data, a skill, a schema.
SkillAFreshness: AClaude Code +9 - 0.561score
encapsulate
TomerAberbach
Find interface boundaries that leak their implementation and close the leaks, so each module hides one coherent decision behind an interface stated in its…
SkillAFreshness: AClaude Code +9 - 0.557score
architecture-review
TomerAberbach
Review a codebase for structural defects, propose ranked restructurings that make it simpler, and apply the ones the user approves.
SkillAFreshness: AClaude Code +9 - 0.557score
issue
TomerAberbach
Write, fill in, or update a GitHub issue, including an upstream bug report with a minimal reproduction, and judge replies to it.
SkillAFreshness: AClaude Code +9 - 0.551score
jj-describe
TomerAberbach
Write a description for the current `jj` commit.
SkillAFreshness: AClaude Code +9 - 0.523score
authoring-tests
TomerAberbach
Use when writing, reviewing, or modifying any test files, or when asked to add test coverage.
SkillBFreshness: BClaude Code +9 - 0.518score
create-skill
TomerAberbach
Create a new Claude Code skill following the conventions of existing skills.
SkillBFreshness: BClaude Code +9 - 0.518score
audit
TomerAberbach
Audit something against a standard, check every item in scope, and report the findings and the coverage behind them.
SkillBFreshness: BClaude Code +9 - 0.518score
editorialize
TomerAberbach
Do an editorial review of a post or article and report findings ordered by importance.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Oct 10, 2026 (19 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/TomerAberbach/claude-config
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from TomerAberbach
- 0.561score
distill
TomerAberbach
Distill a body of data into a small artifact that keeps what matters: a research document, code that handles the data, a skill, a schema.
SkillAFreshness: AClaude Code +9 - 0.561score
encapsulate
TomerAberbach
Find interface boundaries that leak their implementation and close the leaks, so each module hides one coherent decision behind an interface stated in its…
SkillAFreshness: AClaude Code +9 - 0.561score
concretize
TomerAberbach
Replace jargon and imported metaphors in code and prose with concrete, domain-fitting terms a reader understands without translation.
SkillAFreshness: AClaude Code +9 - 0.561score
homogenize
TomerAberbach
Make a set of things (code, prose, config, docs) consistent along a dimension the user names, by picking a canonical form and conforming every member to it.
SkillAFreshness: AClaude Code +9 - 0.561score
allay
TomerAberbach
Settle an unnamed unease about a piece of code by naming the design defect behind it or ruling the unease unfounded, then handing off to the skill that fixes…
SkillAFreshness: AClaude Code +9 - 0.557score
issue
TomerAberbach
Write, fill in, or update a GitHub issue, including an upstream bug report with a minimal reproduction, and judge replies to it.
SkillAFreshness: AClaude Code +9
Cite this page
distill-transcripts skill. Agent Mart. https://agentmart.dev/skills/tomeraberbach-distill-transcripts (last updated 2026-10-24)