[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71D71KG4VVZ9C4FMP0CMX1M":3,"skill-same:01M71D71KG4VVZ9C4FMP0CMX1M":134},{"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":29,"linkOnly":30,"markdownContent":31,"markdownBody":32,"frontMatter":33,"refName":34,"commitSha":35,"skillDirectory":36,"forksCount":14,"repositoryHtmlUrl":37,"repositoryHomepageUrl":6,"ownerHtmlUrl":38,"ownerBlogUrl":6,"ownerDescription":39,"updatedAt":40,"install":41,"resources":54},"01M71D71KG4VVZ9C4FMP0CMX1M","devel-jb-kotlin-tooling-java-to-kotlin",null,"| | `org.springframework.*` | [SPRING.md](references\u002Fframeworks\u002FSPRING.","DCx7C5\u002Fai-marketplace","DCx7C5","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F42419559?v=4","01M71C01G2AZV3NTNGWAWSHJPP","DC","01M71C01GQW6G50S2BYMS7PP3E",0,"MIT","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28],"devel jb kotlin tooling java to kotlin","tooling","kotlin tooling","kotlin","java","references","frameworks","spring","cybersecurity","org","2026-11-10 10:12:30",false,"---\nname: devel-jb-kotlin-tooling-java-to-kotlin\ndescription: \"| | `org.springframework.*` | [SPRING.md](references\u002Fframeworks\u002FSPRING.\"\ndomain: cybersecurity\n---\n\n|\n| `org.springframework.*` | [SPRING.md](references\u002Fframeworks\u002FSPRING.md) |\n| `lombok.*` | [LOMBOK.md](references\u002Fframeworks\u002FLOMBOK.md) |\n| `javax.persistence.*`, `jakarta.persistence.*`, `org.hibernate.*` | [HIBERNATE.md](references\u002Fframeworks\u002FHIBERNATE.md) |\n| `com.fasterxml.jackson.*` | [JACKSON.md](references\u002Fframeworks\u002FJACKSON.md) |\n| `io.micronaut.*` | [MICRONAUT.md](references\u002Fframeworks\u002FMICRONAUT.md) |\n| `io.quarkus.*`, `javax.enterprise.*`, `jakarta.enterprise.*` | [QUARKUS.md](references\u002Fframeworks\u002FQUARKUS.md) |\n| `dagger.*`, `dagger.hilt.*` | [DAGGER-HILT.md](references\u002Fframeworks\u002FDAGGER-HILT.md) |\n| `io.reactivex.*`, `rx.*` | [RXJAVA.md](references\u002Fframeworks\u002FRXJAVA.md) |\n| `org.junit.*`, `org.testng.*` | [JUNIT.md](references\u002Fframeworks\u002FJUNIT.md) |\n| `com.google.inject.*` | [GUICE.md](references\u002Fframeworks\u002FGUICE.md) |\n| `retrofit2.*`, `okhttp3.*` | [RETROFIT.md](references\u002Fframeworks\u002FRETROFIT.md) |\n| `org.mockito.*` | [MOCKITO.md](references\u002Fframeworks\u002FMOCKITO.md) |\n\nIf `javax.inject.*` is detected, check for Dagger\u002FHilt vs Guice by looking for other\nimports from those frameworks. If ambiguous, load both guides.\n\n## Step 1: Convert\n\nApply the conversion methodology from [CONVERSION-METHODOLOGY.md](references\u002FCONVERSION-METHODOLOGY.md).\n\nThis is a 4-step chain-of-thought process:\n1. **Faithful 1:1 translation** — exact semantics preserved\n2. **Nullability & mutability audit** — val\u002Fvar, nullable types\n3. **Collection type conversion** — Java mutable → Kotlin types\n4. **Idiomatic transformations** — properties, string templates, lambdas\n\nFive invariants are checked after each step. If any invariant is violated, revert\nto the previous step and redo.\n\nApply any loaded framework-specific guidance during step 4 (idiomatic transformations).\n\n## Step 2: Write Output\n\nWrite the converted Kotlin code to a `.kt` file with the same name as the original\nJava file, in the same directory.\n\n## Step 3: Preserve Git History\n\nTo preserve `git blame` history, use a two-phase approach:\n\n```bash\n# Phase 1: Rename (creates rename tracking)\ngit mv src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002FFoo.java src\u002Fmain\u002Fkotlin\u002Fcom\u002Fexample\u002FFoo.kt\ngit commit -m \"Rename Foo.java to Foo.kt\"\n\n# Phase 2: Replace content (tracked as modification, not new file)\n# Write the converted Kotlin content to Foo.kt\ngit commit -m \"Convert Foo from Java to Kotlin\"\n```\n\nIf the project keeps Java and Kotlin in the same source root (e.g., `src\u002Fmain\u002Fjava\u002F`),\nrename in place:\n\n```bash\ngit mv src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002FFoo.java src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002FFoo.kt\n```\n\nIf the project does not use Git, simply write the `.kt` file and delete the `.java` file.\n\n## Step 4: Verify\n\nAfter conversion, verify using [checklist.md](assets\u002Fchecklist.md):\n- Attempt to compile the converted file\n- Run existing tests\n- Check annotation site targets\n- Confirm no behavioral changes\n\n## Batch Conversion\n\nWhen converting multiple files (a directory or package):\n\n1. **List all `.java` files** in the target scope\n2. **Sort by dependency order** — convert leaf dependencies first (files that don't\n   import other files in the conversion set), then work up to files that depend on them\n3. **Convert one file at a time** — apply the full workflow (steps 0-4) for each\n4. **Track progress** — report which files are done, which remain\n5. **Handle cross-references** — after converting a file, update imports in other Java\n   files if needed (e.g., if a class moved packages)\n\nFor large batches, consider converting in packages (bottom-up from leaf packages).\n\n## Common Pitfalls\n\nSee [KNOWN-ISSUES.md](references\u002FKNOWN-ISSUES.md) for:\n- Kotlin keyword conflicts (`when`, `in`, `is`, `object`)\n- SAM conversion ambiguity\n- Platform types from Java interop\n- `@JvmStatic` \u002F `@JvmField` \u002F `@JvmOverloads` usage\n- Checked exceptions and `@Throws`\n- Wildcard generics → Kotlin variance\n","|\n| `org.springframework.*` | [SPRING.md](references\u002Fframeworks\u002FSPRING.md) |\n| `lombok.*` | [LOMBOK.md](references\u002Fframeworks\u002FLOMBOK.md) |\n| `javax.persistence.*`, `jakarta.persistence.*`, `org.hibernate.*` | [HIBERNATE.md](references\u002Fframeworks\u002FHIBERNATE.md) |\n| `com.fasterxml.jackson.*` | [JACKSON.md](references\u002Fframeworks\u002FJACKSON.md) |\n| `io.micronaut.*` | [MICRONAUT.md](references\u002Fframeworks\u002FMICRONAUT.md) |\n| `io.quarkus.*`, `javax.enterprise.*`, `jakarta.enterprise.*` | [QUARKUS.md](references\u002Fframeworks\u002FQUARKUS.md) |\n| `dagger.*`, `dagger.hilt.*` | [DAGGER-HILT.md](references\u002Fframeworks\u002FDAGGER-HILT.md) |\n| `io.reactivex.*`, `rx.*` | [RXJAVA.md](references\u002Fframeworks\u002FRXJAVA.md) |\n| `org.junit.*`, `org.testng.*` | [JUNIT.md](references\u002Fframeworks\u002FJUNIT.md) |\n| `com.google.inject.*` | [GUICE.md](references\u002Fframeworks\u002FGUICE.md) |\n| `retrofit2.*`, `okhttp3.*` | [RETROFIT.md](references\u002Fframeworks\u002FRETROFIT.md) |\n| `org.mockito.*` | [MOCKITO.md](references\u002Fframeworks\u002FMOCKITO.md) |\n\nIf `javax.inject.*` is detected, check for Dagger\u002FHilt vs Guice by looking for other\nimports from those frameworks. If ambiguous, load both guides.\n\n## Step 1: Convert\n\nApply the conversion methodology from [CONVERSION-METHODOLOGY.md](references\u002FCONVERSION-METHODOLOGY.md).\n\nThis is a 4-step chain-of-thought process:\n1. **Faithful 1:1 translation** — exact semantics preserved\n2. **Nullability & mutability audit** — val\u002Fvar, nullable types\n3. **Collection type conversion** — Java mutable → Kotlin types\n4. **Idiomatic transformations** — properties, string templates, lambdas\n\nFive invariants are checked after each step. If any invariant is violated, revert\nto the previous step and redo.\n\nApply any loaded framework-specific guidance during step 4 (idiomatic transformations).\n\n## Step 2: Write Output\n\nWrite the converted Kotlin code to a `.kt` file with the same name as the original\nJava file, in the same directory.\n\n## Step 3: Preserve Git History\n\nTo preserve `git blame` history, use a two-phase approach:\n\n```bash\n# Phase 1: Rename (creates rename tracking)\ngit mv src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002FFoo.java src\u002Fmain\u002Fkotlin\u002Fcom\u002Fexample\u002FFoo.kt\ngit commit -m \"Rename Foo.java to Foo.kt\"\n\n# Phase 2: Replace content (tracked as modification, not new file)\n# Write the converted Kotlin content to Foo.kt\ngit commit -m \"Convert Foo from Java to Kotlin\"\n```\n\nIf the project keeps Java and Kotlin in the same source root (e.g., `src\u002Fmain\u002Fjava\u002F`),\nrename in place:\n\n```bash\ngit mv src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002FFoo.java src\u002Fmain\u002Fjava\u002Fcom\u002Fexample\u002FFoo.kt\n```\n\nIf the project does not use Git, simply write the `.kt` file and delete the `.java` file.\n\n## Step 4: Verify\n\nAfter conversion, verify using [checklist.md](assets\u002Fchecklist.md):\n- Attempt to compile the converted file\n- Run existing tests\n- Check annotation site targets\n- Confirm no behavioral changes\n\n## Batch Conversion\n\nWhen converting multiple files (a directory or package):\n\n1. **List all `.java` files** in the target scope\n2. **Sort by dependency order** — convert leaf dependencies first (files that don't\n   import other files in the conversion set), then work up to files that depend on them\n3. **Convert one file at a time** — apply the full workflow (steps 0-4) for each\n4. **Track progress** — report which files are done, which remain\n5. **Handle cross-references** — after converting a file, update imports in other Java\n   files if needed (e.g., if a class moved packages)\n\nFor large batches, consider converting in packages (bottom-up from leaf packages).\n\n## Common Pitfalls\n\nSee [KNOWN-ISSUES.md](references\u002FKNOWN-ISSUES.md) for:\n- Kotlin keyword conflicts (`when`, `in`, `is`, `object`)\n- SAM conversion ambiguity\n- Platform types from Java interop\n- `@JvmStatic` \u002F `@JvmField` \u002F `@JvmOverloads` usage\n- Checked exceptions and `@Throws`\n- Wildcard generics → Kotlin variance\n",{"name":5,"domain":27,"description":7},"main","a91f1293287ffa9f4f1b8f486cd6e835a1568c84","skills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace","https:\u002F\u002Fgithub.com\u002FDCx7C5","#Python","2026-09-01 11:21:00",{"source":8,"skillName":5,"commands":42,"prompt":52,"zipAvailable":53},[43,46,49],{"tool":44,"command":45},"npx","npx skills add DCx7C5\u002Fai-marketplace --skill devel-jb-kotlin-tooling-java-to-kotlin",{"tool":47,"command":48},"bunx","bunx skills add DCx7C5\u002Fai-marketplace --skill devel-jb-kotlin-tooling-java-to-kotlin",{"tool":50,"command":51},"pnpm","pnpm dlx skills add DCx7C5\u002Fai-marketplace --skill devel-jb-kotlin-tooling-java-to-kotlin","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002FSKILL.md",true,[55,61,65,71,75,79,83,87,90,94,98,102,106,110,114,118,122,126,130],{"path":56,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":59,"sourceHtmlUrl":60},"assets\u002Fchecklist.md","ASSET","资产文件",2591,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Fassets\u002Fchecklist.md",{"path":62,"resourceType":57,"resourceTypeDesc":58,"sizeBytes":63,"sourceHtmlUrl":64},"assets\u002Findex.json",84,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Fassets\u002Findex.json",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"index.json","REFERENCE","参考文档",1214,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Findex.json",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002FCONVERSION-METHODOLOGY.md",10048,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002FCONVERSION-METHODOLOGY.md",{"path":76,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fframeworks\u002FDAGGER-HILT.md",4443,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FDAGGER-HILT.md",{"path":80,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Fframeworks\u002FGUICE.md",4577,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FGUICE.md",{"path":84,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":85,"sourceHtmlUrl":86},"references\u002Fframeworks\u002FHIBERNATE.md",6020,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FHIBERNATE.md",{"path":88,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":63,"sourceHtmlUrl":89},"references\u002Fframeworks\u002Findex.json","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002Findex.json",{"path":91,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":92,"sourceHtmlUrl":93},"references\u002Fframeworks\u002FJACKSON.md",7262,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FJACKSON.md",{"path":95,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":96,"sourceHtmlUrl":97},"references\u002Fframeworks\u002FJUNIT.md",5448,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FJUNIT.md",{"path":99,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fframeworks\u002FLOMBOK.md",6489,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FLOMBOK.md",{"path":103,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":104,"sourceHtmlUrl":105},"references\u002Fframeworks\u002FMICRONAUT.md",3332,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FMICRONAUT.md",{"path":107,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Fframeworks\u002FMOCKITO.md",7846,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FMOCKITO.md",{"path":111,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Fframeworks\u002FQUARKUS.md",3853,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FQUARKUS.md",{"path":115,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Fframeworks\u002FRETROFIT.md",4547,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FRETROFIT.md",{"path":119,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":120,"sourceHtmlUrl":121},"references\u002Fframeworks\u002FRXJAVA.md",5688,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FRXJAVA.md",{"path":123,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":124,"sourceHtmlUrl":125},"references\u002Fframeworks\u002FSPRING.md",6480,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Fframeworks\u002FSPRING.md",{"path":127,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":128,"sourceHtmlUrl":129},"references\u002Findex.json",416,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002Findex.json",{"path":131,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":132,"sourceHtmlUrl":133},"references\u002FKNOWN-ISSUES.md",9689,"https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fdevel-jb-kotlin-tooling-java-to-kotlin\u002Freferences\u002FKNOWN-ISSUES.md",[135,160,183,205,227,243],{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":141,"publishedAt":29},"01M71HAPZ01KQ30RKTB0FFSQ05","services-wmi-persistence-detect","Detect WMI event subscription persistence by enumerating ActiveScriptEventConsumer, CommandLineEventConsumer, and permanent subscriptions in the WMI repository.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fpersistence\u002Fdetect\u002FSKILL.md",[],[142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,27,159],"services","detect","services wmi persistence detect","wmi","persistence","de","cm","process","activescript","event","subscriptions","commandline-consumer","repository","subscription","event-subscription","t1546.003","forensics","process-forensics",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":29},"01M71HAK6JTTTS229T17WJMMCG","services-wmi-exec-exploit","Perform lateral movement across Windows networks using WMI-based remote execution techniques including Impacket wmiexec.py, CrackMapExec, and native WMI commands for stealthy post-exploitation during red team engagements.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fservices\u002Fwmi\u002Fexec\u002Fexploit\u002FSKILL.md",[],[167,142,168,145,169,170,171,27,172,173,174,175,176,177,147,178,179,180,181,182],"exploit","services wmi exec exploit","exec","remote","traffic","Bash","analysis","team","across","crackmapexec","native","command","lateral movement","read","lateral-movement","Impacket",{"skillNo":184,"name":185,"nameZh":6,"description":186,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":187,"categories":188,"keywords":189,"publishedAt":29},"01M71HAG6MHKNQV8KDZKMT4886","registry-artifact-extract","Extract and analyze Windows Registry hives to uncover user activity, installed software, autostart entries, and evidence of system compromise.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fregistry\u002Fartifact\u002Fextract\u002FSKILL.md",[],[190,191,192,193,194,195,27,172,196,173,197,198,147,180,199,200,201,202,203,204],"artifact","registry","registry artifact extract","extract","evidence-collection","artifact-analysis","collection","analyze","uncover","software","activity","digital-forensics","windows-registry","regripper","sonnet",{"skillNo":206,"name":207,"nameZh":6,"description":208,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":209,"categories":210,"keywords":211,"publishedAt":29},"01M71HACR4A8XTWTTSXK4124AA","processes-token-impersonate-detect","Detect Windows token impersonation and privilege abuse including SeImpersonatePrivilege exploitation via Potato attacks and token stealing techniques.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Ftoken\u002Fimpersonate\u002Fdetect\u002FSKILL.md",[],[143,212,213,214,215,216,217,148,218,27,159,219,220,221,222,223,224,225,226,147],"processes token impersonate detect","token","processes","attacks","windows","escalation","techniques","privilege-escalation","seimpersonate","token-impersonation","printspoofer","exploitation","potato","impersonation","via",{"skillNo":228,"name":229,"nameZh":6,"description":230,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":231,"categories":232,"keywords":233,"publishedAt":29},"01M71HAABSB4Z6QFSXEG00R4RK","processes-thread-injection-detect","Detect Windows thread injection techniques including CreateRemoteThread, QueueUserAPC, NtCreateThreadEx, and thread hijacking via process memory analysis.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fthread\u002Finjection\u002Fdetect\u002FSKILL.md",[],[234,235,143,236,214,216,237,148,238,218,27,159,173,239,240,241,242,226,147,149],"thread","processes thread injection detect","injection","memory","process-injection","api","apc-injection","thread-injection","nt-api",{"skillNo":244,"name":245,"nameZh":6,"description":246,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":247,"categories":248,"keywords":249,"publishedAt":29},"01M71HA7H311V5G14WMX58HQSS","processes-hollow-technique-detect","Detect process hollowing (RunPE) by identifying processes with mismatched image paths between PEB and VAD tree, or unmapped PE headers in memory.","https:\u002F\u002Fgithub.com\u002FDCx7C5\u002Fai-marketplace\u002Fblob\u002Fmain\u002Fskills\u002Fwindows\u002Fprocesses\u002Fhollow\u002Ftechnique\u002Fdetect\u002FSKILL.md",[],[250,143,214,251,237,148,252,253,27,159,254,255,256,257,258,259,147,149,260,261],"processes hollow technique detect","tree","memory-forensics","process-hollow","peb","runpe","image","pe-header","in memory","with","mismatched","headers"]