[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DZ2ECT2VQX9CASXPNGQNKG":3,"skill-same:01M6DZ2ECT2VQX9CASXPNGQNKG":88},{"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":23,"publishedAt":52,"linkOnly":53,"markdownContent":54,"markdownBody":55,"frontMatter":56,"refName":58,"commitSha":59,"skillDirectory":60,"forksCount":61,"repositoryHtmlUrl":62,"repositoryHomepageUrl":63,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6DZ2ECT2VQX9CASXPNGQNKG","metalint",null,"Use Metalint in .NET repositories that ship Node-based frontend assets and want one CLI entrypoint over several underlying linters. USE FOR: unified frontend lint commands; combined ESLint, Stylelint, HTMLHint, or similar checks; CI orchestration over multiple frontend linters. DO NOT USE FOR: simple repos where Biome already covers the required surface; teams that have not decided which underlying linters own each file type. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.","managedcode\u002Fdotnet-skills","managedcode","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F78253589?v=4","01M6DYDJR3EG8KB5G4PC65XCTT","Managed Code","01M6DYDJX0ZT432N04NYJW89DN",512,"MIT","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FTools\u002FMetalint\u002Fskills\u002Fmetalint\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发","SCENARIO","使用场景",[5,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51],"use","when","combined","inspect","which","relevant","biome","htmlhint","type","commands","do","build","simple","files","frontend","orchestrator","edit","linter","node","ci","repository","file","lint","run","teams","test","orchestration","cli","2026-11-10 10:12:30",false,"---\nname: metalint\ndescription: \"Use Metalint in .NET repositories that ship Node-based frontend assets and want one CLI entrypoint over several underlying linters. USE FOR: unified frontend lint commands; combined ESLint, Stylelint, HTMLHint, or similar checks; CI orchestration over multiple frontend linters. DO NOT USE FOR: simple repos where Biome already covers the required surface; teams that have not decided which underlying linters own each file type. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.\"\ncompatibility: \"Requires a .NET repository with a Node-based frontend and multiple underlying linters; Metalint is an orchestrator, not a replacement for the actual linter configs it delegates to.\"\n---\n\n# Metalint for Aggregated Frontend Linting in .NET Repositories\n\n## Trigger On\n\n- the repo wants one command to run several frontend linters together\n- the user asks for a unified lint entrypoint over ESLint, Stylelint, HTMLHint, or similar tools\n- the repo already has multiple linters and the problem is orchestration rather than choosing a single owner\n\n## Do Not Use For\n\n- simple repos where one tool such as Biome already covers the required surface\n- teams that have not decided which underlying linters own JS, CSS, and HTML yet\n- replacing the underlying linter configs with one vague wrapper config\n\n## Inputs\n\n- the nearest `AGENTS.md`\n- `package.json`\n- existing linter configs\n- any `.metalint\u002F` directory already checked in\n\n## Workflow\n\n1. Define underlying ownership first:\n   - ESLint for JS or TS\n   - Stylelint for CSS or SCSS\n   - HTMLHint for static HTML\n   - other delegated linters only when the repo really uses them\n2. Use Metalint only after those owners are explicit.\n3. Keep all wrapper configuration under `.metalint\u002F` and keep the delegated configs reviewable.\n4. Add package scripts such as:\n   - `lint`: `metalint`\n   - `lint:fix`: `metalint --fix`\n5. Treat formatter overlap carefully. If delegated tools can all fix files, define which ones are allowed to mutate which globs.\n6. Use Metalint in CI when the repo benefits from a single frontend lint step and formatter output such as GitHub annotations.\n7. Re-run the underlying owners directly when debugging Metalint issues so failures stay attributable.\n\n## Current Upstream Notes\n\n- Metalint `v0.22.1` keeps the Bun, Deno, JSR, and npm-check-updates 21 support from `v0.22.0` and fixes the formatter so console output preserves the intended column order. Re-run snapshot or parser tests for any CI integration that consumes Metalint's human-readable output.\n- Secretlint now ignores `.gitignore`. Re-run secret scanning against representative ignored and tracked fixtures after upgrading so the wrapper's effective file scope remains intentional.\n\n## Bootstrap When Missing\n\n1. Detect current state:\n   - `rg --files -g 'package.json' -g '.metalint\u002F**' -g 'eslint.config.*' -g 'stylelint.config.*' -g '.htmlhintrc*'`\n   - `rg -n '\"metalint\"|\"eslint\"|\"stylelint\"|\"htmlhint\"' --glob 'package.json' .`\n2. Prefer a repo-local install:\n   - `npm install --save-dev metalint`\n3. Install the delegated linters the repo actually needs; Metalint does not replace them.\n4. Create `.metalint\u002Fmetalint.config.js` plus delegated config files under `.metalint\u002F` only when the repo wants that consolidated layout.\n5. Verify with:\n   - `npx metalint`\n   - `npx metalint --fix`\n6. Return `status: configured` if the repo now has a working aggregated entrypoint, or `status: improved` if orchestration was tightened.\n7. Return `status: not_applicable` when the repo intentionally stays with direct linter commands and does not want the wrapper layer.\n\n## Handle Failures\n\n- If Metalint says a delegated linter is missing, install that linter or remove it from the wrapper config; Metalint cannot invent the underlying tool.\n- If fix mode causes conflicting rewrites, split ownership by glob instead of letting several tools mutate the same files blindly.\n- If the wrapper becomes harder to understand than direct commands, the repo probably does not need Metalint.\n- Debug noisy failures by running the delegated linter directly first, then come back to Metalint integration.\n\n## Deliver\n\n- one repeatable frontend lint entrypoint\n- explicit delegated-tool ownership\n- wrapper config that stays readable and attributable\n\n## Validate\n\n- each delegated linter is actually installed and configured\n- fix ownership is explicit across file types\n- CI output remains attributable to the right underlying tool\n- Metalint reduced operational friction instead of hiding the real owners\n\n## Ralph Loop\n\n1. Plan: analyze current state, target outcome, constraints, and risks.\n2. Execute one step and produce a concrete delta.\n3. Review the result and capture findings.\n4. Apply fixes in small batches and rerun checks.\n5. Update the plan after each iteration.\n6. Repeat until outcomes are acceptable.\n7. If a dependency is missing, bootstrap it or return `status: not_applicable` with a reason.\n\n### Required Result Format\n\n- `status`: `complete` | `clean` | `improved` | `configured` | `not_applicable` | `blocked`\n- `plan`: concise plan and current step\n- `actions_taken`: concrete changes made\n- `verification`: commands, checks, or review evidence\n- `remaining`: unresolved items or `none`\n\n## Example Requests\n\n- \"Give this repo one frontend lint command.\"\n- \"Wrap ESLint, Stylelint, and HTMLHint under Metalint.\"\n- \"Use Metalint in GitHub Actions for frontend checks.\"\n","# Metalint for Aggregated Frontend Linting in .NET Repositories\n\n## Trigger On\n\n- the repo wants one command to run several frontend linters together\n- the user asks for a unified lint entrypoint over ESLint, Stylelint, HTMLHint, or similar tools\n- the repo already has multiple linters and the problem is orchestration rather than choosing a single owner\n\n## Do Not Use For\n\n- simple repos where one tool such as Biome already covers the required surface\n- teams that have not decided which underlying linters own JS, CSS, and HTML yet\n- replacing the underlying linter configs with one vague wrapper config\n\n## Inputs\n\n- the nearest `AGENTS.md`\n- `package.json`\n- existing linter configs\n- any `.metalint\u002F` directory already checked in\n\n## Workflow\n\n1. Define underlying ownership first:\n   - ESLint for JS or TS\n   - Stylelint for CSS or SCSS\n   - HTMLHint for static HTML\n   - other delegated linters only when the repo really uses them\n2. Use Metalint only after those owners are explicit.\n3. Keep all wrapper configuration under `.metalint\u002F` and keep the delegated configs reviewable.\n4. Add package scripts such as:\n   - `lint`: `metalint`\n   - `lint:fix`: `metalint --fix`\n5. Treat formatter overlap carefully. If delegated tools can all fix files, define which ones are allowed to mutate which globs.\n6. Use Metalint in CI when the repo benefits from a single frontend lint step and formatter output such as GitHub annotations.\n7. Re-run the underlying owners directly when debugging Metalint issues so failures stay attributable.\n\n## Current Upstream Notes\n\n- Metalint `v0.22.1` keeps the Bun, Deno, JSR, and npm-check-updates 21 support from `v0.22.0` and fixes the formatter so console output preserves the intended column order. Re-run snapshot or parser tests for any CI integration that consumes Metalint's human-readable output.\n- Secretlint now ignores `.gitignore`. Re-run secret scanning against representative ignored and tracked fixtures after upgrading so the wrapper's effective file scope remains intentional.\n\n## Bootstrap When Missing\n\n1. Detect current state:\n   - `rg --files -g 'package.json' -g '.metalint\u002F**' -g 'eslint.config.*' -g 'stylelint.config.*' -g '.htmlhintrc*'`\n   - `rg -n '\"metalint\"|\"eslint\"|\"stylelint\"|\"htmlhint\"' --glob 'package.json' .`\n2. Prefer a repo-local install:\n   - `npm install --save-dev metalint`\n3. Install the delegated linters the repo actually needs; Metalint does not replace them.\n4. Create `.metalint\u002Fmetalint.config.js` plus delegated config files under `.metalint\u002F` only when the repo wants that consolidated layout.\n5. Verify with:\n   - `npx metalint`\n   - `npx metalint --fix`\n6. Return `status: configured` if the repo now has a working aggregated entrypoint, or `status: improved` if orchestration was tightened.\n7. Return `status: not_applicable` when the repo intentionally stays with direct linter commands and does not want the wrapper layer.\n\n## Handle Failures\n\n- If Metalint says a delegated linter is missing, install that linter or remove it from the wrapper config; Metalint cannot invent the underlying tool.\n- If fix mode causes conflicting rewrites, split ownership by glob instead of letting several tools mutate the same files blindly.\n- If the wrapper becomes harder to understand than direct commands, the repo probably does not need Metalint.\n- Debug noisy failures by running the delegated linter directly first, then come back to Metalint integration.\n\n## Deliver\n\n- one repeatable frontend lint entrypoint\n- explicit delegated-tool ownership\n- wrapper config that stays readable and attributable\n\n## Validate\n\n- each delegated linter is actually installed and configured\n- fix ownership is explicit across file types\n- CI output remains attributable to the right underlying tool\n- Metalint reduced operational friction instead of hiding the real owners\n\n## Ralph Loop\n\n1. Plan: analyze current state, target outcome, constraints, and risks.\n2. Execute one step and produce a concrete delta.\n3. Review the result and capture findings.\n4. Apply fixes in small batches and rerun checks.\n5. Update the plan after each iteration.\n6. Repeat until outcomes are acceptable.\n7. If a dependency is missing, bootstrap it or return `status: not_applicable` with a reason.\n\n### Required Result Format\n\n- `status`: `complete` | `clean` | `improved` | `configured` | `not_applicable` | `blocked`\n- `plan`: concise plan and current step\n- `actions_taken`: concrete changes made\n- `verification`: commands, checks, or review evidence\n- `remaining`: unresolved items or `none`\n\n## Example Requests\n\n- \"Give this repo one frontend lint command.\"\n- \"Wrap ESLint, Stylelint, and HTMLHint under Metalint.\"\n- \"Use Metalint in GitHub Actions for frontend checks.\"\n",{"name":5,"description":7,"compatibility":57},"Requires a .NET repository with a Node-based frontend and multiple underlying linters; Metalint is an orchestrator, not a replacement for the actual linter configs it delegates to.","main","497cc9aba79a931ac6fb8d36a48cc22fe3d6d74b","catalog\u002FTools\u002FMetalint\u002Fskills\u002Fmetalint",41,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills","https:\u002F\u002Fskills.managed-code.com","https:\u002F\u002Fgithub.com\u002Fmanagedcode","https:\u002F\u002Fwww.managed-code.com","Open Source Community for .NET Developers: Reliable, Actively Maintained, and Community-Driven. Made in Ukraine 🇺🇦 with ❤️","2026-11-11 19:34:28",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add managedcode\u002Fdotnet-skills --skill metalint",{"tool":74,"command":75},"bunx","bunx skills add managedcode\u002Fdotnet-skills --skill metalint",{"tool":77,"command":78},"pnpm","pnpm dlx skills add managedcode\u002Fdotnet-skills --skill metalint","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FTools\u002FMetalint\u002Fskills\u002Fmetalint\u002FSKILL.md",true,[82],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"manifest.json","REFERENCE","参考文档",55,"https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FTools\u002FMetalint\u002Fskills\u002Fmetalint\u002Fmanifest.json",[89,119,143,172,182,208],{"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":103,"publishedAt":52},"01M6DYQE1Y9FHAQHEDTVFQ3447","xtwitter-scraper","Use XTwitterScraper when a .NET application needs typed access to Xquik's X automation REST API for tweet search, user lookup, posting workflows, extraction jobs, monitors, webhooks, or giveaway draws. USE FOR: integrating the XTwitterScraper NuGet package; reviewing Xquik API client usage; modeling API-key configuration, pagination, binary exports, raw responses, retries, and webhook\u002Fevent flows in .NET. DO NOT USE FOR: unrelated stacks; direct browser automation; generic social-media strategy; or code that does not call Xquik. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FXTwitterScraper\u002Fskills\u002Fxtwitter-scraper\u002FSKILL.md",[95,98],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[104,105,106,47,107,108,109,44,110,111,112,113,40,114,115,37,116,33,117,118],"xtwitter scraper","browser automation","workflows","code","browser","search","api","Media","api client","access","unrelated","webhooks","social","modeling","webhook",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":131,"publishedAt":52},"01M6DYQ9S4PE1H6G8MCH9T21HR","sep","Use Sep for high-performance separated-value parsing and writing in .NET, including delimiter inference, explicit parser\u002Fwriter options, and low-allocation row\u002Fcolumn workflows. USE FOR: delimited data needs are performance-sensitive and allocation-aware; project needs explicit control over separator inference, escaping, trimming, and header behavior;. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fcatalog\u002FLibraries\u002FSep\u002Fskills\u002Fsep\u002FSKILL.md",[125,128],{"categoryNo":126,"categoryName":127,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":129,"categoryName":130,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000036","内容创作者",[121,132,133,106,134,47,44,135,136,137,40,138,114,37,34,139,140,141,33,142],"writing","performance","tasks","data","parsing","parser","context","writer","options","project","high-performance",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":52},"01M6DZS2DNEPXCGGF6SSCW6G5V","webgpu-threejs-tsl","Comprehensive guide for developing WebGPU-enabled Three.js applications using TSL (Three.js Shading Language). Covers WebGPU renderer setup, TSL syntax and node materials, compute shaders, post-processing effects, and WGSL integration. Use this skill when working with Three.js WebGPU, TSL shaders, node materials, or GPU compute in Three.js.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fwebgpu-claude-skill\u002Fskills\u002Fwebgpu-threejs-tsl\u002FSKILL.md",[],[150,151,152,153,154,155,156,157,158,42,159,160,24,161,162,163,164,165,166,167,168,169,170,171,25],"webgpu","threejs","webgpu threejs tsl","setup","shaders","gpu","integration","applications","js","syntax","guide","language","three","compute","post","processing","with","renderer","for","materials","wgsl","effects",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":52},"01M6DZS0BQXW2B56A289XF1X76","roslynk","Use Roslynk for semantic inspection and edits of *.cs, *.razor and *.cshtml solution files.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Froslynk\u002Fskills\u002Froslynk\u002FSKILL.md",[],[174,24,37,179,180,168,181],"semantic","razor","inspection",{"skillNo":183,"name":184,"nameZh":6,"description":185,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":186,"categories":187,"keywords":188,"publishedAt":52},"01M6DZRW6MEJCVW80K3S4XV60K","system-text-json-net11","Imperative guidance for the System.Text.Json APIs added in .NET 11: the built-in `JsonNamingPolicy.PascalCase` naming policy, and the strongly-typed generic `JsonSerializerOptions.GetTypeInfo` and `JsonSerializerOptions.TryGetTypeInfo` metadata accessors (generic overloads that return a typed `JsonTypeInfo`). USE ONLY when the user is targeting net11.0 or later and needs PascalCase JSON property or dictionary-key names without writing a custom naming policy, a strongly-typed generic `JsonTypeInfo` instead of the non-generic `JsonTypeInfo`, or a no-throw way to probe whether a type's serialization metadata is resolved. DO NOT USE when the target is earlier than net11.0, the requested behavior uses an established pre-net11 naming policy, or the user explicitly selected another JSON library.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet11\u002Fskills\u002Fsystem-text-json-net11\u002FSKILL.md",[],[189,190,191,192,132,193,194,195,196,197,198,24,199,200,201,202,34,32,203,204,205,168,206,207,25],"system","json","text","system text json net11","policy","metadata","library","serialization","behavior","user","only","probe","guidance","later","dictionary","naming","targeting","custom","generic",{"skillNo":209,"name":210,"nameZh":6,"description":211,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":212,"categories":213,"keywords":216,"publishedAt":52},"01M6DZRRJP3S662NFSG1RSPQQ7","process-api-net11","Provides guidance on the new System.Diagnostics.Process APIs introduced in .NET 11: Process.Run, Process.RunAndCaptureText, Process.StartAndForget, Process.ReadAllText\u002FBytes\u002FLines, KillOnParentExit, InheritedHandles, and StartDetached. USE FOR: starting, orchestrating, or capturing output from external processes in applications targeting net11.0 or later. DO NOT USE FOR: applications targeting .NET 10 or earlier, or basic pre-.NET 11 Process.Start usage without new APIs.","https:\u002F\u002Fgithub.com\u002Fmanagedcode\u002Fdotnet-skills\u002Fblob\u002Fmain\u002Fexternal-sources\u002Fupstreams\u002Fdotnet-skills\u002Fplugins\u002Fdotnet11\u002Fskills\u002Fprocess-api-net11\u002FSKILL.md",[214,215],{"categoryNo":96,"categoryName":97,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},[110,217,218,219,47,220,157,189,24,201,202,34,221,222,223,224,205,168,225],"process","process api net11","diagnostics","start","basic","processes","output","usage","new"]