Back to catalog

guardian

A unica maneira de fazer a IA gerar exatamente o que voce quer

  • Category: discovered
  • Tags: github, community
  • Version: 1.0.0
  • Author: walid
  • Downloads: 0
  • GitHub stars: 2
  • Updated: 2025-11-21

Download the latest version (v1.0.0) from this page.

SKILL.md

# Guardian Skill

**Version**: 2.0.0
**Phase**: 7. Validation & Release (Optional)
**Responsibility**: Ensure quality before commit/push/release

---

## Purpose

O Guardian é o **guardião da qualidade** que valida tudo antes de fazer commit, push ou criar uma nova versão. Ele garante que:

1. **Linters passam** (clippy, rustfmt, eslint, etc)
2. **Todos os testes passam**
3. **Builds funcionam** em todas as plataformas
4. **Workflows do GitHub não vão quebrar**
5. **Versionamento está correto**
6. **Changelog está atualizado**

---

## Related Skills

### Prerequisites (must complete before):
- **analyst** - Final validation complete (Phase 7)
- **documenter** - Documentation updated (Phase 6)
- All phases 1-6 completed successfully

### Follows this skill (typical flow):
- None (Guardian is the final step before git operations)

### Works with (parallel/collaborative):
- None (Guardian works independently for final validation)

---

## When to Use

### Opção 1: Após Workflow Completo

```
@skill orchestrator
[Sua tarefa]

# Após todas as fases (Development → Testing → Review → Documentation)
@skill guardian
```

### Opção 2: Standalone (Antes de Push)

```
# Você fez mudanças manualmente e quer validar antes de commit/push
@skill guardian
```

### Opção 3: Para Release

```
@skill guardian release
```

## Instruções

### 1. Inicialização

1. **Verificar Status do Git**

   - Executar `git status` para ver mudanças pendentes
   - Listar arquivos modificados, adicionados, deletados
   - Verificar se há commits não pushados

2. **Ler Contexto**

   - Se existe `.agent-task.md`: Ler para entender o que foi feito
   - Identificar tipo de mudança (feature, fix, docs, chore)
   - Determinar se é um release ou commit normal

3. **Determinar Modo de Operação**
   - **Modo Commit**: Validar e fazer commit
   - **Modo Push**: Validar, commit e push
   - **Modo Release**: Validar, commit, tag, push, atualizar versão

### 2. Validações (Checklist Obrigatório)

#### 2.1 Linters

**Objetivo**: Garantir que código segue padrões

- [ ] **Rust**: `cargo fmt --check` (verifica formatação)
- [ ] **Rust**: `cargo clippy -- -D warnings` (linter rigoroso)
- [ ] **JavaScript/Node**: `npm run lint` ou `eslint` (se existir)
- [ ] **Python**: `pylint` ou `flake8` (se existir)
- [ ] **Markdown**: `markdownlint` (se existir)

**Se falhar**: 🔴 **BLOQUEIA** - Não pode prosseguir

**Como corrigir**:

```bash
# Rust
cargo fmt
cargo clippy --fix

# JavaScript
npm run lint:fix
```

#### 2.2 Testes

**Objetivo**: Garantir que funcionalidade não quebrou

- [ ] **Testes unitários**: `cargo test` ou equivalente
- [ ] **Testes de integração**: Se existirem
- [ ] **Verificar cobertura**: Deve ser >= 80% (se configurado)
- [ ] **Todos os testes passam**: 100% de sucesso

**Se falhar**: 🔴 **BLOQUEIA** - Não pode prosseguir

**Comandos**:

```bash
# Rust
cargo test --all

# Node
npm test

# Python
pytest

# Go
go test ./...
```

#### 2.3 Builds

**Objetivo**: Garantir que compila em todas as plataformas

- [ ] **Build Core**: `cargo build --release -p tracker`
- [ ] **Build WASM**: `make build-wasm` (se aplicável)
- [ ] **Build Node**: `make build-node` (se aplicável)
- [ ] **Build Python**: `make build-python` (se aplicável)
- [ ] **Build Java**: `make build-java` (se aplicável)
- [ ] **Build Go**: `make build-go` (se aplicável)

**Se falhar**: 🔴 **BLOQUEIA** - Não pode prosseguir

**Nota**: Em projetos grandes, pode validar apenas core + um binding para velocidade

#### 2.4 Validações de Projeto

**Objetivo**: Verificar integridade do projeto

