Skip to main content
Glama

commits-to-issues

CI

Generate GitHub issues from your git history. Your commits already record what you shipped; this turns them into closed GitHub issues, grouped into real units of work, each with a checklist of what changed and a comment linking every commit.

A CLI and an MCP server for Claude Code, Codex, and Cursor. You see the whole plan first; nothing is written until you say yes. Run it again and it skips what already exists.

Use it when the issue tracker fell behind the code: a solo project that never had issues, a sprint nobody logged, or a repo you are about to open-source and want a readable history for.

Quick start

Requires Python 3.10+ and a GitHub token (gh auth login is enough).

uvx commits-to-issues --since 2026-09-01
42 commits in ~/code/shop → 7 issues for octo/shop

 id  worked                   area            kind         commits  title
  1  2026-09-01→2026-09-03    orders          enhancement        6  Add order export
  2  2026-09-04               auth            bug                2  Refresh expired sessions
  3  2026-09-08→2026-09-10    billing         enhancement        9  Support annual plans
...
Nothing was written to GitHub. Re-run with --apply to create and close these issues.

Then create them:

uvx commits-to-issues --since 2026-09-01 --apply

Each issue gets the from-commits label, plus bug or enhancement from conventional commit types, and is closed as completed with a comment listing its commits.

Related MCP server: agentic-sdlc-mcp

How commits are grouped

  1. A path map you give it: --module apps/web/=Web --module api/=API

  2. Otherwise the conventional-commit scope: fix(auth): ... → auth

  3. Otherwise the top-level folder the commit touched most

A group splits when work pauses for more than three days (--max-gap-days). The title comes from the largest commit in the group. Weekend work is dated on the next business day.

Other options: --until, --author, --github OWNER/REPO (defaults to the origin remote), --skip 2,5, and --include-uncommitted, which adds one open issue for work in progress.

With an AI agent (MCP)

The same flow is an MCP server for Claude Code, Codex, Cursor, and other clients:

claude mcp add commits-to-issues -- uvx commits-to-issues mcp
  • plan_issues_from_commits is read-only. It returns the proposed issues and a plan_id.

  • create_issues_from_commits takes the plan_id, optional new titles and skip ids, and defaults to dry_run=true.

Try this prompt:

Read this repository's git history since September 1 and propose GitHub issues
with plan_issues_from_commits. Show me the plan as a table. Don't create anything until I approve.

Safe to retry

Every issue carries a hidden marker derived from its first commit. Before writing, commits-to-issues lists the repo's from-commits issues and skips any it already made, so a re-run, or a retry after a network error, never duplicates an issue. Writes are spaced out and back off on GitHub rate limits.

Limits

  • GitHub does not let you backdate an issue, so the real dates appear in the issue body ("Worked: 2026-09-08 → 2026-09-10"), not as its created date.

  • Commit messages are the only evidence. No tests are run.

Also by the author

plane-workflow-mcp does the same for Plane, cloud or self-hosted, plus a planning workflow for agents.

MIT licensed.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to automate GitHub repository management, issue tracking, and commits using natural language.
    6 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Turns GitHub Projects v2 into an agentic task substrate where AI coding agents register, atomically claim and complete tasks, exchange heartbeats, review one another's work products, and operate within token budgets. Humans get AI-powered PRD generation, task breakdown, sprint planning, roadmap creation, and issue triage, with all state stored natively in GitHub issues, projects, and comments so no external infrastructure is needed.
    453 npm
    MIT