# Contribuindo para opencode-ralph-loop-cli
> Este documento também está disponível em [English](CONTRIBUTING.md).
> Toda contribuição — relatórios de bugs, correções de documentação, novas funcionalidades — torna este projeto melhor para todos.
## Início Rápido
### Configuração — Prepare o Ambiente em Cinco Comandos
- Clone o repositório e entre no diretório
- Execute `cargo build` para compilar o projeto
- Execute `cargo nextest run` para rodar todos os testes
- Execute `cargo clippy -- -D warnings` para verificar erros de lint
- Execute `cargo fmt --check` para verificar a formatação
```bash
git clone https://github.com/daniloaguiarbr/opencode-ralph-loop-cli
cd opencode-ralph-loop-cli
cargo build
cargo nextest run
```
## Código de Conduta
### Padrões — Expectativas da Comunidade
- Leia e siga nosso [Código de Conduta](CODE_OF_CONDUCT.md) antes de contribuir
- Todas as interações devem atender aos padrões descritos nesse documento
- Violações são reportadas para: claude.ai.twenty614@passmail.net
## Configuração de Desenvolvimento
### Requisitos — Ferramentas Necessárias
- Rust 1.85 ou posterior (MSRV) — instale via rustup
- `bun` ou `node` — para testar a integração com opencode
- `cargo-nextest` — `cargo install cargo-nextest`
- `cargo-llvm-cov` — `cargo install cargo-llvm-cov`
- `cargo-audit` — `cargo install cargo-audit`
- `cargo-deny` — `cargo install cargo-deny`
## Estratégia de Ramificação
### Fluxo — Convenção de Nomenclatura de Branches
- `main` é a ramificação estável de produção — não faça push diretamente
- `feature/<descrição>` para novas funcionalidades
- `fix/<descrição>` para correções de bugs
- `docs/<descrição>` para alterações de documentação
- Abra um pull request da sua ramificação para `main`
## Convenção de Commits
### Formato — Padrão Conventional Commits
- Use o prefixo `feat:` para novas funcionalidades visíveis ao usuário
- Use o prefixo `fix:` para correções de bugs
- Use o prefixo `perf:` para melhorias de desempenho
- Use o prefixo `refactor:` para reestruturação de código sem mudança de comportamento
- Use o prefixo `docs:` para atualizações de documentação
- Use o prefixo `chore:` para tarefas de manutenção (CI, dependências, ferramentas)
- Mudanças incompatíveis: adicione `!` após o prefixo (ex: `feat!:`)
- Exemplo: `feat: add --keep-state flag to uninstall command`
## Processo de Pull Request
### Checklist — Oito Validações Obrigatórias
- `cargo check --all-targets` passa sem erros
- `cargo clippy --all-targets --all-features -- -D warnings` passa sem warnings
- `cargo fmt --all --check` passa sem diferenças
- `cargo doc --no-deps --all-features` passa sem warnings
- `cargo nextest run` passa todos os testes
- `cargo llvm-cov --text` reporta no mínimo 80 por cento de cobertura
- `cargo audit` reporta zero vulnerabilidades
- `cargo deny check advisories licenses bans sources` passa
## Testes
### Prática — Como Testamos Este Projeto
- Testes unitários ficam inline em cada módulo sob `#[cfg(test)]`
- Testes de integração ficam em `tests/` usando `assert_cmd`
- Testes baseados em propriedades em `tests/proptest_tests.rs` usando `proptest`
- Execute `cargo nextest run` para a suíte completa de testes
- Execute `cargo llvm-cov --text` para medir cobertura (mínimo 80 por cento)
## Documentação
### Atualizações — Mantenha os Documentos Sincronizados
- Atualize `README.md` ao adicionar ou alterar comandos ou flags
- Atualize `CHANGELOG.md` em `[Unreleased]` para cada mudança visível ao usuário
- Execute `cargo doc --no-deps` para verificar que os doc comments compilam
## Reportando Bugs
### Template — O Que Incluir
- Descreva o comando que você executou (invocação exata)
- Descreva o que você esperava que acontecesse
- Descreva o que realmente aconteceu (inclua o exit code)
- Inclua seu sistema operacional, versão do Rust e versão da crate
- Abra uma issue em https://github.com/daniloaguiarbr/opencode-ralph-loop-cli/issues
## Solicitando Funcionalidades
### Template — Como Propor
- Descreva primeiro o problema que você está tentando resolver
- Explique por que os comandos existentes não resolvem
- Proponha o novo subcomando ou flag com o comportamento esperado
- Abra uma issue em https://github.com/daniloaguiarbr/opencode-ralph-loop-cli/issues
## Processo de Release
### Autorização — Apenas Mantenedores
- Somente os mantenedores do projeto podem publicar novas versões no crates.io
- Versões seguem estritamente o Semantic Versioning 2.0.0
- Cada versão requer que todos os dez comandos de validação passem
- Tags seguem exatamente o padrão `vX.Y.Z`