Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .github/steps/1-step.md
Original file line number Diff line number Diff line change
Expand Up @@ -111,15 +111,18 @@ Vamos adicionar um banner simples para professores fazerem comunicados e pedir f



11. Peça uma revisão ao Copilot usando a paleta de comandos do VS Code:
11. Peça uma revisão ao Copilot no VS Code:

- Pressione `Ctrl+Shift+P` (Windows/Linux) ou `Cmd+Shift+P` (Mac) para abrir a paleta de comandos.
- Digite `Chat: Review` e selecione a opção correspondente.
- Abra o painel **Source Control**.
- Passe o mouse sobre **CHANGES** e clique em **Copilot Code Review - Uncommitted Changes**.
- Aguarde o Copilot analisar suas alterações e adicionar comentários de revisão.


> [!TIP]
> Você pode escolher revisar alterações não commitadas, staged ou todas as alterações não enviadas. Certifique-se de salvar os arquivos antes de pedir a revisão.
> Se preferir, você também pode selecionar um trecho de código no editor, clicar com o botão direito e usar **Generate Code > Review**. Certifique-se de salvar os arquivos antes de pedir a revisão.

> [!NOTE]
> Alguns tipos de arquivo são ignorados pela revisão do Copilot (por exemplo: `*.lock`, `*.log`, `*.svg`, diretórios gerados e vendor).


12. Expanda o painel **Comments** para ver a lista de feedbacks do Copilot.
Expand All @@ -139,7 +142,7 @@ Vamos adicionar um banner simples para professores fazerem comunicados e pedir f
<summary>Está com problemas? 🤷</summary><br/>

- A Revisão do Copilot no VS Code só considera alterações não commitadas. Não faça commit antes de pedir a revisão.
- Se o Copilot não fornecer feedback de revisão, certifique-se de clicar no botão correto para o agrupamento (unstaged, staged, uncommitted).
- Se o Copilot não fornecer feedback, confirme que você acionou o botão **Copilot Code Review - Uncommitted Changes** no painel **Source Control**.
- Se o Copilot não enxergar suas alterações, certifique-se de salvar os arquivos antes.

</details>
12 changes: 9 additions & 3 deletions .github/steps/2-step.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Agora que você testou as capacidades de revisão local do Copilot e fez algumas
### 📖 Teoria: Revisão de Código em Pull Requests


