CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/django-best-practices

Django patterns -- custom user model, project structure, models, views, URL routing, select_related/prefetch_related, signals vs save(), middleware, settings splitting, custom managers, management commands

92

1.63x
Quality

87%

Does it follow best practices?

Impact

100%

1.63x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

django-signals-managers.jsonverifiers/

{
  "instruction": "Use custom managers correctly, prefer save() over signals for model logic, and write proper management commands",
  "relevant_when": "Agent creates custom managers, Django signals, or management commands",
  "context": "Custom managers should be added alongside the default objects manager, not replacing it. Override save() for same-model logic (e.g., auto-slug); use signals only for cross-app side effects. Management commands should use self.stdout.write (not print) and include help text.",
  "sources": [
    {
      "type": "file",
      "filename": "skills/django-best-practices/SKILL.md",
      "tile": "tessl-labs/django-best-practices@0.2.0"
    }
  ],
  "checklist": [
    {
      "name": "preserve-default-manager",
      "rule": "Agent keeps objects = models.Manager() when adding a custom manager to a model",
      "relevant_when": "Agent adds a custom manager to a Django model"
    },
    {
      "name": "save-over-signals-for-model-logic",
      "rule": "Agent overrides save() for same-model logic (auto-slug, computed fields) rather than using pre_save/post_save signals",
      "relevant_when": "Agent adds auto-computed fields or self-referential logic to a model"
    },
    {
      "name": "signals-for-cross-app",
      "rule": "Agent uses signals only for cross-app side effects (notifications, cache invalidation) where direct imports would create tight coupling",
      "relevant_when": "Agent implements side effects triggered by model changes"
    },
    {
      "name": "management-command-stdout",
      "rule": "Agent uses self.stdout.write in management commands instead of print()",
      "relevant_when": "Agent creates a Django management command"
    }
  ]
}

tile.json