This is the canonical instruction file for all coding agents in this repository.
Supported agents include GitHub Copilot, Claude, Codex, Cursor, ChatGPT, and similar tools.
agents.mdis the default policy for all agents..github/instructions/*.mdrules are mandatory when theirapplyTopattern matches the edited file.- Agent adapter files (
CLAUDE.md,CODEX.md,.cursorrules,.github/copilot-instructions.md) should stay minimal and must not duplicate or override project rules.
- Runtime baseline is Python 3.12 (
app/pyproject.toml). - Core stack: Django 5.2+, PostgreSQL, Redis, Celery, Channels, Vue 3.
- Primary development paths:
app/eventyay/for product codeapp/tests/for testsdoc/for documentation
- Legacy product names (
pretix,pretalx,venueless) are historical references only. - If top-level legacy directories such as
talk/,video/, orsrc/appear in a branch, treat them as reference-only unless explicitly requested.
- Multi-tenancy: event-owned ORM queries must be wrapped with
django_scopes.scope(event=event). - Imports: keep imports at file top; only use local imports for circular-import resolution.
- Errors: preserve specific exception types; do not replace with generic
Exception. - JavaScript: no jQuery and no inline scripts; use external ES modules.
- Namespaces: use
eventyay.*imports for new code; do not introduce newpretix.*,pretalx.*, orvenueless.*imports. - ORM efficiency: prefer
select_relatedandprefetch_relatedto avoid N+1 queries.
Always apply the matching scoped rule file before editing:
- Python:
.github/instructions/python.instructions.md - JavaScript:
.github/instructions/js.instructions.md - Django templates:
.github/instructions/django-template.instructions.md - TOML:
.github/instructions/toml.instructions.md - Git commits:
.github/instructions/git-commit.instructions.md
Run from app/ unless noted:
- Install deps:
uv sync --all-extras --all-groups - Activate venv:
. .venv/bin/activate - Migrate DB:
python manage.py migrate - Run dev server:
python manage.py runserver - Run Celery worker:
celery -A eventyay worker -l info - Build assets (dev):
make staticfiles - Build assets (prod):
make production - Test suite:
pytest tests/
Before submitting changes:
- Confirm edited files are in the intended path (
app/eventyay/,app/tests/, or explicitly requested paths). - Confirm imports and namespaces follow
eventyay.*conventions. - Confirm event data queries are scoped with
scope(event=event)where required. - Confirm error handling keeps specific exception types.