mcpField
E
eliteforge-java-coding-spec

eliteforge-java-coding-spec

github.com/cloudsen開発40 回インストール
リポジトリ

eliteforge-java-coding-spec について

eliteforge-java-coding-spec は、Java 開発で EliteForge のコーディング規約を適用するスキルです。よくある質問を規約の条項に対応付け、回答に条項番号を記載します。

主な機能

  1. 01Java の規則と判断指針
  2. 02トピックや条項による検索
  3. 03コーディングとツール選定の制約
  4. 04レイヤー構成と API の規約
  5. 05規約条項番号の引用

活用シーン

  1. 01Java の実装方針の確認
  2. 02プロジェクト規約に沿ったコードレビュー
  3. 03API、永続化、並行処理の規則検索

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cloudsen/eliteforge-skills --skill eliteforge-java-coding-spec

インストール後、Claude Code で/eliteforge-java-coding-specを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
java-coding-spec-v1.md
toc.md

詳細

プロジェクトの README より

EliteForge Java 编码规范 v1.0.0

目标

在 Java 开发任务中,依据规范提供明确的决策指引:什么应该做、什么禁止做、什么必须用什么工具/写法。引用规范条款时给出对应的 spec 行号。

执行原则

  1. 命中即强制执行
    规范中标注为"禁止"的条款,任何场景都不得妥协;标注为"必须"的条款不得降级替代。

  2. 代码示例优先取规范原文
    需要示例时,先从 references/java-coding-spec-v1.md 中提取对应条款的原文示例,不自行臆造。

  3. 最小化加载
    先用检索定位 spec 行号,再局部读取;避免整篇加载。

  4. 明确标注来源
    回答中标注对应的 spec 条款编号(如 §3.2 POJO类)。

快速检索

# 查看 spec 行号索引
cat references/toc.md

# 按关键字定位条款
rg -n "禁止|必须|推荐|使用|Spring|POJO|枚举|日志|事务|并发|MyBatis|服务间调用|Maven|国际化|网关|接口管理|工程" references/java-coding-spec-v1.md

# 按行号读取条款(示例:100-200行)
sed -n '100,200p' references/java-coding-spec-v1.md

高频问题映射

用户问题规范条款核心结论
枚举怎么写§3.3Enum后缀 + implements BizEnum + @Getter/@RequiredArgsConstructor
POJO 类怎么写§3.2UpperCamelCase + Serializable + serialVersionUID + @Accessors(chain=true)
工具类用什么§3.4Apache Commons / JDK / 统一框架工具,禁止 hutool
日志怎么打§3.6@Slf4j + 占位符,禁止 e.printStackTrace()
循环里能调接口吗§3.5禁止,必须封装批量接口
线程池怎么创建§3.7ThreadPoolExecutor + TransmittableThreadLocal,禁止 Executors
MyBatis-Plus 怎么用§3.8禁用注解,复杂查询用 xml,keepGlobalFormat=true
事务怎么处理§3.9public 方法,seata TCC,围住最小必要代码
RestTemplate 能用吗§3.10禁止,必须用 RestClient
Bean 怎么注入§3.10@RequiredArgsConstructor,禁止 @Autowired
服务间调用用什么§3.11HttpExchangeClient + RestClient,统一框架 starter
Maven 版本要求§3.12JDK21 + Maven 3.9.10+ + maven wrapper
Controller 怎么分层§7.2/§7.3Param入参/Vo出参,分离 api/innerapi/openapi
接口路径前缀§7.1/api 前端 /inner-api 内部 /open-api 开放
数据库表设计§4主键 id + 审计字段 + tenant_id/archived/version 按需
国际化文件放哪§7.6biz/resources/i18n/
smart-doc 配置§6smart-doc.json / smart-doc-innerapi.json / smart-doc-openapi.json
数据库适配 SQL 放哪§7.7resources/mapper/{mysql,dm,kingbase,oceanbase}/

核心约束速查

