Skip to content
Back to skills

Backend

ASecurity

Backend engineering conventions for team. Java/Kotlin servers. Project conventions in .claude/conventions/backend.md override these defaults.

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 6, 2026
ai-agentsjavakotlinsqlvuespringapibackend

Works with

  • api

Security analysis

A100/100

Scanned October 6, 2026

npx -y skills add Pierry/harness-kit --skill backend --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Backend?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Backend
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pierry-backend/badge)](https://www.skillsdirectory.com/skills/pierry-backend)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: backend
description: Backend engineering conventions for team. Java/Kotlin servers. Project conventions in .claude/conventions/backend.md override these defaults.
user_invocable: false
---

Backend conventions, team default.

Project override: if `{repo}/.claude/conventions/backend.md` exists, overrides any rule here. See guides/conventions-override.md.

## Defaults

Illustrative defaults for JVM-leaning backend. Override per repo via `.claude/conventions/backend.md`.

Stack:
- Java or Kotlin (check pom.xml or build.gradle.kts)
- Spring Boot (current major) or Ktor for Kotlin services
- Build: Maven (mvn) or Gradle (gradlew)
- Deploy: JAR with embedded server
- Package prefix: match repo convention

Persistence:
- Custom JDBC AbstractRepository + SQL templates. Avoid JPA except where repo already uses it.
- Migrations via Flyway, naming `V{YYYYMMDD}__{description}.sql`.

Mapping:
- Orika 1.5.x. Avoid MapStruct unless repo already uses it.

Lombok:
- `@Data`, `@Builder`, `@RequiredArgsConstructor` OK.
- Avoid `@SneakyThrows`. Be explicit about checked exceptions.

Null handling:
- `Objects.equals()` for equality.
- `Boolean.TRUE.equals(...)` for nullable booleans.
- Guards and early returns. Avoid deep nesting.

Streams:
- Fluent: `.stream().filter(...).findAny().orElseThrow(...)`.
- Avoid stream-of-stream when guard would do.

Transactions:
- `@Transactional` on service methods, not repositories.

Tests:
- JUnit 4 + Mockito legacy; JUnit 5 + Mockito for newer.
- `@RunWith(MockitoJUnitRunner.class)` (JUnit 4) or `@ExtendWith(MockitoExtension.class)` (JUnit 5).
- Naming: `givenX_WhenY_ShouldZ` or `shouldDoSomethingWhenCondition`.
- Cover positive, negative, edge cases.
- `verify()` with `never()`, `times()`, arg matchers.

## Before writing code

Read at least 3 similar files in target repo to confirm:
- framework version
- build tool
- package layout
- test framework
- helpers in use (Lombok, Orika, custom)

Never assume. Stack varies per repo.

## Forbidden in PR

- new JPA usage in repos that use AbstractRepository
- MapStruct in repos using Orika
- Composition API in Vue 2 repos (web side)
- code without tests
- `@SuppressWarnings` to silence real issues
- placeholder TODO comments without ticket reference

## Mark gaps

If you cannot find pattern in repo, do not invent:

```java
// TBD - verify with tech lead: {what you searched, what is missing}
```

Read actual code first. TODO with context beats fabricated code.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.