[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXNEZ5F2J63M245FNBT3MD":3,"skill-same:01M6BXNEZ5F2J63M245FNBT3MD":56},{"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":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":36,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":39,"ownerDescription":40,"updatedAt":41,"install":42,"resources":55},"01M6BXNEZ5F2J63M245FNBT3MD","java-expert",null,"Expert knowledge of Java 25 features including virtual threads, pattern matching, records, sealed classes, value types, and Project Loom\u002FValhalla features. Use when the user asks about Java programming, Java 25 features, concurrency, performance optimization, or modern Java idioms.","diegopacheco\u002Fai-playground","diegopacheco","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F121278?v=4","01M6BXCP8P7GGSJ8M1W2MFDTGT","Diego Pacheco","01M6BXCPD3WM51H465XW9YM4BV",21,"Unlicense","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fjava-25-spring-boot-4-spring-ai-skills\u002Fsrc\u002Fmain\u002Fresources\u002F.claude\u002Fskills\u002Fjava-expert\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"java","java expert","performance","Optimization","concurrency","knowledge","performance optimization","virtual","2026-11-10 10:12:30",false,"---\nname: java-expert\ndescription: Expert knowledge of Java 25 features including virtual threads, pattern matching,\n  records, sealed classes, value types, and Project Loom\u002FValhalla features.\n  Use when the user asks about Java programming, Java 25 features, concurrency,\n  performance optimization, or modern Java idioms.\nallowed-tools: Read, Grep\n---\n\n# Java 25 Expert Skill\n\n## Overview\nProvides expert guidance on Java 25 language features and best practices.\n\n## Key Java 25 Features\n\n### Virtual Threads (Project Loom)\n- Use `Thread.ofVirtual().start(runnable)` for lightweight concurrency\n- Virtual threads are ideal for I\u002FO-bound workloads\n- Use `Executors.newVirtualThreadPerTaskExecutor()` for thread pools\n\n### Pattern Matching\n- Switch expressions with pattern matching\n- Deconstruction patterns for records\n- Guarded patterns with `when` clauses\n\n### Records\n- Immutable data carriers with auto-generated constructors, equals, hashCode, toString\n- Custom compact constructors for validation\n\n### Sealed Classes\n- Restrict class hierarchies with `sealed`, `permits`\n- Enable exhaustive pattern matching\n\n### String Templates (Preview)\n- Template processors like `STR.\"\\{value}\"`\n- Custom template processors\n\n## Best Practices\n- Prefer records over plain POJOs for data transfer\n- Use sealed interfaces for algebraic data types\n- Leverage virtual threads for high-throughput servers\n- Use pattern matching to eliminate instanceof casts\n\n## Examples\n\n```java\nrecord Point(int x, int y) {}\n\nsealed interface Shape permits Circle, Rectangle {}\nrecord Circle(Point center, double radius) implements Shape {}\nrecord Rectangle(Point topLeft, Point bottomRight) implements Shape {}\n\nString describe(Shape shape) {\n    return switch (shape) {\n        case Circle c when c.radius() > 10 -> \"Large circle\";\n        case Circle c -> \"Small circle\";\n        case Rectangle r -> \"Rectangle\";\n    };\n}\n```\n","# Java 25 Expert Skill\n\n## Overview\nProvides expert guidance on Java 25 language features and best practices.\n\n## Key Java 25 Features\n\n### Virtual Threads (Project Loom)\n- Use `Thread.ofVirtual().start(runnable)` for lightweight concurrency\n- Virtual threads are ideal for I\u002FO-bound workloads\n- Use `Executors.newVirtualThreadPerTaskExecutor()` for thread pools\n\n### Pattern Matching\n- Switch expressions with pattern matching\n- Deconstruction patterns for records\n- Guarded patterns with `when` clauses\n\n### Records\n- Immutable data carriers with auto-generated constructors, equals, hashCode, toString\n- Custom compact constructors for validation\n\n### Sealed Classes\n- Restrict class hierarchies with `sealed`, `permits`\n- Enable exhaustive pattern matching\n\n### String Templates (Preview)\n- Template processors like `STR.\"\\{value}\"`\n- Custom template processors\n\n## Best Practices\n- Prefer records over plain POJOs for data transfer\n- Use sealed interfaces for algebraic data types\n- Leverage virtual threads for high-throughput servers\n- Use pattern matching to eliminate instanceof casts\n\n## Examples\n\n```java\nrecord Point(int x, int y) {}\n\nsealed interface Shape permits Circle, Rectangle {}\nrecord Circle(Point center, double radius) implements Shape {}\nrecord Rectangle(Point topLeft, Point bottomRight) implements Shape {}\n\nString describe(Shape shape) {\n    return switch (shape) {\n        case Circle c when c.radius() > 10 -> \"Large circle\";\n        case Circle c -> \"Small circle\";\n        case Rectangle r -> \"Rectangle\";\n    };\n}\n```\n",{"name":5,"description":7,"allowed-tools":32},"Read, Grep","main","90d379e95fcc23dd9759654c345424e1752b0f3a","pocs\u002Fjava-25-spring-boot-4-spring-ai-skills\u002Fsrc\u002Fmain\u002Fresources\u002F.claude\u002Fskills\u002Fjava-expert",9,"https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground","https:\u002F\u002Fgithub.com\u002Fdiegopacheco","http:\u002F\u002Fdiego-pacheco.blogspot.com","Brazilian Hands-on Software Architect | 20+ years in Tech | Author | Father. Opinions are my own!","2026-11-15 01:01:48",{"source":8,"skillName":5,"commands":43,"prompt":53,"zipAvailable":54},[44,47,50],{"tool":45,"command":46},"npx","npx skills add diegopacheco\u002Fai-playground --skill java-expert",{"tool":48,"command":49},"bunx","bunx skills add diegopacheco\u002Fai-playground --skill java-expert",{"tool":51,"command":52},"pnpm","pnpm dlx skills add diegopacheco\u002Fai-playground --skill java-expert","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fjava-25-spring-boot-4-spring-ai-skills\u002Fsrc\u002Fmain\u002Fresources\u002F.claude\u002Fskills\u002Fjava-expert\u002FSKILL.md",true,[],[57,75,85,98,114,133],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":68,"publishedAt":27},"01M6WJ537DN520XY8MSW9ZV0RP","word-count","Counts the words, lines and characters of a text or a file.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Ftext-skills\u002Fword-count\u002FSKILL.md",[63],{"categoryNo":64,"categoryName":65,"taxonomyType":66,"taxonomyTypeDesc":67},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[69,70,71,72,73,74],"count","word count","Word","characters","text","file",{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":27},"01M6WJ4Y2GT5SECWAKKYHGES4F","slugify","Turns a title or a sentence into a URL slug, lowercase words joined by hyphens with accents removed.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Ftext-skills\u002Fslugify\u002FSKILL.md",[],[77,82,83,84],"title","with","URL",{"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":27},"01M6WJ4V9CWHT9NVCD441VK5MH","json-format","Validates a JSON file and pretty prints it with two space indentation, or reports where the JSON is invalid.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Fdev-skills\u002Fjson-format\u002FSKILL.md",[],[92,93,94,74,95,96,97,83],"json","format","json format","reports","invalid","it",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":27},"01M6WJ4QMRKW8EFP71F4KS2DHE","commit-message","Writes a conventional commit message for the staged git changes.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002Fupstream-skills\u002Fdev-skills\u002Fcommit-message\u002FSKILL.md",[],[105,106,107,108,109,110,111,112,113],"commit","commit message","message","git","conventional commit","for","changes","staged","conventional commit message",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":27},"01M6WJ4MAM2CJH0GWYXFBB9GQC","skills-gateway","Gateway and router to a catalog of skills that are not registered directly. Use it before any task a specialized skill could handle, such as text, JSON or git chores. It finds the right skill and loads its instructions.","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fskills-gateway-router\u002F.claude\u002Fskills\u002Fskills-gateway\u002FSKILL.md",[],[121,122,97,123,124,108,125,92,73,126,127,128,129,130,131,132],"skills gateway","gateway","task","loads","Bash","node","specialized","instructions","catalog","use","router","as",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":27},"01M6M2PYJJQKMWGX7XT7ZJK0H3","decision-log","Record, list, show and supersede architecture decisions that persist across sessions in the shared agent infra state store. Use when the user says \"record this decision\", \"log an ADR\", \"what did we decide about\", \"list decisions\", or \"supersede decision\".","https:\u002F\u002Fgithub.com\u002Fdiegopacheco\u002Fai-playground\u002Fblob\u002Fmain\u002Fpocs\u002Fagent-skills-infra-poc\u002Fskills\u002Fdecision-log\u002FSKILL.md",[],[140,141,142,143,144,145,146,147,148,149,130,150,151,152,153,154,155,156,157,158],"decision log","log","decision","persist","architecture","state","adr","decide","decisions","list","show","infra","record","across","shared","store","about","supersede","sessions"]