Skip to content

RonenMars/ccpm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ccpm — Claude Code Plugin Manager

A small TUI + CLI to manage the three Claude Code plugin repositories as a unit:

  • npm-registry-manager (plugin)
  • npm-package-owner (plugin)
  • claude-marketplace (catalog)

Built with Cobra + Bubble Tea + Lipgloss. Run it with no arguments for an interactive TUI, or use subcommands for scripting.

Why

These three repos move together. A version bump to a plugin has to be reflected in two files — the plugin's own plugin.json and the matching entry in the marketplace catalog's marketplace.json. Doing that by hand is exactly the kind of error-prone, easy-to-forget step that drifts. ccpm does it in one command, with a confirmation, and validates the JSON stays intact.

It also batches the boring stuff — status / pull / push / commit across all three at once — and handles release tagging.

Install

go install github.com/RonenMars/ccpm@latest

Or build from source:

git clone https://github.com/RonenMars/ccpm
cd ccpm
go build -o ccpm .
# move ccpm onto your PATH

How it finds the repos

Resolution order, per repo:

  1. Config override — explicit path in ~/.config/ccpm/config.json
  2. Auto-discovery — a sibling directory of the ccpm binary, or a sibling of your current working directory / its parent

In the common case where all four repos (the three managed + ccpm) share a parent directory, auto-discovery just works with zero setup.

Set an explicit path:

ccpm config --set npm-registry-manager=/abs/path/to/npm-registry-manager

Show what it found:

ccpm config

TUI

ccpm
Key Action
/ (j/k) Move selection
r Refresh git status
p Pull all (--ff-only)
P Push all
c Commit (prompts for a message; applies to dirty repos)
b Bump selected plugin's version (patch/minor/major) — updates plugin.json and the catalog
t Tag/release selected plugin (vX.Y.Z) and push the tag
q Quit

The bump and release actions show a confirmation before doing anything.

CLI

ccpm status                              # git status of all three
ccpm pull                                # git pull --ff-only on all
ccpm push                                # git push on all
ccpm commit "message"                    # stage+commit dirty repos
ccpm bump npm-package-owner minor        # bump version in plugin.json + catalog
ccpm release npm-package-owner           # tag vX.Y.Z and push
ccpm config                              # show resolved paths
ccpm config --set name=/path             # override a path

Add --yes / -y to bump and release to skip the confirmation (for scripts/CI).

The version-bump feature

This is the reason the tool exists. When you run:

ccpm bump npm-registry-manager patch

it:

  1. Reads the current version from npm-registry-manager/.claude-plugin/plugin.json
  2. Computes the next version (semver-aware; strips any prerelease suffix for the calc)
  3. Shows a plan and asks for confirmation
  4. On confirm, surgically edits two files:
    • the plugin's plugin.json version
    • the matching plugin entry's version inside claude-marketplace/.claude-plugin/marketplace.json
  5. Validates both files are still valid JSON before writing

The edits are string-level and key-order-preserving, so diffs are exactly one line per file — no reformatting noise, and no risk of reordering keys. Other plugins' entries in the catalog are left untouched.

Typical release flow

ccpm bump npm-package-owner patch        # 0.2.0 -> 0.2.1 in both files
ccpm commit "chore: release npm-package-owner 0.2.1"
ccpm push
ccpm release npm-package-owner           # tag v0.2.1, push tag

Notes

  • pull uses --ff-only to avoid surprise merge commits.
  • commit skips clean repos automatically.
  • release refuses if the tag already exists, so it's safe to re-run.
  • All git operations shell out to your system git, so your existing config, credentials, and hooks apply.

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors