~/.claude/projects/. Sublimate reads them in tool-call order, shingles each into k=3 n-grams, and clusters by Jaccard — surfacing the repeated procedures you never wrote down.The workflow is already in
your session log.
Sublimate mines the Claude Code session transcripts already on your disk under ~/.claude/projects/, clusters them by tool-call similarity, and classifies each repeated pattern against a 3-tier rubric — Subagent, Skill, or Workflow — before emitting the artifact. Paired with Anthropic’s Dynamic Workflows launch on 2026-05-28.
Most tools pitch Workflows. This one classifies.
Sublimate treats your session history as the source of truth. It surfaces the shape of what you repeat — which tools, which order, how often — then a curator agent decides whether each pattern wants to be a Subagent, a Skill, or a Workflow.
agent() prompts. Coarse work cheap, fine work expensive.Install. Distill. Read the clusters.
Sublimate ships as a Claude Code plugin and a standalone Python CLI. Add the marketplace and run /sublimate:distill from any project, or run the CLI directly against a corpus. Two examples below.
# 1. Add the marketplace and install the plugin. $ claude plugin marketplace add krzemienski/sublimate $ claude plugin install sublimate@sublimate # 2. Distill the current project's session corpus. $ /sublimate:distill # Walk ........... 1,222 sessions under ~/.claude/projects/ # Cluster ........ 44 clusters at Jaccard 0.35 # PrefixSpan ..... frequent subsequences, min-support 0.4 # Classify ....... 8 candidates: 6 SKILL · 1 SUBAGENT · 1 WORKFLOW → out/clusters.json + out/*.workflow.js + SKILL.md candidates
# Run the deterministic miner directly — no Anthropic account needed. $ python3 -m sublimate.cli ~/.claude/projects/-Users-nick-Desktop-myproject \ --out ./out --max-sessions 300 --emit-all # Deterministic through walk → shingle → cluster → PrefixSpan $ cat out/clusters.json $ ls out/*.workflow.js → hand-polish one candidate, drop into .claude/workflows/
Subagent, Skill, or Workflow?
Every cluster the miner surfaces runs through the same three-question rubric. The rubric pulls a pattern toward the lightest tier that fits — not toward the heaviest because Workflows are the new thing.
Five stages. Two layers.
Stages 01–03 are deterministic Python — no LLM in the hot path, runs in under a minute on 2,000-session corpora. Stages 04–05 are LLM-driven, running only after clustering has reduced the input to a handful of sample sessions per cluster.
Coarse work cheap. Fine work expensive.
The deterministic miner (stages 01–03) runs over every JSONL in the corpus. The LLM (stages 04–05) runs only on the handful of sample sessions per cluster that survive clustering — never in the hot path.
What ships in v0.2.0.
Grounded in the on-disk plugin tree at github.com/krzemienski/sublimate and the live /sublimate:distill dogfood run against the blog-series corpus.
Two commands. Real corpora.
Every flag below is a real sublimate.cli flag — install the standalone miner once with pip, then point it at any project’s session directory under ~/.claude/projects/. --emit-all writes every tier (Subagent / Skill / Workflow); --max-sessions caps the walk for a fast first pass on a large corpus.
# 1. Install the standalone miner (editable, straight from the repo). $ pip install -e git+https://github.com/krzemienski/sublimate # 2. Mine one project's session corpus — emit Subagents, Skills, AND Workflows. $ python3 -m sublimate.cli ~/.claude/projects/-Users-nick-Desktop-myproject \ --out ./out --emit-all # Deterministic walk → shingle → cluster → PrefixSpan, then classify each cluster $ ls out/*.workflow.js out/clusters.json → one artifact per cluster, tier-shaped by the rubric
# Cap the walk at 300 sessions for a quick pass on a multi-thousand-session corpus. $ python3 -m sublimate.cli ~/.claude/projects/-Users-nick-Desktop-myproject \ --out ./out --max-sessions 300 --emit-all # Same deterministic pipeline, bounded sample — inspect before a full run $ cat out/clusters.json → hand-polish one candidate, drop it into .claude/workflows/
One plugin. One CLI.
Install as a Claude Code plugin for the /sublimate:distill surface, or pip install the standalone miner. The CLI runs anywhere with Python ≥ 3.10; emitted .workflow.js scripts need Claude Code v2.1.154+ on Pro / Max / Team / Enterprise.
# Option A — Claude Code plugin (gives you /sublimate:distill) $ claude plugin marketplace add krzemienski/sublimate $ claude plugin install sublimate@sublimate # Option B — standalone Python CLI (deterministic miner, no account) $ pip install -e git+https://github.com/krzemienski/sublimate $ python3 -m sublimate.cli ~/.claude/projects/<project-dir> --out ./out --emit-all # Then: inspect, hand-polish, promote. $ ls out/*.workflow.js → drop a polished candidate into .claude/workflows/ and run /workflows
Read the source. Then distill.
No SaaS, no telemetry, no closed source. The miner, the rubric, the specimens, and the prompt-distiller all live in the public repository. Eight pages worth your time on day one.
The miner refuses to invent shape. PrefixSpan only emits subsequences that actually repeated. The Python proposes. You curate.
v0.2.0 — real distillation, real specimens.
Sublimate launched 2026-05-28 alongside Anthropic’s Dynamic Workflows. v0.2 replaced v0.1’s fabricated examples with four specimens mined from real corpora — each citing its origin cluster, session count, and dominant tool sequence.
agent("Execute pattern: Read → Edit → Bash") stubs. Shipped with 4 hand-polished specimens mined from real corpora.