{"id":46549530,"url":"https://github.com/brianruggieri/claude-code-pulse","last_synced_at":"2026-03-07T03:04:19.616Z","repository":{"id":341448366,"uuid":"1170117865","full_name":"brianruggieri/claude-code-pulse","owner":"brianruggieri","description":"Dynamic terminal titles for Claude Code CLI — see what each agent is doing at a glance","archived":false,"fork":false,"pushed_at":"2026-03-05T05:53:53.000Z","size":11986,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-05T06:33:55.588Z","etag":null,"topics":["ai-tools","bash","claude","claude-code","cli","developer-tools","iterm2","pane-titles","productivity","terminal","terminal-title","tmux"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brianruggieri.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-01T18:16:46.000Z","updated_at":"2026-03-05T01:08:38.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/brianruggieri/claude-code-pulse","commit_stats":null,"previous_names":["brianruggieri/claude-pane-pulse","brianruggieri/claude-code-pulse"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/brianruggieri/claude-code-pulse","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianruggieri%2Fclaude-code-pulse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianruggieri%2Fclaude-code-pulse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianruggieri%2Fclaude-code-pulse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianruggieri%2Fclaude-code-pulse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brianruggieri","download_url":"https://codeload.github.com/brianruggieri/claude-code-pulse/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brianruggieri%2Fclaude-code-pulse/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30206343,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-06T19:07:06.838Z","status":"online","status_checked_at":"2026-03-07T02:00:06.765Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-tools","bash","claude","claude-code","cli","developer-tools","iterm2","pane-titles","productivity","terminal","terminal-title","tmux"],"created_at":"2026-03-07T03:04:18.685Z","updated_at":"2026-03-07T03:04:19.592Z","avatar_url":"https://github.com/brianruggieri.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **C**laude **C**ode **P**ulse \u0026nbsp;`ccp`\n\n[![CI](https://github.com/brianruggieri/claude-code-pulse/actions/workflows/ci.yml/badge.svg)](https://github.com/brianruggieri/claude-code-pulse/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![macOS](https://img.shields.io/badge/macOS-Sonoma+-blue.svg)](https://www.apple.com/macos/)\n[![Bash](https://img.shields.io/badge/bash-3.2+-green.svg)](https://www.gnu.org/software/bash/)\n\n`ccp` wraps the Claude Code CLI so your terminal pane titles show what Claude is actually doing. Just run `ccp` and it reads your git branch, figures out a title, and keeps the pane updated in real time as Claude edits, builds, tests, and commits.\n\n![ccp live demo: pane title cycling through Thinking, Reading, Editing, Testing, Tests passed, Committed, and Standing by](docs/screenshots/demo.apng)\n\n### Before ccp\n\nGeneric titles. You have no idea what's happening in each pane.\n\n![Before: four iTerm2 split panes showing generic \"project — claude\" titles with no task or status information](docs/screenshots/before.png)\n\n### With ccp\n\nEach pane title shows the project, branch, current task, and live status — independently updated as Claude works.\n\n![After: four iTerm2 split panes with ccp titles showing \"project (branch) | task | status\" — Editing, Testing, Building, Reading](docs/screenshots/after.png)\n\n\u003e **iTerm2 note:** ccp writes to OSC 1 (the per-pane icon title) so every split pane gets its own independent live title. No two panes share a title bar. See [Terminal Support](#terminal-support) for how other terminals compare.\n\n```\nmy-app (main) | Fix auth bug | ✏️ Editing\nmy-app (main) | Fix auth bug | 🧪 Testing\nmy-app (main) | Fix auth bug | ✅ Tests passed\nmy-app (main) | Fix auth bug | 💾 Committed\nmy-app (main) | Fix auth bug | ☕ Recharging\n```\n\n## Features\n\n- **Auto-title from git**. `ccp` reads the current branch and generates a clean title automatically. `pr/89-fix-auth` becomes `PR #89 - fix auth`, `feature/new-login` becomes `Feature: new login`, and so on.\n- **Live status updates**. The title updates as Claude works. Editing, testing, building, pushing, all of it. Branch name refreshes live too — if Claude runs `git checkout`, the title reflects the new branch within one polling cycle.\n- **Idle phrase cycling**. 10 different idle phrases cycle on each conversation turn so you can see at a glance whether a pane just went idle or has been sitting for a while.\n- **Welcome on startup**. Shows `👋 Welcome back, \u003cname\u003e` when you open a pane, before you've typed anything.\n- **Priority-based display**. Errors always show first. Completions (tests passed, committed) immediately override whatever else is showing.\n- **Hook-based**. Uses Claude Code's own hook events for status. No output parsing, no regex, just structured JSON.\n- **Session tracking**. Save and re-open sessions by title with `--goto`.\n- **AI task summaries**. `--ai-context` refines your prompt into a clean 3-5 word label shown in the title. Two strategies: `haiku` (separate claude-haiku call, fully invisible) or `inline` (zero extra API calls, uses the already-outgoing session). Both are opt-in.\n- **Tested on iTerm2, Terminal.app, and tmux**. Detection logic for WezTerm, Ghostty, and Kitty is included but unverified.\n- **Full Claude passthrough**. Every Claude Code flag works exactly as expected.\n\n## Quick Start\n\n```bash\n# Install\ngit clone https://github.com/brianruggieri/claude-code-pulse.git\ncd claude-code-pulse\n./install.sh\n\n# Auto-detect title from your current branch\nccp\n\n# Or give it a custom title\nccp \"fixing the login bug\"\n\n# Quick formats\nccp --pr 89 \"Fix auth bug\"\nccp --feature \"New login flow\"\nccp --bug \"Fix crash on startup\"\n\n# Go back to a previous session\nccp --goto \"PR #89\"\n\n# Claude flags pass straight through\nccp -c                                  # resume last conversation\nccp --model opus \"My task\"\nccp --permission-mode bypassPermissions\n\n# AI-summarized task labels in the title (opt-in, uses your subscription)\nccp --ai-context \"Fix the auth bug\"\n\n# Inline strategy — zero extra API calls (one echo visible per session)\nccp --ai-context --ai-context-strategy inline \"Fix the auth bug\"\n\n# Debug mode — structured JSONL logging + live Pulse Monitor (iTerm2: auto-opens in split pane)\nccp --debug-ccp \"Fix the auth bug\"\n```\n\n\u003e See [AI Task Summaries](#ai-task-summaries) for the `--ai-context` flag and strategy options.\n\n## Installation\n\n**Prerequisites:**\n- macOS Sonoma or later\n- bash 3.2+ (ships with macOS)\n- jq: `brew install jq`\n- Claude Code CLI: [claude.ai](https://claude.ai)\n\n```bash\ngit clone https://github.com/brianruggieri/claude-code-pulse.git\ncd claude-code-pulse\n./install.sh\n```\n\nInstalls to `~/.local/share/ccp/` and symlinks `~/bin/ccp`.\n\n## Usage\n\n### Auto-title (the default)\n\nRun `ccp` with no arguments. It reads the branch name and builds a title:\n\n| Branch | Title |\n|--------|-------|\n| `pr/89-fix-auth` | `PR #89 - fix auth` |\n| `pull/89-fix-auth` | `PR #89 - fix auth` |\n| `issue/12-refactor-api` | `Issue #12 - refactor api` |\n| `fix/12-crash` | `Issue #12 - crash` |\n| `bug/12-crash` | `Issue #12 - crash` |\n| `feature/new-login` | `Feature: new login` |\n| `main` or anything else | `project-name (branch)` |\n\nNo git repo? Falls back to the current directory name.\n\n### Custom title\n\n```bash\nccp \"fixing the login bug\"\n```\n\n### Quick format helpers\n\n```bash\nccp --pr 89 \"Fix memory leak\"        # PR #89 - Fix memory leak\nccp --issue 12 \"Refactor API\"        # Issue #12 - Refactor API\nccp --feature \"OAuth integration\"    # Feature: OAuth integration\nccp --bug \"Login crash on iOS\"       # Bug: Login crash on iOS\nccp --refactor \"Clean up auth\"       # Refactor: Clean up auth\n```\n\n### Working directory\n\n```bash\nccp \"PR #89\" ~/projects/my-app\n```\n\n`ccp` will `cd` into that directory before launching Claude.\n\n## Title Lifecycle\n\n```\nStartup     my-app (main) | 👋 Welcome back, Brian\n-\u003e type     my-app (main) | fix the login bug | 💤 Idle\n-\u003e reading  my-app (main) | fix the login bug | 📖 Reading\n-\u003e editing  my-app (main) | fix the login bug | ✏️ Editing\n-\u003e testing  my-app (main) | fix the login bug | 🧪 Testing\n-\u003e passed   my-app (main) | fix the login bug | ✅ Tests passed\n-\u003e commit   my-app (main) | fix the login bug | 💾 Committed\n-\u003e pushing  my-app (main) | fix the login bug | ⬆️ Pushing\n-\u003e idle     my-app (main) | fix the login bug | ☕ Recharging\n```\n\n**Startup.** Before you send anything, the pane shows the welcome message.\n\n**Task summary.** Appears as soon as you send a message. Shows the first words of your prompt right away, then updates to a cleaner 3-5 word summary if `--ai-context` is on.\n\n**Status.** Updates based on what Claude is actually doing. When Claude finishes, the status clears to an idle phrase.\n\n**Idle phrases.** Each time Claude finishes responding, the idle phrase advances. After seeing `☕ Recharging` you know the pane just went idle. After seeing `🫡 Standing by` you know it's been a while.\n\n`💤 Idle` · `☕ Recharging` · `🧘 Centering` · `🎯 Ready` · `🫡 Standing by` · `💡 Listening` · `🌿 At rest` · `👀 Watching` · `🌊 Drifting` · `✨ Floating`\n\n## Status Reference\n\n### Both profiles\n\n| Icon | Status | What triggered it | Priority |\n|------|--------|-------------------|----------|\n| 🐛 | Error | Any tool fails | 100 |\n| ❌ | Tests failed | Test command exits non-zero | 90 |\n| ⏸️ | Awaiting approval | Permission request | 88 |\n| 🙋 | Input needed | Notification requires action | 85 |\n| 🔨 | Building | webpack, tsc, cargo build, make, gradle, etc. | 80 |\n| 🧪 | Testing | jest, vitest, pytest, mocha, rspec, go test, etc. | 80 |\n| 📦 | Installing | npm install, pip install, yarn add, cargo add | 80 |\n| ⬆️ | Pushing | git push | 75 |\n| ⬇️ | Pulling | git pull | 75 |\n| 🔀 | Merging | git merge | 75 |\n| 🤖 | Delegating | Task or Agent tool use | 70 |\n| 🐳 | Docker | Any docker command | 70 |\n| ✏️ | Editing | Edit, Write, MultiEdit, NotebookEdit | 65 |\n| ✅ | Tests passed | `N tests passed` in Bash output | 60 |\n| 💾 | Committed | git commit output | 60 |\n| 🏁 | Completed | TaskCompleted or terminal SessionEnd | 60 |\n| 📖 | Reading | Read, Glob, Grep | 55 |\n| 🌐 | Browsing | WebFetch, WebSearch | 55 |\n| 🖥️ | Running | Any other Bash command | 55 |\n| 🔧 | *ToolName* | Unknown tool (shows the actual tool name) | 50 |\n\nHigher priority always wins. The one exception: completion events (✅, 💾, 🏁) override any active status immediately, regardless of priority.\n\n### Verbose-only\n\nWith `--status-profile verbose`, lifecycle events also show up:\n\n| Icon | Status | Event | Priority |\n|------|--------|-------|----------|\n| 🚀 | Session started | SessionStart | 52 |\n| 🧠 | Compacting | PreCompact | 52 |\n| 🤖 | Subagent started | SubagentStart | 52 |\n| ✅ | Subagent finished | SubagentStop | 52 |\n| 👥 | Teammate idle | TeammateIdle | 52 |\n| ⚙️ | Config changed | ConfigChange | 52 |\n| 🌿 | Worktree created | WorktreeCreate | 52 |\n| 🧹 | Worktree removed | WorktreeRemove | 52 |\n| 🔔 | *EventName* | Any other event | 52 |\n\n## Status Profiles\n\n```bash\n# Default: high-signal statuses only\nccp \"PR #89\"\n\n# All events including lifecycle, subagents, worktrees, config\nccp --status-profile verbose \"PR #89\"\n\n# Set a default in your shell\nexport CCP_STATUS_PROFILE=verbose\n```\n\nPrecedence: `--status-profile` flag \u003e `CCP_STATUS_PROFILE` env var \u003e `quiet` default.\n\n## AI Task Summaries\n\nWith `--ai-context`, ccp distills your prompt into a clean 3-5 word label shown in the title. Without it, the first words of your prompt show as-is.\n\nTwo strategies are available:\n\n| | `haiku` (default) | `inline` |\n|---|---|---|\n| Extra API calls | 1 per prompt | 0 |\n| Visible to user | No | One `echo` per session |\n| Summary context | Prompt text only | Full codebase + history |\n| Reliability | High | Model-dependent |\n\n```bash\n# Haiku strategy (default) — invisible, uses your subscription\nccp --ai-context \"PR #89 - Fix auth\"\n\n# Inline strategy — zero extra API calls, one echo visible per session\nccp --ai-context --ai-context-strategy inline \"PR #89 - Fix auth\"\n\n# Always on, via environment variables\nexport CCP_ENABLE_AI_CONTEXT=true\nexport CCP_AI_CONTEXT_STRATEGY=inline   # optional, default is haiku\n```\n\nSee [docs/ai-context.md](docs/ai-context.md) for the full trade-off analysis.\n\n## Claude Flag Passthrough\n\nEvery Claude Code flag passes straight through to `claude`:\n\n```bash\nccp -c                                      # resume last conversation\nccp -r abc-123                              # resume by session ID\nccp --model opus \"My task\"\nccp --model claude-sonnet-4-6 \"My task\"\nccp --permission-mode bypassPermissions\nccp --permission-mode acceptEdits\nccp --effort high \"Big refactor\"\nccp -w feat-login \"Fix login\"               # create git worktree\nccp --system-prompt \"Be terse\" \"My task\"\nccp --append-system-prompt \"Use TypeScript\"\nccp --add-dir ~/shared/lib\nccp --allowedTools Bash Edit Read\nccp --mcp-config ./mcp.json\nccp --dangerously-skip-permissions\nccp \"My task\" -- --resume abc123            # explicit passthrough with --\n```\n\nAny unrecognized `-*` flag is also forwarded, so new Claude flags just work.\n\n### Full forwarded flag list\n\n**No value:**\n`-c` / `--continue`, `--dangerously-skip-permissions`, `--allow-dangerously-skip-permissions`, `--verbose`, `--ide`, `--no-ide`, `--fork-session`, `--chrome`, `--no-chrome`, `--no-session-persistence`, `--include-partial-messages`, `--replay-user-messages`, `--strict-mcp-config`, `--mcp-debug`\n\n**Required value:**\n`--model`, `--permission-mode`, `--effort`, `--system-prompt`, `--append-system-prompt`, `--debug-file`, `--session-id`, `--output-format`, `--input-format`, `--settings`, `--setting-sources`, `--fallback-model`, `--max-budget-usd`, `--json-schema`, `--agent`\n\n**Optional value:**\n`-r` / `--resume [ID]`, `--from-pr [VALUE]`, `-w` / `--worktree [NAME]`, `-d` / `--debug [FILTER]`\n\n**One or more values:**\n`--add-dir`, `--allowedTools` / `--allowed-tools`, `--disallowedTools` / `--disallowed-tools`, `--mcp-config`, `--tools`, `--betas`, `--plugin-dir`, `--file`, `--agents`\n\n## Session Management\n\n```bash\n# List active sessions\nccp --list\n\n# Jump back to a previous session's directory\nccp --goto \"auth\"           # substring match\nccp --goto \"PR #89\"\n```\n\nSessions are saved to `~/.config/claude-code-pulse/sessions.json` and cleaned up on exit.\n\n`--goto` jumps to the session's saved working directory and launches Claude there. It doesn't resume a conversation. For that, use Claude's own flags:\n\n```bash\nccp -c                      # resume last conversation\nccp --resume abc-123        # resume by session ID\n```\n\n## Debugging \u0026 Diagnostics\n\n### `--debug-ccp`\n\n```bash\nccp --debug-ccp \"PR #89 - Fix auth\"\n\n# Always on via environment variable\nexport CCP_DEBUG=true\n```\n\nEnables structured JSONL logging. Each hook event, status change, and AI summary is written as a JSON line to:\n\n```\n~/.config/claude-code-pulse/logs/debug.\u003ctimestamp\u003e.\u003cpid\u003e.jsonl\n```\n\nOld log files from dead sessions are pruned automatically on startup.\n\n**In iTerm2**, `--debug-ccp` also auto-opens the Pulse Monitor in a horizontal split pane. You don't need to run `ccp-watch` manually — it launches automatically and connects to the session log.\n\n### `ccp-watch` — Pulse Monitor\n\n`ccp-watch` is a live debug monitor that streams events from a JSONL log and flags issues in real time.\n\n```bash\n# Watch the latest debug log (auto-detects)\nccp-watch\n\n# Watch a specific log file\nccp-watch ~/.config/claude-code-pulse/logs/debug.20260301-120000.12345.jsonl\n\n# List all available debug logs\nccp-watch --list\n```\n\nWhat it monitors:\n\n| Check | What it catches |\n|-------|----------------|\n| **Status changes** | Every status transition as it happens |\n| **AI summaries** | Delivery confirmation (`N/N delivered`) |\n| **Stuck detection** | Status held \u003e45s before changing |\n| **Event gaps** | Silence between events \u003e120s |\n| **Status mismatches** | Tool fired but wrong status was set |\n| **System messages** | `\u003ctask-notification\u003e` and `\u003ccontext\u003e` payloads filtered from title |\n| **Title anomalies** | Malformed title strings |\n| **Session summary** | Total events, errors, and summary delivery rate at session end |\n\nThe pane title updates to `🩺 Pulse Monitor — \u003cproject\u003e` when a session connects.\n\n### JSONL event format\n\nEach line in the debug log is a JSON object:\n\n```json\n{\"ts\":\"2026-03-01T12:00:00.000Z\",\"src\":\"session\",\"pid\":\"12345\",\"event\":\"session_start\",\"title\":\"PR #89 - Fix auth\",\"dir\":\"/my/project\",\"profile\":\"quiet\",\"ai_context\":\"false\"}\n{\"ts\":\"2026-03-01T12:00:01.000Z\",\"src\":\"hook\",\"mode\":\"pre-tool\",\"pid\":\"12345\",\"event\":\"status_set\",\"status\":\"✏️ Editing\",\"tool\":\"Edit\"}\n{\"ts\":\"2026-03-01T12:00:02.000Z\",\"src\":\"hook\",\"mode\":\"post-tool\",\"pid\":\"12345\",\"event\":\"status_set\",\"status\":\"✅ Tests passed\"}\n{\"ts\":\"2026-03-01T12:00:03.000Z\",\"src\":\"session\",\"pid\":\"12345\",\"event\":\"session_end\"}\n```\n\nKey fields: `ts` (ISO 8601), `src` (`session` or `hook`), `mode` (hook mode), `pid`, `event`, `status`, `tool`, `summary`.\n\n## Terminal Support\n\nTested on:\n\n| Terminal | Notes |\n|----------|-------|\n| **iTerm2** | Per-pane title (OSC 1). Each split pane updates independently. The primary target. |\n| **Terminal.app** | Window title (OSC 2). |\n| **tmux 2.9+** | Per-pane title via `select-pane -T` plus OSC 1 passthrough. |\n| **tmux \u003c 2.9** | Window rename via `rename-window`. No per-pane title API. |\n\nDetection logic for WezTerm, Ghostty, and Kitty exists in `lib/title.sh` but these have not been verified. If you use one of these terminals, feedback is welcome.\n\n## Multi-Pane Workflow\n\nOpen four panes, run a session in each:\n\n```bash\nccp --pr 89 \"Fix auth\"\nccp --issue 12 \"API tests\"\nccp --feature \"OAuth\"\nccp --bug \"Login crash\"\n```\n\nEach pane title updates on its own:\n\n```\nmy-app (pr/89-fix-auth)      | fix auth   | ✏️ Editing\nmy-app (issue/12-api-tests)  | api tests  | 🧪 Testing\nmy-app (feat-oauth)          | oauth      | ✅ Tests passed\nmy-app (bug/login-crash)     | login bug  | ⬆️ Pushing\n```\n\n![iTerm2 4-pane split with ccp — each pane showing its own live project, branch, task, and status](docs/screenshots/after.png)\n\n## Options Reference\n\n### ccp options\n\n| Option | Description |\n|--------|-------------|\n| `TITLE` | Task title (first positional arg) |\n| `DIRECTORY` | Working directory (second positional arg, must be an existing path) |\n| `--pr N DESC` | Quick format: `PR #N - DESC` |\n| `--issue N DESC` | Quick format: `Issue #N - DESC` |\n| `--feature DESC` | Quick format: `Feature: DESC` |\n| `--bug DESC` | Quick format: `Bug: DESC` |\n| `--refactor DESC` | Quick format: `Refactor: DESC` |\n| `--auto-title` | Auto-detect title from git branch (this is the default) |\n| `--no-dynamic` | Static title only, no live updates |\n| `--status-profile quiet\\|verbose` | Which events to surface (default: `quiet`) |\n| `--ai-context` | Summarize prompts into a 3-5 word title label (opt-in) |\n| `--ai-context-strategy haiku\\|inline` | Summary strategy: `haiku` (default, invisible) or `inline` (zero extra API calls) |\n| `--debug-ccp` | Structured JSONL debug logging to `~/.config/claude-code-pulse/logs/`; auto-opens Pulse Monitor in iTerm2 |\n| `--goto TITLE` | Re-open a previous session by title |\n| `--list`, `-l` | List active ccp sessions |\n| `--help`, `-h` | Show help |\n| `--version`, `-v` | Show version |\n| `--` | Everything after this goes directly to Claude |\n| any `-*` flag | Unknown flags are forwarded to Claude |\n\n### Environment variables\n\n| Variable | Default | Description |\n|----------|---------|-------------|\n| `CCP_STATUS_PROFILE` | `quiet` | Default status profile |\n| `CCP_ENABLE_AI_CONTEXT` | `false` | Always-on AI prompt summarization |\n| `CCP_AI_CONTEXT_STRATEGY` | `haiku` | Summary strategy: `haiku` or `inline` |\n| `CCP_DEBUG` | `false` | Always-on structured JSONL debug logging |\n\n## Documentation\n\n- [Usage Guide](docs/usage.md)\n- [Dynamic Titles](docs/dynamic-titles.md)\n- [Hook Integration](docs/hooks.md)\n- [AI Context Summarization](docs/ai-context.md)\n- [Debugging \u0026 Diagnostics](#debugging--diagnostics)\n- [Installation Guide](docs/installation.md)\n- [Contributing](CONTRIBUTING.md)\n\n## Contributing\n\nContributions welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for setup and guidelines.\n\n```bash\n# Fork and clone\ngit clone https://github.com/YOUR_USERNAME/claude-code-pulse.git\n\n# Create feature branch\ngit checkout -b feature/amazing-feature\ngit commit -m 'feat: add amazing feature'\ngit push origin feature/amazing-feature\n```\n\n## License\n\nMIT © Brian Ruggieri. See [LICENSE](LICENSE).\n\n## Acknowledgments\n\nBuilt for [Claude Code](https://code.claude.com/) by Anthropic. Inspired by the need to keep track of what's happening across multiple concurrent agents.\n\n---\n\n**Star ⭐ this repo if you find it useful!**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianruggieri%2Fclaude-code-pulse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrianruggieri%2Fclaude-code-pulse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianruggieri%2Fclaude-code-pulse/lists"}