[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6JDAQ0KJ6H99RV5ZCPVVY":3,"skill-same:01M6C6JDAQ0KJ6H99RV5ZCPVVY":63},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6C6JDAQ0KJ6H99RV5ZCPVVY","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.","julianromli\u002Fopencode-template","julianromli","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F203207881?v=4","01M6C6GJEG5K9YR2STFXT11YMS","faizntfd","01M6C6GJJZJN5SSD8ZWRSPN63A",146,"MIT","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fpython-development\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"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":38,"license":15,"description":7},"wshobson\u002Fagents","main","37ceab2d64a33708c9b54c3a002007082a49c3b6","skill\u002Fpython-development",21,"https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template","https:\u002F\u002Fthreads.com\u002F@faizntfd","https:\u002F\u002Fgithub.com\u002Fjulianromli","faizintifada.my.id","make it minimalist.","2026-02-03 09:49:24",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add julianromli\u002Fopencode-template --skill python-development",{"tool":55,"command":56},"bunx","bunx skills add julianromli\u002Fopencode-template --skill python-development",{"tool":58,"command":59},"pnpm","pnpm dlx skills add julianromli\u002Fopencode-template --skill python-development","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fpython-development\u002FSKILL.md",true,[],[64,85,106,136,159,174],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":75,"publishedAt":33},"01M6C6J3ABG2Q5CGHE54EVB27X","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\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fllm-application-dev\u002FSKILL.md",[70],{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[76,77,78,79,80,81,30,82,83,22,84],"llm application dev","dev","integration","engineering","applications","prompt","large language models","rag","prompt engineering",{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":94,"publishedAt":33},"01M6C6J061CNDD3H5SV7RJR92W","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\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fjavascript-typescript\u002FSKILL.md",[91],{"categoryNo":92,"categoryName":93,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000009","前端开发",[95,96,97,98,99,100,21,101,26,102,103,30,104,105],"typescript","javascript","javascript typescript","frontend","web","react","js","stack","node","backend","web frameworks",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":123,"publishedAt":33},"01M6C6HAD8YQQ1F8QG04VKXFQ5","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\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fdatabase-design\u002FSKILL.md",[112,115,118],{"categoryNo":113,"categoryName":114,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":116,"categoryName":117,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[124,125,126,127,128,129,130,30,131,132,133,134,135],"database design","database","design","migration","schema design","databases","schema","nosql","Optimization","writing","mysql","postgresql",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":140,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":149,"publishedAt":33},"01M6C6H7TSM5J3BE0AKXY2DMT7","code-review","Automated code review for pull requests using specialized review patterns. Analyzes code for quality, security, performance, and best practices. Use when reviewing code changes, PRs, or doing code audits.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fcode-review\u002FSKILL.md",[143,146],{"categoryNo":144,"categoryName":145,"taxonomyType":73,"taxonomyTypeDesc":74},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":147,"categoryName":148,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000030","开发工程师",[150,151,152,30,153,154,155,23,156,157,158],"code","review","code review","security","performance","pull requests","pull","quality","specialized",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":166,"publishedAt":33},"01M6C6H5B43Y3S2BHKQ828G6W4","code-refactoring","Code refactoring patterns and techniques for improving code quality without changing behavior. Use for cleaning up legacy code, reducing complexity, or improving maintainability.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fcode-refactoring\u002FSKILL.md",[165],{"categoryNo":147,"categoryName":148,"taxonomyType":121,"taxonomyTypeDesc":122},[167,168,150,157,169,170,30,171,172,173],"code refactoring","refactoring","code quality","behavior","up","complexity","Legacy",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":140,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":183,"publishedAt":33},"01M6C6GVSM08MQKJR0PNC5E17N","backend-dev","Comprehensive backend development workflow that orchestrates expert analysis, architecture design, implementation, and deployment using the integrated toolset. Handles everything from API design and database architecture to security implementation and DevOps automation.","https:\u002F\u002Fgithub.com\u002Fjulianromli\u002Fopencode-template\u002Fblob\u002Fmain\u002Fskill\u002Fbackend-dev\u002FSKILL.md",[180,181,182],{"categoryNo":113,"categoryName":114,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":116,"categoryName":117,"taxonomyType":73,"taxonomyTypeDesc":74},{"categoryNo":71,"categoryName":72,"taxonomyType":73,"taxonomyTypeDesc":74},[184,104,77,125,185,186,187,188,189,190,21,191,192,193,22,194,153,126],"backend dev","implementation","development workflow","backend development","devops","api","analysis","deployment","api design","architecture","workflow"]