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.
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
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
GitHub SQL Docs → Telegram (PostgreSQL). Uses github, httpRequest, telegram. Scheduled trigger; 12 nodes.
FetchGithubIssues. Uses stickyNote, telegram, scheduleTrigger, github. Scheduled trigger; 9 nodes.