[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS4SV1DRTY3F0ECH68S6KY":3,"skill-same:01M6CS4SV1DRTY3F0ECH68S6KY":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":28,"publishedAt":48,"linkOnly":49,"markdownContent":50,"markdownBody":51,"frontMatter":52,"refName":53,"commitSha":54,"skillDirectory":55,"forksCount":56,"repositoryHtmlUrl":57,"repositoryHomepageUrl":6,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6CS4SV1DRTY3F0ECH68S6KY","scripting",null,"Use when the OPERATOR asks a question that needs code to answer — data processing, CSV\u002FJSON parsing, API calls, domain lookups, web scraping, calculations, or anything beyond a single coreutils command. MUST READ before writing any Python or running python\u002Fpython3 commands.","mrtolkien\u002FGHOST","mrtolkien","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8489650?v=4","01M6CS32Q934XBQQE8BDV5Z6W2","Tolki","01M6CS32VBCD47F5E27WF9W6FC",5,"MIT","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fscripting\u002Fskill.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[5,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47],"json","domain","use","scraping","read","command","question","web scraping","python3","data processing","writing","parsing","api","data","csv","operator","code","web","python","2026-11-10 10:12:30",false,"---\nname: scripting\ndescription:\n  Use when the OPERATOR asks a question that needs code to answer — data processing,\n  CSV\u002FJSON parsing, API calls, domain lookups, web scraping, calculations, or anything\n  beyond a single coreutils command. MUST READ before writing any Python or running\n  python\u002Fpython3 commands.\n---\n\n# Scripting\n\nWhen answering a question that requires code, write a clean, reusable script rather than\na throwaway command. This makes your work reproducible and discoverable.\n\n## Before Writing\n\nCheck if you already have a script for this:\n\n```\nknowledge_search query=\"\u003Cwhat you need>\" categories=[\"scripts\"]\n```\n\nIf found, read it with `file_read` and run it. Update it if the OPERATOR's request is a\nvariation.\n\n## File Organization\n\nScripts live in the workspace under `scripts\u002F{topic}\u002F{name}.py`:\n\n- **topic**: broad category (e.g., `finance`, `domains`, `weather`, `system`)\n- **name**: descriptive, lowercase with underscores (e.g., `spending_by_category.py`)\n\n## Python Scripts (Default)\n\nUse Python with\n[uv inline metadata (PEP 723)](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fguides\u002Fscripts\u002F). Every script\nMUST have:\n\n1. **PEP 723 metadata block** — declares dependencies inline\n2. **Module docstring** — what it does, when to use it (this powers search)\n3. **typer** for scripts with arguments — gives automatic `--help`\n\n### Template (with arguments)\n\n```python\n# \u002F\u002F\u002F script\n# requires-python = \">=3.12\"\n# dependencies = [\"httpx\", \"typer\"]\n# \u002F\u002F\u002F\n\"\"\"Short description of what this script does.\n\nLonger explanation of when to use it and what it expects.\n\"\"\"\n\nimport typer\n\ndef main(\n    arg1: str = typer.Argument(help=\"Description of arg1\"),\n    flag: bool = typer.Option(False, help=\"Description of flag\"),\n):\n    \"\"\"One-line description for --help.\"\"\"\n    ...\n\nif __name__ == \"__main__\":\n    typer.run(main)\n```\n\n### Template (no arguments)\n\n```python\n# \u002F\u002F\u002F script\n# requires-python = \">=3.12\"\n# dependencies = [\"httpx\"]\n# \u002F\u002F\u002F\n\"\"\"Short description of what this script does.\n\nLonger explanation.\n\"\"\"\n\ndef main():\n    ...\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### Running\n\n```\nshell command=\"uv run scripts\u002F{topic}\u002F{name}.py [args]\"\n```\n\n## Non-Python Scripts\n\nUse Bash only for thin wrappers around existing CLI tools with no complex logic:\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# Short description of what this script does.\nset -euo pipefail\n\n# ... implementation\n```\n\nFor other languages (Go, Rust), add required toolchains to the workspace nix shell\n(`shell\u002F`) and document the build step in the script header.\n\n## When NOT to Script\n\n- Single coreutils command (`ls`, `grep`, `wc`, `df`, `du`) — just run it\n- Quick one-liner with no dependencies — just run it\n\n## When to Script\n\n- Needs a Python library (parsing, HTTP, data processing)\n- Has logic (conditionals, loops over data, error handling)\n- Would benefit from reuse (OPERATOR might ask again)\n- Needs structured output (tables, formatted reports)\n\n## Library Documentation\n\nIf you're unsure about a library's API, import its documentation first:\n\n```\n# For PyPI packages with docs sites:\nshell command=\"ghost reference import crawl --url https:\u002F\u002Ftyper.tiangolo.com\u002F --topic typer --max-depth 2\"\n\n# For GitHub repos:\nshell command=\"ghost reference import git --url https:\u002F\u002Fgithub.com\u002Ftiangolo\u002Ftyper --topic typer --paths docs\u002F --extensions md\"\n```\n\nThen search your references:\n\n```\nknowledge_search query=\"typer argument\" categories=[\"references\"] topic=\"typer\"\n```\n","# Scripting\n\nWhen answering a question that requires code, write a clean, reusable script rather than\na throwaway command. This makes your work reproducible and discoverable.\n\n## Before Writing\n\nCheck if you already have a script for this:\n\n```\nknowledge_search query=\"\u003Cwhat you need>\" categories=[\"scripts\"]\n```\n\nIf found, read it with `file_read` and run it. Update it if the OPERATOR's request is a\nvariation.\n\n## File Organization\n\nScripts live in the workspace under `scripts\u002F{topic}\u002F{name}.py`:\n\n- **topic**: broad category (e.g., `finance`, `domains`, `weather`, `system`)\n- **name**: descriptive, lowercase with underscores (e.g., `spending_by_category.py`)\n\n## Python Scripts (Default)\n\nUse Python with\n[uv inline metadata (PEP 723)](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002Fguides\u002Fscripts\u002F). Every script\nMUST have:\n\n1. **PEP 723 metadata block** — declares dependencies inline\n2. **Module docstring** — what it does, when to use it (this powers search)\n3. **typer** for scripts with arguments — gives automatic `--help`\n\n### Template (with arguments)\n\n```python\n# \u002F\u002F\u002F script\n# requires-python = \">=3.12\"\n# dependencies = [\"httpx\", \"typer\"]\n# \u002F\u002F\u002F\n\"\"\"Short description of what this script does.\n\nLonger explanation of when to use it and what it expects.\n\"\"\"\n\nimport typer\n\ndef main(\n    arg1: str = typer.Argument(help=\"Description of arg1\"),\n    flag: bool = typer.Option(False, help=\"Description of flag\"),\n):\n    \"\"\"One-line description for --help.\"\"\"\n    ...\n\nif __name__ == \"__main__\":\n    typer.run(main)\n```\n\n### Template (no arguments)\n\n```python\n# \u002F\u002F\u002F script\n# requires-python = \">=3.12\"\n# dependencies = [\"httpx\"]\n# \u002F\u002F\u002F\n\"\"\"Short description of what this script does.\n\nLonger explanation.\n\"\"\"\n\ndef main():\n    ...\n\nif __name__ == \"__main__\":\n    main()\n```\n\n### Running\n\n```\nshell command=\"uv run scripts\u002F{topic}\u002F{name}.py [args]\"\n```\n\n## Non-Python Scripts\n\nUse Bash only for thin wrappers around existing CLI tools with no complex logic:\n\n```bash\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# Short description of what this script does.\nset -euo pipefail\n\n# ... implementation\n```\n\nFor other languages (Go, Rust), add required toolchains to the workspace nix shell\n(`shell\u002F`) and document the build step in the script header.\n\n## When NOT to Script\n\n- Single coreutils command (`ls`, `grep`, `wc`, `df`, `du`) — just run it\n- Quick one-liner with no dependencies — just run it\n\n## When to Script\n\n- Needs a Python library (parsing, HTTP, data processing)\n- Has logic (conditionals, loops over data, error handling)\n- Would benefit from reuse (OPERATOR might ask again)\n- Needs structured output (tables, formatted reports)\n\n## Library Documentation\n\nIf you're unsure about a library's API, import its documentation first:\n\n```\n# For PyPI packages with docs sites:\nshell command=\"ghost reference import crawl --url https:\u002F\u002Ftyper.tiangolo.com\u002F --topic typer --max-depth 2\"\n\n# For GitHub repos:\nshell command=\"ghost reference import git --url https:\u002F\u002Fgithub.com\u002Ftiangolo\u002Ftyper --topic typer --paths docs\u002F --extensions md\"\n```\n\nThen search your references:\n\n```\nknowledge_search query=\"typer argument\" categories=[\"references\"] topic=\"typer\"\n```\n",{"name":5,"description":7},"main","083d96429a2d05526f8a294b83c74f0336670def","assets\u002Fskills\u002Fscripting",0,"https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST","https:\u002F\u002Fgithub.com\u002Fmrtolkien","https:\u002F\u002Fblog.tolki.dev","Data Engineer \u002F Esports \u002F Keyboards","2026-04-24 15:41:08",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add mrtolkien\u002FGHOST --skill scripting",{"tool":68,"command":69},"bunx","bunx skills add mrtolkien\u002FGHOST --skill scripting",{"tool":71,"command":72},"pnpm","pnpm dlx skills add mrtolkien\u002FGHOST --skill scripting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fscripting\u002Fskill.md",true,[76,82],{"path":77,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":80,"sourceHtmlUrl":81},"SOURCE.md","REFERENCE","参考文档",182,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fhyperliquid-heyanon\u002FSOURCE.md",{"path":83,"resourceType":78,"resourceTypeDesc":79,"sizeBytes":84,"sourceHtmlUrl":85},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Ftrading\u002Fhyperliquid-heyanon\u002FTRUST.auto.yaml",[87,113,130,147,156,167],{"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":93,"publishedAt":48},"01M6CS613RWD9CFJ3KFX47V1DS","system-management","Use when reading or changing GHOST configuration (providers, models, timing, compaction, services, any config.toml key), adding or switching LLM providers, answering questions about GHOST's own features or capabilities, a CLI tool is missing or \"not found\", services need starting\u002Fstopping\u002Fdebugging, updating GHOST to a newer version, managing the Nix shell environment, or troubleshooting GHOST setup.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsystem-management\u002Fskill.md",[],[94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,31,110,111,112],"system management","management","system","shell","cli","nix","config","setup","debugging","capabilities","services","Providers","ghost","tool","troubleshooting","environment","version","models","configuration",{"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":124,"publishedAt":48},"01M6CS5XTK2884R9HE15YR8YZM","writing-skills","Use when creating new skills, editing existing skills, or verifying skills work before deployment","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fwriting-skills\u002Fskill.md",[119,122,123],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[125,39,126,127,128,31,129],"writing skills","coding","work","editing","deployment",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":138,"publishedAt":48},"01M6CS5V737R1DVB3TZEK0C6WT","writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code. Write comprehensive implementation plans assuming the engineer has zero context for our codebase and questionable taste.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fwriting-plans\u002Fskill.md",[136,137],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},[139,39,140,45,141,126,142,143,31,144,145,146],"writing plans","spec","ZeRO","write","context","engineer","implementation","task",{"skillNo":148,"name":149,"nameZh":6,"description":150,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":151,"categories":152,"keywords":153,"publishedAt":48},"01M6CS5S5S0YY56686G5CQ0WMP","verification","Use when about to claim work is complete, fixed, or passing, before committing or creating PRs. Requires running verification commands and confirming output before making any success claims. Evidence before assertions, always.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fverification\u002Fskill.md",[],[149,126,127,31,154,155],"evidence","claim",{"skillNo":157,"name":158,"nameZh":6,"description":159,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":160,"categories":161,"keywords":163,"publishedAt":48},"01M6CS5PD2ZSFWYRDZSACNTAJY","tdd","Use when implementing any feature or bugfix, before writing implementation code. Write the test first. Watch it fail. Write minimal code to pass.","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Ftdd\u002Fskill.md",[162],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},[158,39,45,164,126,142,31,165,145,166],"first","minimal","test",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":174,"publishedAt":48},"01M6CS5K5WE2SHF1YV8D9C4C77","systematic-debugging","Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes","https:\u002F\u002Fgithub.com\u002Fmrtolkien\u002FGHOST\u002Fblob\u002Fmain\u002Fassets\u002Fskills\u002Fsuperpowers\u002Fsystematic-debugging\u002Fskill.md",[173],{"categoryNo":120,"categoryName":121,"taxonomyType":21,"taxonomyTypeDesc":22},[175,102,176,31,126,166,177],"systematic debugging","behavior","bug"]