Agent skill

Starter Domain Reviewer

by axelixlabs in axelixlabs/axelix

Reviews changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production dependencies, and Java 11+ compatibility.

LGPL-3.0Auto-check passedBackend & APIs

Install Starter Domain Reviewer

skills CLI
$ npx skills add axelixlabs/axelix --skill starter-domain-reviewer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install axelixlabs/axelix starter-domain-reviewer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/axelixlabs/axelix.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agent_skills/starter-domain-reviewer .claude/skills/starter-domain-reviewer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
starter-domain-reviewer
GitHub stars
148
Token cost
~3.3k tokens
SKILL.md length
1,221 words
Files
1
Skills in repo
9
Repo updated
First seen
Licence
LGPL-3.0

At a glance

Reviews changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production dependencies, and Java 11+ compatibility.

  • Works in 5 steps: Production dependencies — merge-blocking → No framework types in main code —… → Java 11+ compatibility — merge-blocking → …
  • Diff touches sbs/starter-domain/
  • SKILL.md covers Module purpose, When to apply, Review workflow and Standards, plus 5 more sections
  • Calls rg, java and git

What it does

Starter Domain Reviewer is an agent skill from axelixlabs/axelix. Reviews changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production dependencies, and Java 11+ compatibility. Use whenever a PR or diff touches sbs/starter-domain/, when the user asks to review starter-domain code, when evaluating starter-domain build.gradle.kts dependency changes, or when reviewing shared starter logic that must work across axelix-spring-boot-2/3/4 starters — even if the user only says "review this PR" and starter-domain files are in the diff.

Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Backend & APIs, covering Backend development. It works with Java, Spring Boot and Gradle. The repository describes itself as: The source code of Axelix - a Delta Force for your Spring Boot ecosystem. The licence is LGPL-3.0.

When your agent uses it

  • Diff touches sbs/starter-domain/
  • The user asks to review starter-domain code
  • Evaluating starter-domain build.gradle.kts dependency changes

Example prompts

  • “review this PR”
  • “Use the starter-domain-reviewer skill to review changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production…”
  • “/starter-domain-reviewer”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Production dependencies — merge-blocking
  2. No framework types in main code — merge-blocking
  3. Java 11+ compatibility — merge-blocking
  4. Test and concurrencyTest dependencies — relaxed but bounded
  5. Placement and API design

What it can do on your machine

Read from SKILL.md and the folder at commit 1372f71. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • rg
    • java
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Starter Domain Reviewer loads about 3.3k tokens when it runs. Until then it costs about 130 tokens; SKILL.md has 1,221 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~130
When it runs · the whole SKILL.md, loaded when a task matches
~3.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from axelixlabs/axelix at commit 1372f71, republished under its LGPL-3.0 licence (© axelixlabs). 1,221 words, ~3,258 tokens.