禁止清单(任何场景均不得妥协)
禁止项必须替代条款
hutoolApache Commons / JDK / 统一框架工具§3.4
e.printStackTrace() / System.out@Slf4j + log 占位符§3.6
循环/递归里调接口批量接口封装§3.5
Executors 创建线程池ThreadPoolExecutor§3.7
RestTemplateSpring6 RestClient§3.10
@Value 注解读 yamlProperties 类§3.10
@Select/@Insert/@Update 注解MyBatis xml§3.8
context-pathyaml 路由配置§3.10
lambdaQuery 多次单表查询xml 复杂查询§3.8
Controller 层写业务逻辑Manager/Service 层§3.10
@author JavaDoc@since§3.1
覆盖方式替换框架 Configuration扩展类或 yaml 配置§3.10
必须清单
必须项说明条款
serialVersionUIDPOJO 实现 Serializable 时必须定义§3.2
@Accessors(chain=true)Vo/Param/Dto 必须§3.2
@since新增内容必须标识版本§3.1
JSpecify 注解@Nullable/@NonNull/@NullMarked§3.1
每成员 javadocPOJO 枚举字段必须§3.1/§3.2/§3.3
BizEnum前端/Entity 用枚举必须实现§3.3
ResVoController 和服务间调用统一响应§3.2/§3.11
HttpExchangeClient服务间调用必须§3.11
keepGlobalFormat=true@TableField 必须§3.8
函数式 wrapperMyBatis-Plus wrapper 必须§3.8
seata TCC分布式事务必须§3.9
JDK21 + Maven 3.9.10+必须版本§3.12
maven wrapper必须使用项目 wrapper§3.12
审计字段业务表必须有§4
api/inner-api/open-api 前缀Controller 路径必须§7.1
前端接口 Param入参/Vo出参Controller 必须§7.2
内部接口 Param入参/Dto出参InnerController 必须§7.2
开放接口独立 Dto/ParamOpenController 必须§7.2
并发修改加 version数据库必须有乐观锁字段§4
工具链速查
场景工具条款
字符串拼接java.lang.String.join()§3.4
集合判空CollectionUtils.isEmpty() / MapUtils.isEmpty()§3.4
数组判空ArrayUtils.isEmpty()§3.4
字符串判空StringUtils.isBlank() / isNotBlank()§3.4
字符串相等Strings.CS.equals() / Strings.CI.equals()§3.4
二维元组org.apache.commons.lang3.tuple.Pair<L,R>§3.4
时间工具cn.cisdigital.elite.forge.infra.commons.util.TimeUtils§3.4
JSON 工具JsonUtils§3.4
国际化I18nUtils§3.4
上下文ContextStore§3.4
服务间调用cisdigital-elite-forge-infra-httpexchange-spring-boot3-starter§3.11
线程上下文TransmittableThreadLocal + TtlExecutors§3.7
日期格式化DateTimeFormatter(非 SimpleDateFormat)§3.7

分层模型速查

POJO 类分层
Entity    → ORM 实体映射,实现 Serializable
Dto       → 内部数据传输
Param     → Controller 入参,必须 jsr 303 validation
Vo        → Controller 出参
各层入参出参约束
层级入参出参
repositoryParam / DtoEntity / Dto
serviceParam / DtoDto / Vo
前端接口 ControllerParamVo
内部接口 InnerControllerParamDto
开放接口 OpenControllerParamDto
Maven 模块结构
<service>-model        POJO + MapStruct
<service>-client       HttpExchangeClient 接口定义
<service>-xxx-starter  业务相关 starter
<service>-xxx-sdk      业务相关 sdk
<service>-biz          业务模块(controller/service/repository)
<service>-boot         启动模块
biz 代码分层
- biz/common/exception
- biz/common/util
- biz/模块A/controller/{innerapi, api, openapi}
- biz/模块A/service/xxxService
- biz/模块A/repository/{mapper/xxxMapper, xxxRepository}
接口路径前缀
  • /api → 前端接口(需网关鉴权)
  • /inner-api → 服务间内部调用(无需鉴权)
  • /open-api → 开放接口(需开放平台鉴权)

输出约束

  • 回答时必须标注规范条款编号(§章节号)
  • 涉及代码示例时,从 references/java-coding-spec-v1.md 对应条款提取,不自行编写
  • 涉及框架/工具选型时,优先引用统一框架能力,参见 eliteforge-framework-specification
  • 涉及版本号时引用规范原文,不臆造具体版本
  • 规范未覆盖的场景,标注"需用户补充或需外部确认"

参考资料

  • 规范全文(行号索引):references/toc.md
  • 规范全文:references/java-coding-spec-v1.md

コメント