Este arquivo define como o Copilot deve se comportar ao responder questões relacionadas ao repositório. Todas as instruções estão escritas de forma explícita para maximizar a eficácia e reduzir ambiguidade.
- Sempre considere o uso de PHP e nas versões definidas em
composer.json. - Evite sugerir frameworks ou ferramentas incompatíveis com <ALT-FRAMEWORK/LINGUAGEM/VERSAO>.
- Considere que o projeto lida com .
- Considere que o projeto envolve .
Para conhecer as bibliotecas disponíveis e suas finalidades, consulte composer.json e docs/dependencies.md.
Todos os comandos devem ser executados via makefile. Para conhecer os comandos disponíveis, consulte
o arquivo makefile na raiz do projeto ou execute make help.
- Sempre responda em português brasileiro (pt-BR).
- PRs e Commits devem ser escritos em português brasileiro (pt-BR).
- Commits devem seguir o padrão Conventional Commits.
- Utilize uma linguagem formal, objetiva e técnica, voltada para engenheiros de software de nível especialista.
- Prefira explicações detalhadas, mesmo que o conteúdo pareça óbvio.
Fundamente as alterações e sugestões com conceitos sólidos:
- SOLID - Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
- Clean Code - Código legível, autoexplicativo e bem organizado.
- DDD - Domain-Driven Design para modelagem de domínio.
- YAGNI - You Aren't Gonna Need It (evite código especulativo).
- DRY - Don't Repeat Yourself.
- KISS - Keep It Simple, Stupid.
- Clean Architecture - Separação de responsabilidades em camadas.
- Event Sourcing - Quando aplicável ao contexto de eventos do calendário.
Prefira padrões reconhecidos:
- Adapter - Para integração com fontes externas de calendário.
- Strategy - Para diferentes algoritmos de processamento.
- Factory - Para criação de objetos complexos.
- Repository - Para acesso a dados.
- Service Layer - Para lógica de negócio.
- O projeto deve ser escalável e de fácil manutenção.
- O código deve ser de fácil entendimento para novos desenvolvedores.
- A documentação deve ser clara e objetiva, mas não redundante.
- Prefira código limpo e organizado usando técnicas que simplificam a lógica.
- Uma solução eficaz e simples é preferível a uma complexa.
- Sempre informe sobre possíveis falhas de segurança, desempenho ou impacto no sistema antes de sugerir mudanças significativas.
- Nomes de testes devem iniciar com
test_should_e ser descritivos no formatosnake_case. - Prefira
expects()no lugar deshouldReceive()nos mocks. - Aplique TDD e cubra todos os cenários condicionais (
if/else) que possam ocorrer.
- Prefira
=== falseao invés de!para verificações booleanas explícitas. - Sempre utilize type hinting e declare tipos de retorno em métodos e funções quando possível.
- Prefira propriedades e métodos
privateouprotected, evitandopublicquando possível. - Siga a estrutura PSR-4 para namespaces.
- Utilize injeção de dependência via construtor para classes com dependências quando possível.
- Utilize traits para reutilização de código quando apropriado.
- Prefira Collections ao invés de arrays nativos do PHP.
- Nunca ultrapasse o limite de 120 caracteres por linha.
- Nunca utilize comentários redundantes. O código deve ser autoexplicativo.
- Documente classes com PHPDoc descrevendo objetivo e regra de negócio.
- Evite documentação redundante em métodos quando o nome já é autoexplicativo.
Exemplos de documentação ruim:
// Redundante: o tipo de retorno já está declarado
/** @return string */
public function getName(): string
// Redundante: o nome da classe já indica o propósito
/** Teste de integração para a classe X */
class AccessTestSempre importe classes completas com use ao invés de nomes totalmente qualificados no código.
Isso inclui classes nativas do PHP.
Exemplo correto:
use InvalidArgumentException;
throw new InvalidArgumentException('Mensagem');Exemplo incorreto:
throw new \InvalidArgumentException('Mensagem');
#[\Override] // Incorreto - use: use Override;- Ao sugerir comentários ou documentação inline, seguir o padrão PHPDoc com
@param,@return,@throws. - Para templates de PR, seguir o modelo descrito nos Padrões de desenvolvimento.
- Toda nova feature deve ter descrição clara de escopo, impacto e evidência.
- Todo pacote novo adicionado ao
composer.jsondeve ser documentado emdocs/dependencies.md. - A documentação deve incluir: nome do pacote, observação técnica e PR de referência.
- Seguir o formato de tabela existente no arquivo
docs/dependencies.md. - Classificar o pacote como "Ecossistema " ou "Externo" conforme apropriado.
- Nunca sugerir bibliotecas incompatíveis com .
- Nunca gerar código que viole os princípios definidos pelo projeto.
- Não utilizar exemplos genéricos de mercado. Sempre adaptar ao contexto do projeto.
- Se a pergunta não for clara, solicite ao usuário um exemplo ou contexto relacionado ao projeto.
- Se o Copilot não puder responder com confiança, oriente o desenvolvedor a buscar ajuda em outros lugares.
- Prefira criar um plano de execução quando não tiver muitos detalhes sobre a implementação desejada.
- Sempre responda com uma mensagem de erro clara e objetiva.
- Questione o usuário para fornecer mais contexto se necessário.
- Questione sobre possíveis impactos, problemas de desempenho e segurança antes de sugerir mudanças significativas.
Estas instruções têm prioridade sobre quaisquer outras de repositório, exceto as instruções personalizadas de usuários.
Este arquivo deve conter apenas convenções e regras que não podem ser inferidas do código-fonte.
Evite duplicar informações que já existem em outros arquivos do projeto (como makefile, composer.json,
estrutura de diretórios).
Atualize este arquivo quando houver mudanças em:
- Convenções de código ou padrões de nomenclatura.
- Regras de negócio que afetem a geração de código.
- Princípios arquiteturais ou de engenharia adotados.
- Fluxos de trabalho que o Copilot deve seguir.
Prefira instruir o Copilot a consultar arquivos fonte ao invés de duplicar informações aqui.