github-app
Read, update, assign, and transfer GitHub issues, push branches (including force push), create or update pull requests, issues, and comments, and record issue…
Skill by gregwebs
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/gregwebs-github-app
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Shell scripts
Network hosts it talks to 4
api.github.com· found in codecodeload.github.com· found in install commandgithub.com.helper· found in codegithub.com.username· found in code
Files it touches
~/.claude/skills/github-app
What's inside
- Skill name
github-app- Description
- Read, update, assign, and transfer GitHub issues, push branches (including force push), create or update pull requests, issues, and comments, and record issue dependencies and sub-issues, all as a GitHub App through the gh CLI. Use for GitHub reads or writes, including "open a PR", "send a pull request", "file/read/update/assign/transfer an issue", "comment on the PR/issue", "mark an issue as blocked by / blocking another", or an App-authenticated push (with --force when asked).
- License
- MIT
- Instructions
- 255 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (5)
- SKILL.md
- gh-app-issue-dependency.sh · scripts/
- gh-app-issue-sub-issue.sh · scripts/
- gh-app-token.sh · scripts/
- gh-app.sh · scripts/
SKILL.md (first lines)
# /github-app — GitHub as the App, through `gh`
`${CLAUDE_SKILL_DIR}/scripts/gh-app.sh` runs the real `gh` CLI as a GitHub App
installation. It exports an installation token as `GH_TOKEN` and passes your
arguments to `gh` unchanged. Flags, output, exit codes, and `--help` are
`gh`'s own. When a command prints a URL — creating, editing or transferring
an issue or PR — **always relay it back to the user.** `${CLAUDE_SKILL_DIR}` is
the directory containing this SKILL.md.
These are **outward-facing actions** (they publish to GitHub and notify people).
This skill only runs when explicitly requested by the user- this includes explicitly invoking another skill that explicitly invokes this skill.
Confirm the target (repo, branch, title) before running if there's any ambiguity.
## Guardrails
`gh` can do anything the token allows, so these rules are the guard:
- Ask the user before acting on a repository outside the current project.
- Read the target project's `AGENTS.md` and `CONTRIBUTING.md` first and follow
their restrictions.
- The App's granted scopes are the hard ceiling: `write` on `actions`,
`contents`, `issues`, `pull_requests`, and `workflows`; the remaining 20
scopes are read-only. That still allows deleting branches and editing
workflows: it is a ceiling, not a guard.
- Never move or delete the default branch through `gh` (for example
`gh api …/git/refs/heads/main` or `gh repo sync --force`); the `git push`
guard does not cover it.
- Report a `403` to the user. Never work around it.
- Never run bare `gh`: it acts as the user, not the App.
## Setup reference
Three files live outside this repo, in `~/.config/github-app/` (override with
`GITHUB_APP_SECRETS_DIR`):
- `client-id` — the App's client ID (used as the JWT `iss` claim)
- `installation-id` — the installation scope id
- `private-key.pem` — the App's private key (signs the JWT)
These files should only be accessible to the user (permission 0600).
If these files are missing, the skill is not configured.
If the skill needs to be used, prompt the user to add these files.
The token is minted for you and cached in `${XDG_CACHE_HOME:-~/.cache}/gh-app/`
until five minutes before it expires. You never handle the private key.
Requires `gh`, `jq`, `curl`, and OpenSSL.
## Commands
| Action | Command |
|---|---|
| Push the current branch | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh git push` |
| Open a PR | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh pr create --base BASE --head HEAD --title TITLE --body-file FILE` |
| Update a PR | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh pr edit NUMBER --title TITLE --body-file FILE` |
| Read an issue | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh issue view NUMBER --json number,title,state,labels,body` |
| File an issue | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh issue create --title TITLE --body-file FILE` |
| Update an issue | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh issue edit NUMBER --body-file FILE` |
| Assign an issue | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh issue edit NUMBER --add-assignee USER` |
| Transfer an issue | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh issue transfer NUMBER OWNER/REPO` |
| Comment on an issue or PR | `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh issue comment NUMBER --body-file FILE` |
| Link blocked-by | `${CLAUDE_SKILL_DIR}/scripts/gh-app-issue-dependency.sh add --blocked NUMBER --blocker NUMBER` |
| Remove blocked-by | `${CLAUDE_SKILL_DIR}/scripts/gh-app-issue-dependency.sh remove --blocked NUMBER --blocker NUMBER` |
| List blocking edges | `${CLAUDE_SKILL_DIR}/scripts/gh-app-issue-dependency.sh list --issue NUMBER` |
| Link sub-issue | `${CLAUDE_SKILL_DIR}/scripts/gh-app-issue-sub-issue.sh add --parent NUMBER --child NUMBER` |
Anything else `gh` does, run through `${CLAUDE_SKILL_DIR}/scripts/gh-app.sh`
with `gh`'s own arguments, for example `api`, `pr view`, or `run view`. Use the
`github-actions-ci` skill for check status and waiting.
Commands act on the repository of the directory they run in, which `gh`
resolves for itself.
With more than one remote (for example a fork with `upstream`), that resolution
does not follow the remote `git push` uses: with no default set,
`{owner}/{repo}` and `issue create` resolve to `upstream`, so a write lands in
the wrong repository. Name the repository explicitly instead. Use `origin`, the
remote `git push` uses:
```text
git remote get-url origin
```
That prints `git@github.com:OWNER/REPO.git` or
`https://github.com/OWNER/REPO.git`, possibly without the trailing `.git`;
`OWNER/REPO` is the part after the host.
Pass it as `--repo OWNER/REPO` to the `gh` subcommands that accept it and to
both issue scripts, and use a `repos/OWNER/REPO/...` path with `gh api`, which
has no `--repo`. Pass `--repo` for another repository only when the user asked
for it, and ask first (see Guardrails). `repo set-default --view` shows only a
default that was set explicitly, not what `gh` would otherwise resolve; never
run `repo set-default` without an argument, because it fails when not run
interactively. Run `repo set-default OWNER/REPO` only when the user asks for
it, because it writes `remote.<name>.gh-resolved` into the repository's config.
Other skills call the same scripts as
`${CLAUDE_SKILL_DIR}/../github-app/scripts/gh-app.sh` (and likewise for the two
issue scripts). Skill directories are siblings both in this repo and when
installed.
## Recording blocked-by / blocking dependencies
`gh` has no command for issue dependencies or sub-issues, so two bundled
scripts call `gh api` and resolve issue numbers to the database ids GitHub
needs.
GitHub stores a dependency as a single directed edge: "issue A blocks issue B"
is recorded as "B is blocked_by A". Name the issue that **cannot start** with
`--blocked`:
```
${CLAUDE_SKILL_DIR}/scripts/gh-app-issue-dependency.sh add --blocked 42 --blocker 40
```
reads as "issue 42 is blocked by issue 40". `list --issue N` prints both
directions (`blocked by:` / `blocking:`). To undo a link, pass the same pair to
`remove`.
## Permission-efficient command shapesFrom gregwebs/skills-sdlc, MIT.
More from gregwebs/skills-sdlc
- 0.649score
github-actions-ci
gregwebs
Monitor, wait for, diagnose, rerun, and cancel a repository's GitHub Actions checks and runs.
SkillAFreshness: A★ 20Claude Code +9 - 0.641score
github-tickets
gregwebs
Break a plan, spec, or conversation into tracer-bullet GitHub issues for this repo, creating a parent tracking issue with sub-issues when publishing multiple…
SkillAFreshness: A★ 20Claude Code +9 - 0.641score
pull-request
gregwebs
Send a Github Pull Request of your work.
SkillAFreshness: A★ 20Claude Code +9 - 0.638score
implementation-plan
gregwebs
Create a detailed Implementation Plan for a ticket or spec, corresponding to a single Pull Request.
SkillAFreshness: A★ 20Claude Code +9 - 0.635score
wrap-up
gregwebs
After implementing, commit and finish your work
SkillAFreshness: A★ 20Claude Code +9 - 0.635score
type-test-code
gregwebs
Write types first, then test and code independently
SkillAFreshness: A★ 20Claude Code +9 - 0.635score
document-changes
gregwebs
Record changes in either a PR, issues, docs, or chat output
SkillAFreshness: A★ 20Claude Code +9 - 0.635score
verify
gregwebs
Verify software by intentional testing.
SkillAFreshness: A★ 20Claude Code +9 - 0.634score
implement
gregwebs
Implement a piece of work based on a spec or ticket with the flow: Plan -> Execute -> Review -> Verify -> Completion
SkillAFreshness: A★ 20Claude Code +9 - 0.631score
orchestration
gregwebs
Orchestrate a workflow with subagents
SkillAFreshness: A★ 20Claude Code +9 - 0.630score
code-review-adversarial
gregwebs
Adversarial code review of spec/quality with a single agent
SkillAFreshness: A★ 20Claude Code +9 - 0.630score
code-review-with-followup
gregwebs
Adversarial code review with explicit followup instructions
SkillAFreshness: A★ 20Claude Code +9
Signals
- Stars
- 20
- Forks
- 1
- Open issues
- 1
- Last commit (this folder)
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/gregwebs/skills-sdlc
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from gregwebs
- 0.649score
github-actions-ci
gregwebs
Monitor, wait for, diagnose, rerun, and cancel a repository's GitHub Actions checks and runs.
SkillAFreshness: A★ 20Claude Code +9 - 0.641score
github-tickets
gregwebs
Break a plan, spec, or conversation into tracer-bullet GitHub issues for this repo, creating a parent tracking issue with sub-issues when publishing multiple…
SkillAFreshness: A★ 20Claude Code +9 - 0.641score
pull-request
gregwebs
Send a Github Pull Request of your work.
SkillAFreshness: A★ 20Claude Code +9 - 0.638score
implementation-plan
gregwebs
Create a detailed Implementation Plan for a ticket or spec, corresponding to a single Pull Request.
SkillAFreshness: A★ 20Claude Code +9 - 0.635score
wrap-up
gregwebs
After implementing, commit and finish your work
SkillAFreshness: A★ 20Claude Code +9 - 0.635score
type-test-code
gregwebs
Write types first, then test and code independently
SkillAFreshness: A★ 20Claude Code +9
Cite this page
github-app skill. Agent Mart. https://agentmart.dev/skills/gregwebs-github-app (last updated 2026-10-24)