[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DSVG82AYV6VDRWPEEYNNT7":3,"skill-same:01M6DSVG82AYV6VDRWPEEYNNT7":69},{"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":27,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":55,"install":56,"resources":68},"01M6DSVG82AYV6VDRWPEEYNNT7","python",null,"Python developer — write, run, test, and debug Python projects. Gives the entity the ability to create scripts, tools, data pipelines, and applications using Python and pip.","voardwalker-code\u002FNekoCore-OS","voardwalker-code","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F253527670?v=4","01M6DSRW3VB3V3JY99ABQZM55S","01M6DSRW8P3M7580SFQX01R3M9",8,"MIT","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fpython\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[5,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"test","debug","create","run","data pipelines","developer","data","Tools","applications","projects","write","python developer","pipelines","scripts","2026-11-10 10:12:30",false,"---\nname: python\ndescription: Python developer — write, run, test, and debug Python projects. Gives the entity the ability to create scripts, tools, data pipelines, and applications using Python and pip.\nenabled: true\n---\n\n# Python Skill\n\nYou can write Python code, run it, install packages, and read output — all within the workspace. You have access to `python`, `pip`, and file tools.\n\n## What You Can Do\n\n1. **Write Python scripts** — create `.py` files with `ws_write`\n2. **Run scripts** — execute with `cmd_run`\n3. **Install packages** — use `pip install`\n4. **Run tests** — execute test files or use pytest\n5. **Create project structures** — scaffold with proper `__init__.py` files\n6. **Debug errors** — read tracebacks, fix the code, re-run\n\n## Your Tools\n\n### File tools (write code)\n```\n[TOOL:ws_mkdir path=\"my-project\u002Fsrc\"]\n[TOOL:ws_write path=\"my-project\u002Fmain.py\" content=\"print('Hello, world!')\"]\n[TOOL:ws_read path=\"my-project\u002Fmain.py\"]\n[TOOL:ws_list path=\"my-project\"]\n```\n\n### Command tools (run and install)\n```\n[TOOL:cmd_run cmd=\"python main.py\"]\n[TOOL:cmd_run cmd=\"python -m pytest\"]\n[TOOL:cmd_run cmd=\"python -m pytest tests\u002F -v\"]\n[TOOL:cmd_run cmd=\"pip install requests\"]\n[TOOL:cmd_run cmd=\"pip install -r requirements.txt\"]\n[TOOL:cmd_run cmd=\"pip list\"]\n[TOOL:cmd_run cmd=\"pip freeze\"]\n```\n\n## CRITICAL RULES — Read These First\n\n### Rule 1: Always write COMPLETE files\nNever write partial `.py` files. Write the full source code every time with `ws_write`.\n\n### Rule 2: Read before editing\nBefore modifying any existing file:\n```\n[TOOL:ws_read path=\"src\u002Fapp.py\"]\n```\nThen write the complete modified version back.\n\n### Rule 3: Use python (not python3) as default\nTry `python` first. If it fails, fall back to `python3`. On most systems `python` works.\n\n### Rule 4: Read tracebacks carefully\nPython tracebacks read bottom-to-top. The last line is the actual error. The lines above show the call stack. Fix the code at the location shown.\n\n### Rule 5: One command per cmd_run call\nEach `cmd_run` runs one command. Do NOT chain commands with `&&` or `;`.\n\n### Rule 6: Create requirements.txt for projects\nIf you use any `pip install`, also create a `requirements.txt` so the project is reproducible.\n\n## How to Build a Python Project — Step by Step\n\n### Simple script\n```\nStep 1: [TOOL:ws_write path=\"main.py\" content=\"...your code...\"]\nStep 2: [TOOL:cmd_run cmd=\"python main.py\"]\n```\n\n### Project with dependencies\n```\nStep 1: [TOOL:ws_mkdir path=\"my-project\"]\nStep 2: [TOOL:ws_write path=\"my-project\u002Frequirements.txt\" content=\"requests>=2.28\\nbeautifulsoup4>=4.12\"]\nStep 3: [TOOL:cmd_run cmd=\"pip install -r requirements.txt\"]\nStep 4: [TOOL:ws_write path=\"my-project\u002Fmain.py\" content=\"...your code...\"]\nStep 5: [TOOL:cmd_run cmd=\"python main.py\"]\n```\n\n### Package with modules\n```\nStep 1: [TOOL:ws_mkdir path=\"my-project\u002Fsrc\"]\nStep 2: [TOOL:ws_write path=\"my-project\u002Fsrc\u002F__init__.py\" content=\"\"]\nStep 3: [TOOL:ws_write path=\"my-project\u002Fsrc\u002Fcore.py\" content=\"...\"]\nStep 4: [TOOL:ws_write path=\"my-project\u002Fsrc\u002Futils.py\" content=\"...\"]\nStep 5: [TOOL:ws_write path=\"my-project\u002Fmain.py\" content=\"from src.core import ...\"]\nStep 6: [TOOL:cmd_run cmd=\"python main.py\"]\n```\n\n## Python Patterns — What Good Code Looks Like\n\n### Basic script structure\n```python\n\"\"\"Brief description of what this script does.\"\"\"\n\nimport sys\nfrom pathlib import Path\n\n\ndef main():\n    \"\"\"Entry point.\"\"\"\n    if len(sys.argv) \u003C 2:\n        print(\"Usage: python main.py \u003Cinput_file>\")\n        sys.exit(1)\n\n    input_path = Path(sys.argv[1])\n    if not input_path.exists():\n        print(f\"Error: {input_path} not found\")\n        sys.exit(1)\n\n    process(input_path)\n\n\ndef process(path):\n    \"\"\"Process the input file.\"\"\"\n    content = path.read_text(encoding=\"utf-8\")\n    print(f\"Processed {len(content)} characters\")\n\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### Classes\n```python\nclass Config:\n    \"\"\"Application configuration.\"\"\"\n\n    def __init__(self, host=\"localhost\", port=8080):\n        self.host = host\n        self.port = port\n\n    def url(self):\n        return f\"http:\u002F\u002F{self.host}:{self.port}\"\n\n    def __repr__(self):\n        return f\"Config(host={self.host!r}, port={self.port})\"\n```\n\n### Error handling\n```python\ndef read_json(path):\n    \"\"\"Read and parse a JSON file.\"\"\"\n    try:\n        with open(path, encoding=\"utf-8\") as f:\n            return json.load(f)\n    except FileNotFoundError:\n        print(f\"Error: {path} not found\")\n        return None\n    except json.JSONDecodeError as e:\n        print(f\"Error: invalid JSON in {path}: {e}\")\n        return None\n```\n\n### Working with files\n```python\nfrom pathlib import Path\n\n# Read\ncontent = Path(\"data.txt\").read_text(encoding=\"utf-8\")\n\n# Write\nPath(\"output.txt\").write_text(\"Hello\\n\", encoding=\"utf-8\")\n\n# Iterate directory\nfor f in Path(\"src\").glob(\"*.py\"):\n    print(f.name)\n\n# Create directories\nPath(\"output\u002Freports\").mkdir(parents=True, exist_ok=True)\n```\n\n### HTTP requests (with requests library)\n```python\nimport requests\n\ndef fetch_data(url):\n    response = requests.get(url, timeout=10)\n    response.raise_for_status()\n    return response.json()\n```\n\n### Data processing with collections\n```python\nfrom collections import Counter, defaultdict\n\n# Count words\nwords = text.lower().split()\ncounts = Counter(words)\ntop_10 = counts.most_common(10)\n\n# Group items\ngroups = defaultdict(list)\nfor item in items:\n    groups[item[\"category\"]].append(item)\n```\n\n### List comprehensions and generators\n```python\n# Filter and transform\nnames = [user[\"name\"] for user in users if user[\"active\"]]\n\n# Dictionary comprehension\nlookup = {item[\"id\"]: item for item in items}\n\n# Generator for large data\nlines = (line.strip() for line in open(\"big.txt\", encoding=\"utf-8\"))\n```\n\n### Context managers\n```python\n# File I\u002FO\nwith open(\"data.csv\", encoding=\"utf-8\") as f:\n    for line in f:\n        process(line)\n\n# Custom context manager\nfrom contextlib import contextmanager\n\n@contextmanager\ndef timer(label):\n    import time\n    start = time.time()\n    yield\n    print(f\"{label}: {time.time() - start:.3f}s\")\n\nwith timer(\"processing\"):\n    do_work()\n```\n\n## Common Packages by Use Case\n\n| Need | Package | Install |\n|------|---------|---------|\n| HTTP requests | `requests` | `pip install requests` |\n| HTML parsing | `beautifulsoup4` | `pip install beautifulsoup4` |\n| JSON schema | `pydantic` | `pip install pydantic` |\n| CLI arguments | `click` or `argparse` | `argparse` is built-in |\n| Data analysis | `pandas` | `pip install pandas` |\n| Math\u002Farrays | `numpy` | `pip install numpy` |\n| Plotting | `matplotlib` | `pip install matplotlib` |\n| Testing | `pytest` | `pip install pytest` |\n| Web server | `flask` or `fastapi` | `pip install flask` |\n| Async HTTP | `aiohttp` or `httpx` | `pip install httpx` |\n| Regex | `re` | Built-in |\n| Date\u002Ftime | `datetime` | Built-in |\n| Path handling | `pathlib` | Built-in |\n| JSON | `json` | Built-in |\n| CSV | `csv` | Built-in |\n| SQLite | `sqlite3` | Built-in |\n\n## Testing\n\n### Writing tests with unittest (built-in)\n```python\nimport unittest\nfrom src.core import add\n\nclass TestAdd(unittest.TestCase):\n    def test_positive(self):\n        self.assertEqual(add(2, 3), 5)\n\n    def test_negative(self):\n        self.assertEqual(add(-1, 1), 0)\n\n    def test_zero(self):\n        self.assertEqual(add(0, 0), 0)\n\nif __name__ == \"__main__\":\n    unittest.main()\n```\n\n### Writing tests with pytest\n```python\nfrom src.core import add\n\ndef test_positive():\n    assert add(2, 3) == 5\n\ndef test_negative():\n    assert add(-1, 1) == 0\n```\n\n### Running tests\n```\n[TOOL:cmd_run cmd=\"python -m pytest tests\u002F -v\"]\n[TOOL:cmd_run cmd=\"python -m unittest tests\u002Ftest_core.py\"]\n[TOOL:cmd_run cmd=\"python -m pytest tests\u002Ftest_core.py -v\"]\n```\n\n## requirements.txt Patterns\n\n### Pinned versions (production)\n```\nrequests==2.31.0\nbeautifulsoup4==4.12.2\npydantic==2.5.0\n```\n\n### Minimum versions (libraries)\n```\nrequests>=2.28\nbeautifulsoup4>=4.12\n```\n\n### With extras\n```\nfastapi[all]>=0.104\nuvicorn[standard]>=0.24\n```\n\n## Debugging Workflow\n\nWhen code fails:\n\n1. **Read the traceback bottom-to-top** — the last line is the actual error\n2. **Find the file and line number** — the traceback shows exactly where it failed\n3. **Read the source file:**\n   ```\n   [TOOL:ws_read path=\"src\u002Fapp.py\"]\n   ```\n4. **Fix the specific issue** — change only what's broken\n5. **Write the fixed file and re-run:**\n   ```\n   [TOOL:ws_write path=\"src\u002Fapp.py\" content=\"...fixed code...\"]\n   [TOOL:cmd_run cmd=\"python src\u002Fapp.py\"]\n   ```\n\n### Common error patterns\n\n| Error | Meaning | Fix |\n|-------|---------|-----|\n| `NameError` | Variable\u002Ffunction not defined | Check spelling, add import |\n| `TypeError` | Wrong type passed | Check function signature |\n| `KeyError` | Dict key missing | Use `.get()` with default |\n| `IndexError` | List index out of range | Check length before access |\n| `ImportError` | Module not found | `pip install` the package |\n| `FileNotFoundError` | File doesn't exist | Check path, create if needed |\n| `AttributeError` | Object doesn't have that method | Check type, wrong variable |\n| `IndentationError` | Wrong whitespace | Fix indentation (4 spaces) |\n\n## Project Scaffolding Patterns\n\n### Script\n```\nmy-script\u002F\n  main.py\n  requirements.txt\n```\n\n### CLI tool\n```\nmy-tool\u002F\n  main.py\n  requirements.txt          (click)\n  src\u002F\n    __init__.py\n    commands.py\n    utils.py\n```\n\n### Web API (Flask)\n```\nmy-api\u002F\n  requirements.txt          (flask)\n  app.py\n  routes\u002F\n    __init__.py\n    health.py\n    users.py\n  models\u002F\n    __init__.py\n    user.py\n```\n\n### Data pipeline\n```\nmy-pipeline\u002F\n  requirements.txt          (pandas, numpy)\n  main.py\n  src\u002F\n    __init__.py\n    extract.py\n    transform.py\n    load.py\n  data\u002F\n    input\u002F\n    output\u002F\n```\n\n## What NOT to Do\n\n- **Do NOT write code in chat** — use `ws_write` to save it as a file\n- **Do NOT write partial files** — always write the complete `.py` file\n- **Do NOT guess what's in a file** — always `ws_read` first\n- **Do NOT install packages without requirements.txt** — keep it reproducible\n- **Do NOT use `os.system()` in code** — use `subprocess.run()` instead\n- **Do NOT add features the user didn't ask for** — keep it focused\n- **Do NOT skip the `if __name__ == \"__main__\":` guard** — always include it for scripts\n- **Do NOT chain commands** — one `cmd_run` call per command\n- **Do NOT hardcode file paths** — use `pathlib.Path` and relative paths\n","# Python Skill\n\nYou can write Python code, run it, install packages, and read output — all within the workspace. You have access to `python`, `pip`, and file tools.\n\n## What You Can Do\n\n1. **Write Python scripts** — create `.py` files with `ws_write`\n2. **Run scripts** — execute with `cmd_run`\n3. **Install packages** — use `pip install`\n4. **Run tests** — execute test files or use pytest\n5. **Create project structures** — scaffold with proper `__init__.py` files\n6. **Debug errors** — read tracebacks, fix the code, re-run\n\n## Your Tools\n\n### File tools (write code)\n```\n[TOOL:ws_mkdir path=\"my-project\u002Fsrc\"]\n[TOOL:ws_write path=\"my-project\u002Fmain.py\" content=\"print('Hello, world!')\"]\n[TOOL:ws_read path=\"my-project\u002Fmain.py\"]\n[TOOL:ws_list path=\"my-project\"]\n```\n\n### Command tools (run and install)\n```\n[TOOL:cmd_run cmd=\"python main.py\"]\n[TOOL:cmd_run cmd=\"python -m pytest\"]\n[TOOL:cmd_run cmd=\"python -m pytest tests\u002F -v\"]\n[TOOL:cmd_run cmd=\"pip install requests\"]\n[TOOL:cmd_run cmd=\"pip install -r requirements.txt\"]\n[TOOL:cmd_run cmd=\"pip list\"]\n[TOOL:cmd_run cmd=\"pip freeze\"]\n```\n\n## CRITICAL RULES — Read These First\n\n### Rule 1: Always write COMPLETE files\nNever write partial `.py` files. Write the full source code every time with `ws_write`.\n\n### Rule 2: Read before editing\nBefore modifying any existing file:\n```\n[TOOL:ws_read path=\"src\u002Fapp.py\"]\n```\nThen write the complete modified version back.\n\n### Rule 3: Use python (not python3) as default\nTry `python` first. If it fails, fall back to `python3`. On most systems `python` works.\n\n### Rule 4: Read tracebacks carefully\nPython tracebacks read bottom-to-top. The last line is the actual error. The lines above show the call stack. Fix the code at the location shown.\n\n### Rule 5: One command per cmd_run call\nEach `cmd_run` runs one command. Do NOT chain commands with `&&` or `;`.\n\n### Rule 6: Create requirements.txt for projects\nIf you use any `pip install`, also create a `requirements.txt` so the project is reproducible.\n\n## How to Build a Python Project — Step by Step\n\n### Simple script\n```\nStep 1: [TOOL:ws_write path=\"main.py\" content=\"...your code...\"]\nStep 2: [TOOL:cmd_run cmd=\"python main.py\"]\n```\n\n### Project with dependencies\n```\nStep 1: [TOOL:ws_mkdir path=\"my-project\"]\nStep 2: [TOOL:ws_write path=\"my-project\u002Frequirements.txt\" content=\"requests>=2.28\\nbeautifulsoup4>=4.12\"]\nStep 3: [TOOL:cmd_run cmd=\"pip install -r requirements.txt\"]\nStep 4: [TOOL:ws_write path=\"my-project\u002Fmain.py\" content=\"...your code...\"]\nStep 5: [TOOL:cmd_run cmd=\"python main.py\"]\n```\n\n### Package with modules\n```\nStep 1: [TOOL:ws_mkdir path=\"my-project\u002Fsrc\"]\nStep 2: [TOOL:ws_write path=\"my-project\u002Fsrc\u002F__init__.py\" content=\"\"]\nStep 3: [TOOL:ws_write path=\"my-project\u002Fsrc\u002Fcore.py\" content=\"...\"]\nStep 4: [TOOL:ws_write path=\"my-project\u002Fsrc\u002Futils.py\" content=\"...\"]\nStep 5: [TOOL:ws_write path=\"my-project\u002Fmain.py\" content=\"from src.core import ...\"]\nStep 6: [TOOL:cmd_run cmd=\"python main.py\"]\n```\n\n## Python Patterns — What Good Code Looks Like\n\n### Basic script structure\n```python\n\"\"\"Brief description of what this script does.\"\"\"\n\nimport sys\nfrom pathlib import Path\n\n\ndef main():\n    \"\"\"Entry point.\"\"\"\n    if len(sys.argv) \u003C 2:\n        print(\"Usage: python main.py \u003Cinput_file>\")\n        sys.exit(1)\n\n    input_path = Path(sys.argv[1])\n    if not input_path.exists():\n        print(f\"Error: {input_path} not found\")\n        sys.exit(1)\n\n    process(input_path)\n\n\ndef process(path):\n    \"\"\"Process the input file.\"\"\"\n    content = path.read_text(encoding=\"utf-8\")\n    print(f\"Processed {len(content)} characters\")\n\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### Classes\n```python\nclass Config:\n    \"\"\"Application configuration.\"\"\"\n\n    def __init__(self, host=\"localhost\", port=8080):\n        self.host = host\n        self.port = port\n\n    def url(self):\n        return f\"http:\u002F\u002F{self.host}:{self.port}\"\n\n    def __repr__(self):\n        return f\"Config(host={self.host!r}, port={self.port})\"\n```\n\n### Error handling\n```python\ndef read_json(path):\n    \"\"\"Read and parse a JSON file.\"\"\"\n    try:\n        with open(path, encoding=\"utf-8\") as f:\n            return json.load(f)\n    except FileNotFoundError:\n        print(f\"Error: {path} not found\")\n        return None\n    except json.JSONDecodeError as e:\n        print(f\"Error: invalid JSON in {path}: {e}\")\n        return None\n```\n\n### Working with files\n```python\nfrom pathlib import Path\n\n# Read\ncontent = Path(\"data.txt\").read_text(encoding=\"utf-8\")\n\n# Write\nPath(\"output.txt\").write_text(\"Hello\\n\", encoding=\"utf-8\")\n\n# Iterate directory\nfor f in Path(\"src\").glob(\"*.py\"):\n    print(f.name)\n\n# Create directories\nPath(\"output\u002Freports\").mkdir(parents=True, exist_ok=True)\n```\n\n### HTTP requests (with requests library)\n```python\nimport requests\n\ndef fetch_data(url):\n    response = requests.get(url, timeout=10)\n    response.raise_for_status()\n    return response.json()\n```\n\n### Data processing with collections\n```python\nfrom collections import Counter, defaultdict\n\n# Count words\nwords = text.lower().split()\ncounts = Counter(words)\ntop_10 = counts.most_common(10)\n\n# Group items\ngroups = defaultdict(list)\nfor item in items:\n    groups[item[\"category\"]].append(item)\n```\n\n### List comprehensions and generators\n```python\n# Filter and transform\nnames = [user[\"name\"] for user in users if user[\"active\"]]\n\n# Dictionary comprehension\nlookup = {item[\"id\"]: item for item in items}\n\n# Generator for large data\nlines = (line.strip() for line in open(\"big.txt\", encoding=\"utf-8\"))\n```\n\n### Context managers\n```python\n# File I\u002FO\nwith open(\"data.csv\", encoding=\"utf-8\") as f:\n    for line in f:\n        process(line)\n\n# Custom context manager\nfrom contextlib import contextmanager\n\n@contextmanager\ndef timer(label):\n    import time\n    start = time.time()\n    yield\n    print(f\"{label}: {time.time() - start:.3f}s\")\n\nwith timer(\"processing\"):\n    do_work()\n```\n\n## Common Packages by Use Case\n\n| Need | Package | Install |\n|------|---------|---------|\n| HTTP requests | `requests` | `pip install requests` |\n| HTML parsing | `beautifulsoup4` | `pip install beautifulsoup4` |\n| JSON schema | `pydantic` | `pip install pydantic` |\n| CLI arguments | `click` or `argparse` | `argparse` is built-in |\n| Data analysis | `pandas` | `pip install pandas` |\n| Math\u002Farrays | `numpy` | `pip install numpy` |\n| Plotting | `matplotlib` | `pip install matplotlib` |\n| Testing | `pytest` | `pip install pytest` |\n| Web server | `flask` or `fastapi` | `pip install flask` |\n| Async HTTP | `aiohttp` or `httpx` | `pip install httpx` |\n| Regex | `re` | Built-in |\n| Date\u002Ftime | `datetime` | Built-in |\n| Path handling | `pathlib` | Built-in |\n| JSON | `json` | Built-in |\n| CSV | `csv` | Built-in |\n| SQLite | `sqlite3` | Built-in |\n\n## Testing\n\n### Writing tests with unittest (built-in)\n```python\nimport unittest\nfrom src.core import add\n\nclass TestAdd(unittest.TestCase):\n    def test_positive(self):\n        self.assertEqual(add(2, 3), 5)\n\n    def test_negative(self):\n        self.assertEqual(add(-1, 1), 0)\n\n    def test_zero(self):\n        self.assertEqual(add(0, 0), 0)\n\nif __name__ == \"__main__\":\n    unittest.main()\n```\n\n### Writing tests with pytest\n```python\nfrom src.core import add\n\ndef test_positive():\n    assert add(2, 3) == 5\n\ndef test_negative():\n    assert add(-1, 1) == 0\n```\n\n### Running tests\n```\n[TOOL:cmd_run cmd=\"python -m pytest tests\u002F -v\"]\n[TOOL:cmd_run cmd=\"python -m unittest tests\u002Ftest_core.py\"]\n[TOOL:cmd_run cmd=\"python -m pytest tests\u002Ftest_core.py -v\"]\n```\n\n## requirements.txt Patterns\n\n### Pinned versions (production)\n```\nrequests==2.31.0\nbeautifulsoup4==4.12.2\npydantic==2.5.0\n```\n\n### Minimum versions (libraries)\n```\nrequests>=2.28\nbeautifulsoup4>=4.12\n```\n\n### With extras\n```\nfastapi[all]>=0.104\nuvicorn[standard]>=0.24\n```\n\n## Debugging Workflow\n\nWhen code fails:\n\n1. **Read the traceback bottom-to-top** — the last line is the actual error\n2. **Find the file and line number** — the traceback shows exactly where it failed\n3. **Read the source file:**\n   ```\n   [TOOL:ws_read path=\"src\u002Fapp.py\"]\n   ```\n4. **Fix the specific issue** — change only what's broken\n5. **Write the fixed file and re-run:**\n   ```\n   [TOOL:ws_write path=\"src\u002Fapp.py\" content=\"...fixed code...\"]\n   [TOOL:cmd_run cmd=\"python src\u002Fapp.py\"]\n   ```\n\n### Common error patterns\n\n| Error | Meaning | Fix |\n|-------|---------|-----|\n| `NameError` | Variable\u002Ffunction not defined | Check spelling, add import |\n| `TypeError` | Wrong type passed | Check function signature |\n| `KeyError` | Dict key missing | Use `.get()` with default |\n| `IndexError` | List index out of range | Check length before access |\n| `ImportError` | Module not found | `pip install` the package |\n| `FileNotFoundError` | File doesn't exist | Check path, create if needed |\n| `AttributeError` | Object doesn't have that method | Check type, wrong variable |\n| `IndentationError` | Wrong whitespace | Fix indentation (4 spaces) |\n\n## Project Scaffolding Patterns\n\n### Script\n```\nmy-script\u002F\n  main.py\n  requirements.txt\n```\n\n### CLI tool\n```\nmy-tool\u002F\n  main.py\n  requirements.txt          (click)\n  src\u002F\n    __init__.py\n    commands.py\n    utils.py\n```\n\n### Web API (Flask)\n```\nmy-api\u002F\n  requirements.txt          (flask)\n  app.py\n  routes\u002F\n    __init__.py\n    health.py\n    users.py\n  models\u002F\n    __init__.py\n    user.py\n```\n\n### Data pipeline\n```\nmy-pipeline\u002F\n  requirements.txt          (pandas, numpy)\n  main.py\n  src\u002F\n    __init__.py\n    extract.py\n    transform.py\n    load.py\n  data\u002F\n    input\u002F\n    output\u002F\n```\n\n## What NOT to Do\n\n- **Do NOT write code in chat** — use `ws_write` to save it as a file\n- **Do NOT write partial files** — always write the complete `.py` file\n- **Do NOT guess what's in a file** — always `ws_read` first\n- **Do NOT install packages without requirements.txt** — keep it reproducible\n- **Do NOT use `os.system()` in code** — use `subprocess.run()` instead\n- **Do NOT add features the user didn't ask for** — keep it focused\n- **Do NOT skip the `if __name__ == \"__main__\":` guard** — always include it for scripts\n- **Do NOT chain commands** — one `cmd_run` call per command\n- **Do NOT hardcode file paths** — use `pathlib.Path` and relative paths\n",{"name":5,"enabled":47,"description":7},true,"main","437c11deeb521a7e0ae5845acda86fde6c0c1713","project\u002Fskills\u002Fpython",1,"https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS","https:\u002F\u002Fneko-core.com","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code","2026-03-31 19:44:56",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":47},[58,61,64],{"tool":59,"command":60},"npx","npx skills add voardwalker-code\u002FNekoCore-OS --skill python",{"tool":62,"command":63},"bunx","bunx skills add voardwalker-code\u002FNekoCore-OS --skill python",{"tool":65,"command":66},"pnpm","pnpm dlx skills add voardwalker-code\u002FNekoCore-OS --skill python","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fpython\u002FSKILL.md",[],[70,81,89,106,121,136],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":42},"01M6DSWEQ54Y3GAZAN7TMJW3D8","ws_move","Move or rename a file\u002Ffolder in the workspace","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fws_move\u002FSKILL.md",[],[77,78,79,80],"ws move","file","workspace","rename",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":42},"01M6DSWA5EX7QP108ZNS57EPM9","ws_mkdir","Create a new folder in the workspace","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fws_mkdir\u002FSKILL.md",[],[88,30,79],"ws mkdir",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":42},"01M6DSW6Y2YP8XTJ2HA3NHACJT","web-search","Browse the web, fetch pages, and extract content. Gives the entity the ability to search and read web content.","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[96,97,98,99,100,101,102,103,104,105],"web search","search","web","fetch","content","browse","read","extract","pages","read web",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":113,"publishedAt":42},"01M6DSW3W69GV66HXSHGRW2RXK","vscode","Code collaborator — read, write, and plan changes to project files directly in a VS Code workspace. Gives the entity the ability to act as a programming partner.","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fvscode\u002FSKILL.md",[112],{"categoryNo":23,"categoryName":24,"taxonomyType":25,"taxonomyTypeDesc":26},[108,114,115,116,117,102,38,118,119,79,120],"files","project","act","as","code","plan","programming",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":42},"01M6DSVZS98WHW3ZVEBRTGDYJK","tutorial-notes","Take structured notes in workspace markdown files using deterministic tool calls.","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Ftutorial-notes\u002FSKILL.md",[],[128,129,130,131,132,79,133,114,134,135],"tutorial notes","tutorial","notes","markdown","tool","take","deterministic","structured",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":42},"01M6DSVWEQC2SJCVAVN079NB6V","self-repair","System diagnostics and self-healing — run health scans, interpret results, trigger the fixer generator, guide users through disaster recovery, and rebuild broken files using the BIOS.","https:\u002F\u002Fgithub.com\u002Fvoardwalker-code\u002FNekoCore-OS\u002Fblob\u002Fmain\u002Fproject\u002Fskills\u002Fself-repair\u002FSKILL.md",[],[143,144,145,146,147,148,149,31,150,151,152,153,154,155,156,114,157,158],"self repair","repair","self","broken","system","health","recovery","guide","self-healing","healing","disaster recovery","trigger","fixer","rebuild","results","diagnostics"]