{
  "markdown": "# claude-chat-namer\n\n[![CI](https://github.com/Jamaalx/claude-chat-namer/actions/workflows/ci.yml/badge.svg)](https://github.com/Jamaalx/claude-chat-namer/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/claude-chat-namer)](https://www.npmjs.com/package/claude-chat-namer)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n**Claude Code plugin** that names, searches, and helps you resume your conversations. No more UUID chaos.\n\nClaude Code stores conversations as UUID-named `.jsonl` files. This plugin auto-names them, lets you search/rename, and makes `claude --resume` actually usable.\n\n## Install\n\n### As Claude Code Plugin (recommended)\n\nThe repo is its own plugin marketplace. Add it once, then install the plugin:\n\n```bash\nclaude plugin marketplace add Jamaalx/claude-chat-namer\nclaude plugin install chat-namer@claude-chat-namer\n```\n\nOr from inside Claude Code:\n\n```\n/plugin marketplace add Jamaalx/claude-chat-namer\n/plugin install chat-namer@claude-chat-namer\n```\n\nRestart 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`.\n\n### Try it without installing\n\n```bash\ngit clone https://github.com/Jamaalx/claude-chat-namer.git\nclaude --plugin-dir ./claude-chat-namer\n```\n\n### As standalone CLI\n\n```bash\nnpx claude-chat-namer\n```\n\nOr install globally:\n\n```bash\nnpm install -g claude-chat-namer\nclaude-chat-namer list\n```\n\n## Features\n\n### Auto-Naming (Hook)\n\nThe 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.\n\nSlash commands (`/model`, `/login`, ...) and their output are ignored, so the name comes from the first thing you actually typed.\n\n### Slash Commands (inside Claude Code)\n\n| Command | Description |\n|---------|-------------|\n| `/chat-namer:list` | List all conversations with names |\n| `/chat-namer:search <query>` | Search conversations by keyword |\n| `/chat-namer:rename` | Rename a conversation |\n| `/chat-namer:resume <query>` | Find a conversation and get the `claude --resume` command |\n| `/chat-namer:auto-name` | Auto-name all unnamed conversations at once |\n\n### Resume Helper\n\nInstead of scrolling through UUIDs, find any conversation by keyword:\n\n```\n> /chat-namer:resume wolt\n\nFound 4 conversations matching \"wolt\":\n\n  1. [named] Wolt Automation - Camoufox\n     Mar 19 | 1088 msgs | c348d36f...\n\n  2. [named] Implement Wolt Purchases plan...\n     Feb 18 | 361 msgs | c0e56e5c...\n\nRun in a new terminal:\n  claude --resume c348d36f-8002-40ca-8523-17821d6a0bea\n```\n\n### CLI Usage\n\n```bash\nclaude-chat-namer              # Interactive mode (browse + rename)\nclaude-chat-namer list          # List all conversations\nclaude-chat-namer search \"wolt\" # Search by keyword\nclaude-chat-namer name c348 \"Wolt Automation\"  # Name by UUID prefix\nclaude-chat-namer unname c348   # Remove a name\nclaude-chat-namer auto          # Auto-name all unnamed\nclaude-chat-namer help          # Show all commands\n```\n\n## How it Works\n\n1. Scans `~/.claude/projects/` for conversation `.jsonl` files\n2. Reads the first user message to generate auto-names\n3. Stores names in a `chat-names.json` file (per project directory)\n4. **Never modifies conversation files** - names are separate metadata\n\n## Plugin Structure\n\n```\nclaude-chat-namer/\n├── .claude-plugin/\n│   ├── plugin.json           # Plugin manifest\n│   └── marketplace.json      # Marketplace manifest (lets you `claude plugin install` this repo)\n├── skills/\n│   ├── list/SKILL.md         # /chat-namer:list\n│   ├── search/SKILL.md       # /chat-namer:search\n│   ├── rename/SKILL.md       # /chat-namer:rename\n│   ├── resume/SKILL.md       # /chat-namer:resume\n│   └── auto-name/SKILL.md    # /chat-namer:auto-name\n├── hooks/\n│   └── hooks.json            # Stop hook for auto-naming\n├── scripts/\n│   ├── index.js              # Core API\n│   ├── cli.js                # CLI interface\n│   └── hook-auto-name.js     # Hook script\n├── test/\n│   └── smoke.sh              # End-to-end test against a throwaway HOME\n├── package.json\n└── README.md\n```\n\n## Development\n\n```bash\nbash test/smoke.sh          # runs the CLI + hook against fake transcripts\nclaude plugin validate .    # checks plugin.json / marketplace.json\n```\n\nCI runs the smoke test on Node 18, 20 and 22. See [CHANGELOG.md](CHANGELOG.md) for release notes.\n\n## Zero Dependencies\n\nUses only Node.js built-ins (`fs`, `path`, `os`, `readline`). No `npm install` needed.\n\n## License\n\nMIT\n",
  "bytes": 4641,
  "sha": "1d275613a4b004ec7f0113368cc18bc736085e188e5f23022ad0b8b1e25d774b",
  "repo_slug": "jamaalx/claude-chat-namer",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_jamaalx_claude_chat_namer_chat_namer_e282a1c9/readme"
}