Communitygithub.com

django-verification

Loop de verificação para projetos Django: migrações, linting, testes com cobertura, varreduras de segurança e verificações de prontidão para implantação antes de releases ou PRs.

O que é django-verification?

Este skill automatiza um pipeline completo de verificação para projetos Django, cobrindo desde a checagem do ambiente até a revisão de diffs antes de pull requests ou deploys. Ele executa fases como verificação de ambiente, qualidade de código com ferramentas como mypy, ruff, black e isort, migrações do Django, testes com cobertura usando pytest, varredura de segurança com pip-audit, safety e bandit, e validação de configuração. O skill é útil para garantir que alterações não introduzam bugs, vulnerabilidades ou más práticas, e suporta execução local e em CI (com exemplo para GitHub Actions).

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/django-verification

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Loop de Verificação Django

Execute antes de PRs, após grandes alterações e pré-implantação para garantir qualidade e segurança da aplicação Django.

Quando Ativar

  • Antes de abrir um pull request para um projeto Django
  • Após grandes alterações de modelo, atualizações de migração ou upgrades de dependências
  • Verificação pré-implantação para staging ou produção
  • Execução do pipeline completo: ambiente → lint → teste → segurança → prontidão para deploy
  • Validação de segurança de migrações e cobertura de testes

Fase 1: Verificação de Ambiente

# Verificar versão do Python
python --version  # Deve corresponder aos requisitos do projeto

# Verificar ambiente virtual
which python
pip list --outdated

# Verificar variáveis de ambiente
python -c "import os; import environ; print('DJANGO_SECRET_KEY definida' if os.environ.get('DJANGO_SECRET_KEY') else 'FALTANDO: DJANGO_SECRET_KEY')"

Se o ambiente estiver mal configurado, pare e corrija.

Fase 2: Qualidade e Formatação de Código

# Verificação de tipos
mypy . --config-file pyproject.toml

# Linting com ruff
ruff check . --fix

# Formatação com black
black . --check
black .  # Auto-correção

# Ordenação de imports
isort . --check-only
isort .  # Auto-correção

# Verificações específicas do Django
python manage.py check --deploy

Problemas comuns:

  • Falta de dicas de tipo em funções públicas
  • Violações de formatação PEP 8
  • Imports não ordenados
  • Configurações de debug deixadas na configuração de produção

Fase 3: Migrações

# Verificar migrações não aplicadas
python manage.py showmigrations

# Criar migrações faltantes
python manage.py makemigrations --check

# Simular aplicação de migrações
python manage.py migrate --plan

# Aplicar migrações (ambiente de teste)
python manage.py migrate

# Verificar conflitos de migração
python manage.py makemigrations --merge  # Apenas se existirem conflitos

Relatar:

  • Número de migrações pendentes
  • Quaisquer conflitos de migração
  • Alterações de modelo sem migrações

Fase 4: Testes + Cobertura

# Executar todos os testes com pytest
pytest --cov=apps --cov-report=html --cov-report=term-missing --reuse-db

# Executar testes de um app específico
pytest apps/users/tests/

# Executar com marcadores
pytest -m "not slow"  # Pular testes lentos
pytest -m integration  # Apenas testes de integração

# Relatório de cobertura
open htmlcov/index.html

Relatar:

  • Total de testes: X passaram, Y falharam, Z pulados
  • Cobertura geral: XX%
  • Divisão de cobertura por app

Metas de cobertura:

ComponenteMeta
Models90%+
Serializers85%+
Views80%+
Services90%+
Geral80%+

Fase 5: Varredura de Segurança

# Vulnerabilidades de dependências
pip-audit
safety check --full-report

# Verificações de segurança do Django
python manage.py check --deploy

# Linter de segurança Bandit
bandit -r . -f json -o bandit-report.json

# Varredura de segredos (se gitleaks estiver instalado)
gitleaks detect --source . --verbose

# Verificação de variáveis de ambiente
python -c "from django.core.exceptions import ImproperlyConfigured; from django.conf import settings; settings.DEBUG"

Relatar:

  • Dependências vulneráveis encontradas
  • Problemas de configuração de segurança
  • Segredos codificados detectados
  • Status do modo DEBUG (deve ser False em produção)

Fase 6: Comandos de Gerenciamento do Django

# Verificar problemas de modelo
python manage.py check

# Coletar arquivos estáticos
python manage.py collectstatic --noinput --clear

# Criar superusuário (se necessário para testes)
echo "from apps.users.models import User; User.objects.create_superuser('[email protected]', 'admin')" | python manage.py shell

