Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:05:43 +08:00
commit 03a004c2a2
51 changed files with 11782 additions and 0 deletions

249
commands/pr-create.md Normal file
View File

@@ -0,0 +1,249 @@
## PR Create
Criação automática de PR baseada em análise de mudanças Git para um workflow eficiente de Pull Request.
### Como usar
```bash
# Criação automática de PR por análise de mudanças
git add . && git commit -m "feat: implementação da funcionalidade de autenticação do usuário"
"Analise o conteúdo das mudanças e crie um Draft PR com descrições e rótulos apropriados"
# Atualização mantendo template existente
cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
"Mantenha completamente a estrutura do template e complemente o conteúdo das mudanças"
# Melhoria gradual da qualidade
gh pr ready
"Após confirmação da qualidade, altere para Ready for Review"
```
### Exemplos Básicos
```bash
# 1. Criação de branch e commit
git checkout main && git pull
git checkout -b feat-user-profile
git add . && git commit -m "feat: implementação da funcionalidade de perfil do usuário"
git push -u origin feat-user-profile
# 2. Criação de PR
"Crie um PR seguindo os seguintes passos:
1. Confirme o conteúdo das mudanças com git diff --cached
2. Crie a descrição usando .github/PULL_REQUEST_TEMPLATE.md
3. Selecione até 3 rótulos apropriados baseados no conteúdo das mudanças
4. Crie como Draft PR (mantenha comentários HTML)"
# 3. Tornar Ready após confirmação do CI
"Quando o CI passar, altere o PR para Ready for Review"
```
### Procedimento de Execução
#### 1. Criação de Branch
```bash
# Regras de nomenclatura seguindo diretrizes: {type}-{subject}
git checkout main
git pull
git checkout -b feat-user-authentication
# Confirmação de branch (exibe o nome da branch atual)
git branch --show-current
```
#### 2. Commit
```bash
# Stage das mudanças
git add .
# Mensagem de commit seguindo diretrizes
git commit -m "feat: implementação da API de autenticação do usuário"
```
#### 3. Push para Remote
```bash
# Push inicial (configuração upstream)
git push -u origin feat-user-authentication
# A partir da segunda vez
git push
```
#### 4. Criação de Draft PR por Análise Automática
**Step 1: Análise do Conteúdo das Mudanças**
```bash
# Obtenção de mudanças nos arquivos (confirma mudanças em stage)
git diff --cached --name-only
# Análise de conteúdo (máximo 1000 linhas)
git diff --cached | head -1000
```
**Step 2: Geração Automática de Descrição**
```bash
# Ordem de prioridade no processamento de templates
# 1. Descrição de PR existente (manter completamente)
# 2. .github/PULL_REQUEST_TEMPLATE.md
# 3. Template padrão
cp .github/PULL_REQUEST_TEMPLATE.md pr_body.md
# Complementar apenas seções vazias mantendo comentários HTML e linhas separadoras
```
**Step 3: Seleção Automática de Rótulos**
```bash
# Obtenção de rótulos disponíveis (não interativo)
"Obtenha os rótulos disponíveis de .github/labels.yml ou do repositório GitHub e selecione automaticamente rótulos apropriados baseados no conteúdo das mudanças"
# Seleção automática por correspondência de padrão (máximo 3)
# - Documentação: *.md, docs/ → documentation|docs
# - Teste: test, spec → test|testing
# - Correção de bug: fix|bug → bug|fix
# - Nova funcionalidade: feat|feature → feature|enhancement
```
**Step 4: Criação de PR com GitHub API (Mantendo Comentários HTML)**
```bash
# Criação de PR
"Crie um Draft PR com as seguintes informações:
- Título: geração automática a partir da mensagem de commit
- Descrição: use .github/PULL_REQUEST_TEMPLATE.md e preencha adequadamente
- Rótulos: seleção automática baseada no conteúdo das mudanças (máximo 3)
- Branch base: main
- Mantenha completamente os comentários HTML"
```
**Método B: GitHub MCP (Fallback)**
```javascript
// Criação de PR mantendo comentários HTML
mcp_github_create_pull_request({
owner: "organization",
repo: "repository",
base: "main",
head: "feat-user-authentication",
title: "feat: implementação da autenticação do usuário",
body: prBodyContent, // conteúdo completo incluindo comentários HTML
draft: true,
maintainer_can_modify: true,
});
```
### Sistema de Seleção Automática de Rótulos
#### Determinação Baseada em Padrão de Arquivos
- **Documentação**: `*.md`, `README`, `docs/``documentation|docs|doc`
- **Teste**: `test`, `spec``test|testing`
- **CI/CD**: `.github/`, `*.yml`, `Dockerfile``ci|build|infra|ops`
- **Dependências**: `package.json`, `pubspec.yaml``dependencies|deps`
#### Determinação Baseada em Conteúdo das Mudanças
- **Correção de bug**: `fix|bug|error|crash|corrigir``bug|fix`
- **Nova funcionalidade**: `feat|feature|add|implement|novo|adicionar``feature|enhancement|feat`
- **Refatoração**: `refactor|clean|refatorar|limpar``refactor|cleanup|clean`
- **Performance**: `performance|perf|optimize``performance|perf`
- **Segurança**: `security|secure``security`
#### Restrições
- **Máximo 3**: limite superior da seleção automática
- **Apenas rótulos existentes**: criação de novos proibida
- **Correspondência parcial**: determinação por inclusão de palavras-chave
### Diretrizes do Projeto
#### Postura Básica
1. **Sempre iniciar como Draft**: todos os PRs são criados no estado Draft
2. **Melhoria gradual da qualidade**: Fase 1 (implementação básica) → Fase 2 (adição de testes) → Fase 3 (atualização de documentação)
3. **Rótulos apropriados**: sempre adicionar até 3 tipos de rótulos
4. **Uso de template**: sempre usar `.github/PULL_REQUEST_TEMPLATE.md`
5. **Espaços em japonês**: sempre espaço em branco entre japonês e caracteres alfanuméricos
#### Regras de Nomenclatura de Branch
```text
{type}-{subject}
Exemplos:
- feat-user-profile
- fix-login-error
- refactor-api-client
```
#### Mensagem de Commit
```text
{type}: {description}
Exemplos:
- feat: implementação da API de autenticação do usuário
- fix: correção do erro de login
- docs: atualização do README
```
### Sistema de Processamento de Template
#### Ordem de Prioridade de Processamento
1. **Descrição de PR existente**: **seguir completamente** o conteúdo já descrito
2. **Template do projeto**: manter estrutura `.github/PULL_REQUEST_TEMPLATE.md`
3. **Template padrão**: quando os acima não existem
#### Regras de Manutenção de Conteúdo Existente
- **Não alterar nem um caractere**: conteúdo já descrito
- **Complementar apenas seções vazias**: preencher partes de placeholder com conteúdo das mudanças
- **Manter comentários funcionais**: manter `<!-- Copilot review rule -->`, etc.
- **Manter comentários HTML**: manter completamente `<!-- ... -->`
- **Manter linhas separadoras**: manter estruturas como `---`
#### Método para Manutenção de Comentários HTML
**Importante**: O GitHub CLI (`gh pr edit`) faz escape automático de comentários HTML, podendo resultar em strings inválidas como `EOF < /dev/null` durante o processamento do shell.
**Soluções fundamentais**:
1. **Usar opção --field da GitHub API**: manter comentários HTML com processamento de escape adequado
2. **Simplificar processamento de template**: evitar processamento complexo de pipe e redirecionamento
3. **Abordagem de manutenção completa**: abolir processamento de remoção de comentários HTML e manter template completamente
### Resposta a Comentários de Revisão
```bash
# Re-commit após mudanças
git add .
git commit -m "fix: correções baseadas no feedback da revisão"
git push
```
### Observações
#### Importância da Manutenção de Comentários HTML
- **Limitações do GitHub CLI**: `gh pr edit` faz escape de comentários HTML, mistura strings inválidas
- **Solução fundamental**: processamento de escape adequado com opção `--field` da GitHub API
- **Manutenção completa do template**: abolir processamento de remoção de comentários HTML e manter estrutura completamente
#### Restrições da Automação
- **Proibição de novos rótulos**: não é possível criar rótulos fora da definição `.github/labels.yml`
- **Máximo 3 rótulos**: limite superior da seleção automática
- **Prioridade do conteúdo existente**: não alterar absolutamente nada do conteúdo escrito manualmente
#### Melhoria Gradual da Qualidade
- **Draft obrigatório**: todos os PRs iniciam como Draft
- **Confirmação do CI**: confirmar estado com `gh pr checks`
- **Transição para Ready**: `gh pr ready` após confirmação da qualidade
- **Conformidade completa com template**: manter estrutura específica do projeto