O GitHub Copilot analisa seu código e fornece feedback inteligente com sugestões acionáveis que você pode aplicar instantaneamente. Cada revisão de código consome uma [Unidade de Solicitação Premium (PRU)](https://docs.github.com/en/copilot/concepts/billing/copilot-requests) do solicitante.
O GitHub Copilot analisa seu código e fornece feedback inteligente com sugestões acionáveis que você pode aplicar instantaneamente. Cada revisão consome **AI credits**, e os recursos agentic da revisão também podem consumir **GitHub Actions minutes**.


> [!IMPORTANT]
Expand All @@ -23,6 +23,12 @@ O GitHub Copilot analisa seu código e fornece feedback inteligente com sugestõ
- **Personalizável**: Suporta instruções customizadas para alinhar com os padrões do time
- **Seguro**: Opera dentro da infraestrutura segura do GitHub

> [!NOTE]
> O Copilot code review pode rodar em esforço **Low** (padrão) ou **Medium** (análise mais profunda). O modo Medium tende a consumir mais AI credits e mais minutos de Actions.

> [!NOTE]
> Alguns arquivos são excluídos da revisão do Copilot (como `*.lock`, `*.log`, `*.svg` e partes geradas automaticamente).


Para mais informações, veja a [documentação de revisão de código do GitHub Copilot](https://docs.github.com/en/copilot/how-tos/use-copilot-agents/request-a-code-review).

Expand All @@ -40,7 +46,7 @@ Para mais informações, veja a [documentação de revisão de código do GitHub
- **title:** `Add announcement banner`


3. Na área de detalhes à direita, encontre o menu **Reviewers**. Clique no **ícone de configurações** para mostrar a lista de revisores disponíveis e selecione **Copilot**.
3. Na área de detalhes à direita, encontre **Reviewers** e clique em **Request** ao lado de **Copilot**.

<img width="300" alt="screenshot of reviewers menu" src="https://github.com/user-attachments/assets/0f9f2e86-51b7-4542-82a1-afb6a22ab3ca"/>

Expand All @@ -59,7 +65,7 @@ Para mais informações, veja a [documentação de revisão de código do GitHub
<summary>Está com problemas? 🤷</summary><br/>

- Se o Copilot não aparecer na lista de revisores, verifique se o repositório tem o Copilot habilitado
- Se o Copilot não aparecer na lista de revisores, confira seu plano de assinatura. Não está disponível no plano gratuito.
- Se o Copilot não aparecer na lista de revisores, confira seu plano de assinatura e políticas da organização. Em organizações com Copilot Business/Enterprise, admins podem habilitar revisão para membros sem licença individual.
- Às vezes, as revisões levam um ou dois minutos para serem concluídas.

</details>
37 changes: 29 additions & 8 deletions .github/steps/3-step.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ As instruções personalizadas do repositório permitem fornecer ao Copilot cont

- **Instruções para o repositório inteiro**: Se aplicam a todo o código do repositório. Ex: `.github/copilot-instructions.md`
- **Instruções específicas por caminho**: Se aplicam a arquivos específicos para criar critérios focados em diferentes partes do código. Ex: `.github/instructions/NOME.instructions.md`.
- **Instruções de agente**: Fornecem contexto adicional para agentes em arquivos como `AGENTS.md`.


As instruções são escritas em linguagem natural, no formato Markdown, e normalmente incluem:
Expand All @@ -30,14 +31,14 @@ Arquivos de instrução específicos por caminho incluem [YAML front matter](htt

```yaml
---
applyTo: "tests/**/**,docs/*.md"
applyTo: "**/*.test.*,docs/**/*.md"
---
# Testing Guidelines ...
```

```yaml
---
applyTo: "docs/*.md,README.md"
applyTo: "docs/**/*.md,README.md"
---
# Documentation Guidelines ...
```
Expand All @@ -46,6 +47,15 @@ applyTo: "docs/*.md,README.md"
> [!TIP]
> As [instruções personalizadas](https://docs.github.com/en/copilot/how-tos/custom-instructions/adding-repository-custom-instructions-for-github-copilot) funcionam tanto para revisões locais no VS Code quanto para pull requests, garantindo consistência em todo o fluxo de desenvolvimento.

> [!NOTE]
> O suporte a cada tipo de instrução varia por cliente (GitHub.com, VS Code, Visual Studio, JetBrains, Xcode, CLI). Consulte sempre a matriz de suporte na documentação oficial.

> [!NOTE]
> Se o repositório já tiver `REVIEW.md`, `GEMINI.md` ou `CLAUDE.md` na raiz, o Copilot Code Review também respeitará essas diretrizes nativamente. Esses formatos comuns de mercado são incorporados de forma transparente à revisão, sem exigir que o conteúdo seja duplicado em outro arquivo.

> [!IMPORTANT]
> Ao revisar um pull request, o Copilot Code Review lê `copilot-instructions.md`, `AGENTS.md`, arquivos `*.instructions.md` e agent skills a partir da **branch de origem (head branch)**, e não da branch base. Assim, você pode testar novas regras no próprio pull request antes de mesclá-las.

### ⌨️ Atividade: Adicione instruções gerais


Expand Down Expand Up @@ -106,7 +116,7 @@ Vamos criar critérios de revisão específicos do Copilot para o frontend e bac

```markdown
---
applyTo: "*.html,*.css,*.js"
applyTo: "**/*.html,**/*.css,**/*.js"
---

## Diretrizes de Frontend
Expand All @@ -128,7 +138,7 @@ Vamos criar critérios de revisão específicos do Copilot para o frontend e bac

```markdown
---
applyTo: "backend/**/*,*.py"
applyTo: "src/backend/**/*.py"
---

## Diretrizes de Backend
Expand All @@ -140,20 +150,31 @@ Vamos criar critérios de revisão específicos do Copilot para o frontend e bac
- Verifique se mudanças no backend se refletem no frontend (`src/static/**`). Se encontrar possíveis breaking changes, mencione ao desenvolvedor.
```

> [!TIP]
> Se você quiser que um arquivo de instrução seja usado apenas por um tipo de agente, pode usar `excludeAgent` no front matter (por exemplo: `excludeAgent: "code-review"` ou `excludeAgent: "cloud-agent"`).


5. Faça commit e push dos arquivos de instrução.
5. Faça commit e push dos arquivos de instrução na branch `add-announcement-banner`.


> [!TIP]
> O VS Code possui comandos integrados para ajudar a gerenciar instruções. Tente abrir a paleta de comandos e buscar por `instructions`.

### ⌨️ Atividade: (opcional) Expanda com skills e MCP

Se quiser elevar o nível da revisão do Copilot:

- Adicione skills em `.github/skills/` para revisões mais especializadas.
- Configure servidores MCP no repositório para fornecer contexto adicional à revisão.
- Use `AGENTS.md` para instruções compartilhadas entre ferramentas e agentes.

### ⌨️ Atividade: Solicite outra revisão

Com nossas novas instruções definidas, o Copilot agora entende melhor o que é importante para nosso projeto. Vamos pedir outra revisão.

6. No VS Code, certifique-se de que as instruções foram realmente commitadas e faça push para o repositório.
6. Ainda na branch `add-announcement-banner`, altere ou acrescente uma regra observável — por exemplo, uma exigência de acessibilidade para o banner — e faça commit e push. Não crie outro pull request: essa mudança servirá para testar as regras na head branch.

7. No navegador, retorne ao pull request criado recentemente.
7. No navegador, retorne ao mesmo pull request criado anteriormente.

8. No canto superior direito, encontre o menu **Reviewers** e o botão **Re-request review** ao lado de **Copilot**. Clique nele e aguarde um momento para o Copilot adicionar comentários ao pull request.

Expand All @@ -163,7 +184,7 @@ Com nossas novas instruções definidas, o Copilot agora entende melhor o que é
> [!NOTE]
> Se você for rápido demais após enviar novos commits, talvez precise esperar um pouco para o botão aparecer, ou atualizar a página.

9. Observe que o feedback do Copilot agora é diferente da revisão anterior.
9. Compare o feedback com a revisão anterior e observe como o Copilot passou a considerar a regra alterada, sem que ela precisasse ser mesclada na branch base.

10. Com a revisão solicitada, aguarde um momento para a Mona checar seu trabalho, fornecer feedback e compartilhar a próxima lição.

Expand Down
28 changes: 22 additions & 6 deletions .github/steps/4-step.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
## Etapa 4: Automatize as Revisões


As revisões personalizadas parecem estar funcionando muito bem, mas há um problema: elas não são tecnicamente obrigatórias. Solicitar revisões do Copilot manualmente não é sustentável quando há vários professores contribuindo para o site de atividades. Você quer que todo pull request receba automaticamente o feedback do Copilot, especialmente porque há diferentes níveis de experiência em programação entre os colaboradores. Vamos configurar regras do repositório para exigir revisões do Copilot em todas as mudanças.
As revisões personalizadas parecem estar funcionando muito bem, mas há um problema: elas não são tecnicamente obrigatórias. Solicitar revisões do Copilot manualmente não é sustentável quando há vários professores contribuindo para o site de atividades. Você quer que todo pull request receba automaticamente o feedback do Copilot, especialmente porque há diferentes níveis de experiência em programação entre os colaboradores. Vamos configurar regras do repositório para **solicitar automaticamente** revisões do Copilot em todas as mudanças.

### 📖 Teoria: Regras de Repositório para Revisões Automáticas


As regras do repositório permitem impor revisões automáticas de código em todos os pull requests, garantindo verificações de qualidade consistentes sem depender dos desenvolvedores para solicitar revisões manualmente ou lembrar de seguir a documentação.
As regras do repositório permitem configurar revisões automáticas de código em pull requests, garantindo verificações de qualidade consistentes sem depender dos desenvolvedores para solicitar revisões manualmente ou lembrar de seguir a documentação.


Cada revisão de código consome uma [Unidade de Solicitação Premium (PRU)](https://docs.github.com/en/copilot/concepts/billing/copilot-requests) do autor do pull request.
Quando você ativa **Automatically request Copilot code review**, o Copilot passa a ser solicitado automaticamente e publica a revisão como comentário no pull request. Essa revisão **não substitui aprovação humana obrigatória** e **não bloqueia merge por si só**. Se o merge ficar bloqueado, o motivo será outra regra do ruleset (por exemplo: exigir pull request, aprovações humanas ou resolução de conversas).


Cada revisão de código consome **AI credits**. Além disso, recursos agentic da revisão podem consumir **GitHub Actions minutes**.


**Opções de Aplicação:**
Expand All @@ -31,6 +34,9 @@ Cada revisão de código consome uma [Unidade de Solicitação Premium (PRU)](ht

Para mais informações, veja a [documentação de regras de repositório](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets).

> [!NOTE]
> Além de rulesets no repositório/organização, usuários individuais em planos compatíveis também podem habilitar revisão automática para seus próprios pull requests nas configurações do Copilot.

### ⌨️ Atividade: Crie uma regra de repositório


Expand Down Expand Up @@ -67,6 +73,13 @@ Para mais informações, veja a [documentação de regras de repositório](https
- **Exigir pull request antes de mesclar**: ☑️
- **Exigir resolução de conversas antes de mesclar**: ☑️
- **Solicitar automaticamente revisão de código do Copilot**: ☑️
- (Opcional) **Review new pushes**: ☑️
- (Opcional) **Review draft pull requests**: ☑️

**Sobre as opções opcionais:**
- **Review new pushes**: solicita nova revisão automática quando novos commits são enviados ao pull request.
- **Review draft pull requests**: permite que a revisão automática também aconteça enquanto o pull request ainda está em draft.
- Se essas opções não forem habilitadas, a revisão automática não necessariamente será executada novamente a cada push ou durante a fase de draft.


7. Role até o final e clique em **Create**.
Expand All @@ -75,12 +88,12 @@ Para mais informações, veja a [documentação de regras de repositório](https
8. Volte para o pull request aberto.


9. Note que o botão de merge agora está desabilitado.
9. Dependendo das demais regras habilitadas no ruleset, o botão de merge pode ficar desabilitado até que os requisitos sejam atendidos.

<img width="300" alt="screenshot of disabled merge button" src="https://github.com/user-attachments/assets/28e4cb05-f09d-423d-8c77-8f0ec61c73ad"/>


10. Clique em **Resolve conversation** para todo feedback atual e antigo do Copilot. Não é necessário implementar nada.
10. Revise os comentários do Copilot com cuidado. Resolva apenas os que realmente foram tratados (ou considerados não aplicáveis com justificativa).


11. Faça o merge do pull request.
Expand All @@ -89,6 +102,9 @@ Para mais informações, veja a [documentação de regras de repositório](https
> [!NOTE]
> Se o botão **Merge pull request** não ativar, verifique se há conversas não resolvidas nos comentários antigos.

> [!NOTE]
> Em ambientes com requisitos de rede ou performance, você pode personalizar a execução da revisão com `.github/workflows/copilot-code-review.yml` (ou `copilot-setup-steps.yml`), definir runners e ajustar regras de firewall.


12. Com o pull request mesclado, aguarde um momento para a Mona checar seu trabalho, fornecer feedback e fazer a revisão final. Parabéns! Você terminou! 🎉

Expand Down Expand Up @@ -120,7 +136,7 @@ Então... vamos corrigir isso! 🧑‍🚀🚀


> [!TIP]
> Os modelos premium (que usam PRUs) normalmente são mais robustos e exigem menos prompts de refinamento.
> Modelos mais avançados normalmente são mais robustos e exigem menos prompts de refinamento, porém tendem a consumir mais AI credits.


> ![Static Badge](https://img.shields.io/badge/-Prompt-text?style=social&logo=github%20copilot)
Expand Down
9 changes: 9 additions & 0 deletions .github/steps/x-review.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,12 @@ Neste exercício, você aprendeu a:
- [Skills: Expanda seu time com o agente de código Copilot](https://github.com/skills/expand-your-team-with-copilot)
- [Skills: Personalize sua experiência com o GitHub Copilot](https://github.com/skills/customize-your-github-copilot-experience)
- [Skills: IA em Ação](https://github.com/skills/ai-in-actions)

### Acompanhe o impacto por repositório

Administradores e usuários com a permissão **View Copilot Metrics** podem analisar o engajamento do laboratório com os relatórios diários de métricas de uso do Copilot em nível de repositório. A API REST oferece os seguintes endpoints:

- Organização: `GET /orgs/{org}/copilot/metrics/reports/repos-1-day?day=YYYY-MM-DD`
- Enterprise: `GET /enterprises/{enterprise}/copilot/metrics/reports/repos-1-day?day=YYYY-MM-DD`

Os relatórios detalham, por repositório, os pull requests revisados pelo Copilot Code Review e a quantidade de sugestões separada por tipo de comentário. Compare esses dados entre os repositórios escolares e com os resultados das revisões para acompanhar adoção, participação e impacto após o exercício. Participantes comuns do hands-on podem não ter acesso a esses endpoints: a consulta deve ser feita por um administrador ou por alguém com a permissão apropriada, conforme as políticas de métricas da organização ou enterprise. Consulte a [documentação da API REST de métricas do Copilot](https://docs.github.com/en/rest/copilot/copilot-usage-metrics) para os requisitos de acesso e o formato dos relatórios.
8 changes: 4 additions & 4 deletions .github/workflows/2-step.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,16 @@ jobs:
file: exercise-toolkit/markdown-templates/step-feedback/checking-work.md
edit-mode: replace

- name: Check if Copilot is assigned as reviewer
- name: Check if Copilot review was requested
id: check-copilot-reviewer
continue-on-error: true
env:
REVIEWER_LOGIN: ${{ github.event.requested_reviewer.login }}
run: |
if [[ "${REVIEWER_LOGIN,,}" == "copilot" ]]; then
echo "Copilot is assigned as reviewer."
echo "Copilot review was requested."
else
echo "Copilot is NOT assigned as reviewer."
echo "Copilot review was NOT requested."
exit 1
fi

Expand All @@ -78,7 +78,7 @@ jobs:
vars: |
step_number: 2
results_table:
- description: "Copilot reviewed pull request"
- description: "Copilot was requested as reviewer on the pull request"
passed: ${{ steps.check-copilot-reviewer.outcome == 'success' }}

- name: Fail job if not all checks passed
Expand Down
Loading