Contributing to claude-code-harness
May 27, 2026 · View on GitHub
Thank you for your interest in contributing to claude-code-harness! This document provides guidelines for contributing.
How to Contribute
Reporting Issues
Security vulnerabilities are not normal issues. Follow SECURITY.md and do not include exploit details, secrets, tokens, or private data in public GitHub issues.
- Check if the issue already exists in GitHub Issues
- If not, create a new issue with:
- Clear title describing the problem
- Steps to reproduce
- Expected vs actual behavior
- Claude Code version and OS
Submitting Changes
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Test your changes locally
- Commit with clear messages:
git commit -m "feat: add new feature" - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request
Commit Message Format
We follow Conventional Commits:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesrefactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
Code Style
- Use clear, descriptive names
- Add comments for complex logic
- Keep commands/agents/skills focused on single responsibilities
Plugin Structure
claude-code-harness/
├── .claude-plugin/
│ ├── plugin.json # Plugin manifest
│ └── marketplace.json # Marketplace config
├── skills/ # Skills (primary - v2.17.0+)
├── agents/ # Subagents
├── hooks/ # Lifecycle hooks
├── templates/ # Template files
├── README.md
├── LICENSE
└── CONTRIBUTING.md
Note: As of v2.17.0, commands have been migrated to skills. Skills are the recommended approach for new functionality.
Adding a New Skill (Recommended)
- Create
skills/your-skill/SKILL.mdwith YAML frontmatter:--- name: your-skill description: "Description with trigger phrases. Use when... Do NOT load for..." allowed-tools: ["Read", "Write", "Edit", "Bash"] --- - Add supporting files to
skills/your-skill/references/if needed - Update README.md with the new skill
Adding a New Agent
- Create
agents/your-agent.md - Define the agent with YAML frontmatter
- Update README.md (recommended)
Note: agents/ are auto-discovered by Claude Code. You typically do not need to manually enumerate them in
plugin.json.
Version Management
Version is defined in two places that must stay in sync:
VERSION- Source of truth.claude-plugin/plugin.json- Used by plugin system
Normal feature/docs PRs should leave both files unchanged and record user-facing changes in CHANGELOG.md under [Unreleased].
Use a version bump only when you are intentionally cutting a release.
Version Scripts
# Check if versions are in sync
./scripts/sync-version.sh check
# Sync plugin.json to VERSION
./scripts/sync-version.sh sync
# Bump patch version for a release (e.g., 2.0.0 → 2.0.1)
./scripts/sync-version.sh bump
Release-only Versioning Policy
- Normal PRs: do not edit
VERSIONor.claude-plugin/plugin.json; add notes under[Unreleased] - Release work: run
./scripts/sync-version.sh bump, add a versionedCHANGELOG.mdentry, then create the tag / GitHub Release - The repo pre-commit hook only syncs
plugin.jsontoVERSIONwhen you intentionally edit release metadata; it does not auto-bump patch versions
Version Consistency Checks
- Local (recommended): run
./scripts/sync-version.sh checkbefore committing - CI (recommended): run
./tests/validate-plugin.shand./scripts/ci/check-consistency.shon PRs
CHANGELOG 記載ルール(必須)
Keep a Changelog フォーマットに準拠
各バージョンエントリには以下のセクションを使用:
## [X.Y.Z] - YYYY-MM-DD
### Added
- 新機能について
### Changed
- 既存機能の変更について
### Deprecated
- 間もなく削除される機能について
### Removed
- 削除された機能について
### Fixed
- バグ修正について
### Security
- 脆弱性に関する場合
#### Before/After(大きな変更時のみ)
| Before | After |
|--------|-------|
| 変更前の状態 | 変更後の状態 |
セクション使い分け:
| セクション | 使うとき |
|---|---|
| Added | 完全に新しい機能を追加したとき |
| Changed | 既存機能の動作や体験を変更したとき |
| Deprecated | 将来削除予定の機能を告知するとき |
| Removed | 機能やコマンドを削除したとき |
| Fixed | バグや不具合を修正したとき |
| Security | セキュリティ関連の修正をしたとき |
Before/After テーブル: 大きな体験変化(コマンド廃止・統合、ワークフロー変更、破壊的変更)があるときのみ追加。軽微な修正では省略可。
バージョン比較リンク: CHANGELOG.md 末尾に [X.Y.Z]: https://github.com/.../compare/vPREV...vX.Y.Z 形式で追加
Testing
Before submitting:
-
Validate plugin structure and consistency:
./tests/validate-plugin.sh ./scripts/ci/check-consistency.sh -
(Recommended) Enable pre-commit hooks (keep release metadata in sync without auto-bumping):
./scripts/install-git-hooks.shWindows users: Git hooks require Git for Windows which includes Git Bash. The hooks run automatically via Git Bash regardless of your shell (PowerShell, CMD, etc.).
-
Test locally in a separate project using
--plugin-dir:cd /path/to/your-project claude --plugin-dir /path/to/claude-code-harness -
Verify commands work as expected (
/help), and the core loop runs:/harness-init/plan-with-agent/work/harness-review
Questions?
- Open an issue for questions
- Check existing documentation
Thank you for contributing!