
Django Verification
Run a full Django quality gate—env, lint, migrations, tests with coverage, security scans, and deploy checks—before you open a PR or push to staging or production.
Overview
Django Verification Loop is an agent skill most often used in Ship (also Ship review, Ship security) that runs migrations, linting, tests with coverage, security scans, and deployment readiness checks on Django projects
Install
npx skills add https://github.com/affaan-m/everything-claude-code --skill django-verificationWhat is this skill?
- Five-phase pipeline: environment → code quality → migrations → tests/coverage → security and deploy readiness
- Django-native checks including `manage.py check --deploy`, mypy, ruff, black, and isort
- Stops early when environment or `DJANGO_SECRET_KEY` is misconfigured
- Designed for major model changes, dependency upgrades, and staging/production release gates
- Five-phase verification pipeline: environment, code quality, migrations, tests, security/deploy readiness
Adoption & trust: 4.9k installs on skills.sh; 210k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You changed Django models or dependencies and are not sure migrations, tests, lint, and production settings are safe to merge or deploy.
Who is it for?
Indie builders shipping Django backends who want one scripted verification ritual before PRs and releases.
Skip if: Greenfield Django tutorials, frontend-only repos, or teams that only rely on remote CI with no local agent-run checks.
When should I use this skill?
Before opening a pull request, after major model or migration changes, pre-deployment to staging or production, or when validating migration safety and test coverage.
What do I get? / Deliverables
After the loop completes, you have evidence that env, style, migrations, tests, and deploy checks passed—or a ordered list of blockers to fix before PR or deploy.
- Pass/fail report per verification phase
- Remediation commands for lint/format fixes
- Deploy-readiness signal from Django system checks
Recommended Skills
Journey fit
The canonical shelf is Ship because the skill is explicitly a pre-PR and pre-deploy verification loop, not feature implementation. Testing is the primary subphase: coverage, pytest/Django test runs, and migration safety validation anchor the workflow before review and security phases complete the loop.
How it compares
Use as a procedural verification checklist instead of asking the agent to vaguely “run tests” without migration and deploy gates.
Common Questions / FAQ
Who is django-verification for?
Solo and indie developers using Django for APIs or SaaS backends who want agent-guided pre-PR and pre-deploy quality gates without inventing the step order each time.
When should I use django-verification?
Before opening a Django PR, after major model or migration work, after dependency upgrades, when validating test coverage, and during Ship testing, Ship review, and Ship security prep for staging or production deploys.
Is django-verification safe to install?
It instructs the agent to run local tooling (pytest, ruff, mypy, manage.py) in your project; review the Security Audits panel on this page and treat secret-key checks as reminders—not a substitute for your own secret management.
SKILL.md
READMESKILL.md - Django Verification
# Django Verification Loop Run before PRs, after major changes, and pre-deploy to ensure Django application quality and security. ## When to Activate - Before opening a pull request for a Django project - After major model changes, migration updates, or dependency upgrades - Pre-deployment verification for staging or production - Running full environment → lint → test → security → deploy readiness pipeline - Validating migration safety and test coverage ## Phase 1: Environment Check ```bash # Verify Python version python --version # Should match project requirements # Check virtual environment which python pip list --outdated # Verify environment variables python -c "import os; import environ; print('DJANGO_SECRET_KEY set' if os.environ.get('DJANGO_SECRET_KEY') else 'MISSING: DJANGO_SECRET_KEY')" ``` If environment is misconfigured, stop and fix. ## Phase 2: Code Quality & Formatting ```bash # Type checking mypy . --config-file pyproject.toml # Linting with ruff ruff check . --fix # Formatting with black black . --check black . # Auto-fix # Import sorting isort . --check-only isort . # Auto-fix # Django-specific checks python manage.py check --deploy ``` Common issues: - Missing type hints on public functions - PEP 8 formatting violations - Unsorted imports - Debug settings left in production configuration ## Phase 3: Migrations ```bash # Check for unapplied migrations python manage.py showmigrations # Create missing migrations python manage.py makemigrations --check # Dry-run migration application python manage.py migrate --plan # Apply migrations (test environment) python manage.py migrate # Check for migration conflicts python manage.py makemigrations --merge # Only if conflicts exist ``` Report: - Number of pending migrations - Any migration conflicts - Model changes without migrations ## Phase 4: Tests + Coverage ```bash # Run all tests with pytest pytest --cov=apps --cov-report=html --cov-report=term-missing --reuse-db # Run specific app tests pytest apps/users/tests/ # Run with markers pytest -m "not slow" # Skip slow tests pytest -m integration # Only integration tests # Coverage report open htmlcov/index.html ``` Report: - Total tests: X passed, Y failed, Z skipped - Overall coverage: XX% - Per-app coverage breakdown Coverage targets: | Component | Target | |-----------|--------| | Models | 90%+ | | Serializers | 85%+ | | Views | 80%+ | | Services | 90%+ | | Overall | 80%+ | ## Phase 5: Security Scan ```bash # Dependency vulnerabilities pip-audit safety check --full-report # Django security checks python manage.py check --deploy # Bandit security linter bandit -r . -f json -o bandit-report.json # Secret scanning (if gitleaks is installed) gitleaks detect --source . --verbose # Environment variable check python -c "from django.core.exceptions import ImproperlyConfigured; from django.conf import settings; settings.DEBUG" ``` Report: - Vulnerable dependencies found - Security configuration issues - Hardcoded secrets detected - DEBUG mode status (should be False in production) ## Phase 6: Django Management Commands ```bash # Check for model issues python manage.py check # Collect static files python manage.py collectstatic --noinput --clear # Create superuser (if needed for tests) echo "from apps.users.models import User; User.objects.create_superuser('admin@example.com', 'admin')" | python manage.py shell # Database integrity python manage.py check --database default # Cache verification (if using Redis) python -c "from django.core.cache import cache; cache.set('test', 'value', 10); print(cache.get('test'))" ``` ## Phase 7: Performance Checks ```bash # Django Debug Toolbar output (check for N+1 queries) # Run in dev mode with DEBUG=True and access a page # Look