I watched https://youtu.be/nI5VdsVl0FM?t=226 about how to manage issues with labels, milestones and Projects, but that seems specific to each Github repository.

Say we have a feature push that requires tracking issues from both a "frontend" & a "backend" repository in a single organisation for simplicity sake. How do you collate, prioritize and track progress with Github issues that span several repositories?

Right now, one possible solution requires me to manually synchronize labels across repositories which seems rather tedious and lacks ordering.

Any suggestions here please? I did have a quick look at Zenhub, but that seems again repository bound and it doesn't seem to write back labels if you actually bothered to sort the issues or tasks into backlog/in-progress etc.

  • Disagree with the close vote. Asking "How do I X?" (possibly on-topic) is not the same as "What tool should I use to do X?" (off-topic).
    – Sarov
    Commented May 16, 2018 at 13:14

4 Answers 4


Limited Native Options; Flexible API

Full-fledged, multi-project and multi-repository project management is not really what GitHub does best. You may want to explore third-party solutions for your bug tracking and milestone management if the native options aren't enough for you.

GitHub has recently gained the notion of projects that span several repositories. However, this is somewhat limited, and may not actually support the full functionality you're looking for.

Even if you can't natively create labels and milestones across all your various repositories, you can certainly leverage the API to do so programmatically. For example, by using the following calls:

you could iterate over each repository to add the labels and milestones you want. A quick search even turned up some NodeJS code that might work for you.

Basically, it looks like your options are to go with a third-party solution with GitHub integration, or to roll your own via the API. Good luck!


Pablo from ZenHub here (answering the question since ZenHub was specifically mentioned).

Most ZenHub features are multi-repository; you can add repositories to an existing Board so both backend and front-end issues will be in the same place.

From the Board, you can create a multi-repo milestone, which creates matching milestones across all the repositories in a given Board, and then group them for the Velocity and Burndown reports, as well as for filtering in the Board.

For creating labels across multiple repositories, you can select issues from multiple repositories in the Board, and then add an existing label; if the label doesn't exist in one of the repositories ZenHub will create it for you.

I hope that helps!


Inelegant solution: declare one repo (perhaps a new one) to be the one where tickets will be managed. Connect to them from commits/PRs in the other repos via explicit links rather than relying on the magic syntax.


Github's API can be used to create milestones/sprints across multiple repositories.

// script.js
import { Octokit } from "https://cdn.skypack.dev/@octokit/core";

const octokit = new Octokit({ auth: token});
const repos = await octokit.request('GET /user/repos');
const milestones = [{
    "title": "Sprint 1",
    "description": "June 1 to June 7"
    "due_on": "2021-06-01T00:00:00Z"
}, {
    "title": "Sprint 2",
    "description": "June 7 to June 14"
    "due_on": "2021-06-07T00:00:00Z"

for (let r=0; r < repos.length; r++) {
    let repo = repos[r];
    for (let m=0; m < milestones.length; m++) {
        let milestone = milestones[m];
        let payload = {
            owner: repo.owner.login,
            repo: repo.name,
            title: milestone.title,
            description: milestone.description,
            due_on: milestone.due_on
        await octokit.request(`POST /repos/{owner}/{repo}/milestones`, payload);

I've built a small web application to achieve this through the user interface. Feel free to use it and modify it as per need.

Link - hardiksondagar.github.io/cross-repository-milestones

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.