Audit and prepare a Django codebase for parallel multi-agent development. Use when asked to check if a Django project is ready for parallelization, prepare a repo for multi-agent work, audit codebase structure, set up orchestration infrastructure, or identify blockers for parallel development. Analyzes Django apps, models, migrations, and module boundaries.
Scanned 5/27/2026
Install via CLI
openskills install jpoutrin/product-forge---
name: parallel-ready-django
description: Audit and prepare a Django codebase for parallel multi-agent development. Use when asked to check if a Django project is ready for parallelization, prepare a repo for multi-agent work, audit codebase structure, set up orchestration infrastructure, or identify blockers for parallel development. Analyzes Django apps, models, migrations, and module boundaries.
---
# Django Parallel Readiness Assessment
Audit and prepare a Django codebase to support parallel development with multiple Claude Code agents.
## Quick Start
Run the full assessment:
```
1. Analyze Django project structure and app organization
2. Score each readiness dimension
3. Identify blockers and risks
4. Generate remediation plan
5. Set up orchestration infrastructure
```
## Automated Analysis
Run the analysis script from project root:
```bash
# From project root (default: analyzes 'apps/' directory)
python analyze-readiness.py
# Specify custom apps directory
python analyze-readiness.py src/apps
# Output saved to .claude/readiness-report.md
```
The script analyzes:
- **App Boundaries**: Cross-app imports, circular dependencies, god apps
- **Shared State**: Global variables, Django signals, mutable state
- **Contracts**: Mypy config, OpenAPI, serializer `__all__` usage
- **Tests**: Test file count, pytest config, Factory Boy usage
- **Documentation**: CLAUDE.md, README, linting config
- **Dependencies**: Lock files, pinned versions, migration count
See `references/analyze-readiness.py` for the full script.
## Assessment Dimensions
### 1. Django App Boundaries (Critical)
**Check for:**
- Clear app separation with single responsibility
- Minimal cross-app model imports
- No circular dependencies between apps
- Proper use of app namespacing
**Red flags:**
- God app that contains most models/views
- Heavy cross-app foreign keys
- Shared models across multiple apps
- Deeply nested cross-app imports
**Scoring:**
- ✅ Good: Each domain has dedicated app, <10% cross-app model imports
- ⚠️ Fair: Some separation exists, 10-30% cross-imports
- ❌ Poor: Single app structure, heavy coupling, >30% cross-imports
**Detection commands:**
```bash
# Count models per app
find . -name "models.py" -exec grep -l "class.*Model" {} \;
# Find cross-app imports
grep -r "from.*\.models import" --include="*.py" | grep -v "__pycache__"
# Check for circular imports
python -c "import sys; sys.setrecursionlimit(50); import myapp"
```
### 2. Shared State & Settings (Critical)
**Check for:**
- Global variables in settings.py
- Shared caches without isolation
- Signals causing side effects across apps
- Thread-local storage usage
**Red flags:**
- Mutable globals in apps
- Signals modifying models in other apps
- Shared file writes across apps
- Global middleware state
**Scoring:**
- ✅ Good: No global mutable state, dependency injection used
- ⚠️ Fair: Limited globals, documented shared resources
- ❌ Poor: Heavy global state, signals everywhere
**Detection commands:**
```bash
# Find global variables
grep -r "^[A-Z_]*\s*=" --include="*.py" | grep -v settings.py
# Find signal usage
grep -r "@receiver\|\.connect(" --include="*.py"
# Find cache usage
grep -r "cache\.\(get\|set\|delete\)" --include="*.py"
```
### 3. API Contracts & Serializers (High)
**Check for:**
- DRF serializers with explicit fields
- OpenAPI/Swagger documentation
- Type hints on views and serializers
- Versioned API endpoints
**Red flags:**
- `fields = "__all__"` in serializers
- Untyped view functions
- Undocumented internal APIs
- Implicit serializer behavior
**Scoring:**
- ✅ Good: Full OpenAPI spec, typed serializers, versioned APIs
- ⚠️ Fair: Partial typing, some documented endpoints
- ❌ Poor: No contracts, `__all__` fields everywhere
**Detection commands:**
```bash
# Find serializers with __all__
grep -r 'fields\s*=\s*"__all__"\|fields\s*=\s*.__all__.' --include="*.py"
# Check for OpenAPI setup
grep -r "SpectacularAPIView\|swagger\|openapi" --include="*.py"
# Find untyped views
grep -r "def .*request.*:" --include="views.py" | grep -v ": HttpRequest"
```
### 4. Test Infrastructure (High)
**Check for:**
- pytest-django or Django TestCase setup
- Factory Boy or model fixtures
- Test isolation (TransactionTestCase where needed)
- CI pipeline with test coverage
**Red flags:**
- Tests that share database state
- Order-dependent tests
- Missing migration tests
- No integration test capability
**Scoring:**
- ✅ Good: Full test suite, isolated tests, >80% coverage
- ⚠️ Fair: Partial coverage, some test infrastructure
- ❌ Poor: Minimal tests, no CI
**Detection commands:**
```bash
# Find test files
find . -name "test*.py" -o -name "*_test.py" | wc -l
# Check for pytest
grep -r "pytest" pyproject.toml setup.cfg requirements*.txt 2>/dev/null
# Check for factories
grep -r "factory.Factory\|FactoryBoy" --include="*.py"
```
### 5. Documentation & Conventions (Medium)
**Check for:**
- CLAUDE.md or contributing guide
- Type hints (mypy configuration)
- Code formatters (ruff, black, isort)
- Architecture documentation
**Red flags:**
- No documented conventions
- Inconsistent patterns across apps
- Missing setup instructions
- No type checking
**Scoring:**
- ✅ Good: CLAUDE.md exists, mypy strict, ruff configured
- ⚠️ Fair: Some docs, partial linting
- ❌ Poor: No conventions documented
**Detection commands:**
```bash
# Check for config files
ls -la pyproject.toml setup.cfg mypy.ini .ruff.toml 2>/dev/null
# Check for type hints
grep -r "-> " --include="*.py" | head -20
# Check for CLAUDE.md
ls -la CLAUDE.md .claude/ 2>/dev/null
```
### 6. Migration & Dependency Management (Medium)
**Check for:**
- Migration squashing strategy
- Clear migration dependencies
- requirements.txt or pyproject.toml with pinned versions
- No phantom dependencies
**Scoring:**
- ✅ Good: Squashed migrations, pinned deps, reproducible installs
- ⚠️ Fair: Some migration issues, mostly pinned deps
- ❌ Poor: Migration conflicts, unpinned deps
**Detection commands:**
```bash
# Count migrations per app
find . -path "*/migrations/*.py" -not -name "__init__.py" | cut -d/ -f3 | sort | uniq -c
# Check for merge migrations
find . -path "*/migrations/*.py" -exec grep -l "merge" {} \;
# Check dependency pinning
grep -E "^[a-zA-Z].*==" requirements*.txt 2>/dev/null | wc -l
```
## Assessment Output
Generate `.claude/readiness-report.md`:
```markdown
# Django Parallelization Readiness Report
## Overall Score: X/100
## Dimension Scores
| Dimension | Score | Status |
|-----------|-------|--------|
| App Boundaries | X/20 | ✅/⚠️/❌ |
| Shared State | X/20 | ✅/⚠️/❌ |
| API Contracts | X/20 | ✅/⚠️/❌ |
| Test Infrastructure | X/15 | ✅/⚠️/❌ |
| Documentation | X/15 | ✅/⚠️/❌ |
| Migrations & Deps | X/10 | ✅/⚠️/❌ |
## Blockers (Must Fix)
1. [Critical issue]
## Risks (Should Fix)
1. [High-risk issue]
## Recommendations
1. [Improvement suggestion]
## Django-Specific Notes
- Apps suitable for parallel work: [list]
- Apps requiring sequential work: [list]
- Migration conflict risk: [assessment]
## Parallelization Potential
- Estimated parallel tracks: N
- Suggested app boundaries: [list]
- Sequential dependencies: [list]
```
## Remediation Actions
After assessment, apply fixes. See `references/remediation-checklist.md` for detailed steps.
### Quick Fixes (Do Immediately)
1. **Create .claude/ directory structure**
2. **Create/update CLAUDE.md** with Django conventions
3. **Add ruff/mypy config** if missing
4. **Document existing API endpoints**
### Structural Fixes (Plan Required)
1. **Split god apps** into smaller domain apps
2. **Refactor cross-app signals** into explicit service calls
3. **Add serializer type hints** and explicit fields
4. **Set up integration test harness**
## Infrastructure Setup
After remediation, set up orchestration:
```
project/
├── .claude/
│ ├── readiness-report.md # Assessment results
│ ├── architecture.md # System design
│ ├── tasks/ # Task specs
│ └── contracts/ # Interface definitions
├── CLAUDE.md # Project conventions
├── pyproject.toml # Dependencies & tool config
└── apps/
├── users/ # Example: User domain app
├── orders/ # Example: Order domain app
└── shared/ # Shared utilities only
```
See `references/infrastructure-setup.md` for setup scripts.
## Django-Specific Considerations
### Migration Coordination
When parallel agents modify models in different apps:
- Each agent works on a separate app with isolated migrations
- Use `--merge` only during integration phase
- Consider migration squashing before parallel work
- Document migration dependencies in task specs
### App Isolation Strategies
**Strong isolation (preferred):**
- Each agent owns entire app(s)
- Cross-app communication via services/APIs
- No direct model imports across boundaries
**Soft isolation:**
- Shared read-only models in `shared/` app
- Write operations only in owning app
- Explicit service layer for cross-app writes
### Signal Handling
- Avoid cross-app signals during parallel development
- Convert signals to explicit service calls
- Document signal side effects in contracts
No comments yet. Be the first to comment!