Skip to content

tgrnd/carbon-copy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

192 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Carbon Copy

Plugins for Claude Code — session lifecycle visibility, environment validation, and persistent tracking.

Plugins

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)
cc-loggers 0.1.0 SessionStart, Stop Audit trail logging — deprecated, use cc-event-logs
cc-event-logs 0.2.0 All events JSONL event log via cclog (requires cclog >= 0.2.0)

Shared Library

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.

Installation

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

Updating

# 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

Development

# 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.sh

The 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 .githooks

See each plugin's README for details: cc-visual-session · cc-halt-the-line

Releasing

Plugins are versioned independently. claude plugin update skips plugins whose version hasn't changed.

  1. Run all tests
  2. Bump version in each changed plugin's plugins/<name>/.claude-plugin/plugin.json
  3. Update the matching entry in .claude-plugin/marketplace.json (version, description if changed)
  4. If a new plugin was added, add its entry to marketplace.json
  5. Commit: git commit -m "release: <summary>"
  6. Tag: git tag v<version>
  7. Push: git push && git push --tags

About

Surface Environment-Aware Signals From your Agent

Topics

Resources

Stars

Watchers

Forks

Contributors