create-banking-module
Generates a banking module in the correct domain. Usage: /create-banking-module <domain> <name>
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Create Banking Module
Parameters
| Parameter | Required | Values | Example |
|---|---|---|---|
domain |
Yes | banking, lending, common, data |
lending |
name |
Yes | kebab-case module name | collateral-management |
If the user omits parameters, ask for both before generating.
Resolve Naming
Derive all identifiers from the two parameters:
DOMAIN = {domain} # e.g. lending
NAME = {name} # e.g. collateral-management
SERVICE_NAME = core-{DOMAIN}-{NAME} # e.g. core-lending-collateral-management
PACKAGE_PATH = core.{DOMAIN}.{NAME_DOT} # e.g. core.lending.collateral.management
# (replace hyphens with dots)
Generated File Tree
{SERVICE_NAME}/
pom.xml # root aggregator POM
{SERVICE_NAME}-interfaces/
pom.xml
src/main/java/com/firefly/{PACKAGE_PATH}/interfaces/dtos/
src/main/java/com/firefly/{PACKAGE_PATH}/interfaces/enums/
{SERVICE_NAME}-models/
pom.xml
src/main/java/com/firefly/{PACKAGE_PATH}/models/entities/
src/main/java/com/firefly/{PACKAGE_PATH}/models/repositories/
src/main/resources/db/migration/
{SERVICE_NAME}-core/
pom.xml
src/main/java/com/firefly/{PACKAGE_PATH}/core/services/
src/main/java/com/firefly/{PACKAGE_PATH}/core/mappers/
{SERVICE_NAME}-web/
pom.xml
src/main/java/com/firefly/{PACKAGE_PATH}/web/
src/main/java/com/firefly/{PACKAGE_PATH}/web/controllers/
src/main/java/com/firefly/{PACKAGE_PATH}/web/openapi/
src/main/resources/application.yaml
{SERVICE_NAME}-sdk/
pom.xml
Root POM
Generate {SERVICE_NAME}/pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.firefly</groupId>
<artifactId>firefly-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath/>
</parent>
<artifactId>{SERVICE_NAME}</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>{SERVICE_NAME}-interfaces</module>
<module>{SERVICE_NAME}-models</module>
<module>{SERVICE_NAME}-core</module>
<module>{SERVICE_NAME}-web</module>
<module>{SERVICE_NAME}-sdk</module>
</modules>
<properties>
<java.version>25</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.release>${java.version}</maven.compiler.release>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>firefly-bom</artifactId>
<version>1.0.0-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}-interfaces</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}-models</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}-core</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}-web</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}-sdk</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
Module POMs
-interfaces
Dependencies: fireflyframework-utils, fireflyframework-validators, swagger-annotations, jackson-databind.
-models
Dependencies: {SERVICE_NAME}-interfaces, fireflyframework-r2dbc, spring-boot-starter-data-r2dbc, r2dbc-postgresql, flyway-core.
-core
Dependencies: {SERVICE_NAME}-interfaces, {SERVICE_NAME}-models, fireflyframework-starter-core, mapstruct, lombok.
-web
Set properties openapi.gen.skip=false and openapi.gen.mainClass=com.firefly.{PACKAGE_PATH}.web.openapi.OpenApiGenApplication. Dependencies: {SERVICE_NAME}-core, {SERVICE_NAME}-interfaces, fireflyframework-web, spring-boot-starter-webflux, spring-boot-starter-actuator, springdoc-openapi-starter-webflux-ui, micrometer-registry-prometheus. Include spring-boot-maven-plugin, maven-compiler-plugin, and maven-resources-plugin in build.
-sdk
Dependencies: {SERVICE_NAME}-web (provided scope). Include openapi-generator-maven-plugin with inputSpec pointing to ../{SERVICE_NAME}-web/target/openapi/openapi.yml, generatorName=java, library=webclient, reactive=true.
Spring Boot Application Class
Generate in -web module at com.firefly.{PACKAGE_PATH}.web:
package com.firefly.{PACKAGE_PATH}.web;
import io.swagger.v3.oas.annotations.*;
import io.swagger.v3.oas.annotations.info.*;
import io.swagger.v3.oas.annotations.servers.*;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.data.r2dbc.config.EnableR2dbcAuditing;
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories;
import org.springframework.web.reactive.config.EnableWebFlux;
@SpringBootApplication(scanBasePackages = {
"com.firefly.{PACKAGE_PATH}",
"org.fireflyframework.web"
})
@EnableWebFlux
@EnableR2dbcRepositories(basePackages = "com.firefly.{PACKAGE_PATH}.models.repositories")
@EnableR2dbcAuditing
@ConfigurationPropertiesScan
@OpenAPIDefinition(
info = @Info(
title = "${spring.application.name}",
version = "${spring.application.version}",
description = "${spring.application.description}",
contact = @Contact(
name = "${spring.application.team.name}",
email = "${spring.application.team.email}"
)
),
servers = {
@Server(url = "http://core.getfirefly.io/{SERVICE_NAME}", description = "Development"),
@Server(url = "/", description = "Local")
}
)
public class {ApplicationClassName} {
public static void main(String[] args) {
SpringApplication.run({ApplicationClassName}.class, args);
}
}
application.yaml
Generate Spring Cloud Config client + R2DBC + Flyway + actuator config using the template from the create-banking-service skill, section 6 "Application Configuration". Set spring.application.name to {SERVICE_NAME} and springdoc.packages-to-scan to com.firefly.{PACKAGE_PATH}.web.controllers.
SDK Registration in firefly-bom
Print instructions to add two entries to firefly-bom/pom.xml:
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.firefly</groupId>
<artifactId>{SERVICE_NAME}-sdk</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
Place in the correct BOM section: Core Banking, Core Lending, Core Common, or Core Data.
After Generation
Tell the user:
- Register the module in
firefly-bom/pom.xml(show the entries above). - Create the database and set
DB_*environment variables. - Add a
V1__{service_name}_init.sqlFlyway migration in-models/src/main/resources/db/migration/. - Run
mvn clean verifyfrom the root to confirm compilation. - Reference the
create-banking-serviceskill for full details on tier differences, domain/experience/app-tier variants, and integration checklists.
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-03-11
- Index updated
- 2026-03-11
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!