@craftsamo/github-tools 0.4.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-tools",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "GitHub tools for coding agents: issues, project boards, pull requests, repositories, releases and Actions.",
5
5
  "author": {
6
6
  "name": "craftsamo",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-tools",
3
- "version": "0.4.1",
3
+ "version": "0.5.0",
4
4
  "description": "GitHub tools for coding agents: issues, project boards, pull requests, repositories, releases and Actions.",
5
5
  "author": {
6
6
  "name": "craftsamo",
package/README.md CHANGED
@@ -141,8 +141,8 @@ Add the server to the host's MCP configuration. Flags go in `args`:
141
141
  ## Tools and skills
142
142
 
143
143
  Each toolset comes with a skill that tells an agent how to use its tools. A
144
- toolset with no tools yet registers none (so far `issues` and `projects` have
145
- tools).
144
+ toolset with no tools yet registers none (so far `issues`, `pull_requests` and
145
+ `projects` have tools).
146
146
 
147
147
  ### Issues (`issues`)
148
148
 
@@ -162,6 +162,33 @@ The skill is [`github-issues`](skills/github-issues/SKILL.md), shown as
162
162
  An issue's kind is the organization's Issue Type of that name when it defines
163
163
  one, otherwise a `type:<kind>` label.
164
164
 
165
+ ### Pull requests and stacks (`pull_requests`)
166
+
167
+ | Tool | What it does | Class |
168
+ | --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
169
+ | `github_pr_read` | `view` one pull request in full, `list` a repository's pull requests, read its `checks` (waiting up to 45 seconds, with failed job logs) or its `diff` | read |
170
+ | `github_pr_create` | open a pull request from a pushed branch, with labels, assignees, reviewers, milestone, closing issues, a board and attachments | add |
171
+ | `github_pr_edit` | change the title, body (or append to it), base, labels, assignees, reviewers, milestone or closing issues | overwrite |
172
+ | `github_pr_comment` | comment, with attachments | add |
173
+ | `github_pr_review` | approve, request changes or comment, with line comments | add |
174
+ | `github_pr_ready` | mark ready for review, or turn back into a draft | idempotent |
175
+ | `github_pr_close` | close | overwrite |
176
+ | `github_pr_reopen` | reopen a closed pull request | overwrite |
177
+ | `github_pr_merge` | merge, with the open layers below it in a stack when asked | administrative |
178
+ | `github_stack_read` | `view` a native stack by its number or a pull request in it, or `list` a repository's stacks | read |
179
+ | `github_stack_link` | join pull requests into a stack, or add them on top of one | idempotent |
180
+ | `github_stack_unlink` | dissolve a stack, leaving its pull requests open | overwrite |
181
+
182
+ The skill is
183
+ [`github-pull-requests`](skills/github-pull-requests/SKILL.md), shown as
184
+ `github-tools:github-pull-requests` in Claude Code and
185
+ `github-tools:pull-requests` in Hermes. The tools do not push: push the branch
186
+ first and pass the commit it pushed as `head_sha`, so a pull request opens, is
187
+ reviewed or merges on exactly that commit. Closing issues are kept as `Closes
188
+ #N` lines in the body, since GitHub has no other way to link them. Stacks use
189
+ GitHub's REST stack endpoints, so the `gh stack` extension is not needed.
190
+ Attachments need gh 2.99 or newer.
191
+
165
192
  ### Project boards (`projects`)
166
193
 
167
194
  | Tool | What it does | Class |
@@ -199,7 +226,7 @@ are confirmed by the harness.
199
226
  | OpenCode | always; the plugin asks only before a write |
200
227
  | Claude Code | the rule `mcp__plugin_github-tools_github-tools__*_read` in `permissions.allow` of `~/.claude/settings.json` or a project |
201
228
  | Codex | always; Codex runs tools that declare `readOnlyHint` unasked, as the read tools do |
202
- | Grok Build | `grok --allow 'MCPTool(github-tools__*_read)'` |
229
+ | Grok Build | `grok --allow 'MCPTool(github-tools__*_read)' --allow 'MCPTool(github_*_read)'` (both rules; see below) |
203
230
  | Antigravity | the rule `mcp(github-tools_github-tools/github_issue_read)` in `permissions.allow` of `~/.gemini/antigravity-cli/settings.json`, one for each read tool |
204
231
  | Hermes | always; the plugin asks only before a write |
205
232
 
@@ -209,6 +236,12 @@ Where a write is asked about, and where it is not:
209
236
  a rule asks for it: add the `github_*` rule shown under [OpenCode](#opencode).
210
237
  - **Codex** under `codex exec`, and **Grok Build** under `grok -p`, refuse a
211
238
  write they cannot ask about, unless it is allowed beforehand.
239
+ - **Grok Build** calls the plugin's tools through its `use_tool` tool, and the
240
+ agent often names a tool without its server first (`github_project_read`).
241
+ Grok checks the rules against the name as given, so the server-qualified rule
242
+ alone does not match that first call, and `grok -p` refuses it and stops
243
+ instead of letting the agent retry with `github-tools__github_project_read`.
244
+ The second rule matches the short name; a write still matches neither.
212
245
  - **Antigravity** asks before any MCP tool no rule allows, reads included, and
213
246
  names the plugin's server `github-tools_github-tools` (plugin, then server).
214
247
  `agy -p` refuses a tool it cannot ask about; `--dangerously-skip-permissions`