[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6AMQ036MXDM9S31SBG4VR":3,"skill-same:01M6C6AMQ036MXDM9S31SBG4VR":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":23,"publishedAt":45,"linkOnly":46,"markdownContent":47,"markdownBody":48,"frontMatter":49,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":6,"ownerDescription":59,"updatedAt":60,"install":61,"resources":74},"01M6C6AMQ036MXDM9S31SBG4VR","python-code-quality",null,"Python code quality with ruff and ty. Use when the user mentions ruff, ty, linting, formatting, type checking, or Python code style.","laurigates\u002Fclaude-plugins","laurigates","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13014001?v=4","01M6C59YHWS9C7KMXKSRX1YXNP","Lauri Gates","01M6C59YP2APG9YAM4DWYQYGFJ",59,"MIT","https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fpython-plugin\u002Fskills\u002Fpython-code-quality\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"python code quality","quality","python","code","code quality","python code","2026","style","linting","with","type","when","false","ty","2025","python code style","ruff","Bash","use","grep","read","2026-11-10 10:12:30",false,"---\ncreated: 2025-12-16\nmodified: 2026-05-29\nreviewed: 2026-05-29\nname: python-code-quality\ndescription: Python code quality with ruff and ty. Use when the user mentions ruff, ty, linting, formatting, type checking, or Python code style.\nuser-invocable: false\nallowed-tools: Bash, Read, Grep, Glob\n---\n\n# Python Code Quality\n\nOrchestration index for the Python quality stack. This skill **routes** to\nthe focused skills that own each tool — it does not restate their commands.\nReach for it when setting up or reasoning about the whole stack (lint +\nformat + type-check + tests) at once; reach for a focused skill when tuning\none tool.\n\n## When to Use This Skill\n\n| Use this skill when... | Use a focused sibling instead when... |\n|---|---|\n| Standing up a complete quality stack for a new project | Tuning only ruff lint rule selection — use `ruff-linting` |\n| Reasoning about how the tools fit together \u002F comparing them | Configuring only ruff formatter quirks — use `ruff-formatting` |\n| Wiring lint + type-check into pre-commit and CI together | Configuring strict type-checker rules — use `ty-type-checking` or `basedpyright-type-checking` |\n\n## Routing Table\n\n| Concern | Focused skill |\n|---------|---------------|\n| Lint rules, rule selection, auto-fix | `python-plugin:ruff-linting` |\n| Code formatting (quote style, line length) | `python-plugin:ruff-formatting` |\n| Editor \u002F pre-commit \u002F CI \u002F Docker wiring for ruff | `python-plugin:ruff-linting` → its `REFERENCE.md` |\n| Type checking with ty | `python-plugin:ty-type-checking` |\n| Type checking with basedpyright | `python-plugin:basedpyright-type-checking` |\n| Dead-code detection | `python-plugin:vulture-dead-code` |\n| Test quality \u002F coverage | `python-plugin:python-testing`, `python-plugin:pytest-advanced` |\n| Modern type-hint syntax and idioms | `python-plugin:python-development` |\n| Adding the tools to a project | `python-plugin:uv-project-management` |\n\n## Full Stack at a Glance\n\nThe one thing this index owns: the tools running **together** in pre-commit.\nFor each tool's flags and config, follow the routing table above.\n\n```yaml\n# .pre-commit-config.yaml — ruff (lint + format) and ty together\nrepos:\n  - repo: https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff-pre-commit\n    rev: v0.14.0\n    hooks:\n      - id: ruff-check\n        args: [--fix]\n      - id: ruff-format\n  - repo: https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fty\n    rev: 0.0.98\n    hooks:\n      - id: ty\n```\n\nA typical CI quality gate runs the same three steps: `ruff check`,\n`ruff format --check`, `ty check`. See `ruff-linting` § CI\u002FCD Integration and\n`ty-type-checking` for the runnable forms.\n\n## References\n\n- Ruff: \u003Chttps:\u002F\u002Fdocs.astral.sh\u002Fruff\u002F>\n- ty: \u003Chttps:\u002F\u002Fdocs.astral.sh\u002Fty\u002F>\n","# Python Code Quality\n\nOrchestration index for the Python quality stack. This skill **routes** to\nthe focused skills that own each tool — it does not restate their commands.\nReach for it when setting up or reasoning about the whole stack (lint +\nformat + type-check + tests) at once; reach for a focused skill when tuning\none tool.\n\n## When to Use This Skill\n\n| Use this skill when... | Use a focused sibling instead when... |\n|---|---|\n| Standing up a complete quality stack for a new project | Tuning only ruff lint rule selection — use `ruff-linting` |\n| Reasoning about how the tools fit together \u002F comparing them | Configuring only ruff formatter quirks — use `ruff-formatting` |\n| Wiring lint + type-check into pre-commit and CI together | Configuring strict type-checker rules — use `ty-type-checking` or `basedpyright-type-checking` |\n\n## Routing Table\n\n| Concern | Focused skill |\n|---------|---------------|\n| Lint rules, rule selection, auto-fix | `python-plugin:ruff-linting` |\n| Code formatting (quote style, line length) | `python-plugin:ruff-formatting` |\n| Editor \u002F pre-commit \u002F CI \u002F Docker wiring for ruff | `python-plugin:ruff-linting` → its `REFERENCE.md` |\n| Type checking with ty | `python-plugin:ty-type-checking` |\n| Type checking with basedpyright | `python-plugin:basedpyright-type-checking` |\n| Dead-code detection | `python-plugin:vulture-dead-code` |\n| Test quality \u002F coverage | `python-plugin:python-testing`, `python-plugin:pytest-advanced` |\n| Modern type-hint syntax and idioms | `python-plugin:python-development` |\n| Adding the tools to a project | `python-plugin:uv-project-management` |\n\n## Full Stack at a Glance\n\nThe one thing this index owns: the tools running **together** in pre-commit.\nFor each tool's flags and config, follow the routing table above.\n\n```yaml\n# .pre-commit-config.yaml — ruff (lint + format) and ty together\nrepos:\n  - repo: https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fruff-pre-commit\n    rev: v0.14.0\n    hooks:\n      - id: ruff-check\n        args: [--fix]\n      - id: ruff-format\n  - repo: https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fty\n    rev: 0.0.98\n    hooks:\n      - id: ty\n```\n\nA typical CI quality gate runs the same three steps: `ruff check`,\n`ruff format --check`, `ty check`. See `ruff-linting` § CI\u002FCD Integration and\n`ty-type-checking` for the runnable forms.\n\n## References\n\n- Ruff: \u003Chttps:\u002F\u002Fdocs.astral.sh\u002Fruff\u002F>\n- ty: \u003Chttps:\u002F\u002Fdocs.astral.sh\u002Fty\u002F>\n",{"name":5,"created":50,"modified":51,"reviewed":51,"description":7,"allowed-tools":52,"user-invocable":46},1765843200000,1780012800000,"Bash, Read, Grep, Glob","main","4ce428979f89281ce915e0c022270791a6fa5b08","python-plugin\u002Fskills\u002Fpython-code-quality",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-12 03:43:32",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add laurigates\u002Fclaude-plugins --skill python-code-quality",{"tool":67,"command":68},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill python-code-quality",{"tool":70,"command":71},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill python-code-quality","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fpython-plugin\u002Fskills\u002Fpython-code-quality\u002FSKILL.md",true,[],[76,102,122,138,161,187],{"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,42,35,41,98,99,33,100,101,30,44],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","xdg","via",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"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,109,110,111,36,112,35,41,113,114,115,30,44,116,117,118,119,120,121,42],"kitty session persistence","session","persistence","snapshots","uname","reboot","terminal","write","edit","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,42,35,137,41,99,33,115,30,44],"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,146,147,148,149,150,151,152,153,154,42,35,41,155,98,156,157,158,159,160],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":165,"categories":166,"keywords":172,"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",[167,170,171],{"categoryNo":168,"categoryName":169,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[173,174,175,176,151,177,44,178,117,179,180,181,42,41,98,182,183,35,184,185,186,101,30],"youtube upload","upload","youtube","Video","run","uv run","publishing","data","uv","api","v3","tags","id","title",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":196,"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",[193],{"categoryNo":194,"categoryName":195,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000023","Skill与智能体开发",[197,198,199,200,175,176,201,202,203,204,205,44,206,207,208,209,42,210,35,33,211,30],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]