Thank you for your interest in contributing to CLIO (Command Line Intelligence Orchestrator)!
# Clone the repository
git clone https://github.com/SyntheticAutonomicMind/CLIO.git
cd CLIO
# Check dependencies (pure Perl, minimal requirements)
./check-deps
# Install (optional - creates ~/.local/bin/clio symlink)
./install.sh
# Run CLIO
./clio --newlib/CLIO/Core/ # System core (APIs, workflow, config)
lib/CLIO/Tools/ # AI-callable tools
lib/CLIO/UI/ # Terminal UI (Chat, Markdown, Theme, Commands/)
lib/CLIO/Session/ # Session management
lib/CLIO/Memory/ # Context/memory system (YaRN, TokenEstimator)
lib/CLIO/Security/ # Auth, sandbox, secret redaction
lib/CLIO/Util/ # Utilities (JSON, PathResolver, YAML)
lib/CLIO/Coordination/ # Multi-agent broker/client
tests/unit/ # Unit tests (~88 tests)
tests/integration/ # Integration tests (~32 tests)
tests/e2e/ # End-to-end tests (~6 tests)
CLIO follows The Unbroken Method for human-AI collaboration. Key principles:
- Continuous Context - Maintain momentum through collaboration checkpoints
- Complete Ownership - If you find a bug, fix it
- Investigation First - Read code before changing it
- Root Cause Focus - Fix problems, not symptoms
- Complete Deliverables - Finish what you start
- Structured Handoffs - Document everything
- Learning from Failure - Document mistakes to prevent repeats
- Read the relevant code in
lib/CLIO/ - Check existing tests in
tests/unit/andtests/integration/ - Run syntax checks:
perl -I./lib -c lib/CLIO/Your/Module.pm
- Perl 5.32+ with
use strict; use warnings; use utf8; - 4 spaces indentation (never tabs)
- UTF-8 encoding for all files with
binmode(STDOUT, ':encoding(UTF-8)') - POD documentation for all modules
- Minimal CPAN dependencies - prefer core Perl modules
- CLIO::Util::JSON instead of
JSON::PPorJSON::XSdirectly - CLIO::Core::Logger for debug output (never bare
print STDERR) - Carp
croakfor errors (never baredie)
Follow conventional commit format:
type(scope): brief description
Problem: What was broken/incomplete
Solution: How you fixed it
Testing: How you verified the fix
Types: feat, fix, refactor, docs, test, chore
Before committing:
# Syntax check all modules
find lib -name "*.pm" -exec perl -I./lib -c {} \;
# Run all tests
perl tests/run_all_tests.pl --all
# Run specific unit test
perl -I./lib tests/unit/test_your_feature.pl
# Integration test
./clio --debug --input "test query" --exitThe test suite has ~126 tests across unit, integration, and e2e categories. All must pass before merging.
- Create
lib/CLIO/Tools/YourTool.pmextendingCLIO::Tools::Tool - Implement
get_tool_definition()(flat format:{name, description, parameters}) - Implement
route_operation()returning hashrefs (not JSON strings) - Register in
lib/CLIO/Tools/Registry.pm - Add tests in
tests/unit/test_yourtool.pl
- Create
lib/CLIO/UI/Commands/YourCommand.pmextendingCommands::Base - Use display helpers (
display_command_header,display_key_value, etc.) - Register in the command registry
- See COMMAND_OUTPUT_STANDARDS.md for formatting
- Add provider configuration in
lib/CLIO/Core/Providers.pm - Handle API differences in
lib/CLIO/Core/APIManager.pm - Add model capabilities
- Add tests
- Fork the repository
- Create a feature branch
- Make your changes with tests
- Ensure all tests pass (
perl tests/run_all_tests.pl --all) - Submit a PR with clear description
AGENTS.md- Technical reference for the codebasedocs/ARCHITECTURE.md- System architecture overviewdocs/DEVELOPER_GUIDE.md- Detailed development guidancedocs/STYLE_GUIDE.md- UI formatting standards
By contributing, you agree that your contributions will be licensed under the GPL-3.0 License.