chat-namer — Claude Code plugin: name and find chats
Gives Claude conversations readable names instead of UUIDs, searches them by keyword, and prints the resume command for the one you pick.
/plugin marketplace add anthropics/claude-plugins-community
/plugin install chat-namer@claude-communityWhat chat-namer does
Claude saves each conversation as a .jsonl file named with a UUID. This plugin reads the first user message and turns it into a title. Titles live in chat-names.json per project directory, so the transcript files stay untouched.
A Stop hook runs after the opening exchange and names new conversations on its own. Five slash commands cover the rest: /chat-namer:list, /chat-namer:search, /chat-namer:rename, /chat-namer:resume and /chat-namer:auto-name. The resume one hands you a claude --resume <uuid> line to paste in another terminal. Built-in commands such as /model and whatever they print are skipped when the title is generated.
The package ships five skills, hooks/hooks.json, and the scripts index.js, cli.js, hook-auto-name.js. It relies on Node.js built-ins only, so there is nothing to install with npm. The same code runs as a standalone CLI via npx claude-chat-namer — handy for sorting through old chats from a shell.
What it helps with
- find a past conversation by keyword instead of a UUID
- name every unnamed conversation in one go
- get a ready
claude --resumecommand for the chat you want - rename a conversation to something you will recognise
- browse and rename chat history from the terminal
Example prompts for the agent
- List my conversations with their names
- Search for chats about
woltand give me the resume command - Auto-name all the conversations that don't have one yet
How to install chat-namer
Plugin marketplace
/plugin marketplace add anthropics/claude-plugins-community/plugin install chat-namer@claude-communityStep by step, with commands for each platform: Claude Code plugins: marketplaces, installing, and building your own
Questions about chat-namer
How do I install chat-namer in Claude Code?
Run /plugin marketplace add anthropics/claude-plugins-community, then /plugin install chat-namer@claude-community. Restart Claude or run /reload-plugins afterwards.
What does chat-namer do?
It titles your Claude conversations from the first message, lets you search and rename them, and returns the claude --resume command for a match. Names are kept apart from the transcript files.
Does it need any npm packages?
No. Only Node.js built-in modules are used, so there are no external dependencies.
Source text
SKILL.md · MIT
# claude-chat-namer
[](https://github.com/Jamaalx/claude-chat-namer/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/claude-chat-namer)
[](LICENSE)
**Claude Code plugin** that names, searches, and helps you resume your conversations. No more UUID chaos.
Claude Code stores conversations as UUID-named `.jsonl` files. This plugin auto-names them, lets you search/rename, and makes `claude --resume` actually usable.
## Install
### As Claude Code Plugin (recommended)
The repo is its own plugin marketplace. Add it once, then install the plugin:
```bash
claude plugin marketplace add Jamaalx/claude-chat-namer
claude plugin install chat-namer@claude-chat-namer
```
Or from inside Claude Code:
```
/plugin marketplace add Jamaalx/claude-chat-namer
/plugin install chat-namer@claude-chat-namer
```
Restart Claude Code (or run `/reload-plugins`) and the `/chat-namer:*` commands and the auto-naming hook are active. Update later with `claude plugin update chat-namer@claude-chat-namer`.
### Try it without installing
```bash
git clone https://github.com/Jamaalx/claude-chat-namer.git
claude --plugin-dir ./claude-chat-namer
```
### As standalone CLI
```bash
npx claude-chat-namer
```
Or install globally:
```bash
npm install -g claude-chat-namer
claude-chat-namer list
```
## Features
### Auto-Naming (Hook)
The plugin includes a `Stop` hook that **automatically names every conversation** after the first exchange. Names are generated from the first user message. No configuration needed - just install and forget.
Slash commands (`/model`, `/login`, ...) and their output are ignored, so the name comes from the first thing you actually typed.
### Slash Commands (inside Claude Code)
| Command | Description |
|---------|-------------|
| `/chat-namer:list` | List all conversations with names |
| `/chat-namer:search <query>` | Search conversations by keyword |
| `/chat-namer:rename` | Rename a conversation |
| `/chat-namer:resume <query>` | Find a conversation and get the `claude --resume` command |
| `/chat-namer:auto-name` | Auto-name all unnamed conversations at once |
### Resume Helper
Instead of scrolling through UUIDs, find any conversation by keyword:
```
> /chat-namer:resume wolt
Found 4 conversations matching "wolt":
1. [named] Wolt Automation - Camoufox
Mar 19 | 1088 msgs | c348d36f-8002-40ca-8523-17821d6a0bea
2. [named] Implement Wolt Purchases plan...
Feb 18 | 361 msgs | c0e56e5c-1b7e-4c1f-9d2a-5e8f3a6b7c90
Run in a new terminal:
claude --resume c348d36f-8002-40ca-8523-17821d6a0bea
```
### CLI Usage
```bash
claude-chat-namer # Interactive mode (browse + rename)
claude-chat-namer list # List all conversations
claude-chat-namer search "wolt" # Search by keyword
claude-chat-namer name c348 "Wolt Automation" # Name by UUID prefix
claude-chat-namer unname c348 # Remove a name
claude-chat-namer auto # Auto-name all unnamed
claude-chat-namer help # Show all commands
```
## How it Works
1. Scans `~/.claude/projects/` for conversation `.jsonl` files
2. Reads the first user message to generate auto-names
3. Stores names in a `chat-names.json` file (per project directory)
4. **Never modifies conversation files** - names are separate metadata
## Plugin Structure
```
claude-chat-namer/
├── .claude-plugin/
│ ├── plugin.json # Plugin manifest
│ └── marketplace.json # Marketplace manifest (lets you `claude plugin install` this repo)
├── skills/
│ ├── list/SKILL.md # /chat-namer:list
│ ├── search/SKILL.md # /chat-namer:search
│ ├── rename/SKILL.md # /chat-namer:rename
│ ├── resume/SKILL.md # /chat-namer:resume
│ └── auto-name/SKILL.md # /chat-namer:auto-name
├── hooks/
│ └── hooks.json # Stop hook for auto-naming
├── scripts/
│ ├── index.js # Core API
│ ├── cli.js # CLI interface
│ └── hook-auto-name.js # Hook script
├── test/
│ └── smoke.sh # End-to-end test against a throwaway HOME
├── package.json
└── README.md
```
## Development
```bash
bash test/smoke.sh # runs the CLI + hook against fake transcripts
claude plugin validate . # checks plugin.json / marketplace.json
```
CI runs the smoke test on Node 18, 20 and 22. See [CHANGELOG.md](CHANGELOG.md) for release notes.
## Zero Dependencies
Uses only Node.js built-ins (`fs`, `path`, `os`, `readline`). No `npm install` needed.
## License
MIT
© Jamaalx · MIT · Jamaalx/claude-chat-namer