CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

dmr-from-drf

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.

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

75%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, tightly written migration skill: the workflow is explicitly sequenced with required gates, per-slice CI validation, a finish gate, and a final checklist, and it consistently names exact DRF and DMR constructs rather than vague directions. The main weaknesses are moderate redundancy of the parity contract across the Policy/Rules/Checklist sections, a merely implied fix-retry loop, and most operational detail living inline rather than progressively disclosed.

Suggestions

Consolidate the repeated 'preserve X unless drift approved' statements: state the parity contract once in Migration Policy and have Translation Rules and the Output Checklist reference it instead of restating it, trimming perhaps 20-30 lines.

Make the error-recovery feedback loop explicit in the per-slice validation step (e.g., 'If linters/tests fail: fix, then re-run the same CI entrypoints before proceeding') so the workflow matches the validate-fix-retry pattern.

Move the 'Migration Pitfalls (DRF-derived)' section into references/drf-to-dmr-map.md (or a dedicated pitfalls reference) so the SKILL.md body stays a lean overview with one-level-deep, well-signaled references.

DimensionReasoningScore

Conciseness

The body is dense and directive with zero explanation of concepts Claude already knows — every line instructs an action ('Replace `Serializer` / `ModelSerializer` transport DTO usage with explicit typed DTOs'). However, the parity contract is restated across Migration Policy, Translation Rules, and the Output Checklist ('preserve ... unless drift approved' appears ~10 times), which is more than purely minor over-explanation and could be consolidated.

4 / 5

Actionability

Guidance is concrete and specific: exact DMR constructs are named (`Controller[...]`, `Body[...]`, `Query[...]`, `Path[...]`, `Headers[...]`, `Cookies[...]`, `ResponseSpec`, `validate_responses`), alongside exact DRF constructs to find and replace. Per the rubric's code-vs-instruction note, absence of code in an instruction-only skill is not penalized. It falls short of 5 because a few steps stay high-level ('inspect existing project libraries', 'run the same commands CI uses') without naming or exemplifying concrete commands.

4 / 5

Workflow Clarity

The workflow is clearly sequenced (inventory DRF surface → inventory native batteries → freeze behavior → decide error strategy → migrate by slice → port auth/tests → validate per slice → finish gate) with explicit gates ('required gate', 'Do not mark slice done until linters pass, tests pass, report is updated') and a checklist. It falls short of the 5 anchor only because the fix-and-revalidate feedback loop is implied by the finish gate rather than stated as an explicit 'if validation fails, fix and re-run' step.

4 / 5

Progressive Disclosure

The single bundle file (references/drf-to-dmr-map.md) is real, one level deep, and clearly signaled in the required-docs list ('Local map: [references/drf-to-dmr-map.md]'). The body is well-sectioned and navigable. It does not reach 5 because nearly all operational detail lives inline in the ~190-line SKILL.md — the Migration Pitfalls section partially duplicates the reference map and could itself be offloaded or consolidated, leaving the body closer to a true overview.

4 / 5

Total

16

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An excellent description: it states what the skill does with a comprehensive list of preserved contracts, and gives an explicit, concrete 'Use when' trigger clause naming the exact DRF constructs and DMR replacements. Trigger terms cover both user-facing names (Django REST Framework, DRF) and the specific class names a user would mention, and the niche is highly distinct.

DimensionReasoningScore

Specificity

The description lists multiple concrete, specific actions: '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.' These are concrete preserved behaviors plus a concrete migration action, giving comprehensive coverage of the skill's scope. It is not below 5 because nothing in the anchor's coverage expectations is missing; it is not above because 5 is the scale maximum.

5 / 5

Completeness

It explicitly answers 'what' (migrate a Django API from DRF to django-modern-rest while preserving a specific list of contracts) and 'when' with an explicit trigger clause: 'Use when replacing APIView/ViewSet/GenericAPIView and DRF serializers/routers with dmr controllers/routers and typed DTOs.' Both halves are concrete; this matches the score-5 anchor including a concrete 'Use when' trigger phrase.

5 / 5

Trigger Term Quality

It covers the natural terms a user would say for this task: both the full name 'Django REST Framework' and the abbreviation 'DRF', 'Django API', 'django-modern-rest', plus the concrete class/API names users would mention ('APIView/ViewSet/GenericAPIView', 'serializers', 'routers', 'typed DTOs'). There are no file extensions relevant to this domain; synonym coverage (DRF/Django REST Framework) is present. Not below 5 because both naming variants and the framework names users actually type are present.

5 / 5

Distinctiveness Conflict Risk

This is a clear niche (DRF to django-modern-rest migration) with distinct, domain-specific triggers — no other plausible skill would trigger on 'replacing APIView/ViewSet/GenericAPIView and DRF serializers/routers with dmr controllers'. Conflict risk is minimal, matching the 'clear niche with distinct triggers' anchor. It also uses third-person/imperative voice, so no voice penalty applies.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

wemake-services/django-modern-rest

Path

dmr/.agents/skills/dmr-from-drf/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.