[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AG33YM3AVCGMMV7TPSK7T5":3,"skill-same:01M6AG33YM3AVCGMMV7TPSK7T5":127},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":36,"linkOnly":37,"markdownContent":38,"markdownBody":39,"frontMatter":40,"refName":41,"commitSha":42,"skillDirectory":43,"forksCount":44,"repositoryHtmlUrl":45,"repositoryHomepageUrl":46,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6AG33YM3AVCGMMV7TPSK7T5","n8n-node-configuration",null,"Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node_essentials and get_node_info, or learning common configuration patterns by node type.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33481,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-node-configuration\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35],"n8n node configuration","node","configuration","n8n","when","fields","operation","type","get","dependencies","info","patterns","guidance","Nodes","use","common","learning","2026-11-10 10:12:30",false,"---\nname: n8n-node-configuration\ndescription: Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node_essentials and get_node_info, or learning common configuration patterns by node type.\n---\n\n# n8n Node Configuration\n\nExpert guidance for operation-aware node configuration with property dependencies.\n\n---\n\n## Configuration Philosophy\n\n**Progressive disclosure**: Start minimal, add complexity as needed\n\nConfiguration best practices:\n- get_node_essentials is the most used discovery pattern\n- 56 seconds average between configuration edits\n- 91.7% success rate with essentials-based configuration\n\n**Key insight**: Most configurations need only essentials, not full schema!\n\n---\n\n## Core Concepts\n\n### 1. Operation-Aware Configuration\n\n**Not all fields are always required** - it depends on operation!\n\n**Example**: Slack node\n```javascript\n\u002F\u002F For operation='post'\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",  \u002F\u002F Required for post\n  \"text\": \"Hello!\"        \u002F\u002F Required for post\n}\n\n\u002F\u002F For operation='update'\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",\n  \"messageId\": \"123\",     \u002F\u002F Required for update (different!)\n  \"text\": \"Updated!\"      \u002F\u002F Required for update\n  \u002F\u002F channel NOT required for update\n}\n```\n\n**Key**: Resource + operation determine which fields are required!\n\n### 2. Property Dependencies\n\n**Fields appear\u002Fdisappear based on other field values**\n\n**Example**: HTTP Request node\n```javascript\n\u002F\u002F When method='GET'\n{\n  \"method\": \"GET\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\"\n  \u002F\u002F sendBody not shown (GET doesn't have body)\n}\n\n\u002F\u002F When method='POST'\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\",\n  \"sendBody\": true,       \u002F\u002F Now visible!\n  \"body\": {               \u002F\u002F Required when sendBody=true\n    \"contentType\": \"json\",\n    \"content\": {...}\n  }\n}\n```\n\n**Mechanism**: displayOptions control field visibility\n\n### 3. Progressive Discovery\n\n**Use the right tool for the right job**:\n\n1. **get_node_essentials** (91.7% success rate)\n   - Quick overview\n   - Required fields\n   - Common options\n   - **Use first** - covers 90% of needs\n\n2. **get_property_dependencies** (for complex nodes)\n   - Shows what fields depend on others\n   - Reveals conditional requirements\n   - Use when essentials isn't enough\n\n3. **get_node_info** (full schema)\n   - Complete documentation\n   - All possible fields\n   - Use when essentials + dependencies insufficient\n\n---\n\n## Configuration Workflow\n\n### Standard Process\n\n```\n1. Identify node type and operation\n   ↓\n2. Use get_node_essentials\n   ↓\n3. Configure required fields\n   ↓\n4. Validate configuration\n   ↓\n5. If dependencies unclear → get_property_dependencies\n   ↓\n6. Add optional fields as needed\n   ↓\n7. Validate again\n   ↓\n8. Deploy\n```\n\n### Example: Configuring HTTP Request\n\n**Step 1**: Identify what you need\n```javascript\n\u002F\u002F Goal: POST JSON to API\n```\n\n**Step 2**: Get essentials\n```javascript\nconst info = get_node_essentials({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\n\u002F\u002F Returns: method, url, sendBody, body, authentication required\u002Foptional\n```\n\n**Step 3**: Minimal config\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\"\n}\n```\n\n**Step 4**: Validate\n```javascript\nvalidate_node_operation({\n  nodeType: \"nodes-base.httpRequest\",\n  config,\n  profile: \"runtime\"\n});\n\u002F\u002F → Error: \"sendBody required for POST\"\n```\n\n**Step 5**: Add required field\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\",\n  \"sendBody\": true\n}\n```\n\n**Step 6**: Validate again\n```javascript\nvalidate_node_operation({...});\n\u002F\u002F → Error: \"body required when sendBody=true\"\n```\n\n**Step 7**: Complete configuration\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\",\n  \"sendBody\": true,\n  \"body\": {\n    \"contentType\": \"json\",\n    \"content\": {\n      \"name\": \"={{$json.name}}\",\n      \"email\": \"={{$json.email}}\"\n    }\n  }\n}\n```\n\n**Step 8**: Final validation\n```javascript\nvalidate_node_operation({...});\n\u002F\u002F → Valid! ✅\n```\n\n---\n\n## get_node_essentials vs get_node_info\n\n### Use get_node_essentials When:\n\n**✅ Starting configuration** (91.7% success rate)\n```javascript\nget_node_essentials({\n  nodeType: \"nodes-base.slack\"\n});\n```\n\n**Returns**:\n- Required fields\n- Common options\n- Basic examples\n- Operation list\n\n**Fast**: ~18 seconds average (from search → essentials)\n\n### Use get_node_info When:\n\n**✅ Essentials insufficient**\n```javascript\nget_node_info({\n  nodeType: \"nodes-base.slack\"\n});\n```\n\n**Returns**:\n- Full schema\n- All properties\n- Complete documentation\n- Advanced options\n\n**Slower**: More data to process\n\n### Decision Tree\n\n```\n┌─────────────────────────────────┐\n│ Starting new node config?       │\n├─────────────────────────────────┤\n│ YES → get_node_essentials       │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Essentials has what you need?   │\n├─────────────────────────────────┤\n│ YES → Configure with essentials │\n│ NO  → Continue                  │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Need dependency info?           │\n├─────────────────────────────────┤\n│ YES → get_property_dependencies │\n│ NO  → Continue                  │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Still need more details?        │\n├─────────────────────────────────┤\n│ YES → get_node_info             │\n└─────────────────────────────────┘\n```\n\n---\n\n## Property Dependencies Deep Dive\n\n### displayOptions Mechanism\n\n**Fields have visibility rules**:\n\n```javascript\n{\n  \"name\": \"body\",\n  \"displayOptions\": {\n    \"show\": {\n      \"sendBody\": [true],\n      \"method\": [\"POST\", \"PUT\", \"PATCH\"]\n    }\n  }\n}\n```\n\n**Translation**: \"body\" field shows when:\n- sendBody = true AND\n- method = POST, PUT, or PATCH\n\n### Common Dependency Patterns\n\n#### Pattern 1: Boolean Toggle\n\n**Example**: HTTP Request sendBody\n```javascript\n\u002F\u002F sendBody controls body visibility\n{\n  \"sendBody\": true   \u002F\u002F → body field appears\n}\n```\n\n#### Pattern 2: Operation Switch\n\n**Example**: Slack resource\u002Foperation\n```javascript\n\u002F\u002F Different operations → different fields\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\"\n  \u002F\u002F → Shows: channel, text, attachments, etc.\n}\n\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\"\n  \u002F\u002F → Shows: messageId, text (different fields!)\n}\n```\n\n#### Pattern 3: Type Selection\n\n**Example**: IF node conditions\n```javascript\n{\n  \"type\": \"string\",\n  \"operation\": \"contains\"\n  \u002F\u002F → Shows: value1, value2\n}\n\n{\n  \"type\": \"boolean\",\n  \"operation\": \"equals\"\n  \u002F\u002F → Shows: value1, value2, different operators\n}\n```\n\n### Using get_property_dependencies\n\n**Example**:\n```javascript\nconst deps = get_property_dependencies({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\n\u002F\u002F Returns dependency tree\n{\n  \"dependencies\": {\n    \"body\": {\n      \"shows_when\": {\n        \"sendBody\": [true],\n        \"method\": [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]\n      }\n    },\n    \"queryParameters\": {\n      \"shows_when\": {\n        \"sendQuery\": [true]\n      }\n    }\n  }\n}\n```\n\n**Use this when**: Validation fails and you don't understand why field is missing\u002Frequired\n\n---\n\n## Common Node Patterns\n\n### Pattern 1: Resource\u002FOperation Nodes\n\n**Examples**: Slack, Google Sheets, Airtable\n\n**Structure**:\n```javascript\n{\n  \"resource\": \"\u003Centity>\",      \u002F\u002F What type of thing\n  \"operation\": \"\u003Caction>\",     \u002F\u002F What to do with it\n  \u002F\u002F ... operation-specific fields\n}\n```\n\n**How to configure**:\n1. Choose resource\n2. Choose operation\n3. Use get_node_essentials to see operation-specific requirements\n4. Configure required fields\n\n### Pattern 2: HTTP-Based Nodes\n\n**Examples**: HTTP Request, Webhook\n\n**Structure**:\n```javascript\n{\n  \"method\": \"\u003CHTTP_METHOD>\",\n  \"url\": \"\u003Cendpoint>\",\n  \"authentication\": \"\u003Ctype>\",\n  \u002F\u002F ... method-specific fields\n}\n```\n\n**Dependencies**:\n- POST\u002FPUT\u002FPATCH → sendBody available\n- sendBody=true → body required\n- authentication != \"none\" → credentials required\n\n### Pattern 3: Database Nodes\n\n**Examples**: Postgres, MySQL, MongoDB\n\n**Structure**:\n```javascript\n{\n  \"operation\": \"\u003Cquery|insert|update|delete>\",\n  \u002F\u002F ... operation-specific fields\n}\n```\n\n**Dependencies**:\n- operation=\"executeQuery\" → query required\n- operation=\"insert\" → table + values required\n- operation=\"update\" → table + values + where required\n\n### Pattern 4: Conditional Logic Nodes\n\n**Examples**: IF, Switch, Merge\n\n**Structure**:\n```javascript\n{\n  \"conditions\": {\n    \"\u003Ctype>\": [\n      {\n        \"operation\": \"\u003Coperator>\",\n        \"value1\": \"...\",\n        \"value2\": \"...\"  \u002F\u002F Only for binary operators\n      }\n    ]\n  }\n}\n```\n\n**Dependencies**:\n- Binary operators (equals, contains, etc.) → value1 + value2\n- Unary operators (isEmpty, isNotEmpty) → value1 only + singleValue: true\n\n---\n\n## Operation-Specific Configuration\n\n### Slack Node Examples\n\n#### Post Message\n```javascript\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",      \u002F\u002F Required\n  \"text\": \"Hello!\",           \u002F\u002F Required\n  \"attachments\": [],          \u002F\u002F Optional\n  \"blocks\": []                \u002F\u002F Optional\n}\n```\n\n#### Update Message\n```javascript\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",\n  \"messageId\": \"1234567890\",  \u002F\u002F Required (different from post!)\n  \"text\": \"Updated!\",         \u002F\u002F Required\n  \"channel\": \"#general\"       \u002F\u002F Optional (can be inferred)\n}\n```\n\n#### Create Channel\n```javascript\n{\n  \"resource\": \"channel\",\n  \"operation\": \"create\",\n  \"name\": \"new-channel\",      \u002F\u002F Required\n  \"isPrivate\": false          \u002F\u002F Optional\n  \u002F\u002F Note: text NOT required for this operation\n}\n```\n\n### HTTP Request Node Examples\n\n#### GET Request\n```javascript\n{\n  \"method\": \"GET\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fusers\",\n  \"authentication\": \"predefinedCredentialType\",\n  \"nodeCredentialType\": \"httpHeaderAuth\",\n  \"sendQuery\": true,                    \u002F\u002F Optional\n  \"queryParameters\": {                  \u002F\u002F Shows when sendQuery=true\n    \"parameters\": [\n      {\n        \"name\": \"limit\",\n        \"value\": \"100\"\n      }\n    ]\n  }\n}\n```\n\n#### POST with JSON\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fusers\",\n  \"authentication\": \"none\",\n  \"sendBody\": true,                     \u002F\u002F Required for POST\n  \"body\": {                             \u002F\u002F Required when sendBody=true\n    \"contentType\": \"json\",\n    \"content\": {\n      \"name\": \"John Doe\",\n      \"email\": \"john@example.com\"\n    }\n  }\n}\n```\n\n### IF Node Examples\n\n#### String Comparison (Binary)\n```javascript\n{\n  \"conditions\": {\n    \"string\": [\n      {\n        \"value1\": \"={{$json.status}}\",\n        \"operation\": \"equals\",\n        \"value2\": \"active\"              \u002F\u002F Binary: needs value2\n      }\n    ]\n  }\n}\n```\n\n#### Empty Check (Unary)\n```javascript\n{\n  \"conditions\": {\n    \"string\": [\n      {\n        \"value1\": \"={{$json.email}}\",\n        \"operation\": \"isEmpty\",\n        \u002F\u002F No value2 - unary operator\n        \"singleValue\": true             \u002F\u002F Auto-added by sanitization\n      }\n    ]\n  }\n}\n```\n\n---\n\n## Handling Conditional Requirements\n\n### Example: HTTP Request Body\n\n**Scenario**: body field required, but only sometimes\n\n**Rule**:\n```\nbody is required when:\n  - sendBody = true AND\n  - method IN (POST, PUT, PATCH, DELETE)\n```\n\n**How to discover**:\n```javascript\n\u002F\u002F Option 1: Read validation error\nvalidate_node_operation({...});\n\u002F\u002F Error: \"body required when sendBody=true\"\n\n\u002F\u002F Option 2: Check dependencies\nget_property_dependencies({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\u002F\u002F Shows: body → shows_when: sendBody=[true], method=[POST,PUT,PATCH,DELETE]\n\n\u002F\u002F Option 3: Try minimal config and iterate\n\u002F\u002F Start without body, validation will tell you if needed\n```\n\n### Example: IF Node singleValue\n\n**Scenario**: singleValue property appears for unary operators\n\n**Rule**:\n```\nsingleValue should be true when:\n  - operation IN (isEmpty, isNotEmpty, true, false)\n```\n\n**Good news**: Auto-sanitization fixes this!\n\n**Manual check**:\n```javascript\nget_property_dependencies({\n  nodeType: \"nodes-base.if\"\n});\n\u002F\u002F Shows operator-specific dependencies\n```\n\n---\n\n## Configuration Anti-Patterns\n\n### ❌ Don't: Over-configure Upfront\n\n**Bad**:\n```javascript\n\u002F\u002F Adding every possible field\n{\n  \"method\": \"GET\",\n  \"url\": \"...\",\n  \"sendQuery\": false,\n  \"sendHeaders\": false,\n  \"sendBody\": false,\n  \"timeout\": 10000,\n  \"ignoreResponseCode\": false,\n  \u002F\u002F ... 20 more optional fields\n}\n```\n\n**Good**:\n```javascript\n\u002F\u002F Start minimal\n{\n  \"method\": \"GET\",\n  \"url\": \"...\",\n  \"authentication\": \"none\"\n}\n\u002F\u002F Add fields only when needed\n```\n\n### ❌ Don't: Skip Validation\n\n**Bad**:\n```javascript\n\u002F\u002F Configure and deploy without validating\nconst config = {...};\nn8n_update_partial_workflow({...});  \u002F\u002F YOLO\n```\n\n**Good**:\n```javascript\n\u002F\u002F Validate before deploying\nconst config = {...};\nconst result = validate_node_operation({...});\nif (result.valid) {\n  n8n_update_partial_workflow({...});\n}\n```\n\n### ❌ Don't: Ignore Operation Context\n\n**Bad**:\n```javascript\n\u002F\u002F Same config for all Slack operations\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",\n  \"text\": \"...\"\n}\n\n\u002F\u002F Then switching operation without updating config\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",  \u002F\u002F Changed\n  \"channel\": \"#general\",  \u002F\u002F Wrong field for update!\n  \"text\": \"...\"\n}\n```\n\n**Good**:\n```javascript\n\u002F\u002F Check requirements when changing operation\nget_node_essentials({\n  nodeType: \"nodes-base.slack\"\n});\n\u002F\u002F See what update operation needs (messageId, not channel)\n```\n\n---\n\n## Best Practices\n\n### ✅ Do\n\n1. **Start with get_node_essentials**\n   - 91.7% success rate\n   - Faster than get_node_info\n   - Sufficient for most needs\n\n2. **Validate iteratively**\n   - Configure → Validate → Fix → Repeat\n   - Average 2-3 iterations is normal\n   - Read validation errors carefully\n\n3. **Use property dependencies when stuck**\n   - If field seems missing, check dependencies\n   - Understand what controls field visibility\n   - get_property_dependencies reveals rules\n\n4. **Respect operation context**\n   - Different operations = different requirements\n   - Always check essentials when changing operation\n   - Don't assume configs are transferable\n\n5. **Trust auto-sanitization**\n   - Operator structure fixed automatically\n   - Don't manually add\u002Fremove singleValue\n   - IF\u002FSwitch metadata added on save\n\n### ❌ Don't\n\n1. **Jump to get_node_info immediately**\n   - Try essentials first\n   - Only escalate if needed\n   - Full schema is overwhelming\n\n2. **Configure blindly**\n   - Always validate before deploying\n   - Understand why fields are required\n   - Check dependencies for conditional fields\n\n3. **Copy configs without understanding**\n   - Different operations need different fields\n   - Validate after copying\n   - Adjust for new context\n\n4. **Manually fix auto-sanitization issues**\n   - Let auto-sanitization handle operator structure\n   - Focus on business logic\n   - Save and let system fix structure\n\n---\n\n## Detailed References\n\nFor comprehensive guides on specific topics:\n\n- **[DEPENDENCIES.md](DEPENDENCIES.md)** - Deep dive into property dependencies and displayOptions\n- **[OPERATION_PATTERNS.md](OPERATION_PATTERNS.md)** - Common configuration patterns by node type\n\n---\n\n## Summary\n\n**Configuration Strategy**:\n1. Start with get_node_essentials (91.7% success)\n2. Configure required fields for operation\n3. Validate configuration\n4. Check dependencies if stuck\n5. Iterate until valid (avg 2-3 cycles)\n6. Deploy with confidence\n\n**Key Principles**:\n- **Operation-aware**: Different operations = different requirements\n- **Progressive disclosure**: Start minimal, add as needed\n- **Dependency-aware**: Understand field visibility rules\n- **Validation-driven**: Let validation guide configuration\n\n**Related Skills**:\n- **n8n MCP Tools Expert** - How to use discovery tools correctly\n- **n8n Validation Expert** - Interpret validation errors\n- **n8n Expression Syntax** - Configure expression fields\n- **n8n Workflow Patterns** - Apply patterns with proper configuration\n","# n8n Node Configuration\n\nExpert guidance for operation-aware node configuration with property dependencies.\n\n---\n\n## Configuration Philosophy\n\n**Progressive disclosure**: Start minimal, add complexity as needed\n\nConfiguration best practices:\n- get_node_essentials is the most used discovery pattern\n- 56 seconds average between configuration edits\n- 91.7% success rate with essentials-based configuration\n\n**Key insight**: Most configurations need only essentials, not full schema!\n\n---\n\n## Core Concepts\n\n### 1. Operation-Aware Configuration\n\n**Not all fields are always required** - it depends on operation!\n\n**Example**: Slack node\n```javascript\n\u002F\u002F For operation='post'\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",  \u002F\u002F Required for post\n  \"text\": \"Hello!\"        \u002F\u002F Required for post\n}\n\n\u002F\u002F For operation='update'\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",\n  \"messageId\": \"123\",     \u002F\u002F Required for update (different!)\n  \"text\": \"Updated!\"      \u002F\u002F Required for update\n  \u002F\u002F channel NOT required for update\n}\n```\n\n**Key**: Resource + operation determine which fields are required!\n\n### 2. Property Dependencies\n\n**Fields appear\u002Fdisappear based on other field values**\n\n**Example**: HTTP Request node\n```javascript\n\u002F\u002F When method='GET'\n{\n  \"method\": \"GET\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\"\n  \u002F\u002F sendBody not shown (GET doesn't have body)\n}\n\n\u002F\u002F When method='POST'\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\",\n  \"sendBody\": true,       \u002F\u002F Now visible!\n  \"body\": {               \u002F\u002F Required when sendBody=true\n    \"contentType\": \"json\",\n    \"content\": {...}\n  }\n}\n```\n\n**Mechanism**: displayOptions control field visibility\n\n### 3. Progressive Discovery\n\n**Use the right tool for the right job**:\n\n1. **get_node_essentials** (91.7% success rate)\n   - Quick overview\n   - Required fields\n   - Common options\n   - **Use first** - covers 90% of needs\n\n2. **get_property_dependencies** (for complex nodes)\n   - Shows what fields depend on others\n   - Reveals conditional requirements\n   - Use when essentials isn't enough\n\n3. **get_node_info** (full schema)\n   - Complete documentation\n   - All possible fields\n   - Use when essentials + dependencies insufficient\n\n---\n\n## Configuration Workflow\n\n### Standard Process\n\n```\n1. Identify node type and operation\n   ↓\n2. Use get_node_essentials\n   ↓\n3. Configure required fields\n   ↓\n4. Validate configuration\n   ↓\n5. If dependencies unclear → get_property_dependencies\n   ↓\n6. Add optional fields as needed\n   ↓\n7. Validate again\n   ↓\n8. Deploy\n```\n\n### Example: Configuring HTTP Request\n\n**Step 1**: Identify what you need\n```javascript\n\u002F\u002F Goal: POST JSON to API\n```\n\n**Step 2**: Get essentials\n```javascript\nconst info = get_node_essentials({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\n\u002F\u002F Returns: method, url, sendBody, body, authentication required\u002Foptional\n```\n\n**Step 3**: Minimal config\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\"\n}\n```\n\n**Step 4**: Validate\n```javascript\nvalidate_node_operation({\n  nodeType: \"nodes-base.httpRequest\",\n  config,\n  profile: \"runtime\"\n});\n\u002F\u002F → Error: \"sendBody required for POST\"\n```\n\n**Step 5**: Add required field\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\",\n  \"sendBody\": true\n}\n```\n\n**Step 6**: Validate again\n```javascript\nvalidate_node_operation({...});\n\u002F\u002F → Error: \"body required when sendBody=true\"\n```\n\n**Step 7**: Complete configuration\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fcreate\",\n  \"authentication\": \"none\",\n  \"sendBody\": true,\n  \"body\": {\n    \"contentType\": \"json\",\n    \"content\": {\n      \"name\": \"={{$json.name}}\",\n      \"email\": \"={{$json.email}}\"\n    }\n  }\n}\n```\n\n**Step 8**: Final validation\n```javascript\nvalidate_node_operation({...});\n\u002F\u002F → Valid! ✅\n```\n\n---\n\n## get_node_essentials vs get_node_info\n\n### Use get_node_essentials When:\n\n**✅ Starting configuration** (91.7% success rate)\n```javascript\nget_node_essentials({\n  nodeType: \"nodes-base.slack\"\n});\n```\n\n**Returns**:\n- Required fields\n- Common options\n- Basic examples\n- Operation list\n\n**Fast**: ~18 seconds average (from search → essentials)\n\n### Use get_node_info When:\n\n**✅ Essentials insufficient**\n```javascript\nget_node_info({\n  nodeType: \"nodes-base.slack\"\n});\n```\n\n**Returns**:\n- Full schema\n- All properties\n- Complete documentation\n- Advanced options\n\n**Slower**: More data to process\n\n### Decision Tree\n\n```\n┌─────────────────────────────────┐\n│ Starting new node config?       │\n├─────────────────────────────────┤\n│ YES → get_node_essentials       │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Essentials has what you need?   │\n├─────────────────────────────────┤\n│ YES → Configure with essentials │\n│ NO  → Continue                  │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Need dependency info?           │\n├─────────────────────────────────┤\n│ YES → get_property_dependencies │\n│ NO  → Continue                  │\n└─────────────────────────────────┘\n         ↓\n┌─────────────────────────────────┐\n│ Still need more details?        │\n├─────────────────────────────────┤\n│ YES → get_node_info             │\n└─────────────────────────────────┘\n```\n\n---\n\n## Property Dependencies Deep Dive\n\n### displayOptions Mechanism\n\n**Fields have visibility rules**:\n\n```javascript\n{\n  \"name\": \"body\",\n  \"displayOptions\": {\n    \"show\": {\n      \"sendBody\": [true],\n      \"method\": [\"POST\", \"PUT\", \"PATCH\"]\n    }\n  }\n}\n```\n\n**Translation**: \"body\" field shows when:\n- sendBody = true AND\n- method = POST, PUT, or PATCH\n\n### Common Dependency Patterns\n\n#### Pattern 1: Boolean Toggle\n\n**Example**: HTTP Request sendBody\n```javascript\n\u002F\u002F sendBody controls body visibility\n{\n  \"sendBody\": true   \u002F\u002F → body field appears\n}\n```\n\n#### Pattern 2: Operation Switch\n\n**Example**: Slack resource\u002Foperation\n```javascript\n\u002F\u002F Different operations → different fields\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\"\n  \u002F\u002F → Shows: channel, text, attachments, etc.\n}\n\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\"\n  \u002F\u002F → Shows: messageId, text (different fields!)\n}\n```\n\n#### Pattern 3: Type Selection\n\n**Example**: IF node conditions\n```javascript\n{\n  \"type\": \"string\",\n  \"operation\": \"contains\"\n  \u002F\u002F → Shows: value1, value2\n}\n\n{\n  \"type\": \"boolean\",\n  \"operation\": \"equals\"\n  \u002F\u002F → Shows: value1, value2, different operators\n}\n```\n\n### Using get_property_dependencies\n\n**Example**:\n```javascript\nconst deps = get_property_dependencies({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\n\u002F\u002F Returns dependency tree\n{\n  \"dependencies\": {\n    \"body\": {\n      \"shows_when\": {\n        \"sendBody\": [true],\n        \"method\": [\"POST\", \"PUT\", \"PATCH\", \"DELETE\"]\n      }\n    },\n    \"queryParameters\": {\n      \"shows_when\": {\n        \"sendQuery\": [true]\n      }\n    }\n  }\n}\n```\n\n**Use this when**: Validation fails and you don't understand why field is missing\u002Frequired\n\n---\n\n## Common Node Patterns\n\n### Pattern 1: Resource\u002FOperation Nodes\n\n**Examples**: Slack, Google Sheets, Airtable\n\n**Structure**:\n```javascript\n{\n  \"resource\": \"\u003Centity>\",      \u002F\u002F What type of thing\n  \"operation\": \"\u003Caction>\",     \u002F\u002F What to do with it\n  \u002F\u002F ... operation-specific fields\n}\n```\n\n**How to configure**:\n1. Choose resource\n2. Choose operation\n3. Use get_node_essentials to see operation-specific requirements\n4. Configure required fields\n\n### Pattern 2: HTTP-Based Nodes\n\n**Examples**: HTTP Request, Webhook\n\n**Structure**:\n```javascript\n{\n  \"method\": \"\u003CHTTP_METHOD>\",\n  \"url\": \"\u003Cendpoint>\",\n  \"authentication\": \"\u003Ctype>\",\n  \u002F\u002F ... method-specific fields\n}\n```\n\n**Dependencies**:\n- POST\u002FPUT\u002FPATCH → sendBody available\n- sendBody=true → body required\n- authentication != \"none\" → credentials required\n\n### Pattern 3: Database Nodes\n\n**Examples**: Postgres, MySQL, MongoDB\n\n**Structure**:\n```javascript\n{\n  \"operation\": \"\u003Cquery|insert|update|delete>\",\n  \u002F\u002F ... operation-specific fields\n}\n```\n\n**Dependencies**:\n- operation=\"executeQuery\" → query required\n- operation=\"insert\" → table + values required\n- operation=\"update\" → table + values + where required\n\n### Pattern 4: Conditional Logic Nodes\n\n**Examples**: IF, Switch, Merge\n\n**Structure**:\n```javascript\n{\n  \"conditions\": {\n    \"\u003Ctype>\": [\n      {\n        \"operation\": \"\u003Coperator>\",\n        \"value1\": \"...\",\n        \"value2\": \"...\"  \u002F\u002F Only for binary operators\n      }\n    ]\n  }\n}\n```\n\n**Dependencies**:\n- Binary operators (equals, contains, etc.) → value1 + value2\n- Unary operators (isEmpty, isNotEmpty) → value1 only + singleValue: true\n\n---\n\n## Operation-Specific Configuration\n\n### Slack Node Examples\n\n#### Post Message\n```javascript\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",      \u002F\u002F Required\n  \"text\": \"Hello!\",           \u002F\u002F Required\n  \"attachments\": [],          \u002F\u002F Optional\n  \"blocks\": []                \u002F\u002F Optional\n}\n```\n\n#### Update Message\n```javascript\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",\n  \"messageId\": \"1234567890\",  \u002F\u002F Required (different from post!)\n  \"text\": \"Updated!\",         \u002F\u002F Required\n  \"channel\": \"#general\"       \u002F\u002F Optional (can be inferred)\n}\n```\n\n#### Create Channel\n```javascript\n{\n  \"resource\": \"channel\",\n  \"operation\": \"create\",\n  \"name\": \"new-channel\",      \u002F\u002F Required\n  \"isPrivate\": false          \u002F\u002F Optional\n  \u002F\u002F Note: text NOT required for this operation\n}\n```\n\n### HTTP Request Node Examples\n\n#### GET Request\n```javascript\n{\n  \"method\": \"GET\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fusers\",\n  \"authentication\": \"predefinedCredentialType\",\n  \"nodeCredentialType\": \"httpHeaderAuth\",\n  \"sendQuery\": true,                    \u002F\u002F Optional\n  \"queryParameters\": {                  \u002F\u002F Shows when sendQuery=true\n    \"parameters\": [\n      {\n        \"name\": \"limit\",\n        \"value\": \"100\"\n      }\n    ]\n  }\n}\n```\n\n#### POST with JSON\n```javascript\n{\n  \"method\": \"POST\",\n  \"url\": \"https:\u002F\u002Fapi.example.com\u002Fusers\",\n  \"authentication\": \"none\",\n  \"sendBody\": true,                     \u002F\u002F Required for POST\n  \"body\": {                             \u002F\u002F Required when sendBody=true\n    \"contentType\": \"json\",\n    \"content\": {\n      \"name\": \"John Doe\",\n      \"email\": \"john@example.com\"\n    }\n  }\n}\n```\n\n### IF Node Examples\n\n#### String Comparison (Binary)\n```javascript\n{\n  \"conditions\": {\n    \"string\": [\n      {\n        \"value1\": \"={{$json.status}}\",\n        \"operation\": \"equals\",\n        \"value2\": \"active\"              \u002F\u002F Binary: needs value2\n      }\n    ]\n  }\n}\n```\n\n#### Empty Check (Unary)\n```javascript\n{\n  \"conditions\": {\n    \"string\": [\n      {\n        \"value1\": \"={{$json.email}}\",\n        \"operation\": \"isEmpty\",\n        \u002F\u002F No value2 - unary operator\n        \"singleValue\": true             \u002F\u002F Auto-added by sanitization\n      }\n    ]\n  }\n}\n```\n\n---\n\n## Handling Conditional Requirements\n\n### Example: HTTP Request Body\n\n**Scenario**: body field required, but only sometimes\n\n**Rule**:\n```\nbody is required when:\n  - sendBody = true AND\n  - method IN (POST, PUT, PATCH, DELETE)\n```\n\n**How to discover**:\n```javascript\n\u002F\u002F Option 1: Read validation error\nvalidate_node_operation({...});\n\u002F\u002F Error: \"body required when sendBody=true\"\n\n\u002F\u002F Option 2: Check dependencies\nget_property_dependencies({\n  nodeType: \"nodes-base.httpRequest\"\n});\n\u002F\u002F Shows: body → shows_when: sendBody=[true], method=[POST,PUT,PATCH,DELETE]\n\n\u002F\u002F Option 3: Try minimal config and iterate\n\u002F\u002F Start without body, validation will tell you if needed\n```\n\n### Example: IF Node singleValue\n\n**Scenario**: singleValue property appears for unary operators\n\n**Rule**:\n```\nsingleValue should be true when:\n  - operation IN (isEmpty, isNotEmpty, true, false)\n```\n\n**Good news**: Auto-sanitization fixes this!\n\n**Manual check**:\n```javascript\nget_property_dependencies({\n  nodeType: \"nodes-base.if\"\n});\n\u002F\u002F Shows operator-specific dependencies\n```\n\n---\n\n## Configuration Anti-Patterns\n\n### ❌ Don't: Over-configure Upfront\n\n**Bad**:\n```javascript\n\u002F\u002F Adding every possible field\n{\n  \"method\": \"GET\",\n  \"url\": \"...\",\n  \"sendQuery\": false,\n  \"sendHeaders\": false,\n  \"sendBody\": false,\n  \"timeout\": 10000,\n  \"ignoreResponseCode\": false,\n  \u002F\u002F ... 20 more optional fields\n}\n```\n\n**Good**:\n```javascript\n\u002F\u002F Start minimal\n{\n  \"method\": \"GET\",\n  \"url\": \"...\",\n  \"authentication\": \"none\"\n}\n\u002F\u002F Add fields only when needed\n```\n\n### ❌ Don't: Skip Validation\n\n**Bad**:\n```javascript\n\u002F\u002F Configure and deploy without validating\nconst config = {...};\nn8n_update_partial_workflow({...});  \u002F\u002F YOLO\n```\n\n**Good**:\n```javascript\n\u002F\u002F Validate before deploying\nconst config = {...};\nconst result = validate_node_operation({...});\nif (result.valid) {\n  n8n_update_partial_workflow({...});\n}\n```\n\n### ❌ Don't: Ignore Operation Context\n\n**Bad**:\n```javascript\n\u002F\u002F Same config for all Slack operations\n{\n  \"resource\": \"message\",\n  \"operation\": \"post\",\n  \"channel\": \"#general\",\n  \"text\": \"...\"\n}\n\n\u002F\u002F Then switching operation without updating config\n{\n  \"resource\": \"message\",\n  \"operation\": \"update\",  \u002F\u002F Changed\n  \"channel\": \"#general\",  \u002F\u002F Wrong field for update!\n  \"text\": \"...\"\n}\n```\n\n**Good**:\n```javascript\n\u002F\u002F Check requirements when changing operation\nget_node_essentials({\n  nodeType: \"nodes-base.slack\"\n});\n\u002F\u002F See what update operation needs (messageId, not channel)\n```\n\n---\n\n## Best Practices\n\n### ✅ Do\n\n1. **Start with get_node_essentials**\n   - 91.7% success rate\n   - Faster than get_node_info\n   - Sufficient for most needs\n\n2. **Validate iteratively**\n   - Configure → Validate → Fix → Repeat\n   - Average 2-3 iterations is normal\n   - Read validation errors carefully\n\n3. **Use property dependencies when stuck**\n   - If field seems missing, check dependencies\n   - Understand what controls field visibility\n   - get_property_dependencies reveals rules\n\n4. **Respect operation context**\n   - Different operations = different requirements\n   - Always check essentials when changing operation\n   - Don't assume configs are transferable\n\n5. **Trust auto-sanitization**\n   - Operator structure fixed automatically\n   - Don't manually add\u002Fremove singleValue\n   - IF\u002FSwitch metadata added on save\n\n### ❌ Don't\n\n1. **Jump to get_node_info immediately**\n   - Try essentials first\n   - Only escalate if needed\n   - Full schema is overwhelming\n\n2. **Configure blindly**\n   - Always validate before deploying\n   - Understand why fields are required\n   - Check dependencies for conditional fields\n\n3. **Copy configs without understanding**\n   - Different operations need different fields\n   - Validate after copying\n   - Adjust for new context\n\n4. **Manually fix auto-sanitization issues**\n   - Let auto-sanitization handle operator structure\n   - Focus on business logic\n   - Save and let system fix structure\n\n---\n\n## Detailed References\n\nFor comprehensive guides on specific topics:\n\n- **[DEPENDENCIES.md](DEPENDENCIES.md)** - Deep dive into property dependencies and displayOptions\n- **[OPERATION_PATTERNS.md](OPERATION_PATTERNS.md)** - Common configuration patterns by node type\n\n---\n\n## Summary\n\n**Configuration Strategy**:\n1. Start with get_node_essentials (91.7% success)\n2. Configure required fields for operation\n3. Validate configuration\n4. Check dependencies if stuck\n5. Iterate until valid (avg 2-3 cycles)\n6. Deploy with confidence\n\n**Key Principles**:\n- **Operation-aware**: Different operations = different requirements\n- **Progressive disclosure**: Start minimal, add as needed\n- **Dependency-aware**: Understand field visibility rules\n- **Validation-driven**: Let validation guide configuration\n\n**Related Skills**:\n- **n8n MCP Tools Expert** - How to use discovery tools correctly\n- **n8n Validation Expert** - Interpret validation errors\n- **n8n Expression Syntax** - Configure expression fields\n- **n8n Workflow Patterns** - Apply patterns with proper configuration\n",{"name":5,"description":7},"main","2b749c82b5d11fac39d9a6e021ce3f5b8a541bd1","cli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-node-configuration",3931,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-14 06:14:46",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add davila7\u002Fclaude-code-templates --skill n8n-node-configuration",{"tool":57,"command":58},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill n8n-node-configuration",{"tool":60,"command":61},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill n8n-node-configuration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-node-configuration\u002FSKILL.md",true,[65,71,75,81,85,89,93,99,103,107,111,115,119,123],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"DEPENDENCIES.md","REFERENCE","参考文档",14582,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-node-configuration\u002FDEPENDENCIES.md",{"path":72,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":73,"sourceHtmlUrl":74},"forms.md",9438,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fforms.md",{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"LICENSE.txt","LICENSE","许可证",1467,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002FLICENSE.txt",{"path":82,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":83,"sourceHtmlUrl":84},"OPERATION_PATTERNS.md",15358,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-node-configuration\u002FOPERATION_PATTERNS.md",{"path":86,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":87,"sourceHtmlUrl":88},"README.md",9800,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fworkflow-automation\u002Fn8n\u002Fn8n-node-configuration\u002FREADME.md",{"path":90,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":91,"sourceHtmlUrl":92},"reference.md",16692,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Freference.md",{"path":94,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":97,"sourceHtmlUrl":98},"scripts\u002Fcheck_bounding_boxes_test.py","SCRIPT","脚本",8818,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_bounding_boxes_test.py",{"path":100,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":101,"sourceHtmlUrl":102},"scripts\u002Fcheck_bounding_boxes.py",3139,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_bounding_boxes.py",{"path":104,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":105,"sourceHtmlUrl":106},"scripts\u002Fcheck_fillable_fields.py",362,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Fcheck_fillable_fields.py",{"path":108,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fconvert_pdf_to_images.py",1123,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Fconvert_pdf_to_images.py",{"path":112,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":113,"sourceHtmlUrl":114},"scripts\u002Fcreate_validation_image.py",1603,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Fcreate_validation_image.py",{"path":116,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":117,"sourceHtmlUrl":118},"scripts\u002Fextract_form_field_info.py",6127,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Fextract_form_field_info.py",{"path":120,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":121,"sourceHtmlUrl":122},"scripts\u002Ffill_fillable_fields.py",4863,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_fillable_fields.py",{"path":124,"resourceType":95,"resourceTypeDesc":96,"sizeBytes":125,"sourceHtmlUrl":126},"scripts\u002Ffill_pdf_form_with_annotations.py",3596,"https:\u002F\u002Fgithub.com\u002Fshengdabai\u002FTony-Claude-Code-Skills\u002Fblob\u002Fmain\u002Fskills\u002Ftravisvn-awesome-claude-skills\u002Fanthropics-skills\u002Fskills\u002Fpdf\u002Fscripts\u002Ffill_pdf_form_with_annotations.py",[128,158,185,218,253,277],{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":139,"publishedAt":36},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[134],{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[140,141,142,143,144,145,146,147,33,23,148,149,150,151,152,153,154,155,156,157],"scoring","pool","wealthville pool scoring","liquidity","which","for","exit","now","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":36},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[164],{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},[166,167,168,169,170,171,172,173,174,175,176,23,177,178,179,180,181,182,183,184],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit","dependency",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":200,"publishedAt":36},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard","Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[191,194,195],{"categoryNo":192,"categoryName":193,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},{"categoryNo":196,"categoryName":197,"taxonomyType":198,"taxonomyTypeDesc":199},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[201,202,203,204,205,206,207,145,208,209,210,211,212,213,214,33,215,216,23,217],"readonly","guard","sql guard","sql","readonly sql guard","erp","effect","read-only","db","just","tool","calls","only","MCP","access","database","query",{"skillNo":219,"name":220,"nameZh":6,"description":221,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":222,"licenseFileUrl":223,"sourceHtmlUrl":224,"categories":225,"keywords":229,"publishedAt":36},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[226],{"categoryNo":227,"categoryName":228,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000009","前端开发",[230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,145,252],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","Tools","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":254,"name":255,"nameZh":6,"description":256,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":222,"licenseFileUrl":257,"sourceHtmlUrl":258,"categories":259,"keywords":264,"publishedAt":36},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[260,263],{"categoryNo":261,"categoryName":262,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":227,"categoryName":228,"taxonomyType":137,"taxonomyTypeDesc":138},[265,266,267,268,269,231,270,240,241,271,272,273,274,145,275,149,276],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":278,"name":279,"nameZh":6,"description":280,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":222,"licenseFileUrl":281,"sourceHtmlUrl":282,"categories":283,"keywords":291,"publishedAt":36},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[284,287,288],{"categoryNo":285,"categoryName":286,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},{"categoryNo":289,"categoryName":290,"taxonomyType":198,"taxonomyTypeDesc":199},"01JBSEEDCAT000000000000036","内容创作者",[292,293,294,295,296,297,298,299,233,300,243,177,301,302,303,304,305,213,306,23,307,308,309,310,311,155,312],"discernment nudge","nudge","interpretation","help","run","reasoning","data","writing","lookup","content","review","conversation","short","up","invoke","you","analysis","claims","argument","assemble","recommendations"]