Plugins for Claude Code — session lifecycle visibility, environment validation, and persistent tracking.
| Plugin | Version | Hook Event | Purpose |
|---|---|---|---|
| cc-visual-session | 0.1.0 | SessionStart, SessionEnd |
Session banner, status line, and summary |
| cc-halt-the-line | 0.1.0 | SessionStart |
Enforce CC_ENV matches detected runtime environment (blocks on mismatch) |
| 0.1.0 | SessionStart, Stop |
||
| cc-event-logs | 0.2.0 | All events | JSONL event log via cclog (requires cclog >= 0.2.0) |
lib/detect-env.sh — runtime environment detection shared by cc-visual-session and cc-halt-the-line. Copies are synced to each plugin via scripts/sync-lib.sh and drift is caught by .githooks/pre-commit.
Add the marketplace, then install each plugin at user scope:
# Add the marketplace
claude marketplace add https://github.com/tgrnd/carbon-copy
# Install plugins
claude plugin install cc-visual-session@carbon-copy --scope user
claude plugin install cc-halt-the-line@carbon-copy --scope user# Update the marketplace index
claude plugin marketplace update carbon-copy
# Update plugins
claude plugin update cc-visual-session@carbon-copy
claude plugin update cc-halt-the-line@carbon-copy# Lint all shell scripts (POSIX enforced via .shellcheckrc)
shellcheck lib/*.sh plugins/*/hooks/*.sh plugins/*/scripts/*.sh scripts/*.sh
# Run all tests
sh lib/detect-env.test.sh
sh plugins/cc-visual-session/hooks/session_start_test.sh
sh plugins/cc-visual-session/hooks/session_end_test.sh
sh plugins/cc-visual-session/scripts/statusline_test.sh
sh plugins/cc-halt-the-line/hooks/enforce-env.test.sh
# Sync shared lib to plugins
sh scripts/sync-lib.shThe pre-commit hook (.githooks/pre-commit) runs ShellCheck on staged .sh files and checks for shared lib drift. Set it up with:
git config core.hooksPath .githooksSee each plugin's README for details: cc-visual-session · cc-halt-the-line
Plugins are versioned independently. claude plugin update skips plugins whose version hasn't changed.
- Run all tests
- Bump
versionin each changed plugin'splugins/<name>/.claude-plugin/plugin.json - Update the matching entry in
.claude-plugin/marketplace.json(version, description if changed) - If a new plugin was added, add its entry to
marketplace.json - Commit:
git commit -m "release: <summary>" - Tag:
git tag v<version> - Push:
git push && git push --tags