Thanks for your interest in contributing! This guide covers how to get from a clone to a merged pull request.
By participating, you agree to abide by our Code of Conduct. All documentation, code, comments, and commit messages in this repository are written in English.
This repository uses bun as its package manager, pins Node via .nvmrc (v22), and vendors all plugins as git submodules.
git clone https://github.com/pleaseai/claude-code-plugins.git
cd claude-code-plugins
git submodule update --init --recursive # fetch plugin submodules
bun install # install dependenciesMake sure your Node version matches .nvmrc (e.g. via nvm use).
- Create a branch from
main(e.g.feat/short-descriptionorfix/issue-123). - Make focused changes — keep each pull request to one logical change.
- Run the checks below and make sure they pass.
- Open a pull request and fill out the template.
bun run lint # lint and format
bun run test # run the test suite
bun run build # ensure it buildsWhen you add, remove, or modify a plugin entry in .claude-plugin/marketplace.json,
regenerate the Codex/Cursor/Antigravity artifacts in the same change:
bun run plugins:multi-formatSee CLAUDE.md for the full plugin development guide.
We follow Conventional Commits: type(scope): subject, where type is one of feat, fix, docs, refactor, test, chore, etc. Breaking changes include a BREAKING CHANGE: footer. Versioning and the changelog are generated automatically from these messages, so accurate types matter.
- Reference the issue your PR addresses (e.g.
Closes #123). - Use a Conventional-Commit-style PR title — it becomes the squash-merge commit.
- Make sure CI is green before requesting review.
Open an issue using the bug report or feature request template. For security vulnerabilities, do not open a public issue — follow SECURITY.md.