[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6BXVGR52RYGR5R2A4N4C3SE":3,"skill-same:01M6BXVGR52RYGR5R2A4N4C3SE":48},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6BXVGR52RYGR5R2A4N4C3SE","parallelization",null,"Conventions for using parallelization in all tests using Jupiter","jesperancinha\u002Fkotlin-mysteries","jesperancinha","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F11569930?v=4","01M6BXV038GJ2R8FQNEPT7AVZC","João Filipe Sabino Esperancinha","01M6BXV07CCQXNTGXREN86RZBR",2,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fparallel\u002FSKILL.md",[],[5],"2026-11-10 10:12:30",false,"---\nname: parallelization\ndescription: Conventions for using parallelization in all tests using Jupiter\n---\n\n# Add a JUnit properties file to all modules to make sure parallelization is enabled\n\nFilename should be: `junit-platform.properties` and it should be placed in `src\u002Ftest\u002Fresources` of each module.\n\nIts content should be:\n\n```properties\njunit.jupiter.execution.parallel.enabled = true\njunit.jupiter.execution.parallel.config.fixed.parallelism = 4\njunit.jupiter.execution.parallel.config.dynamic.factor = 4.0\njunit.jupiter.execution.parallel.mode.default = concurrent\njunit.jupiter.execution.parallel.mode.classes.default = concurrent\n```\n\nOnly add this file, and if the file doesn't exist. Do not override existing files.\n\nCheck if tests run successfully for every module where you add this file. If it fails, then remove the file.\n\nIn case they fail, the following should be tried\n\n1. Add `@TestMethodOrder(OrderAnnotation::class)` to the test class\n2. Add `@Execution(SAME_THREAD)` to the test methods that are failing\n3. Add `@Order(1)` to the test methods that are failing. The number should be sequential for all failing tests\n\n## Example 1\n\n```kotlin\n\n@SpringBootTest(webEnvironment = RANDOM_PORT)\n@TestMethodOrder(OrderAnnotation::class)\nclass NarwhalsShopControllerTest @Autowired constructor(\n    private val narwhalsWebShopDao: NarwhalsWebShopDao,\n    private val testRestTemplate: TestRestTemplate,\n) {\n    val xmlHeaders = HttpHeaders().apply {\n        add(\"Content-Type\", APPLICATION_XML_VALUE)\n    }\n    val jsonHeaders = HttpHeaders().apply {\n        add(\"Content-Type\", APPLICATION_JSON_VALUE)\n    }\n\n    @Test\n    fun `should load narwhals`() {\n    }\n\n    @Test\n    fun `should make full purchase when stocks are available`() {\n    }\n\n    @Test\n    @Execution(SAME_THREAD)\n    fun `should make multiple purchase request but only one succeeds when stocks are available`(): Unit = runBlocking {\n    }\n\n    @Test\n    @Execution(SAME_THREAD)\n    fun `should make partial purchase when stocks are not available`() {\n    }\n\n    @Test\n    fun `should make no purchase when stocks are not available and show predictions`() {\n    }\n\n    @Test\n    @Execution(SAME_THREAD)\n    @Order(1)\n    fun `should return not found failed when nothing is available`() {\n    }\n\n}\n```\n\nIf it still fails. Only here revert the changes made to the test class and remove the `junit-platform.properties` file.","# Add a JUnit properties file to all modules to make sure parallelization is enabled\n\nFilename should be: `junit-platform.properties` and it should be placed in `src\u002Ftest\u002Fresources` of each module.\n\nIts content should be:\n\n```properties\njunit.jupiter.execution.parallel.enabled = true\njunit.jupiter.execution.parallel.config.fixed.parallelism = 4\njunit.jupiter.execution.parallel.config.dynamic.factor = 4.0\njunit.jupiter.execution.parallel.mode.default = concurrent\njunit.jupiter.execution.parallel.mode.classes.default = concurrent\n```\n\nOnly add this file, and if the file doesn't exist. Do not override existing files.\n\nCheck if tests run successfully for every module where you add this file. If it fails, then remove the file.\n\nIn case they fail, the following should be tried\n\n1. Add `@TestMethodOrder(OrderAnnotation::class)` to the test class\n2. Add `@Execution(SAME_THREAD)` to the test methods that are failing\n3. Add `@Order(1)` to the test methods that are failing. The number should be sequential for all failing tests\n\n## Example 1\n\n```kotlin\n\n@SpringBootTest(webEnvironment = RANDOM_PORT)\n@TestMethodOrder(OrderAnnotation::class)\nclass NarwhalsShopControllerTest @Autowired constructor(\n    private val narwhalsWebShopDao: NarwhalsWebShopDao,\n    private val testRestTemplate: TestRestTemplate,\n) {\n    val xmlHeaders = HttpHeaders().apply {\n        add(\"Content-Type\", APPLICATION_XML_VALUE)\n    }\n    val jsonHeaders = HttpHeaders().apply {\n        add(\"Content-Type\", APPLICATION_JSON_VALUE)\n    }\n\n    @Test\n    fun `should load narwhals`() {\n    }\n\n    @Test\n    fun `should make full purchase when stocks are available`() {\n    }\n\n    @Test\n    @Execution(SAME_THREAD)\n    fun `should make multiple purchase request but only one succeeds when stocks are available`(): Unit = runBlocking {\n    }\n\n    @Test\n    @Execution(SAME_THREAD)\n    fun `should make partial purchase when stocks are not available`() {\n    }\n\n    @Test\n    fun `should make no purchase when stocks are not available and show predictions`() {\n    }\n\n    @Test\n    @Execution(SAME_THREAD)\n    @Order(1)\n    fun `should return not found failed when nothing is available`() {\n    }\n\n}\n```\n\nIf it still fails. Only here revert the changes made to the test class and remove the `junit-platform.properties` file.",{"name":5,"description":7},"main","697d8147950c43487405f9593abb95dc5dc7aabe",".claude\u002Fskills\u002Fparallel",0,"https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries","https:\u002F\u002Fjesperancinha.github.io\u002Fkotlin-mysteries\u002F","https:\u002F\u002Fgithub.com\u002Fjesperancinha","http:\u002F\u002Fjoaofilipesabinoesperancinha.nl\u002F","IT Engineer","2026-07-20 17:47:29",{"source":8,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add jesperancinha\u002Fkotlin-mysteries --skill parallelization",{"tool":40,"command":41},"bunx","bunx skills add jesperancinha\u002Fkotlin-mysteries --skill parallelization",{"tool":43,"command":44},"pnpm","pnpm dlx skills add jesperancinha\u002Fkotlin-mysteries --skill parallelization","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fparallel\u002FSKILL.md",true,[],[49,66,80,89,96,105],{"skillNo":50,"name":51,"nameZh":6,"description":52,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":53,"categories":54,"keywords":55,"publishedAt":19},"01M6BXVS2Q1EJRCHG37A671S8K","spring","Conventions for dependency injection and mocking in Spring Boot in this project. Use this whenever writing, reviewing, or refactoring integration test classes (anything annotated @SpringBootTest, or under src\u002Ftest that talks to a real Spring context), especially when deciding how to wire dependencies or mock collaborators. Also consult this before adding @Autowired, @MockBean, @MockitoBean, or field injection in any test class.","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fspring\u002FSKILL.md",[],[51,56,57,58,59,60,61,62,63,64,65],"src","refactoring","consult","how","injection","integration","spring boot","boot","test","writing",{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":77,"publishedAt":19},"01M6BXVP5QBEYCNWG56FFBBHZK","spring-integration-test-wiring","Conventions for dependency injection and mocking in Spring Boot integration tests in this project. Use this whenever writing, reviewing, or refactoring integration test classes (anything annotated @SpringBootTest, or under src\u002Ftest that talks to a real Spring context), especially when deciding how to wire dependencies or mock collaborators. Also consult this before adding @Autowired, @MockBean, @MockitoBean, or field injection in any test class.","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fspring-test\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[78,61,64,56,57,58,59,60,62,63,79,65],"spring integration test wiring","integration tests",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M6BXVM9KDEWYJ7WWJSTA22GR","Scripts patterns","Conventions for using sh, bash, bat, python scripts","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fscripts\u002FSKILL.md",[],[82,87,88],"python","Bash",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":19},"01M6BXVJETCKANCGG2ZVJJVWYN","Readme standards","Conventions to use in Readme files","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Freadme\u002FSKILL.md",[],[91],{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":19},"01M6BXVEP33NG1YREVBDF5R3TN","Maven standards","Conventions to use in Maven files, mostly the `pom.xml` files","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fmaven\u002FSKILL.md",[],[98,103,104],"maven","xml",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":19},"01M6BXVCG904KP6JBVVXVR01CN","kotlin patterns","Conventions for using Kotlin","https:\u002F\u002Fgithub.com\u002Fjesperancinha\u002Fkotlin-mysteries\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fkotlin\u002FSKILL.md",[],[112,107],"kotlin"]