Backend
SkillDev toolsBackend Java, Spring Boot controllers/services, JUnit controller tests, MakeMe. Read this first for any backend work. Use when working on the Java Spring backend.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Backend skill
What this skill tells your AI
The instructions your AI receives, as published by nerds-odd-e/doughnut in .agents/skills/backend/SKILL.md and read by ahel’s review.
Java/Spring in backend/src/main/java/com/odde/donut/. Tests under backend/src/test/. Schema changes: db-migration skill.
Matching backend-code (production Java) and backend-testing (tests) skills attach via paths when those files are in context — do not fetch them up front.
Commands
CURSOR_DEV=true nix develop -c pnpm backend:test_only
When a database migration is involved:
CURSOR_DEV=true nix develop -c pnpm backend:verify
Always run all backend unit tests, not a selected file or test case.
Production
- Controllers: return entities (or existing API body types). Narrow with
@JsonIgnore/@JsonView. Introduce a response DTO only when the wire shape differs. - Top-of-file imports. No inline fully qualified class names except when two types share a simple name.
- After Flyway schema changes, regenerate
docs/database-erd.mdwith thedatabase-erdskill (pnpm export:database-erd). - Note collections name their trash semantics.
NoteRepository.findAllByNotebookIdOrderByIdAscis the complete stored content, trash included (export, Git snapshots, learning-session title recognition);findAvailableNotesByNotebookIdOrderByIdAscand theNote.JPA_AVAILABLE/NATIVE_AVAILABLEpredicates select participating notes (search, recall, health rules);findOccupiedFolderIdsByNotebookIdcounts stored content for folder occupancy. On a loadedNote,isTrashed()follows current folder ancestry andisTrashedInDatabase()is the persisted membership as loaded. Root_trashmembership is owned byFolder.isTrashedand thetrashed_folderview; do not recreate the rule in callers.
Tests
Small-test style (unit-testing skill): prefer controller (HTTP-stable-boundary) tests; cover services/repos via realistic makeMe preconditions and the real DB (@Transactional). Test a service/algorithm directly only when it is an intentional domain-stable contract.
Mock only external services — OpenAIClient via OpenAiStructuredResponseMock. Ownership: notebookOwnedBy(user) so trackers inherit the owner. Group with @Nested.
Signals
- GitHub stars
- 49
- Forks
- 72
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
backend-nerds-odd-e- Source
- github.com/nerds-odd-e/doughnut