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

Scans every workflow on your n8n instance for credentials, tokens, and personal data pasted straight into node parameters. Findings are reported to Telegram by severity, and the snapshot committed to

n8n, GitHub, Telegram
Slack & Telegram

This workflow backs up all workflows from your n8n instance to a GitHub repository every day at 03:00, and also supports an on-demand Telegram /backup command, then sends a Telegram message with the b

Telegram Trigger, n8n, GitHub +1
Slack & Telegram

GitHub SQL Docs → Telegram (PostgreSQL). Uses github, httpRequest, telegram. Scheduled trigger; 12 nodes.

GitHub, HTTP Request, Telegram
Slack & Telegram

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

Telegram, GitHub