- Updated README.md with complete feature documentation: * Added Hermes Agent × Claude Code × Ruflo × Opencode branding * Comprehensive feature list (24/7 bot, self-learning, voice I/O, self-evolve) * Multi-agent swarm system (9 agent roles, 3 topologies) * Plugin system (16 extension points) * Hook system (pre/post tool/AI/session) * Enhanced memory backend (JSON + LRU) * Full feature comparison table vs Hermes/Claude/Ruflo * Architecture diagrams * Usage examples for all commands - Updated package.json: * Bumped version to 2.0.0 * Added comprehensive metadata (author, license, repository) * Added keywords for discoverability * Added support/funding links - Added INSTALLATION.md: * Complete setup guide (5-minute quick start) * Detailed installation steps (Node.js, ffmpeg, Python, Vosk) * Telegram bot configuration * Webhook setup (ngrok + domain) * Systemd service installation * Troubleshooting section * Advanced setup (Docker, multiple instances, SSL) - Added CREDITS.md: * Core project credits (Hermes Agent, Claude Code, Ruflo, Opencode) * Technology libraries (grammy, Express, Winston, Vosk, etc.) * Special thanks to NousResearch, Anthropic, RuvNet * Third-party license attribution - Added CONTRIBUTING.md: * How to contribute (bugs, features, docs, tests) * Development guidelines (code style, commit messages) * Architecture guidelines (plugins, hooks, agents) * Testing requirements * Security guidelines * Bug report and feature request templates * PR process and code review All documentation now reflects the complete Ruflo integration with 1,977 lines of new code.
462 lines
9.3 KiB
Markdown
462 lines
9.3 KiB
Markdown
# Contributing to zCode CLI X
|
|
|
|
Thank you for your interest in contributing to zCode CLI X! This document provides guidelines and instructions for contributing.
|
|
|
|
## 🌟 How to Contribute
|
|
|
|
### Types of Contributions
|
|
|
|
We welcome many types of contributions:
|
|
|
|
- **Bug Reports** — Found a bug? Let us know!
|
|
- **Feature Requests** — Have an idea? Share it!
|
|
- **Code Changes** — Fix bugs, add features, improve performance
|
|
- **Documentation** — Improve README, add examples, fix typos
|
|
- **Tests** — Add test coverage for new features
|
|
- **Community Support** — Help others in issues and discussions
|
|
|
|
---
|
|
|
|
## 🚀 Quick Start for Contributors
|
|
|
|
### 1. Fork & Clone
|
|
|
|
```bash
|
|
# Fork the repo on GitHub, then clone:
|
|
git clone https://github.rommark.dev/admin/zCode-CLI-X.git
|
|
cd zCode-CLI-X
|
|
```
|
|
|
|
### 2. Install Dependencies
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
### 3. Run Smoke Tests
|
|
|
|
```bash
|
|
# Verify everything works
|
|
node test-ruflo-smoke.mjs
|
|
|
|
# Should show: 53/53 tests passing
|
|
```
|
|
|
|
### 4. Make Changes
|
|
|
|
Follow the guidelines below, then:
|
|
|
|
```bash
|
|
# Test your changes
|
|
npm test
|
|
|
|
# Commit with descriptive message
|
|
git commit -m "feat: add new feature"
|
|
```
|
|
|
|
### 5. Push & Create PR
|
|
|
|
```bash
|
|
git push origin main
|
|
|
|
# Create pull request on GitHub
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 Development Guidelines
|
|
|
|
### Code Style
|
|
|
|
- **JavaScript** — Use ES modules (`import`/`export`)
|
|
- **Naming** — `camelCase` for variables/functions, `PascalCase` for classes
|
|
- **Comments** — JSDoc for public APIs, inline comments for complex logic
|
|
- **Error handling** — Always handle errors, never ignore them
|
|
|
|
### Commit Messages
|
|
|
|
Follow [Conventional Commits](https://www.conventionalcommits.org/):
|
|
|
|
```bash
|
|
feat: add new feature
|
|
fix: bug fix
|
|
docs: documentation changes
|
|
style: formatting, missing semicolons (no code change)
|
|
refactor: code refactoring
|
|
test: adding or updating tests
|
|
chore: maintenance tasks (not user-facing)
|
|
```
|
|
|
|
**Examples**:
|
|
```bash
|
|
feat: add multi-agent swarm support
|
|
fix: resolve memory backend eviction bug
|
|
docs: update installation instructions
|
|
refactor: simplify plugin loading logic
|
|
test: add smoke tests for hook system
|
|
```
|
|
|
|
### Branch Naming
|
|
|
|
```bash
|
|
feat/new-feature
|
|
fix/bug-fix
|
|
docs/update-readme
|
|
refactor/code-improvement
|
|
test/add-tests
|
|
```
|
|
|
|
---
|
|
|
|
## 🏗️ Architecture Guidelines
|
|
|
|
### Plugin System
|
|
|
|
When adding new plugins:
|
|
|
|
1. **Define extension point** in `src/plugins/ExtensionPoints.js`
|
|
2. **Implement plugin** extending `BasePlugin` in `src/plugins/Plugin.js`
|
|
3. **Register in PluginManager** — Add to extension point routing
|
|
4. **Document** — Add to CREDITS.md or docs
|
|
|
|
**Example**:
|
|
```javascript
|
|
// src/plugins/MyPlugin.js
|
|
import { BasePlugin } from './Plugin.js';
|
|
|
|
export class MyPlugin extends BasePlugin {
|
|
name = 'my-plugin';
|
|
|
|
async initialize() {
|
|
console.log('MyPlugin initialized');
|
|
}
|
|
|
|
async shutdown() {
|
|
console.log('MyPlugin shut down');
|
|
}
|
|
}
|
|
```
|
|
|
|
### Hook System
|
|
|
|
When adding new hooks:
|
|
|
|
1. **Define hook type** in `src/bot/hooks.js`
|
|
2. **Register hook** with priority order
|
|
3. **Document** — Add to README.md
|
|
|
|
**Example**:
|
|
```javascript
|
|
// src/bot/hooks.js
|
|
export const HOOK_TYPES = {
|
|
TOOL_PRE: 'tool.pre',
|
|
TOOL_POST: 'tool.post',
|
|
AI_PRE: 'ai.pre',
|
|
AI_POST: 'ai.post',
|
|
// Add your custom hooks here
|
|
MY_CUSTOM_HOOK: 'my.custom.hook'
|
|
};
|
|
```
|
|
|
|
### Agent System
|
|
|
|
When adding new agent roles:
|
|
|
|
1. **Add to agents/index.js** — Define agent type
|
|
2. **Update system prompt** — Add agent description
|
|
3. **Document** — Add to README.md feature comparison table
|
|
|
|
**Example**:
|
|
```javascript
|
|
// src/agents/index.js
|
|
export const AGENT_TYPES = {
|
|
coder: {
|
|
id: 'coder',
|
|
name: 'Coder',
|
|
description: 'Implementation, debugging, refactoring'
|
|
},
|
|
// Add your new agent here
|
|
analyst: {
|
|
id: 'analyst',
|
|
name: 'Data Analyst',
|
|
description: 'Data analysis, visualization, insights'
|
|
}
|
|
};
|
|
```
|
|
|
|
---
|
|
|
|
## 🧪 Testing
|
|
|
|
### Run Smoke Tests
|
|
|
|
```bash
|
|
node test-ruflo-smoke.mjs
|
|
```
|
|
|
|
**Coverage**:
|
|
- ✅ PluginSystem: 10 tests
|
|
- ✅ HookSystem: 4 tests
|
|
- ✅ AgentSystem: 9 tests
|
|
- ✅ SwarmCoordinator: 12 tests
|
|
- ✅ AgentOrchestrator: 4 tests
|
|
- ✅ MemoryBackend: 14 tests
|
|
- **Total**: 53 tests
|
|
|
|
### Add New Tests
|
|
|
|
When adding new features, add tests:
|
|
|
|
```javascript
|
|
// test-my-feature.mjs
|
|
import { test } from 'node:test';
|
|
import assert from 'node:assert';
|
|
|
|
test('my feature works', async () => {
|
|
const result = await myFunction();
|
|
assert.strictEqual(result, expected);
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## 📚 Documentation
|
|
|
|
### README.md
|
|
|
|
Update README when:
|
|
- Adding new features
|
|
- Changing configuration options
|
|
- Updating installation steps
|
|
- Adding new agents/tools
|
|
|
|
### Architecture.md
|
|
|
|
Update ARCHITECTURE.md when:
|
|
- Changing system architecture
|
|
- Adding new components
|
|
- Modifying message flows
|
|
|
|
### CREDITS.md
|
|
|
|
Update CREDITS.md when:
|
|
- Adding new dependencies
|
|
- Acknowledging new contributors
|
|
- Updating third-party licenses
|
|
|
|
---
|
|
|
|
## 🔒 Security Guidelines
|
|
|
|
### Never Commit Secrets
|
|
|
|
**DO**:
|
|
```bash
|
|
# Use environment variables
|
|
ZAI_API_KEY=${ZAI_API_KEY}
|
|
TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
|
|
```
|
|
|
|
**DON'T**:
|
|
```bash
|
|
# Hardcoded secrets in code
|
|
const API_KEY = 'abc123'; // NEVER DO THIS
|
|
```
|
|
|
|
### Validate User Input
|
|
|
|
Always validate and sanitize user input:
|
|
```javascript
|
|
// Validate Telegram user ID
|
|
if (!/^\d+$/.validate(userId)) {
|
|
throw new Error('Invalid user ID');
|
|
}
|
|
```
|
|
|
|
### Protect Sensitive Files
|
|
|
|
Never modify these files via self-evolve:
|
|
- `SelfEvolveTool.js` — The safety system itself
|
|
- `stt.py` — Voice recognition bridge
|
|
- `.env` — Environment variables
|
|
- `package.json` — Dependencies
|
|
|
|
---
|
|
|
|
## 🐛 Bug Reports
|
|
|
|
When reporting a bug:
|
|
|
|
1. **Search existing issues** — Make sure it's not already reported
|
|
2. **Provide reproduction steps** — How to trigger the bug
|
|
3. **Include logs** — `journalctl --user -u zcode -f`
|
|
4. **Specify environment** — Node version, OS, configuration
|
|
5. **Expected vs actual behavior** — What should happen vs what does
|
|
|
|
**Example**:
|
|
```
|
|
**Bug**: Bot crashes on voice message
|
|
|
|
**Steps to reproduce**:
|
|
1. Send voice message to bot
|
|
2. Bot crashes with error
|
|
|
|
**Expected**: Bot transcribes voice and responds
|
|
**Actual**: Bot crashes with "Vosk model not found"
|
|
|
|
**Environment**:
|
|
- Node.js: v20.10.0
|
|
- OS: Ubuntu 24.04
|
|
- Vosk model: ~/vosk-models/vosk-model-small-0.15
|
|
```
|
|
|
|
---
|
|
|
|
## 💡 Feature Requests
|
|
|
|
When requesting a feature:
|
|
|
|
1. **Describe the use case** — Why do you need this?
|
|
2. **Provide examples** — How would you use it?
|
|
3. **Consider alternatives** — What existing features could work?
|
|
4. **Estimate impact** — How many users would benefit?
|
|
|
|
**Example**:
|
|
```
|
|
**Feature**: Add support for custom AI models
|
|
|
|
**Use case**: I want to use my own fine-tuned model
|
|
**Example**: `/model use my-custom-model-v2`
|
|
**Alternatives**: Currently using Z.AI GLM-5.1
|
|
**Impact**: Would help users with specific model requirements
|
|
```
|
|
|
|
---
|
|
|
|
## 📄 Pull Request Process
|
|
|
|
### Before Submitting
|
|
|
|
1. ✅ **Run all tests** — `npm test` should pass
|
|
2. ✅ **Update documentation** — README, ARCHITECTURE, CREDITS
|
|
3. ✅ **Add tests for new features** — Test coverage > 80%
|
|
4. ✅ **Follow code style** — Consistent formatting
|
|
5. ✅ **Write descriptive commit messages** — Conventional Commits
|
|
|
|
### PR Template
|
|
|
|
```markdown
|
|
## Description
|
|
Brief description of changes
|
|
|
|
## Type of Change
|
|
- [ ] Bug fix
|
|
- [ ] New feature
|
|
- [ ] Documentation update
|
|
- [ ] Refactoring
|
|
- [ ] Test addition
|
|
|
|
## Testing
|
|
- [ ] Tests added/updated
|
|
- [ ] Smoke tests passing
|
|
- [ ] Manual testing done
|
|
|
|
## Checklist
|
|
- [ ] Code follows project style
|
|
- [ ] Documentation updated
|
|
- [ ] No breaking changes
|
|
- [ ] Self-review done
|
|
```
|
|
|
|
---
|
|
|
|
## 🎯 Code Review
|
|
|
|
### Reviewers Will Check
|
|
|
|
- **Functionality** — Does it work as expected?
|
|
- **Security** — Any vulnerabilities?
|
|
- **Performance** — Any bottlenecks?
|
|
- **Testing** — Adequate test coverage?
|
|
- **Documentation** — Is it documented?
|
|
- **Style** — Follows project conventions?
|
|
|
|
### Review Process
|
|
|
|
1. Automated checks (tests, linting)
|
|
2. Core team review (1-2 reviewers)
|
|
3. Address feedback
|
|
4. Merge to main
|
|
|
|
---
|
|
|
|
## 🌍 Community Guidelines
|
|
|
|
### Be Respectful
|
|
|
|
- Treat everyone with respect
|
|
- Provide constructive feedback
|
|
- Accept constructive criticism
|
|
- Focus on ideas, not people
|
|
|
|
### Be Helpful
|
|
|
|
- Help new contributors
|
|
- Share knowledge
|
|
- Answer questions
|
|
- Document well
|
|
|
|
### Be Patient
|
|
|
|
- Code review takes time
|
|
- Feedback is for improvement
|
|
- Iteration is normal
|
|
- Quality over speed
|
|
|
|
---
|
|
|
|
## 📞 Getting Help
|
|
|
|
### Channels
|
|
|
|
- **Issues**: [GitHub Issues](https://github.rommark.dev/admin/zCode-CLI-X/issues)
|
|
- **Discussions**: [GitHub Discussions](https://github.rommark.dev/admin/zCode-CLI-X/discussions)
|
|
- **Telegram**: [@zcode_bot](https://t.me/zcode_bot) (ask questions)
|
|
|
|
### FAQ
|
|
|
|
**Q: How do I set up the development environment?**
|
|
A: Follow [INSTALLATION.md](./INSTALLATION.md)
|
|
|
|
**Q: What's the best way to start contributing?**
|
|
A: Look for "good first issue" labels on GitHub
|
|
|
|
**Q: How long does code review take?**
|
|
A: Usually 1-3 days, depending on complexity
|
|
|
|
**Q: Can I work on an existing issue?**
|
|
A: Yes! Comment "I'm working on this" to claim it
|
|
|
|
---
|
|
|
|
## 📜 License
|
|
|
|
By contributing, you agree that your contributions will be licensed under the [MIT License](./LICENSE).
|
|
|
|
---
|
|
|
|
## 🙏 Thank You!
|
|
|
|
Thank you for contributing to zCode CLI X! Your contributions make this project better for everyone.
|
|
|
|
**Questions?** Open an issue or start a discussion!
|
|
|
|
---
|
|
|
|
<div align="center">
|
|
|
|
**Contributions welcome!** 🚀
|
|
*Let's build the ultimate agentic coding assistant together*
|
|
|
|
</div>
|