
Eliteforge New Java Biz Package
- 15 installs
- Updated July 24, 2026
- cloudsen/eliteforge-skills
Creates a new Java business package with the EliteForge directory and naming structure.
About
Scaffolds a new Java business-logic package in EliteForge layout. A developer uses it when adding a new business module to an EliteForge Java project.
- New Java business package scaffold
- Follows EliteForge package conventions
Eliteforge New Java Biz Package by the numbers
- 15 all-time installs (skills.sh)
- Ranked #71 of 89 Java & JVM skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/cloudsen/eliteforge-skills --skill eliteforge-new-java-biz-packageAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 15 |
|---|---|
| Last updated | July 24, 2026 |
| Repository | cloudsen/eliteforge-skills ↗ |
What it does
Creates a new Java business package with the EliteForge directory and naming structure.
Files
Java 业务包骨架
直接按固定骨架生成,不做 controller 目录风格切换。优先使用 scripts/scaffold_java_biz_package.py 生成目录骨架,再按用户要求补类、文档或占位文件。
工作流
1. 确认目标业务包根目录,例如 .../base/config、.../task 或其他 src/main/java 下的领域包。 2. 运行脚本创建骨架,controller 固定生成 api、innerapi、openapi。 3. 仅当用户明确要求时,再补 Controller、ApplicationService、Repository、Mapper、DTO/VO/Entity 等 Java 文件。 4. 仅当用户明确要求设计文档时,再使用 $eliteforge-tech-doc 和 $eliteforge-java-uml 技能创建 docs/tech-design.md、.puml、.svg;如果仓库规范要求,调用对应文档技能,不要写空洞占位文档。
快速命令
python3 scripts/scaffold_java_biz_package.py <target-dir>
python3 scripts/scaffold_java_biz_package.py <target-dir> --dry-run约束
- 默认骨架、目录职责和命名落位见
references/layout-spec.md。 - controller 子目录固定使用全小写包名
api/innerapi/openapi,不做自动探测,也不提供切换参数。 - 默认创建根目录
.gitkeep、repository/.gitkeep、service/.gitkeep。不要在所有空目录里滥加.gitkeep,除非用户明确要求保留空目录。 service根目录放xxxApplicationService,实现放service/impl。repository根目录放xxxRepository,实现放repository/impl,MyBatis Mapper 放repository/mapper。controller/api面向前端,controller/innerapi面向内部服务调用,controller/openapi面向外部开放平台。- 如果当前仓库要求模块设计文档必须走指定技能,先按仓库规范调用对应技能,再补
docs/下的真实设计产物。 - 如果用户只要目录骨架,不要额外生成假类、假接口、假 UML 或空内容设计稿。
- 如果用户还要求“补一个完整模块”,先用本 skill 落目录,再继续按仓库规范补代码和文档。
interface:
display_name: "Java 业务包骨架"
short_description: "创建或补齐 Java 业务包目录骨架并对齐仓库分层规范"
default_prompt: "使用 $eliteforge-new-java-biz-package 为当前仓库创建一个 Java 业务包目录骨架。"
Java 业务包目录规范
默认骨架
<biz-package>/
├── .gitkeep
├── controller
│ ├── api
│ ├── innerapi
│ └── openapi
├── docs
├── domain
├── model
│ ├── converter
│ ├── dto
│ ├── entity
│ ├── enums
│ ├── record
│ └── vo
├── repository
│ ├── .gitkeep
│ ├── impl
│ └── mapper
├── service
│ ├── .gitkeep
│ └── impl
└── util目录职责
| 目录 | 职责 |
|---|---|
util | 当前领域下的工具类目录。 |
model | 放当前业务包的 POJO。 |
model/converter | DTO、Entity、VO、Record 等对象转换器。 |
model/dto | 入参、命令、查询 DTO。 |
model/entity | 持久化实体。 |
model/enums | 枚举对象。 |
model/record | Record 类型对象。 |
model/vo | 对外返回视图对象。 |
controller/api | 面向前端的接口,需要在 API 网关统一鉴权。 |
controller/innerapi | 面向服务间内部调用的接口,不需要业务侧再做鉴权;典型类为 xxxInnerController implements XxxClient。 |
controller/openapi | 面向外部开放平台的接口,对业务能力做二次封装后对外暴露,并保持兼容性。 |
service | 放 xxxApplicationService 等应用服务。 |
service/impl | 业务服务实现类。 |
repository | 放 xxxRepository 仓储接口。 |
repository/impl | 仓储接口实现。 |
repository/mapper | MyBatis / MyBatis-Plus xxxMapper 类。 |
docs | 设计文档目录;需要真实设计产物时再补 tech-design.md、.puml、.svg。 |
命名与创建规则
- 只创建目录骨架时,不主动生成 Java 占位类。
- 只创建目录骨架时,不主动生成空白
tech-design.md、.puml等设计文档。 - 若用户明确要求同时补完整代码,再按职责将类落到对应目录,而不是都塞进
service/impl或controller根目录。 - 若用户明确要求模块设计文档,优先调用仓库要求的设计文档技能,再补
docs/中的实际文件。
#!/usr/bin/env python3
"""Scaffold a Java business-package directory layout."""
from __future__ import annotations
import argparse
from pathlib import Path
CONTROLLER_DIRS = ("api", "innerapi", "openapi")
COMMON_DIRS = (
"docs",
"domain",
"model/converter",
"model/dto",
"model/enums",
"model/entity",
"model/record",
"model/vo",
"repository/impl",
"repository/mapper",
"service/impl",
"util",
)
KEEP_FILES = (
".gitkeep",
"repository/.gitkeep",
"service/.gitkeep",
)
def parse_args() -> argparse.Namespace:
"""Parse command-line arguments."""
parser = argparse.ArgumentParser(
description="Create a Java business-package directory layout.",
)
parser.add_argument(
"target_dir",
help="Business-package root directory to create or complete.",
)
parser.add_argument(
"--dry-run",
action="store_true",
help="Print planned changes without touching the filesystem.",
)
return parser.parse_args()
def build_layout(
target_dir: Path,
) -> tuple[list[Path], list[Path]]:
"""Build directory and file creation plans."""
directories = [target_dir]
directories.extend(target_dir / "controller" / name for name in CONTROLLER_DIRS)
directories.extend(target_dir / relative for relative in COMMON_DIRS)
files = [target_dir / relative for relative in KEEP_FILES]
return directories, files
def ensure_dir(path: Path, dry_run: bool) -> str:
"""Create a directory if needed."""
if path.exists():
return f"exists dir {path}"
if dry_run:
return f"create dir {path}"
path.mkdir(parents=True, exist_ok=True)
return f"create dir {path}"
def ensure_file(path: Path, dry_run: bool) -> str:
"""Create a keep file if needed."""
if path.exists():
return f"exists file {path}"
if dry_run:
return f"create file {path}"
path.parent.mkdir(parents=True, exist_ok=True)
path.touch(exist_ok=True)
return f"create file {path}"
def main() -> int:
"""Program entry."""
args = parse_args()
target_dir = Path(args.target_dir).expanduser().resolve()
directories, files = build_layout(
target_dir=target_dir,
)
print(f"target: {target_dir}")
print(f"controller_dirs: {', '.join(CONTROLLER_DIRS)}")
print("docs: create")
print("util: create")
print(f"mode: {'dry-run' if args.dry_run else 'apply'}")
for directory in directories:
print(ensure_dir(directory, args.dry_run))
for file_path in files:
print(ensure_file(file_path, args.dry_run))
return 0
if __name__ == "__main__":
raise SystemExit(main())