Coding
PromptBeginner5 minmarkdown
Markdown Converter
Agent skill for markdown-converter
7
> 本规范适用于你参与的全部开发任务,条款为强制性,除非用户显式豁免,任何条目都不得忽视或删减。
Sign in to like and favorite skills
本规范适用于你参与的全部开发任务,条款为强制性,除非用户显式豁免,任何条目都不得忽视或删减。
- 每次输出前必须深度理解项目背景、用户意图和技术栈特征;
- 当回答依赖外部知识或信息不确定时,先查询至少一份权威资料(官方文档、标准或源码)再作结论;
- 引用外部资料须在回复中注明来源;可使用链接或版本号,保证可追溯;
- 若用户需求含糊,先用一句话复述已知信息,并列出关键澄清问题,待用户确认后再继续;
- 同一次回复中的术语、变量名、逻辑描述保持一致;发现冲突必须立即修正;
- 仅回答与问题直接相关内容,避免冗余、无关扩展或教程式铺陈;
- 面对复杂需求,先拆分为若干可管理子任务,在输出中按子任务顺序呈现,便于用户跟进;
所有技术输出必须建立在准确、思考过的基础之上,拒绝机械生成与无脑填充。 如果你已经了解所有的规范,你需要在用户第一次进行对话时先说明 "我已充分了解开发与写作规范。",随后再执行用户需求。
serena MCP 完成可能的操作。shadowJar Task 尝试打包;foundation 模块以及 net.legacy.library.annotation.test 包中已提供的测试示例;Launcher 中注册新测试入口,参考 net.legacy.library.annotation.AnnotationLauncher 的实现方式;compileOnly 方式声明;javap 等指令;Exception exception,Throwable throwable,IOException exceptionException e,Throwable tException exceptionWhenFailedToInitializeXxxCache whatIsThis = ...Cache cache; Cache redisCacheCache cache; Cache cache2Stream API(尤其是过滤、映射、聚合等操作)for 循环完成可以用 stream 完成的链式操作;{} 与 return,可使用方法引用):
() -> "something"list.forEach(CustomExecutor::shutdown)(x) -> { doSomething(x); } → 简化为 x -> doSomething(x)() -> { return "something"; } → 简化为 () -> "something"list.forEach(x -> { CustomExecutor.shutdown(x); }); → 应使用方法引用net.legacy.library.annotation.service 包下的类作为注释风格基准;@param → @return → @throws;@param input the input@param input the user-defined script to evaluate{@inheritDoc};Usage example;public 字段或方法写 Javadoc,除非真的有需要;@see:列出相关类、接口或方法,按出现顺序书写;@since:首次引入版本;@deprecated:标记过时元素,并使用 @see 指向替代方案;@implSpec:说明实现细节,供继承或实现者阅读;@implNote:记录实现者备注(性能、限制等),不影响规范语义;@apiNote:公开 API 额外说明(示例、用法注意事项等);{@link ClassName#memberName}:在描述中插入可点击引用,避免冗长全名。例如:Parses the given {@link java.nio.file.Path} instance.{@code ...}:在描述或列表中嵌入等宽代码片段。例如:Returns {@code null} if the input is empty.{@literal ...}:插入按字面量输出的字符串,避免被解析为 HTML/标签:Converts the string {@literal "<none>"} to an empty value.{@value #CONSTANT}:引用常量值,保持文档与代码同步。提交信息必须简洁明确,并符合项目现有格式风格。你需要:
git log --oneline 或 git log -n 10);通用规范(若无特殊格式要求):
Fix: resolve NPE in TaskHandlerRefactor: extract method from UserSessionManagerAdd: support for async task executionDocs: update Javadoc for ConfigLoader修复一下问题update提交代码推荐格式(若尚无约定):
<类型>: <简要说明(英文首字母大写)> <可选说明:描述变更原因、影响范围、解决的问题等>
常见类型包括:
Add: 新增功能、类、方法Fix: 修复 bugRefactor: 重构(不涉及功能行为改变)Docs: 修改文档或注释Test: 添加或修复测试Chore: 杂项、配置项更新等合并(merge)请求前,务必 squash commit 或整理历史,保持提交记录清晰有序。
net.legacy.library.* 包中的类为基本风格模板;// TODO: 确认命名规范 后告诉开发组,待开发组确认后再定稿。net.legacy.library.annotation 及其子包(尤其是 annotation.service)中的现有工具和处理器;net.legacy.library.commons 包内提供的线程池、调度器等实现;net.legacy.library.cache 包下的缓存包装、锁框架等;net.legacy.library.* 层级中检索。Add: extend cache layer to support LFU (#1234)。//);/* */);TODO、FIXME 标签说明;// Handle WebSocket handshake logic// WebSocket 握手逻辑// Redirect to login page if user is not logged in// Login// If the current user session state has not reached the expected "authenticated" status, // the system will attempt to guide the user back to the preset login page to complete the login process. // This step is necessary to ensure the security and validity of subsequent API calls.<feature/bugfix>-<short-description>,例如:feature/login-logic、
bugfix/fix-nullpointer。io.fairyproject.log.Log 作为日志框架,不得引入其他日志组件(如 Log4j、SLF4J 等)。
Log 进行,统一管理,保证日志输出格式一致。net.legacy.library.foundation.util.TestLogger 替代正式日志类。
TestLogger 同样支持占位符格式(如 %s、%d),使用方式与 Log 一致。TestLogger 便于测试日志隔离、日志捕获及测试用例输出控制。debug():调试信息info():常规操作信息warn():警告信息,提醒开发人员注意error():错误信息,记录异常堆栈Log.info("Enter function");Log.info("Entering executeTask(), taskId=%s", taskId);Log 类已经内建支持格式化字符串,直接使用占位符形式(例如 %s、%d 等)传递变量,无需手动格式化:
Log.info("Successfully processed %d items", itemCount);Log.info(String.format("Successfully processed %d items", itemCount));
或
Log.info("Successfully processed " + itemCount + " items");String.format():
Log 类的 info()、debug()、warn() 等方法自带占位符格式化功能,直接在消息中使用 %s、%d 占位符即可,性能更优。%s 用于格式化字符串;%d 用于格式化整数;%f 用于格式化浮动数值;%x 用于格式化十六进制整数等。import *,必须明确导入所需类,避免不必要的类导入。import io.fairyproject.SomeClass;import io.fairyproject.*;@Getter 和 @Setter 代替手动编写 getter 和 setter 方法;@AllArgsConstructor 和 @NoArgsConstructor 来简化构造器;@Builder 来构建复杂对象,避免冗长的构造方法。var、val 等类型推断关键字,即使当前 Java 版本支持也不允许。
增强 switch 表达式(Java 12+):
String result = switch (status) { case 1 -> "STARTED"; case 2 -> "STOPPED"; default -> "UNKNOWN"; };
Text Blocks(Java 13+):
String json = """ { "name": "test", "enabled": true } """;
Pattern Matching for instanceof(Java 16+):
if (obj instanceof String str) { Log.info("Length: %d", str.length()); }
@Override,以防止遗漏或签名错误。@SuppressWarnings 时,可省略书面原因;但禁止对 "unused" 进行抑制,除非用户已明确指示。@Nullable / @NonNull 等可空性注解可按模块习惯选择性使用;
@Retention、@Target 等元注解配置;TODO 或 FIXME 必须包含责任人标识或任务/Issue 链接:// TODO(zhangsan): handle rate-limit retry (#1234) // FIXME(lint-failure): resolve flaky test in PaymentServiceTODO 代表可延后但需完成的功能或改进,FIXME 表示已知问题或缺陷,优先级高于 TODO。// TODO: fix;注释必须足够描述问题与期望行为。Autowired),所有注入均使用构造函数注入;io.fairyproject.container.InjectableComponent 注解;