Migrate an existing Django API from Django REST Framework to django-modern-rest while preserving routes, request/response contracts, auth, permissions, throttling, pagination, and test coverage. Use when replacing APIView/ViewSet/GenericAPIView and DRF serializers/routers with dmr controllers/routers and typed DTOs.
72
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Migrate Django REST Framework transport layer to django-modern-rest incrementally.
Keep business logic unchanged unless user explicitly asks.
Required docs (always reference first):
approved drift.APIView, GenericAPIView, ViewSet, GenericViewSet, ModelViewSet, @api_view, DRF routers, DRF serializer classes, parser/renderer classes, auth/permission/throttle classes, DRF exception handler hooks.Choose one and record it before edits:
strict parity:
approved DMR-native errors:
Serializer / ModelSerializer transport DTO usage with explicit typed DTOs compatible with DMR serializer.Body[...], query Query[...], path Path[...], headers Headers[...], cookies Cookies[...].@api_view endpoints with explicit Controller[...] handlers.APIView/GenericAPIView/ViewSet actions with DMR controllers and router composition.api:* names) unless drift approved.Token model with the existing one.
Ask user about this explicitlyRetry-After) unless drift approved.validate_responses settings in local development and testing.ResponseSpec.unresolved gaps.api_client, auth fixtures),
but rebind them to the migrated DMR stack.ResponseSpec metadata.Do not mark slice done until:
At each meaningful checkpoint and at completion, report in 3 sections:
preserved behaviorapproved driftunresolved gapsunresolved gaps must include concrete files/endpoints and why unresolved.
partial=True update semantics can diverge if required/optional DTO constraints are translated mechanically.count/next/previous/results and ordering) must stay stable unless drift approved.ViewSet classes must be preserved per action, not only per class.ResponseSpec).djangorestframework from project dependencies unless user explicitly approves keeping it.ebee1f2
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.