CtrlK
BlogDocsLog inGet started
Tessl Logo

dmr-upgrade

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.

77

Quality

97%

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

SKILL.md
Quality
Evals
Security

DMR upgrade

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.

Repository
wemake-services/django-modern-rest
Last updated
First committed

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.