Django Code One Task Group
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Implement one bucket of Django tasks from a plan’s task group end to end, in any Django project, with one quality baseline up front and one consolidated validation pass at the end, and with the container-backed integration stage serialized behind a repository-wide lock.
Purpose
iru-django-code-one-task-group is the Django counterpart to iru-php-code-one-task-group and iru-nestjs-code-one-task-group, built on the four Python gate skills. Step 1 detects once the runner prefix, manage.py location and Django version, test and production settings modules, app layout, API style (DRF with or without drf-spectacular, Ninja, plain views), test runner, and — decided by what a test needs, not by its name — the fast and integration selections. It captures one pre-change iru-python-code-quality baseline, then implements each task through iru-django-code-one-task, in parallel agents when the group is parallelizable. Tasks that change models in the same app, share a urls.py, settings module, admin.py or models.py, or depend on another task’s new code always run sequentially so migrations and edits cannot collide.
Step 3 validates the bucket once, cheapest first, every check delegated to an iru-gate-runner agent: license headers, docstrings, the Django framework checks (manage.py check, makemigrations --check --dry-run with migration-conflict detection, spectacular --validate when drf-spectacular is installed, and check --deploy as information), scoped fast tests, an 80% line-coverage gate measured from container-free tests alone, the full fast suite, Ruff/mypy (plus Bandit, djLint, django-upgrade when configured) diffed against the baseline, and last the integration tier behind the atomic mkdir-based .integration-test.lock (stale after 60 minutes, bounded ~45-minute wait, released on every exit path). An integration stage that cannot run is reported unverified, never silently skipped, and never affects the coverage verdict.
For a bucket that touched templates, static assets, template tags or HTML-rendering views, Step 3.10 adds a browser UI stage under the same lock (iru-python-test ui: pytest-playwright with live_server). It checks that every changed screen and component has a capture in .ui-screenshots/ for each state × .ui-quality.yml direction × theme, and applies the axe accessibility level — enforce violations fail the bucket and are fixed in the owning task, report ones are listed, off is noted. A missing Playwright browser or missing UI test wiring (pytest-playwright, axe-playwright-python, a ui marker, tests/ui/ui_screenshots.py, .ui-quality.yml, detected in Step 1) is reported unverified, never passed. The UI contract is described in Building user interfaces.
Plugin
Shipped by the iru-python plugin of the ai-catalog marketplace (install with /plugin install iru-python@ai-catalog; see Plugins).
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
Bucket text |
Yes |
Every Django-tagged task/sub-task in the bucket with its own text, the group’s |
None — always invoked with a specific bucket’s text, by |
Outputs
-
Source, test and migration files created or modified per task, via
iru-django-code-one-task. -
License headers and docstrings kept current across every file the bucket touched, checked once for the whole bucket.
-
Clean Django framework checks:
check,makemigrations --checkand, when applicable, the drf-spectacular schema validation. -
Fast tests reaching at least 80% line coverage for the changed/new production files, measured without the integration tier.
-
No new Ruff, mypy/pyright or other configured-tool issues versus the one baseline; security-relevant findings (Ruff
S,DJ001/DJ006/DJ007) fixed or explicitly accepted. -
For UI work: the browser UI stage outcome — screenshot counts per kind under
.ui-screenshots/, matrix gaps or malformed names fixed, the accessibility level applied (or "accessibility: opted out" fornone) and its violations by rule id, or unverified with the reason. -
implementation_plan.mdwith each task’s checkbox checked and its note replaced by the final outcome (fast-test coverage, quality, integration and UI results). -
A bucket report to the caller: detected shape and the fast/integration selectors, per-task results, framework check results including informational deploy warnings, security findings, accepted coverage exceptions, the integration outcome (passed, fixed, unverified with reason, or no integration tests) and lock behavior, the UI stage outcome and the per-task
Screen › Region › Componenttrees, and any blocked task. When.ui-quality.ymlis missing in a repository that already has UI code, it doesn’t assumeenforce: before the first UI task it asks once, pre-selected fromiru-explore’s `Accessibility:line, and writes the file.
Execution flow
Dependencies
Invokes
-
Django Code One Task — Step 2, once per task in the bucket (concurrently or sequentially), via the
iru-isolated-skill-executoragent; implements the task, writes its tests, generates its migration, runs only the fast tests it touched and checks off its own checkbox.
Each of the following is invoked via the iru-gate-runner agent so reports stay out of
this skill’s context:
-
Python Code Quality — Step 1 (baseline) and Step 3.8 (regression check against it).
-
Check License — Step 3.1, license headers for every file the bucket touched.
-
Python Docstrings — Step 3.2, docstrings for the production files.
-
Python Test — Steps 3.4, 3.6, 3.9 and 3.10, scoped fast tests, the full fast suite, the integration run and, for UI work, the
uirun (under the lock the skill already holds). -
Python Coverage — Step 3.5, fast-test line coverage for the bucket’s targets.
Invoked by
-
Code One Task Group — Step 2, bucket for key django.
Related agents
-
iru-isolated-skill-executor— one per task in Step 2, so each task’s transcript stays out of this skill’s context. -
iru-gate-runner— the baseline (Step 1) and every validation check (Step 3), including the Django framework checks and the lock-protected integration run.
Source
SKILL.md on GitHub — the file this page was generated from.