[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6D86AX3PECBDT60GDK22KCW":3,"skill-same:01M6D86AX3PECBDT60GDK22KCW":59},{"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":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M6D86AX3PECBDT60GDK22KCW","java-coding-standards",null,"Java coding standards for Spring Boot services: naming, immutability, Optional usage, streams, exceptions, generics, and project layout.","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\u002Fskills\u002Fjava-coding-standards\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29],"coding standards","java","java coding standards","coding","standards","boot","spring boot","services","spring","project","layout","2026-11-10 10:12:30",false,"---\nname: java-coding-standards\ndescription: \"Java coding standards for Spring Boot services: naming, immutability, Optional usage, streams, exceptions, generics, and project layout.\"\norigin: ECC\n---\n\n# Java Coding Standards\n\nStandards for readable, maintainable Java (17+) code in Spring Boot services.\n\n## When to Activate\n\n- Writing or reviewing Java code in Spring Boot projects\n- Enforcing naming, immutability, or exception handling conventions\n- Working with records, sealed classes, or pattern matching (Java 17+)\n- Reviewing use of Optional, streams, or generics\n- Structuring packages and project layout\n\n## Core Principles\n\n- Prefer clarity over cleverness\n- Immutable by default; minimize shared mutable state\n- Fail fast with meaningful exceptions\n- Consistent naming and package structure\n\n## Naming\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## Immutability\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 Usage\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 Best Practices\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## Exceptions\n\n- Use unchecked exceptions for domain errors; wrap technical exceptions with context\n- Create domain-specific exceptions (e.g., `MarketNotFoundException`)\n- Avoid broad `catch (Exception ex)` unless rethrowing\u002Flogging centrally\n\n```java\nthrow new MarketNotFoundException(slug);\n```\n\n## Generics and Type Safety\n\n- Avoid raw types; declare generic parameters\n- Prefer bounded generics for reusable utilities\n\n```java\npublic \u003CT extends Identifiable> Map\u003CLong, T> indexById(Collection\u003CT> items) { ... }\n```\n\n## Project Structure (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## Formatting and Style\n\n- Use 2 or 4 spaces consistently (project standard)\n- One public top-level type per file\n- Keep methods short and focused; extract helpers\n- Order members: constants, fields, constructors, public methods, protected, private\n\n## Code Smells to Avoid\n\n- Long parameter lists → use DTO\u002Fbuilders\n- Deep nesting → early returns\n- Magic numbers → named constants\n- Static mutable state → prefer dependency injection\n- Silent catch blocks → log and act or rethrow\n\n## Logging\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 Handling\n\n- Accept `@Nullable` only when unavoidable; otherwise use `@NonNull`\n- Use Bean Validation (`@NotNull`, `@NotBlank`) on inputs\n\n## Testing Expectations\n\n- JUnit 5 + AssertJ for fluent assertions\n- Mockito for mocking; avoid partial mocks where possible\n- Favor deterministic tests; no hidden sleeps\n\n**Remember**: Keep code intentional, typed, and observable. Optimize for maintainability over micro-optimizations unless proven necessary.\n","# Java Coding Standards\n\nStandards for readable, maintainable Java (17+) code in Spring Boot services.\n\n## When to Activate\n\n- Writing or reviewing Java code in Spring Boot projects\n- Enforcing naming, immutability, or exception handling conventions\n- Working with records, sealed classes, or pattern matching (Java 17+)\n- Reviewing use of Optional, streams, or generics\n- Structuring packages and project layout\n\n## Core Principles\n\n- Prefer clarity over cleverness\n- Immutable by default; minimize shared mutable state\n- Fail fast with meaningful exceptions\n- Consistent naming and package structure\n\n## Naming\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## Immutability\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 Usage\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 Best Practices\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## Exceptions\n\n- Use unchecked exceptions for domain errors; wrap technical exceptions with context\n- Create domain-specific exceptions (e.g., `MarketNotFoundException`)\n- Avoid broad `catch (Exception ex)` unless rethrowing\u002Flogging centrally\n\n```java\nthrow new MarketNotFoundException(slug);\n```\n\n## Generics and Type Safety\n\n- Avoid raw types; declare generic parameters\n- Prefer bounded generics for reusable utilities\n\n```java\npublic \u003CT extends Identifiable> Map\u003CLong, T> indexById(Collection\u003CT> items) { ... }\n```\n\n## Project Structure (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## Formatting and Style\n\n- Use 2 or 4 spaces consistently (project standard)\n- One public top-level type per file\n- Keep methods short and focused; extract helpers\n- Order members: constants, fields, constructors, public methods, protected, private\n\n## Code Smells to Avoid\n\n- Long parameter lists → use DTO\u002Fbuilders\n- Deep nesting → early returns\n- Magic numbers → named constants\n- Static mutable state → prefer dependency injection\n- Silent catch blocks → log and act or rethrow\n\n## Logging\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 Handling\n\n- Accept `@Nullable` only when unavoidable; otherwise use `@NonNull`\n- Use Bean Validation (`@NotNull`, `@NotBlank`) on inputs\n\n## Testing Expectations\n\n- JUnit 5 + AssertJ for fluent assertions\n- Mockito for mocking; avoid partial mocks where possible\n- Favor deterministic tests; no hidden sleeps\n\n**Remember**: Keep code intentional, typed, and observable. Optimize for maintainability over micro-optimizations unless proven necessary.\n",{"name":5,"origin":35,"description":7},"ECC","main","7b610356e36623652299fa2acb477ff821b1d920","upstream-sync\u002Fwork\u002Fecc\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":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add oabdelmaksoud\u002FSuperClaw --skill java-coding-standards",{"tool":51,"command":52},"bunx","bunx skills add oabdelmaksoud\u002FSuperClaw --skill java-coding-standards",{"tool":54,"command":55},"pnpm","pnpm dlx skills add oabdelmaksoud\u002FSuperClaw --skill java-coding-standards","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Foabdelmaksoud\u002FSuperClaw\u002Fblob\u002Fmain\u002Fupstream-sync\u002Fwork\u002Fecc\u002Fskills\u002Fjava-coding-standards\u002FSKILL.md",true,[],[60,81,95,126,152,171],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":71,"publishedAt":30},"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",[66],{"categoryNo":67,"categoryName":68,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[72,73,74,75,76,77,78,79,80],"translate","doc","visa doc translate","translation","application","create","images","PDF","documents",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":30},"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",[],[88,89,90,91,92,93,94],"verification","loop","verification loop","sessions","code","claude code sessions","system",{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":112,"publishedAt":30},"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",[101,104,107],{"categoryNo":102,"categoryName":103,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":105,"categoryName":106,"taxonomyType":69,"taxonomyTypeDesc":70},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[113,114,115,116,117,118,92,119,120,121,122,123,124,125],"tdd","workflow","tdd workflow","e2e tests","e2e","integration","development","use","test","refactoring","coverage","tests","writing",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":30},"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",[],[133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151],"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":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":159,"publishedAt":30},"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",[158],{"categoryNo":102,"categoryName":103,"taxonomyType":69,"taxonomyTypeDesc":70},[160,161,162,163,92,164,165,166,167,94,168,169,170],"swift protocol di testing","protocol","swift","testing","protocols","file","network","injection","dependency","swift testing","dependency injection",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":177,"publishedAt":30},"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",[],[178,179,162,180,181,36],"concurrency","swift concurrency","swift concurrency 6 2","default"]