CtrlK
BlogDocsLog inGet started
Tessl Logo

dmr-from-django-ninja

Migrate an existing Django API from django-ninja/ninja-extra to django-modern-rest while preserving routes, request/response contracts, auth, throttling, and test coverage. Use when replacing NinjaExtraAPI/api_controller/http_* handlers/ninja.Schema with dmr controllers/routers and typed DTOs.

73

Quality

90%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

The canonical home for this skill is dmr-from-django-ninja in wemake-services/django-modern-rest

SKILL.md
Quality
Evals
Security

Quality

Content

81%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, disciplined migration runbook: strict parity policy, gated 12-step workflow, and concrete repo-derived pitfalls. Main gaps are repetition of the drift rules across sections and the absence of a single illustrative code example, with some detailed material that belongs in the reference file inlined instead.

Suggestions

Consolidate the drift/approval rules stated in Migration Policy, Translation Rules, step 9, and the Output Checklist into one authoritative section to remove redundancy and tighten conciseness.

Add one short, complete DMR controller example (Controller with Body[...] DTO and a ResponseSpec extra response) so the translation rules and error strategy have a copy-paste-ready anchor.

Move the repo-derived 'Migration Pitfalls' list (and optionally the Output Checklist) into references/ninja-to-dmr-map.md or a dedicated pitfalls reference, keeping SKILL.md as a leaner overview.

DimensionReasoningScore

Conciseness

The body is terse, bullet-driven, and assumes Django/Pydantic knowledge (no concept explanations), but drift policy is restated across Migration Policy, Translation Rules, step 9, and the Output Checklist, and step 9 mixes response-validation directives into an auth/throttling step. Anchor 5 ('every token earns its place') doesn't hold due to this repetition; it is well above anchor 3 since there is no padded explanation.

4 / 5

Actionability

Guidance names exact constructs to find ("NinjaExtraAPI", "http_get/http_post/..."), exact mappings ("Body[...]", "Query[...]", "Path[...]"), and concrete pitfalls with fixes ("use ratelimit.core.ALL", "field-level strict=False", "extra='forbid'"). It falls short of anchor 5 because there is no illustrative code snippet (e.g., a minimal DMR controller) and CI validation says 'run the same commands CI uses' without an example invocation; for an instruction-only migration skill the specifics otherwise carry it above anchor 3.

4 / 5

Workflow Clarity

A 12-step sequence with explicit gates and feedback loops: "Decide error strategy (required gate)", per-slice validation via repository-native CI (step 11), and a finish gate ("Do not mark slice done until: linters pass, tests pass... or failures are explicitly approved drift"), plus a required 3-section report and output checklist. This matches the anchor 5 example's validate-fix-retry structure with explicit checkpoints.

5 / 5

Progressive Disclosure

Clear section headers and a well-signaled, real, one-level-deep reference ([references/ninja-to-dmr-map.md](references/ninja-to-dmr-map.md)) plus the DMR LLM docs URL. Not anchor 5 because the ~190-line body inlines substantial detail (repo-derived pitfalls, the full checklist, DTO translation rules) that could partly live in the reference file, leaving SKILL.md closer to an overview.

4 / 5

Total

17

/

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.

The description is a model example: third-person, dense with concrete capabilities, an explicit 'Use when...' clause naming exact source constructs, and a highly distinct framework-migration niche. No fluff, over-claims, or padding.

DimensionReasoningScore

Specificity

Concrete actions are comprehensive for the domain: "Migrate an existing Django API from django-ninja/ninja_extra to django-modern-rest while preserving routes, request/response contracts, auth, throttling, and test coverage", plus specific replacements ("replacing NinjaExtraAPI/api_controller/http_* handlers/ninja.Schema with dmr controllers/routers and typed DTOs"). Anchor 4 ('minor gaps in coverage') fits worse than 5 since every major migration surface (routing, schemas, auth, throttling, tests) is named.

5 / 5

Completeness

Both what and when are explicitly answered with concrete trigger phrases: what is "Migrate... while preserving routes, request/response contracts, auth, throttling, and test coverage" and when is "Use when replacing NinjaExtraAPI/api_controller/http_* handlers/ninja.Schema...". Anchor 4 ('when could be more explicit') does not apply since the when-clause enumerates exact trigger constructs.

5 / 5

Trigger Term Quality

Natural terms a user would say for this need are the framework names themselves, and both variants are covered: "django-ninja/ninja_extra", "NinjaExtraAPI", "api_controller", "ninja.Schema", "dmr", "django-modern-rest". No relevant synonyms are missing (ninja, ninja_extra, and the dmr abbreviation all appear).

5 / 5

Distinctiveness Conflict Risk

Clear niche (ninja-to-DMR transport migration) with distinct, framework-specific triggers; no other plausible skill would fire on these terms. Not below 5 since anchor 4 ('minor overlap risk with closely related skills') would require some ambiguity, and none is present.

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
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.