- [ ] **Cargo.lock**: Está atualizado e sem conflitos (Rust)
- [ ] **package-lock.json**: Está atualizado (Node)
- [ ] **Dependências**: Sem vulnerabilidades conhecidas
- [ ] **Documentação**: Gera sem erros (`cargo doc` ou equivalente)
- [ ] **Exemplos**: Compilam sem erros

**Se falhar**: 🟠 **AVISA** - Pode prosseguir com cautela

#### 2.5 Validação de CI/CD

**Objetivo**: Simular o que GitHub Actions vai fazer

- [ ] **Ler workflows**: Verificar `.github/workflows/*.yml`
- [ ] **Simular comandos**: Executar comandos que CI vai executar
- [ ] **Verificar secrets**: Alertar se workflow precisa de secrets não configurados

**Comandos comuns em CI**:

```bash
# Exemplo de workflow típico
cargo fmt --check
cargo clippy -- -D warnings
cargo test --all
cargo build --release
```

**Se falhar**: 🔴 **BLOQUEIA** - CI vai quebrar

### 3. Preparação para Commit

#### 3.1 Gerar Mensagem de Commit

**Formato Conventional Commits**:

```
<type>(<scope>): <description>

[optional body]

[optional footer]
```

**Types comuns**:

- `feat`: Nova funcionalidade
- `fix`: Correção de bug
- `docs`: Apenas documentação
- `style`: Formatação, sem mudança de código
- `refactor`: Refatoração
- `test`: Adicionar testes
- `chore`: Manutenção, build, CI

**Exemplo**:

```
feat(validation): add email validation to user registration

- Implemented validate_email() with RFC 5322 regex
- Added 12 tests with 92% coverage
- Updated README and CHANGELOG

Closes #123
```

**Gerar automaticamente**:

1. Ler `.agent-task.md` (se existir) para entender mudanças
2. Identificar tipo de mudança
3. Listar arquivos modificados
4. Criar mensagem descritiva

#### 3.2 Verificar CHANGELOG

**Se CHANGELOG.md existe**:

- [ ] Verificar se há entrada para versão atual/próxima
- [ ] Validar formato (Keep a Changelog)
- [ ] Confirmar que mudanças estão documentadas

**Se não existe entrada**: 🟡 **AVISA** - Recomenda adicionar

### 4. Operações Git

#### 4.1 Stage (Adicionar arquivos)

```bash
# Adicionar apenas arquivos rastreados modificados
git add -u

# OU adicionar arquivos específicos
git add <arquivos>
```

**Verificações**:

- [ ] Não adicionar arquivos sensíveis (.env, secrets)
- [ ] Não adicionar binários desnecessários
- [ ] Verificar .gitignore está correto

#### 4.2 Commit

```bash
git commit -m "<mensagem gerada>"
```

**Verificações**:

- [ ] Mensagem segue Conventional Commits
- [ ] Mensagem é descritiva
- [ ] Referencia issues (se aplicável)

**Requer**: `git_write` permission

#### 4.3 Push (Opcional)

**Apenas se solicitado explicitamente**

```bash
git push origin <branch>
```

**Verificações**:

- [ ] Branch atual não é `main` ou `master` (a menos que explícito)
- [ ] Não é force push (nunca fazer `git push --force` em main)
- [ ] Remote está configurado

**Requer**: `git_write` permission

⚠️ **AVISO**: Nunca fazer force push em branches principais!

### 5. Release (Modo Especial)

**Apenas quando explicitamente solicitado**: `@skill guardian release`

#### 5.1 Validar Versão

**Para Rust (Cargo.toml)**:

```toml
[package]
version = "1.2.3"
```

**Para Node (package.json)**:

```json
{
  "version": "1.2.3"
}
```

**Para Python (pyproject.toml)**:

```toml
[project]
version = "1.2.3"
```

**Verificações**:

- [ ] Versão segue SemVer (MAJOR.MINOR.PATCH)
- [ ] Versão foi incrementada corretamente:
  - **MAJOR**: Breaking changes
  - **MINOR**: Novas features (compatível)
  - **PATCH**: Bug fixes (compatível)
- [ ] Versão é consistente em todos os arquivos

#### 5.2 Atualizar CHANGELOG

```markdown
## [1.2.3] - 2025-11-04

### Added

- Nova funcionalidade X

### Changed

- Modificação em Y

### Fixed

- Correção de bug Z
```

**Verificações**:

- [ ] Data está correta
- [ ] Versão está correta
- [ ] Mudanças estão categorizadas
- [ ] Link de comparação está presente

