First off, thank you for considering contributing to the Unified Thinking Server! It's people like you that make this project such a great tool.
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check existing issues as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps which reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed after following the steps
- Explain which behavior you expected to see instead and why
- Include details about your configuration and environment
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Provide specific examples to demonstrate the steps
- Describe the current behavior and explain which behavior you expected to see instead
- Explain why this enhancement would be useful
Please follow these steps to have your contribution considered:
- Fork the repo and create your branch from
main - If you've added code that should be tested, add tests
- If you've changed APIs, update the documentation
- Ensure the test suite passes
- Make sure your code follows the existing code style
- Issue that pull request!
-
Prerequisites
- Go 1.24 or higher
- Git
- Make (optional but recommended)
-
Clone the repository
git clone https://github.com/quanticsoul4772/unified-thinking.git cd unified-thinking -
Install dependencies
go mod download
-
Build the project
make build # or go build -o bin/unified-thinking ./cmd/server
# Run all tests
make test
# Run with coverage
make test-coverage
# Run specific package tests
go test -v ./internal/modes/
# Run with race detector
go test -race ./...We use standard Go formatting and linting:
- Run
gofmt -s -w .before committing - Run
golangci-lint runto check for common issues - Follow Go best practices and idioms
- Write clear, self-documenting code with comments where necessary
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
- Consider starting the commit message with an applicable emoji:
- 🎨
:art:when improving the format/structure of the code - ⚡
:zap:when improving performance - 🐛
:bug:when fixing a bug - ✨
:sparkles:when introducing new features - 📝
:memo:when writing docs - 🔧
:wrench:when updating configuration files - ✅
:white_check_mark:when adding tests - 🔒
:lock:when dealing with security
- 🎨
- Write unit tests for all new code
- Maintain or improve code coverage (currently at 73.9%)
- Test edge cases and error conditions
- Use table-driven tests where appropriate
- Mock external dependencies appropriately
unified-thinking/
├── cmd/server/ # Main entry point
├── internal/
│ ├── types/ # Core data structures
│ ├── storage/ # Storage implementations
│ ├── modes/ # Thinking mode implementations
│ ├── reasoning/ # Reasoning engines
│ ├── analysis/ # Analysis tools
│ ├── metacognition/ # Self-evaluation
│ ├── validation/ # Validation logic
│ ├── integration/ # Cross-mode integration
│ ├── orchestration/ # Workflow automation
│ ├── memory/ # Episodic memory
│ └── server/ # MCP server implementation
│ └── handlers/ # Request handlers
└── scripts/ # Build and validation scripts
We're particularly interested in contributions in these areas:
- New Thinking Modes: Implement additional cognitive reasoning patterns
- Performance Improvements: Optimize existing algorithms and data structures
- Test Coverage: Improve test coverage, especially for handlers (currently 47.2%)
- Documentation: Improve documentation, examples, and tutorials
- Bug Fixes: Help us squash bugs
- Cross-Platform Support: Improve support for Linux and macOS
- MCP Tool Extensions: Add new cognitive reasoning tools
If you need help, you can:
- Open an issue with the question label
- Check the documentation
- Review the technical architecture guide
Contributors who submit accepted pull requests will be added to our Contributors list (coming soon).
Thank you for contributing! 🎉