# Pom Ordering

> Enforce Maven POM dependency ordering rules. This skill should be used when editing pom.xml files. Use when this capability is needed.

- Skill: `tomevault-io/pom-ordering` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/pom-ordering`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/pom-ordering/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/pom-ordering

---


## Ordering Rules

First, group dependencies by scope (compile, runtime, test).

Within each scope, group by groupId in this order:

1. First-party (${project.groupId} or modules within the project)
2. cool.klass
3. io.liftwizard
4. org.eclipse.collections
5. io.dropwizard
6. Other third-party libraries
7. Jakarta

## Region Comment Structure

Use region comments for each groupId+scope combination:

- `<!--region Project compile dependencies -->`
- `<!--region Project runtime dependencies -->`
- `<!--region Klass compile dependencies -->`
- `<!--region Klass runtime dependencies -->`
- `<!--region Liftwizard compile dependencies -->`
- `<!--region Liftwizard runtime dependencies -->`
- `<!--region Compile dependencies -->` (for other dependencies)
- `<!--region Runtime dependencies -->`
- `<!--region Test dependencies -->`

Close each region with `<!--endregion [name] -->`

Within some groups, use nested regions for further organization:

- For io.liftwizard runtime: `<!--region Liftwizard bundles -->` then `<!--region Liftwizard config-->`
- For io.dropwizard: core modules first, then specialized modules

## Example Structure

```xml
<dependencies>

    <!--region Project compile dependencies -->
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>example-services</artifactId>
        <version>${project.version}</version>
    </dependency>
    <!--endregion-->

    <!--region Project runtime dependencies -->
    <dependency>
        <groupId>${project.groupId}</groupId>
        <artifactId>example-domain-model</artifactId>
        <version>${project.version}</version>
        <scope>runtime</scope>
    </dependency>
    <!--endregion-->

    <!--region Liftwizard runtime dependencies -->
    <dependency>
        <groupId>io.liftwizard</groupId>
        <artifactId>liftwizard-graphql-reladomo-meta</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!--region Liftwizard bundles -->
    <dependency>
        <groupId>io.liftwizard</groupId>
        <artifactId>liftwizard-bundle-cors</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--endregion-->

    <!--region Liftwizard config-->
    <dependency>
        <groupId>io.liftwizard</groupId>
        <artifactId>liftwizard-config-logging-logstash-console</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!--endregion-->
    <!--endregion-->

    <!--region Test dependencies -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <scope>test</scope>
    </dependency>
    <!--endregion-->

</dependencies>
```

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/motlin) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

