[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D7ZAMHTTGWE6Y41Q4BV9FT":3,"skill-same:01M6D7ZAMHTTGWE6Y41Q4BV9FT":54},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":25,"linkOnly":26,"markdownContent":27,"markdownBody":28,"frontMatter":29,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":6,"ownerHtmlUrl":36,"ownerBlogUrl":37,"ownerDescription":38,"updatedAt":39,"install":40,"resources":53},"01M6D7ZAMHTTGWE6Y41Q4BV9FT","java-coding-standards",null,"Spring Boot服务的Java编码标准：命名、不可变性、Optional用法、流、异常、泛型和项目布局。","oabdelmaksoud\u002FSuperClaw","oabdelmaksoud","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F50699149?v=4","01M6D5CVVN778ZCDP1WHS816SP","Omar Abdelmaksoud","01M6D5CW1RHNSKCJR85GJACBFT",2,"MIT","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fjava-coding-standards\u002FSKILL.md",[],[19,20,21,22,23,24],"coding standards","java","java coding standards","coding","standards","spring","2026-11-10 10:12:30",false,"---\nname: java-coding-standards\ndescription: \"Spring Boot服务的Java编码标准：命名、不可变性、Optional用法、流、异常、泛型和项目布局。\"\norigin: ECC\n---\n\n# Java 编码规范\n\n适用于 Spring Boot 服务中可读、可维护的 Java (17+) 代码的规范。\n\n## 何时激活\n\n* 在 Spring Boot 项目中编写或审查 Java 代码时\n* 强制执行命名、不可变性或异常处理约定时\n* 使用记录类、密封类或模式匹配（Java 17+）时\n* 审查 Optional、流或泛型的使用时\n* 构建包和项目布局时\n\n## 核心原则\n\n* 清晰优于巧妙\n* 默认不可变；最小化共享可变状态\n* 快速失败并提供有意义的异常\n* 一致的命名和包结构\n\n## 命名\n\n```java\n\u002F\u002F ✅ Classes\u002FRecords: PascalCase\npublic class MarketService {}\npublic record Money(BigDecimal amount, Currency currency) {}\n\n\u002F\u002F ✅ Methods\u002Ffields: camelCase\nprivate final MarketRepository marketRepository;\npublic Market findBySlug(String slug) {}\n\n\u002F\u002F ✅ Constants: UPPER_SNAKE_CASE\nprivate static final int MAX_PAGE_SIZE = 100;\n```\n\n## 不可变性\n\n```java\n\u002F\u002F ✅ Favor records and final fields\npublic record MarketDto(Long id, String name, MarketStatus status) {}\n\npublic class Market {\n  private final Long id;\n  private final String name;\n  \u002F\u002F getters only, no setters\n}\n```\n\n## Optional 使用\n\n```java\n\u002F\u002F ✅ Return Optional from find* methods\nOptional\u003CMarket> market = marketRepository.findBySlug(slug);\n\n\u002F\u002F ✅ Map\u002FflatMap instead of get()\nreturn market\n    .map(MarketResponse::from)\n    .orElseThrow(() -> new EntityNotFoundException(\"Market not found\"));\n```\n\n## Streams 最佳实践\n\n```java\n\u002F\u002F ✅ Use streams for transformations, keep pipelines short\nList\u003CString> names = markets.stream()\n    .map(Market::name)\n    .filter(Objects::nonNull)\n    .toList();\n\n\u002F\u002F ❌ Avoid complex nested streams; prefer loops for clarity\n```\n\n## 异常\n\n* 领域错误使用非受检异常；包装技术异常时提供上下文\n* 创建特定领域的异常（例如，`MarketNotFoundException`）\n* 避免宽泛的 `catch (Exception ex)`，除非在中心位置重新抛出\u002F记录\n\n```java\nthrow new MarketNotFoundException(slug);\n```\n\n## 泛型和类型安全\n\n* 避免原始类型；声明泛型参数\n* 对于可复用的工具类，优先使用有界泛型\n\n```java\npublic \u003CT extends Identifiable> Map\u003CLong, T> indexById(Collection\u003CT> items) { ... }\n```\n\n## 项目结构 (Maven\u002FGradle)\n\n```\nsrc\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002Fapp\u002F\n  config\u002F\n  controller\u002F\n  service\u002F\n  repository\u002F\n  domain\u002F\n  dto\u002F\n  util\u002F\nsrc\u002Fmain\u002Fresources\u002F\n  application.yml\nsrc\u002Ftest\u002Fjava\u002F... (mirrors main)\n```\n\n## 格式化和风格\n\n* 一致地使用 2 或 4 个空格（项目标准）\n* 每个文件一个公共顶级类型\n* 保持方法简短且专注；提取辅助方法\n* 成员顺序：常量、字段、构造函数、公共方法、受保护方法、私有方法\n\n## 需要避免的代码坏味道\n\n* 长参数列表 → 使用 DTO\u002F构建器\n* 深度嵌套 → 提前返回\n* 魔法数字 → 命名常量\n* 静态可变状态 → 优先使用依赖注入\n* 静默捕获块 → 记录日志并处理或重新抛出\n\n## 日志记录\n\n```java\nprivate static final Logger log = LoggerFactory.getLogger(MarketService.class);\nlog.info(\"fetch_market slug={}\", slug);\nlog.error(\"failed_fetch_market slug={}\", slug, ex);\n```\n\n## Null 处理\n\n* 仅在不可避免时接受 `@Nullable`；否则使用 `@NonNull`\n* 在输入上使用 Bean 验证（`@NotNull`, `@NotBlank`）\n\n## 测试期望\n\n* 使用 JUnit 5 + AssertJ 进行流畅的断言\n* 使用 Mockito 进行模拟；尽可能避免部分模拟\n* 倾向于确定性测试；没有隐藏的休眠\n\n**记住**：保持代码意图明确、类型安全且可观察。除非证明有必要，否则优先考虑可维护性而非微优化。\n","# Java 编码规范\n\n适用于 Spring Boot 服务中可读、可维护的 Java (17+) 代码的规范。\n\n## 何时激活\n\n* 在 Spring Boot 项目中编写或审查 Java 代码时\n* 强制执行命名、不可变性或异常处理约定时\n* 使用记录类、密封类或模式匹配（Java 17+）时\n* 审查 Optional、流或泛型的使用时\n* 构建包和项目布局时\n\n## 核心原则\n\n* 清晰优于巧妙\n* 默认不可变；最小化共享可变状态\n* 快速失败并提供有意义的异常\n* 一致的命名和包结构\n\n## 命名\n\n```java\n\u002F\u002F ✅ Classes\u002FRecords: PascalCase\npublic class MarketService {}\npublic record Money(BigDecimal amount, Currency currency) {}\n\n\u002F\u002F ✅ Methods\u002Ffields: camelCase\nprivate final MarketRepository marketRepository;\npublic Market findBySlug(String slug) {}\n\n\u002F\u002F ✅ Constants: UPPER_SNAKE_CASE\nprivate static final int MAX_PAGE_SIZE = 100;\n```\n\n## 不可变性\n\n```java\n\u002F\u002F ✅ Favor records and final fields\npublic record MarketDto(Long id, String name, MarketStatus status) {}\n\npublic class Market {\n  private final Long id;\n  private final String name;\n  \u002F\u002F getters only, no setters\n}\n```\n\n## Optional 使用\n\n```java\n\u002F\u002F ✅ Return Optional from find* methods\nOptional\u003CMarket> market = marketRepository.findBySlug(slug);\n\n\u002F\u002F ✅ Map\u002FflatMap instead of get()\nreturn market\n    .map(MarketResponse::from)\n    .orElseThrow(() -> new EntityNotFoundException(\"Market not found\"));\n```\n\n## Streams 最佳实践\n\n```java\n\u002F\u002F ✅ Use streams for transformations, keep pipelines short\nList\u003CString> names = markets.stream()\n    .map(Market::name)\n    .filter(Objects::nonNull)\n    .toList();\n\n\u002F\u002F ❌ Avoid complex nested streams; prefer loops for clarity\n```\n\n## 异常\n\n* 领域错误使用非受检异常；包装技术异常时提供上下文\n* 创建特定领域的异常（例如，`MarketNotFoundException`）\n* 避免宽泛的 `catch (Exception ex)`，除非在中心位置重新抛出\u002F记录\n\n```java\nthrow new MarketNotFoundException(slug);\n```\n\n## 泛型和类型安全\n\n* 避免原始类型；声明泛型参数\n* 对于可复用的工具类，优先使用有界泛型\n\n```java\npublic \u003CT extends Identifiable> Map\u003CLong, T> indexById(Collection\u003CT> items) { ... }\n```\n\n## 项目结构 (Maven\u002FGradle)\n\n```\nsrc\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002Fapp\u002F\n  config\u002F\n  controller\u002F\n  service\u002F\n  repository\u002F\n  domain\u002F\n  dto\u002F\n  util\u002F\nsrc\u002Fmain\u002Fresources\u002F\n  application.yml\nsrc\u002Ftest\u002Fjava\u002F... (mirrors main)\n```\n\n## 格式化和风格\n\n* 一致地使用 2 或 4 个空格（项目标准）\n* 每个文件一个公共顶级类型\n* 保持方法简短且专注；提取辅助方法\n* 成员顺序：常量、字段、构造函数、公共方法、受保护方法、私有方法\n\n## 需要避免的代码坏味道\n\n* 长参数列表 → 使用 DTO\u002F构建器\n* 深度嵌套 → 提前返回\n* 魔法数字 → 命名常量\n* 静态可变状态 → 优先使用依赖注入\n* 静默捕获块 → 记录日志并处理或重新抛出\n\n## 日志记录\n\n```java\nprivate static final Logger log = LoggerFactory.getLogger(MarketService.class);\nlog.info(\"fetch_market slug={}\", slug);\nlog.error(\"failed_fetch_market slug={}\", slug, ex);\n```\n\n## Null 处理\n\n* 仅在不可避免时接受 `@Nullable`；否则使用 `@NonNull`\n* 在输入上使用 Bean 验证（`@NotNull`, `@NotBlank`）\n\n## 测试期望\n\n* 使用 JUnit 5 + AssertJ 进行流畅的断言\n* 使用 Mockito 进行模拟；尽可能避免部分模拟\n* 倾向于确定性测试；没有隐藏的休眠\n\n**记住**：保持代码意图明确、类型安全且可观察。除非证明有必要，否则优先考虑可维护性而非微优化。\n",{"name":5,"origin":30,"description":7},"ECC","main","7b610356e36623652299fa2acb477ff821b1d920","upstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fjava-coding-standards",0,"https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fo-abdelmaksoud\u002F","Full-Stack Engineer | AI Systems Architect | Building autonomous multi-agent systems","2026-03-08 21:12:53",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add oabdelmaksoud\u002FSuperClaw --skill java-coding-standards",{"tool":46,"command":47},"bunx","bunx skills add oabdelmaksoud\u002FSuperClaw --skill java-coding-standards",{"tool":49,"command":50},"pnpm","pnpm dlx skills add oabdelmaksoud\u002FSuperClaw --skill java-coding-standards","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fdocs\u002Fzh-CN\u002Fskills\u002Fjava-coding-standards\u002FSKILL.md",true,[],[55,76,90,121,147,166],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":66,"publishedAt":25},"01M6D88QCPTBZVCRED0NZ1Y8K8","visa-doc-translate","Translate visa application documents (images) to English and create a bilingual PDF with original and translation","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fvisa-doc-translate\u002FSKILL.md",[61],{"categoryNo":62,"categoryName":63,"taxonomyType":64,"taxonomyTypeDesc":65},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[67,68,69,70,71,72,73,74,75],"translate","doc","visa doc translate","translation","application","create","images","PDF","documents",{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":82,"publishedAt":25},"01M6D88NBM95T3TFM50CYYAP65","verification-loop","A comprehensive verification system for Claude Code sessions.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fverification-loop\u002FSKILL.md",[],[83,84,85,86,87,88,89],"verification","loop","verification loop","sessions","code","claude code sessions","system",{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":107,"publishedAt":25},"01M6D88JFZ2P996GVRHJNSZSTM","tdd-workflow","Use this skill when writing new features, fixing bugs, or refactoring code. Enforces test-driven development with 80%+ coverage including unit, integration, and E2E tests.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Ftdd-workflow\u002FSKILL.md",[96,99,102],{"categoryNo":97,"categoryName":98,"taxonomyType":64,"taxonomyTypeDesc":65},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":100,"categoryName":101,"taxonomyType":64,"taxonomyTypeDesc":65},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":103,"categoryName":104,"taxonomyType":105,"taxonomyTypeDesc":106},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[108,109,110,111,112,113,87,114,115,116,117,118,119,120],"tdd","workflow","tdd workflow","e2e tests","e2e","integration","development","use","test","refactoring","coverage","tests","writing",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":25},"01M6D88FTHRRSVJMXF2G7MQAK3","swiftui-patterns","SwiftUI architecture patterns, state management with @Observable, view composition, navigation, performance optimization, and modern iOS\u002FmacOS UI best practices.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswiftui-patterns\u002FSKILL.md",[],[128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146],"patterns","swiftui","swiftui patterns","architecture","macos","performance","state management","best practices","state","ui","Optimization","ios","architecture patterns","Composition","performance optimization","view","management","swiftui architecture","navigation",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":154,"publishedAt":25},"01M6D88D527QTQT9DKHTRFN6EA","swift-protocol-di-testing","Protocol-based dependency injection for testable Swift code — mock file system, network, and external APIs using focused protocols and Swift Testing.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-protocol-di-testing\u002FSKILL.md",[153],{"categoryNo":97,"categoryName":98,"taxonomyType":64,"taxonomyTypeDesc":65},[155,156,157,158,87,159,160,161,162,89,163,164,165],"swift protocol di testing","protocol","swift","testing","protocols","file","network","injection","dependency","swift testing","dependency injection",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":172,"publishedAt":25},"01M6D88AJW8H2QNWSW5ZY82R43","swift-concurrency-6-2","Swift 6.2 Approachable Concurrency — single-threaded by default, @concurrent for explicit background offloading, isolated conformances for main actor types.","https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fswift-concurrency-6-2\u002FSKILL.md",[],[173,174,157,175,176,31],"concurrency","swift concurrency","swift concurrency 6 2","default"]