[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6P0SC333B7T7SF36RJR3N5R":3,"skill-same:01M6P0SC333B7T7SF36RJR3N5R":65},{"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":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6P0SC333B7T7SF36RJR3N5R","python-best-practices",null,"Provides Python patterns for type-first development with dataclasses, discriminated unions, NewType, and Protocol. Must use when reading or writing Python files.","arnabdeypolimi\u002Fclaude_code_setup","arnabdeypolimi","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F32412133?v=4","01M6P0328AJ1TQ5N763ZSGNRF9","Arnab Dey","01M6P032C9PY7NRT2C9SNRFJ5G",5,"MIT","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Fassets\u002Fskills\u002Fpython-best-practices\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"python","best practices","python best practices","for","writing","reading","with","dataclasses","type","writing python","patterns","files","newtype","use","first","python patterns","protocol","development","2026-11-10 10:12:30",false,"---\nname: python-best-practices\ndescription: Provides Python patterns for type-first development with dataclasses, discriminated unions, NewType, and Protocol. Must use when reading or writing Python files.\n---\n\n# Python Best Practices\n\n## Type-First Development\n\nTypes define the contract before implementation. Follow this workflow:\n\n1. **Define data models** - dataclasses, Pydantic models, or TypedDict first\n2. **Define function signatures** - parameter and return type hints\n3. **Implement to satisfy types** - let the type checker guide completeness\n4. **Validate at boundaries** - runtime checks where data enters the system\n\n### Make Illegal States Unrepresentable\n\nUse Python's type system to prevent invalid states at type-check time.\n\n**Dataclasses for structured data:**\n```python\nfrom dataclasses import dataclass\nfrom datetime import datetime\n\n@dataclass(frozen=True)\nclass User:\n    id: str\n    email: str\n    name: str\n    created_at: datetime\n\n@dataclass(frozen=True)\nclass CreateUser:\n    email: str\n    name: str\n\n# Frozen dataclasses are immutable - no accidental mutation\n```\n\n**Discriminated unions with Literal:**\n```python\nfrom dataclasses import dataclass\nfrom typing import Literal\n\n@dataclass\nclass Idle:\n    status: Literal[\"idle\"] = \"idle\"\n\n@dataclass\nclass Loading:\n    status: Literal[\"loading\"] = \"loading\"\n\n@dataclass\nclass Success:\n    status: Literal[\"success\"] = \"success\"\n    data: str\n\n@dataclass\nclass Failure:\n    status: Literal[\"error\"] = \"error\"\n    error: Exception\n\nRequestState = Idle | Loading | Success | Failure\n\ndef handle_state(state: RequestState) -> None:\n    match state:\n        case Idle():\n            pass\n        case Loading():\n            show_spinner()\n        case Success(data=data):\n            render(data)\n        case Failure(error=err):\n            show_error(err)\n```\n\n**NewType for domain primitives:**\n```python\nfrom typing import NewType\n\nUserId = NewType(\"UserId\", str)\nOrderId = NewType(\"OrderId\", str)\n\ndef get_user(user_id: UserId) -> User:\n    # Type checker prevents passing OrderId here\n    ...\n\ndef create_user_id(raw: str) -> UserId:\n    return UserId(raw)\n```\n\n**Enums for constrained values:**\n```python\nfrom enum import Enum, auto\n\nclass Role(Enum):\n    ADMIN = auto()\n    USER = auto()\n    GUEST = auto()\n\ndef check_permission(role: Role) -> bool:\n    match role:\n        case Role.ADMIN:\n            return True\n        case Role.USER:\n            return limited_check()\n        case Role.GUEST:\n            return False\n    # Type checker warns if case is missing\n```\n\n**Protocol for structural typing:**\n```python\nfrom typing import Protocol\n\nclass Readable(Protocol):\n    def read(self, n: int = -1) -> bytes: ...\n\ndef process_input(source: Readable) -> bytes:\n    # Accepts any object with a read() method\n    return source.read()\n```\n\n**TypedDict for external data shapes:**\n```python\nfrom typing import TypedDict, Required, NotRequired\n\nclass UserResponse(TypedDict):\n    id: Required[str]\n    email: Required[str]\n    name: Required[str]\n    avatar_url: NotRequired[str]\n\ndef parse_user(data: dict) -> UserResponse:\n    # Runtime validation needed - TypedDict is structural\n    return UserResponse(\n        id=data[\"id\"],\n        email=data[\"email\"],\n        name=data[\"name\"],\n    )\n```\n\n## Module Structure\n\nPrefer smaller, focused files: one class or closely related set of functions per module. Split when a file handles multiple concerns or exceeds ~300 lines. Use `__init__.py` to expose public API; keep implementation details in private modules (`_internal.py`). Colocate tests in `tests\u002F` mirroring the source structure.\n\n## Functional Patterns\n\n- Use list\u002Fdict\u002Fset comprehensions and generator expressions over explicit loops.\n- Prefer `@dataclass(frozen=True)` for immutable data; avoid mutable default arguments.\n- Use `functools.partial` for partial application; compose small functions over large classes.\n- Avoid class-level mutable state; prefer pure functions that take inputs and return outputs.\n\n## Instructions\n\n- Raise descriptive exceptions for unsupported cases; every code path returns a value or raises. This makes failures debuggable and prevents silent corruption.\n- Propagate exceptions with context using `from err`; catching requires re-raising or returning a meaningful result. Swallowed exceptions hide root causes.\n- Handle edge cases explicitly: empty inputs, `None`, boundary values. Include `else` clauses in conditionals where appropriate.\n- Use context managers for I\u002FO; prefer `pathlib` and explicit encodings. Resource leaks cause production issues.\n- Add or adjust unit tests when touching logic; prefer minimal repros that isolate the failure.\n\n## Examples\n\nExplicit failure for unimplemented logic:\n```python\ndef build_widget(widget_type: str) -> Widget:\n    raise NotImplementedError(f\"build_widget not implemented for type: {widget_type}\")\n```\n\nPropagate with context to preserve the original traceback:\n```python\ntry:\n    data = json.loads(raw)\nexcept json.JSONDecodeError as err:\n    raise ValueError(f\"invalid JSON payload: {err}\") from err\n```\n\nExhaustive match with explicit default:\n```python\ndef process_status(status: str) -> str:\n    match status:\n        case \"active\":\n            return \"processing\"\n        case \"inactive\":\n            return \"skipped\"\n        case _:\n            raise ValueError(f\"unhandled status: {status}\")\n```\n\nDebug-level tracing with namespaced logger:\n```python\nimport logging\n\nlogger = logging.getLogger(\"myapp.widgets\")\n\ndef create_widget(name: str) -> Widget:\n    logger.debug(\"creating widget: %s\", name)\n    widget = Widget(name=name)\n    logger.debug(\"created widget id=%s\", widget.id)\n    return widget\n```\n\n## Configuration\n\n- Load config from environment variables at startup; validate required values before use. Missing config should fail immediately.\n- Define a config dataclass or Pydantic model as single source of truth; avoid `os.getenv` scattered throughout code.\n- Use sensible defaults for development; require explicit values for production secrets.\n\n### Examples\n\nTyped config with dataclass:\n```python\nimport os\nfrom dataclasses import dataclass\n\n@dataclass(frozen=True)\nclass Config:\n    port: int = 3000\n    database_url: str = \"\"\n    api_key: str = \"\"\n    env: str = \"development\"\n\n    @classmethod\n    def from_env(cls) -> \"Config\":\n        database_url = os.environ.get(\"DATABASE_URL\", \"\")\n        if not database_url:\n            raise ValueError(\"DATABASE_URL is required\")\n        return cls(\n            port=int(os.environ.get(\"PORT\", \"3000\")),\n            database_url=database_url,\n            api_key=os.environ[\"API_KEY\"],  # required, will raise if missing\n            env=os.environ.get(\"ENV\", \"development\"),\n        )\n\nconfig = Config.from_env()\n```\n\n## Optional: ty\n\nFor fast type checking, consider [ty](https:\u002F\u002Fdocs.astral.sh\u002Fty\u002F) from Astral (creators of ruff and uv). Written in Rust, it's significantly faster than mypy or pyright.\n\n**Installation and usage:**\n```bash\n# Run directly with uvx (no install needed)\nuvx ty check\n\n# Check specific files\nuvx ty check src\u002Fmain.py\n\n# Install permanently\nuv tool install ty\n```\n\n**Key features:**\n- Automatic virtual environment detection (via `VIRTUAL_ENV` or `.venv`)\n- Project discovery from `pyproject.toml`\n- Fast incremental checking\n- Compatible with standard Python type hints\n\n**Configuration in `pyproject.toml`:**\n```toml\n[tool.ty]\npython-version = \"3.12\"\n```\n\n**When to use ty vs alternatives:**\n- `ty` - fastest, good for CI and large codebases (early stage, rapidly evolving)\n- `pyright` - most complete type inference, VS Code integration\n- `mypy` - mature, extensive plugin ecosystem\n","# Python Best Practices\n\n## Type-First Development\n\nTypes define the contract before implementation. Follow this workflow:\n\n1. **Define data models** - dataclasses, Pydantic models, or TypedDict first\n2. **Define function signatures** - parameter and return type hints\n3. **Implement to satisfy types** - let the type checker guide completeness\n4. **Validate at boundaries** - runtime checks where data enters the system\n\n### Make Illegal States Unrepresentable\n\nUse Python's type system to prevent invalid states at type-check time.\n\n**Dataclasses for structured data:**\n```python\nfrom dataclasses import dataclass\nfrom datetime import datetime\n\n@dataclass(frozen=True)\nclass User:\n    id: str\n    email: str\n    name: str\n    created_at: datetime\n\n@dataclass(frozen=True)\nclass CreateUser:\n    email: str\n    name: str\n\n# Frozen dataclasses are immutable - no accidental mutation\n```\n\n**Discriminated unions with Literal:**\n```python\nfrom dataclasses import dataclass\nfrom typing import Literal\n\n@dataclass\nclass Idle:\n    status: Literal[\"idle\"] = \"idle\"\n\n@dataclass\nclass Loading:\n    status: Literal[\"loading\"] = \"loading\"\n\n@dataclass\nclass Success:\n    status: Literal[\"success\"] = \"success\"\n    data: str\n\n@dataclass\nclass Failure:\n    status: Literal[\"error\"] = \"error\"\n    error: Exception\n\nRequestState = Idle | Loading | Success | Failure\n\ndef handle_state(state: RequestState) -> None:\n    match state:\n        case Idle():\n            pass\n        case Loading():\n            show_spinner()\n        case Success(data=data):\n            render(data)\n        case Failure(error=err):\n            show_error(err)\n```\n\n**NewType for domain primitives:**\n```python\nfrom typing import NewType\n\nUserId = NewType(\"UserId\", str)\nOrderId = NewType(\"OrderId\", str)\n\ndef get_user(user_id: UserId) -> User:\n    # Type checker prevents passing OrderId here\n    ...\n\ndef create_user_id(raw: str) -> UserId:\n    return UserId(raw)\n```\n\n**Enums for constrained values:**\n```python\nfrom enum import Enum, auto\n\nclass Role(Enum):\n    ADMIN = auto()\n    USER = auto()\n    GUEST = auto()\n\ndef check_permission(role: Role) -> bool:\n    match role:\n        case Role.ADMIN:\n            return True\n        case Role.USER:\n            return limited_check()\n        case Role.GUEST:\n            return False\n    # Type checker warns if case is missing\n```\n\n**Protocol for structural typing:**\n```python\nfrom typing import Protocol\n\nclass Readable(Protocol):\n    def read(self, n: int = -1) -> bytes: ...\n\ndef process_input(source: Readable) -> bytes:\n    # Accepts any object with a read() method\n    return source.read()\n```\n\n**TypedDict for external data shapes:**\n```python\nfrom typing import TypedDict, Required, NotRequired\n\nclass UserResponse(TypedDict):\n    id: Required[str]\n    email: Required[str]\n    name: Required[str]\n    avatar_url: NotRequired[str]\n\ndef parse_user(data: dict) -> UserResponse:\n    # Runtime validation needed - TypedDict is structural\n    return UserResponse(\n        id=data[\"id\"],\n        email=data[\"email\"],\n        name=data[\"name\"],\n    )\n```\n\n## Module Structure\n\nPrefer smaller, focused files: one class or closely related set of functions per module. Split when a file handles multiple concerns or exceeds ~300 lines. Use `__init__.py` to expose public API; keep implementation details in private modules (`_internal.py`). Colocate tests in `tests\u002F` mirroring the source structure.\n\n## Functional Patterns\n\n- Use list\u002Fdict\u002Fset comprehensions and generator expressions over explicit loops.\n- Prefer `@dataclass(frozen=True)` for immutable data; avoid mutable default arguments.\n- Use `functools.partial` for partial application; compose small functions over large classes.\n- Avoid class-level mutable state; prefer pure functions that take inputs and return outputs.\n\n## Instructions\n\n- Raise descriptive exceptions for unsupported cases; every code path returns a value or raises. This makes failures debuggable and prevents silent corruption.\n- Propagate exceptions with context using `from err`; catching requires re-raising or returning a meaningful result. Swallowed exceptions hide root causes.\n- Handle edge cases explicitly: empty inputs, `None`, boundary values. Include `else` clauses in conditionals where appropriate.\n- Use context managers for I\u002FO; prefer `pathlib` and explicit encodings. Resource leaks cause production issues.\n- Add or adjust unit tests when touching logic; prefer minimal repros that isolate the failure.\n\n## Examples\n\nExplicit failure for unimplemented logic:\n```python\ndef build_widget(widget_type: str) -> Widget:\n    raise NotImplementedError(f\"build_widget not implemented for type: {widget_type}\")\n```\n\nPropagate with context to preserve the original traceback:\n```python\ntry:\n    data = json.loads(raw)\nexcept json.JSONDecodeError as err:\n    raise ValueError(f\"invalid JSON payload: {err}\") from err\n```\n\nExhaustive match with explicit default:\n```python\ndef process_status(status: str) -> str:\n    match status:\n        case \"active\":\n            return \"processing\"\n        case \"inactive\":\n            return \"skipped\"\n        case _:\n            raise ValueError(f\"unhandled status: {status}\")\n```\n\nDebug-level tracing with namespaced logger:\n```python\nimport logging\n\nlogger = logging.getLogger(\"myapp.widgets\")\n\ndef create_widget(name: str) -> Widget:\n    logger.debug(\"creating widget: %s\", name)\n    widget = Widget(name=name)\n    logger.debug(\"created widget id=%s\", widget.id)\n    return widget\n```\n\n## Configuration\n\n- Load config from environment variables at startup; validate required values before use. Missing config should fail immediately.\n- Define a config dataclass or Pydantic model as single source of truth; avoid `os.getenv` scattered throughout code.\n- Use sensible defaults for development; require explicit values for production secrets.\n\n### Examples\n\nTyped config with dataclass:\n```python\nimport os\nfrom dataclasses import dataclass\n\n@dataclass(frozen=True)\nclass Config:\n    port: int = 3000\n    database_url: str = \"\"\n    api_key: str = \"\"\n    env: str = \"development\"\n\n    @classmethod\n    def from_env(cls) -> \"Config\":\n        database_url = os.environ.get(\"DATABASE_URL\", \"\")\n        if not database_url:\n            raise ValueError(\"DATABASE_URL is required\")\n        return cls(\n            port=int(os.environ.get(\"PORT\", \"3000\")),\n            database_url=database_url,\n            api_key=os.environ[\"API_KEY\"],  # required, will raise if missing\n            env=os.environ.get(\"ENV\", \"development\"),\n        )\n\nconfig = Config.from_env()\n```\n\n## Optional: ty\n\nFor fast type checking, consider [ty](https:\u002F\u002Fdocs.astral.sh\u002Fty\u002F) from Astral (creators of ruff and uv). Written in Rust, it's significantly faster than mypy or pyright.\n\n**Installation and usage:**\n```bash\n# Run directly with uvx (no install needed)\nuvx ty check\n\n# Check specific files\nuvx ty check src\u002Fmain.py\n\n# Install permanently\nuv tool install ty\n```\n\n**Key features:**\n- Automatic virtual environment detection (via `VIRTUAL_ENV` or `.venv`)\n- Project discovery from `pyproject.toml`\n- Fast incremental checking\n- Compatible with standard Python type hints\n\n**Configuration in `pyproject.toml`:**\n```toml\n[tool.ty]\npython-version = \"3.12\"\n```\n\n**When to use ty vs alternatives:**\n- `ty` - fastest, good for CI and large codebases (early stage, rapidly evolving)\n- `pyright` - most complete type inference, VS Code integration\n- `mypy` - mature, extensive plugin ecosystem\n",{"name":5,"description":7},"main","afc7b6d68a4179af3aed48adbb19456133f8ae06","create-claude-setup\u002Fassets\u002Fskills\u002Fpython-best-practices",0,"https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi","arnabdey.co","Senior research engineer with a PhD in Deep Learning and Computer Vision ","2026-09-17 03:30:40",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add arnabdeypolimi\u002Fclaude_code_setup --skill python-best-practices",{"tool":57,"command":58},"bunx","bunx skills add arnabdeypolimi\u002Fclaude_code_setup --skill python-best-practices",{"tool":60,"command":61},"pnpm","pnpm dlx skills add arnabdeypolimi\u002Fclaude_code_setup --skill python-best-practices","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Fassets\u002Fskills\u002Fpython-best-practices\u002FSKILL.md",true,[],[66,75,80,112,128,160],{"skillNo":67,"name":68,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":69,"categories":70,"keywords":71,"publishedAt":37},"01M6P0W3RVYQJEJQN9NB4H99T1","git-operations","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Ftest\u002Ffixtures\u002Fhealthy\u002F.claude\u002Fskills\u002Fgit-operations\u002FSKILL.md",[],[72,73,74],"git operations","operations","git",{"skillNo":76,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":37},"01M6P0W1AG7EQXZQSCBQJ9RD60","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Ftest\u002Ffixtures\u002Fdrifted\u002F.claude\u002Fskills\u002Fpython-best-practices\u002FSKILL.md",[],[21,20,19],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":94,"publishedAt":37},"01M6P0VRDYNE55YYX06G81MJJH","typst-paper","Typst academic paper assistant for existing `.typ` paper projects in English or Chinese. Use this skill whenever the user wants to compile, audit, or improve a Typst paper, including format checks, bibliography validation for BibTeX or Hayagriva, grammar\u002Fsentence\u002Flogic review, expression polishing, translation, title optimization, pseudocode review, algorithm block cleanup, de-AI editing, or experiment-section review. Trigger even when the user only mentions one Typst file, one bibliography issue, one pseudocode block, or one section rewrite. Also trigger when the user mentions \".typ files\", \"typst compile error\", \"typst export\", \"typst bibliography\", `algorithm-figure`, `lovelace`, or `algorithmic` even without saying the word \"Typst\" explicitly.","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Fassets\u002Fskills\u002Ftypst-paper\u002FSKILL.md",[86,91],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":92,"categoryName":93,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000021","资料检索与研究",[95,96,97,98,23,99,100,101,102,103,104,105,106,30,107,108,42,109,110,111],"paper","typst","typst paper","title","review","cleanup","Bash","improve","projects","only","pseudocode","uv","translation","chinese","english","expression","error",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":37},"01M6P0V8N502GK89FSX4PB3DFB","typeset","Improves typography by fixing font choices, hierarchy, sizing, weight, and readability so text feels intentional. Use when the user mentions fonts, type, readability, text hierarchy, sizing looks off, or wants more polished, intentional typography.","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Fassets\u002Fskills\u002Ftypeset\u002FSKILL.md",[],[114,119,120,121,122,123,124,27,125,126,32,127],"fonts","more","user","true","font","hierarchy","readability","text","typography",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":145,"publishedAt":37},"01M6P0V3G89JYZ71PA2FVPGM4F","teach-impeccable","One-time setup that gathers design context for your project and saves it to your AI config file. Run once to establish persistent design guidelines.","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Fassets\u002Fskills\u002Fteach-impeccable\u002FSKILL.md",[134,137,142],{"categoryNo":135,"categoryName":136,"taxonomyType":89,"taxonomyTypeDesc":90},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":138,"categoryName":139,"taxonomyType":140,"taxonomyTypeDesc":141},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",{"categoryNo":143,"categoryName":144,"taxonomyType":140,"taxonomyTypeDesc":141},"01JBSEEDCAT000000000000039","教师与教育",[146,147,148,149,150,151,152,153,154,155,156,157,158,159,122,22],"teach impeccable","impeccable","teach","design","config","setup","guidelines","run","file","context","ai config","time","project","it",{"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":171,"publishedAt":37},"01M6P0TEK3SF2V4Y52RVP86JM2","research-paper-writing","Improve academic paper writing quality for ML\u002FCV\u002FNLP-style papers with clear section structure, paragraph flow, and reviewer-facing presentation. Use when drafting or revising Abstract, Introduction, Related Work, Method, Experiments, or Conclusion; polishing figures\u002Ftables; checking claim-support alignment; or performing self-review before submission.","https:\u002F\u002Fgithub.com\u002Farnabdeypolimi\u002Fclaude_code_setup\u002Fblob\u002Fmain\u002Fcreate-claude-setup\u002Fassets\u002Fskills\u002Fresearch-paper-writing\u002FSKILL.md",[166,167,168],{"categoryNo":87,"categoryName":88,"taxonomyType":89,"taxonomyTypeDesc":90},{"categoryNo":92,"categoryName":93,"taxonomyType":89,"taxonomyTypeDesc":90},{"categoryNo":169,"categoryName":170,"taxonomyType":140,"taxonomyTypeDesc":141},"01JBSEEDCAT000000000000036","内容创作者",[23,95,172,173,174,99,175,176,177,102,178,179,180,181,182,183,184,185,186,187],"research paper writing","research","Paper Writing","support","experiments","flow","reviewer","work","alignment","claim","structure","self","presentation","figures","papers","tables"]