Thanks for your interest in contributing to ccpm. This document covers the basics you need to get started.
- Fork the repo and clone your fork
- Install Go 1.22+ and Node.js 20+
- Build the CLI:
cd ccpm
go build -o ccpm .
./ccpm --version- Run the docs site locally:
cd docs
npm install
npm run devccpm/ Go CLI source code
cmd/ Cobra command definitions
internal/ Internal packages (config, credentials, vault, etc.)
docs/ Next.js documentation website
npm/ npm wrapper package (downloads the Go binary on install)
scripts/ Installation scripts
Two documents are load-bearing for non-trivial work:
- AGENTS.md — architectural briefing: core mental model, directory layout, merge precedence, invariants that must hold. Read this before changing anything that crosses packages or touches the merge stack.
- The CLI lives in
ccpm/. All Go code is there. - Run tests with
cd ccpm && go test ./... - Follow existing code style. No external linters are enforced, but keep it clean.
- If you add a new command, create a new file in
ccpm/cmd/following the existing pattern.
- The docs site lives in
docs/. It uses Next.js 16, React 19, and Tailwind v4. - Run
npm run devto start the dev server. - Run
npm run lintandnpx tsc --noEmitbefore submitting. - Components live in
docs/app/components/.
- The npm package in
npm/is a thin wrapper that downloads the correct Go binary onnpm install. - If you change
install.js, test locally withnpm pack && npm install -g ./ngcodes-ccpm-*.tgz.
- Create a feature branch from
main(git checkout -b feature/your-feature) - Make your changes
- Run tests and linting
- Write a clear commit message describing what you changed and why
- Open a PR against
main
Keep PRs focused. One feature or fix per PR is ideal. If you are planning a larger change, open an issue first to discuss the approach.
Open a GitHub issue with:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Your OS and ccpm version (
ccpm --version)
Be respectful. This is a small project and contributions of all sizes are welcome. No contribution is too small.
By contributing, you agree that your contributions will be licensed under the MIT License.