DJLS Salsa

SkillDatabases & data

Use when editing Salsa inputs, tracked functions, database traits, setters, SemanticDb, crate::Db, invalidation behavior, or incremental computation in django-language-server. Handles project-specific Salsa conventions and required impl updates.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the DJLS Salsa skill

What this skill tells your AI

The instructions your AI receives, as published by joshuadavidthomas/django-language-server in .agents/skills/djls-salsa/SKILL.md and read by ahel’s review.

Use this before changing Salsa inputs, tracked functions, database traits, or query plumbing.

Setter and invalidation rules

  • Setter API is project.set_field(db).to(value), not .set_field(db, value).
  • Compare before setting because setters always invalidate.
  • Use #[returns(ref)] on fields returning owned types.
  • Salsa returns &T for #[returns(ref)], so compare with &new_value.
  • Tracked return types need PartialEq for backdate optimization.

Required updates

  • When adding SemanticDb methods, update impls in:
    • djls-db/src/db.rs
    • djls-bench/src/db.rs
  • When adding crate::Db methods in djls-semantic, update all test database impls. Missing impls produce E0046.

Checks

Search with rg, not grep:

rg "impl crate::Db" crates/djls-semantic/ -g '*.rs'
rg "trait SemanticDb|impl SemanticDb" crates/ -g '*.rs'

Signals

GitHub stars
203
Forks
10
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
djls-salsa
Source
github.com/joshuadavidthomas/django-language-server