djls-salsa

star 186

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.

joshuadavidthomas By joshuadavidthomas schedule Updated 5/9/2026

name: djls-salsa description: 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.

DJLS Salsa

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'
Install via CLI
npx skills add https://github.com/joshuadavidthomas/django-language-server --skill djls-salsa
Repository Details
star Stars 186
call_split Forks 10
navigation Branch main
article Path SKILL.md
More from Creator
joshuadavidthomas
joshuadavidthomas Explore all skills →