[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DWMF3FW9ZFZNE4PHH233AR":3,"skill-same:01M6DWMF3FW9ZFZNE4PHH233AR":81},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":62,"ownerHtmlUrl":63,"ownerBlogUrl":64,"ownerDescription":65,"updatedAt":66,"install":67,"resources":80},"01M6DWMF3FW9ZFZNE4PHH233AR","programming-java",null,"Modern Java practices: records, sealed types, pattern matching, virtual threads, failure contracts. Use when writing or reviewing Java in Maven or Gradle.","Muvon\u002Foctomind-tap","Muvon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25336907?v=4","01M6DWA4KTRX4J73CW5CECKAD0","01M6DWA4QSWFGYE6WDMAMFF1WE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-java\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000036","内容创作者",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"programming","programming java","java","threads","when","writing","pom","types","pattern matching","feature","maven","virtual","java development","developer","contracts","pattern","releases","later","gradle","project","2026-11-10 10:12:30",false,"---\nname: programming-java\ntitle: \"Java Development Best Practices\"\ndescription: \"Modern Java practices: records, sealed types, pattern matching, virtual threads, failure contracts. Use when writing or reviewing Java in Maven or Gradle.\"\nlicense: Apache-2.0\ncompatibility: \"Requires the project's JDK and Maven or Gradle; guidance distinguishes Java 17, 21, 25, and later feature releases.\"\ndomains: developer\nrules:\n  - file(pom.xml)\n  - file(build.gradle)\n  - content(java)\n---\n\n## Overview\n\nUse for Java implementation and review, especially modernizing verbose code without changing its contract. Keep the project's framework, build tool, and supported runtime; introduce newer features only when the configured release permits them.\n\n## Mental model\n\nMake invalid states difficult to construct and ownership easy to see. Records reduce boilerplate, virtual threads simplify blocking concurrency, and neither removes the need for validation, bounded resources, or deliberate failure handling.\n\n## Version gate\n\nAs of 2026-10: JDK 27 (GA 2026-09-15) is the current feature release and Java 25 is the latest LTS. Recheck the vendor's support policy before choosing a runtime. Read Maven compiler release or Gradle toolchains, CI images, and deployment constraints; the installed JDK alone does not determine usable APIs.\n\n| Minimum release | Useful stable features |\n|---|---|\n| 17 | Records, sealed types, text blocks, instanceof patterns |\n| 21 | Record patterns, pattern switch, virtual threads |\n| 22 | Unnamed variables and patterns |\n| 24 | Stream gatherers; synchronized virtual-thread pinning fixed |\n| 25 | Scoped values, flexible constructor bodies, compact source files, module import declarations |\n| 26 | HTTP\u002F3 in `java.net.http.HttpClient` (opt-in); warnings when deep reflection mutates `final` fields |\n| 27 | G1 is the default GC in every environment; compact object headers on by default |\n\nStructured concurrency (seventh preview), primitive types in patterns (fifth preview), and lazy constants (third preview) remain preview in JDK 27. Don't introduce preview flags or copy preview examples into ordinary production changes. Compact source files suit small programs; they do not justify flattening application structure. Code or libraries that mutate `final` fields via reflection (some serializers and mocking tools) will need `--enable-final-field-mutation` or an upgrade as JEP 500 moves toward enforcement.\n\n## Values and APIs\n\n- Use records for transparent values, ordinary classes for identity and controlled lifecycle. Records are shallowly immutable: copy mutable components, and don't assume array components get content-based equality.\n- Validate invariants once at construction. Use a sealed hierarchy and exhaustive switch for a closed domain; handle null separately when it is allowed. Avoid a catch-all branch that hides newly added variants.\n- Prefer `Optional\u003CT>` for a result that may legitimately be absent. Keep transport failure distinct from absence; don't return empty after catching an outage. Avoid Optional parameters when overloads or a clear nullable contract suffice.\n- Expose the smallest useful interface. Constructor injection makes dependencies visible; add interfaces, builders, or modules when they express a real boundary, not for every class.\n- `List.copyOf` creates an unmodifiable snapshot and rejects null elements; it does not copy mutable elements. An unmodifiable wrapper over a mutable collection is still a live view.\n- Use clear local inference, simple streams for transformations, and loops for stateful algorithms. Don't parallelize streams around blocking I\u002FO or shared mutation without owning their execution model.\n\n## Concurrency and failure\n\n- Virtual threads suit many blocking I\u002FO tasks, not faster CPU computation. Don't pool them. Bound scarce resources with connection pools, semaphores, and request limits even when threads are cheap.\n- On JDK 24+, don't replace `synchronized` solely to avoid its old virtual-thread pinning behavior. Native\u002Fforeign calls can still pin; profile before rewriting synchronization.\n- Scoped values hold lexically bounded request context; they are not a mutable ThreadLocal replacement. Keep CompletableFuture where an existing asynchronous API benefits from composition.\n- Give submitted work an owner: observe results, propagate failures, set deadlines, and cancel outstanding work when its result is no longer needed. Executor shutdown alone is not a request timeout.\n- Propagate `InterruptedException` where possible; when translating it at a boundary, restore the interrupt flag. Don't retry canceled work.\n- Use try-with-resources for owned closeable resources. Catch specific failures only when recovering or adding useful context; preserve the cause. Translate exceptions into API outcomes at the boundary, not repeatedly in each layer.\n- Retry only an identified transient failure with a bounded policy and safe operation semantics. An empty collection, zero, or stale cache is a fallback only if the contract explicitly permits it.\n\n## Integration and checks\n\n- Parameterize SQL; keep transaction ownership explicit. With an ORM, inspect query shape and lazy-loading boundaries instead of switching persistence libraries as a cleanup.\n- Use `java.time`; distinguish an instant from a local date\u002Ftime and inject a clock for time-sensitive behavior.\n- Follow the repository's formatter and test stack. JUnit 6 is the current generation, requiring Java 17; don't force an unrelated JUnit 5 migration. Test observable results, real database semantics, and cancellation where affected.\n\n## Example\n\nA record's list component needs its own ownership decision:\n\n```java\nimport java.util.List;\n\nrecord Batch(List\u003CString> ids) {\n    Batch {\n        ids = List.copyOf(ids);\n        if (ids.isEmpty()) {\n            throw new IllegalArgumentException(\"ids must not be empty\");\n        }\n    }\n}\n```\n\nStrings are immutable, so a shallow snapshot suffices here. A list of mutable domain objects would require a different contract.\n\n## Checklist\n\n- [ ] APIs and syntax fit the configured release; preview features are identified.\n- [ ] Mutable values, resources, and concurrent tasks have explicit owners.\n- [ ] Missing data, failure, timeout, and cancellation remain distinguishable.\n- [ ] Existing architecture and dependencies are preserved unless change is required.\n- [ ] Relevant checks were run when authorized; unexecuted checks are reported.\n\n## References\n\n- [Java support roadmap](https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjava-se-support-roadmap.html) and [language changes](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F26\u002Flanguage\u002Fjava-language-changes-summary.html)\n- [JDK 27 JEPs](https:\u002F\u002Fopenjdk.org\u002Fprojects\u002Fjdk\u002F27\u002F), [JDK 26 JEPs](https:\u002F\u002Fopenjdk.org\u002Fprojects\u002Fjdk\u002F26\u002F), and [JEP 500 final-field mutation](https:\u002F\u002Fopenjdk.org\u002Fjeps\u002F500)\n- [Record contract](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F25\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Flang\u002FRecord.html)\n- [Virtual threads](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F26\u002Fcore\u002Fvirtual-threads.html) and [ScopedValue](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F26\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Flang\u002FScopedValue.html)\n- [JUnit](https:\u002F\u002Fjunit.org\u002F)\n","## Overview\n\nUse for Java implementation and review, especially modernizing verbose code without changing its contract. Keep the project's framework, build tool, and supported runtime; introduce newer features only when the configured release permits them.\n\n## Mental model\n\nMake invalid states difficult to construct and ownership easy to see. Records reduce boilerplate, virtual threads simplify blocking concurrency, and neither removes the need for validation, bounded resources, or deliberate failure handling.\n\n## Version gate\n\nAs of 2026-10: JDK 27 (GA 2026-09-15) is the current feature release and Java 25 is the latest LTS. Recheck the vendor's support policy before choosing a runtime. Read Maven compiler release or Gradle toolchains, CI images, and deployment constraints; the installed JDK alone does not determine usable APIs.\n\n| Minimum release | Useful stable features |\n|---|---|\n| 17 | Records, sealed types, text blocks, instanceof patterns |\n| 21 | Record patterns, pattern switch, virtual threads |\n| 22 | Unnamed variables and patterns |\n| 24 | Stream gatherers; synchronized virtual-thread pinning fixed |\n| 25 | Scoped values, flexible constructor bodies, compact source files, module import declarations |\n| 26 | HTTP\u002F3 in `java.net.http.HttpClient` (opt-in); warnings when deep reflection mutates `final` fields |\n| 27 | G1 is the default GC in every environment; compact object headers on by default |\n\nStructured concurrency (seventh preview), primitive types in patterns (fifth preview), and lazy constants (third preview) remain preview in JDK 27. Don't introduce preview flags or copy preview examples into ordinary production changes. Compact source files suit small programs; they do not justify flattening application structure. Code or libraries that mutate `final` fields via reflection (some serializers and mocking tools) will need `--enable-final-field-mutation` or an upgrade as JEP 500 moves toward enforcement.\n\n## Values and APIs\n\n- Use records for transparent values, ordinary classes for identity and controlled lifecycle. Records are shallowly immutable: copy mutable components, and don't assume array components get content-based equality.\n- Validate invariants once at construction. Use a sealed hierarchy and exhaustive switch for a closed domain; handle null separately when it is allowed. Avoid a catch-all branch that hides newly added variants.\n- Prefer `Optional\u003CT>` for a result that may legitimately be absent. Keep transport failure distinct from absence; don't return empty after catching an outage. Avoid Optional parameters when overloads or a clear nullable contract suffice.\n- Expose the smallest useful interface. Constructor injection makes dependencies visible; add interfaces, builders, or modules when they express a real boundary, not for every class.\n- `List.copyOf` creates an unmodifiable snapshot and rejects null elements; it does not copy mutable elements. An unmodifiable wrapper over a mutable collection is still a live view.\n- Use clear local inference, simple streams for transformations, and loops for stateful algorithms. Don't parallelize streams around blocking I\u002FO or shared mutation without owning their execution model.\n\n## Concurrency and failure\n\n- Virtual threads suit many blocking I\u002FO tasks, not faster CPU computation. Don't pool them. Bound scarce resources with connection pools, semaphores, and request limits even when threads are cheap.\n- On JDK 24+, don't replace `synchronized` solely to avoid its old virtual-thread pinning behavior. Native\u002Fforeign calls can still pin; profile before rewriting synchronization.\n- Scoped values hold lexically bounded request context; they are not a mutable ThreadLocal replacement. Keep CompletableFuture where an existing asynchronous API benefits from composition.\n- Give submitted work an owner: observe results, propagate failures, set deadlines, and cancel outstanding work when its result is no longer needed. Executor shutdown alone is not a request timeout.\n- Propagate `InterruptedException` where possible; when translating it at a boundary, restore the interrupt flag. Don't retry canceled work.\n- Use try-with-resources for owned closeable resources. Catch specific failures only when recovering or adding useful context; preserve the cause. Translate exceptions into API outcomes at the boundary, not repeatedly in each layer.\n- Retry only an identified transient failure with a bounded policy and safe operation semantics. An empty collection, zero, or stale cache is a fallback only if the contract explicitly permits it.\n\n## Integration and checks\n\n- Parameterize SQL; keep transaction ownership explicit. With an ORM, inspect query shape and lazy-loading boundaries instead of switching persistence libraries as a cleanup.\n- Use `java.time`; distinguish an instant from a local date\u002Ftime and inject a clock for time-sensitive behavior.\n- Follow the repository's formatter and test stack. JUnit 6 is the current generation, requiring Java 17; don't force an unrelated JUnit 5 migration. Test observable results, real database semantics, and cancellation where affected.\n\n## Example\n\nA record's list component needs its own ownership decision:\n\n```java\nimport java.util.List;\n\nrecord Batch(List\u003CString> ids) {\n    Batch {\n        ids = List.copyOf(ids);\n        if (ids.isEmpty()) {\n            throw new IllegalArgumentException(\"ids must not be empty\");\n        }\n    }\n}\n```\n\nStrings are immutable, so a shallow snapshot suffices here. A list of mutable domain objects would require a different contract.\n\n## Checklist\n\n- [ ] APIs and syntax fit the configured release; preview features are identified.\n- [ ] Mutable values, resources, and concurrent tasks have explicit owners.\n- [ ] Missing data, failure, timeout, and cancellation remain distinguishable.\n- [ ] Existing architecture and dependencies are preserved unless change is required.\n- [ ] Relevant checks were run when authorized; unexecuted checks are reported.\n\n## References\n\n- [Java support roadmap](https:\u002F\u002Fwww.oracle.com\u002Fjava\u002Ftechnologies\u002Fjava-se-support-roadmap.html) and [language changes](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F26\u002Flanguage\u002Fjava-language-changes-summary.html)\n- [JDK 27 JEPs](https:\u002F\u002Fopenjdk.org\u002Fprojects\u002Fjdk\u002F27\u002F), [JDK 26 JEPs](https:\u002F\u002Fopenjdk.org\u002Fprojects\u002Fjdk\u002F26\u002F), and [JEP 500 final-field mutation](https:\u002F\u002Fopenjdk.org\u002Fjeps\u002F500)\n- [Record contract](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F25\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Flang\u002FRecord.html)\n- [Virtual threads](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F26\u002Fcore\u002Fvirtual-threads.html) and [ScopedValue](https:\u002F\u002Fdocs.oracle.com\u002Fen\u002Fjava\u002Fjavase\u002F26\u002Fdocs\u002Fapi\u002Fjava.base\u002Fjava\u002Flang\u002FScopedValue.html)\n- [JUnit](https:\u002F\u002Fjunit.org\u002F)\n",{"name":5,"rules":51,"title":55,"domains":39,"license":14,"description":7,"compatibility":56},[52,53,54],"file(pom.xml)","file(build.gradle)","content(java)","Java Development Best Practices","Requires the project's JDK and Maven or Gradle; guidance distinguishes Java 17, 21, 25, and later feature releases.","master","e9e4a19559669b1627b1ac5ed3f77b8e36cfad95","skills\u002Fprogramming-java",0,"https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap","https:\u002F\u002Foctomind.run\u002Ftap\u002F","https:\u002F\u002Fgithub.com\u002FMuvon","https:\u002F\u002Fmuvon.io","We bring ideas to life","2026-11-14 13:21:16",{"source":8,"skillName":5,"commands":68,"prompt":78,"zipAvailable":79},[69,72,75],{"tool":70,"command":71},"npx","npx skills add Muvon\u002Foctomind-tap --skill programming-java",{"tool":73,"command":74},"bunx","bunx skills add Muvon\u002Foctomind-tap --skill programming-java",{"tool":76,"command":77},"pnpm","pnpm dlx skills add Muvon\u002Foctomind-tap --skill programming-java","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fprogramming-java\u002FSKILL.md",true,[],[82,118,145,164,188,214],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":97,"publishedAt":46},"01M70SFC5CTHRKA9B97N1ARVZ2","seo-content-refresh","Finds decaying pages, picks update, merge, redirect or remove, and briefs each refresh. Use to prioritize existing content and judge whether it helped.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fseo-content-refresh\u002FSKILL.md",[88,93,96],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000019","营销推广","SCENARIO","使用场景",{"categoryNo":94,"categoryName":95,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000035","市场营销",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},[98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117],"seo content refresh","seo","seo content","content refresh","refresh","content","posts","remove","web search","performance","search","traffic","access","drop","websearch","revamp","merge","diagnosis","update","decay",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":126,"publishedAt":46},"01M70SBWQCHGH7HGS51Y0GTKKW","marketing-review-program","Plans how to ask real customers for honest public reviews: site choice, invitation copy, incentive and disclosure rules. Use to start a review program.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fmarketing-review-program\u002FSKILL.md",[124,125],{"categoryNo":89,"categoryName":90,"taxonomyType":91,"taxonomyTypeDesc":92},{"categoryNo":94,"categoryName":95,"taxonomyType":20,"taxonomyTypeDesc":21},[127,128,129,130,131,132,106,108,133,134,135,136,137,138,139,140,141,142,143,144],"program","review","marketing review program","marketing","reviews","get","campaign","choice","how to","only","generated","ask","plan","product","generate","customer","how","request",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":46},"01M70SBB65Z2FC71Q7DEAXGJBG","geo-source-actions","Turns AI citation findings into ranked per-source actions for Reddit threads, listicles, review sites and videos. Records only. Use after a GEO audit.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fgeo-source-actions\u002FSKILL.md",[],[152,153,154,155,156,132,106,108,157,158,136,112,128,159,29,160,140,161,162,163],"actions","geo source actions","source","geo","sources","copilot","domains","llms","youtube","audit","action","data",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":173,"publishedAt":46},"01M70S99D3Y6GF097GTXWBXHPW","commerce-ai-readiness","Audits product feeds, markup and live pages for AI shopping assistants, then lists exact fixes. Use to make a store catalog readable to AI shoppers.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Fcommerce-ai-readiness\u002FSKILL.md",[170],{"categoryNo":171,"categoryName":172,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000031","产品经理",[174,175,176,177,178,179,180,181,182,183,108,184,157,136,110,185,186,140,161,187],"ai readiness","commerce ai readiness","commerce","readiness","feeds","ready","show","shopping","discover","checkout","up","ecommerce","documentation","recommend",{"skillNo":189,"name":190,"nameZh":6,"description":191,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":197,"publishedAt":46},"01M6DWSX45J42KTK6XASKJRGPA","tap-model-training","Train, evaluate and publish the octomind-embed model behind capability auto-activation. Use when capability triggers or skill semantic() phrases change.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-model-training\u002FSKILL.md",[194],{"categoryNo":195,"categoryName":196,"taxonomyType":91,"taxonomyTypeDesc":92},"01JBSEEDCAT000000000000023","Skill与智能体开发",[198,199,200,201,202,184,203,204,205,206,207,208,209,210,211,143,212,213,30,116],"model","training","tap","tap model training","scope","eval","uv","auto","dataset","activate","api","capabilities","publish","change","embedding","re",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":221,"publishedAt":46},"01M6DWSQB7NSW53Z86XM81R1W1","tap-deps-authoring","Write dep scripts for the octomind-tap registry: header comments, platform.sh, mcp vs dep types, npx\u002Fuvx pattern. Use when editing deps\u002F\u003Corg>\u002F\u003Ctool>.sh.","https:\u002F\u002Fgithub.com\u002FMuvon\u002Foctomind-tap\u002Fblob\u002Fmaster\u002Fskills\u002Ftap-deps-authoring\u002FSKILL.md",[220],{"categoryNo":195,"categoryName":196,"taxonomyType":91,"taxonomyTypeDesc":92},[222,200,223,224,225,226,227,228,41,229,230,231,232,233,234,33,30,235,236,237],"deps","tap deps authoring","authoring","DEP","MCP","run","scripts","install","registry","platform","repo","editing","tool","write","org","for"]