# Integridade do banco de dados
python manage.py check --database default

# Verificação de cache (se usando Redis)
python -c "from django.core.cache import cache; cache.set('test', 'value', 10); print(cache.get('test'))"

Fase 7: Verificações de Performance

# Saída da Django Debug Toolbar (verificar consultas N+1)
# Execute em modo dev com DEBUG=True e acesse uma página
# Procure por consultas duplicadas no painel SQL

# Análise de contagem de consultas
django-admin debugsqlshell  # Se django-debug-sqlshell estiver instalado

# Verificar índices ausentes
python manage.py shell << EOF
from django.db import connection
with connection.cursor() as cursor:
    cursor.execute("SELECT table_name, index_name FROM information_schema.statistics WHERE table_schema = 'public'")
    print(cursor.fetchall())
EOF

Relatar:

  • Número de consultas por página (deve ser < 50 para páginas típicas)
  • Índices de banco de dados ausentes
  • Consultas duplicadas detectadas

Fase 8: Ativos Estáticos

# Verificar dependências npm (se usando npm)
npm audit
npm audit fix

# Construir arquivos estáticos (se usando webpack/vite)
npm run build

# Verificar arquivos estáticos
ls -la staticfiles/
python manage.py findstatic css/style.css

Fase 9: Revisão de Configuração

# Execute no shell do Python para verificar configurações
python manage.py shell << EOF
from django.conf import settings
import os

# Verificações críticas
checks = {
    'DEBUG é False': not settings.DEBUG,
    'SECRET_KEY definida': bool(settings.SECRET_KEY and len(settings.SECRET_KEY) > 30),
    'ALLOWED_HOSTS definido': len(settings.ALLOWED_HOSTS) > 0,
    'HTTPS habilitado': getattr(settings, 'SECURE_SSL_REDIRECT', False),
    'HSTS habilitado': getattr(settings, 'SECURE_HSTS_SECONDS', 0) > 0,
    'Banco de dados configurado': settings.DATABASES['default']['ENGINE'] != 'django.db.backends.sqlite3',
}

for check, result in checks.items():
    status = '✓' if result else '✗'
    print(f"{status} {check}")
EOF

Fase 10: Configuração de Logging

# Testar saída de logging
python manage.py shell << EOF
import logging
logger = logging.getLogger('django')
logger.warning('Mensagem de aviso de teste')
logger.error('Mensagem de erro de teste')
EOF

# Verificar arquivos de log (se configurados)
tail -f /var/log/django/django.log

Fase 11: Documentação da API (se DRF)

# Gerar esquema
python manage.py generateschema --format openapi-json > schema.json

# Validar esquema
# Verificar se schema.json é JSON válido
python -c "import json; json.load(open('schema.json'))"

# Acessar Swagger UI (se usando drf-yasg)
# Visite http://localhost:8000/swagger/ no navegador

Fase 12: Revisão de Diff

# Mostrar estatísticas do diff
git diff --stat

# Mostrar alterações reais
git diff

# Mostrar arquivos alterados
git diff --name-only

# Verificar problemas comuns
git diff | grep -i "todo\|fixme\|hack\|xxx"
git diff | grep "print("  # Declarações de debug
git diff | grep "DEBUG = True"  # Modo debug
git diff | grep "import pdb"  # Debugger

Checklist:

  • Nenhuma declaração de debug (print, pdb, breakpoint())
  • Nenhum comentário TODO/FIXME em código crítico
  • Nenhum segredo ou credencial codificada
  • Migrações de banco de dados incluídas para alterações de modelo
  • Alterações de configuração documentadas
  • Tratamento de erros presente para chamadas externas
  • Gerenciamento de transações onde necessário

Template de Saída

RELATÓRIO DE VERIFICAÇÃO DJANGO
==========================

Fase 1: Verificação de Ambiente
  ✓ Python 3.11.5
  ✓ Ambiente virtual ativo
  ✓ Todas as variáveis de ambiente definidas

Fase 2: Qualidade de Código
  ✓ mypy: Nenhum erro de tipo
  ✗ ruff: 3 problemas encontrados (auto-corrigidos)
  ✓ black: Nenhum problema de formatação
  ✓ isort: Imports devidamente ordenados
  ✓ manage.py check: Nenhum problema

Fase 3: Migrações
  ✓ Nenhuma migração não aplicada
  ✓ Nenhum conflito de migração
  ✓ Todos os modelos têm migrações

