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 →
{
"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.
cloudCliApigithubApitelegramApi
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
A robust workflow to back up and synchronize your n8n workflows to a GitHub repository, with intelligent change detection and support for file renames.
FetchGithubIssues. Uses stickyNote, telegram, scheduleTrigger, github. Scheduled trigger; 9 nodes.
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
Solo founders and spreadsheet gremlins who track everything in Notion and want crisp Telegram pings without opening a single page.
. Uses googleSheets, telegram, httpRequest, wise. Scheduled trigger; 36 nodes.