Download SKILL.mdSave it as .claude/skills/starter-domain-reviewer/SKILL.md (or your agent's skills folder).
name
starter-domain-reviewer
description
Reviews changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production dependencies, and Java 11+ compatibility. Use whenever a PR or diff touches sbs/starter-domain/, when the user asks to review starter-domain code, when evaluating starter-domain build.gradle.kts dependency changes, or when reviewing shared starter logic that must work across axelix-spring-boot-2/3/4 starters — even if the user only says "review this PR" and starter-domain files are in the diff.

Starter-Domain Reviewer

Guide for AI agents reviewing changes in sbs/starter-domain — the shared, framework-neutral domain layer used by every Axelix Spring Boot starter (axelix-spring-boot-2-starter, axelix-spring-boot-3-starter, axelix-spring-boot-4-starter).

Apply this skill whenever a PR creates, modifies, or deletes files under sbs/starter-domain/, including build.gradle.kts.

Module purpose

starter-domain is the module that is supposed to represent the domain logic of our starters that is independent from Spring, Hibernate, Junit or any technology that may differ in various different spring boot versions.

As a result, starter-domain must NEVER include the dependencies like:

  • spring-boot
  • hibernate
  • jackson
  • thymeleaf

and so on - anything that is subject to change in between major spring boot versions - cannot be used in starter-domain. This is an absolute must.

Note that however for the dependencies that are not ending up in the end-user's classpath - we're free to choose whatever we want. But again, since we must complie for java 11, we cannot use e.g. Spring Boot Test version 3, since it requires java 17. So for "test" dependencies this rule is generally eased, but again, we must consider the fact that we compile to java 11 bytecode.

starter-domain is supposed to be used by all spring boot starters that we have. As a result, the code that is written in the starter-domain module is supposed to be used in the java verisons from 11 up to the very latest. We do not support java 8.

When to apply

  • PR diff touches sbs/starter-domain/** (main, test, concurrencyTest, or build.gradle.kts).
  • User asks to review starter-domain, starter shared logic, or framework-neutral starter code.
  • User asks whether starter-domain changes are merge-ready.

If starter-domain is untouched, do not apply unless the user explicitly asks about starter-domain impact of changes elsewhere (e.g. a new type referenced from starter-domain).

Review workflow

  1. Identify scope — List changed files under sbs/starter-domain/ (git diff / PR files API). Include build.gradle.kts and both src/main and src/test (plus src/concurrencyTest if present).
  2. Check production classpath — Inspect sbs/starter-domain/build.gradle.kts for any new/changed api, implementation, compileOnly, or runtimeOnly dependencies. Flag anything version-sensitive or framework-specific.
  3. Scan main sources — In src/main/**, search imports and public API signatures for forbidden framework types (see Forbidden in production).
  4. Check Java baseline — Confirm options.release = 11 / JvmTarget.JVM_11 remain set; scan for Java 17+ language APIs or bytecode-only features.
  5. Review design fit — Does new logic belong in starter-domain, or in a version-specific starter module? Prefer abstractions over framework types.
  6. Review tests separately — Apply test-reviewer for test quality; apply this skill's test-dependency rules below.
  7. Report using the output format at the end. Block merge on any 🔴 finding.

Standards

1. Production dependencies — merge-blocking

Rule: Nothing that varies across Spring Boot major versions may appear on the production classpath of starter-domain.

Forbidden dependency groups (non-exhaustive — block anything in the same category):

CategoryExamples
Springspring-boot-*, spring-*, spring-cloud-*, spring-kafka, spring-data-*
Persistencehibernate-*, spring-boot-starter-data-jpa, JDBC drivers as implementation
Serialization / templatingjackson-*, thymeleaf, freemarker, gson
Web stacksspring-boot-starter-web, spring-boot-starter-webflux, jakarta.servlet-*, javax.servlet-*
Test-only libs on mainjunit-*, mockito-*, assertj-*, spring-boot-starter-test

Allowed production dependencies (typical):

  • project(":common:auth"), project(":common:api"), project(":common:domain"), project(":common:utils") — already declared as api
  • JDK / java.*, javax.sql.* (e.g. DataSource)
  • org.jspecify:jspecify (via shared plugin)
  • Other small, version-stable libraries only if they do not pull Spring/Jackson/Hibernate onto the end-user classpath

Flag as 🔴 when:

  • build.gradle.kts adds implementation / api / runtimeOnly for any forbidden group above.

Flag as 🟡 when:

  • compileOnly is used for a framework type (discouraged in starter-domain; prefer string-based detection or an interface in starter-domain with impl in the starter module).
2. No framework types in main code — merge-blocking

Production code (src/main/**) must not import or expose types from version-sensitive frameworks.

Scan commands (run on changed main files or whole module when in doubt):

bash
rg 'import (org\.springframework|org\.hibernate|com\.fasterxml|org\.thymeleaf|jakarta\.servlet|javax\.servlet)' sbs/starter-domain/src/main

Acceptable patterns already in the codebase:

  • Abstraction interfaces with framework-specific implementations in starter modules — e.g. EndpointPathMatcher in starter-domain; Spring PathPattern adapter lives in axelix-spring-boot-*-starter.
  • String-based class presence checks — e.g. SpringCloudVersionResolver referencing "org.springframework.cloud.client.CommonsClientAutoConfiguration" without importing Spring.
  • JDK and common/* types — e.g. com.axelixlabs.axelix.common.domain.http.HttpMethod instead of org.springframework.http.HttpMethod.
  • Javadoc references to Spring class names (documentation only, not compile-time deps).

Flag as 🔴 when:

  • src/main imports org.springframework.*, org.hibernate.*, com.fasterxml.jackson.*, org.thymeleaf.*, etc.
  • Public method signatures, fields, or return types use framework classes (ApplicationContext, BeanFactory, PathPattern, ObjectMapper, EntityManager, …).
  • Spring/Jakarta annotations on production types (@Component, @Configuration, @Autowired, @Transactional, …).
  • Production code uses Spring-specific utilities when a JDK or starter-domain utility exists (ClassUtils / ProxyUtils in this module — not Spring's).

Flag as 🟡 when:

  • Logic duplicates Spring behavior inline with a comment linking to Spring source — acceptable if unavoidable, but suggest extracting a named utility or documenting why an interface boundary is not possible.
Show full SKILL.md (482 more words)Show less
3. Java 11+ compatibility — merge-blocking

starter-domain compiles to Java 11 bytecode (options.release = 11, Kotlin JvmTarget.JVM_11). It must run on Java 11 through the latest supported Java. Java 8 is not supported.

Flag as 🔴 when:

  • build.gradle.kts raises release / jvmTarget above 11 for this module.
  • Main or test code uses Java 17+ language features: record, sealed types/interfaces, pattern-matching switch, multi-line string blocks requiring 15+ if SB2 consumers compile against this API surface.
  • Main or test code calls APIs added after Java 11 without guards — e.g. List.of / Map.of (OK, Java 9+), but not Stream.toList() (Java 16+) in code that must stay 11-clean; prefer collect(Collectors.toList()).
  • Test dependencies require Java 17+ (e.g. Spring Boot 3.x spring-boot-starter-test as the test platform for this module).

Flag as 🟡 when:

  • String.isBlank() / String.strip() (Java 11) — fine.
  • Kotlin used only in concurrencyTest with JVM 11 target — fine.
4. Test and concurrencyTest dependencies — relaxed but bounded

Test-scoped dependencies (testImplementation, testRuntimeOnly, concurrencyTest suite deps) do not ship to end users, so Spring Boot Test and similar are allowed only in test sources.

Current baseline in build.gradle.kts: Spring Boot 2.7.18 BOM for tests (Java 11 compatible).

Flag as 🔴 when:

  • Test dependency upgrade forces Java 17+ for compiling or running starter-domain tests.
  • Framework types leak from tests into src/main (e.g. copying a Spring helper into production to support a test).

Flag as 🟡 when:

  • New tests use @SpringBootTest where a plain unit test with mocks would suffice — suggest simplification, not a merge block.
5. Placement and API design

Ask: Does this code belong in starter-domain, or in a version-specific axelix-spring-boot-*-starter module?

Belongs in starter-domainBelongs in a starter module
Pure domain logic, algorithms, value typesSpring @Configuration, @Bean, auto-configuration
Interfaces implemented differently per SB versionEnvironmentPostProcessor, BeanPostProcessor, Actuator endpoint wiring
Registration/metadata assembly without Spring typesCode that imports ApplicationContext or actuator infrastructure

Flag as 🔴 when:

  • Version-specific branching for Spring Boot 2 vs 3 vs 4 is added to starter-domain — belongs in the respective starter with shared contracts in starter-domain.

Flag as 🟡 when:

  • New public API is overly broad for all starters; suggest narrowing or package-private default with public interface.

Severity

LevelMeaningMerge
🔴 BlockingForbidden production dep, framework import/signature in main, Java baseline violation, version-specific logic in starter-domainDo not approve until fixed
🟡 SuggestionTest simplification, compileOnly smell, API shape, duplicationApprove with comments optional
🟢 NoteStyle, naming, unrelated polishInformational

Any 🔴 finding means: we cannot merge such PR (for starter-domain defects).

Blocking a PR

When the review has one or more 🔴 blocking findings:

  1. Add the label blocked-by-ai-reviewer (if reviewing on GitHub).
  2. Post one PR comment — single top-level summary, brief bullets.

Example:

markdown
## starter-domain review — blocked

This PR cannot be merged until these starter-domain issues are fixed:

- [production dep] `build.gradle.kts` — added `implementation("org.springframework.boot:spring-boot-starter-web")`
- [framework type] `FooService.java` — public method returns `org.springframework.context.ApplicationContext`
- [java baseline] `Bar.java` — uses `record` (requires Java 16+)

Do not add the label when there are only 🟡 / 🟢 items.

Review output format

markdown
## starter-domain review

**Scope:** [files / areas reviewed]

### Dependency check
| Dependency / import | Scope | Status |
|---------------------|-------|--------|
| [coordinate or import] | main / test | ✅ OK / ❌ forbidden |

### Findings

#### 🔴 Blocking
- **[file:line]** — [production dep | framework type | java baseline | misplaced logic] — [what's wrong] — [what to do]

#### 🟡 Suggestions
- **[file:line]** — [brief suggestion]

### Verdict
**[Approve / Request changes — N blocking issue(s)]**

When the verdict is Request changes, apply Blocking a PR.

For PRs that also change tests, cross-reference test-reviewer findings in a separate Test review section.

Quick checklist

- [ ] No new version-sensitive deps on api/implementation/runtimeOnly in build.gradle.kts
- [ ] src/main has no imports from Spring, Hibernate, Jackson, Thymeleaf, servlet APIs
- [ ] Public API uses JDK + common/* + starter-domain types only
- [ ] No Spring/Jakarta annotations on production types
- [ ] Module still targets Java 11 bytecode; no Java 17+ language features
- [ ] Test deps remain Java 11-compatible (SB 2.7.x test BOM or equivalent)
- [ ] New logic is framework-neutral; version-specific code stays in axelix-spring-boot-*-starter
- [ ] Framework integration uses interfaces or string-based detection, not direct coupling

Reference: module layout

sbs/starter-domain/
├── build.gradle.kts          # release 11; test BOM spring-boot 2.7.18
├── src/main/java/...         # production — strict rules apply
├── src/test/java/...         # tests — Spring allowed; Java 11 compile
└── src/concurrencyTest/kotlin/  # Lincheck suite; JVM 11 target

Consumers: axelix-spring-boot-2-starter (compileOnly + tests), axelix-spring-boot-3-starter, axelix-spring-boot-4-starter (api — starter-domain on user classpath).

© axelixlabs, LGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agent_skills/starter-domain-reviewer of axelixlabs/axelix.

Open the folder on GitHubat commit 1372f71

Compare with similar skills

Starter Domain Reviewer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Starter Domain Reviewer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Starter Domain Reviewer this skillaxelixlabs/axelix148—~3.3kAutomated safety check: PassLGPL-3.0
Progensivaprasadreddy/sivalabs-agent-skills188—~2.7kAutomated safety check: NotesMIT
Java ArchitectJeffallan/claude-skills12k—~1.5kAutomated safety check: PassMIT
Spring Mvc To Boot MigratorArabelaTso/Skills-4-SE253—~2.2kAutomated safety check: PassApache-2.0
Java Add Graalvm Native Image Supportgithub/awesome-copilot40k1 repos~3.2kAutomated safety check: PassMIT
Java Patternssoftspark/ai-toolkit179—~3.4kAutomated safety check: PassApache-2.0

Similar skills

  • Progen

    sivaprasadreddy/sivalabs-agent-skills

    A skill your agent uses when the user wants to create/generate/scaffold a new Spring Boot project (Maven or Gradle, REST API / Web App / Spring Boot + Angular full stack).

    188 GitHub stars~2.7k tokensUpdated 6 days ago
    Backend & APIsAuto-check: notes
  • Java Architect

    Jeffallan/claude-skills

    Builds Spring Boot 3.x services on Java 21 with domain-driven design, WebFlux, JPA tuning and Spring Security using OAuth2 and JWT, verified by Maven or Gradle builds.

    12k GitHub stars~1.5k tokensUpdated 8 days ago
    Backend & APIsAuto-check passed
  • Spring Mvc To Boot Migrator

    ArabelaTso/Skills-4-SE

    Automatically migrate Spring MVC applications to Spring Boot.

    253 GitHub stars~2.2k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Official

    GraalVM Native Image expert that adds native image support to Java applications, builds the project, analyzes build errors, applies fixes, and iterates until successful compilation using Oracle best…

    40k GitHub starsUsed in 1 repo~3.2k tokens
    Backend & APIsAuto-check passed
  • Java Patterns

    softspark/ai-toolkit

    Java: Spring Boot, CompletableFuture, records, sealed types, JPA/Hibernate, virtual threads.

    179 GitHub stars~3.4k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Graalvm Native Image

    giuseppe-trisciuoglio/developer-kit

    Provides expert guidance for building GraalVM Native Image executables from Java applications.

    357 GitHub stars~3.9k tokensUpdated 1 mo ago
    Backend & APIsAuto-check: notes

More from axelixlabs/axelix

All 9 skills in this repo
  • Config Breaking Changes

    axelixlabs/axelix

    Review configuration property changes in the Axelix project for breaking changes and migration-policy compliance.

    148 GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Backlog Refiner

    axelixlabs/axelix

    Refine and triage GitHub backlog by finding open issues that are stale, obsolete, or resolved by another path.

    148 GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Pick open GitHub issues in the Axelix monorepo that are suitable for unpaid volunteer contributors working in their spare time.

    148 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Prepare Minor Release

    axelixlabs/axelix

    Prepare an Axelix minor lockstep release — the pre-release housekeeping changes, a hand-editable release-notes draft, and the post-release bump to the next -SNAPSHOT.

    148 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Create batched Dependabot-style pull requests for GitHub security findings in axelixlabs/axelix, grouped by dependency surface such as master/front-end, master/build.gradle.kts, or starter Gradle…

    148 GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Test Reviewer

    axelixlabs/axelix

    Reviews test code in GitHub pull requests for isolation, public-API contract coverage, AAA structure, and correct exception assertions.

    148 GitHub stars~3.2k tokensUpdated today
    Auto-check passed

Categories

Questions about Starter Domain Reviewer

What does Starter Domain Reviewer do?

Reviews changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production dependencies, and Java 11+ compatibility. Starter Domain Reviewer is an agent skill from axelixlabs/axelix. Reviews changes in sbs/starter-domain for technology-agnostic domain logic, forbidden production dependencies, and Java 11+ compatibility.

When should I use Starter Domain Reviewer?

Starter Domain Reviewer fits situations like: diff touches sbs/starter-domain/; the user asks to review starter-domain code; evaluating starter-domain build.gradle.kts dependency changes.

How do I install Starter Domain Reviewer in Claude Code?

Run `npx skills add axelixlabs/axelix --skill starter-domain-reviewer -a claude-code`. Or copy the skill folder (.agent_skills/starter-domain-reviewer in axelixlabs/axelix) into .claude/skills/starter-domain-reviewer in your project. Claude Code loads it when a task matches its description.

How do I install Starter Domain Reviewer in Codex?

Run `npx skills add axelixlabs/axelix --skill starter-domain-reviewer -a codex`. Or copy the skill folder (.agent_skills/starter-domain-reviewer in axelixlabs/axelix) into .agents/skills/starter-domain-reviewer in your project. Codex loads it when a task matches its description.

Can I use Starter Domain Reviewer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add axelixlabs/axelix --skill starter-domain-reviewer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/starter-domain-reviewer, .gemini/skills/starter-domain-reviewer, .github/skills/starter-domain-reviewer and .opencode/skills/starter-domain-reviewer in your project.

What does Starter Domain Reviewer need to run?

Going by SKILL.md and its folder, Starter Domain Reviewer needs the command-line tools its instructions call (rg, java and git).

Does Starter Domain Reviewer access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Starter Domain Reviewer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Starter Domain Reviewer use?

Starter Domain Reviewer is published under the LGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Starter Domain Reviewer use?

About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Starter Domain Reviewer?

Skills that share tags, products or a category with Starter Domain Reviewer: Progen (sivaprasadreddy/sivalabs-agent-skills, 188 stars), Java Architect (Jeffallan/claude-skills, 12k stars), Spring Mvc To Boot Migrator (ArabelaTso/Skills-4-SE, 253 stars) and Java Add Graalvm Native Image Support (github/awesome-copilot, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Starter Domain Reviewer?

axelixlabs (a GitHub organization) maintains it in axelixlabs/axelix, which has 148 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 10, 2026.

Source: axelixlabs/axelix on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.