code-conventionslisted
Install: claude install-skill skillsgateway/skillsgateway
# Code conventions
## Build & gates
```bash
./mvnw clean verify # everything: Java tests (Arconia/Testcontainers PostgreSQL),
# Spotless, Checkstyle, CycloneDX SBOM, UI gates, packaged jar
(cd src/main/frontend && pnpm test:stories) # Storybook story tests in real chromium (axe-as-error)
(cd src/main/frontend && pnpm e2e) # Playwright vs the real jar + mock OIDC IdP (compose.e2e.yaml)
reqstool status local -p docs/reqstool # must end "N/N complete · PASS" (run after the two above)
openspec validate --all --strict
./mvnw -Pnative -DskipTests native:compile # GraalVM native binary (release path; CI does this)
```
- Always `clean` before trusting the reqstool gate: the annotation processor
writes per-source-set files that incremental compilation truncates.
- The UI is built INSIDE `./mvnw verify` (frontend-maven-plugin, pinned
node/pnpm); `cd src/main/frontend && pnpm …` is only for UI development loops and e2e.
- `./mvnw -q spotless:apply` before committing Java.
## Java
- Java 25, Spring Boot 4. Constructor injection, no Lombok, records for DTOs.
- Persistence via `JdbcClient` + Flyway (no JPA). Single `V1__init.sql` until
the owner says otherwise — fold schema changes into it (Testcontainers
recreate the schema every run).
- Enumerated values are native PostgreSQL enum types, never `TEXT ... CHECK (col
IN (...))`: `CREATE TYPE <singular table>_<column> AS ENUM (...)` (the column
name alone col