[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H48ATTAM61GVNQ6PAXTZJB":3,"skill-same:01M6H48ATTAM61GVNQ6PAXTZJB":82},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":49,"commitSha":50,"skillDirectory":51,"forksCount":52,"repositoryHtmlUrl":53,"repositoryHomepageUrl":54,"ownerHtmlUrl":55,"ownerBlogUrl":56,"ownerDescription":6,"updatedAt":57,"install":58,"resources":71},"01M6H48ATTAM61GVNQ6PAXTZJB","gh-cli",null,"GitHub operations via gh CLI — use this instead of GitHub MCP server tools for all PR, issue, release, and CI work.","eyelock\u002Fassistants","eyelock","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1277325?v=4","01M6H423MGYJ0P316VZ2MMH75N","David Collie","01M6H423RR18QA9N8S2F3J8S8X",1,"MIT","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fdev\u002Fskills\u002Fgh-cli\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"cli","gh cli","gh","MCP","for","github operations","via","github mcp","issue","use","operations","work","mcp server","github","Tools","github mcp server","ci","server","release","pr","2026-11-10 10:12:30",false,"---\nname: gh-cli\ndescription: GitHub operations via gh CLI — use this instead of GitHub MCP server tools for all PR, issue, release, and CI work.\n---\n\n# GitHub via gh CLI\n\n**Always use `gh` CLI for GitHub operations. Never use GitHub MCP server tools.**\n\nThe `gh` CLI is always available, scriptable, and produces predictable output. MCP server tools introduce unnecessary indirection and cause confusion when their side effects (push, create, close) occur even if you later reject the agent's response.\n\nWhen a read-only GitHub MCP server is what the harness provides (no shell), the `github` skill covers reading through it; writes still go through `gh` here, and only when asked.\n\n## Read Freely, Write Only When Asked\n\nReads change nothing: `list`, `view`, `checks`, `diff`, `status`, `search`, `run view`, and `gh api` GETs. Run as many as the question needs.\n\nWrites change what other people see: `create`, `comment`, `edit`, `merge`, `close`, `review`, `run rerun`, `release delete`, and `gh api` with `-X POST`, `PATCH`, `PUT` or `DELETE`. Run one only when the user asked for that change. When a read turns up something worth doing (a rerun, a comment, a merge), report it and offer; don't do it.\n\nFor scripting, ask for `--json \u003Cfields>` and filter with `--jq` rather than parsing the table output.\n\n## What's Waiting on Me\n\n`gh pr list` only covers the current repository; review requests and assigned issues can live anywhere.\n\n```bash\ngh status                                            # assigned issues and PRs, review requests, mentions, across repos\ngh pr list --author @me                              # my open PRs here\ngh search prs --review-requested=@me --state=open    # PRs waiting on my review, every repo\ngh issue list --assignee @me\n```\n\nReport each PR with what blocks it: failing checks, review required, draft, or ready to merge.\n\n## Pull Requests\n\n```bash\ngh pr create --base \u003Cbranch> --title \"\u003Ctitle>\" --body \"\u003Cbody>\"\ngh pr list\ngh pr view \u003Cnumber>\ngh pr view \u003Cnumber> --comments\ngh pr checks \u003Cnumber>\ngh pr checks \u003Cnumber> --watch\ngh pr merge \u003Cnumber> --squash\ngh pr edit \u003Cnumber> --base \u003Cbranch>\ngh pr close \u003Cnumber>\n```\n\n## Issues\n\n```bash\ngh issue list\ngh issue view \u003Cnumber>\ngh issue create --title \"\u003Ctitle>\" --body \"\u003Cbody>\"\ngh issue comment \u003Cnumber> --body \"\u003Cbody>\"\ngh issue close \u003Cnumber>\ngh issue edit \u003Cnumber> --add-label \"\u003Clabel>\"\n```\n\n## CI \u002F Workflow Runs\n\n```bash\ngh run list --workflow=\u003Cname>.yml --limit 5\ngh run view \u003Crun-id>\ngh run watch \u003Crun-id>\ngh run watch \u003Crun-id> --exit-status    # blocks until complete; exits non-zero on failure\ngh run list --branch \u003Cbranch> --workflow=ci.yml --limit 1\ngh run list --commit \u003Csha> --workflow=ci.yml\n```\n\n### Why Did CI Fail?\n\nGo from the PR to the failing step's output, then read the code it points at:\n\n```bash\ngh pr checks \u003Cnumber>                  # which check failed; its link holds the run and job IDs\ngh run view \u003Crun-id>                   # the run's jobs and the failed step\ngh run view \u003Crun-id> --log-failed      # only the failed steps' log\ngh run view \u003Crun-id> --job \u003Cjob-id> --log   # one job's full log, when the failed lines need context\n```\n\nAn aggregate check (such as All Clear) fails because another job did: report the job that actually failed. Rerunning is a write: suggest it for a failure that looks flaky, and run it only when asked.\n\n## Releases\n\n```bash\ngh release list\ngh release view v{VERSION}\ngh release delete v{VERSION} --yes\n```\n\n## Branches and Repos\n\n```bash\ngh repo view\ngh repo clone \u003Cowner>\u002F\u003Crepo>\ngh api repos\u002F{owner}\u002F{repo}\u002Fbranches    # when gh doesn't have a direct command\n```\n\n## Passing Multi-line Bodies\n\nAlways use a HEREDOC to avoid quoting issues:\n\n```bash\ngh pr create --base develop --title \"feat: my feature\" --body \"$(cat \u003C\u003C'EOF'\n## Summary\n- Did the thing\n\n## Testing\n- [ ] make check passes\nEOF\n)\"\n```\n","# GitHub via gh CLI\n\n**Always use `gh` CLI for GitHub operations. Never use GitHub MCP server tools.**\n\nThe `gh` CLI is always available, scriptable, and produces predictable output. MCP server tools introduce unnecessary indirection and cause confusion when their side effects (push, create, close) occur even if you later reject the agent's response.\n\nWhen a read-only GitHub MCP server is what the harness provides (no shell), the `github` skill covers reading through it; writes still go through `gh` here, and only when asked.\n\n## Read Freely, Write Only When Asked\n\nReads change nothing: `list`, `view`, `checks`, `diff`, `status`, `search`, `run view`, and `gh api` GETs. Run as many as the question needs.\n\nWrites change what other people see: `create`, `comment`, `edit`, `merge`, `close`, `review`, `run rerun`, `release delete`, and `gh api` with `-X POST`, `PATCH`, `PUT` or `DELETE`. Run one only when the user asked for that change. When a read turns up something worth doing (a rerun, a comment, a merge), report it and offer; don't do it.\n\nFor scripting, ask for `--json \u003Cfields>` and filter with `--jq` rather than parsing the table output.\n\n## What's Waiting on Me\n\n`gh pr list` only covers the current repository; review requests and assigned issues can live anywhere.\n\n```bash\ngh status                                            # assigned issues and PRs, review requests, mentions, across repos\ngh pr list --author @me                              # my open PRs here\ngh search prs --review-requested=@me --state=open    # PRs waiting on my review, every repo\ngh issue list --assignee @me\n```\n\nReport each PR with what blocks it: failing checks, review required, draft, or ready to merge.\n\n## Pull Requests\n\n```bash\ngh pr create --base \u003Cbranch> --title \"\u003Ctitle>\" --body \"\u003Cbody>\"\ngh pr list\ngh pr view \u003Cnumber>\ngh pr view \u003Cnumber> --comments\ngh pr checks \u003Cnumber>\ngh pr checks \u003Cnumber> --watch\ngh pr merge \u003Cnumber> --squash\ngh pr edit \u003Cnumber> --base \u003Cbranch>\ngh pr close \u003Cnumber>\n```\n\n## Issues\n\n```bash\ngh issue list\ngh issue view \u003Cnumber>\ngh issue create --title \"\u003Ctitle>\" --body \"\u003Cbody>\"\ngh issue comment \u003Cnumber> --body \"\u003Cbody>\"\ngh issue close \u003Cnumber>\ngh issue edit \u003Cnumber> --add-label \"\u003Clabel>\"\n```\n\n## CI \u002F Workflow Runs\n\n```bash\ngh run list --workflow=\u003Cname>.yml --limit 5\ngh run view \u003Crun-id>\ngh run watch \u003Crun-id>\ngh run watch \u003Crun-id> --exit-status    # blocks until complete; exits non-zero on failure\ngh run list --branch \u003Cbranch> --workflow=ci.yml --limit 1\ngh run list --commit \u003Csha> --workflow=ci.yml\n```\n\n### Why Did CI Fail?\n\nGo from the PR to the failing step's output, then read the code it points at:\n\n```bash\ngh pr checks \u003Cnumber>                  # which check failed; its link holds the run and job IDs\ngh run view \u003Crun-id>                   # the run's jobs and the failed step\ngh run view \u003Crun-id> --log-failed      # only the failed steps' log\ngh run view \u003Crun-id> --job \u003Cjob-id> --log   # one job's full log, when the failed lines need context\n```\n\nAn aggregate check (such as All Clear) fails because another job did: report the job that actually failed. Rerunning is a write: suggest it for a failure that looks flaky, and run it only when asked.\n\n## Releases\n\n```bash\ngh release list\ngh release view v{VERSION}\ngh release delete v{VERSION} --yes\n```\n\n## Branches and Repos\n\n```bash\ngh repo view\ngh repo clone \u003Cowner>\u002F\u003Crepo>\ngh api repos\u002F{owner}\u002F{repo}\u002Fbranches    # when gh doesn't have a direct command\n```\n\n## Passing Multi-line Bodies\n\nAlways use a HEREDOC to avoid quoting issues:\n\n```bash\ngh pr create --base develop --title \"feat: my feature\" --body \"$(cat \u003C\u003C'EOF'\n## Summary\n- Did the thing\n\n## Testing\n- [ ] make check passes\nEOF\n)\"\n```\n",{"name":5,"description":7},"develop","5f79513fe27520bf03af784e8df568a04931c48d","skills\u002Fdev\u002Fskills\u002Fgh-cli",0,"https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants","https:\u002F\u002Feyelock.github.io\u002Fassistants\u002F","https:\u002F\u002Fgithub.com\u002Feyelock","http:\u002F\u002Fwww.eyelock.net\u002Fblog","2026-11-14 00:30:01",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add eyelock\u002Fassistants --skill gh-cli",{"tool":64,"command":65},"bunx","bunx skills add eyelock\u002Fassistants --skill gh-cli",{"tool":67,"command":68},"pnpm","pnpm dlx skills add eyelock\u002Fassistants --skill gh-cli","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fdev\u002Fskills\u002Fgh-cli\u002FSKILL.md",true,[72,78],{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"evals\u002Feval_queries.json","REFERENCE","参考文档",771,"https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fdev\u002Fskills\u002Fgh-cli\u002Fevals\u002Feval_queries.json",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"evals\u002Fevals.json",5459,"https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fdev\u002Fskills\u002Fgh-cli\u002Fevals\u002Fevals.json",[83,89,114,130,142,155],{"skillNo":84,"name":85,"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":86,"categories":87,"keywords":88,"publishedAt":44},"01M6H46CHAJFE20J3Q118P9PW9","doctor","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fplugins\u002Fwheelhouse\u002Fskills\u002Fdoctor\u002FSKILL.md",[],[85],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":44},"01M6H45X8QJZTQAPN56WZ8V111","add-seat","Add a named seat to a Wheelhouse - a crew member, a standing role (such as a dispatcher) or a worker - as a ynh harness with its charter, standing orders and only the tools its job needs, named from the Wheelhouse's roster. Use when asked to add, create or set up a seat, role, worker or agent in a Wheelhouse (a release manager, a PR watcher, a dispatcher, a designer, more workers), or to give a role a name, or to start on a Wheelhouse's team (its starter team), one role at a time. Also use to trial, make official or drop a seat.","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fplugins\u002Fwheelhouse\u002Fskills\u002Fadd-seat\u002FSKILL.md",[],[96,97,98,99,100,33,101,102,103,104,105,106,107,108,109,110,111,112,43,113],"add","add seat","harness","SET","roster","release manager","workers","team","with","create","watcher","starter","when","more","worker","up","only","as",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":44},"01M6H4BWCVR2YJVP8RW878NYDP","voice","How voices work - what a voice skill contains, how to write a new one, and how several voices compose into one reply. Use whenever drafting a reply in a named voice, or when asked to create or change a voice.","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fvoice\u002Fskills\u002Fvoice\u002FSKILL.md",[],[116,105,121,35,122,123,33,124,125,126,127,128,108,129],"how to","change","voice skill","compose","how","write","reply","new","drafting",{"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":136,"publishedAt":44},"01M6H4BRVA87C6T495HCFNDQ7Z","voice-warm","A friendly voice that acknowledges the person and their effort. Compose with direct for friendly but brief.","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fvoice\u002Fskills\u002Fvoice-warm\u002FSKILL.md",[],[137,116,138,104,139,124,140,28,141],"voice warm","person","brief","direct","but",{"skillNo":143,"name":144,"nameZh":6,"description":145,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":146,"categories":147,"keywords":148,"publishedAt":44},"01M6H4BNFQ64X65YZDM9QMD61B","voice-formal","A careful, complete voice for people outside the team - customers, partners, senior stakeholders.","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fvoice\u002Fskills\u002Fvoice-formal\u002FSKILL.md",[],[149,116,103,150,151,152,153,154,28],"voice formal","complete","senior","careful","partners","people",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":44},"01M6H4BHXE6KSNBY92TBFZY7QD","voice-direct","A plain, brief voice that leads with the answer. The default when no voice is named.","https:\u002F\u002Fgithub.com\u002Feyelock\u002Fassistants\u002Fblob\u002Fdevelop\u002Fskills\u002Fvoice\u002Fskills\u002Fvoice-direct\u002FSKILL.md",[],[162,140,116,104,139,163,164,165,108,166],"voice direct","leads","answer","default","plain"]