DMR upgrade

SkillAI & models

Upgrade a project to a newer django-modern-rest (dmr) release. Use when bumping the django-modern-rest version, when a dependency update breaks imports from `dmr`, or when asked to migrate to a new dmr release. Applies the official migration prompt of every release in between, in order.

Available today. Use it from your connected AI after setup.

Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Then ask your AI: use the DMR upgrade skill

What this skill tells your AI

The instructions your AI receives, as published by wemake-services/django-modern-rest in dmr/.agents/skills/dmr-upgrade/SKILL.md and read by ahel’s review.

Overview

Every breaking django-modern-rest release ships an official migration prompt. The prompts of the three latest breaking releases live in this skill, one file per release in references/. The CHANGELOG.md of the package lists the breaking changes themselves.

Do not guess how an API changed. Read the prompt for every release between the installed version and the target version and apply all of it.

Workflow

1. Find the current and the target versions

  • Current: uv pip show django-modern-rest, pip show django-modern-rest, or the pinned version in uv.lock, poetry.lock, or requirements.txt.
  • Target: the version the user asked for, otherwise the latest release on https://pypi.org/project/django-modern-rest/.
  • Tell the user which releases lie in between and that each one is applied in order. Never skip a release.

2. Bump the dependency

Update pyproject.toml (or the requirements file) to the target version and install it, so the type checker sees the new API.

3. Apply each migration prompt

Read the prompt files for the selected releases, oldest first, and apply every numbered item to the whole project (source, tests, fixtures, settings, management commands):

Upgrade acrossPrompt
0.13 to 0.14references/0.13-to-0.14.md
0.14 to 0.15references/0.14-to-0.15.md
0.15 to 0.16references/0.15-to-0.16.md

Releases in between that are not listed had no breaking changes. When the project is on a version older than 0.13, the prompts of the older releases are not in this skill: since 0.13.0 they are the descriptions of the releases on https://github.com/wemake-services/django-modern-rest/releases, before that they are in CHANGELOG.md. Apply them first, the same way.

Apply one release at a time and keep its edits together, so the user can review them release by release.

When the installed docs matter, load the version-specific index: https://django-modern-rest.readthedocs.io/en/<version>/llms.txt (every page is also served as Markdown, replace .html with .md).

4. Verify

  • Run the type checker of the project, it catches most renamed and re-typed APIs.
  • Run the test suite.
  • Run python manage.py check and, when OpenAPI is used, python manage.py dmr_export_schema <schema-path> and diff the output against the previous schema: only intended changes should appear.
  • Search the project for every symbol named in the prompts, the upgrade is complete when none is left.

Reporting

Finish with a short report:

  • releases applied, in order,
  • every change, grouped by prompt item,
  • items that could not be resolved and why (for example, a removed feature with no replacement), with the exact file and line.

Do not change business logic, response contracts, or settings beyond what a prompt item requires. If a prompt item conflicts with project behavior the user wants to keep, stop and ask.

Signals

GitHub stars
1k
Forks
216
Last commit
Sep 2026
Advanced
Item type
skill
Key
dmr-upgrade
Source
github.com/wemake-services/django-modern-rest