#### 5.3 Criar Tag

```bash
# Tag anotada com mensagem
git tag -a v1.2.3 -m "Release version 1.2.3"

# Push da tag
git push origin v1.2.3
```

**Verificações**:

- [ ] Tag segue formato `vMAJOR.MINOR.PATCH`
- [ ] Tag não existe ainda
- [ ] Tag está anotada (não lightweight)

**Requer**: `git_write` permission

#### 5.4 GitHub Release (Opcional)

**Criar release no GitHub**:

- Usar GitHub CLI: `gh release create v1.2.3`
- Ou instruir desenvolvedor a criar manualmente

**Incluir**:

- Título: "Release v1.2.3"
- Descrição: Conteúdo do CHANGELOG para esta versão
- Assets: Binários compilados (se aplicável)

### 6. Relatório Final

Gerar relatório em `.agent-task.md` ou criar novo arquivo `.guardian-report.md`:

```markdown
## 🛡️ Guardian Report

**Data**: 2025-11-04 15:30:00
**Modo**: Commit + Push
**Resultado**: ✅ Sucesso

### Validações Executadas

#### ✅ Linters

- ✅ cargo fmt --check
- ✅ cargo clippy

#### ✅ Testes

- ✅ cargo test --all
- 15 testes executados, 100% passando
- Cobertura: 92%

#### ✅ Builds

- ✅ cargo build --release
- ✅ Build WASM
- ✅ Build Node

#### ✅ CI/CD Simulation

- ✅ Simulou workflow `ci.yml`
- ✅ Todos os comandos passaram

### Git Operations

#### Commit

- **Branch**: feature/email-validation
- **Hash**: `a1b2c3d`
- **Mensagem**:
```

feat(validation): add email validation to user registration

- Implemented validate_email() with RFC 5322 regex
- Added 12 tests with 92% coverage
- Updated README and CHANGELOG

```

#### Push
- **Remote**: origin
- **Branch**: feature/email-validation
- **Status**: ✅ Pushed successfully

### Arquivos Commitados

- src/validation.rs
- src/auth.rs
- tests/validation_test.rs
- README.md
- CHANGELOG.md

### Próximos Passos

1. Criar Pull Request no GitHub
2. Aguardar CI/CD passar
3. Solicitar code review humano
4. Merge após aprovação
```

## Checklist de Segurança

Antes de executar qualquer operação Git:

- [ ] **Nunca** fazer force push em `main` ou `master`
- [ ] **Nunca** commitar secrets ou .env files
- [ ] **Sempre** verificar .gitignore antes de stage
- [ ] **Sempre** simular CI antes de push
- [ ] **Sempre** pedir confirmação antes de push
- [ ] **Sempre** usar conventional commits

## Comandos Úteis

```bash
# Verificar status
git status

# Ver diff antes de commit
git diff

# Ver staged changes
git diff --staged

# Simular CI local
cargo fmt --check && cargo clippy -- -D warnings && cargo test --all

# Verificar versão atual
cargo pkgid | cut -d# -f2  # Rust
npm version                # Node
```

## Outputs

- Relatório de validações executadas
- Commit (se aprovado)
- Push (se solicitado e aprovado)
- Tag (se release)
- `.guardian-report.md` com detalhes

## Erros Comuns e Soluções

### 🔴 Linter falhou

```bash
# Corrigir automaticamente
cargo fmt
cargo clippy --fix --allow-dirty
```

### 🔴 Testes falharam

```bash
# Executar testes com output detalhado
cargo test --all -- --nocapture

# Executar teste específico
cargo test test_name -- --exact
```

### 🔴 Build falhou

```bash
# Ver erro detalhado
cargo build --verbose

# Limpar e rebuildar
cargo clean && cargo build
```

### 🟡 CHANGELOG não atualizado

1. Editar `CHANGELOG.md`
2. Adicionar entrada para versão
3. Re-executar guardian

## Integração com Workflow

O Guardian pode ser integrado ao final do workflow completo:

```
Developer → Analyst → Development → Testing → Code Review → Documentation → Guardian → Push
```

Ou usado isoladamente antes de qualquer commit/push.

## Permissões Necessárias

- **`git_write`**: Para commit, push, tag
- **Nenhuma**: Apenas para validações (modo dry-run)

## Modo Dry-Run

Para validar sem fazer commit/push:

```
@skill guardian dry-run
```

Executa todas as validações mas **não** faz operações Git.