[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71P2C7GVSZKRYZTY54NN6QZ":3,"skill-same:01M71P2C7GVSZKRYZTY54NN6QZ":62},{"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":23,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":61},"01M71P2C7GVSZKRYZTY54NN6QZ","pi-harness",null,"Read before modifying, building on, or answering questions about the pi harness or its @earendil-works libraries (pi-ai, pi-durable, pi-mcp, pi-codemode, chord).","drsh4dow\u002Fpi-setup","drsh4dow","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F45247070?v=4","01M71P068NASGHSWS11VWW416N","Daniel Moretti","01M71P0698BH81N65NP04X9NVN",10,"MIT","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fpi-harness\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33],"pi harness","harness","pi","libraries","chord","MCP","false","questions","about","read","2026-11-10 10:56:23",false,"---\nname: pi-harness\ndescription: Read before modifying, building on, or answering questions about the pi harness or its @earendil-works libraries (pi-ai, pi-durable, pi-mcp, pi-codemode, chord).\ndisable-model-invocation: false\nuser-invokable: false\n---\n\n# Pi harness\n\nLocate the root of the running pi installation, `\u003Cpi>`:\n\n```sh\nd=$(readlink -f \"${PI_PACKAGE_DIR:-$(command -v pi)}\"); while [ \"${d:-\u002F}\" != \u002F ] && ! grep -Eqs '\"name\": *\"@earendil-works\u002Fpi-coding-agent\"' \"$d\u002Fpackage.json\"; do d=$(dirname \"$d\"); done; echo \"${d:-\u002F}\"\n```\n\nPi documentation:\n\n- Main documentation: `\u003Cpi>\u002FREADME.md`\n- Additional docs: `\u003Cpi>\u002Fdocs`\n- Examples: `\u003Cpi>\u002Fexamples` (extensions, custom tools, SDK)\n- When reading pi docs or examples, resolve docs\u002F... and examples\u002F... under `\u003Cpi>`, not the current working directory\n- When asked about: extensions (docs\u002Fextensions.md, examples\u002Fextensions\u002F), themes (docs\u002Fthemes.md), skills (docs\u002Fskills.md), prompt templates (docs\u002Fprompt-templates.md), TUI components (docs\u002Ftui.md), keybindings (docs\u002Fkeybindings.md), SDK integrations (docs\u002Fsdk.md), custom providers (docs\u002Fcustom-provider.md), adding models (docs\u002Fmodels.md), pi packages (docs\u002Fpackages.md), environment variables (docs\u002Fenvironment-variables.md), MCP servers (docs\u002Fmcp.md), codemode scripts and non-LLM models such as classifiers and image models (docs\u002Fcodemode.md)\n- When working on pi topics, read the docs and examples, and follow .md cross-references before implementing\n- Always read pi .md files completely and follow links to related docs (e.g., tui.md for TUI API details)\n- The @earendil-works libraries live beside pi in `\u003Cpi>\u002F..`, each with a README.md and dist\u002F*.d.ts; files their npm packages omit live in the earendil-works\u002Fpi GitHub repository under packages\u002F\u003Cname>\u002F\n","# Pi harness\n\nLocate the root of the running pi installation, `\u003Cpi>`:\n\n```sh\nd=$(readlink -f \"${PI_PACKAGE_DIR:-$(command -v pi)}\"); while [ \"${d:-\u002F}\" != \u002F ] && ! grep -Eqs '\"name\": *\"@earendil-works\u002Fpi-coding-agent\"' \"$d\u002Fpackage.json\"; do d=$(dirname \"$d\"); done; echo \"${d:-\u002F}\"\n```\n\nPi documentation:\n\n- Main documentation: `\u003Cpi>\u002FREADME.md`\n- Additional docs: `\u003Cpi>\u002Fdocs`\n- Examples: `\u003Cpi>\u002Fexamples` (extensions, custom tools, SDK)\n- When reading pi docs or examples, resolve docs\u002F... and examples\u002F... under `\u003Cpi>`, not the current working directory\n- When asked about: extensions (docs\u002Fextensions.md, examples\u002Fextensions\u002F), themes (docs\u002Fthemes.md), skills (docs\u002Fskills.md), prompt templates (docs\u002Fprompt-templates.md), TUI components (docs\u002Ftui.md), keybindings (docs\u002Fkeybindings.md), SDK integrations (docs\u002Fsdk.md), custom providers (docs\u002Fcustom-provider.md), adding models (docs\u002Fmodels.md), pi packages (docs\u002Fpackages.md), environment variables (docs\u002Fenvironment-variables.md), MCP servers (docs\u002Fmcp.md), codemode scripts and non-LLM models such as classifiers and image models (docs\u002Fcodemode.md)\n- When working on pi topics, read the docs and examples, and follow .md cross-references before implementing\n- Always read pi .md files completely and follow links to related docs (e.g., tui.md for TUI API details)\n- The @earendil-works libraries live beside pi in `\u003Cpi>\u002F..`, each with a README.md and dist\u002F*.d.ts; files their npm packages omit live in the earendil-works\u002Fpi GitHub repository under packages\u002F\u003Cname>\u002F\n",{"name":5,"description":7,"user-invokable":35,"disable-model-invocation":35},"main","f7936596c1ba2e1472dadccc3f111b9d517fa96c","agent\u002Fskills\u002Fpi-harness",2,"https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup","https:\u002F\u002Fgithub.com\u002Fdrsh4dow","https:\u002F\u002Fdanielmoretti.com\u002F","Toss A Coin To Your Witcher :pirate_flag: ","2026-11-03 22:13:53",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add drsh4dow\u002Fpi-setup --skill pi-harness",{"tool":54,"command":55},"bunx","bunx skills add drsh4dow\u002Fpi-setup --skill pi-harness",{"tool":57,"command":58},"pnpm","pnpm dlx skills add drsh4dow\u002Fpi-setup --skill pi-harness","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fpi-harness\u002FSKILL.md",true,[],[63,86,115,132,153,164],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":34},"01M71P4GPJMBK21BTZBKY9T8EE","changelog","Write the changelog entry for a pull request. Use when a PR changes behavior that users, operators, or integrators can notice.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fevals\u002Fharness-lessons\u002Ffixtures\u002Fchangelog-skill\u002FSKILL.md",[],[65,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85],"users","pull","notice","changes","operators","pr","pull request","for","request","behavior","entry","write","use","when","can","changelog entry",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":100,"publishedAt":34},"01M71P4E9AZM56JBY227P2G1SC","writing-good-tickets","Write, file, or update an issue or ticket that an agent or a developer can take to one PR. Use when filing a bug or feature, updating an issue, or breaking a plan into tickets.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-good-tickets\u002FSKILL.md",[92,95],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[101,102,103,104,75,105,106,107,82,30,83,108,109,84,110,111,81,112,113,114],"good","writing","tickets","writing good tickets","feature","filing","ticket","file","one","plan","update","bug","take","issue",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":123,"publishedAt":34},"01M71P4C0B0DXTRRSG9RA6Y687","writing-good-prs","Write or update a pull request title and body that a reviewer can trust and own. Use when opening a PR or editing its description.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-good-prs\u002FSKILL.md",[121,122],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},[101,124,102,125,71,126,75,127,82,30,83,84,128,129,76,78,111,81,130,131],"prs","writing good prs","trust","editing","reviewer","title","opening a pr","body",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":136,"categories":137,"keywords":140,"publishedAt":34},"01M71P49D1AG2MR6AYNPMMT34Z","writing-good-commits","Write or reword a git commit message and size the commit it describes. Use when committing, or when reshaping commits during a rebase.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-good-commits\u002FSKILL.md",[138,139],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},[141,101,102,142,143,144,81,145,146,147,82,30,148,149,83,150,151,152],"commits","writing good commits","message","size","git commit message","git","git commit","rebase","commit message","committing","commit","it",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":161,"publishedAt":34},"01M71P480BDE55JMPVVEBCFS7P","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[159,160],{"categoryNo":93,"categoryName":94,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":96,"categoryName":97,"taxonomyType":98,"taxonomyTypeDesc":99},[162,77,102,127,82,30,163,83],"writing for agents","documents",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":34},"01M71P45SNCD7DDSA6FRVCPA17","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwizard\u002FSKILL.md",[],[166,171,172,77,173,174,175,176,82,177,30,83,178,109,179,84,180,181,182,183],"running","setting","up","ci","provisioning infrastructure","only","invoke","Bash","interactive","credentials","dashboard","generate","human"]