Thank you for your interest in contributing! This document explains how to build, test, and submit changes.
# Clone the repository
git clone https://github.com/IstiN/dmtools-cli.git
cd dmtools-cli
# Copy the example env file and fill in your credentials
cp dmtools.env.example dmtools.env# Build all modules
./gradlew buildAll
# Build the core CLI fat JAR only
./gradlew :dmtools-core:shadowJar
# Install locally for development testing
./buildInstallLocal.sh# Unit tests (fast, no API calls — run these for every change)
./gradlew :dmtools-core:test
# Run a specific test class
./gradlew :dmtools-core:test --tests "ClassName.methodName"Note: Integration tests (
integrationTestsource set) make real API calls and require valid credentials. Do not run them in CI without credentials; they are excluded from the default build.
- Fork the repository and create a feature branch from
main. - Make your changes following the code style rules in
CLAUDE.md. - Add or update unit tests for any new logic.
- Verify all tests pass:
./gradlew :dmtools-core:test - Open a pull request with a clear description of what you changed and why.
For repository positioning, GitHub About metadata, release-facing keyword alignment, and the split between repo-backed updates and manual GitHub settings, use the canonical playbook in github-repository-discoverability-playbook.md.
See the step-by-step guide in CLAUDE.md under "Adding a New MCP Tool" and the full tool reference in docs/README-MCP.md.
- Use package imports — never fully-qualified class names (except for conflict resolution).
- No comments in Russian.
- No documentation comments unless explicitly requested.
- All new code must have unit tests using JUnit 5 + Mockito.
Please open a GitHub Issue with:
- A minimal reproduction case
- Your DMTools version (
./dmtools.sh --version) - Operating system and Java version
Use GitHub Discussions for questions and ideas.