I've recently published ccmd, a command-line tool I built to help manage Claude Code commands (slash commands, like /migrate-db, /seed, /hello-world, etc.). If you're using Claude Code regularly and creating custom prompts, you’ve probably faced the same issue I did: managing and reusing these commands across different projects gets messy quickly.
The idea is to treat commands as versioned packages—similar to how you manage dependencies with tools like npm, pip, or go mod.
Why I Built It
I love using Claude Code, but I found myself copy-pasting .md files into each repo just to reuse a command. Worse, if I wanted to update one of them, I had no visibility on where else that command was being used. I wanted a way to:
- Version control my prompts
- Reuse the same command in multiple projects
- Easily install/remove/update them
- Keep project directories clean
So, I built this tool to do just that.
Installing
You can get started in three ways:
Option 1: via npm (Recommended)
Assuming you have Node.js installed:
npm install -g @gifflet/ccmd
This is the easiest and most portable method, as more users typically have Node.js available than Go.
Option 2: via Go
If you prefer or already use Go:
go install github.com/gifflet/ccmd/cmd/ccmd@latest
Option 3: via Release Page
If you don’t want to install via npm or Go, you can grab a precompiled binary:
👉 Head over to the Releases page and download the executable for your OS (Windows, macOS, Linux). Make sure it’s executable and available in your PATH.
Basic Usage
Inside any Claude-enabled project:
ccmd init # sets up a ccmd.yaml
ccmd install <git-url> # installs a command
ccmd list # see what's installed
ccmd update <name> # update a specific command
ccmd remove <name> # remove a command
For example:
ccmd install gifflet/hello-world
That installs the command into .claude/commands/, where Claude Code can detect and run it as /hello-world.
Creating Your Own Commands
To publish your own slash command:
mkdir my-command && cd my-command
ccmd init
# Fill in the interactive prompts
Add your index.md (or other entrypoint), commit, and push to GitHub. Then others can install it via:
ccmd install https://github.com/your-user/my-command
Thoughts on Prompts as Code
One of my motivations here is to treat markdown command files as real software artifacts. They deserve:
- Versioning
- Reuse
- Dependency management
- Independent evolution from the main repo
This tool helps make that possible.
If you'd like to try it or contribute, the repo is here:
👉 https://github.com/gifflet/ccmd
Feedback, PRs, or ideas are always welcome!
Top comments (0)