O objetivo é permitir que você insira templates de prompts para criação de novos recursos no chat da IA com uma única combinação de teclas, garantindo consistência e agilidade no seu fluxo de trabalho.
Como Funciona
A solução consiste em associar um prompt de desenvolvimento completo a um atalho de teclado no VS Code. Ao pressionar o atalho, o chat do Copilot é aberto e o seu prompt é inserido automaticamente, pronto para que você descreva a funcionalidade e envie para a IA.
Passo 1: Manter um Prompt Mestre Centralizado
A melhor prática é manter a versão principal e editável do seu prompt de desenvolvimento em um local de fácil acesso, como uma wiki pessoal.
Fluxo de Trabalho para Atualizações:
-
Edite e refine o seu prompt em um documento paralelo para facilitar edições futuras.
-
Quando precisar atualizar o atalho, copie o texto.
-
Use uma ferramenta online (procure por "text to single line converter") para transformar o texto em uma única linha, substituindo as quebras de linha por
\n. -
Cole a nova linha única no arquivo
keybindings.json, conforme o Passo 2.
Passo 2: Configurar o Atalho de Teclado no VS Code (Mac)
-
Com o VS Code aberto, pressione
Cmd + Shift + Ppara abrir a Paleta de Comandos. -
Digite
Preferências: Abrir Atalhos de Teclado (JSON)e selecione essa opção. Isso abrirá o seu arquivo pessoalkeybindings.json. -
Dentro dos colchetes
[...], cole o seguinte bloco de código. Se já existirem outras configurações, adicione uma vírgula,após o bloco anterior.
{
"key": "cmd+alt+n",
"command": "workbench.action.chat.open",
"args": {
"query": "@workspace\n\nAja como um desenvolvedor sênior, especialista em Joomla 5+, PHP 8.3 e desenvolvimento seguro. Sua tarefa é desenvolver uma nova funcionalidade ou adicionar um recurso a um código existente, seguindo rigorosamente as especificações e regras abaixo.\n\nREGRAS E REQUISITOS OBRIGATÓRIOS: Você DEVE seguir estas regras em todo o código gerado:\n\nArquitetura Joomla:\n\nRespeite a estrutura MVC (Model-View-Controller) do Joomla.\nUtilize as APIs e helpers nativos do Joomla sempre que possível (ex: Joomla\\CMS\\Factory, Joomla\\CMS\\HTML\\HTMLHelper, Joomla\\CMS\\Router\\Route).\nGaranta que todos métodos utilizados do Joomla estejam sendo utilizados com namespace declarados no inicio do arquivo.\nEvite estritamente o uso de métodos e classes legadas do Joomla (ex: JFactory, JRequest, JViewLegacy). Utilize sempre as classes com namespace do Joomla 4/5 (ex: Joomla\\CMS\\Factory).\nTodo novo arquivo PHP deve incluir o seguinte código de segurança logo após as declarações de `namespace` e `use`:\n// phpcs:disable PSR1.Files.SideEffects\n\\defined('_JEXEC') or die;\n// phpcs:enable PSR1.Files.SideEffects\n\nSegurança (Inviolável):\n\nValidação de Input: TODA entrada de usuário (POST, GET, etc.) deve ser sanitizada e validada usando Joomla\\CMS\\Factory::getApplication()->input->get() ou função similar do Joomla.\nPrevenção de SQL Injection: TODA query SQL deve usar parâmetros seguros através de binds ($db->bind()) ou quote ($db->quote()). Nenhuma concatenação de variáveis em queries é permitida.\nProteção CSRF: Se houver um formulário que modifica dados, ele DEVE incluir e validar um token de segurança do Joomla (HTMLHelper::_('form.token') e Session::checkToken()).\n\nCódigo Moderno e de Qualidade:\n\nUtilize recursos modernos e eficientes do PHP 8.3 onde for apropriado.\nGestão de Erros: Use blocos try...catch para operações críticas (interações com a base de dados, APIs) para evitar a exposição de erros e garantir uma experiência de usuário controlada.\nInternacionalização: Não use texto \"hardcoded\". Todos os textos visíveis ao usuário DEVEM usar o sistema de tradução do Joomla (Joomla\\CMS\\Language\\Text::_('COM_MEUCOMPONENTE_TEXTO_CHAVE')).\nComentários: Adicione comentários PHPDoc claros para classes e métodos, explicando o propósito e os parâmetros.\nOs nomes de classes e métodos devem estar sempre em inglês e os comentários de código em português.\n\nFORMATO DA RESPOSTA: Organize sua resposta da seguinte forma:\n\nPlano de Ação: Descreva brevemente os passos que você vai seguir e os arquivos que serão criados ou modificados.\nExplicação do Código: Para cada bloco de código, explique a lógica por trás das decisões tomadas, especialmente em relação à segurança e arquitetura.\nCódigo Completo: Forneça os blocos de código completos para cada arquivo, com comentários claros.\n\nDESCRIÇÃO DA FUNCIONALIDADE:\n"
}
}
Passo 3: Como Usar o Atalho no Dia a Dia
Agora que o atalho está configurado, o seu fluxo de trabalho para iniciar um novo desenvolvimento com a ajuda da IA fica muito mais ágil.
-
Contexto (Opcional, mas Recomendado): No VS Code, abra os arquivos relevantes nos quais você vai trabalhar (ex: o controller, o model). Isso ajuda o Copilot a entender melhor o projeto.
-
Acione o Atalho: Pressione
Cmd + Option + N. -
Descreva a Tarefa: O chat do Copilot abrirá com o prompt completo já inserido. O cursor estará no final do texto. Simplesmente comece a digitar os detalhes da funcionalidade que você precisa logo após a linha
DESCRIÇÃO DA FUNCIONALIDADE:. -
Envie para a IA: Quando tiver terminado de descrever a tarefa, pressione
Enterpara enviar o prompt completo ao Copilot. A IA irá então gerar o plano de ação e o código, seguindo todas as suas regras.
Passo 4: Exemplo Prático
Vamos supor que você precisa criar um módulo de banners completo, seguindo a arquitetura moderna do Joomla 5.
-
Pressione
Cmd + Option + N. -
O prompt aparece no chat. No final dele, você digita uma descrição detalhada como esta:
Crie um novo módulo para Joomla 5 chamado
mod_banner_simples, seguindo a arquitetura de namespaces moderna. O objetivo é permitir o cadastro de banners na administração do módulo e exibir um banner aleatório no frontend.Estrutura de Arquivos: Crie a estrutura de arquivos moderna:
mod_banner_simples.xml,mod_banner_simples.php, a pastasrccomDispatcher/Dispatcher.phpeHelper/BannerSimplesHelper.php, e a pastatmplcomdefault.php.Funcionalidade do Backend (XML): No arquivo de manifesto (
mod_banner_simples.xml), defina o namespaceNoboss\Module\BannerSimplese a pastasrc. Use um campo do tiposubformpara permitir que o administrador adicione múltiplos banners. Cada item do subform deve ter dois campos: um do tipomediapara a imagem do banner e um do tipourlpara o link de destino.Lógica (Helper): Em
src/Helper/BannerSimplesHelper.php, crie a classeBannerSimplesHelperno namespace correto. Ela deve ter um método estáticogetBannerque recebe os parâmetros do módulo ($params). Este método deve ler os banners cadastrados, selecionar um aleatoriamente e retornar um objeto com a imagem e o link.Dispatcher: Em
src/Dispatcher/Dispatcher.php, crie a classeDispatcherque implementaJoomla\CMS\Dispatcher\DispatcherInterface. O métododispatchdeve obter o banner do helper e passá-lo para o layout.Exibição (Frontend): O layout
tmpl/default.phpdeve receber o banner do dispatcher e renderizar a imagem dentro de uma tag<a>com o link correspondente. -
Pressione
Enter. A IA irá então gerar o plano de ação e o código completo para todos os arquivos do novo módulo, já na estrutura correta do Joomla 5.