AutomationFlowsSlack & Telegram › Implement Ai-ready Github Issues with Cloudcli and Telegram Summaries

Implement Ai-ready Github Issues with Cloudcli and Telegram Summaries

ByDerek Cheung @derekcheungsa on n8n.io

This workflow runs nightly at 2:00 AM to find open GitHub issues labeled “ai-ready”, uses CloudCLI to implement each issue and open a pull request against a target branch, comments back on the issue, and sends a run summary to Telegram. Runs every night at 2:00 AM on a schedule.…

Cron / scheduled trigger★★★★☆ complexity8 nodesGitHubTelegram@Cloudcli Ai/N8N Nodes Cloud Cli
Slack & Telegram Trigger: Cron / scheduled Nodes: 8 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #16035 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "YB2LkCymzHGL5qtZ",
  "meta": {
    "builderVariant": "mcp",
    "aiBuilderAssisted": true,
    "templateCredsSetupCompleted": true
  },
  "name": "Nightly AI-Ready Issue Implementer",
  "tags": [],
  "nodes": [
    {
      "id": "d5916cb0-dea6-4068-9a51-a7d9cd7e4831",
      "name": "Every Night 2AM",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        192
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 2
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "0d95b000-7241-42cb-b533-cd74b66617be",
      "name": "Set Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        224,
        192
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "repoOwner",
              "name": "repoOwner",
              "type": "string",
              "value": "your-github-username"
            },
            {
              "id": "repoName",
              "name": "repoName",
              "type": "string",
              "value": "your-repo-name"
            },
            {
              "id": "label",
              "name": "label",
              "type": "string",
              "value": "ai-ready"
            },
            {
              "id": "baseBranch",
              "name": "baseBranch",
              "type": "string",
              "value": "main"
            },
            {
              "id": "cloudcliEnvId",
              "name": "cloudcliEnvId",
              "type": "string",
              "value": "your-cloudcli-environment-id"
            },
            {
              "id": "cloudcliEnvUrl",
              "name": "cloudcliEnvUrl",
              "type": "string",
              "value": "https://your-environment.cloudcli.ai"
            },
            {
              "id": "telegramChatId",
              "name": "telegramChatId",
              "type": "string",
              "value": "YOUR_TELEGRAM_CHAT_ID"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7ff13cc2-692f-4e70-8bec-27bb280d3aa1",
      "name": "Find AI-Ready Issues",
      "type": "n8n-nodes-base.github",
      "position": [
        448,
        192
      ],
      "parameters": {
        "owner": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $(\"Set Configuration\").item.json.repoOwner }}"
        },
        "resource": "repository",
        "returnAll": true,
        "repository": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $(\"Set Configuration\").item.json.repoName }}"
        },
        "getRepositoryIssuesFilters": {
          "state": "open",
          "labels": "={{ $(\"Set Configuration\").item.json.label }}"
        }
      },
      "credentials": {
        "githubApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "1880e543-e40c-4fd6-94d1-1107828c89b5",
      "name": "Telegram Summary",
      "type": "n8n-nodes-base.telegram",
      "position": [
        896,
        0
      ],
      "parameters": {
        "text": "=\u2705 Nightly AI-Ready run complete \u2014 {{ $now.toFormat(\"yyyy-LL-dd HH:mm\") }}\nIssues processed: {{ $(\"Find AI-Ready Issues\").all().length }}\n\n{{ $(\"Find AI-Ready Issues\").all().map(i => \"#\" + i.json.number + \" \u2014 \" + i.json.title).join(\"\\n\") }}",
        "chatId": "={{ $('Set Configuration').item.json.telegramChatId }}",
        "additionalFields": {
          "appendAttribution": false,
          "disable_web_page_preview": true
        }
      },
      "credentials": {
        "telegramApi": {
          "name": "<your credential>"
        }
      },
      "executeOnce": true,
      "typeVersion": 1.2
    },
    {
      "id": "6b7085e2-e25d-413f-80b7-4d000de1c559",
      "name": "CloudCLI Implement Issue",
      "type": "@cloudcli-ai/n8n-nodes-cloud-cli.cloudCli",
      "position": [
        896,
        192
      ],
      "parameters": {
        "message": "=Implement GitHub issue #{{ $(\"Loop Over Issues\").item.json.number }}: {{ $(\"Loop Over Issues\").item.json.title }}\n\n{{ $(\"Loop Over Issues\").item.json.body }}\n\nOpen a pull request against the {{ $(\"Set Configuration\").item.json.baseBranch }} branch that closes this issue.",
        "resource": "agent",
        "additionalOptions": {
          "createPR": true,
          "githubToken": "",
          "createBranch": true
        },
        "agentEnvironmentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "cloudCliApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "fe542323-3c42-453f-84d7-97fe411975f2",
      "name": "Comment On Issue",
      "type": "n8n-nodes-base.github",
      "position": [
        1120,
        272
      ],
      "parameters": {
        "body": "=\ud83e\udd16 CloudCLI has implemented this issue and opened a pull request against `{{ $(\"Set Configuration\").item.json.baseBranch }}`.\nCloudCLI environment: {{ $(\"Set Configuration\").item.json.cloudcliEnvUrl }}",
        "owner": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $(\"Set Configuration\").item.json.repoOwner }}"
        },
        "operation": "createComment",
        "repository": {
          "__rl": true,
          "mode": "name",
          "value": "={{ $(\"Set Configuration\").item.json.repoName }}"
        },
        "issueNumber": "={{ $(\"Loop Over Issues\").item.json.number }}"
      },
      "credentials": {
        "githubApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2d9f28af-a0ab-491a-be90-45af21153c43",
      "name": "Loop Over Issues",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        672,
        192
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "4e287840-fa50-43c6-bf8d-de936276cf73",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -528,
        -16
      ],
      "parameters": {
        "color": 5,
        "width": 460,
        "height": 520,
        "content": "## \ud83c\udf19 Nightly AI-Ready Issue Implementer\n\nEvery night at 2:00 AM this workflow auto-implements triaged GitHub issues and leaves review-ready PRs.\n\n**Flow:** Schedule (2 AM) \u2192 Set Configuration \u2192 Find AI-Ready Issues \u2192 Exclude Pull Requests \u2192 Loop Over Issues \u2192 CloudCLI Implement Issue \u2192 Comment On Issue \u2192 (loop) \u2192 Telegram Summary.\n\n**What each run does**\n1. Pulls all **open** issues labeled `ai-ready` from the repo set in **Set Configuration**.\n2. Filters out pull requests (the issues endpoint returns both).\n3. Loops one issue at a time. For each, **CloudCLI** (Claude Code) implements it and opens a PR against the base branch via its Create Branch + Create PR options.\n4. Comments on the issue linking the CloudCLI environment.\n5. After all issues, sends a **Telegram** run summary.\n\n**Config** \u2014 edit only the **Set Configuration** node: repoOwner, repoName, label, baseBranch, cloudcliEnvUrl, telegramChatId.\n\n**Error handling** \u2014 fail-fast: any error halts the run (no Continue On Fail). Add an n8n Error Workflow for failure alerts.\n\n**Credentials** \u2014 GitHub (read issues + comment), CloudCLI (run agent), Telegram (summary). The CloudCLI node also needs a GitHub token to push branches / open PRs \u2014 keep it as a secret."
      },
      "typeVersion": 1
    }
  ],
  "active": true,
  "settings": {
    "binaryMode": "separate",
    "availableInMCP": true,
    "executionOrder": "v1"
  },
  "versionId": "a4186600-8260-4858-b86a-e1d0758c920b",
  "nodeGroups": [],
  "connections": {
    "Every Night 2AM": {
      "main": [
        [
          {
            "node": "Set Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Comment On Issue": {
      "main": [
        [
          {
            "node": "Loop Over Issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Issues": {
      "main": [
        [
          {
            "node": "Telegram Summary",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "CloudCLI Implement Issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set Configuration": {
      "main": [
        [
          {
            "node": "Find AI-Ready Issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find AI-Ready Issues": {
      "main": [
        [
          {
            "node": "Loop Over Issues",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "CloudCLI Implement Issue": {
      "main": [
        [
          {
            "node": "Comment On Issue",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow runs nightly at 2:00 AM to find open GitHub issues labeled “ai-ready”, uses CloudCLI to implement each issue and open a pull request against a target branch, comments back on the issue, and sends a run summary to Telegram. Runs every night at 2:00 AM on a schedule.…

Source: https://n8n.io/workflows/16035/ — original creator credit. Request a take-down →

More Slack & Telegram workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Slack & Telegram

A robust workflow to back up and synchronize your n8n workflows to a GitHub repository, with intelligent change detection and support for file renames.

GitHub, n8n, Telegram +1
Slack & Telegram

FetchGithubIssues. Uses stickyNote, telegram, scheduleTrigger, github. Scheduled trigger; 9 nodes.

Telegram, GitHub
Slack & Telegram

This workflow is ideal for: Developers who want to stay updated on issues without constantly checking GitHub. Managers tracking issue progress in a Telegram group. DevOps teams that need automated not

Telegram, GitHub
Slack & Telegram

Solo founders and spreadsheet gremlins who track everything in Notion and want crisp Telegram pings without opening a single page.

Telegram, Notion
Slack & Telegram

. Uses googleSheets, telegram, httpRequest, wise. Scheduled trigger; 36 nodes.

Google Sheets, Telegram, HTTP Request +2