About django-query-profiling
A workflow skill for Django developers tracing reported slowness to a specific queryset, SQL statement, and reproducible scenario. It combines production evidence, code mapping, and local reproduction to guide profiling toward the right fix.
Key features
- 01Capture the slow user-visible path
- 02Collect traces and query evidence
- 03Map SQL to Django code
- 04Reproduce with representative data
- 05Route findings to a fix
Use cases
- 01Investigate a slow API action
- 02Find SQL behind a slow page
- 03Reproduce a background task slowdown
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ lvtd-llc/ skills --skill django-query-profilingAfter installing, type/django-query-profilingin Claude Code to confirm it loaded.
Bundled filesreferences/tooling-and-reproduction.md
Details
From the project READMEDjango Query Profiling
Use this skill to turn a vague slow-Django report into a specific queryset, SQL statement, and reproducible scenario.
Workflow
-
Start from the user-visible slow path.
- Record the URL, API action, background task, management command, or report.
- Capture request parameters, user or tenant shape, pagination state, and data volume.
-
Collect production or staging evidence.
- Prefer APM transaction traces when available.
- Use database slow-query logs for SQL that is slow independent of Python.
- Use Django Debug Toolbar for server-rendered pages in local development.
- For APIs or jobs, add targeted query logging around the suspicious block.
-
Map SQL back to Django code.
- Search model table names and column names.
- Inspect view
get_queryset(), serializer fields, template loops, managers, model properties, and signal handlers. - Check whether related-object access happens after the initial queryset was evaluated.
-
Reproduce locally or in a safe shell.
- Use production-like row counts when possible.
- Disable unrelated instrumentation and debug-only middleware when measuring.
- Keep a repeatable script, test, or shell snippet that exercises the slow path.
-
Route the fix.
- Query count issue: use
django-orm-query-optimization. - One slow SQL statement: use
django-query-plan-reading. - Large loops or writes: use
django-queryset-batch-processing.
- Query count issue: use
See tooling-and-reproduction.md for concrete profiling snippets and pitfalls.
Good Evidence
- Query count before/after for the specific path.
- The slow SQL or normalized SQL fingerprint.
- Stack or code pointer that explains where the SQL originates.
- Timing from the same environment and representative data shape.
Verification
Do not finish profiling with only a hunch. Finish with a named queryset, code path, and command or request that another agent can re-run.