AI Skill StudioAI Skill Studio
Skills
Presets:

Target Standard & File Format

AI Agent Rules & Skills
Context Shields & Privacy (Ignore Files)
Integrations & Machine Documentation
AI Governance & Multi-Agent Planning Suite

Identity & Activation Rules

3 chips
Scoped domain keywords evaluated in real time
api-routescode-auditsrefactoring
Suggested Chips:

Technology Stack Context

Engineering Philosophy

Flexible & Adaptable

Architectural & Code Quality Conventions

Less rigid & configurable

Agent Behavioral Guardrails

Select active rules
Security & Trust Boundaries
Always included
  • Untrusted Content Is Data
  • Encoded Payloads
  • Least-Privilege File Access
  • Confirm Irreversible Actions
  • Secret Handling
  • Validation Failures
  • Conflicting Requests

Step-by-Step Workflow Procedures

Django 5 & Ninja / DRF Windsurf Cascade Rules

Generate Windsurf Cascade rules for Django 5 & Ninja / DRF in .windsurf/rules/, with the stack's conventions and checks. Windsurf's Cascade agent reads rules from .windsurf/rules/. This rule gives Cascade the Django 5 & Ninja / DRF conventions, commands and patterns to avoid, so its edits follow the stack instead of generic or outdated defaults.

Target Path
.windsurf/rules/python-django.md
Execution Scope
Per-rule trigger
Specification Format
Markdown with frontmatter (.md)
AI Tool Support
Windsurf Cascade
02 / WHY IT HELPS

What this file changes for Django 5 & Ninja / DRF

Without it

Windsurf's Cascade agent reads rules from .windsurf/rules/. This rule gives Cascade the Django 5 & Ninja / DRF conventions, commands and patterns to avoid, so its edits follow the stack instead of generic or outdated defaults.

What the file tells the agent
Use asynchronous ORM operations (aget(), acreate(), afirst()) inside async def view handlers.
Prevent N+1 query catastrophes: always apply select_related() for ForeignKey/OneToOne and prefetch_related() for ManyToMany/reverse relationships.
Enforce Django Ninja schemas or DRF serializers with explicit field typing; never return raw unvalidated model instances.
Never alter existing committed migration files; generate new sequential migrations via python manage.py makemigrations.
Leverage Django 5 GeneratedField for computed database columns rather than redundant model save() recalculations.
03 / CODE PATTERNS

Django 5 & Ninja / DRF: code to avoid and code to write instead

Avoid
# Discouraged: Synchronous blocking query inside async context & N+1 queries
@router.get("/articles/{article_id}")
async def get_article(request, article_id: int):
    article = Article.objects.get(id=article_id)  # Synchronous blocking call!
    return {"id": article.id, "title": article.title, "author": article.author.username}  # N+1 DB hit!
Write instead
from ninja import Router, Schema
from django.shortcuts import aget_object_or_404
from .models import Article

router = Router()

class ArticleOut(Schema):
    id: int
    title: str
    author_name: str

@router.get("/articles/{article_id}", response=ArticleOut)
async def get_article(request, article_id: int):
    # Asynchronous fetch with joined relationship preventing N+1
    article = await Article.objects.select_related("author").aget(id=article_id)
    return {
        "id": article.id,
        "title": article.title,
        "author_name": article.author.username,
    }
04 / REPOSITORY PLACEMENT & 3-STEP TERMINAL INSTALLATION

How to Install Django 5 & Ninja / DRF Windsurf Cascade Rules via Terminal

1

Step 1: Open Project Directory & Verify Target Placement

Open your terminal and navigate to your project root folder where the .windsurf/rules/python-django.md file will reside. Ensure the file is placed at the exact path below relative to your project root so the AI engine automatically loads it:

.windsurf/rules/python-django.md
2

Step 2: Fetch Rule File via Terminal Command

Run curl, PowerShell, or wget to stream the rule directly from the DevScratchpad raw API endpoint and write it to .windsurf/rules/python-django.md:

Terminal One-Liner Install

Run directly in your project root to stream and write this rule file with one command.

Raw API Stream
$mkdir -p ".windsurf/rules" && curl -fsSL "https://www.devscratchpad.tech/api/raw/windsurf-rules/python-django" -o ".windsurf/rules/python-django.md"
3

Step 3: Check that Windsurf Cascade uses it

Cascade reads rules in .windsurf/rules/ and applies this one according to its trigger.

05 / ROUTE DIRECTORY & CROSS-TOOLING
Format Pillar Hub

Windsurf rules generator: Cascade rules for your stack

Windsurf Cascade Rules: how it works, where the file goes, and every Windsurf preset.

/windsurf-rules Directory
06 / RELATED DEVELOPER TOOLS

Tools for Django 5 & Ninja / DRF work

Browser-based utilities to test, format and inspect the code your AI tool writes. Nothing you paste is uploaded.

View all 28 tools

Live Repository & Schema Ingestion

Inspect any public or private GitHub repository, or paste SQL DDL and Prisma models directly in AI Skill Studio to auto-generate authentic rules. Zero server transmission.

Launch AI Skill Studio

Migrating from Legacy .cursorrules or CLAUDE.md?

Use the free, in-browser converter to turn one long rules file into Cursor .mdc, Claude SKILL.md or Windsurf rules.

Convert Rules Free
07 / FREQUENTLY ASKED QUESTIONS

Technical FAQ: Django 5 & Ninja / DRF AI Rulebooks

Where do I save this Windsurf rule?

Save it as .windsurf/rules/python-django.md in your project. Cascade picks up rules in that folder automatically.

When does Windsurf apply this rule?

According to the trigger in its frontmatter: always on, on a glob match, when Cascade decides the description fits the task, or when you @-mention it.