Backend Code Rules
SkillDev toolsBackend Java production code, Spring Boot controllers/services/repositories, controller return values, imports, schema ERD pointer. Use when editing backend production Java.
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 Code Rules skill
What this skill tells your AI
The instructions your AI receives, as published by nerds-odd-e/doughnut in .agents/skills/backend-code/SKILL.md and read by ahel’s review.
Migrations: db-migration skill.
Commands
Run backend verification from the repo root:
CURSOR_DEV=true nix develop -c pnpm backend:verify
When no database migration is involved, this is faster:
CURSOR_DEV=true nix develop -c pnpm backend:test_only
Relational Schema
The docs/database-erd.md Mermaid diagram documents tables, foreign keys, and key columns. After Flyway migrations change the schema, regenerate it with the database-erd skill:
CURSOR_DEV=true nix develop -c pnpm export:database-erd
Controller Return Values
- Prefer returning entities, or other types already used as API bodies, from controllers when the JSON shape fits.
- Narrow the serialized surface with
@JsonIgnore,@JsonView, and similar mechanisms already used in the codebase. - Introduce a response DTO only when necessary, such as a different wire shape, aggregating multiple sources, or decoupling from persistence without overloading the entity.
Import Style
- Always use import statements at the top of files.
- Do not use inline fully qualified class names in code.
- Use fully qualified names only when there is a naming conflict between classes with the same simple name from different packages.
Avoid:
ObjectMapper mapper = new com.odde.donut.configs.ObjectMapperConfig().objectMapper();
List<com.theokanning.openai.completion.chat.ChatMessage> messages = ...;
Prefer:
import com.odde.donut.configs.ObjectMapperConfig;
import com.theokanning.openai.completion.chat.ChatMessage;
ObjectMapper mapper = new ObjectMapperConfig().objectMapper();
List<ChatMessage> messages = ...;
Signals
- GitHub stars
- 49
- Forks
- 72
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
backend-code- Source
- github.com/nerds-odd-e/doughnut