Agradecemos o seu interesse em contribuir com o OpenCode Ecosystem. Este guia descreve os procedimentos para configurar o ambiente, entender a estrutura do projeto e submeter contribuições de qualidade.
# Fork o repositório no GitHub, depois clone:
git clone https://github.com/<seu-usuario>/OpenCode_Ecosystem.git
cd OpenCode_Ecosystem# Dependências Node.js / TypeScript (plugins e OpenCode CLI)
bun install
# Dependências Python (agentes, Nexus, módulo quântico)
pip install -r requirements.txt # se disponívelnode --version # v22+ (LTS ate abril 2027)
bun --version # 1.3+
python --version # 3.12+
opencode --version # 1.14+O ecossistema possui 88/88 testes de DI (Fases 5–7) e 378/391 testes legado:
python -m pytest tests/ -v| Diretório | Função | Arquivos Principais |
|---|---|---|
agents/ |
125 agentes especializados em Markdown | Definições de agentes (core 56 + criação 49 + SEEKER 12 + Reversa 7 + corretor 1) |
skills/ |
104 skills com progressive disclosure | SKILL.md (≤2.500B) + references/*.md |
nexus/ |
Orquestrador multiagente Nexus NMA v6.2 | 63 scripts Python, sync_orchestrator.py, self_healer.py |
quantum/ |
Módulo de computação quântica | 81 arquivos: VQC, QML, ZNE/PEC |
criador-artigo/ |
Pipeline MASWOS — 49 agentes para artigos academicos | Agentes A00-A45, templates, referencias |
basis-research/ |
SEEKER — pesquisa científica autônoma | 10 agentes Python, argument tree engine |
core/ |
Infraestrutura core do ecossistema | Container DI, managers, bridges |
commands/ |
Definições de comandos slash | Markdown com frontmatter YAML |
command/ |
Implementação de comandos | 14 arquivos .md para CommandRegistry |
plugins/ |
Plugins TypeScript | manus-evolve.ts, ecosystem-sync.ts, bernstein-sync.ts |
diagrams/ |
10 SVGs de arquitetura | Gerados automaticamente pelo Reversa Framework |
evolution/ |
Skills geradas automaticamente pelo AutoEvolve | Output do ciclo PLAN→ACT→REFLECT→EXTRACT→EVOLVE |
.reversa/ |
Artefatos de engenharia reversa | DI_MIGRATION.md, ADRs, SDDs |
- Versão mínima: Python 3.12+
- Docstrings: obrigatórias em todas as funções e classes públicas
- Type hints: fortemente recomendados
- Estilo: seguir as convenções existentes no módulo que está sendo editado
- Testes: todo código novo deve incluir testes unitários
- Cada
SKILL.mddeve conter no máximo 2.500 bytes (frontmatter YAML + conteúdo resumido) - Conteúdo estendido deve residir em
references/*.md(progressive disclosure) - Frontmatter YAML obrigatório com campos:
name,description,trigger,version
- Toda documentação e output ao usuário: português brasileiro formal
- Zero CJK: nenhum caractere chinês, japonês ou coreano deve aparecer em arquivos de saída
- Variáveis, paths e código: manter na língua original (inglês)
- Executar
criador-artigo/banca/ptbr_corrector.pyantes de submeter documentação
- Compatível com Bun 1.3+
- Seguir padrões dos plugins existentes em
plugins/
- Criar arquivo em
agents/com o nome do agente (ex:agents/meu-agente.md) - Definir o agente seguindo o template dos agentes existentes (frontmatter YAML + instruções)
- Registrar no Container DI se o agente necessitar de serviços do ecossistema:
from core import Container container = Container.instance() # Utilizar container.resolve("service_name") para acessar serviços
- Documentar o agente no
AGENTS_PTBR.mdcom estatísticas atualizadas
- Criar diretório em
skills/<categoria>/(ex:skills/research/minha-skill/) - Criar
SKILL.mdcom frontmatter YAML (máximo 2.500 bytes):--- name: minha-skill description: Descrição concisa da skill trigger: /minha-skill version: 1.0.0 category: research ---
- Criar
references/*.mdpara conteúdo estendido (progressive disclosure) - Verificar tamanho:
wc -c skills/<categoria>/minha-skill/SKILL.mddeve retornar ≤ 2.500
- Definir configuração em
opencode.json:{ "mcpServers": { "meu-mcp": { "command": "npx", "args": ["-y", "@meu-pacote/mcp-server"], "env": {} } } } - Protocolo: implementar JSON-RPC sobre stdio (local) ou HTTP (remoto)
- Registrar no DI se necessário:
# O MCP será descoberto automaticamente via lazy init # Registrar no Container apenas se houver integração com outros serviços
- Lazy init: os MCPs inicializam automaticamente na primeira chamada de ferramenta — não é necessário código de inicialização explícito
- Documentar o novo MCP no README.md na seção "MCP Servers"
- Criar branch a partir de
main:git checkout -b feature/minha-contribuicao
- Implementar alterações seguindo os padrões de código descritos acima
- Executar testes:
python -m pytest tests/ -v
- Verificar CJK (se alterou documentação):
python criador-artigo/banca/ptbr_corrector.py
- Commit com mensagem descritiva em português ou inglês
- Submeter PR com descrição clara do que foi alterado e por quê
- Testes passando (
python -m pytest tests/ -v) - Sem caracteres CJK em arquivos de saída
- Skills dentro do limite de 2.500B
- Documentação atualizada (se aplicável)
- Código segue os padrões do módulo editado
- Registrar palavras-chave em
DataSourceRegistry.KEYWORD_MAP - Implementar um handler
_handle_novo_dominioemDataOrchestrator - Criar hook em
ecosystem_hooks.py - Adicionar entrada em
HOOKS_REGISTRY - Atualizar
opencode_catalog.jsoncom bibliotecas do novo domínio - Testar:
orch.query("sua query de teste")
python skills/system/pypi-scout/pypi_scout.py search nome_da_biblioteca
# Se a biblioteca for relevante, editar opencode_catalog.json- Type hints em todas as funções (
mypy --strict) - Docstrings Google-style
- Handlers retornam
DataResult(nuncaNoneoudictpuro) - Usar
importlibcom try/except para imports opcionais - Testar com
python -m pytest skills/system/pypi-scout/
Abra uma issue no repositório. Toda contribuição é bem-vinda.
OpenCode Ecosystem v4.6 · Guia para Contribuidores