Skip to content
Recued
Menu
← Back to recipes

Create approved Linear issue from GitHub Actions run

by recued-core v1

Owner-invoked action half of the GitHub Actions to Linear exception handoff loop. It reads one awaiting_owner_approval proposal written by github-linear-ci-failure-proposal, then either creates exactly one Linear issue from deterministic GitHub context or dismisses the proposal as no Linear work needed. Running this recipe is the owner's approval or decline. It re-reads the GitHub workflow run before creating Linear work and takes no outward-facing action when there is no pending proposal, the live workflow run no longer has conclusion failure, or the required Linear destination is missing. Linear Reviews, GitHub Actions notifications, workflow logs, rerun controls, branch protection, Linear's GitHub integration, and GitHub issue syncing should own the normal path.

Complete workflow

Workflow pack that closes the loop between exception-scoped GitHub Actions failures and owner-approved Linear follow-up work. It depends on the GitHub and Linear capability packs, detects one recent unhandled failed workflow run at a time, writes a data.shared proposal, notifies the owner, provides a manual action recipe that either creates the Linear issue and links it back to the GitHub workflow run or dismisses the proposal, and watches created Linear issues until they reach a terminal state. It excludes pull-request-attached runs by default because Linear Reviews already surfaces PR checks and CI-failure notifications. It does not replace GitHub Actions notifications, GitHub workflow logs, rerun controls, branch protection, Linear's GitHub integration, Linear PR automation, or GitHub issue syncing; use it only when those normal paths are insufficient and Recued-visible cross-system closure state is needed.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

Owner-invoked action half of the GitHub Actions to Linear exception handoff loop. It reads one awaiting_owner_approval proposal written by github-linear-ci-failure-proposal, then either creates exactly one Linear issue from deterministic GitHub context or dismisses the proposal as no Linear work needed. Running this recipe is the owner's approval or decline. It re-reads the GitHub workflow run before creating Linear work and takes no outward-facing action when there is no pending proposal, the live workflow run no longer has conclusion failure, or the required Linear destination is missing. Linear Reviews, GitHub Actions notifications, workflow logs, rerun controls, branch protection, Linear's GitHub integration, and GitHub issue syncing should own the normal path.

githublineargithub-actionsci
by recued-core pinned v1

Scheduled detection half of the GitHub Actions to Linear exception handoff loop. It reads recent failed workflow runs for one configured repository, excludes pull-request-attached runs by default, fetches failed job names for the first unhandled non-PR run, writes one data.shared proposal, and notifies the owner to review whether the failed run should become Linear work. It never creates Linear issues, comments on GitHub, reruns workflows, updates GitHub issues or pull requests, changes branch protection, mutates Linear projects, or calls arbitrary APIs. GitHub Actions notifications, workflow logs, rerun controls, branch protection, Linear Reviews, Linear's GitHub integration, and GitHub issue syncing own their normal paths; this recipe only creates a Recued-visible exception proposal that an owner can approve or dismiss with create-approved-linear-issue-from-github-run.

githublineargithub-actionsci
by recued-core pinned v1

Scheduled feedback half of the GitHub Actions to Linear exception handoff loop. It reads Linear issues created by create-approved-linear-issue-from-github-run, reads the original GitHub workflow run for current context, closes the Recued data.shared handoff when the Linear issue reaches a terminal state, and optionally notifies the owner to verify the current CI state. It does not update GitHub, rerun workflows, comment on GitHub, update Linear issues, create comments, change branch protection, or call arbitrary APIs. Linear Reviews, GitHub Actions notifications, logs, reruns, branch protection, Linear's GitHub integration, and GitHub issue syncing own normal CI operations; this watcher only records Recued-visible exception closure.

