Implement production-grade Django/DRF backend features with clean model design, serializer
validation, ViewSet-based APIs, and comprehensive test coverage.
When to Use
The project uses Django or Django REST Framework.
A new model, serializer, viewset, permission, or signal must be implemented.
An existing Django feature has a bug or architecture violation.
1---2name: nakarthiksurya-talos-django-expert3description: Django Expert Skill4---56# Django Expert Skill78## Goal910Implement production-grade Django/DRF backend features with clean model design, serializer11validation, ViewSet-based APIs, and comprehensive test coverage.1213## When to Use1415- The project uses Django or Django REST Framework.16- A new model, serializer, viewset, permission, or signal must be implemented.17- An existing Django feature has a bug or architecture violation.1819## Project Structure Convention2021```22project/23 apps/24 <feature>/25 models.py26 serializers.py27 views.py # ViewSets or APIViews28 urls.py29 permissions.py30 signals.py31 tasks.py # Celery tasks32 tests/33 test_models.py34 test_serializers.py35 test_views.py36 config/37 settings/38 base.py39 development.py40 production.py41 urls.py42```4344## Implementation Rules4546### Models47- Use `verbose_name` and `verbose_name_plural` on every model.48- `created_at = models.DateTimeField(auto_now_add=True)`.49- `updated_at = models.DateTimeField(auto_now=True)`.50- Soft delete via `is_deleted` + custom Manager.51- Every ForeignKey has `on_delete` explicitly set.5253### Serializers54- Use `ModelSerializer` for CRUD. Override `validate_<field>()` for field-level validation.55- Use `SerializerMethodField` for computed values.56- Separate serializers for list (minimal) and detail (full) representations.57- Use `read_only_fields = (...)` to prevent mass assignment.5859### ViewSets & Permissions60- Use `ModelViewSet` for full CRUD. Use `GenericAPIView` mixins for partial sets.61- Apply permissions via `permission_classes` on the ViewSet or per-action via `get_permissions()`.62- Apply filtering via `django-filter` or custom `get_queryset()`.63- Always use `select_related` and `prefetch_related` to avoid N+1 queries.6465### Settings66- Separate settings files for development, testing, production.67- All secrets via environment variables with `python-decouple` or `django-environ`.68- `DEBUG = False` enforced in production settings.6970### Database71- All schema changes via Django migrations. Never modify DB directly.72- Use `database_transactions` in tests.7374## Review Checklist7576- [ ] Models have `created_at`, `updated_at`, and `__str__` method77- [ ] Serializers have validation for all required fields78- [ ] ViewSets use `select_related`/`prefetch_related` to prevent N+179- [ ] Permissions applied at viewset level80- [ ] Tests cover model, serializer, and viewset layers8182---83> Source: [naKarthikSurya/Talos](https://github.com/naKarthikSurya/Talos) — distributed by [TomeVault](https://tomevault.io).84<!-- tomevault:4.0:skill_md:2026-05-22 -->
Run npx skillmds@latest add tomevault-io/nakarthiksurya-talos-django-expert in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Django Expert Skill It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. Independent scanners report: SkillSpector: PASS, Skill Scanner: PASS. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
tomevault-io (@tomevault-io) published this skill. Their other Agent Skills are listed on their SkillMD profile.