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 deploy antes de releases ou PRs.

O que é django-verification?

Esta skill automatiza o pipeline de verificação completo para projetos Django, cobrindo desde a verificação do ambiente até a revisão de diff e checklist pré-deploy. Ela integra ferramentas populares como mypy, ruff, black, isort, pytest com cobertura, bandit, safety, pip-audit, gitleaks e comandos de gerenciamento Django. O fluxo é dividido em 12 fases lógicas: ambiente, qualidade de código, migrações, testes, segurança, comandos Django, performance, assets estáticos, revisão de configuração, logging, documentação da API (se DRF) e revisão de diff. Cada fase produz relatórios com indicadores de sucesso/erro, e ao final um relatório consolidado com recomendação (APROVADO/ATENÇÃO/BLOQUEADO) é gerado. A skill suporta execução local para desenvolvedores e integração contínua via GitHub Actions (exemplo incluído), sendo compatível com qualquer projeto Django que utilize Python 3.8+ e as ferramentas mencionadas. O principal benefício é garantir que apenas código de qualidade, seguro e pronto para produção seja mesclado ou implantado.

Funciona com~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/affaan-m/ECC/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 mudanças importantes e pré-deploy para garantir a qualidade e segurança da aplicação Django.

Quando Ativar

  • Antes de abrir um pull request para um projeto Django
  • Após grandes mudanças em modelos, atualizações de migrações ou upgrades de dependências
  • Verificação pré-implantação para staging ou produção
  • Executando pipeline completo: ambiente → lint → teste → segurança → prontidão para deploy
  • Validando 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 definido' 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:

  • Anotações de tipo ausentes 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 ausentes
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ções
python manage.py makemigrations --merge  # Apenas se existirem conflitos

Relatório:

  • Número de migrações pendentes
  • Quaisquer conflitos de migrações
  • Mudanças em modelos 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

Relatório:

  • Total de testes: X aprovados, Y falhos, Z pulados
  • Cobertura geral: XX%
  • Detalhamento de cobertura por app

Metas de cobertura:

ComponenteMeta
Modelos90%+
Serializers85%+
Views80%+
Serviços90%+
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ável de ambiente
python -c "from django.core.exceptions import ImproperlyConfigured; from django.conf import settings; settings.DEBUG"

Relatório:

  • 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 Django

# Verificar problemas em modelos
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

Relatório:

  • 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: Assets Estáticos

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

# Compilar 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 definido': 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 teste de aviso')
logger.error('Mensagem de teste de erro')
EOF

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

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

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

# Validar schema
# 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"  # Depurador

Lista de verificação:

  • Nenhuma declaração de depuração (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 mudanças em modelos
  • Mudanças de configuração documentadas
  • Tratamento de erros presente para chamadas externas
  • Gerenciamento de transações onde necessário

Modelo 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 (corrigidos automaticamente)
  ✓ black: Nenhum problema de formatação
  ✓ isort: Imports ordenados corretamente
  ✓ manage.py check: Nenhum problema

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

Fase 4: Testes + Cobertura
  Testes: 247 aprovados, 0 falhos, 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: Assets Estáticos
  ✓ npm audit: Nenhuma vulnerabilidade
  ✓ Assets compilados com sucesso
  ✓ Arquivos estáticos coletados

Fase 9: Configuração
  ✓ DEBUG = False
  ✓ SECRET_KEY configurado
  ✓ 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
  ✓ Schema 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: ATENÇÃO: Corrija 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

Lista de Verificação Pré-Deploy

  • 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 configurado 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 configurado (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 GitHub Actions

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

on: [push, pull_request]

jobs:
  verificar:
    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 detecta 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/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

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.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Habilidades Relacionadas