githublineargithub-actionsci
by recued-core pinned v1
View pack details, dependencies, and permissions →
How it works 80 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Data fetch
proposals ?
Process (79 steps)
proposals_family filter
Filter by condition
title_override_text trim
Trim whitespace from setting linear title override
description_override_text trim
Trim whitespace from setting linear description override
team_override_text trim
Trim whitespace from setting linear team id override
project_override_text trim
Trim whitespace from setting linear project id override
state_override_text trim
Trim whitespace from setting linear state id override
assignee_override_text trim
Trim whitespace from setting linear assignee id override
pending_proposals filter
Filter by condition
has_target_run compare
Check if setting proposal run id is greater than 0
targeted_proposals filter
Filter by condition
selected_pool ternary
Apply ternary
candidate_proposals slice
Take a subset of
pending_count count
Count items in pending proposals
has_candidate compare
Check if candidate proposals has data
proposal_key default
Apply default
github_connection default
Apply default
linear_connection default
Apply default
github_repo default
Apply default
github_run_id default
Apply default
github_run_number default
Apply default
github_workflow_name default
Apply default
github_run_display_title default
Apply default
github_run_url default
Apply default
proposal_run_conclusion default
Apply default
github_run_event default
Apply default
github_head_branch default
Apply default
github_head_sha default
Apply default
github_failed_job_names default
Apply default
github_failed_job_count default
Apply default
proposal_exception_reason default
Apply default
proposal_linear_title default
Apply default
proposal_linear_description default
Apply default
proposal_linear_team_id default
Apply default
proposal_linear_project_id default
Apply default
proposal_linear_state_id default
Apply default
proposal_linear_assignee_id default
Apply default
proposal_linear_priority default
Apply default
action_is_create compare
Check if setting action equals create_linear_issue
action_is_dismiss compare
Check if setting action equals dismiss_no_linear_work_needed
has_team_override compare
Check if team override text has data
linear_team_id ternary
Apply ternary
has_project_override compare
Check if project override text has data
linear_project_id ternary
Apply ternary
has_state_override compare
Check if state override text has data
linear_state_id ternary
Apply ternary
has_assignee_override compare
Check if assignee override text has data
linear_assignee_id ternary
Apply ternary
has_github_connection compare
Check if github connection has data
has_linear_connection compare
Check if linear connection has data
has_repo compare
Check if github repo has data
has_run_id compare
Check if github run id is greater than 0
has_linear_team compare
Check if linear team id has data
ready_for_live_github_read all
Check if all conditions are true
live_github_run ?
skip: step.ready_for_live_github_read not_equal true
live_run_conclusion default
Apply default
live_run_failed compare
Check if live run conclusion equals failure
live_or_proposal_url default
Apply default
live_or_proposal_title default
Apply default
has_title_override compare
Check if title override text has data
default_linear_title default
Apply default
linear_title ternary
Apply ternary
default_linear_description template
Generate text from a template
has_description_override compare
Check if description override text has data
proposal_or_default_description default
Apply default
linear_description ternary
Apply ternary
has_linear_title compare
Check if linear title has data
has_linear_description compare
Check if linear description has data
ready_to_create all
Check if all conditions are true
ready_to_dismiss all
Check if all conditions are true
now date_add
Add 0 minutes to
mark_proposal_dismissed ?
skip: step.ready_to_dismiss not_equal true
linear_issue ?
skip: step.ready_to_create not_equal true
created_linear_issue_id default
Apply default
created_linear_issue_identifier default
Apply default
created_linear_issue_url default
Apply default
has_created_linear_issue compare
Check if created linear issue id has data
mark_proposal_created ?
skip: step.has_created_linear_issue not_equal true
link_github_run_to_linear_issue ?
skip: step.has_created_linear_issue not_equal true
summary to_summary
Format results as a summary card
Settings 10 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

action setting = create_linear_issue
github setting =
linear setting =
proposal run id setting = 0
linear title override setting =
linear team id override setting =
linear state id override setting =
linear project id override setting =
linear assignee id override setting =
linear description override setting =

Trust & control

What installing this recipe would let it do. Recued grants these permissions at install — review them there before approving.

Where it runs

Device + server Runs on your device (browser) or your server.

Permissions it requires

Read your Github connectionRead your Linear connection
Declared by the recipe — Recued grants these at install, where you review them before approving.

Data it touches

Warehousedata.issuecreatedata.githubdata.lineardata.shared

About

Tags

githublinear githubgithub-actionslinearcifailureexceptionapprovaldeveloper-workflowwork-trackingclosed-looppack:github-linear-ci-failure-handoff

Details

80 steps 10 configurable settings recipe_id: create-approved-linear-issue-from-github-run