[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CDY73FB6SWVF6R7PVYBNGW":3,"skill-same:01M6CDY73FB6SWVF6R7PVYBNGW":64},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":13,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":43,"install":44,"resources":57},"01M6CDY73FB6SWVF6R7PVYBNGW","python-development",null,"Modern Python development with Python 3.12+, Django, FastAPI, async patterns, and production best practices. Use for Python projects, APIs, data processing, or automation scripts.","jijingkun-commits\u002Ffastapi","jijingkun-commits","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F240866387?v=4","01M6CDWBED8HV9VJWHVGFZR01X","01M6CDWBJMJ6C3CATJADQ7MNHS",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fpython-development\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31],"python","python development","development","automation","best practices","data","Production","projects","data processing","django","fastapi","use","modern python","async","2026-11-10 10:12:30",false,"---\nname: python-development\ndescription: Modern Python development with Python 3.12+, Django, FastAPI, async patterns, and production best practices. Use for Python projects, APIs, data processing, or automation scripts.\nsource: wshobson\u002Fagents\nlicense: MIT\n---\n\n# Python Development\n\n## Project Setup\n\n### Modern Python Project Structure\n```\nmy-project\u002F\n├── src\u002F\n│   └── my_project\u002F\n│       ├── __init__.py\n│       ├── main.py\n│       └── utils.py\n├── tests\u002F\n│   ├── __init__.py\n│   └── test_main.py\n├── pyproject.toml\n├── README.md\n└── .gitignore\n```\n\n### pyproject.toml\n```toml\n[project]\nname = \"my-project\"\nversion = \"0.1.0\"\nrequires-python = \">=3.12\"\ndependencies = [\n    \"fastapi>=0.100.0\",\n    \"pydantic>=2.0\",\n]\n\n[project.optional-dependencies]\ndev = [\n    \"pytest>=7.0\",\n    \"ruff>=0.1.0\",\n    \"mypy>=1.0\",\n]\n\n[tool.ruff]\nline-length = 88\nselect = [\"E\", \"F\", \"I\", \"N\", \"W\"]\n\n[tool.mypy]\nstrict = true\n```\n\n## Type Hints\n\n```python\nfrom typing import TypeVar, Generic\nfrom collections.abc import Sequence\n\nT = TypeVar('T')\n\ndef process_items(items: Sequence[str]) -> list[str]:\n    return [item.upper() for item in items]\n\nclass Repository(Generic[T]):\n    def get(self, id: int) -> T | None: ...\n    def save(self, item: T) -> T: ...\n```\n\n## Async Patterns\n\n```python\nimport asyncio\nfrom collections.abc import AsyncIterator\n\nasync def fetch_all(urls: list[str]) -> list[dict]:\n    async with aiohttp.ClientSession() as session:\n        tasks = [fetch_one(session, url) for url in urls]\n        return await asyncio.gather(*tasks)\n\nasync def stream_data() -> AsyncIterator[bytes]:\n    async with aiofiles.open('large_file.txt', 'rb') as f:\n        async for chunk in f:\n            yield chunk\n```\n\n## FastAPI Patterns\n\n```python\nfrom fastapi import FastAPI, Depends, HTTPException\nfrom pydantic import BaseModel\n\napp = FastAPI()\n\nclass UserCreate(BaseModel):\n    email: str\n    name: str\n\nclass UserResponse(BaseModel):\n    id: int\n    email: str\n    name: str\n\n@app.post(\"\u002Fusers\", response_model=UserResponse)\nasync def create_user(\n    user: UserCreate,\n    db: Database = Depends(get_db)\n) -> UserResponse:\n    result = await db.users.create(user.model_dump())\n    return UserResponse(**result)\n```\n\n## Testing\n\n```python\nimport pytest\nfrom unittest.mock import AsyncMock, patch\n\n@pytest.fixture\ndef mock_db():\n    db = AsyncMock()\n    db.users.get.return_value = {\"id\": 1, \"name\": \"Test\"}\n    return db\n\n@pytest.mark.asyncio\nasync def test_get_user(mock_db):\n    result = await get_user(1, db=mock_db)\n    assert result[\"name\"] == \"Test\"\n    mock_db.users.get.assert_called_once_with(1)\n```\n\n## Best Practices\n\n- Use `ruff` for linting and formatting\n- Use `mypy` with strict mode\n- Prefer `pathlib.Path` over `os.path`\n- Use dataclasses or Pydantic for data structures\n- Use `asyncio` for I\u002FO-bound operations\n- Use `contextlib.asynccontextmanager` for async resources\n","# Python Development\n\n## Project Setup\n\n### Modern Python Project Structure\n```\nmy-project\u002F\n├── src\u002F\n│   └── my_project\u002F\n│       ├── __init__.py\n│       ├── main.py\n│       └── utils.py\n├── tests\u002F\n│   ├── __init__.py\n│   └── test_main.py\n├── pyproject.toml\n├── README.md\n└── .gitignore\n```\n\n### pyproject.toml\n```toml\n[project]\nname = \"my-project\"\nversion = \"0.1.0\"\nrequires-python = \">=3.12\"\ndependencies = [\n    \"fastapi>=0.100.0\",\n    \"pydantic>=2.0\",\n]\n\n[project.optional-dependencies]\ndev = [\n    \"pytest>=7.0\",\n    \"ruff>=0.1.0\",\n    \"mypy>=1.0\",\n]\n\n[tool.ruff]\nline-length = 88\nselect = [\"E\", \"F\", \"I\", \"N\", \"W\"]\n\n[tool.mypy]\nstrict = true\n```\n\n## Type Hints\n\n```python\nfrom typing import TypeVar, Generic\nfrom collections.abc import Sequence\n\nT = TypeVar('T')\n\ndef process_items(items: Sequence[str]) -> list[str]:\n    return [item.upper() for item in items]\n\nclass Repository(Generic[T]):\n    def get(self, id: int) -> T | None: ...\n    def save(self, item: T) -> T: ...\n```\n\n## Async Patterns\n\n```python\nimport asyncio\nfrom collections.abc import AsyncIterator\n\nasync def fetch_all(urls: list[str]) -> list[dict]:\n    async with aiohttp.ClientSession() as session:\n        tasks = [fetch_one(session, url) for url in urls]\n        return await asyncio.gather(*tasks)\n\nasync def stream_data() -> AsyncIterator[bytes]:\n    async with aiofiles.open('large_file.txt', 'rb') as f:\n        async for chunk in f:\n            yield chunk\n```\n\n## FastAPI Patterns\n\n```python\nfrom fastapi import FastAPI, Depends, HTTPException\nfrom pydantic import BaseModel\n\napp = FastAPI()\n\nclass UserCreate(BaseModel):\n    email: str\n    name: str\n\nclass UserResponse(BaseModel):\n    id: int\n    email: str\n    name: str\n\n@app.post(\"\u002Fusers\", response_model=UserResponse)\nasync def create_user(\n    user: UserCreate,\n    db: Database = Depends(get_db)\n) -> UserResponse:\n    result = await db.users.create(user.model_dump())\n    return UserResponse(**result)\n```\n\n## Testing\n\n```python\nimport pytest\nfrom unittest.mock import AsyncMock, patch\n\n@pytest.fixture\ndef mock_db():\n    db = AsyncMock()\n    db.users.get.return_value = {\"id\": 1, \"name\": \"Test\"}\n    return db\n\n@pytest.mark.asyncio\nasync def test_get_user(mock_db):\n    result = await get_user(1, db=mock_db)\n    assert result[\"name\"] == \"Test\"\n    mock_db.users.get.assert_called_once_with(1)\n```\n\n## Best Practices\n\n- Use `ruff` for linting and formatting\n- Use `mypy` with strict mode\n- Prefer `pathlib.Path` over `os.path`\n- Use dataclasses or Pydantic for data structures\n- Use `asyncio` for I\u002FO-bound operations\n- Use `contextlib.asynccontextmanager` for async resources\n",{"name":5,"source":37,"license":14,"description":7},"wshobson\u002Fagents","master","21d03858f4c4be97b1feaa9e948ca3c5bf3e8357",".cursor\u002Fskills\u002Fpython-development","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits","2026-03-14 11:41:49",{"source":8,"skillName":5,"commands":45,"prompt":55,"zipAvailable":56},[46,49,52],{"tool":47,"command":48},"npx","npx skills add jijingkun-commits\u002Ffastapi --skill python-development",{"tool":50,"command":51},"bunx","bunx skills add jijingkun-commits\u002Ffastapi --skill python-development",{"tool":53,"command":54},"pnpm","pnpm dlx skills add jijingkun-commits\u002Ffastapi --skill python-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fpython-development\u002FSKILL.md",true,[58],{"path":59,"resourceType":60,"resourceTypeDesc":61,"sizeBytes":62,"sourceHtmlUrl":63},".skill-meta.json","REFERENCE","参考文档",146,"https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fpython-development\u002F.skill-meta.json",[65,97,117,134,151,181],{"skillNo":66,"name":67,"nameZh":6,"description":68,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":80,"publishedAt":32},"01M6F3A92FXC8E0GZHN3HEZF9J","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fwebapp-testing\u002FSKILL.md",[72,77],{"categoryNo":73,"categoryName":74,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":78,"categoryName":79,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000009","前端开发",[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96],"webapp testing","testing","webapp","web","with","local","behavior","applications","logs","ui","browser","toolkit","debugging","playwright","screenshots","frontend",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":106,"publishedAt":32},"01M6CDY9E8HXK9RZ2MHJEP26X5","skill-creator","Guide for creating effective skills. Use when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fskill-creator\u002FSKILL.md",[103],{"categoryNo":104,"categoryName":105,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000023","Skill与智能体开发",[107,108,109,110,111,112,29,113,114,115,116],"skill creator","update","workflows","create","specialized","capabilities","guide","integrations","tool","knowledge",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":124,"publishedAt":32},"01M6CDY49757TMZDVGZN5VD14W","llm-application-dev","Building applications with Large Language Models - prompt engineering, RAG patterns, and LLM integration. Use for AI-powered features, chatbots, or LLM-based automation.","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fllm-application-dev\u002FSKILL.md",[123],{"categoryNo":104,"categoryName":105,"taxonomyType":75,"taxonomyTypeDesc":76},[125,126,127,29,128,88,129,130,131,21,132,133],"dev","llm application dev","models","prompt","engineering","integration","rag","prompt engineering","large language models",{"skillNo":135,"name":136,"nameZh":6,"description":137,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":138,"categories":139,"keywords":141,"publishedAt":32},"01M6CDY1Y5CN4XWWTZQQ2K87TK","javascript-typescript","JavaScript and TypeScript development with ES6+, Node.js, React, and modern web frameworks. Use for frontend, backend, or full-stack JavaScript\u002FTypeScript projects.","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fjavascript-typescript\u002FSKILL.md",[140],{"categoryNo":78,"categoryName":79,"taxonomyType":75,"taxonomyTypeDesc":76},[142,143,144,145,146,29,147,25,148,20,149,84,96,150],"typescript","javascript","javascript typescript","node","backend","stack","js","react","web frameworks",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":69,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":166,"publishedAt":32},"01M6CDXZ9582WWNZ2HZTNQDJ0T","frontend-design","Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML\u002FCSS layouts, or when styling\u002Fbeautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Ffrontend-design\u002FSKILL.md",[157,158,161],{"categoryNo":78,"categoryName":79,"taxonomyType":75,"taxonomyTypeDesc":76},{"categoryNo":159,"categoryName":160,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":162,"categoryName":163,"taxonomyType":164,"taxonomyTypeDesc":165},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[167,168,96,110,169,170,149,171,84,172,173,174,175,176,29,177,178,88,179,180],"frontend design","design","web components","react components","components","css","code","build","ui design","creative","landing","quality","examples","artifacts",{"skillNo":182,"name":183,"nameZh":6,"description":184,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":185,"categories":186,"keywords":192,"publishedAt":32},"01M6CDXW748RAVJ2WZ6CV5XM1D","database-design","Database schema design, optimization, and migration patterns for PostgreSQL, MySQL, and NoSQL databases. Use for designing schemas, writing migrations, or optimizing queries.","https:\u002F\u002Fgithub.com\u002Fjijingkun-commits\u002Ffastapi\u002Fblob\u002Fmaster\u002F.cursor\u002Fskills\u002Fdatabase-design\u002FSKILL.md",[187,190,191],{"categoryNo":188,"categoryName":189,"taxonomyType":75,"taxonomyTypeDesc":76},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":159,"categoryName":160,"taxonomyType":75,"taxonomyTypeDesc":76},{"categoryNo":162,"categoryName":163,"taxonomyType":164,"taxonomyTypeDesc":165},[168,193,194,195,196,197,198,199,200,29,201,202,203,204,205],"database design","database","schema design","migrations","queries","databases","migration","schema","nosql","Optimization","postgresql","mysql","writing"]