Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

gh-issue-sync — Claude Code skill: what it does, how to install

Syncs GitHub Issues into local Markdown files for triage, search, editing, and issue creation from an editor or terminal.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mitsuhiko/gh-issue-sync --skill gh-issue-sync -a claude-code
npx skills add mitsuhiko/gh-issue-sync --skill skill -a claude-code
Open on GitHub

What gh-issue-sync does

The skill syncs open GitHub Issues into .issues/open/ and closed ones into .issues/closed/. Each Markdown file can hold the title, labels, assignees, milestone, state, and issue body, while its filename supplies the issue number.

Use gh-issue-sync to initialise a directory in a Git repository, fetch issues, list them, create new items, or close and reopen them. push sends local edits, and diff shows changes against an issue. Run push --dry-run to inspect a planned update first.

New issues receive a temporary ID beginning with T; pushing replaces it with the GitHub number and updates references in other issues. pull skips conflicts, while --force can overwrite local files, so review local changes before using that flag.

What it helps with

  • sync GitHub Issues into Markdown files
  • search an issue from the terminal
  • edit labels and issue text locally
  • create a new issue with a CLI command
  • post an issue comment during a push

Example prompts for the agent

  • Run `gh-issue-sync pull` to fetch open issues.
  • Create an issue with `gh-issue-sync new "Fix login"` and add a label.
  • Check local edits with `gh-issue-sync status` before running `push`.

How to install gh-issue-sync

1Skills CLI (Vercel)

npx skills add mitsuhiko/gh-issue-sync --skill gh-issue-sync -a claude-code
npx skills add mitsuhiko/gh-issue-sync --skill skill -a claude-code

2Manually: put the files in place

~/.claude/skills/skill/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/skill/

Similar

roundup official github Pulls from GitHub, email, Teams and Slack, then drafts a status briefing in your own writing style. Useful when you owe the same update every week. GitHub Copilot 1,300installs conventional-commit-message dangreen Generates changelog-ready commit messages following Conventional Commits 1.0.0 and conventional-changelog presets. It guides AI agents on type selection and breaking changes. Claude Code CX Codex Cursor +1 944installs github-workflow-automation sickn33 A skill that hands the agent patterns for GitHub work: AI-assisted PR review, issue triage, Actions workflows, CI/CD hooks, rebases and cherry-picks. Claude Code CX Codex Cursor +1 1,500installs Hooks Automation ruvnet A hooks system that automatically coordinates Claude Code operations, formats code, and learns from development patterns. Manages agents, persists session context, and integrates with MCP tools. Claude Code CX Codex Cursor +1 1,100installs fix-merge-conflicts cursor Resolves merge conflicts in a branch, then checks the build and tests before wrapping up. Use it when several conflicted files need focused fixes without a refactor. Claude Code CX Codex Cursor +1 2,700installs pr-review MiniMax-AI Two-phase pull request review for skill repositories, combining automated schema checks with content audits. Claude Code CX Codex Cursor +1 1,800installs triage Matt Pocock This skill moves issues and external PRs through triage states, verification, and agent briefs. It fits maintainers managing an issue queue. Claude Code 990,453installs code-review Matt Pocock Reviews changes from a chosen reference point against repository standards and the originating spec. Use it for a branch, PR, or work in progress. Claude Code 789,521installs

Questions about gh-issue-sync

How do I install gh-issue-sync in Claude Code?

Run npx skills add mitsuhiko/gh-issue-sync --skill gh-issue-sync -a claude-code.

What does gh-issue-sync do?

It syncs GitHub Issues with Markdown files in .issues/open/ and .issues/closed/. You can search, create, edit, close, and reopen issues locally.

How do I post a comment with gh-issue-sync?

Create a .comment.md file next to an issue file, such as .issues/open/42.comment.md. Its Markdown content is posted during push, then the file is deleted.

Source text

SKILL.md · Apache-2.0
---
name: gh-issue-sync
description: "Manage GitHub issues locally as Markdown files. Use for triaging, searching, editing, and creating issues without leaving your editor or terminal."
---

# gh-issue-sync

Syncs GitHub issues to local Markdown files in `.issues/open/` and `.issues/closed/`.

## Commands

```
gh-issue-sync init              # Initialize in git repo
gh-issue-sync pull              # Fetch open issues (--all for closed too)
gh-issue-sync push              # Push local changes (--dry-run to preview)
gh-issue-sync list              # List issues (supports gh issue list flags + --search)
gh-issue-sync new "Title"       # Create issue (--label, --edit)
gh-issue-sync close 42          # Close (--reason completed|not_planned)
gh-issue-sync reopen 42
gh-issue-sync status            # Show local changes
gh-issue-sync diff 42           # Show diff (--remote to re-fetch)
```

## File Format

`.issues/open/42-fix-login-bug.md`:
```markdown
---
title: Fix login bug
labels: [bug, priority:high]
assignees: [alice]
milestone: v1.0
state: open
# For closed: state_reason: completed|not_planned
# Optional: parent: 10, blocked_by: [11, 12], blocks: [15]
---

Issue body in Markdown.
```

Issue number is derived from the filename, not stored in frontmatter.

## Temporary Issues

New issues get a `T`-prefixed ID (e.g., `T1a2b3c`). The filename must start with `T`:
```
.issues/open/T1a2b3c-my-new-issue.md
```

On `push`, the file is renamed to the real issue number (e.g., `42-my-new-issue.md`) and `number:` in frontmatter is updated. Any `#T1a2b3c` references in other issues are also updated to `#42`.

## Comments

To post a comment when pushing, create a `.comment.md` file next to the issue:
```
.issues/open/42.comment.md
.issues/open/42-fix-login-bug.comment.md
```

Content is plain Markdown. The file is deleted after the comment is posted.

## Notes

- Pull skips conflicts; use `--force` to overwrite local

© mitsuhiko · Apache-2.0 · mitsuhiko/gh-issue-sync

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor