{"id":"268a099a-d5d2-4f74-a664-66e01f531d3d","shortId":"9AwPww","kind":"skill","title":"n8n-expression-syntax","tagline":"Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, or working with webhook data in workflows.","description":"# n8n Expression Syntax\n\nExpert guide for writing correct n8n expressions in workflows.\n\n## When to Use\n- You need to write or debug n8n expressions using `{{ ... }}` syntax.\n- The task involves `$json`, `$node`, webhook payloads, or expression-related workflow errors.\n- You want syntax-correct dynamic values inside n8n nodes and parameters.\n\n---\n\n## Expression Format\n\nAll dynamic content in n8n uses **double curly braces**:\n\n```\n{{expression}}\n```\n\n**Examples**:\n```\n✅ {{$json.email}}\n✅ {{$json.body.name}}\n✅ {{$node[\"HTTP Request\"].json.data}}\n❌ $json.email  (no braces - treated as literal text)\n❌ {$json.email}  (single braces - invalid)\n```\n\n---\n\n## Core Variables\n\n### $json - Current Node Output\n\nAccess data from the current node:\n\n```javascript\n{{$json.fieldName}}\n{{$json['field with spaces']}}\n{{$json.nested.property}}\n{{$json.items[0].name}}\n```\n\n### $node - Reference Other Nodes\n\nAccess data from any previous node:\n\n```javascript\n{{$node[\"Node Name\"].json.fieldName}}\n{{$node[\"HTTP Request\"].json.data}}\n{{$node[\"Webhook\"].json.body.email}}\n```\n\n**Important**:\n- Node names **must** be in quotes\n- Node names are **case-sensitive**\n- Must match exact node name from workflow\n\n### $now - Current Timestamp\n\nAccess current date/time:\n\n```javascript\n{{$now}}\n{{$now.toFormat('yyyy-MM-dd')}}\n{{$now.toFormat('HH:mm:ss')}}\n{{$now.plus({days: 7})}}\n```\n\n### $env - Environment Variables\n\nAccess environment variables:\n\n```javascript\n{{$env.API_KEY}}\n{{$env.DATABASE_URL}}\n```\n\n---\n\n## 🚨 CRITICAL: Webhook Data Structure\n\n**Most Common Mistake**: Webhook data is **NOT** at the root!\n\n### Webhook Node Output Structure\n\n```javascript\n{\n  \"headers\": {...},\n  \"params\": {...},\n  \"query\": {...},\n  \"body\": {           // ⚠️ USER DATA IS HERE!\n    \"name\": \"John\",\n    \"email\": \"john@example.com\",\n    \"message\": \"Hello\"\n  }\n}\n```\n\n### Correct Webhook Data Access\n\n```javascript\n❌ WRONG: {{$json.name}}\n❌ WRONG: {{$json.email}}\n\n✅ CORRECT: {{$json.body.name}}\n✅ CORRECT: {{$json.body.email}}\n✅ CORRECT: {{$json.body.message}}\n```\n\n**Why**: Webhook node wraps incoming data under `.body` property to preserve headers, params, and query parameters.\n\n---\n\n## Common Patterns\n\n### Access Nested Fields\n\n```javascript\n// Simple nesting\n{{$json.user.email}}\n\n// Array access\n{{$json.data[0].name}}\n{{$json.items[0].id}}\n\n// Bracket notation for spaces\n{{$json['field name']}}\n{{$json['user data']['first name']}}\n```\n\n### Reference Other Nodes\n\n```javascript\n// Node without spaces\n{{$node[\"Set\"].json.value}}\n\n// Node with spaces (common!)\n{{$node[\"HTTP Request\"].json.data}}\n{{$node[\"Respond to Webhook\"].json.message}}\n\n// Webhook node\n{{$node[\"Webhook\"].json.body.email}}\n```\n\n### Combine Variables\n\n```javascript\n// Concatenation (automatic)\nHello {{$json.body.name}}!\n\n// In URLs\nhttps://api.example.com/users/{{$json.body.user_id}}\n\n// In object properties\n{\n  \"name\": \"={{$json.body.name}}\",\n  \"email\": \"={{$json.body.email}}\"\n}\n```\n\n---\n\n## When NOT to Use Expressions\n\n### ❌ Code Nodes\n\nCode nodes use **direct JavaScript access**, NOT expressions!\n\n```javascript\n// ❌ WRONG in Code node\nconst email = '={{$json.email}}';\nconst name = '{{$json.body.name}}';\n\n// ✅ CORRECT in Code node\nconst email = $json.email;\nconst name = $json.body.name;\n\n// Or using Code node API\nconst email = $input.item.json.email;\nconst allItems = $input.all();\n```\n\n### ❌ Webhook Paths\n\n```javascript\n// ❌ WRONG\npath: \"{{$json.user_id}}/webhook\"\n\n// ✅ CORRECT\npath: \"user-webhook\"  // Static paths only\n```\n\n### ❌ Credential Fields\n\n```javascript\n// ❌ WRONG\napiKey: \"={{$env.API_KEY}}\"\n\n// ✅ CORRECT\nUse n8n credential system, not expressions\n```\n\n---\n\n## Validation Rules\n\n### 1. Always Use {{}}\n\nExpressions **must** be wrapped in double curly braces.\n\n```javascript\n❌ $json.field\n✅ {{$json.field}}\n```\n\n### 2. Use Quotes for Spaces\n\nField or node names with spaces require **bracket notation**:\n\n```javascript\n❌ {{$json.field name}}\n✅ {{$json['field name']}}\n\n❌ {{$node.HTTP Request.json}}\n✅ {{$node[\"HTTP Request\"].json}}\n```\n\n### 3. Match Exact Node Names\n\nNode references are **case-sensitive**:\n\n```javascript\n❌ {{$node[\"http request\"].json}}  // lowercase\n❌ {{$node[\"Http Request\"].json}}  // wrong case\n✅ {{$node[\"HTTP Request\"].json}}  // exact match\n```\n\n### 4. No Nested {{}}\n\nDon't double-wrap expressions:\n\n```javascript\n❌ {{{$json.field}}}\n✅ {{$json.field}}\n```\n\n---\n\n## Common Mistakes\n\nFor complete error catalog with fixes, see COMMON_MISTAKES.md\n\n### Quick Fixes\n\n| Mistake | Fix |\n|---------|-----|\n| `$json.field` | `{{$json.field}}` |\n| `{{$json.field name}}` | `{{$json['field name']}}` |\n| `{{$node.HTTP Request}}` | `{{$node[\"HTTP Request\"]}}` |\n| `{{{$json.field}}}` | `{{$json.field}}` |\n| `{{$json.name}}` (webhook) | `{{$json.body.name}}` |\n| `'={{$json.email}}'` (Code node) | `$json.email` |\n\n---\n\n## Working Examples\n\nFor real workflow examples, see EXAMPLES.md\n\n### Example 1: Webhook to Slack\n\n**Webhook receives**:\n```json\n{\n  \"body\": {\n    \"name\": \"John Doe\",\n    \"email\": \"john@example.com\",\n    \"message\": \"Hello!\"\n  }\n}\n```\n\n**In Slack node text field**:\n```\nNew form submission!\n\nName: {{$json.body.name}}\nEmail: {{$json.body.email}}\nMessage: {{$json.body.message}}\n```\n\n### Example 2: HTTP Request to Email\n\n**HTTP Request returns**:\n```json\n{\n  \"data\": {\n    \"items\": [\n      {\"name\": \"Product 1\", \"price\": 29.99}\n    ]\n  }\n}\n```\n\n**In Email node** (reference HTTP Request):\n```\nProduct: {{$node[\"HTTP Request\"].json.data.items[0].name}}\nPrice: ${{$node[\"HTTP Request\"].json.data.items[0].price}}\n```\n\n### Example 3: Format Timestamp\n\n```javascript\n// Current date\n{{$now.toFormat('yyyy-MM-dd')}}\n// Result: 2025-10-20\n\n// Time\n{{$now.toFormat('HH:mm:ss')}}\n// Result: 14:30:45\n\n// Full datetime\n{{$now.toFormat('yyyy-MM-dd HH:mm')}}\n// Result: 2025-10-20 14:30\n```\n\n---\n\n## Data Type Handling\n\n### Arrays\n\n```javascript\n// First item\n{{$json.users[0].email}}\n\n// Array length\n{{$json.users.length}}\n\n// Last item\n{{$json.users[$json.users.length - 1].name}}\n```\n\n### Objects\n\n```javascript\n// Dot notation (no spaces)\n{{$json.user.email}}\n\n// Bracket notation (with spaces or dynamic)\n{{$json['user data'].email}}\n```\n\n### Strings\n\n```javascript\n// Concatenation (automatic)\nHello {{$json.name}}!\n\n// String methods\n{{$json.email.toLowerCase()}}\n{{$json.name.toUpperCase()}}\n```\n\n### Numbers\n\n```javascript\n// Direct use\n{{$json.price}}\n\n// Math operations\n{{$json.price * 1.1}}  // Add 10%\n{{$json.quantity + 5}}\n```\n\n---\n\n## Advanced Patterns\n\n### Conditional Content\n\n```javascript\n// Ternary operator\n{{$json.status === 'active' ? 'Active User' : 'Inactive User'}}\n\n// Default values\n{{$json.email || 'no-email@example.com'}}\n```\n\n### Date Manipulation\n\n```javascript\n// Add days\n{{$now.plus({days: 7}).toFormat('yyyy-MM-dd')}}\n\n// Subtract hours\n{{$now.minus({hours: 24}).toISO()}}\n\n// Set specific date\n{{DateTime.fromISO('2025-12-25').toFormat('MMMM dd, yyyy')}}\n```\n\n### String Manipulation\n\n```javascript\n// Substring\n{{$json.email.substring(0, 5)}}\n\n// Replace\n{{$json.message.replace('old', 'new')}}\n\n// Split and join\n{{$json.tags.split(',').join(', ')}}\n```\n\n---\n\n## Debugging Expressions\n\n### Test in Expression Editor\n\n1. Click field with expression\n2. Open expression editor (click \"fx\" icon)\n3. See live preview of result\n4. Check for errors highlighted in red\n\n### Common Error Messages\n\n**\"Cannot read property 'X' of undefined\"**\n→ Parent object doesn't exist\n→ Check your data path\n\n**\"X is not a function\"**\n→ Trying to call method on non-function\n→ Check variable type\n\n**Expression shows as literal text**\n→ Missing {{ }}\n→ Add curly braces\n\n---\n\n## Expression Helpers\n\n### Available Methods\n\n**String**:\n- `.toLowerCase()`, `.toUpperCase()`\n- `.trim()`, `.replace()`, `.substring()`\n- `.split()`, `.includes()`\n\n**Array**:\n- `.length`, `.map()`, `.filter()`\n- `.find()`, `.join()`, `.slice()`\n\n**DateTime** (Luxon):\n- `.toFormat()`, `.toISO()`, `.toLocal()`\n- `.plus()`, `.minus()`, `.set()`\n\n**Number**:\n- `.toFixed()`, `.toString()`\n- Math operations: `+`, `-`, `*`, `/`, `%`\n\n---\n\n## Best Practices\n\n### ✅ Do\n\n- Always use {{ }} for dynamic content\n- Use bracket notation for field names with spaces\n- Reference webhook data from `.body`\n- Use $node for data from other nodes\n- Test expressions in expression editor\n\n### ❌ Don't\n\n- Don't use expressions in Code nodes\n- Don't forget quotes around node names with spaces\n- Don't double-wrap with extra {{ }}\n- Don't assume webhook data is at root (it's under .body!)\n- Don't use expressions in webhook paths or credentials\n\n---\n\n## Related Skills\n\n- **n8n MCP Tools Expert**: Learn how to validate expressions using MCP tools\n- **n8n Workflow Patterns**: See expressions in real workflow examples\n- **n8n Node Configuration**: Understand when expressions are needed\n\n---\n\n## Summary\n\n**Essential Rules**:\n1. Wrap expressions in {{ }}\n2. Webhook data is under `.body`\n3. No {{ }} in Code nodes\n4. Quote node names with spaces\n5. Node names are case-sensitive\n\n**Most Common Mistakes**:\n- Missing {{ }} → Add braces\n- `{{$json.name}}` in webhooks → Use `{{$json.body.name}}`\n- `{{$json.email}}` in Code → Use `$json.email`\n- `{{$node.HTTP Request}}` → Use `{{$node[\"HTTP Request\"]}}`\n\nFor more details, see:\n- COMMON_MISTAKES.md - Complete error catalog\n- EXAMPLES.md - Real workflow examples\n\n---\n\n**Need Help?** Reference the n8n expression documentation or use n8n-mcp validation tools to check your expressions.\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","expression","syntax","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-n8n-expression-syntax","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-expression-syntax","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 (9,742 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.808Z","embedding":null,"createdAt":"2026-04-18T21:41:12.112Z","updatedAt":"2026-04-23T06:51:36.808Z","lastSeenAt":"2026-04-23T06:51:36.808Z","tsv":"'-10':635,657 '-12':761 '-20':636,658 '-25':762 '/users/':341 '/webhook':405 '0':134,285,288,612,619,669,772 '1':430,555,598,678,789,1002 '1.1':715 '10':717 '14':643,659 '2':444,585,794,1006 '2025':634,656,760 '24':754 '29.99':600 '3':470,622,801,1012 '30':644,660 '4':499,807,1017 '45':645 '5':719,773,1023 '7':197,744 'access':20,120,140,181,201,245,275,283,363 'activ':728,729 'add':716,740,854,1034 'advanc':720 'allitem':396 'alway':431,892 'api':391 'api.example.com':340 'api.example.com/users/':339 'apikey':418 'around':935 'array':282,664,671,869 'ask':1115 'assum':949 'automat':334,700 'avail':859 'best':889 'bodi':231,264,562,909,958,1011 'boundari':1123 'brace':94,105,112,440,856,1035 'bracket':290,456,687,898 'call':839 'cannot':817 'case':169,479,492,1028 'case-sensit':168,478,1027 'catalog':516,1059 'check':808,828,845,1079 'clarif':1117 'clear':1090 'click':790,798 'code':356,358,369,379,389,543,929,1015,1043 'combin':330 'common':11,214,273,315,511,814,1031 'common_mistakes.md':520,1056 'complet':514,1057 'concaten':333,699 'condit':722 'configur':993 'const':371,374,381,384,392,395 'content':88,723,896 'core':114 'correct':41,76,242,251,253,255,377,406,421 'credenti':414,424,967 'criteria':1126 'critic':209 'cur':93,439,855 'current':117,124,179,182,626 'data':31,121,141,211,217,233,244,262,299,594,661,695,830,907,913,951,1008 'date':627,737,758 'date/time':183 'datetim':647,876 'datetime.fromiso':759 'day':196,741,743 'dd':190,632,652,749,765 'debug':54,783 'default':733 'describ':1094 'detail':1054 'direct':361,709 'document':1070 'doe':565 'doesn':825 'dot':682 'doubl':92,438,505,943 'double-wrap':504,942 'dynam':77,87,692,895 'editor':788,797,921 'email':238,349,372,382,393,566,580,589,602,670,696 'env':198 'env.api':205,419 'env.database':207 'environ':199,202,1106 'environment-specif':1105 'error':12,26,71,515,810,815,1058 'essenti':1000 'exact':173,472,497 'exampl':96,547,551,554,584,621,990,1063 'examples.md':553,1060 'exist':827 'expert':37,973,1111 'express':3,7,17,25,35,43,56,68,84,95,355,365,427,433,507,784,787,793,796,848,857,918,920,927,962,978,986,996,1004,1069,1081 'expression-rel':67 'extra':946 'field':129,277,295,415,449,462,530,574,791,901 'filter':872 'find':873 'first':300,666 'fix':10,518,522,524 'forget':933 'form':576 'format':85,623 'full':646 'function':836,844 'fx':799 'guid':38 'handl':663 'header':228,268 'hello':241,335,569,701 'help':1065 'helper':858 'hh':192,639,653 'highlight':811 'hour':751,753 'http':100,152,317,467,483,488,494,535,586,590,605,609,616,1050 'icon':800 'id':289,343,404 'import':158 'inact':731 'includ':868 'incom':261 'input':1120 'input.all':397 'input.item.json.email':394 'insid':79 'invalid':113 'involv':61 'item':595,667,675 'javascript':126,146,184,204,227,246,278,305,332,362,366,400,416,441,458,481,508,625,665,681,698,708,724,739,769 'john':237,564 'john@example.com':239,567 'join':780,782,874 'json':21,62,116,128,294,297,461,469,485,490,496,529,561,593,693 'json.body.email':157,254,329,350,581 'json.body.message':256,583 'json.body.name':98,252,336,348,376,386,541,579,1040 'json.body.user':342 'json.data':102,154,284,319 'json.data.items':611,618 'json.email':97,103,110,250,373,383,542,545,735,1041,1045 'json.email.substring':771 'json.email.tolowercase':705 'json.field':442,443,459,509,510,525,526,527,537,538 'json.fieldname':127,150 'json.items':133,287 'json.message':324 'json.message.replace':775 'json.name':248,539,702,1036 'json.name.touppercase':706 'json.nested.property':132 'json.price':711,714 'json.quantity':718 'json.status':727 'json.tags.split':781 'json.user':403 'json.user.email':281,686 'json.users':668,676 'json.users.length':673,677 'json.value':311 'key':206,420 'last':674 'learn':974 'length':672,870 'limit':1082 'liter':108,851 'live':803 'lowercas':486 'luxon':877 'manipul':738,768 'map':871 'match':172,471,498,1091 'math':712,887 'mcp':971,980,1075 'messag':240,568,582,816 'method':704,840,860 'minus':882 'miss':853,1033,1128 'mistak':215,512,523,1032 'mm':189,193,631,640,651,654,748 'mmmm':764 'must':161,171,434 'n8n':2,6,16,34,42,55,80,90,423,970,982,991,1068,1074 'n8n-expression-syntax':1 'n8n-mcp':1073 'name':135,149,160,166,175,236,286,296,301,347,375,385,452,460,463,474,528,531,563,578,596,613,679,902,937,1020,1025 'need':50,998,1064 'nest':276,280,501 'new':575,777 'no-email@example.com':736 'node':22,63,81,99,118,125,136,139,145,147,148,151,155,159,165,174,224,259,304,306,309,312,316,320,326,327,357,359,370,380,390,451,466,473,475,482,487,493,534,544,572,603,608,615,911,916,930,936,992,1016,1019,1024,1049 'node.http':464,532,1046 'non':843 'non-funct':842 'notat':291,457,683,688,899 'now.minus':752 'now.plus':195,742 'now.toformat':186,191,628,638,648 'number':707,884 'object':345,680,824 'old':776 'open':795 'oper':713,726,888 'output':119,225,1100 'param':229,269 'paramet':83,272 'parent':823 'path':399,402,407,412,831,965 'pattern':274,721,984 'payload':65 'permiss':1121 'plus':881 'practic':890 'preserv':267 'preview':804 'previous':144 'price':599,614,620 'product':597,607 'properti':265,346,819 'queri':230,271 'quick':521 'quot':164,446,934,1018 'read':818 'real':549,988,1061 'receiv':560 'red':813 'refer':137,302,476,604,905,1066 'relat':69,968 'replac':774,865 'request':101,153,318,468,484,489,495,533,536,587,591,606,610,617,1047,1051 'request.json':465 'requir':455,1119 'respond':321 'result':633,642,655,806 'return':592 'review':1112 'root':222,954 'rule':429,1001 'safeti':1122 'scope':1093 'see':519,552,802,985,1055 'sensit':170,480,1029 'set':310,756,883 'show':849 'simpl':279 'singl':111 'skill':969,1085 'skill-n8n-expression-syntax' 'slack':558,571 'slice':875 'source-sickn33' 'space':131,293,308,314,448,454,685,690,904,939,1022 'specif':757,1107 'split':778,867 'ss':194,641 'static':411 'stop':1113 'string':697,703,767,861 'structur':212,226 'submiss':577 'substitut':1103 'substr':770,866 'subtract':750 'success':1125 'summari':999 'syntax':4,8,19,36,58,75 'syntax-correct':74 'system':425 'task':60,1089 'ternari':725 'test':785,917,1109 'text':109,573,852 'time':637 'timestamp':180,624 'tofix':885 'toformat':745,763,878 'toiso':755,879 'toloc':880 'tolowercas':862 'tool':972,981,1077 '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' 'tostr':886 'touppercas':863 'treat':106,1098 'tri':837 'trim':864 'troubleshoot':24 'type':662,847 'undefin':822 'understand':994 'url':208,338 'use':13,18,48,57,91,354,360,388,422,432,445,710,893,897,910,926,961,979,1039,1044,1048,1072,1083 'user':232,298,409,694,730,732 'user-webhook':408 'valid':5,428,977,1076,1108 'valu':78,734 'variabl':23,115,200,203,331,846 'want':73 'webhook':30,64,156,210,216,223,243,258,323,325,328,398,410,540,556,559,906,950,964,1007,1038 'without':307 'work':28,546 'workflow':33,45,70,177,550,983,989,1062 'wrap':260,436,506,944,1003 'write':15,40,52 'wrong':247,249,367,401,417,491 'x':820,832 'yyyi':188,630,650,747,766 'yyyy-mm-dd':187,629,649,746","prices":[{"id":"7e40697d-82c2-4d04-a0dc-917c27985769","listingId":"268a099a-d5d2-4f74-a664-66e01f531d3d","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:12.112Z"}],"sources":[{"listingId":"268a099a-d5d2-4f74-a664-66e01f531d3d","source":"github","sourceId":"sickn33/antigravity-awesome-skills/n8n-expression-syntax","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/n8n-expression-syntax","isPrimary":false,"firstSeenAt":"2026-04-18T21:41:12.112Z","lastSeenAt":"2026-04-23T06:51:36.808Z"}],"details":{"listingId":"268a099a-d5d2-4f74-a664-66e01f531d3d","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"n8n-expression-syntax","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":"a1e83f0209f75b8aad3e687297ea826ccf24422b","skill_md_path":"skills/n8n-expression-syntax/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/n8n-expression-syntax"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"n8n-expression-syntax","description":"Validate n8n expression syntax and fix common errors. Use when writing n8n expressions, using {{}} syntax, accessing $json/$node variables, troubleshooting expression errors, or working with webhook data in workflows."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/n8n-expression-syntax"},"updatedAt":"2026-04-23T06:51:36.808Z"}}