Dev Wiki | Johnny Salazar Reidel

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:

  1. Edite e refine o seu prompt em um documento paralelo para facilitar edições futuras.

  2. Quando precisar atualizar o atalho, copie o texto.

  3. 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.

  4. Cole a nova linha única no arquivo keybindings.json, conforme o Passo 2.

Passo 2: Configurar o Atalho de Teclado no VS Code (Mac)

  1. Com o VS Code aberto, pressione Cmd + Shift + P para abrir a Paleta de Comandos.

  2. Digite Preferências: Abrir Atalhos de Teclado (JSON) e selecione essa opção. Isso abrirá o seu arquivo pessoal keybindings.json.

  3. 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.

  1. 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.

  2. Acione o Atalho: Pressione Cmd + Option + N.

  3. 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:.

  4. Envie para a IA: Quando tiver terminado de descrever a tarefa, pressione Enter para 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.

  1. Pressione Cmd + Option + N.

  2. 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 pasta src com Dispatcher/Dispatcher.php e Helper/BannerSimplesHelper.php, e a pasta tmpl com default.php.

    Funcionalidade do Backend (XML): No arquivo de manifesto (mod_banner_simples.xml), defina o namespace Noboss\Module\BannerSimples e a pasta src. Use um campo do tipo subform para permitir que o administrador adicione múltiplos banners. Cada item do subform deve ter dois campos: um do tipo media para a imagem do banner e um do tipo url para o link de destino.

    Lógica (Helper): Em src/Helper/BannerSimplesHelper.php, crie a classe BannerSimplesHelper no namespace correto. Ela deve ter um método estático getBanner que 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 classe Dispatcher que implementa Joomla\CMS\Dispatcher\DispatcherInterface. O método dispatch deve obter o banner do helper e passá-lo para o layout.

    Exibição (Frontend): O layout tmpl/default.php deve receber o banner do dispatcher e renderizar a imagem dentro de uma tag <a> com o link correspondente.

  3. 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.