[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C66FSG2413N2KEJGD0ZCXA":3,"skill-same:01M6C66FSG2413N2KEJGD0ZCXA":75},{"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":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":60,"updatedAt":61,"install":62,"resources":74},"01M6C66FSG2413N2KEJGD0ZCXA","eslint-to-biome",null,"Migrate JS\u002FTS linting from ESLint+Prettier to Biome. Use when .eslintrc* or eslint.config.* exists and no biome.json is present.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",60,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fmigration-patterns-plugin\u002Fskills\u002Feslint-to-biome\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"biome","eslint","eslint to biome","use","2026","when","sonnet","linting","present","prettier","npx","bun","only","test","fix","edit","write","read","check","find","grep","json","js","migrate","Bash","config","2026-11-10 10:12:30",false,"---\nname: eslint-to-biome\ndescription: \"Migrate JS\u002FTS linting from ESLint+Prettier to Biome. Use when .eslintrc* or eslint.config.* exists and no biome.json is present.\"\nallowed-tools: Read, Write, Edit, Glob, Grep, Bash(find *), Bash(test *), Bash(npx *), Bash(bun *), AskUserQuestion, TodoWrite\nmodel: sonnet\nargs: \"[--check-only] [--fix]\"\nargument-hint: \"[--check-only] [--fix]\"\ncreated: 2026-04-14\nmodified: 2026-05-09\nreviewed: 2026-04-14\n---\n\n# \u002Fmigration-patterns:eslint-to-biome\n\nMigrate from [ESLint](https:\u002F\u002Feslint.org\u002F) (and optionally [Prettier](https:\u002F\u002Fprettier.io\u002F)) to [Biome](https:\u002F\u002Fbiomejs.dev\u002F) — a fast, unified linter and formatter for JavaScript\u002FTypeScript written in Rust. Migrates configuration, updates pre-commit hooks, and removes old dependencies.\n\n## When to Use This Skill\n\n| Use this skill when... | Keep ESLint when... |\n|------------------------|---------------------|\n| `biome.json` does not exist yet | You rely on an ESLint plugin with no Biome equivalent (e.g., `eslint-plugin-react-hooks`, `eslint-plugin-jsx-a11y`) |\n| `.eslintrc*` or `eslint.config.*` exists | CI requires ESLint's exit codes specifically |\n| You also want to replace Prettier with Biome formatter | Team has invested in custom ESLint rules |\n| Using TypeScript and want a single tool | |\n\n> **Important:** Biome covers ~90% of common ESLint rules but not all plugins. Audit `eslint-plugin-*` dependencies before migrating. The most common unsupported plugins are accessibility (jsx-a11y) and framework hooks (react-hooks). You may need to keep ESLint alongside Biome for these.\n\n## Context\n\n- ESLint configs: !`find . -maxdepth 2 \\( -name '.eslintrc' -o -name '.eslintrc.js' -o -name '.eslintrc.cjs' -o -name '.eslintrc.json' -o -name '.eslintrc.yaml' -o -name '.eslintrc.yml' -o -name 'eslint.config.js' -o -name 'eslint.config.mjs' -o -name 'eslint.config.ts' \\)`\n- Prettier configs: !`find . -maxdepth 2 \\( -name '.prettierrc' -o -name '.prettierrc.js' -o -name '.prettierrc.json' -o -name 'prettier.config.js' \\)`\n- Biome config: !`find . -maxdepth 2 -name 'biome.json'`\n- package.json: !`find . -maxdepth 1 -name 'package.json'`\n- Pre-commit config: !`find . -maxdepth 1 -name '.pre-commit-config.yaml'`\n\n## Parameters\n\n| Parameter | Description |\n|-----------|-------------|\n| `--check-only` | Report what would change without modifying files |\n| `--fix` | Apply migration automatically |\n\n## Execution\n\nExecute this ESLint-to-Biome migration:\n\n### Step 1: Audit current ESLint\u002FPrettier configuration\n\n1. Read all ESLint config files found in context.\n2. Read Prettier config files if present.\n3. Check package.json for `eslint*` and `prettier*` dependencies.\n4. Report findings:\n   ```\n   ESLint → Biome migration audit\n   ================================\n   ESLint config:    .eslintrc.json (N rules, plugins: [...])\n   Prettier config:  .prettierrc (printWidth=N, singleQuote=true)\n   ESLint plugins:   eslint-plugin-import, @typescript-eslint, ...\n   Biome support:    ✓ eslint-plugin-import → Biome handles this\n                     ⚠ eslint-plugin-jsx-a11y → No Biome equivalent (keep ESLint for this)\n   biome.json:       NOT PRESENT\n   ```\n   If `--check-only`, stop here.\n\n### Step 2: Check plugin compatibility\n\nFor each `eslint-plugin-*` found, determine Biome coverage:\n\n| ESLint plugin | Biome equivalent |\n|---------------|-----------------|\n| `@typescript-eslint` | Biome has TypeScript-aware rules (`nursery\u002Fuse*`, `suspicious\u002F`, `correctness\u002F`) |\n| `eslint-plugin-import` | Biome `correctness\u002FnoUndeclaredDependencies`, `correctness\u002FnoUnusedImports` |\n| `eslint-plugin-unicorn` | Biome has partial coverage via `style\u002F` rules |\n| `eslint-plugin-jsx-a11y` | **Not covered by Biome** — keep ESLint for accessibility |\n| `eslint-plugin-react-hooks` | **Not covered by Biome** — keep ESLint for hooks rules |\n| `eslint-plugin-security` | Partial coverage in Biome `security\u002F` rules |\n\nIf unsupported plugins are found, ask the user whether to proceed with a partial migration (keep ESLint only for those plugins). If the user declines, abort.\n\n### Step 3: Create biome.json\n\nGenerate `biome.json` preserving equivalent rules from the existing ESLint and Prettier configurations:\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fbiomejs.dev\u002Fschemas\u002F1.9.0\u002Fschema.json\",\n  \"organizeImports\": {\n    \"enabled\": true\n  },\n  \"linter\": {\n    \"enabled\": true,\n    \"rules\": {\n      \"recommended\": true\n    }\n  },\n  \"formatter\": {\n    \"enabled\": true,\n    \"indentStyle\": \"space\",\n    \"indentWidth\": 2,\n    \"lineWidth\": 80\n  },\n  \"javascript\": {\n    \"formatter\": {\n      \"quoteStyle\": \"double\",\n      \"trailingCommas\": \"all\",\n      \"semicolons\": \"always\"\n    }\n  }\n}\n```\n\nAdjust these defaults to match the Prettier config found in Step 1:\n- `lineWidth` → from `printWidth`\n- `quoteStyle` → from `singleQuote: true` → `\"single\"`\n- `trailingCommas` → from `trailingComma: \"es5\"` → `\"es5\"`\n- `semicolons` → from `semi: false` → `\"asNeeded\"`\n- `indentStyle` → from `useTabs: true` → `\"tab\"`\n\n### Step 4: Update package.json\n\n1. Remove ESLint and Prettier dev dependencies (if doing full migration):\n   ```\n   \"devDependencies\": {\n     remove: eslint, @typescript-eslint\u002Fparser, @typescript-eslint\u002Feslint-plugin,\n             eslint-plugin-import, prettier, eslint-config-prettier, eslint-plugin-prettier\n     keep: eslint-plugin-jsx-a11y, eslint-plugin-react-hooks (if partial migration)\n   }\n   ```\n2. Add Biome:\n   ```json\n   \"@biomejs\u002Fbiome\": \"^1.9.0\"\n   ```\n3. Update scripts in package.json:\n   ```json\n   {\n     \"scripts\": {\n       \"lint\": \"biome check .\",\n       \"lint:fix\": \"biome check --write .\",\n       \"format\": \"biome format --write .\"\n     }\n   }\n   ```\n\n### Step 5: Update .pre-commit-config.yaml (if present)\n\nRemove any ESLint\u002FPrettier pre-commit hooks. Add Biome:\n\n```yaml\n- repo: https:\u002F\u002Fgithub.com\u002Fbiomejs\u002Fpre-commit\n  rev: v0.6.1  # use latest\n  hooks:\n    - id: biome-check\n      additional_dependencies: [\"@biomejs\u002Fbiome@1.9.0\"]\n```\n\n### Step 6: Delete old config files\n\nRemove ESLint and Prettier config files (unless keeping ESLint for unsupported plugins — in that case, keep `.eslintrc` but note Biome replaces most rules):\n- `.eslintrc*` → delete (if full migration)\n- `eslint.config.*` → delete (if full migration)\n- `.prettierrc*` → delete\n- `.eslintignore` → convert relevant patterns to `biome.json` `ignore` section\n\n### Step 7: Verify migration\n\nRun Biome to confirm it works:\n\n```bash\nnpx @biomejs\u002Fbiome check .\n# or with bun:\nbunx @biomejs\u002Fbiome check .\n```\n\nAddress any errors that weren't caught by ESLint (Biome may surface additional issues). Errors on first run are expected — fix them or add to `biome.json` ignore rules.\n\n### Step 8: Report\n\nPrint a summary:\n\n```\nESLint → Biome migration complete\n===================================\nbiome.json                CREATED\npackage.json              UPDATED (added @biomejs\u002Fbiome, removed eslint\u002Fprettier)\n.eslintrc.json            DELETED \u002F KEPT (partial migration)\n.prettierrc               DELETED\n.pre-commit-config.yaml   UPDATED (added biome-check hook)\n\nPartial migration note (if applicable):\n  Kept eslint-plugin-jsx-a11y and eslint-plugin-react-hooks — these plugins\n  have no Biome equivalent. ESLint is still needed for these rules.\n\nFiles to stage:\n  git add biome.json package.json .pre-commit-config.yaml\n  git add \u003Cdeleted config files>\n```\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Audit only | `\u002Fmigration-patterns:eslint-to-biome --check-only` |\n| Apply migration | `\u002Fmigration-patterns:eslint-to-biome --fix` |\n| Check with Biome | `npx @biomejs\u002Fbiome check .` |\n| Format with Biome | `npx @biomejs\u002Fbiome format --write .` |\n\n## Quick Reference\n\n| Item | Value |\n|------|-------|\n| Biome docs | https:\u002F\u002Fbiomejs.dev\u002F |\n| ESLint migration guide | https:\u002F\u002Fbiomejs.dev\u002Fguides\u002Fmigrate-eslint-prettier\u002F |\n| Config schema | `https:\u002F\u002Fbiomejs.dev\u002Fschemas\u002F1.9.0\u002Fschema.json` |\n| Pre-commit hook | `biomejs\u002Fpre-commit` |\n\n## See Also\n\n- `\u002Fmigration-patterns:black-to-ruff-format` — Python formatter migration (analogous pattern)\n- `\u002Fconfigure:repo` — End-to-end repo config driver\n","# \u002Fmigration-patterns:eslint-to-biome\n\nMigrate from [ESLint](https:\u002F\u002Feslint.org\u002F) (and optionally [Prettier](https:\u002F\u002Fprettier.io\u002F)) to [Biome](https:\u002F\u002Fbiomejs.dev\u002F) — a fast, unified linter and formatter for JavaScript\u002FTypeScript written in Rust. Migrates configuration, updates pre-commit hooks, and removes old dependencies.\n\n## When to Use This Skill\n\n| Use this skill when... | Keep ESLint when... |\n|------------------------|---------------------|\n| `biome.json` does not exist yet | You rely on an ESLint plugin with no Biome equivalent (e.g., `eslint-plugin-react-hooks`, `eslint-plugin-jsx-a11y`) |\n| `.eslintrc*` or `eslint.config.*` exists | CI requires ESLint's exit codes specifically |\n| You also want to replace Prettier with Biome formatter | Team has invested in custom ESLint rules |\n| Using TypeScript and want a single tool | |\n\n> **Important:** Biome covers ~90% of common ESLint rules but not all plugins. Audit `eslint-plugin-*` dependencies before migrating. The most common unsupported plugins are accessibility (jsx-a11y) and framework hooks (react-hooks). You may need to keep ESLint alongside Biome for these.\n\n## Context\n\n- ESLint configs: !`find . -maxdepth 2 \\( -name '.eslintrc' -o -name '.eslintrc.js' -o -name '.eslintrc.cjs' -o -name '.eslintrc.json' -o -name '.eslintrc.yaml' -o -name '.eslintrc.yml' -o -name 'eslint.config.js' -o -name 'eslint.config.mjs' -o -name 'eslint.config.ts' \\)`\n- Prettier configs: !`find . -maxdepth 2 \\( -name '.prettierrc' -o -name '.prettierrc.js' -o -name '.prettierrc.json' -o -name 'prettier.config.js' \\)`\n- Biome config: !`find . -maxdepth 2 -name 'biome.json'`\n- package.json: !`find . -maxdepth 1 -name 'package.json'`\n- Pre-commit config: !`find . -maxdepth 1 -name '.pre-commit-config.yaml'`\n\n## Parameters\n\n| Parameter | Description |\n|-----------|-------------|\n| `--check-only` | Report what would change without modifying files |\n| `--fix` | Apply migration automatically |\n\n## Execution\n\nExecute this ESLint-to-Biome migration:\n\n### Step 1: Audit current ESLint\u002FPrettier configuration\n\n1. Read all ESLint config files found in context.\n2. Read Prettier config files if present.\n3. Check package.json for `eslint*` and `prettier*` dependencies.\n4. Report findings:\n   ```\n   ESLint → Biome migration audit\n   ================================\n   ESLint config:    .eslintrc.json (N rules, plugins: [...])\n   Prettier config:  .prettierrc (printWidth=N, singleQuote=true)\n   ESLint plugins:   eslint-plugin-import, @typescript-eslint, ...\n   Biome support:    ✓ eslint-plugin-import → Biome handles this\n                     ⚠ eslint-plugin-jsx-a11y → No Biome equivalent (keep ESLint for this)\n   biome.json:       NOT PRESENT\n   ```\n   If `--check-only`, stop here.\n\n### Step 2: Check plugin compatibility\n\nFor each `eslint-plugin-*` found, determine Biome coverage:\n\n| ESLint plugin | Biome equivalent |\n|---------------|-----------------|\n| `@typescript-eslint` | Biome has TypeScript-aware rules (`nursery\u002Fuse*`, `suspicious\u002F`, `correctness\u002F`) |\n| `eslint-plugin-import` | Biome `correctness\u002FnoUndeclaredDependencies`, `correctness\u002FnoUnusedImports` |\n| `eslint-plugin-unicorn` | Biome has partial coverage via `style\u002F` rules |\n| `eslint-plugin-jsx-a11y` | **Not covered by Biome** — keep ESLint for accessibility |\n| `eslint-plugin-react-hooks` | **Not covered by Biome** — keep ESLint for hooks rules |\n| `eslint-plugin-security` | Partial coverage in Biome `security\u002F` rules |\n\nIf unsupported plugins are found, ask the user whether to proceed with a partial migration (keep ESLint only for those plugins). If the user declines, abort.\n\n### Step 3: Create biome.json\n\nGenerate `biome.json` preserving equivalent rules from the existing ESLint and Prettier configurations:\n\n```json\n{\n  \"$schema\": \"https:\u002F\u002Fbiomejs.dev\u002Fschemas\u002F1.9.0\u002Fschema.json\",\n  \"organizeImports\": {\n    \"enabled\": true\n  },\n  \"linter\": {\n    \"enabled\": true,\n    \"rules\": {\n      \"recommended\": true\n    }\n  },\n  \"formatter\": {\n    \"enabled\": true,\n    \"indentStyle\": \"space\",\n    \"indentWidth\": 2,\n    \"lineWidth\": 80\n  },\n  \"javascript\": {\n    \"formatter\": {\n      \"quoteStyle\": \"double\",\n      \"trailingCommas\": \"all\",\n      \"semicolons\": \"always\"\n    }\n  }\n}\n```\n\nAdjust these defaults to match the Prettier config found in Step 1:\n- `lineWidth` → from `printWidth`\n- `quoteStyle` → from `singleQuote: true` → `\"single\"`\n- `trailingCommas` → from `trailingComma: \"es5\"` → `\"es5\"`\n- `semicolons` → from `semi: false` → `\"asNeeded\"`\n- `indentStyle` → from `useTabs: true` → `\"tab\"`\n\n### Step 4: Update package.json\n\n1. Remove ESLint and Prettier dev dependencies (if doing full migration):\n   ```\n   \"devDependencies\": {\n     remove: eslint, @typescript-eslint\u002Fparser, @typescript-eslint\u002Feslint-plugin,\n             eslint-plugin-import, prettier, eslint-config-prettier, eslint-plugin-prettier\n     keep: eslint-plugin-jsx-a11y, eslint-plugin-react-hooks (if partial migration)\n   }\n   ```\n2. Add Biome:\n   ```json\n   \"@biomejs\u002Fbiome\": \"^1.9.0\"\n   ```\n3. Update scripts in package.json:\n   ```json\n   {\n     \"scripts\": {\n       \"lint\": \"biome check .\",\n       \"lint:fix\": \"biome check --write .\",\n       \"format\": \"biome format --write .\"\n     }\n   }\n   ```\n\n### Step 5: Update .pre-commit-config.yaml (if present)\n\nRemove any ESLint\u002FPrettier pre-commit hooks. Add Biome:\n\n```yaml\n- repo: https:\u002F\u002Fgithub.com\u002Fbiomejs\u002Fpre-commit\n  rev: v0.6.1  # use latest\n  hooks:\n    - id: biome-check\n      additional_dependencies: [\"@biomejs\u002Fbiome@1.9.0\"]\n```\n\n### Step 6: Delete old config files\n\nRemove ESLint and Prettier config files (unless keeping ESLint for unsupported plugins — in that case, keep `.eslintrc` but note Biome replaces most rules):\n- `.eslintrc*` → delete (if full migration)\n- `eslint.config.*` → delete (if full migration)\n- `.prettierrc*` → delete\n- `.eslintignore` → convert relevant patterns to `biome.json` `ignore` section\n\n### Step 7: Verify migration\n\nRun Biome to confirm it works:\n\n```bash\nnpx @biomejs\u002Fbiome check .\n# or with bun:\nbunx @biomejs\u002Fbiome check .\n```\n\nAddress any errors that weren't caught by ESLint (Biome may surface additional issues). Errors on first run are expected — fix them or add to `biome.json` ignore rules.\n\n### Step 8: Report\n\nPrint a summary:\n\n```\nESLint → Biome migration complete\n===================================\nbiome.json                CREATED\npackage.json              UPDATED (added @biomejs\u002Fbiome, removed eslint\u002Fprettier)\n.eslintrc.json            DELETED \u002F KEPT (partial migration)\n.prettierrc               DELETED\n.pre-commit-config.yaml   UPDATED (added biome-check hook)\n\nPartial migration note (if applicable):\n  Kept eslint-plugin-jsx-a11y and eslint-plugin-react-hooks — these plugins\n  have no Biome equivalent. ESLint is still needed for these rules.\n\nFiles to stage:\n  git add biome.json package.json .pre-commit-config.yaml\n  git add \u003Cdeleted config files>\n```\n\n## Agentic Optimizations\n\n| Context | Command |\n|---------|---------|\n| Audit only | `\u002Fmigration-patterns:eslint-to-biome --check-only` |\n| Apply migration | `\u002Fmigration-patterns:eslint-to-biome --fix` |\n| Check with Biome | `npx @biomejs\u002Fbiome check .` |\n| Format with Biome | `npx @biomejs\u002Fbiome format --write .` |\n\n## Quick Reference\n\n| Item | Value |\n|------|-------|\n| Biome docs | https:\u002F\u002Fbiomejs.dev\u002F |\n| ESLint migration guide | https:\u002F\u002Fbiomejs.dev\u002Fguides\u002Fmigrate-eslint-prettier\u002F |\n| Config schema | `https:\u002F\u002Fbiomejs.dev\u002Fschemas\u002F1.9.0\u002Fschema.json` |\n| Pre-commit hook | `biomejs\u002Fpre-commit` |\n\n## See Also\n\n- `\u002Fmigration-patterns:black-to-ruff-format` — Python formatter migration (analogous pattern)\n- `\u002Fconfigure:repo` — End-to-end repo config driver\n",{"args":50,"name":5,"model":25,"created":51,"modified":52,"reviewed":51,"description":7,"allowed-tools":53,"argument-hint":50},"[--check-only] [--fix]",1776124800000,1778284800000,"Read, Write, Edit, Glob, Grep, Bash(find *), Bash(test *), Bash(npx *), Bash(bun *), AskUserQuestion, TodoWrite","main","bdd0582f1a2ba53d21061835bfd72d45f2f954f4","migration-patterns-plugin\u002Fskills\u002Feslint-to-biome",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-15 03:36:11",{"source":8,"skillName":5,"commands":63,"prompt":72,"zipAvailable":73},[64,66,69],{"tool":29,"command":65},"npx skills add laurigates\u002Fclaude-plugins --skill eslint-to-biome",{"tool":67,"command":68},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill eslint-to-biome",{"tool":70,"command":71},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill eslint-to-biome","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fmigration-patterns-plugin\u002Fskills\u002Feslint-to-biome\u002FSKILL.md",true,[],[76,103,122,138,160,190],{"skillNo":77,"name":78,"nameZh":6,"description":79,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":80,"categories":81,"keywords":87,"publishedAt":45},"01M70PFHMH9ADY0CRE6047Y4B2","kitty-show-image","Show the user an image with a note on what to judge, via a file send or a labelled kitty tab. Use when the user must see an image, or icat fails with no \u002Fdev\u002Ftty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-show-image\u002FSKILL.md",[82],{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[88,89,90,91,92,93,94,95,96,97,22,24,43,98,99,100,101,102,23,36],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","with","xdg","via",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":45},"01M70PFEN18HKQ4RCQ1VPGMPTB","kitty-session-persistence","Snapshot and restore kitty terminal sessions on macOS. Use when surviving WindowServer hangs without losing tabs, configuring snapshots, or restoring after a force-reboot.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-session-persistence\u002FSKILL.md",[],[91,110,111,112,113,114,24,43,115,116,117,23,36,35,34,118,119,120,121,22],"kitty session persistence","session","persistence","false","snapshots","uname","reboot","terminal","snapshot","macos","sessions","restore",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":45},"01M70PFC77XGXCVQ1543VGZHYR","kitty-remote-control","Safe kitty remote control from an agent — read panes with kitty @ ls\u002Fget-text, notify, and never mutate the live terminal unasked. Use when running inside kitty.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fkitty-plugin\u002Fskills\u002Fkitty-remote-control\u002FSKILL.md",[],[129,130,91,131,132,93,133,134,94,135,136,22,24,137,43,99,100,117,23,36],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":45},"01M70P6WVMCT5JG4SACTM69AF9","docs-reference-check","Dangling doc-reference gate: flag markdown naming repo paths or relative links that no longer exist. Use when docs cite moved\u002Fdeleted files, or wiring a doc-drift lint.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fdocumentation-plugin\u002Fskills\u002Fdocs-reference-check\u002FSKILL.md",[],[145,37,146,147,148,149,150,151,152,153,22,24,43,154,98,155,156,157,158,159],"docs reference check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"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":175,"publishedAt":45},"01M6C6NDE7DAQGNWSF22J5CJ0Z","youtube-upload","Upload a video to YouTube via the Data API v3 and edit its title, description, tags or thumbnail afterwards. Use when publishing or retitling a YouTube video.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-upload\u002FSKILL.md",[166,169,170],{"categoryNo":167,"categoryName":168,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},{"categoryNo":171,"categoryName":172,"taxonomyType":173,"taxonomyTypeDesc":174},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[176,177,178,179,150,180,36,181,34,182,183,184,22,43,98,185,186,24,187,188,189,102,23],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":191,"name":192,"nameZh":6,"description":193,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":194,"categories":195,"keywords":199,"publishedAt":45},"01M6C6NABWW1X58KJJM4F6GQMQ","youtube-studio-share","Share a private YouTube video with a whole Google Workspace organization by scripting YouTube Studio in the browser. Use when a video must be org-only.","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fyoutube-plugin\u002Fskills\u002Fyoutube-studio-share\u002FSKILL.md",[196],{"categoryNo":197,"categoryName":198,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发",[200,201,202,203,178,179,204,205,206,207,208,36,209,210,31,211,22,212,24,100,213,23],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","MCP","chrome","organization"]