viewflow/seedkit/django-seedkit
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"},{"type":"plugin","description":"Custom plugin integration"}]
Checking that the SKILL.md file is still in the repository.
Bootstrap a new Django project, or add components — auth (allauth, magic-link, axes, 2FA), payments (Stripe, dj-stripe), REST (django-modern-rest, django-bolt), Celery / Django Tasks, async views & WebSockets (ASGI, uvicorn worker, django-channels, channels-redis), Tailwind+DaisyUI, favicon, SEO meta tags + sitemap, HTML email templates, S3 storage, structlog, healthchecks, Docker, CI, deploy (VPS / Fly / GitHub-SSH), dbbackup, Sentry/Bugsink — to an existing Django codebase. Use whenever the user wants to scaffold Django, integrate a Django package, set up async / WebSockets, set up production deploys, wire CI/CD, or extend an existing Django project.
Install
npx vskill@latest install viewflow/seedkit/django-seedkitSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
How this skill works
Two paths:
- New project (empty dir, only
.git/or stub README): run §2 → §8 in order. - Existing project (has
pyproject.tomland Django code): skip §2–§4. Readreferences/existing-project.mdfor the inventory workflow, then jump to §5/§6 and ask only about missing components.
Before either path, run uv --version to confirm uv is installed (references/uv.md).
Every question below names the reference that answers it — read that one file before applying the step, and no others.
For every question that involves a third-party package: 1–2 sentences from the reference's intro on what it adds beyond stock Django, then ask. none (or no) is always a valid answer.
Use answers already given. Before asking any question, scan the user's initial request (and anything they've said since) for the answer. If it's there — explicit ("use PostgreSQL", "with Celery", "no auth") or unambiguous from context — take it as given, note the decision in one line, and move on. Don't re-ask to confirm. Only ask when the answer is genuinely missing or ambiguous.
Preflight — read these before the first tool call of a new-project run: references/new-project.md, references/database.md, and references/conventions.md (the cross-file contract: env var names, Redis DB map, prod compose service shape, SameSite rule, Python pins).
Instructions
1. Open the conversation
Name the groups you'll walk through — Project Foundation (§2), then Developer Experience, Auth & Accounts, Data & Storage, Background & Email, Frontend & Site Basics, SaaS / Product, Real-time (§5.1–5.7), then Production & Deploy (§6) — one sentence each. For existing projects: first follow references/existing-project.md and note what's already detected per group. Invite the user to begin.
2. Project Foundation — new projects only, one question at a time, in order
- Project name + one-line purpose (the explicit two-answer pair).
- Settings layout: single
settings.pyor splitbase/local/production. →references/new-project.md - Database: SQLite or PostgreSQL. →
references/database.md - Request handling:
wsgi/asgi/asgi+channels. Default `wsgi`. Decide now — DockerfileCMD, server choice, and themanage.py/wsgi.py/asgi.pysettings defaults all hinge on this; switching later means rewriting deploy artefacts. Seereferences/async.md(andreferences/realtime.mdfor the channels mode). - If Postgres: host Postgres or Postgres-in-Docker (
docker-compose.ymlfor the local services). SQLite users skip. →references/docker.md - If the project has a
docker-compose.yml(from step 5): dev loop —manage.pyon the host viauv run, or in awebcontainer viadocker compose. Default host. →references/docker.md - Custom user model: yes / no — decide now (see
references/custom-user.md).
Never bundle questions beyond the explicit pair in step 1.
3. Apply the foundation (new projects only)
Generate files from the matching references. .env DATABASE_URL must match DB + dev mode + dev loop (@localhost:5432 on the host, @db:5432 in the container). If custom user = yes, apply references/custom-user.md before the boot check. If DB=SQLite, also apply the production.py block from references/database.md (WAL + IMMEDIATE PRAGMAs) — settings tuning, not a user-facing question.
4. Foundation smoke — agent-driven, new projects only
Run these yourself; do not ask the user. The goal is to catch foundation bugs before piling on add-ons, without making the user type uv run … commands that §5.1 may replace minutes later.
uv run manage.py migrate(start the local Postgres service first withdocker compose up -d dbwhen DB=Postgres-in-Docker).- Start
uv run manage.py runserver --noreloadin the background.--noreloaddrops the StatReloader so the listener is ready sooner; asleep 2thencurlcan still race on slow CI, so poll — and test the flag after the loop, because a barefor … curl … doneexits 0 even when the server never came up:
``sh for i in 1 2 3 4 5; do curl -sf http://127.0.0.1:8000/admin/login/ > /dev/null && up=1 && break; sleep 1; done [ -n "$up" ] || echo "BOOT CHECK FAILED" ``
- Stop the server. Use the recorded PID from the background-launch step (
kill "$PID"); don't usekill %1(no job control in non-interactive bash) orpkill -f manage.py(matches the parent harness process).
Container dev loop (§2.6): docker compose up -d --wait covers the server too — web has its own healthcheck and depends_on gates it on Postgres. Then docker compose exec web python manage.py migrate, the same curl poll, and docker compose logs web on a failure. There is no background PID; docker compose down stops it.
If migrate or the curl fails, fix the foundation before proceeding to §5. createsuperuser and the browser login move to §7 — they need a stable task runner name and a real browser, neither of which exists yet.
5. Add-ons — one group at a time, one question at a time
For new projects: ask every question. For existing projects: only ask about components not already detected in §1; confirm and skip the rest.
5.1 Developer Experience
- Ruff lint: yes / no. Default no. →
references/lint.md - Test runner: pytest or stock
manage.py test. Default no (stock). →references/pytest.md - Type checking with pyright + django-stubs: yes / no. Default no. →
references/typecheck.md - Pre-commit hooks: yes / no. Default no — recommend yes if lint=yes; wires whichever of lint / format / typecheck were chosen. →
references/pre-commit.md - Devcontainer: yes / no. Default no. Wraps a Python image with uv pre-installed so VS Code / Codespaces / JetBrains Gateway open the project ready to run. →
references/devcontainer.md - Debug toolbar:
django-orbit/django-silk/none. Default none. →references/dev-tools.md - Browser auto-reload via
django-browser-reload: yes / no. Default no. →references/dev-tools.md - DB safety: any of
django-zeal/django-migration-linter/django-test-migrations. Default none. Skipdjango-test-migrationsif pytest = no. →references/dev-tools.md django-extensions: yes / no. Default no. →references/dev-tools.md- Structured logging via
structlog: yes / no. Default no. →references/logging.md - Task runner:
mise/just/make/poe/none. Default mise (recommended). Detect what's installed withcommand -vand offer the first hit; mention the others. Seereferences/dev-tasks.md.
5.2 Auth & Accounts
- Auth:
django-allauth/django-mail-auth/none. Default none. →references/auth.md django-axesbrute-force lockout: yes / no. Default yes. Skip if auth = none. →references/auth-hardening.md- 2FA: yes / no. Default no. Skip if auth = none. When yes: built-in
allauth.mfaif auth = allauth (viadjango-allauth[mfa]extra — neverallauth-2fa, which is unmaintained), elsedjango-otp. →references/auth-hardening.md
5.3 Data & Storage
- Cache backend:
sqlite/redis/locmem/none. Default `sqlite` when DB=SQLite, else `locmem`.sqlitewires a separatecache.sqlite3+CacheRouter+DatabaseCache(seereferences/database.md);redisaddsdjango-redis(references/redis.md);locmemis the per-process in-memory backend. - Static + media storage:
whitenoise/s3/none. Default none — required before production but not for first boot. →references/storage-whitenoise.md/references/storage-s3.md
5.4 Background & Email
- Background tasks:
celery/django.tasks/none. Default none. Django Tasks is the core API with in-process backends; use Celery for a worker queue. →references/tasks-celery.md/references/tasks-django.md
- If
django.tasks: periodic tasks viadjango-crontask? Default no. →references/tasks-django-cron.md.
- Email backend:
console/smtp/mailpit/anymail/none. Always ask — every project sends mail eventually (password resets, error reports, allauth verification). →references/email.md
- If backend ≠ none: HTML email base template +
send_test_emailcommand? Default no.
5.5 Frontend & Site Basics
- Frontend:
tailwind/none. Default none. →references/tailwind.md
- If tailwind: custom 404/403/500 templates? Default no.
- If tailwind: DaisyUI components? No default — always ask explicitly.
- If tailwind: favicon (agent-drawn SVG matching the project)? Default yes. →
references/favicon.md
- SEO basics (meta/OG tags + sitemap): yes / no. Default no — only for public-facing sites. Skip if Frontend = none (the meta block needs
base.html). →references/seo.md - i18n (gettext, LocaleMiddleware, makemessages): yes / no. Default no — cost of adding later is real. →
references/i18n.md - CORS: yes / no. Default no — only when there's a separate frontend on a different domain. →
references/cors.md robots.txt: yes / no. Default no — only for public-facing sites. →references/robots.md
5.6 SaaS / Product
- REST API:
django-modern-rest/django-bolt/none. Default none. →references/rest.mdfor the comparison; when the user already named a library, skip it and readreferences/rest-modern-rest.mdorreferences/rest-bolt.mddirectly. - Billing:
stripe(raw SDK) /dj-stripe/none. Default none. →references/billing.md - Analytics:
goatcounter/umami/shynet/ga4/none. Default none. →references/analytics.md
5.7 Real-time
Only ask when request handling is asgi+channels — Foundation §2.4 for new projects, the value references/existing-project.md §2 detected for existing ones. Otherwise skip the whole group.
- Channel layer:
channels-redis/InMemoryChannelLayer. Default `channels-redis`. In-memory is dev-only — it doesn't span processes, so any horizontal scale or separate ASGI worker process breaks broadcast. →references/realtime.md
6. Production & Deploy — one question at a time
- Security settings: yes / no. Default no. →
references/security.md
- If yes: Content Security Policy using Django's built-in CSP support? Default yes. →
references/csp.md
- Health check endpoints (
/healthz,/readyz): yes / no. Default yes. Apply before the deploy target so the deploy reference can wire the matching probe block in compose /fly.toml/ nginx. →references/healthcheck.md - Error reporting:
bugsink/sentry/glitchtip/none. Default none. →references/error-reporting.md - GDPR helpers: yes / no. Default no. →
references/gdpr.md - CI on GitHub Actions: yes / no. Default no. →
references/ci.md - Deploy target:
vps/managed/github-ssh/none. Default none. →references/deploy-vps.md/references/deploy-managed.md/references/deploy-github-ssh.mdAny target other thannoneappliesreferences/docker.mdfirst — all three deploy references build on its multi-stage production image. Withnone, skip the production Dockerfile; the local services compose from §2.5 / §5.3 stands on its own (with the container dev loop, so does thedevstage — aDockerfileholding only that stage is the expected output).
- If
vpsorgithub-ssh: database backups viadjango-dbbackup? Default yes. →references/dbbackup.mdBoth deploy to self-managed hosts. Skip formanaged— those platforms ship native backups. Also skip when DB=SQLite + deploy=vpsif Litestream is already wired (seereferences/database.md) — Litestream replicates every WAL frame, so dbbackup snapshots are redundant.
7. Final smoke — user-driven, new projects only
After §6, ask the user to run, using the task-runner names from §5.1 if one was applied (else uv run manage.py …):
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/django-seedkit/SKILL.md
Popularity
- Repository stars
- 65
- Repository forks
- 4
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
hookPre/post lifecycle hookspluginCustom plugin integration
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/viewflow/seedkit/django-seedkit)