CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

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.

Quality

94%

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

85%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 well-structured, instruction-dense migration workflow with a required decision gate, per-slice validation, a hard finish gate, and a genuinely useful repo-derived pitfalls section. Its only real weaknesses are mild repetition of the drift/shim rules across sections and the absence of any concrete DMR code snippet to anchor the translation rules.

Suggestions

Consolidate the repeated drift/shim rules ("unless drift approved", "unless explicitly approved") into a single Migration Policy statement and reference it from the Checklist instead of restating it in Translation Rules and Port auth/throttling.

Add one minimal end-to-end example in the body or the mapping reference (a Ninja @api_controller handler with ninja.Schema input rendered as a DMR Controller with Body[DTO]/ResponseSpec) so the translation rules are anchored to executable code.

Move the detailed DTO/construct translation table (currently split between the body's Translate sections and references/ninja-to-dmr-map.md) entirely into the reference file to keep SKILL.md as the policy/workflow layer.

DimensionReasoningScore

Conciseness

The body is dense, imperative, and free of explanations of concepts Claude already knows (no Django/Ninja tutorials), but the drift/shim rules repeat across Migration Policy, Translation Rules, Port auth/throttling, and the Checklist ("unless drift approved" appears ~8 times), which could be consolidated. Not 5: minor repetition remains; not 3: there is no padding and nearly every line instructs.

4 / 5

Actionability

Gives concrete, executable guidance: exact constructs to search for ("NinjaExtraAPI", "api_controller", "http_get/http_post", "ninja_jwt"), exact DMR mechanisms ("Controller[...]", "Body[...]/Query[...]/Path[...]", "ResponseSpec", "validate_responses"), and repo-derived pitfalls with precise fixes ("ratelimit.core.ALL", field-level "strict=False", "extra='forbid'"). Not 5: no sample DMR controller/DTO wiring snippet, and CI validation is delegated to repo entrypoints without examples — minor gaps remain.

4 / 5

Workflow Clarity

The workflow is a clearly sequenced multi-step process (inventory Ninja surface -> inventory project-native batteries -> freeze observable behavior -> required error-strategy gate -> migrate by slice -> translate DTOs/handlers -> replace wiring -> port auth/throttling -> update tests -> validate -> finish gate) with explicit validation checkpoints and feedback loops ("Do not mark slice done until: linters pass, tests pass, report is updated"). Not 4: validation is explicit at every slice plus a hard finish gate, fully covering the batch-operation case.

5 / 5

Progressive Disclosure

The one bundle file (references/ninja-to-dmr-map.md) is real, one level deep, and clearly signaled in "Required docs (always reference first)" as "Local map: [references/ninja-to-dmr-map.md]"; the lookup-table detail is appropriately externalized while the SKILL.md body holds only the workflow, policy, pitfalls, and checklist. Not 4: navigation is easy and the split is appropriate with no organization gaps.

5 / 5

Total

18

/

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 concise, third-person, and fully concrete: it states what it does, enumerates the contract surface it preserves, and gives an explicit "Use when" clause naming the exact framework constructs that signal the skill. It matches the strongest reference examples without padding or over-claiming.

DimensionReasoningScore

Specificity

"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" names multiple concrete actions with comprehensive coverage of the contract surface. Not 4: there are no coverage gaps; the enumerated preserve-list plus the replacement targets cover the skill's scope fully.

5 / 5

Completeness

Explicitly answers both "what" (migrate a Django API between the two named frameworks while preserving the listed contracts) and "when" ("Use when replacing NinjaExtraAPI/api_controller/http_* handlers/ninja.Schema with dmr controllers/routers and typed DTOs") with concrete trigger phrases. Not 4: the "when" clause is fully explicit, not merely present.

5 / 5

Trigger Term Quality

Covers natural user terms ("migrate", "django-ninja", "ninja_extra", "django-modern-rest", "auth", "throttling", "test coverage") plus the concrete API constructs users would name ("NinjaExtraAPI/api_controller/http_* handlers/ninja.Schema"). Not 4: no common variation or synonym of the trigger vocabulary is missing.

5 / 5

Distinctiveness Conflict Risk

"Migrate an existing Django API from django-ninja/ninja_extra to django-modern-rest" carves out a single clear niche with framework-specific triggers, so it would not fire for unrelated Django or migration skills. Not 4: conflict risk is minimal because both frameworks are named explicitly.

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-django-ninja/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.