Thanks for considering a contribution. This document covers the essentials — for extended guidance, see docs.humanbound.ai/community/contributing.
git clone https://github.com/humanbound/plugins.git
cd plugins
pre-commit install # wire up the local hooks
# To dev a plugin in Claude Code: symlink into local plugins dir
mkdir -p ~/.claude/plugins/local
ln -s "$PWD/plugins/humanbound-test" ~/.claude/plugins/local/humanbound-testOpen Claude Code; the /humanbound-test:* commands load from your working copy.
For cross-cutting conventions that apply to every public Humanbound repo
(README skeleton, CHANGELOG format, governance files, CI scaffolding, tone),
see humanbound/.github REPO_STANDARDS.
This is a Claude Code plugin marketplace with each plugin under
plugins/<name>/. The umbrella manifest lives at
.claude-plugin/marketplace.json. Each plugin ships two manifests to
support both Claude Code and Cursor:
| Path | Read by |
|---|---|
plugins/<name>/.claude-plugin/plugin.json |
Claude Code |
plugins/<name>/.cursor-plugin/plugin.json |
Cursor |
plugins/<name>/mcp.json |
Cursor (top-level MCP autoload) |
plugins/<name>/hooks/hooks.json |
Claude Code (PascalCase events) |
plugins/<name>/hooks/hooks-cursor.json |
Cursor (camelCase events) |
Keep the two manifests structurally similar but not identical —
Cursor uses different event names and does not expand
${CLAUDE_PLUGIN_ROOT}. See plugins/humanbound-test/hooks/hooks-cursor.json
for the canonical Cursor hooks shape.
Bugs, feature requests, and questions all live in GitHub Issues.
Do not file security issues publicly. See SECURITY.md.
Every external contribution must be covered by the Humanbound Contributor License Agreement. The first time you open a pull request, the CLAAssistant bot will comment with a one-line instruction to sign.
- Fork the repository and create a branch off
main - Make your changes — keep them focused (one concern per PR)
- Add or update plugin tests under
plugins/<name>/tests/ - Test the plugin in both Claude Code and Cursor (see Quick start)
- Update CHANGELOG.md under the
[Unreleased]section - Open a pull request
- Shell scripts:
bash,set -euo pipefailat top,shellcheckclean. Document deliberate exceptions inline — for instance, scripts that may run under sandboxed harnesses withHOMEunset drop-uand explain why in a comment (seescripts/start-mcp.sh,installing-humanbound-mcp/scripts/check-mcp.sh). - Python helper scripts: stdlib only where possible, ruff-compatible
- JSON / YAML / TOML: 2-space indent, trailing newline
- SPDX header on every new shell or Python file:
# SPDX-License-Identifier: Apache-2.0 # Copyright (c) 2024-2026 Humanbound .pre-commit-config.yamlenforces the above; runpre-commit installafter cloning
- Bash scripts get a smoke test under
tests/bash/(bats — assertion on stdout/exit code) - Python helpers get pytest coverage under
tests/python/ - CI runs both suites on every PR across Python 3.11 + 3.12 (see
.github/workflows/ci.yml) - Interactive flows (slash commands) are tested manually; document the manual test plan in the PR description
Maintainers cut releases on a rolling basis.
| Step | Who | What |
|---|---|---|
| PR review | Maintainer | Reviews code, tests, CHANGELOG |
Merge to main |
Maintainer | Squash merge |
Tag v-<plugin>-<version> |
Maintainer | e.g. v-humanbound-test-0.1.0 |
| GitHub Release | Maintainer | Created from CHANGELOG.md entry |
Versioning follows semver per plugin. The umbrella repo itself is not versioned.
- Discord — discord.gg/gQyXjVBF
- Discussions — on the GitHub repo
- Docs — docs.humanbound.ai
Participation is governed by our Code of Conduct. Violations can be reported privately to conduct@humanbound.ai.