# OpenCode CLI Configuration This directory contains OpenCode configuration and tools for the MEV Bot project. ## 🚀 Quick Start Commands ### Essential Build & Test Commands ```bash # Build the MEV bot binary make build # Run all tests make test # Run tests with coverage make test-coverage # Run unit tests make test-unit # Run integration tests make test-integration # Run end-to-end tests make test-e2e # Check for Go modules issues go mod tidy && go mod verify # Run linter make lint # Run security analysis make security-audit ``` ### Development Workflow Commands ```bash # Setup development environment export ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" export ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" export METRICS_ENABLED="false" # Run with timeout for testing timeout 30 ./mev-bot start # Debug with verbose logging LOG_LEVEL=debug ./mev-bot start # Profile performance go tool pprof http://localhost:6060/debug/pprof/profile ``` ## OpenCode Commands Directory The `.opencode/commands/` directory contains predefined commands for common development tasks: - `implement-feature.md` - Implement new features with test coverage - `debug-code.md` - Debug issues in the codebase - `refactor-code.md` - Refactor existing code for better quality - `write-tests.md` - Write comprehensive tests - `code-review.md` - Perform code reviews ## OpenCode Settings The `.opencode/settings.json` file contains OpenCode's configuration: ```json { "languages": { "go": { "version": "1.24+", "testing_framework": "testing", "linting_tools": ["golangci-lint", "go vet", "go fmt"], "coverage_target": 90 }, "solidity": { "version": "^0.8.24", "testing_framework": "hardhat", "linting_tools": ["solhint", "slither"], "coverage_target": 95 }, "javascript": { "version": "LTS", "frameworks": ["vue", "vue-router", "pinia", "helia", "viem"], "testing_framework": "vitest", "linting_tools": ["eslint", "prettier"] } }, "testing": { "unit_test_coverage": 90, "integration_test_coverage": 80, "property_based_testing": true, "fuzz_testing": true, "benchmarking": true }, "quality": { "linting": true, "security_scanning": true, "dependency_checking": true, "documentation_required": true } } ``` ## 📋 Development Guidelines & Code Style ### Go Best Practices (1.24+) - **Error Handling**: Use Go's error wrapping with context: `fmt.Errorf("failed to process transaction: %w", err)` - **Concurrency Safety**: Use mutexes correctly to protect shared data - **Code Structure**: Follow idiomatic Go patterns and conventions - **Testing**: Write tests for all functions and methods with >90% coverage - **Performance**: Minimize memory allocations in hot paths ### Solidity Best Practices (^0.8.24) - **Security**: Implement proper access controls and validation - **Gas Optimization**: Optimize for minimal gas consumption - **Upgradeability**: Consider upgradeable contract patterns - **Testing**: Achieve >95% test coverage with property-based tests - **Documentation**: Document all public functions with NatSpec ### JavaScript/TypeScript Best Practices (Vue 3, Vue Router, Pinia, Helia, Viem) - **Component Design**: Use Vue 3 Composition API - **State Management**: Implement proper state management with Pinia - **Routing**: Follow Vue Router best practices - **P2P Integration**: Use Helia for decentralized data sharing - **Web3 Integration**: Integrate Viem for efficient Ethereum interactions ### Required Checks Before Commit ```bash # Run all checks before committing make test && make lint && go mod tidy # Security scan make security-audit # Dependency vulnerability check make dependency-check ``` ## OpenCode's Primary Focus Areas As OpenCode, you're particularly skilled at: 1. **Writing and Debugging Code** - Implementing clean, idiomatic code in Go, Solidity, and JavaScript - Debugging complex concurrency issues - Optimizing code for performance and readability 2. **Implementing Test Cases and Ensuring Code Quality** - Writing comprehensive unit and integration tests - Implementing property-based tests for mathematical functions - Creating performance benchmarks for critical paths 3. **Following Established Coding Patterns and Conventions** - Using appropriate design patterns for each language - Following idiomatic patterns and best practices - Implementing consistent error handling and logging 4. **Identifying and Fixing Bugs** - Debugging race conditions and concurrency issues - Identifying performance bottlenecks - Fixing precision errors in mathematical calculations 5. **Ensuring Code is Well-Structured and Readable** - Organizing code into logical packages with clear responsibilities - Using clear, descriptive naming conventions - Implementing proper abstraction and encapsulation ## 🛠 OpenCode Optimization Settings ### Workflow Preferences - **Always commit changes**: Use `git commit -am "descriptive message"` after significant changes - **Branch naming**: Use hyphens (`feat-add-new-parser`, `fix-memory-leak`) - **Context management**: Use `/compact` to manage long conversations - **Testing first**: Always write tests before implementation ### File Organization Preferences - **Go files**: Follow standard Go layout (cmd/, internal/, pkg/) - **Solidity files**: Place in `contracts/` directory with separate test files - **JavaScript files**: Follow Vue 3 project structure with components, views, and stores - **Test files**: Place alongside source files with appropriate suffixes ### Quality Assurance ```bash # Run comprehensive test suite make test-all # Run security audits make security-full # Check code quality make quality-check # Generate documentation make docs ``` ## 🔧 Environment Configuration ### Required Environment Variables ```bash # Arbitrum RPC Configuration export ARBITRUM_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" export ARBITRUM_WS_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" # Application Configuration export LOG_LEVEL="info" export METRICS_ENABLED="false" export METRICS_PORT="9090" # Development Configuration export GO_ENV="development" export DEBUG="true" # Frontend Configuration export VITE_APP_RPC_ENDPOINT="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" ``` ### Testing Environment Variables ```bash # Test Configuration export TEST_COVERAGE_TARGET=90 export TEST_TIMEOUT=30s export TEST_PARALLEL=4 # Solidity Testing export HARDHAT_NETWORK="hardhat" export FORKING_URL="wss://arbitrum-mainnet.core.chainstack.com/53c30e7a941160679fdcc396c894fc57" ``` ## 📝 Commit Message Conventions ### Format ``` type(scope): brief description - Detailed explanation of changes - Why the change was needed - Any breaking changes or migration notes 🤖 Generated with [OpenCode](https://opencode.example.com) Co-Authored-By: OpenCode ``` ### Types - `feat`: New feature implementation - `fix`: Bug fix - `perf`: Performance improvement - `refactor`: Code restructuring without feature changes - `test`: Adding or updating tests - `docs`: Documentation updates - `build`: Build system or dependency changes - `ci`: CI/CD pipeline changes - `contract`: Smart contract changes - `frontend`: Frontend/UI changes ## 🚨 Security Guidelines ### Never Commit - Private keys or wallet seeds - API keys or secrets - RPC endpoints with authentication - Personal configuration files ### Always Validate - Input parameters for all functions - Smart contract inputs and state changes - Web3 interactions and transactions - Memory allocations for bounds ### Security Commands ```bash # Scan for secrets git-secrets --scan # Security audit for Go code gosec ./... # Security audit for Solidity contracts slither . # Dependency vulnerabilities go list -json -m all | nancy sleuth # Check for hardcoded credentials grep -r "password\|secret\|key" --exclude-dir=.git . ```