Thank you for your interest in contributing to the OpenCode Ecosystem! This document provides guidelines and standards for contributions.
This project adheres to the Contributor Covenant Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to the project maintainers.
- Bug reports: Include steps to reproduce, expected behavior, actual behavior, and environment details (OS, Python version, Node.js version, OpenCode CLI version)
- Feature requests: Describe the use case, proposed solution, and any alternatives considered
- Documentation improvements: Point out specific sections that need clarification or correction
- Fork and clone the repository
- Create a branch from
main:git checkout -b feature/your-contribution
- Make your changes following the coding standards below
- Run tests to ensure nothing is broken
- Submit a pull request with a clear description of the changes
- Ensure all tests pass before submitting
- Update documentation if your changes affect public APIs, agent definitions, or configuration
- Include a clear PR title and description explaining the motivation and approach
- Reference any related issues
- Maintainers will review your PR and may request changes
- Once approved, your PR will be squashed and merged
- Tests pass (
python -m pytest tests/ -v) - No CJK characters in output files
- Skills respect the 2.5KB size limit (where applicable)
- Documentation updated (if applicable)
- Code follows established patterns in the module
- Readability over cleverness — Write code that is easy to understand
- Type safety — Use type hints in Python and TypeScript
- Test coverage — New code should include unit tests
- Documentation — Public functions and classes must have docstrings
- Consistency — Follow the patterns already established in the module you are editing
| Requirement | Standard |
|---|---|
| Minimum version | Python 3.12+ |
| Docstrings | Required for all public functions and classes (Google-style preferred) |
| Type hints | Required for all function signatures |
| Testing | pytest with fixtures and mocking |
| Linting | ruff (configured in project) |
| Requirement | Standard |
|---|---|
| Runtime | Bun 1.3+ compatible |
| Modules | ESModules |
| Style | Follow patterns in existing plugins/ code |
- Each
SKILL.mdmust have complete YAML frontmatter withname,description,trigger, andversion - Content should be concise; extended documentation goes in
references/*.md(progressive disclosure) - Skills should stay within the 2.5KB limit for context optimization
- User-facing documentation and output: Brazilian Portuguese (formal)
- Code comments and commit messages: English or Portuguese
- Variable names, paths, code: Keep in original language (typically English)
- Zero tolerance for CJK characters in output files — run the CJK corrector before submitting documentation
- Run all existing tests before submitting:
python -m pytest tests/ -v
- New features must include corresponding tests
- Bug fixes should include a regression test
- Test coverage should not decrease with your contribution
- For academic pipeline changes, run the TDD validator:
# Check TDD documentation for specific validation commands
- Create a Markdown file in
agents/with YAML frontmatter - Follow the template of existing agents
- Register with the DI Container if the agent needs ecosystem services
- Update agent counts in documentation
- Create a directory under
skills/<category>/ - Create
SKILL.mdwith YAML frontmatter (max 2.5KB) - Add extended content in
references/*.md - Verify file size:
wc -c SKILL.mdshould be ≤ 2500
- Configure the server in
opencode.jsonundermcpServers - Implement JSON-RPC over stdio (local) or HTTP (remote)
- MCPs initialize on first use (lazy init) — no explicit startup code needed
- Document the new MCP in the README
Open an issue on GitHub. All contributions are welcome — from bug fixes to new features, documentation improvements, and academic use cases.
OpenCode Ecosystem v4.6 · Contributing Guide