Fase 4: Testes + Cobertura
  Testes: 247 passaram, 0 falharam, 5 pulados
  Cobertura:
    Geral: 87%
    users: 92%
    products: 89%
    orders: 85%
    payments: 91%

Fase 5: Varredura de Segurança
  ✗ pip-audit: 2 vulnerabilidades encontradas (correção necessária)
  ✓ safety check: Nenhum problema
  ✓ bandit: Nenhum problema de segurança
  ✓ Nenhum segredo detectado
  ✓ DEBUG = False

Fase 6: Comandos Django
  ✓ collectstatic concluído
  ✓ Integridade do banco de dados OK
  ✓ Backend de cache acessível

Fase 7: Performance
  ✓ Nenhuma consulta N+1 detectada
  ✓ Índices de banco de dados configurados
  ✓ Contagem de consultas aceitável

Fase 8: Ativos Estáticos
  ✓ npm audit: Nenhuma vulnerabilidade
  ✓ Ativos construídos com sucesso
  ✓ Arquivos estáticos coletados

Fase 9: Configuração
  ✓ DEBUG = False
  ✓ SECRET_KEY configurada
  ✓ ALLOWED_HOSTS definido
  ✓ HTTPS habilitado
  ✓ HSTS habilitado
  ✓ Banco de dados configurado

Fase 10: Logging
  ✓ Logging configurado
  ✓ Arquivos de log graváveis

Fase 11: Documentação da API
  ✓ Esquema gerado
  ✓ Swagger UI acessível

Fase 12: Revisão de Diff
  Arquivos alterados: 12
  +450, -120 linhas
  ✓ Nenhuma declaração de debug
  ✓ Nenhum segredo codificado
  ✓ Migrações incluídas

RECOMENDAÇÃO: AVISO: Corrija as vulnerabilidades do pip-audit antes de implantar

PRÓXIMOS PASSOS:
1. Atualizar dependências vulneráveis
2. Reexecutar varredura de segurança
3. Implantar em staging para testes finais

Checklist Pré-Implantação

  • Todos os testes passando
  • Cobertura ≥ 80%
  • Nenhuma vulnerabilidade de segurança
  • Nenhuma migração não aplicada
  • DEBUG = False nas configurações de produção
  • SECRET_KEY configurada corretamente
  • ALLOWED_HOSTS definido corretamente
  • Backups de banco de dados habilitados
  • Arquivos estáticos coletados e servidos
  • Logging configurado e funcionando
  • Monitoramento de erros (Sentry, etc.) configurado
  • CDN configurada (se aplicável)
  • Redis/backend de cache configurado
  • Workers Celery em execução (se aplicável)
  • HTTPS/SSL configurado
  • Variáveis de ambiente documentadas

Integração Contínua

Exemplo do GitHub Actions

# .github/workflows/django-verification.yml
name: Verificação Django

on: [push, pull_request]

jobs:
  verify:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:14
        env:
          POSTGRES_PASSWORD: postgres
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5

    steps:
      - uses: actions/checkout@v3

      - name: Configurar Python
        uses: actions/setup-python@v4
        with:
          python-version: '3.11'

      - name: Cache pip
        uses: actions/cache@v3
        with:
          path: ~/.cache/pip
          key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements.txt') }}

      - name: Instalar dependências
        run: |
          pip install -r requirements.txt
          pip install ruff black mypy pytest pytest-django pytest-cov bandit safety pip-audit

      - name: Verificações de qualidade de código
        run: |
          ruff check .
          black . --check
          isort . --check-only
          mypy .

      - name: Varredura de segurança
        run: |
          bandit -r . -f json -o bandit-report.json
          safety check --full-report
          pip-audit

      - name: Executar testes
        env:
          DATABASE_URL: postgres://postgres:postgres@localhost:5432/test
          DJANGO_SECRET_KEY: test-secret-key
        run: |
          pytest --cov=apps --cov-report=xml --cov-report=term-missing

      - name: Enviar cobertura
        uses: codecov/codecov-action@v3

Referência Rápida

VerificaçãoComando
Ambientepython --version
Verificação de tiposmypy .
Lintingruff check .
Formataçãoblack . --check
Migraçõespython manage.py makemigrations --check
Testespytest --cov=apps
Segurançapip-audit && bandit -r .
Verificação Djangopython manage.py check --deploy
Coletar estáticospython manage.py collectstatic --noinput
Estatísticas do diffgit diff --stat

Lembre-se: A verificação automatizada captura problemas comuns, mas não substitui a revisão manual de código e os testes no ambiente de staging.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

Habilidades Relacionadas