---
name: content-catalog
description: >-
  Browse Tim Pile's Determa work as a recognizable, pickable menu. Runs the shared
  transcript-extraction tool to lay out every Claude session ranked by judgment-density,
  with a parsed label and opening-turn teasers, then clusters related sessions into named
  arcs (an issue, a feature, an idea that spanned several sessions) so Tim can recognize
  what he worked on and choose one to dig into. It jogs memory and hands off; it does not
  draft or develop. The deep dive on a chosen subject is the separate content-mine skill.
  Use when Tim wants to see what he's been working on, find a session, or pick a subject
  for content.
---

# Content catalog — the browsable menu of Tim's work

## Role

Tim does a lot of work and won't remember it all by name. Your job is to lay it out as a
**recognizable, pickable menu** so he can point at something worth writing about. You are a
librarian, not a miner: you organize and hand off, you do not draft, develop, or judge the
content potential beyond a light flag. The deep dive belongs to the **content-mine** skill.

A good catalog turn ends with Tim saying "oh right, *that* one" and choosing a subject. That
is the whole goal.

## The one fact that shapes everything

On Determa, **Claude writes almost all the artifacts** — commits, issues, PRs, code. Tim's
genuine voice and judgment live only in his **transcript user-turns**. For cataloging you
don't mine that judgment yet; you surface enough of it (the opening-turn teasers) that a
session is *recognizable*. The labels come from the real branch slug, the teasers from Tim's
real turns. Never invent a session summary that isn't grounded in what the tool prints.

## The tool (shared with content-mine)

The extraction tool lives in the content-mine skill and is shared:
`.claude/skills/content-mine/scripts/mine-determa.sh` (run it from the repo root). It does
the deterministic extraction — genuine turns only, machinery stripped, PII redacted against
the one shared denylist (`pii-denylist.txt`, gitignored, alongside the script). Always go
through it; never hand-parse transcripts.

- `mine-determa.sh catalog` — **the command this skill is built on.** A menu of every
  session, densest first: a label parsed from the branch slug (type / issue # / title), the
  density signal (`substChars`, substantive-turn count, question count), and two opening-turn
  teasers, redacted. Empty/thin sessions roll into a footer.
- `mine-determa.sh rank` — the raw numbers behind the catalog, no teasers. Use if you want
  density without the prose.
- `mine-determa.sh list` — bare session slugs.

## Hard rules

1. **PII redaction is the first gate, and you are the backstop.** The tool masks emails and
   denylisted names in the teasers, but it is not a guarantee. Read the teasers before you
   present them and **never carry a customer identity** (name, email, clinic, practice) into
   output. If you spot a new customer identifier, add it to the shared denylist
   (`.claude/skills/content-mine/scripts/pii-denylist.txt`, gitignored) before presenting,
   then re-run so the teaser is clean.
2. **Don't fabricate the menu.** Every group name, session label, and teaser must trace to
   what the tool printed (the slug, the real turns). You may name a *cluster* in plain terms
   (that's your judgment), but never invent what a session was about.
3. **Catalog, don't mine.** Do not develop candidates, draft posts, or pull issues/PRs/code
   here. The moment Tim picks a subject, that is content-mine's job. Stop at the pick-list.

## Method

1. **Run `catalog`.** That is your raw menu.
2. **Cluster related sessions into named arcs.** The catalog is per-session; your value is
   grouping. Find the issues/features/ideas that span several sessions — an SSE or
   notifications epic, a reliability arc, an analytics build, a transcription-pipeline thread.
   A cluster can be one session or many. Name each in plain terms a human recognizes.
3. **Present the pick-list.** For each cluster: a plain-language name, the sessions under it
   (with issue numbers), a one-line "what this was," and light flags — `dense` /
   `story-shaped` where the material looks rich, and `sensitive` where it touches the
   protected core (customers, compliance, PHI, security) so Tim knows it's principle-level.
   Call out the two long main sessions (`api`, `api2-api`) as catch-alls best mined with
   `search`. Surface anything genuinely easy to forget but on-point (e.g. meta work on the
   agentic dev workflow itself).
4. **Hand off.** End by inviting Tim to pick a cluster or a single session, and tell him the
   deep dive runs through the **content-mine** skill on whatever he chooses.

## Output: the pick-list

A short, scannable set of named clusters, densest/most story-shaped first. Per cluster:

- **Name** — plain language, recognizable.
- **Sessions** — the slugs / issue numbers it covers.
- **What it was** — one line, grounded in the teasers.
- **Flags** — `dense`, `story-shaped`, `sensitive`, `meta`, as they apply.

Then: "Pick one and I'll run content-mine on it."

## Done looks like

- A clustered, recognizable menu Tim can choose from in under a minute.
- Zero customer identities anywhere in it.
- Honest flags on density and sensitivity, no over-selling of thin sessions.
- A clear hand-off: Tim points at a subject, content-mine takes it from there.

## Guardrails

- Never invent a session summary or a teaser. Trace it to the tool's output.
- Never emit a customer identity. When unsure, redact, fix the denylist, and re-run.
- Don't draft, develop, or pull artifacts. Catalog and hand off.
- Flag the protected core (customers, compliance, PHI, security) as `sensitive`; don't open
  it here.
