This workflow follows the Agent → Execute Workflow Trigger recipe pattern — see all workflows that pair these two integrations.
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 →
{
"name": "Dynamic Specialist - Lume's Everywhere (FIXED - Agent mode)",
"nodes": [
{
"parameters": {
"workflowInputs": {
"values": [
{
"name": "skill_file"
},
{
"name": "task_description"
},
{
"name": "repo_owner"
},
{
"name": "repo_name"
},
{
"name": "branch"
},
{
"name": "telegram_chat_id"
}
]
}
},
"id": "86513c65-3582-4bb8-ac69-f23dbe3e5243",
"name": "Execute Workflow Trigger",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"typeVersion": 1.1,
"position": [
-272,
560
]
},
{
"parameters": {
"jsCode": "const input = $input.first().json;\nconst toStr = (v, f) => { if (v === undefined || v === null) return f; return String(v).trim(); };\n\nlet rawFile = toStr(input.skill_file || input.skillfile || input.skill_file_path, '');\nlet rawTask = toStr(input.task_description || input.taskdescription || input.chatInput, 'Audit teknis');\nlet rawChatId = toStr(input.telegram_chat_id || input.telegramchatid || input.chat_id, '7218843690');\n\nconst lowerFile = rawFile.toLowerCase();\nlet targetFile = '';\nif (lowerFile.includes('security')) targetFile = 'Securityskill.md';\nelse if (lowerFile.includes('devops')) targetFile = 'devopsskill.md';\nelse if (lowerFile.includes('qa') || lowerFile.includes('test')) targetFile = 'qaskill.md';\nelse if (lowerFile.includes('architect') || lowerFile.includes('software')) targetFile = 'softwarearchitectskill.md';\nelse targetFile = 'softwarearchitectskill.md';\n\nreturn [{\n json: {\n skillfile: targetFile,\n skillfilepath: 'docs/aiskills/' + targetFile,\n taskdescription: rawTask,\n repoowner: toStr(input.repo_owner || input.repoowner, 'hamdallah24'),\n reponame: toStr(input.repo_name || input.reponame, 'pos-app'),\n branch: toStr(input.branch, 'Staging'),\n telegramchatid: rawChatId,\n chat_id: rawChatId\n }\n}];"
},
"id": "1460dc4c-fceb-4506-933f-56f29a9dd6e0",
"name": "Sanitasi & Validasi Input",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
16,
560
]
},
{
"parameters": {
"method": "HEAD",
"url": "=https://api.github.com/repos/{{ $json.repoowner }}/{{ $json.reponame }}/contents/{{ $json.skillfilepath }}?ref={{ $json.branch }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/vnd.github.v3.raw"
}
]
},
"options": {}
},
"id": "83cb3a51-52c1-4085-82a4-405af6c71e7e",
"name": "Cek Skill File (HEAD)",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
256,
560
],
"retryOnFail": false,
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
},
"onError": "continueErrorOutput"
},
{
"parameters": {
"url": "=https://api.github.com/repos/{{ $json.repoowner }}/{{ $json.reponame }}/contents/{{ $json.skillfilepath }}?ref={{ $json.branch }}",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/vnd.github.v3.raw"
}
]
},
"options": {}
},
"id": "fa396ed1-b1fd-4dec-9ce0-e3d806a1ad23",
"name": "Fetch Skill (SOP) dari GitHub",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
464,
560
],
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const input = $input.first().json;\nconst skillContent = input.body || input.data || input.json || '';\nconst taskDescription = $('Sanitasi & Validasi Input').first().json.taskdescription;\n\nconst systemMessage = `Anda adalah Specialist Agent untuk POS App Lume's Everywhere.\\n\\n=== SKILL (SOP) ===\\n${skillContent}\\n\\n=== TUGAS ===\\n${taskDescription}\\n\\n=== TOOLS TERSEDIA ===\\n1. github_read_file - baca file GitHub\\n2. github_list_directory - lihat folder\\n\\n=== ATURAN ===\\n- Respons singkat, padat, jelas\\n- Bahasa Indonesia\\n- Analisis kode lalu rekomendasikan perubahan spesifik\\n- Jika tool gagal 2x, laporkan error ke user`;\n\nreturn [{ json: { systemMessage, chatInput: taskDescription, telegram_chat_id: input.telegramchatid || '7218843690' } }];"
},
"id": "e1eb89db-7e92-4e52-b963-87c58f1a739b",
"name": "Bangun System Message",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
672,
560
]
},
{
"parameters": {
"toolDescription": "=Gunakan untuk melihat daftar file/folder di repo. Input 'path' bisa kosong (root) atau nama folder spesifik.",
"url": "=https://api.github.com/repos/hamdallah24/pos-app/contents/{{ $fromAI('path') }}?ref=Staging",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/vnd.github.v3+json"
}
]
},
"options": {}
},
"id": "dcaab040-9de8-4f23-bf51-18f1a255da04",
"name": "github_list_directory",
"type": "n8n-nodes-base.httpRequestTool",
"typeVersion": 4.2,
"position": [
1088,
720
],
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"toolDescription": "=Gunakan untuk membaca isi file spesifik. Input 'path' harus path lengkap (contoh: artifacts/pos-app/src/App.tsx).",
"url": "=https://api.github.com/repos/hamdallah24/pos-app/contents/{{ $fromAI('path') }}?ref=Staging",
"authentication": "genericCredentialType",
"genericAuthType": "httpBearerAuth",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/vnd.github.v3.raw"
}
]
},
"options": {}
},
"id": "5d43d881-1752-4bfb-9d59-ff052496170f",
"name": "github_read_file",
"type": "n8n-nodes-base.httpRequestTool",
"typeVersion": 4.2,
"position": [
1248,
720
],
"credentials": {
"httpBearerAuth": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsCode": "const input = $input.first().json;\nconst errorMessage = input.error || input.message || input.errorDescription || 'Unknown error';\nconst statusCode = input.statusCode || input.code || 500;\nlet userMessage = `\u274c Error saat menjalankan sub-agent:\\n\ud83d\udccc ${errorMessage}\\n\ud83d\udcca Status: ${statusCode}\\n`;\nif (statusCode === 404) userMessage += `\ud83d\udca1 File skill tidak ditemukan. Cek docs/aiskills/ di GitHub.`;\nelse if (statusCode === 401) userMessage += `\ud83d\udca1 Token GitHub invalid/expired.`;\nelse if (statusCode === 403) userMessage += `\ud83d\udca1 Rate limit GitHub. Tunggu beberapa menit.`;\nelse userMessage += `\ud83d\udca1 Periksa input dan coba lagi.`;\nreturn [{ json: { error: true, message: userMessage, raw: input } }];"
},
"id": "bfd8dd4b-08ff-43c0-8f8f-c374dbd7ba89",
"name": "Error Handler",
"type": "n8n-nodes-base.code",
"typeVersion": 2,
"position": [
464,
720
]
},
{
"parameters": {
"chatId": "={{ $json.telegram_chat_id || $json.chat_id || '7218843690' }}",
"text": "={{ $json.output || $json.message || $json.text || JSON.stringify($json).substring(0, 3000) }}",
"additionalFields": {}
},
"id": "b43fbf26-7e8e-4188-9277-32541092983d",
"name": "Notify via Telegram",
"type": "n8n-nodes-base.telegram",
"typeVersion": 1.2,
"position": [
1088,
560
],
"credentials": {
"telegramApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"model": {
"__rl": true,
"value": "deepseek-v4-pro",
"mode": "list",
"cachedResultName": "DEEPSEEK-V4-PRO"
},
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"typeVersion": 1.2,
"position": [
832,
720
],
"id": "dyn-spec-model",
"name": "DeepSeek Chat Model (Pro)",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"sessionIdType": "customKey",
"sessionKey": "dynamic-{{ $json.telegram_chat_id || 'default' }}",
"collectionName": "Memory",
"databaseName": "DynamicSpecialist",
"contextWindowLength": 6
},
"type": "@n8n/n8n-nodes-langchain.memoryMongoDbChat",
"typeVersion": 1.1,
"position": [
832,
800
],
"id": "dyn-spec-memory",
"name": "MongoDB Memory",
"credentials": {
"mongoDb": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"promptType": "define",
"text": "={{ $json.chatInput || $json.taskdescription || 'Tidak ada pesan' }}",
"hasOutputParser": true,
"options": {
"systemMessage": "={{ $json.systemMessage || 'Anda adalah specialist agent untuk POS App.' }}",
"maxIterations": 3
}
},
"type": "@n8n/n8n-nodes-langchain.agent",
"typeVersion": 3.1,
"position": [
1088,
640
],
"id": "7ad9e07a-1d49-4cc7-bf2c-1abebbacec9d",
"name": "Sub-Agent: Dynamic Specialist ",
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
}
}
],
"connections": {
"Execute Workflow Trigger": {
"main": [
[
{
"node": "Sanitasi & Validasi Input",
"type": "main",
"index": 0
}
]
]
},
"Sanitasi & Validasi Input": {
"main": [
[
{
"node": "Cek Skill File (HEAD)",
"type": "main",
"index": 0
}
]
]
},
"Cek Skill File (HEAD)": {
"main": [
[
{
"node": "Fetch Skill (SOP) dari GitHub",
"type": "main",
"index": 0
}
],
[
{
"node": "Error Handler",
"type": "main",
"index": 0
}
]
]
},
"Fetch Skill (SOP) dari GitHub": {
"main": [
[
{
"node": "Bangun System Message",
"type": "main",
"index": 0
}
]
]
},
"Bangun System Message": {
"main": [
[
{
"node": "Sub-Agent: Dynamic Specialist ",
"type": "main",
"index": 0
}
]
]
},
"github_list_directory": {
"ai_tool": [
[
{
"node": "Sub-Agent: Dynamic Specialist ",
"type": "ai_tool",
"index": 0
}
]
]
},
"github_read_file": {
"ai_tool": [
[
{
"node": "Sub-Agent: Dynamic Specialist ",
"type": "ai_tool",
"index": 0
}
]
]
},
"DeepSeek Chat Model (Pro)": {
"ai_languageModel": [
[
{
"node": "Sub-Agent: Dynamic Specialist ",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"MongoDB Memory": {
"ai_memory": [
[
{
"node": "Sub-Agent: Dynamic Specialist ",
"type": "ai_memory",
"index": 0
}
]
]
},
"Error Handler": {
"main": [
[
{
"node": "Notify via Telegram",
"type": "main",
"index": 0
}
]
]
},
"Sub-Agent: Dynamic Specialist ": {
"main": [
[
{
"node": "Notify via Telegram",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"binaryMode": "separate",
"availableInMCP": false
},
"versionId": "v2-fixed-dynamic-specialist",
"meta": {
"templateCredsSetupCompleted": true
},
"id": "RV5wbuCzWhbGS3Nf",
"tags": [
{
"name": "specialist",
"color": "#FF6B00"
},
{
"name": "production",
"color": "#00B341"
}
]
}
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.
httpBearerAuthmongoDbopenAiApitelegramApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Dynamic Specialist - Lume's Everywhere (FIXED - Agent mode). Uses executeWorkflowTrigger, httpRequest, httpRequestTool, telegram. Event-driven trigger; 12 nodes.
Source: https://github.com/hamdallah24/lumespos/blob/1802a559b5f2dc68e26e5b5fd93d25aa85fa3d1f/n8n-workflows/2-Dynamic-Specialist-fixed.json — 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.
CTO Agent - Lume's Everywhere (FIXED). Uses toolThink, httpRequestTool, lmChatOpenAi, memoryMongoDbChat. Event-driven trigger; 18 nodes.
CTO lume everywhere. Uses toolThink, httpRequestTool, lmChatOpenAi, memoryMongoDbChat. Event-driven trigger; 14 nodes.
Bitlab-Chatbot. Uses telegramTrigger, telegram, snowflake, httpRequest. Event-driven trigger; 87 nodes.
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
Template Carnaval - time instagram. Uses toolWorkflow, lmChatOpenAi, memoryBufferWindow, agent. Event-driven trigger; 56 nodes.