Quality Gate Automation: Linear Status to GitHub Checks

Move an issue to 'In Review' in Linear and Notis automatically requires that the GitHub branch passes linting and tests before merge. Status checks are enforced without manual branch protection updates.

Trigger

Public Team Comment Created

Fires when a new comment is posted on a *public-team* Linear issue. For private teams (lock icon in Linear's sidebar) use `LINEAR_PRIVATE_TEAM_COMMENT_CREATED`.

GitHub logo

Action

Add status check contexts

Adds status check contexts (provided in the request body, e.g., `{"contexts": ["new-context"]}`) to a protected branch, requiring these contexts to have been previously reported.

Why this helps

Status changes in Linear should trigger different quality standards (draft items might skip tests, but reviewed items must pass all checks), but GitHub branch rules don't automatically adjust. Engineers merge code that should have been blocked.

  • Enforce the right quality standards at the right time automatically
  • Prevent low-quality code merges by tying GitHub checks to Linear status
  • Reduce manual branch protection management
  • Align quality gates with your team's workflow stages

Setup

Build it in a few focused steps.

  • 1Connect Linear and GitHub to Notis
  • 2Identify which Linear statuses should require which GitHub checks (Review stage might require tests + linting, Draft might skip)
  • 3Create an automation: 'When a public Linear issue moves to Review, require GitHub status checks for the associated branch'
  • 4Specify checks in your prompt: 'require tests, linting, and security scan'
  • 5Set trigger to 'Linear public team issue properties updated'
  • 6Test by moving a Linear issue through stages and verifying GitHub branch protection updates

Questions about this workflow

How does Notis link a Linear issue to a GitHub branch?

Usually by linking in the Linear issue description or PR title. If that link is missing, your automation can prompt you to confirm the branch before applying checks.

Can different status stages have different check requirements?

Yes. Your automation can specify: 'Draft stage = no checks, In Progress = linting only, In Review = all checks, Done = no new checks'.

What if the checks fail?

GitHub blocks the merge until they pass. Your automation can also notify the team in Slack when a branch can't merge due to failed checks.

Can I remove checks when an issue is marked Done?

Yes. Create a follow-up automation: 'When an issue is completed, allow quick-merge without all status checks' (for backport scenarios).

When this happens · Trigger

Do this · Action

Supported Triggers and Actions

Notis builds workflows that link Linear to GitHub. A trigger fires from one place; an action lands in another.

Linear logo

Linear triggers

GitHub logo

GitHub actions

Comment Received Trigger

Triggered when a comment is received.

TriggerInstant

Accept a repository invitation

Accepts a pending repository invitation that has been issued to the authenticated user.

ActionInstant

Issue Created Trigger

Triggered when a new issue is created.

TriggerInstant

List repositories starred by the authenticated user

Deprecated: lists repositories starred by the authenticated user, including star creation timestamps; use 'list repositories starred by the authenticated user' instead.

ActionInstant

Issue Updated Trigger

Triggered when an issue is updated. For example labels are changed, issue status is changed, etc.

TriggerInstant

List stargazers

Deprecated: lists users who have starred a repository; use `list stargazers` instead.

ActionInstant

Private Team Comment Created

Fires when a new comment is posted on an issue in a private Linear team (polled with the connected user's token).

TriggerPolling

Star a repository for the authenticated user

Deprecated: stars a repository for the authenticated user; use `star a repository for the authenticated user` instead.

ActionInstant

Private Team Issue Created

Fires when a new issue appears in a private Linear team (polled with the connected user's token).

TriggerPolling

Add email for auth user

Adds one or more email addresses (which will be initially unverified) to the authenticated user's github account; use this to associate new emails, noting an email verified for another account will error, while an existing email for the current user is accepted.

ActionInstant

Private Team Issue Properties Updated

Fires when properties on an issue change in a private Linear team (polled with the connected user's token).

TriggerPolling

Add app access restrictions

Replaces github app access restrictions for an existing protected branch; requires a json array of app slugs in the request body, where apps must be installed and have 'contents' write permissions.

ActionInstant

Project Created

Fires when a new Linear project is created. Covers projects in both public and private teams — polls with the connected user's token, so visibility matches what the connected user can see in Linear.

TriggerPolling

Add a repository collaborator

Adds a github user as a repository collaborator, or updates their permission if already a collaborator; `permission` applies to organization-owned repositories (personal ones default to 'push' and ignore this field), and an invitation may be created or permissions updated directly.

ActionInstant

Project Properties Updated

Fires when properties on a Linear project change (status, lead, target date, priority, etc.). Covers projects in both public and private teams — polls with the connected user's token.

TriggerPolling

Add a repository to an app installation

Adds a repository to a github app installation, granting the app access; requires authenticated user to have admin rights for the repository and access to the installation.

ActionInstant

Connect any two apps with Notis in the middle.

Not just Linear and GitHub. Any combination from 985+ integrations.

When this happens · Trigger

Do this · Action

Save your first hour today.

7 days free trial with 20$ free usage included.
No card. Works with personal or business GitHub.