[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CFB60X8Q9479W73SJCDEVJ":3,"skill-same:01M6CFB60X8Q9479W73SJCDEVJ":53},{"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":36,"ownerDescription":37,"updatedAt":38,"install":39,"resources":52},"01M6CFB60X8Q9479W73SJCDEVJ","java-to-swift",null,"Use when converting Java 1.8 classes to Swift 5.0+ Codable structs - handling type mapping, nullability, inheritance flattening, BaseReq exclusions, and property naming conventions.","HeathWang\u002Fhw-cc-plugin","HeathWang","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4961711?v=4","01M6CF9BZ3A0CSSG3QQGGDPFEH","Heath Wang","01M6CF9C3HT4NPM370Z8MYZW4G",1,"MIT","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fjava-to-swift\u002FSKILL.md",[],[19,20,21,22,23,24],"swift","java","java to swift","grep","read","use","2026-11-10 10:12:30",false,"---\nname: java-to-swift\ndescription: Use when converting Java 1.8 classes to Swift 5.0+ Codable structs - handling type mapping, nullability, inheritance flattening, BaseReq exclusions, and property naming conventions.\nallowed-tools: Read, Grep, Glob\n---\n\n# Java to Swift Conversion\n\n## Overview\n\nConverts Java 1.8 classes to Swift 5.0+ `struct` objects conforming to `Codable`. Output as markdown code blocks only — **never modify project files**.\n\n## Core Constraint\n\n**CRITICAL**: Output Swift `struct` definitions as markdown code blocks only. Do NOT modify, edit, or alter any project files.\n\n## Type Mapping\n\n| Java Type | Swift Type |\n|-----------|------------|\n| `int` \u002F `Integer` | `Int` |\n| `long` \u002F `Long` | `Int64` |\n| `float` \u002F `Float` | `Float` |\n| `double` \u002F `Double` | `Double` |\n| `boolean` \u002F `Boolean` | `Bool` |\n| `String` | `String` |\n| `BigDecimal` \u002F `decimal` | `Double` (default) or `String` (with `@BigDecimalToString`) |\n| `Date` | `Date` |\n| `Timestamp` | `TimeInterval` |\n| `List\u003CT>` | `[T]` |\n| `Map\u003CK,V>` | `[K: V]` |\n\n## Nullability Rules\n\n| Java Annotation | Swift Type |\n|-----------------|------------|\n| `@NonNull` \u002F `@NotNull` | Non-optional (`String`) |\n| No annotation \u002F `@Nullable` | Optional (`String?`) |\n\n**Default:** All properties are optional unless explicitly marked non-null.\n\n## Naming Conventions\n\n**Struct names:** PascalCase (`OrderDetails`, `UserProfile`, `PaymentRequest`)\n\n**Property names:** ⚠️ KEEP IDENTICAL TO JAVA\u002FSERVER-SIDE — preserves Codable serialization.\n\n```swift\n\u002F\u002F ✅ Correct\nstruct OrderRequest: Codable {\n    let orderId: String        \u002F\u002F matches Java field name\n    let total_amount: String?  \u002F\u002F preserves snake_case\n}\n```\n\nSwift's `Codable` maps property names directly to JSON keys — changing names breaks serialization.\n\n## Inheritance Handling\n\nSwift structs don't support inheritance. **Always flatten** the hierarchy:\n\n1. Trace full inheritance chain — read all parent class files\n2. **If any parent is `BaseReq`** → **EXCLUDE** all `BaseReq` properties (handled by network layer)\n3. Combine all remaining properties from parent + child into one struct\n4. Document property source with inline comments\n\n```swift\nstruct OrderRequest: Codable {\n    \u002F\u002F From ApiRequest\n    let userId: String\n\n    \u002F\u002F From OrderRequest\n    let orderId: Int64\n\n    \u002F\u002F Note: BaseReq properties (token, timestamp) excluded — handled by network layer\n}\n```\n\n## Documentation\n\nMigrate Java comments to Swift using `\u002F\u002F\u002F` triple-slash format:\n- Preserve original language (Chinese stays Chinese, English stays English)\n- Place comments immediately above each property\n- For properties without Java comments, add brief descriptive comment\n\n## Structure Requirements\n\nAll converted structs must:\n- Be defined as `struct` (not `class`)\n- Conform to `Codable` protocol\n- Use `let` for all properties (immutable)\n- Flatten all inherited properties into a single struct\n\n## Step-by-Step Workflow\n\n1. Analyze Java class — properties, annotations, types, inheritance\n2. If inheritance detected → request\u002Fread parent class files\n3. Handle `BaseReq` exclusion if applicable\n4. Create Swift struct with `Codable` conformance\n5. Apply type mapping (including `@BigDecimalToString`)\n6. Apply nullability (`@NonNull` → non-optional, else optional)\n7. Use `let` for all properties\n8. Keep property names identical to Java\u002Fserver-side\n9. Migrate comments with `\u002F\u002F\u002F` preserving original language\n\n## Validation Checklist\n\n- [ ] `@NonNull`\u002F`@NotNull` properties are non-optional\n- [ ] All other properties are optional (`?`)\n- [ ] Struct conforms to `Codable`\n- [ ] All properties use `let`\n- [ ] Inheritance detected and parent classes analyzed\n- [ ] All inherited properties flattened into single struct\n- [ ] `BaseReq` properties excluded if applicable\n- [ ] Property names identical to server-side model\n- [ ] Output is markdown code block only (no file modifications)\n","# Java to Swift Conversion\n\n## Overview\n\nConverts Java 1.8 classes to Swift 5.0+ `struct` objects conforming to `Codable`. Output as markdown code blocks only — **never modify project files**.\n\n## Core Constraint\n\n**CRITICAL**: Output Swift `struct` definitions as markdown code blocks only. Do NOT modify, edit, or alter any project files.\n\n## Type Mapping\n\n| Java Type | Swift Type |\n|-----------|------------|\n| `int` \u002F `Integer` | `Int` |\n| `long` \u002F `Long` | `Int64` |\n| `float` \u002F `Float` | `Float` |\n| `double` \u002F `Double` | `Double` |\n| `boolean` \u002F `Boolean` | `Bool` |\n| `String` | `String` |\n| `BigDecimal` \u002F `decimal` | `Double` (default) or `String` (with `@BigDecimalToString`) |\n| `Date` | `Date` |\n| `Timestamp` | `TimeInterval` |\n| `List\u003CT>` | `[T]` |\n| `Map\u003CK,V>` | `[K: V]` |\n\n## Nullability Rules\n\n| Java Annotation | Swift Type |\n|-----------------|------------|\n| `@NonNull` \u002F `@NotNull` | Non-optional (`String`) |\n| No annotation \u002F `@Nullable` | Optional (`String?`) |\n\n**Default:** All properties are optional unless explicitly marked non-null.\n\n## Naming Conventions\n\n**Struct names:** PascalCase (`OrderDetails`, `UserProfile`, `PaymentRequest`)\n\n**Property names:** ⚠️ KEEP IDENTICAL TO JAVA\u002FSERVER-SIDE — preserves Codable serialization.\n\n```swift\n\u002F\u002F ✅ Correct\nstruct OrderRequest: Codable {\n    let orderId: String        \u002F\u002F matches Java field name\n    let total_amount: String?  \u002F\u002F preserves snake_case\n}\n```\n\nSwift's `Codable` maps property names directly to JSON keys — changing names breaks serialization.\n\n## Inheritance Handling\n\nSwift structs don't support inheritance. **Always flatten** the hierarchy:\n\n1. Trace full inheritance chain — read all parent class files\n2. **If any parent is `BaseReq`** → **EXCLUDE** all `BaseReq` properties (handled by network layer)\n3. Combine all remaining properties from parent + child into one struct\n4. Document property source with inline comments\n\n```swift\nstruct OrderRequest: Codable {\n    \u002F\u002F From ApiRequest\n    let userId: String\n\n    \u002F\u002F From OrderRequest\n    let orderId: Int64\n\n    \u002F\u002F Note: BaseReq properties (token, timestamp) excluded — handled by network layer\n}\n```\n\n## Documentation\n\nMigrate Java comments to Swift using `\u002F\u002F\u002F` triple-slash format:\n- Preserve original language (Chinese stays Chinese, English stays English)\n- Place comments immediately above each property\n- For properties without Java comments, add brief descriptive comment\n\n## Structure Requirements\n\nAll converted structs must:\n- Be defined as `struct` (not `class`)\n- Conform to `Codable` protocol\n- Use `let` for all properties (immutable)\n- Flatten all inherited properties into a single struct\n\n## Step-by-Step Workflow\n\n1. Analyze Java class — properties, annotations, types, inheritance\n2. If inheritance detected → request\u002Fread parent class files\n3. Handle `BaseReq` exclusion if applicable\n4. Create Swift struct with `Codable` conformance\n5. Apply type mapping (including `@BigDecimalToString`)\n6. Apply nullability (`@NonNull` → non-optional, else optional)\n7. Use `let` for all properties\n8. Keep property names identical to Java\u002Fserver-side\n9. Migrate comments with `\u002F\u002F\u002F` preserving original language\n\n## Validation Checklist\n\n- [ ] `@NonNull`\u002F`@NotNull` properties are non-optional\n- [ ] All other properties are optional (`?`)\n- [ ] Struct conforms to `Codable`\n- [ ] All properties use `let`\n- [ ] Inheritance detected and parent classes analyzed\n- [ ] All inherited properties flattened into single struct\n- [ ] `BaseReq` properties excluded if applicable\n- [ ] Property names identical to server-side model\n- [ ] Output is markdown code block only (no file modifications)\n",{"name":5,"description":7,"allowed-tools":30},"Read, Grep, Glob","master","a12b4ddfc807225744ed4ddecc493e87048dca69","skills\u002Fjava-to-swift",0,"https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin","https:\u002F\u002Fgithub.com\u002FHeathWang","iOS \u002F front end \u002F python develper","2026-11-03 17:20:23",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add HeathWang\u002Fhw-cc-plugin --skill java-to-swift",{"tool":45,"command":46},"bunx","bunx skills add HeathWang\u002Fhw-cc-plugin --skill java-to-swift",{"tool":48,"command":49},"pnpm","pnpm dlx skills add HeathWang\u002Fhw-cc-plugin --skill java-to-swift","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fjava-to-swift\u002FSKILL.md",true,[],[54,85,104,116,134,157],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":65,"publishedAt":25},"01M6CFBEFHMPFRFM9AQAJVVAR0","reconstructing-ui-from-screenshots","Use when implementing or correcting an app or web UI from a design image, screenshot, mockup, or reference PNG where accurate size, spacing, color, typography, assets, and alignment matter.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Freconstructing-ui-from-screenshots\u002FSKILL.md",[60],{"categoryNo":61,"categoryName":62,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,24,83,84],"ui","reconstructing ui from screenshots","screenshots","app","mockup","color","implementing","web ui","size","spacing","png","typography","reference","screenshot","alignment","assets","design","image","web",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":25},"01M6CFBBT8EXTSBHXEFGRWRZ3C","question-answer","Use when the user wants a read-only explanation of existing code behavior, architecture, control flow, data flow, dependencies, or implementation decisions and has not requested project changes.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fquestion-answer\u002FSKILL.md",[],[92,93,23,94,95,96,97,98,24,99,22,100,101,102,103],"question","question answer","behavior","webfetch","architecture","code","decisions","only","flow","data","implementation","user",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":25},"01M6CFB3DMRW02HSYWMMK3VDPM","java-to-nextjs","Use when converting Java 1.8 classes to Next.js TypeScript interface definitions - handling type mapping, nullability, inheritance, naming conventions, and BaseReq\u002FBaseResponse exclusions.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fjava-to-nextjs\u002FSKILL.md",[],[20,111,112,24,22,113,23,114,115],"java to nextjs","nextjs","typescript","Next.js","js",{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":127,"publishedAt":25},"01M6CFB055EXKR72703ST6H3XW","ios-i18n-workflow","Use when iOS apps using SwiftGen L10n need localization work - adding keys, checking missing translations, or cleaning unused entries. Triggered by hardcoded strings, missing L10n references, incomplete translations across multiple languages, or unused localization cleanup requests.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fios-i18n-workflow\u002FSKILL.md",[122],{"categoryNo":123,"categoryName":124,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[128,129,130,131,132,24,133],"ios","workflow","ios i18n workflow","work","references","cleanup",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":143,"publishedAt":25},"01M6CFAXJJZ59SWHZ1RAGQ461N","improve-codebase-architecture","Use when the user wants architectural deepening opportunities for a codebase or named files, shown as a visual HTML report, and when they then pick candidates from that report to implement in the code already reviewed.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fimprove-codebase-architecture\u002FSKILL.md",[140],{"categoryNo":141,"categoryName":142,"taxonomyType":125,"taxonomyTypeDesc":126},"01JBSEEDCAT000000000000009","前端开发",[144,96,145,146,147,148,149,150,151,103,152,97,153,24,154,155,156],"codebase","improve codebase architecture","improve","html","html report","pick","report","as","implement","visual","files","true","for",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":25},"01M6CFATZXZK0RNE86AEN4AAH3","handoff","Use when the user asks to create a handoff, session summary, context compact, continuation note, 交接文档, 压缩上下文, or instructions for the next agent to resume work later.","https:\u002F\u002Fgithub.com\u002FHeathWang\u002Fhw-cc-plugin\u002Fblob\u002Fmaster\u002Fskills\u002Fhandoff\u002FSKILL.md",[],[159,164,165,103,166,167,168,131,169,170,24,171,172],"instructions","context","压缩","文档","later","create","resume","session","session summary"]