Skip to content

The moment it happens

Turn GitHub bug reports into Jira tickets

When a bug is reported on GitHub, a Jira ticket is created with an AI summary and priority, and the GitHub issue gets a comment with the Jira key.

Runs
The moment it happens
Apps
GitHub, Jira
AI
Yes, uses the built-in AI allowance
Access
GitHub issues write; Jira create

Send this to your assistant

Create a ClickRuntime automation: when a GitHub issue labelled bug is opened in acme/app, have AI summarise it and set a priority, create a Jira bug in ENG, comment the Jira key on the GitHub issue, and tell #eng.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A company maintains an open-source SDK on GitHub, but its engineers plan their work in Jira. Bug reports from the community sit in GitHub until someone remembers to create a ticket, and reporters never learn that their bug was picked up.

Creating a Jira ticket for each GitHub bug as it arrives, and commenting the key back, puts community bugs into the real planning process. Reporters see a reply straight away, and engineers see the bug in their sprint tools.

What you get out of it

  • Community bugs enter planning

    Each bug becomes a Jira ticket immediately. It competes for attention alongside internal work.

  • Reporters get a response

    A comment with the Jira key shows the bug has been logged. Contributors feel heard.

  • A clear summary and priority

    AI condenses the report and suggests a priority. Planning meetings start with tidy tickets.

  • Linked both ways

    The ticket links to the GitHub issue and the issue names the ticket. Anyone can follow the trail.

How it works

What happens, step by step

  1. When an issue labelled bug is opened, GitHub notifies ClickRuntime straight away.

  2. AI writes a short summary of the bug and suggests a priority.

  3. A Jira bug ticket is created with the summary, the priority and a link to the GitHub issue.

  4. A comment with the Jira key is added to the GitHub issue.

  5. A message with both links is posted to your #eng Slack channel.

Before it runs live

  • Connect GitHub
  • Connect Jira
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Turn GitHub bug reports into Jira ticketsjust nowSucceeded
Slack · #engGitHub bug filed as ENG-531 (High): Client crashes when token refresh fails

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other GitHub and Jira steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
github_bug_issues_become_jira_tickets.pyexample
from clickruntime import on_event, credentials, http, notify, verify, ai

def gh(method, path, **kw):
    resp = http.request(method, f"https://api.github.com{path}", headers={
        "Authorization": f"Bearer {credentials.connection('github', 'work')}", "Accept": "application/vnd.github+json"}, **kw)
    return resp.raise_for_status() or (resp.json() if resp.content else None)
JIRA = "https://api.atlassian.com/ex/jira/your-cloud-id"

def jira(method, path, **kw):
    resp = http.request(method, JIRA + path, headers={"Authorization": f"Bearer {credentials.connection('jira', 'work')}", "Accept": "application/json"}, **kw)
    return resp.raise_for_status() or (resp.json() if resp.content else None)

def adf(text):
    return {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": text}]}]}

SCHEMA = {"type": "object", "properties": {"summary": {"type": "string"}, "priority": {"type": "string", "enum": ["Highest", "High", "Medium", "Low"]}}}

@on_event
def handle(event):
    if not verify.github(event.body, event.header("X-Hub-Signature-256"), credentials.secret("GITHUB_WEBHOOK_SECRET")):
        return {"ignored": "bad signature"}
    body = event.json
    issue = body.get("issue") or {}
    if event.header("X-GitHub-Event") != "issues" or body["action"] != "opened" or "bug" not in {l["name"] for l in issue.get("labels", [])}:
        return {"ignored": True}
    t = ai.generate(f"{issue['title']}\n{(issue.get('body') or '')[:4000]}", json_schema=SCHEMA, max_output_tokens=250,
                    system="Summarise this bug report in 3 sentences for an engineer and choose a priority.").json
    ticket = jira("POST", "/rest/api/3/issue", json={"fields": {"project": {"key": "ENG"}, "issuetype": {"name": "Bug"},
                  "summary": issue["title"][:250], "priority": {"name": t["priority"]}, "description": adf(f"{t['summary']}\n\nGitHub: {issue['html_url']}")}})
    gh("POST", f"/repos/{body['repository']['full_name']}/issues/{issue['number']}/comments", json={"body": f"Thanks for the report. We're tracking this as {ticket['key']}."})
    notify.slack(f"GitHub bug filed as {ticket['key']} ({t['priority']}): <{issue['html_url']}|{issue['title']}>", channel="#eng")
    return {"jira": ticket["key"]}

FAQ

Common questions

Are all issues sent to Jira?
Only those labelled bug when opened, by default. You can choose another label or let AI decide which issues are bugs.
Does the GitHub comment reveal internal details?
It only gives the Jira key and a short note. Your Jira contents stay private.
Which priority values does it use?
Your Jira project's priorities, such as Highest to Lowest. AI picks from those names.
What permissions does it need?
GitHub issues write; Jira create. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Turn GitHub bug reports into Jira tickets” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.