{"id":"108a1cb0-3af1-4bda-ab2f-9bb925738f89","shortId":"zJEwP3","kind":"skill","title":"n8n-code-javascript","tagline":"Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using $input/$json/$node syntax, making HTTP requests with $helpers, working with dates using DateTime, troubleshooting Code node errors, or choosing between Code node modes.","description":"# JavaScript Code Node\n\nExpert guidance for writing JavaScript code in n8n Code nodes.\n\n---\n\n## Quick Start\n\n```javascript\n// Basic template for Code nodes\nconst items = $input.all();\n\n// Process data\nconst processed = items.map(item => ({\n  json: {\n    ...item.json,\n    processed: true,\n    timestamp: new Date().toISOString()\n  }\n}));\n\nreturn processed;\n```\n\n### Essential Rules\n\n1. **Choose \"Run Once for All Items\" mode** (recommended for most use cases)\n2. **Access data**: `$input.all()`, `$input.first()`, or `$input.item`\n3. **CRITICAL**: Must return `[{json: {...}}]` format\n4. **CRITICAL**: Webhook data is under `$json.body` (not `$json` directly)\n5. **Built-ins available**: $helpers.httpRequest(), DateTime (Luxon), $jmespath()\n\n---\n\n## Mode Selection Guide\n\nThe Code node offers two execution modes. Choose based on your use case:\n\n### Run Once for All Items (Recommended - Default)\n\n**Use this mode for:** 95% of use cases\n\n- **How it works**: Code executes **once** regardless of input count\n- **Data access**: `$input.all()` or `items` array\n- **Best for**: Aggregation, filtering, batch processing, transformations, API calls with all data\n- **Performance**: Faster for multiple items (single execution)\n\n```javascript\n// Example: Calculate total from all items\nconst allItems = $input.all();\nconst total = allItems.reduce((sum, item) => sum + (item.json.amount || 0), 0);\n\nreturn [{\n  json: {\n    total,\n    count: allItems.length,\n    average: total / allItems.length\n  }\n}];\n```\n\n**When to use:**\n- ✅ Comparing items across the dataset\n- ✅ Calculating totals, averages, or statistics\n- ✅ Sorting or ranking items\n- ✅ Deduplication\n- ✅ Building aggregated reports\n- ✅ Combining data from multiple items\n\n### Run Once for Each Item\n\n**Use this mode for:** Specialized cases only\n\n- **How it works**: Code executes **separately** for each input item\n- **Data access**: `$input.item` or `$item`\n- **Best for**: Item-specific logic, independent operations, per-item validation\n- **Performance**: Slower for large datasets (multiple executions)\n\n```javascript\n// Example: Add processing timestamp to each item\nconst item = $input.item;\n\nreturn [{\n  json: {\n    ...item.json,\n    processed: true,\n    processedAt: new Date().toISOString()\n  }\n}];\n```\n\n**When to use:**\n- ✅ Each item needs independent API call\n- ✅ Per-item validation with different error handling\n- ✅ Item-specific transformations based on item properties\n- ✅ When items must be processed separately for business logic\n\n**Decision Shortcut:**\n- **Need to look at multiple items?** → Use \"All Items\" mode\n- **Each item completely independent?** → Use \"Each Item\" mode\n- **Not sure?** → Use \"All Items\" mode (you can always loop inside)\n\n---\n\n## Data Access Patterns\n\n### Pattern 1: $input.all() - Most Common\n\n**Use when**: Processing arrays, batch operations, aggregations\n\n```javascript\n// Get all items from previous node\nconst allItems = $input.all();\n\n// Filter, map, reduce as needed\nconst valid = allItems.filter(item => item.json.status === 'active');\nconst mapped = valid.map(item => ({\n  json: {\n    id: item.json.id,\n    name: item.json.name\n  }\n}));\n\nreturn mapped;\n```\n\n### Pattern 2: $input.first() - Very Common\n\n**Use when**: Working with single objects, API responses, first-in-first-out\n\n```javascript\n// Get first item only\nconst firstItem = $input.first();\nconst data = firstItem.json;\n\nreturn [{\n  json: {\n    result: processData(data),\n    processedAt: new Date().toISOString()\n  }\n}];\n```\n\n### Pattern 3: $input.item - Each Item Mode Only\n\n**Use when**: In \"Run Once for Each Item\" mode\n\n```javascript\n// Current item in loop (Each Item mode only)\nconst currentItem = $input.item;\n\nreturn [{\n  json: {\n    ...currentItem.json,\n    itemProcessed: true\n  }\n}];\n```\n\n### Pattern 4: $node - Reference Other Nodes\n\n**Use when**: Need data from specific nodes in workflow\n\n```javascript\n// Get output from specific node\nconst webhookData = $node[\"Webhook\"].json;\nconst httpData = $node[\"HTTP Request\"].json;\n\nreturn [{\n  json: {\n    combined: {\n      webhook: webhookData,\n      api: httpData\n    }\n  }\n}];\n```\n\n**See**: DATA_ACCESS.md for comprehensive guide\n\n---\n\n## Critical: Webhook Data Structure\n\n**MOST COMMON MISTAKE**: Webhook data is nested under `.body`\n\n```javascript\n// ❌ WRONG - Will return undefined\nconst name = $json.name;\nconst email = $json.email;\n\n// ✅ CORRECT - Webhook data is under .body\nconst name = $json.body.name;\nconst email = $json.body.email;\n\n// Or with $input\nconst webhookData = $input.first().json.body;\nconst name = webhookData.name;\n```\n\n**Why**: Webhook node wraps all request data under `body` property. This includes POST data, query parameters, and JSON payloads.\n\n**See**: DATA_ACCESS.md for full webhook structure details\n\n---\n\n## Return Format Requirements\n\n**CRITICAL RULE**: Always return array of objects with `json` property\n\n### Correct Return Formats\n\n```javascript\n// ✅ Single result\nreturn [{\n  json: {\n    field1: value1,\n    field2: value2\n  }\n}];\n\n// ✅ Multiple results\nreturn [\n  {json: {id: 1, data: 'first'}},\n  {json: {id: 2, data: 'second'}}\n];\n\n// ✅ Transformed array\nconst transformed = $input.all()\n  .filter(item => item.json.valid)\n  .map(item => ({\n    json: {\n      id: item.json.id,\n      processed: true\n    }\n  }));\nreturn transformed;\n\n// ✅ Empty result (when no data to return)\nreturn [];\n\n// ✅ Conditional return\nif (shouldProcess) {\n  return [{json: processedData}];\n} else {\n  return [];\n}\n```\n\n### Incorrect Return Formats\n\n```javascript\n// ❌ WRONG: Object without array wrapper\nreturn {\n  json: {field: value}\n};\n\n// ❌ WRONG: Array without json wrapper\nreturn [{field: value}];\n\n// ❌ WRONG: Plain string\nreturn \"processed\";\n\n// ❌ WRONG: Raw data without mapping\nreturn $input.all();  // Missing .map()\n\n// ❌ WRONG: Incomplete structure\nreturn [{data: value}];  // Should be {json: value}\n```\n\n**Why it matters**: Next nodes expect array format. Incorrect format causes workflow execution to fail.\n\n**See**: ERROR_PATTERNS.md #3 for detailed error solutions\n\n---\n\n## Common Patterns Overview\n\nBased on production workflows, here are the most useful patterns:\n\n### 1. Multi-Source Data Aggregation\nCombine data from multiple APIs, webhooks, or nodes\n\n```javascript\nconst allItems = $input.all();\nconst results = [];\n\nfor (const item of allItems) {\n  const sourceName = item.json.name || 'Unknown';\n  // Parse source-specific structure\n  if (sourceName === 'API1' && item.json.data) {\n    results.push({\n      json: {\n        title: item.json.data.title,\n        source: 'API1'\n      }\n    });\n  }\n}\n\nreturn results;\n```\n\n### 2. Filtering with Regex\nExtract patterns, mentions, or keywords from text\n\n```javascript\nconst pattern = /\\b([A-Z]{2,5})\\b/g;\nconst matches = {};\n\nfor (const item of $input.all()) {\n  const text = item.json.text;\n  const found = text.match(pattern);\n\n  if (found) {\n    found.forEach(match => {\n      matches[match] = (matches[match] || 0) + 1;\n    });\n  }\n}\n\nreturn [{json: {matches}}];\n```\n\n### 3. Data Transformation & Enrichment\nMap fields, normalize formats, add computed fields\n\n```javascript\nconst items = $input.all();\n\nreturn items.map(item => {\n  const data = item.json;\n  const nameParts = data.name.split(' ');\n\n  return {\n    json: {\n      first_name: nameParts[0],\n      last_name: nameParts.slice(1).join(' '),\n      email: data.email,\n      created_at: new Date().toISOString()\n    }\n  };\n});\n```\n\n### 4. Top N Filtering & Ranking\nSort and limit results\n\n```javascript\nconst items = $input.all();\n\nconst topItems = items\n  .sort((a, b) => (b.json.score || 0) - (a.json.score || 0))\n  .slice(0, 10);\n\nreturn topItems.map(item => ({json: item.json}));\n```\n\n### 5. Aggregation & Reporting\nSum, count, group data\n\n```javascript\nconst items = $input.all();\nconst total = items.reduce((sum, item) => sum + (item.json.amount || 0), 0);\n\nreturn [{\n  json: {\n    total,\n    count: items.length,\n    average: total / items.length,\n    timestamp: new Date().toISOString()\n  }\n}];\n```\n\n**See**: COMMON_PATTERNS.md for 10 detailed production patterns\n\n---\n\n## Error Prevention - Top 5 Mistakes\n\n### #1: Empty Code or Missing Return (Most Common)\n\n```javascript\n// ❌ WRONG: No return statement\nconst items = $input.all();\n// ... processing code ...\n// Forgot to return!\n\n// ✅ CORRECT: Always return data\nconst items = $input.all();\n// ... processing ...\nreturn items.map(item => ({json: item.json}));\n```\n\n### #2: Expression Syntax Confusion\n\n```javascript\n// ❌ WRONG: Using n8n expression syntax in code\nconst value = \"{{ $json.field }}\";\n\n// ✅ CORRECT: Use JavaScript template literals\nconst value = `${$json.field}`;\n\n// ✅ CORRECT: Direct access\nconst value = $input.first().json.field;\n```\n\n### #3: Incorrect Return Wrapper\n\n```javascript\n// ❌ WRONG: Returning object instead of array\nreturn {json: {result: 'success'}};\n\n// ✅ CORRECT: Array wrapper required\nreturn [{json: {result: 'success'}}];\n```\n\n### #4: Missing Null Checks\n\n```javascript\n// ❌ WRONG: Crashes if field doesn't exist\nconst value = item.json.user.email;\n\n// ✅ CORRECT: Safe access with optional chaining\nconst value = item.json?.user?.email || 'no-email@example.com';\n\n// ✅ CORRECT: Guard clause\nif (!item.json.user) {\n  return [];\n}\nconst value = item.json.user.email;\n```\n\n### #5: Webhook Body Nesting\n\n```javascript\n// ❌ WRONG: Direct access to webhook data\nconst email = $json.email;\n\n// ✅ CORRECT: Webhook data under .body\nconst email = $json.body.email;\n```\n\n**See**: ERROR_PATTERNS.md for comprehensive error guide\n\n---\n\n## Built-in Functions & Helpers\n\n### $helpers.httpRequest()\n\nMake HTTP requests from within code:\n\n```javascript\nconst response = await $helpers.httpRequest({\n  method: 'GET',\n  url: 'https://api.example.com/data',\n  headers: {\n    'Authorization': 'Bearer token',\n    'Content-Type': 'application/json'\n  }\n});\n\nreturn [{json: {data: response}}];\n```\n\n### DateTime (Luxon)\n\nDate and time operations:\n\n```javascript\n// Current time\nconst now = DateTime.now();\n\n// Format dates\nconst formatted = now.toFormat('yyyy-MM-dd');\nconst iso = now.toISO();\n\n// Date arithmetic\nconst tomorrow = now.plus({days: 1});\nconst lastWeek = now.minus({weeks: 1});\n\nreturn [{\n  json: {\n    today: formatted,\n    tomorrow: tomorrow.toFormat('yyyy-MM-dd')\n  }\n}];\n```\n\n### $jmespath()\n\nQuery JSON structures:\n\n```javascript\nconst data = $input.first().json;\n\n// Filter array\nconst adults = $jmespath(data, 'users[?age >= `18`]');\n\n// Extract fields\nconst names = $jmespath(data, 'users[*].name');\n\nreturn [{json: {adults, names}}];\n```\n\n**See**: BUILTIN_FUNCTIONS.md for complete reference\n\n---\n\n## Best Practices\n\n### 1. Always Validate Input Data\n\n```javascript\nconst items = $input.all();\n\n// Check if data exists\nif (!items || items.length === 0) {\n  return [];\n}\n\n// Validate structure\nif (!items[0].json) {\n  return [{json: {error: 'Invalid input format'}}];\n}\n\n// Continue processing...\n```\n\n### 2. Use Try-Catch for Error Handling\n\n```javascript\ntry {\n  const response = await $helpers.httpRequest({\n    url: 'https://api.example.com/data'\n  });\n\n  return [{json: {success: true, data: response}}];\n} catch (error) {\n  return [{\n    json: {\n      success: false,\n      error: error.message\n    }\n  }];\n}\n```\n\n### 3. Prefer Array Methods Over Loops\n\n```javascript\n// ✅ GOOD: Functional approach\nconst processed = $input.all()\n  .filter(item => item.json.valid)\n  .map(item => ({json: {id: item.json.id}}));\n\n// ❌ SLOWER: Manual loop\nconst processed = [];\nfor (const item of $input.all()) {\n  if (item.json.valid) {\n    processed.push({json: {id: item.json.id}});\n  }\n}\n```\n\n### 4. Filter Early, Process Late\n\n```javascript\n// ✅ GOOD: Filter first to reduce processing\nconst processed = $input.all()\n  .filter(item => item.json.status === 'active')  // Reduce dataset first\n  .map(item => expensiveTransformation(item));  // Then transform\n\n// ❌ WASTEFUL: Transform everything, then filter\nconst processed = $input.all()\n  .map(item => expensiveTransformation(item))  // Wastes CPU\n  .filter(item => item.json.status === 'active');\n```\n\n### 5. Use Descriptive Variable Names\n\n```javascript\n// ✅ GOOD: Clear intent\nconst activeUsers = $input.all().filter(item => item.json.active);\nconst totalRevenue = activeUsers.reduce((sum, user) => sum + user.json.revenue, 0);\n\n// ❌ BAD: Unclear purpose\nconst a = $input.all().filter(item => item.json.active);\nconst t = a.reduce((s, u) => s + u.json.revenue, 0);\n```\n\n### 6. Debug with console.log()\n\n```javascript\n// Debug statements appear in browser console\nconst items = $input.all();\nconsole.log(`Processing ${items.length} items`);\n\nfor (const item of items) {\n  console.log('Item data:', item.json);\n  // Process...\n}\n\nreturn result;\n```\n\n---\n\n## When to Use Code Node\n\nUse Code node when:\n- ✅ Complex transformations requiring multiple steps\n- ✅ Custom calculations or business logic\n- ✅ Recursive operations\n- ✅ API response parsing with complex structure\n- ✅ Multi-step conditionals\n- ✅ Data aggregation across items\n\nConsider other nodes when:\n- ❌ Simple field mapping → Use **Set** node\n- ❌ Basic filtering → Use **Filter** node\n- ❌ Simple conditionals → Use **IF** or **Switch** node\n- ❌ HTTP requests only → Use **HTTP Request** node\n\n**Code node excels at**: Complex logic that would require chaining many simple nodes\n\n---\n\n## Integration with Other Skills\n\n### Works With:\n\n**n8n Expression Syntax**:\n- Expressions use `{{ }}` syntax in other nodes\n- Code nodes use JavaScript directly (no `{{ }}`)\n- When to use expressions vs code\n\n**n8n MCP Tools Expert**:\n- How to find Code node: `search_nodes({query: \"code\"})`\n- Get configuration help: `get_node_essentials(\"nodes-base.code\")`\n- Validate code: `validate_node_operation()`\n\n**n8n Node Configuration**:\n- Mode selection (All Items vs Each Item)\n- Language selection (JavaScript vs Python)\n- Understanding property dependencies\n\n**n8n Workflow Patterns**:\n- Code nodes in transformation step\n- Webhook → Code → API pattern\n- Error handling in workflows\n\n**n8n Validation Expert**:\n- Validate Code node configuration\n- Handle validation errors\n- Auto-fix common issues\n\n---\n\n## Quick Reference Checklist\n\nBefore deploying Code nodes, verify:\n\n- [ ] **Code is not empty** - Must have meaningful logic\n- [ ] **Return statement exists** - Must return array of objects\n- [ ] **Proper return format** - Each item: `{json: {...}}`\n- [ ] **Data access correct** - Using `$input.all()`, `$input.first()`, or `$input.item`\n- [ ] **No n8n expressions** - Use JavaScript template literals: `` `${value}` ``\n- [ ] **Error handling** - Guard clauses for null/undefined inputs\n- [ ] **Webhook data** - Access via `.body` if from webhook\n- [ ] **Mode selection** - \"All Items\" for most cases\n- [ ] **Performance** - Prefer map/filter over manual loops\n- [ ] **Output consistent** - All code paths return same structure\n\n---\n\n## Additional Resources\n\n### Related Files\n- DATA_ACCESS.md - Comprehensive data access patterns\n- COMMON_PATTERNS.md - 10 production-tested patterns\n- ERROR_PATTERNS.md - Top 5 errors and solutions\n- BUILTIN_FUNCTIONS.md - Complete built-in reference\n\n### n8n Documentation\n- Code Node Guide: https://docs.n8n.io/code/code-node/\n- Built-in Methods: https://docs.n8n.io/code-examples/methods-variables-reference/\n- Luxon Documentation: https://moment.github.io/luxon/\n\n---\n\n**Ready to write JavaScript in n8n Code nodes!** Start with simple transformations, use the error patterns guide to avoid common mistakes, and reference the pattern library for production-ready examples.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["n8n","code","javascript","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-n8n-code-javascript","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/n8n-code-javascript","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34666 github stars · SKILL.md body (15,801 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T06:51:36.629Z","embedding":null,"createdAt":"2026-04-18T21:41:10.581Z","updatedAt":"2026-04-23T06:51:36.629Z","lastSeenAt":"2026-04-23T06:51:36.629Z","tsv":"'/code-examples/methods-variables-reference/':1764 '/code/code-node/':1757 '/data''':1295 '/data'',':1150 '/luxon/':1769 '0':213,214,855,889,922,924,926,951,952,1262,1268,1415,1432 '1':85,384,644,766,856,893,977,1193,1198,1246 '10':927,968,1733 '18':1226 '2':98,428,649,812,830,1011,1278 '3':105,466,748,860,1041,1310 '4':111,499,902,1064,1347 '5':121,831,933,975,1100,1393,1740 '6':1433 '95':157 'a-z':827 'a.json.score':923 'a.reduce':1427 'access':99,172,272,381,1036,1081,1107,1672,1696,1730 'across':228,1496 'activ':415,1365,1392 'activeus':1403 'activeusers.reduce':1410 'add':297,868 'addit':1723 'adult':1221,1237 'age':1225 'aggreg':179,242,394,771,934,1495 'allitem':204,403,782,790 'allitems.filter':412 'allitems.length':219,222 'allitems.reduce':208 'alway':377,619,999,1247 'api':184,322,438,535,776,1484,1620 'api.example.com':1149,1294 'api.example.com/data''':1293 'api.example.com/data'',':1148 'api1':802,809 'appear':1440 'application/json':1158 'approach':1319 'arithmet':1188 'array':176,391,621,653,693,700,737,1051,1057,1219,1312,1662 'ask':1834 'author':1152 'auto':1637 'auto-fix':1636 'avail':125 'averag':220,233,958 'avoid':1788 'await':1143,1290 'b':826,920 'b.json.score':921 'b/g':832 'bad':1416 'base':141,336,756 'basic':59,1508 'batch':181,392 'bearer':1153 'best':177,276,1244 'bodi':554,571,596,1102,1118,1698 'boundari':1842 'browser':1442 'build':241 'built':123,1129,1747,1759 'built-in':122,1128,1746,1758 'builtin_functions.md':1240,1744 'busi':347,1480 'calcul':198,231,1478 'call':185,323 'case':97,145,160,259,1708 'catch':1282,1302 'caus':741 'chain':1084,1536 'check':1067,1255 'checklist':1643 'choos':38,86,140 'clarif':1836 'claus':1093,1690 'clear':1400,1809 'code':3,7,10,34,40,44,51,54,62,134,164,264,979,994,1022,1139,1466,1469,1527,1555,1566,1574,1579,1588,1613,1619,1630,1646,1649,1718,1752,1776 'combin':244,532,772 'common':387,431,547,753,984,1639,1789 'common_patterns.md':966,1732 'compar':226 'complet':363,1242,1745 'complex':1472,1488,1531 'comprehens':540,1125,1728 'comput':869 'condit':677,1493,1514 'configur':1581,1594,1632 'confus':1014 'consid':1498 'consist':1716 'consol':1443 'console.log':1436,1447,1456 'const':64,69,203,206,303,402,410,416,450,453,490,519,524,560,563,572,575,581,585,654,781,784,787,791,824,833,836,840,843,872,878,881,912,915,941,944,990,1002,1023,1031,1037,1076,1085,1097,1111,1119,1141,1172,1177,1184,1189,1194,1214,1220,1229,1252,1288,1320,1334,1337,1359,1380,1402,1408,1419,1425,1444,1452 'content':1156 'content-typ':1155 'continu':1276 'correct':566,627,998,1026,1034,1056,1079,1091,1114,1673 'count':170,218,937,956 'cpu':1388 'crash':1070 'creat':897 'criteria':1845 'critic':106,112,542,617 'current':482,1170 'currentitem':491 'currentitem.json':495 'custom':1477 'data':68,100,114,171,188,245,271,380,454,460,507,544,550,568,594,601,645,650,673,714,725,770,773,861,879,939,1001,1110,1116,1161,1215,1223,1232,1250,1257,1300,1458,1494,1671,1695,1729 'data.email':896 'data.name.split':883 'data_access.md':538,608,1727 'dataset':230,292,1367 'date':30,79,313,463,900,963,1165,1176,1187 'datetim':32,127,1163 'datetime.now':1174 'day':1192 'dd':1183,1208 'debug':1434,1438 'decis':349 'dedupl':240 'default':152 'depend':1609 'deploy':1645 'describ':1813 'descript':1395 'detail':613,750,969 'differ':329 'direct':120,1035,1106,1559 'docs.n8n.io':1756,1763 'docs.n8n.io/code-examples/methods-variables-reference/':1762 'docs.n8n.io/code/code-node/':1755 'document':1751,1766 'doesn':1073 'earli':1349 'els':684 'email':564,576,895,1089,1112,1120 'empti':669,978,1652 'enrich':863 'environ':1825 'environment-specif':1824 'error':36,330,751,972,1126,1272,1284,1303,1308,1622,1635,1687,1741,1784 'error.message':1309 'error_patterns.md':747,1123,1738 'essenti':83,1585 'everyth':1377 'exampl':197,296,1800 'excel':1529 'execut':138,165,195,265,294,743 'exist':1075,1258,1659 'expect':736 'expensivetransform':1371,1385 'expert':46,1570,1628,1830 'express':1012,1019,1547,1549,1564,1681 'extract':816,1227 'fail':745 'fals':1307 'faster':190 'field':697,705,865,870,1072,1228,1503 'field1':635 'field2':637 'file':1726 'filter':180,405,657,813,905,1218,1323,1348,1354,1362,1379,1389,1405,1422,1509,1511 'find':1573 'first':441,443,447,646,886,1355,1368 'first-in-first-out':440 'firstitem':451 'firstitem.json':455 'fix':1638 'forgot':995 'format':110,615,629,688,738,740,867,1175,1178,1202,1275,1667 'found':844,848 'found.foreach':849 'full':610 'function':1131,1318 'get':396,446,514,1146,1580,1583 'good':1317,1353,1399 'group':938 'guard':1092,1689 'guid':132,541,1127,1754,1786 'guidanc':47 'handl':331,1285,1623,1633,1688 'header':1151 'help':1582 'helper':27,1132 'helpers.httprequest':126,1133,1144,1291 'http':24,527,1135,1520,1524 'httpdata':525,536 'id':421,643,648,663,1329,1345 'in':124 'includ':599 'incomplet':722 'incorrect':686,739,1042 'independ':282,321,364 'input':19,169,269,580,1249,1274,1693,1839 'input.all':66,101,173,205,385,404,656,718,783,839,874,914,943,992,1004,1254,1322,1340,1361,1382,1404,1421,1446,1675 'input.first':102,429,452,583,1039,1216,1676 'input.item':104,273,305,467,492,1678 'insid':379 'instead':1049 'integr':1540 'intent':1401 'invalid':1273 'iso':1185 'issu':1640 'item':65,72,91,150,175,193,202,210,227,239,248,253,270,275,279,286,302,304,319,326,333,338,341,356,359,362,367,373,398,413,419,448,469,479,483,487,658,661,788,837,873,877,913,917,930,942,948,991,1003,1008,1253,1260,1267,1324,1327,1338,1363,1370,1372,1384,1386,1390,1406,1423,1445,1450,1453,1455,1457,1497,1598,1601,1669,1705 'item-specif':278,332 'item.json':74,308,880,932,1010,1087,1459 'item.json.active':1407,1424 'item.json.amount':212,950 'item.json.data':803 'item.json.data.title':807 'item.json.id':422,664,1330,1346 'item.json.name':424,793 'item.json.status':414,1364,1391 'item.json.text':842 'item.json.user':1095 'item.json.user.email':1078,1099 'item.json.valid':659,1325,1342 'itemprocess':496 'items.length':957,960,1261,1449 'items.map':71,876,1007 'items.reduce':946 'javascript':4,6,15,43,50,58,196,295,395,445,481,513,555,630,689,780,823,871,911,940,985,1015,1028,1045,1068,1104,1140,1169,1213,1251,1286,1316,1352,1398,1437,1558,1604,1683,1773 'jmespath':129,1209,1222,1231 'join':894 'json':20,73,109,119,216,307,420,457,494,523,529,531,605,625,634,642,647,662,682,696,702,729,805,858,885,931,954,1009,1053,1061,1160,1200,1211,1217,1236,1269,1271,1297,1305,1328,1344,1670 'json.body':117,584 'json.body.email':577,1121 'json.body.name':574 'json.email':565,1113 'json.field':1025,1033,1040 'json.name':562 'keyword':820 'languag':1602 'larg':291 'last':890 'lastweek':1195 'late':1351 'librari':1795 'limit':909,1801 'liter':1030,1685 'logic':281,348,1481,1532,1656 'look':353 'loop':378,485,1315,1333,1714 'luxon':128,1164,1765 'make':23,1134 'mani':1537 'manual':1332,1713 'map':406,417,426,660,716,720,864,1326,1369,1383,1504 'map/filter':1711 'match':834,850,851,852,853,854,859,1810 'matter':733 'mcp':1568 'meaning':1655 'mention':818 'method':1145,1313,1761 'miss':719,981,1065,1847 'mistak':548,976,1790 'mm':1182,1207 'mode':42,92,130,139,155,256,360,368,374,470,480,488,1595,1702 'moment.github.io':1768 'moment.github.io/luxon/':1767 'multi':768,1491 'multi-sourc':767 'multi-step':1490 'multipl':192,247,293,355,639,775,1475 'must':107,342,1653,1660 'n':904 'n8n':2,9,17,53,1018,1546,1567,1592,1610,1626,1680,1750,1775 'n8n-code-javascript':1 'name':423,561,573,586,887,891,1230,1234,1238,1397 'namepart':882,888 'nameparts.slice':892 'need':320,351,409,506 'nest':552,1103 'new':78,312,462,899,962 'next':734 'no-email@example.com':1090 'node':11,21,35,41,45,55,63,135,401,500,503,510,518,521,526,590,735,779,1467,1470,1500,1507,1512,1519,1526,1528,1539,1554,1556,1575,1577,1584,1590,1593,1614,1631,1647,1753,1777 'nodes-base.code':1586 'normal':866 'now.minus':1196 'now.plus':1191 'now.toformat':1179 'now.toiso':1186 'null':1066 'null/undefined':1692 'object':437,623,691,1048,1664 'offer':136 'oper':283,393,1168,1483,1591 'option':1083 'output':515,1715,1819 'overview':755 'paramet':603 'pars':795,1486 'path':1719 'pattern':382,383,427,465,498,754,765,817,825,846,971,1612,1621,1731,1737,1785,1794 'payload':606 'per':285,325 'per-item':284,324 'perform':189,288,1709 'permiss':1840 'plain':708 'post':600 'practic':1245 'prefer':1311,1710 'prevent':973 'previous':400 'process':67,70,75,82,182,298,309,344,390,665,711,993,1005,1277,1321,1335,1350,1358,1360,1381,1448,1460 'processdata':459 'processed.push':1343 'processedat':311,461 'processeddata':683 'product':758,970,1735,1798 'production-readi':1797 'production-test':1734 'proper':1665 'properti':339,597,626,1608 'purpos':1418 'python':1606 'queri':602,1210,1578 'quick':56,1641 'rank':238,906 'raw':713 'readi':1770,1799 'recommend':93,151 'recurs':1482 'reduc':407,1357,1366 'refer':501,1243,1642,1749,1792 'regardless':167 'regex':815 'relat':1725 'report':243,935 'request':25,528,593,1136,1521,1525 'requir':616,1059,1474,1535,1838 'resourc':1724 'respons':439,1142,1162,1289,1301,1485 'result':458,632,640,670,785,811,910,1054,1062,1462 'results.push':804 'return':81,108,215,306,425,456,493,530,558,614,620,628,633,641,667,675,676,678,681,685,687,695,704,710,717,724,810,857,875,884,928,953,982,988,997,1000,1006,1043,1047,1052,1060,1096,1159,1199,1235,1263,1270,1296,1304,1461,1657,1661,1666,1720 'review':1831 'rule':84,618 'run':87,146,249,475 'safe':1080 'safeti':1841 'scope':1812 'search':1576 'second':651 'see':537,607,746,965,1122,1239 'select':131,1596,1603,1703 'separ':266,345 'set':1506 'shortcut':350 'shouldprocess':680 'simpl':1502,1513,1538,1780 'singl':194,436,631 'skill':1543,1804 'skill-n8n-code-javascript' 'slice':925 'slower':289,1331 'solut':752,1743 'sort':236,907,918 'sourc':769,797,808 'source-sickn33' 'source-specif':796 'sourcenam':792,801 'special':258 'specif':280,334,509,517,798,1826 'start':57,1778 'statement':989,1439,1658 'statist':235 'step':1476,1492,1617 'stop':1832 'string':709 'structur':545,612,723,799,1212,1265,1489,1722 'substitut':1822 'success':1055,1063,1298,1306,1844 'sum':209,211,936,947,949,1411,1413 'sure':370 'switch':1518 'syntax':22,1013,1020,1548,1551 'task':1808 'templat':60,1029,1684 'test':1736,1828 'text':822,841 'text.match':845 'time':1167,1171 'timestamp':77,299,961 'titl':806 'today':1201 'toisostr':80,314,464,901,964 'token':1154 'tomorrow':1190,1203 'tomorrow.toformat':1204 'tool':1569 'top':903,974,1739 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'topitem':916 'topitems.map':929 'total':199,207,217,221,232,945,955,959 'totalrevenu':1409 'transform':183,335,652,655,668,862,1374,1376,1473,1616,1781 'treat':1817 'tri':1281,1287 'troubleshoot':33 'true':76,310,497,666,1299 'try-catch':1280 'two':137 'type':1157 'u':1429 'u.json.revenue':1431 'unclear':1417 'undefin':559 'understand':1607 'unknown':794 'url':1147,1292 'use':12,18,31,96,144,153,159,225,254,317,357,365,371,388,432,472,504,764,1017,1027,1279,1394,1465,1468,1505,1510,1515,1523,1550,1557,1563,1674,1682,1782,1802 'user':1088,1224,1233,1412 'user.json.revenue':1414 'valid':287,327,411,1248,1264,1587,1589,1627,1629,1634,1827 'valid.map':418 'valu':698,706,726,730,1024,1032,1038,1077,1086,1098,1686 'value1':636 'value2':638 'variabl':1396 'verifi':1648 'via':1697 'vs':1565,1599,1605 'wast':1375,1387 'webhook':113,522,533,543,549,567,589,611,777,1101,1109,1115,1618,1694,1701 'webhookdata':520,534,582 'webhookdata.name':587 'week':1197 'within':1138 'without':692,701,715 'work':28,163,263,434,1544 'workflow':512,742,759,1611,1625 'would':1534 'wrap':591 'wrapper':694,703,1044,1058 'write':5,14,49,1772 'wrong':556,690,699,707,712,721,986,1016,1046,1069,1105 'yyyi':1181,1206 'yyyy-mm-dd':1180,1205 'z':829","prices":[{"id":"c9da0af9-2a3a-492b-a1a1-8a083136919d","listingId":"108a1cb0-3af1-4bda-ab2f-9bb925738f89","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:41:10.581Z"}],"sources":[{"listingId":"108a1cb0-3af1-4bda-ab2f-9bb925738f89","source":"github","sourceId":"sickn33/antigravity-awesome-skills/n8n-code-javascript","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/n8n-code-javascript","isPrimary":false,"firstSeenAt":"2026-04-18T21:41:10.581Z","lastSeenAt":"2026-04-23T06:51:36.629Z"}],"details":{"listingId":"108a1cb0-3af1-4bda-ab2f-9bb925738f89","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"n8n-code-javascript","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34666,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"bf614a0f9ea9f6b6e24037b8bba643bd6ac1b1bf","skill_md_path":"skills/n8n-code-javascript/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/n8n-code-javascript"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"n8n-code-javascript","description":"Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using $input/$json/$node syntax, making HTTP requests with $helpers, working with dates using DateTime, troubleshooting Code node errors, or choosing between Code node modes."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/n8n-code-javascript"},"updatedAt":"2026-04-23T06:51:36.629Z"}}