About gh-issue-sync
gh-issue-sync syncs GitHub issues with Markdown files in a repository, supporting local edits and issue operations from the command line. It also handles temporary issue IDs and updates references when issues are pushed.
Key features
- 01Pull and push issue Markdown files
- 02Create, close, reopen, and list issues
- 03Track labels, assignees, milestones, and relationships
- 04Use temporary IDs for new issues
- 05Post comments from Markdown files
Use cases
- 01Edit issue details locally in a repository
- 02Preview local issue changes before pushing
- 03Create an issue and update references to its temporary ID
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ mitsuhiko/ gh-issue-sync --skill gh-issue-syncAfter installing, type/gh-issue-syncin Claude Code to confirm it loaded.
Bundled filesembed.go
Details
From the project READMEgh-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:
---
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
--forceto overwrite local