[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6ASKWWGBAHHCMYWV2KBAZ":3,"skill-same:01M6C6ASKWWGBAHHCMYWV2KBAZ":86},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":50,"commitSha":51,"skillDirectory":52,"forksCount":53,"repositoryHtmlUrl":54,"repositoryHomepageUrl":6,"ownerHtmlUrl":55,"ownerBlogUrl":6,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6C6ASKWWGBAHHCMYWV2KBAZ","python-packaging",null,"Build and publish Python packages with uv. Use when the user mentions building packages, publishing to PyPI, wheel\u002Fsdist creation, or entry points.","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-packaging\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"packaging","python","python packaging","uv","2026","when","entry","wheel","with","2025","false","creation","build","publishing","use","user","read","grep","Bash","publish","pypi","packages","2026-11-10 10:12:30",false,"---\ncreated: 2025-12-16\nmodified: 2026-05-09\nreviewed: 2026-04-25\nname: python-packaging\ndescription: Build and publish Python packages with uv. Use when the user mentions building packages, publishing to PyPI, wheel\u002Fsdist creation, or entry points.\nuser-invocable: false\nallowed-tools: Bash, Read, Grep, Glob\n---\n\n# Python Packaging\n\nQuick reference for building and publishing Python packages with UV and modern build tools.\n\n## When to Use This Skill\n\n| Use this skill when... | Use uv-project-management instead when... |\n|---|---|\n| Building a wheel\u002Fsdist with `uv build` for PyPI distribution | Setting up a new project's pyproject.toml or adding runtime dependencies |\n| Publishing a release to PyPI or a private index with `uv publish` | Managing the lockfile or syncing the local virtual environment |\n| Configuring entry points, console scripts, or package metadata for distribution | Resolving dependency conflicts or pinning versions for development |\n\n## When This Skill Applies\n\n- Building Python packages (wheels, sdists)\n- Publishing to PyPI or private indexes\n- Package versioning\n- Build system configuration\n- Editable installations\n\n## Quick Reference\n\n### Building Packages\n\n```bash\n# Build package\nuv build\n\n# Build specific formats\nuv build --wheel\nuv build --sdist\n\n# Output location: dist\u002F\n```\n\n### Publishing\n\n```bash\n# Publish to PyPI\nuv publish\n\n# With token\nuv publish --token $PYPI_TOKEN\n\n# To Test PyPI\nuv publish --publish-url https:\u002F\u002Ftest.pypi.org\u002Flegacy\u002F\n```\n\n### Package Structure\n\n```\nmy-package\u002F\n├── pyproject.toml\n├── README.md\n├── LICENSE\n├── src\u002F\n│   └── my_package\u002F\n│       ├── __init__.py\n│       ├── __version__.py\n│       └── main.py\n└── tests\u002F\n```\n\n## pyproject.toml Configuration\n\n```toml\n[project]\nname = \"my-package\"\nversion = \"0.1.0\"\ndescription = \"A great package\"\nreadme = \"README.md\"\nrequires-python = \">=3.11\"\nlicense = {text = \"MIT\"}\nauthors = [\n    {name = \"Your Name\", email = \"you@example.com\"}\n]\nkeywords = [\"python\", \"package\"]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.11\",\n]\n\ndependencies = [\n    \"requests>=2.31.0\",\n]\n\n[project.optional-dependencies]\ndev = [\"pytest\", \"ruff\", \"ty\"]\n\n[project.urls]\nHomepage = \"https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-package\"\nDocumentation = \"https:\u002F\u002Fmy-package.readthedocs.io\"\nRepository = \"https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-package.git\"\nIssues = \"https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-package\u002Fissues\"\n\n[project.scripts]\nmy-cli = \"my_package.cli:main\"\n\n[build-system]\nrequires = [\"uv_build>=0.9.2,\u003C0.10.0\"]\nbuild-backend = \"uv_build\"\n```\n\n## Versioning\n\n```toml\n[project]\nversion = \"0.1.0\"  # Manual versioning\n\n# Dynamic versioning (from git tags)\ndynamic = [\"version\"]\n\n[tool.uv]\nversion-provider = \"git\"\n```\n\n## Entry Points\n\n```toml\n[project.scripts]\nmy-cli = \"my_package.cli:main\"\n\n[project.gui-scripts]\nmy-gui = \"my_package.gui:main\"\n\n[project.entry-points.\"my_plugin\"]\nplugin1 = \"my_package.plugins:plugin1\"\n```\n\n## Build Backends\n\n### UV Build (default)\n\n```toml\n[build-system]\nrequires = [\"uv_build>=0.9.2,\u003C0.10.0\"]\nbuild-backend = \"uv_build\"\n```\n\n### Setuptools\n\n```toml\n[build-system]\nrequires = [\"setuptools>=68\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n```\n\n### Hatchling\n\n```toml\n[build-system]\nrequires = [\"hatchling>=1.18\"]\nbuild-backend = \"hatchling.build\"\n```\n\n## Common Workflows\n\n### Publish to PyPI\n\n```bash\n# 1. Build\nuv build\n\n# 2. Check built packages\nls dist\u002F\n\n# 3. Publish\nuv publish --token $PYPI_TOKEN\n```\n\n### Test PyPI First\n\n```bash\n# Publish to Test PyPI\nuv publish --publish-url https:\u002F\u002Ftest.pypi.org\u002Flegacy\u002F \\\n           --token $TEST_PYPI_TOKEN\n\n# Test installation\npip install --index-url https:\u002F\u002Ftest.pypi.org\u002Fsimple\u002F my-package\n```\n\n## Package Classifiers\n\nCommon classifiers:\n\n```toml\nclassifiers = [\n    # Development Status\n    \"Development Status :: 3 - Alpha\",\n    \"Development Status :: 4 - Beta\",\n    \"Development Status :: 5 - Production\u002FStable\",\n\n    # Audience\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Science\u002FResearch\",\n\n    # License\n    \"License :: OSI Approved :: MIT License\",\n\n    # Python Versions\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n\n    # Framework\n    \"Framework :: Django\",\n    \"Framework :: FastAPI\",\n\n    # Topic\n    \"Topic :: Software Development :: Libraries\",\n    \"Topic :: Scientific\u002FEngineering\",\n]\n```\n\nFull list: https:\u002F\u002Fpypi.org\u002Fclassifiers\u002F\n\n## See Also\n\n- `uv-project-management` - Project setup and dependencies\n- `python-development` - Core Python patterns\n- `uv-workspaces` - Building workspace packages\n\n## References\n\n- UV build: https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fguides\u002Fpublish\u002F\n- PyPI: https:\u002F\u002Fpypi.org\u002F\n- Detailed guide: See REFERENCE.md\n","# Python Packaging\n\nQuick reference for building and publishing Python packages with UV and modern build tools.\n\n## When to Use This Skill\n\n| Use this skill when... | Use uv-project-management instead when... |\n|---|---|\n| Building a wheel\u002Fsdist with `uv build` for PyPI distribution | Setting up a new project's pyproject.toml or adding runtime dependencies |\n| Publishing a release to PyPI or a private index with `uv publish` | Managing the lockfile or syncing the local virtual environment |\n| Configuring entry points, console scripts, or package metadata for distribution | Resolving dependency conflicts or pinning versions for development |\n\n## When This Skill Applies\n\n- Building Python packages (wheels, sdists)\n- Publishing to PyPI or private indexes\n- Package versioning\n- Build system configuration\n- Editable installations\n\n## Quick Reference\n\n### Building Packages\n\n```bash\n# Build package\nuv build\n\n# Build specific formats\nuv build --wheel\nuv build --sdist\n\n# Output location: dist\u002F\n```\n\n### Publishing\n\n```bash\n# Publish to PyPI\nuv publish\n\n# With token\nuv publish --token $PYPI_TOKEN\n\n# To Test PyPI\nuv publish --publish-url https:\u002F\u002Ftest.pypi.org\u002Flegacy\u002F\n```\n\n### Package Structure\n\n```\nmy-package\u002F\n├── pyproject.toml\n├── README.md\n├── LICENSE\n├── src\u002F\n│   └── my_package\u002F\n│       ├── __init__.py\n│       ├── __version__.py\n│       └── main.py\n└── tests\u002F\n```\n\n## pyproject.toml Configuration\n\n```toml\n[project]\nname = \"my-package\"\nversion = \"0.1.0\"\ndescription = \"A great package\"\nreadme = \"README.md\"\nrequires-python = \">=3.11\"\nlicense = {text = \"MIT\"}\nauthors = [\n    {name = \"Your Name\", email = \"you@example.com\"}\n]\nkeywords = [\"python\", \"package\"]\nclassifiers = [\n    \"Development Status :: 4 - Beta\",\n    \"Intended Audience :: Developers\",\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.11\",\n]\n\ndependencies = [\n    \"requests>=2.31.0\",\n]\n\n[project.optional-dependencies]\ndev = [\"pytest\", \"ruff\", \"ty\"]\n\n[project.urls]\nHomepage = \"https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-package\"\nDocumentation = \"https:\u002F\u002Fmy-package.readthedocs.io\"\nRepository = \"https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-package.git\"\nIssues = \"https:\u002F\u002Fgithub.com\u002Fuser\u002Fmy-package\u002Fissues\"\n\n[project.scripts]\nmy-cli = \"my_package.cli:main\"\n\n[build-system]\nrequires = [\"uv_build>=0.9.2,\u003C0.10.0\"]\nbuild-backend = \"uv_build\"\n```\n\n## Versioning\n\n```toml\n[project]\nversion = \"0.1.0\"  # Manual versioning\n\n# Dynamic versioning (from git tags)\ndynamic = [\"version\"]\n\n[tool.uv]\nversion-provider = \"git\"\n```\n\n## Entry Points\n\n```toml\n[project.scripts]\nmy-cli = \"my_package.cli:main\"\n\n[project.gui-scripts]\nmy-gui = \"my_package.gui:main\"\n\n[project.entry-points.\"my_plugin\"]\nplugin1 = \"my_package.plugins:plugin1\"\n```\n\n## Build Backends\n\n### UV Build (default)\n\n```toml\n[build-system]\nrequires = [\"uv_build>=0.9.2,\u003C0.10.0\"]\nbuild-backend = \"uv_build\"\n```\n\n### Setuptools\n\n```toml\n[build-system]\nrequires = [\"setuptools>=68\", \"wheel\"]\nbuild-backend = \"setuptools.build_meta\"\n```\n\n### Hatchling\n\n```toml\n[build-system]\nrequires = [\"hatchling>=1.18\"]\nbuild-backend = \"hatchling.build\"\n```\n\n## Common Workflows\n\n### Publish to PyPI\n\n```bash\n# 1. Build\nuv build\n\n# 2. Check built packages\nls dist\u002F\n\n# 3. Publish\nuv publish --token $PYPI_TOKEN\n```\n\n### Test PyPI First\n\n```bash\n# Publish to Test PyPI\nuv publish --publish-url https:\u002F\u002Ftest.pypi.org\u002Flegacy\u002F \\\n           --token $TEST_PYPI_TOKEN\n\n# Test installation\npip install --index-url https:\u002F\u002Ftest.pypi.org\u002Fsimple\u002F my-package\n```\n\n## Package Classifiers\n\nCommon classifiers:\n\n```toml\nclassifiers = [\n    # Development Status\n    \"Development Status :: 3 - Alpha\",\n    \"Development Status :: 4 - Beta\",\n    \"Development Status :: 5 - Production\u002FStable\",\n\n    # Audience\n    \"Intended Audience :: Developers\",\n    \"Intended Audience :: Science\u002FResearch\",\n\n    # License\n    \"License :: OSI Approved :: MIT License\",\n\n    # Python Versions\n    \"Programming Language :: Python :: 3\",\n    \"Programming Language :: Python :: 3.11\",\n    \"Programming Language :: Python :: 3.12\",\n\n    # Framework\n    \"Framework :: Django\",\n    \"Framework :: FastAPI\",\n\n    # Topic\n    \"Topic :: Software Development :: Libraries\",\n    \"Topic :: Scientific\u002FEngineering\",\n]\n```\n\nFull list: https:\u002F\u002Fpypi.org\u002Fclassifiers\u002F\n\n## See Also\n\n- `uv-project-management` - Project setup and dependencies\n- `python-development` - Core Python patterns\n- `uv-workspaces` - Building workspace packages\n\n## References\n\n- UV build: https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fguides\u002Fpublish\u002F\n- PyPI: https:\u002F\u002Fpypi.org\u002F\n- Detailed guide: See REFERENCE.md\n",{"name":5,"created":46,"modified":47,"reviewed":48,"description":7,"allowed-tools":49,"user-invocable":42},1765843200000,1778284800000,1777075200000,"Bash, Read, Grep, Glob","main","bdd0582f1a2ba53d21061835bfd72d45f2f954f4","python-plugin\u002Fskills\u002Fpython-packaging",6,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins","https:\u002F\u002Fgithub.com\u002Flaurigates","Linux enthusiast, cloud engineer, neovim addict, electronics hobbyist.","2026-11-11 01:25:01",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add laurigates\u002Fclaude-plugins --skill python-packaging",{"tool":64,"command":65},"bunx","bunx skills add laurigates\u002Fclaude-plugins --skill python-packaging",{"tool":67,"command":68},"pnpm","pnpm dlx skills add laurigates\u002Fclaude-plugins --skill python-packaging","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fpython-plugin\u002Fskills\u002Fpython-packaging\u002FSKILL.md",true,[72,78,82],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"README.md","REFERENCE","参考文档",2419,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-technical-tutorials\u002FREADME.md",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"REFERENCE.md",2283,"https:\u002F\u002Fgithub.com\u002Flaurigates\u002Fclaude-plugins\u002Fblob\u002Fmain\u002Fpython-plugin\u002Fskills\u002Fpython-packaging\u002FREFERENCE.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fdetailed-guide.md",11189,"https:\u002F\u002Fgithub.com\u002Fboisenoise\u002Fskills-collections\u002Fblob\u002Fmain\u002Fskills\u002Fantigravity-technical-tutorials\u002Freferences\u002Fdetailed-guide.md",[87,113,133,149,172,200],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":98,"publishedAt":41},"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",[93],{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[99,100,101,102,103,104,105,106,107,108,33,24,37,109,110,27,111,112,23,35],"show","kitty show image","image","kitty","show image","ls","get","send","open","dev","file","text","xdg","via",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":41},"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",[],[102,120,121,122,29,123,24,37,124,125,126,23,35,127,128,129,130,131,132,33],"kitty session persistence","session","persistence","snapshots","uname","reboot","terminal","write","edit","snapshot","macos","sessions","restore",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":41},"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",[],[140,141,102,142,143,104,144,145,105,146,147,33,24,148,37,110,27,126,23,35],"kitty remote control","remote","control","remote control","running","never","panes","notify","query",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":153,"categories":154,"keywords":155,"publishedAt":41},"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",[],[156,157,158,159,160,161,162,163,164,165,33,24,37,166,109,167,168,169,170,171],"docs reference check","check","reference check","reference","docs","links","python3","repo","files","auto","drift","lint","wiring","chezmoi","references","cp",{"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":187,"publishedAt":41},"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",[178,181,182],{"categoryNo":179,"categoryName":180,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":94,"categoryName":95,"taxonomyType":96,"taxonomyTypeDesc":97},{"categoryNo":183,"categoryName":184,"taxonomyType":185,"taxonomyTypeDesc":186},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[188,189,190,191,162,192,35,193,128,32,194,22,33,37,109,195,196,24,197,198,199,112,23],"youtube upload","upload","youtube","Video","run","uv run","data","api","v3","tags","id","title",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":209,"publishedAt":41},"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",[206],{"categoryNo":207,"categoryName":208,"taxonomyType":96,"taxonomyTypeDesc":97},"01JBSEEDCAT000000000000023","Skill与智能体开发",[210,211,212,213,190,191,214,215,216,217,218,35,219,220,221,222,33,223,24,27,224,23],"youtube studio share","share","youtube studio","studio","browser","javascript","scripting","google workspace","workspace","tool","google","only","MCP","chrome","organization"]