This repo acts as a GitHub/Linear issue inbox. Issues filed here are automatically routed to the appropriate repo based on their label, and two-way synced with Linear via the native GitHub Issues Sync integration.
- An issue is created here (or arrives via Linear sync).
- A routing label is applied β either at creation or afterwards.
- A GitHub Action transfers the issue to the target repo.
- A stub comment is left on the original issue with a redirect note.
- Linear's sync follows the transferred issue to its new repo (one-way).
Labels follow the format π repo-name, where repo-name is the name of a repo
in the org. These labels are kept in sync automatically (see below). In Linear,
they live under the repo label group.
Runs nightly (and on demand via workflow_dispatch). For every non-archived repo
in the org (excluding this one), it ensures a corresponding label exists in
Linear under the repo group, and a matching π repo-name label exists in
this repo.
Secrets required:
| Secret | What it is |
|---|---|
LINEAR_API_KEY |
A Linear personal API key with Read and Write scopes (Settings β Security & Access β Personal API Keys) |
SYNC_PAT |
A GitHub PAT with read:org scope, to list org repos |
Triggers on issues: [labeled, opened]. When an issue has a π repo-name
label, it transfers the issue to that repo and leaves a redirect comment.
Secrets required:
| Secret | What it is |
|---|---|
TRANSFER_PAT |
A GitHub PAT with repo scope (the default GITHUB_TOKEN cannot transfer issues across repos) |
Note: Both workflows use separate PATs so you can scope permissions independently. You can use the same PAT for both if you prefer.
- Create the repo and enable Issues
- In Linear: Settings β Integrations β GitHub β GitHub Issues β +, select this repo, choose Two-way sync, link to your inbox team
- Create a Linear personal API key and add it as
LINEAR_API_KEYsecret - Create a GitHub PAT (
repo+read:org) and add asSYNC_PAT - Create a GitHub PAT (
repo) and add asTRANSFER_PAT - Add both workflow files to
.github/workflows/ - Run Sync repo labels to Linear manually once to bootstrap labels
- For each other repo you want as a target: in Linear, add a one-way GitHub Issues Sync connection (Settings β Integrations β GitHub β GitHub Issues β +, choose One-way)
- Label must exist in the target repo for it to survive the transfer.
GitHub drops labels that don't exist at the destination. The routing label
itself (
π repo-name) only needs to exist in this inbox repo β Linear creates it here automatically via the GitHub Issues Sync. - Only newly created issues sync via Linear's GitHub Issues Sync. Existing issues must be imported manually if needed.