fairchild/dotclaude · Archived

session-titles

Session title generation, evaluation, and optimization. Auto-generates context-aware titles via Stop hook. Includes quality evaluation (pattern checks, LLM judge), GEPA-inspired prompt evolution, golden dataset tooling, and interactive title rating for training data collection.

Installation

$ npx skills add fairchild/dotclaude --skill session-titles

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from fairchild/dotclaude · top by installs.

npx skills add fairchild/dotclaude

Browse all from fairchild/dotclaude

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 2
License LICENSE
Default branch main
Open issues 7
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseApache-2.0
Declared agents claude-code

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,561 B
  • docs SUMMARY.md 300 B

History

  1. First recorded snapshot · 1 installs

SKILL.md

Session Titles

Related: For session journaling and catchup context see the chronicle skill.

Overview

Prerequisites: Claude Code (the hook and the transcripts it reads), bun, and an ANTHROPICAPIKEY for generation, judging, and evolution. Paths written as scripts/…, references/…, and data/… are relative to this skill's base directory; tilde-prefixed paths are in the reader's own Claude Code config directory.

This skill owns the entire session title lifecycle:

  1. Generation -- Stop hook extracts context from the transcript (primary request, branch, files) and calls Haiku to produce a 4-7 word active-voice title. Detects focus shifts and tracks them with a (N) prefix.
  2. Feedback -- Each generated title is saved as a pending feedback entry for later scoring.
  3. Rating -- Interactive workflow where an AI judge scores first, then the human confirms or corrects. Builds dual-perspective training data.
  4. Evaluation -- Pattern checks (fallback, meta-language, too long, etc.) plus optional LLM judge scoring across all pending entries.
  5. Evolution -- GEPA-inspired prompt mutation: reflect on failures, propose targeted changes, keep improvements.
  6. Golden dataset -- Extract candidates from real sessions, curate ideal titles, run regression evals.

How It Works

Session ends
  --> Stop hook (hooks/stop.sh)
    --> scripts/generate.ts  (stdin: session_id, cwd, transcript_path)
      --> generate-core.ts
        1. extractSessionContext()  -- parse transcript JSONL
        2. evolveTitleWithContext()  -- initial title or shift detection via Haiku
        3. sanitizeTitle()          -- strip preambles, enforce length
        4. savePendingFeedback()    -- append to title-feedback/pending.jsonl

Scripts

All scripts support --help style flags. Run with bun.

Script Purpose
generate.ts Hook entry point. Reads JSON from stdin.
generate-core.ts Core module: context extraction, title generation, shift detection.
generate-core.test.ts Unit + integration tests. bun test scripts/generate-core.test.ts
schema.ts TitleFeedback types, prompt version constants.
store.ts JSONL persistence for pending/scored feedback.
eval-quality.ts Pattern checks + optional --judge LLM scoring.
evolve-prompt.ts GEPA evolution. --iterations N, --pareto-size N.
extract-candidates.ts Pull test cases from session transcripts. --limit N, --project NAME.
run-eval.ts Run golden dataset eval. --judge-model MODEL.
report.ts Generate report from latest eval results. --file PATH.

Rate Title

Interactive rating workflow (invoke as /rate-title or manually):

  1. AI Judge assesses first -- Score (1-5), reasoning, proposed better title.
  2. Human calibrates -- Agree? Different score? Better suggestion?
  3. Both perspectives saved to ~/.claude/title-feedback/scored.jsonl. <!-- portability: allow -->

The dual-perspective data enables DSPy optimization of both the judge prompt (learn to rate like the human) and the journalist prompt (generate titles humans rate highly).

Rating Scale

Score Meaning
5 Perfect -- specific, actionable, concise
4 Good -- minor phrasing improvements possible
3 Acceptable -- gets the gist but generic
2 Poor -- too vague or wrong focus
1 Bad -- completely off-base or misleading

See references/scoring-rubric.md for detailed criteria.

Data Layout

Runtime data (gitignored, in the Claude Code config directory at ~/.claude/title-feedback/): <!-- portability: allow -->

  • pending.jsonl -- written by Stop hook
  • scored.jsonl -- written by /rate-title

Evaluation data (gitignored, at data/, relative to this skill's base directory):

  • candidates.jsonl -- extracted test cases
  • golden.jsonl -- curated with ideal titles
  • results/ -- timestamped eval outputs
  • baseline-.md, evolution-.md -- quality reports

References

  • references/scoring-rubric.md -- 5-point rating criteria
  • references/adaptive-title-plan.md -- Roadmap: phases, LanceDB vectors, DSPy optimization