@caoscompanybr/merlin 3.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (762) hide show
  1. package/.claude/CLAUDE.md +216 -0
  2. package/.claude/hooks/README-license-gate.md +45 -0
  3. package/.claude/hooks/auto-summarize.js +47 -0
  4. package/.claude/hooks/context-monitor.js +60 -0
  5. package/.claude/hooks/doc-sync.js +111 -0
  6. package/.claude/hooks/license-gate.cjs +59 -0
  7. package/.claude/hooks/session-reset.js +27 -0
  8. package/.claude/hooks/thoughts-indexer.js +80 -0
  9. package/.claude/rules/merlin-constitution.md +27 -0
  10. package/.merlin-core/commands/README.md +19 -0
  11. package/.merlin-core/commands/founder-mode.md +51 -0
  12. package/.merlin-core/commands/git/commit.md +35 -0
  13. package/.merlin-core/commands/git/describe-pr.md +43 -0
  14. package/.merlin-core/commands/git/safe-commit.md +182 -0
  15. package/.merlin-core/commands/implementation/implement-plan.md +129 -0
  16. package/.merlin-core/commands/implementation/oneshot.md +63 -0
  17. package/.merlin-core/commands/implementation/tdd.md +152 -0
  18. package/.merlin-core/commands/planning/create-plan.md +184 -0
  19. package/.merlin-core/commands/planning/iterate-plan.md +45 -0
  20. package/.merlin-core/commands/planning/validate-plan.md +48 -0
  21. package/.merlin-core/commands/research/analyze-issue.md +155 -0
  22. package/.merlin-core/commands/research/research-codebase.md +157 -0
  23. package/.merlin-core/commands/review/adversarial-review.md +112 -0
  24. package/.merlin-core/commands/review/check.md +91 -0
  25. package/.merlin-core/commands/review/debug.md +135 -0
  26. package/.merlin-core/commands/review/doubts.md +178 -0
  27. package/.merlin-core/commands/review/engineering-audit.md +87 -0
  28. package/.merlin-core/commands/review/local-review.md +48 -0
  29. package/.merlin-core/commands/review/verify-goals.md +83 -0
  30. package/.merlin-core/commands/session/capture-feedback.md +74 -0
  31. package/.merlin-core/commands/session/capture-learning.md +155 -0
  32. package/.merlin-core/commands/session/check-objectives.md +85 -0
  33. package/.merlin-core/commands/session/conclude.md +125 -0
  34. package/.merlin-core/commands/session/create-handoff.md +88 -0
  35. package/.merlin-core/commands/session/create-objective.md +111 -0
  36. package/.merlin-core/commands/session/create-process.md +105 -0
  37. package/.merlin-core/commands/session/create-reminder.md +86 -0
  38. package/.merlin-core/commands/session/fast-start.md +261 -0
  39. package/.merlin-core/commands/session/recall-learnings.md +79 -0
  40. package/.merlin-core/commands/session/recall-processes.md +74 -0
  41. package/.merlin-core/commands/session/resume-handoff.md +51 -0
  42. package/.merlin-core/commands/session/run-process.md +53 -0
  43. package/.merlin-core/commands/special/beauty.md +89 -0
  44. package/.merlin-core/commands/special/common-ground.md +114 -0
  45. package/.merlin-core/commands/special/elicit.md +98 -0
  46. package/.merlin-core/commands/special/party.md +66 -0
  47. package/.merlin-core/commands/special/scrape.md +78 -0
  48. package/.merlin-core/commands/special/skill-audit.md +128 -0
  49. package/.merlin-core/commands/special/start-here.md +132 -0
  50. package/.merlin-core/constitution.md +442 -0
  51. package/.merlin-core/core/README.md +19 -0
  52. package/.merlin-core/core/alkimia/README.md +20 -0
  53. package/.merlin-core/core/alkimia/context/context-tracker.js +209 -0
  54. package/.merlin-core/core/alkimia/domain/domain-loader.js +215 -0
  55. package/.merlin-core/core/alkimia/engine.js +284 -0
  56. package/.merlin-core/core/alkimia/layers/l0-constitution.js +47 -0
  57. package/.merlin-core/core/alkimia/layers/l1-global.js +58 -0
  58. package/.merlin-core/core/alkimia/layers/l2-agent.js +58 -0
  59. package/.merlin-core/core/alkimia/layers/l3-workflow.js +54 -0
  60. package/.merlin-core/core/alkimia/layers/l4-task.js +45 -0
  61. package/.merlin-core/core/alkimia/layers/l5-squad.js +161 -0
  62. package/.merlin-core/core/alkimia/layers/l6-skill.js +520 -0
  63. package/.merlin-core/core/alkimia/layers/l7-star-command.js +87 -0
  64. package/.merlin-core/core/alkimia/layers/layer-processor.js +78 -0
  65. package/.merlin-core/core/alkimia/mandate.js +46 -0
  66. package/.merlin-core/core/alkimia/memory/doc-sync.js +201 -0
  67. package/.merlin-core/core/alkimia/memory/document-sharder.js +272 -0
  68. package/.merlin-core/core/alkimia/memory/git-history-retriever.js +225 -0
  69. package/.merlin-core/core/alkimia/memory/memory-bridge.js +97 -0
  70. package/.merlin-core/core/alkimia/memory/session-analyzer.js +400 -0
  71. package/.merlin-core/core/alkimia/memory/thoughts-indexer.js +477 -0
  72. package/.merlin-core/core/alkimia/memory/thoughts-provider.js +603 -0
  73. package/.merlin-core/core/alkimia/output/formatter.js +464 -0
  74. package/.merlin-core/core/alkimia/security/content-sanitizer.js +140 -0
  75. package/.merlin-core/core/alkimia/skill-importer.js +440 -0
  76. package/.merlin-core/core/alkimia/squads/default/.synapse/manifest +17 -0
  77. package/.merlin-core/core/alkimia/utils/frontmatter.js +321 -0
  78. package/.merlin-core/core/alkimia/utils/tokens.js +24 -0
  79. package/.merlin-core/core/approval/README.md +16 -0
  80. package/.merlin-core/core/approval/approval-engine.js +380 -0
  81. package/.merlin-core/core/approval/channels/cli-channel.js +50 -0
  82. package/.merlin-core/core/config/README.md +17 -0
  83. package/.merlin-core/core/config/config-cache.js +182 -0
  84. package/.merlin-core/core/config/config-loader.js +279 -0
  85. package/.merlin-core/core/config/config-resolver.js +411 -0
  86. package/.merlin-core/core/config/env-interpolator.js +123 -0
  87. package/.merlin-core/core/config/merge-utils.js +102 -0
  88. package/.merlin-core/core/config/schemas/core-config.schema.json +41 -0
  89. package/.merlin-core/core/config/schemas/framework-config.schema.json +24 -0
  90. package/.merlin-core/core/config/schemas/local-config.schema.json +23 -0
  91. package/.merlin-core/core/config/schemas/project-config.schema.json +189 -0
  92. package/.merlin-core/core/docs-consistency.js +140 -0
  93. package/.merlin-core/core/events/event-bus.js +344 -0
  94. package/.merlin-core/core/events/hook-handler.js +419 -0
  95. package/.merlin-core/core/execution/README.md +17 -0
  96. package/.merlin-core/core/execution/attempt-journal.js +380 -0
  97. package/.merlin-core/core/execution/autonomous-build-loop.js +637 -0
  98. package/.merlin-core/core/execution/build-orchestrator.js +296 -0
  99. package/.merlin-core/core/execution/build-state-manager.js +196 -0
  100. package/.merlin-core/core/execution/context-injector.js +204 -0
  101. package/.merlin-core/core/execution/cron-engine.js +247 -0
  102. package/.merlin-core/core/execution/cron-expression.js +148 -0
  103. package/.merlin-core/core/execution/env-preflight.js +423 -0
  104. package/.merlin-core/core/execution/guardrail-engine.js +745 -0
  105. package/.merlin-core/core/execution/heartbeat-engine.js +198 -0
  106. package/.merlin-core/core/execution/model-router.js +282 -0
  107. package/.merlin-core/core/execution/parallel-executor.js +378 -0
  108. package/.merlin-core/core/execution/parallel-monitor.js +201 -0
  109. package/.merlin-core/core/execution/party-session.js +311 -0
  110. package/.merlin-core/core/execution/rate-limit-manager.js +152 -0
  111. package/.merlin-core/core/execution/result-aggregator.js +215 -0
  112. package/.merlin-core/core/execution/semantic-merge-engine.js +320 -0
  113. package/.merlin-core/core/execution/subagent-dispatcher.js +721 -0
  114. package/.merlin-core/core/execution/success-verifier.js +227 -0
  115. package/.merlin-core/core/execution/task-metadata.js +105 -0
  116. package/.merlin-core/core/execution/team-executor.js +195 -0
  117. package/.merlin-core/core/execution/two-tier-editor.js +290 -0
  118. package/.merlin-core/core/execution/version-snapshot.js +294 -0
  119. package/.merlin-core/core/execution/wave-executor.js +224 -0
  120. package/.merlin-core/core/health-check/health-engine.js +415 -0
  121. package/.merlin-core/core/licensing/activation.js +281 -0
  122. package/.merlin-core/core/licensing/crc.js +103 -0
  123. package/.merlin-core/core/licensing/entitlement.js +99 -0
  124. package/.merlin-core/core/licensing/fingerprint.js +104 -0
  125. package/.merlin-core/core/licensing/gate.js +133 -0
  126. package/.merlin-core/core/licensing/hmac.js +42 -0
  127. package/.merlin-core/core/licensing/key.js +144 -0
  128. package/.merlin-core/core/licensing/license.js +212 -0
  129. package/.merlin-core/core/mcp/README.md +16 -0
  130. package/.merlin-core/core/mcp/browser-capability.js +191 -0
  131. package/.merlin-core/core/mcp/capability-mapper.js +92 -0
  132. package/.merlin-core/core/mcp/mcp-connector.js +278 -0
  133. package/.merlin-core/core/mcp/mcp-registry.js +101 -0
  134. package/.merlin-core/core/orchestration/README.md +17 -0
  135. package/.merlin-core/core/orchestration/agent-invoker.js +456 -0
  136. package/.merlin-core/core/orchestration/condition-evaluator.js +250 -0
  137. package/.merlin-core/core/orchestration/decision-tree.js +192 -0
  138. package/.merlin-core/core/orchestration/executor-assignment.js +372 -0
  139. package/.merlin-core/core/orchestration/gate-evaluator.js +653 -0
  140. package/.merlin-core/core/orchestration/intent-classifier.js +579 -0
  141. package/.merlin-core/core/orchestration/lock-manager.js +308 -0
  142. package/.merlin-core/core/orchestration/master-orchestrator.js +363 -0
  143. package/.merlin-core/core/orchestration/phase-tool-masks.js +194 -0
  144. package/.merlin-core/core/orchestration/recovery-handler.js +402 -0
  145. package/.merlin-core/core/orchestration/reflect-checkpoint.js +431 -0
  146. package/.merlin-core/core/orchestration/session-state.js +430 -0
  147. package/.merlin-core/core/orchestration/skill-dispatcher.js +255 -0
  148. package/.merlin-core/core/orchestration/step-loader.js +226 -0
  149. package/.merlin-core/core/orchestration/workflow-executor.js +864 -0
  150. package/.merlin-core/core/process/executor.js +231 -0
  151. package/.merlin-core/core/process/process-file.js +50 -0
  152. package/.merlin-core/core/process/secret-scan.js +86 -0
  153. package/.merlin-core/core/process/signature.js +77 -0
  154. package/.merlin-core/core/quality-gates/README.md +17 -0
  155. package/.merlin-core/core/quality-gates/layer1-precommit.js +110 -0
  156. package/.merlin-core/core/quality-gates/layer2-pr-automation.js +116 -0
  157. package/.merlin-core/core/quality-gates/layer3-human-review.js +133 -0
  158. package/.merlin-core/core/registry/service-registry.js +140 -0
  159. package/.merlin-core/core-config.yaml +159 -0
  160. package/.merlin-core/development/README.md +17 -0
  161. package/.merlin-core/development/agents/README.md +16 -0
  162. package/.merlin-core/development/agents/analyst.md +214 -0
  163. package/.merlin-core/development/agents/architect.md +166 -0
  164. package/.merlin-core/development/agents/data-engineer.md +154 -0
  165. package/.merlin-core/development/agents/dev.md +203 -0
  166. package/.merlin-core/development/agents/devops.md +236 -0
  167. package/.merlin-core/development/agents/grimorio.md +125 -0
  168. package/.merlin-core/development/agents/merlin-master.md +173 -0
  169. package/.merlin-core/development/agents/meta.md +190 -0
  170. package/.merlin-core/development/agents/pm.md +145 -0
  171. package/.merlin-core/development/agents/po.md +172 -0
  172. package/.merlin-core/development/agents/qa.md +275 -0
  173. package/.merlin-core/development/agents/researcher.md +218 -0
  174. package/.merlin-core/development/agents/scout.md +179 -0
  175. package/.merlin-core/development/agents/sm.md +148 -0
  176. package/.merlin-core/development/agents/ux.md +169 -0
  177. package/.merlin-core/development/agents/web-researcher.md +203 -0
  178. package/.merlin-core/development/checklists/adversarial-review-checklist.md +70 -0
  179. package/.merlin-core/development/checklists/operations-ci-checklist.md +40 -0
  180. package/.merlin-core/development/checklists/operations-deploy-checklist.md +54 -0
  181. package/.merlin-core/development/checklists/operations-publish-checklist.md +47 -0
  182. package/.merlin-core/development/checklists/source-verification-checklist.md +38 -0
  183. package/.merlin-core/development/templates/HEARTBEAT-template.md +46 -0
  184. package/.merlin-core/development/templates/ears-requirements-template.md +93 -0
  185. package/.merlin-core/development/templates/handoff-template.md +50 -0
  186. package/.merlin-core/development/templates/prd-template.md +62 -0
  187. package/.merlin-core/development/templates/research-template.md +53 -0
  188. package/.merlin-core/development/templates/spec-template.md +84 -0
  189. package/.merlin-core/development/workflows/brownfield-discovery.yaml +166 -0
  190. package/.merlin-core/development/workflows/brownfield-service.yaml +52 -0
  191. package/.merlin-core/development/workflows/development-cycle.yaml +57 -0
  192. package/.merlin-core/development/workflows/epic-orchestration.yaml +47 -0
  193. package/.merlin-core/development/workflows/folloni-funnel.yaml +177 -0
  194. package/.merlin-core/development/workflows/greenfield-fullstack.yaml +167 -0
  195. package/.merlin-core/development/workflows/greenfield-service.yaml +56 -0
  196. package/.merlin-core/development/workflows/qa-loop.yaml +115 -0
  197. package/.merlin-core/development/workflows/spec-pipeline.yaml +185 -0
  198. package/.merlin-core/development/workflows/steps/folloni-01-research.yaml +35 -0
  199. package/.merlin-core/development/workflows/steps/folloni-02-architecture.yaml +41 -0
  200. package/.merlin-core/development/workflows/steps/folloni-03-implementation.yaml +52 -0
  201. package/.merlin-core/development/workflows/story-development-cycle.yaml +67 -0
  202. package/.merlin-core/docs/GUIDE.md +413 -0
  203. package/.merlin-core/docs/merlin-commands-guide-pt.md +183 -0
  204. package/.merlin-core/framework-config.yaml +148 -0
  205. package/.merlin-core/hooks/README.md +16 -0
  206. package/.merlin-core/hooks/precompact-memory-flush.js +69 -0
  207. package/.merlin-core/hooks/pretooluse-remote-approve.js +113 -0
  208. package/.merlin-core/hooks/spikes/spike-b-hook.js +70 -0
  209. package/.merlin-core/hooks/spikes/spike-b-stub.js +70 -0
  210. package/.merlin-core/index.js +91 -0
  211. package/.merlin-core/local-config.yaml.template +31 -0
  212. package/.merlin-core/mcp-servers/lsp-bridge/index.js +397 -0
  213. package/.merlin-core/modules/scraping/module.json +23 -0
  214. package/.merlin-core/project-config.yaml +89 -0
  215. package/.merlin-core/schemas/README.md +18 -0
  216. package/.merlin-core/schemas/agent-hook-schema.json +152 -0
  217. package/.merlin-core/schemas/agent-schema.json +31 -0
  218. package/.merlin-core/schemas/command-schema.json +18 -0
  219. package/.merlin-core/schemas/feedback-schema.json +36 -0
  220. package/.merlin-core/schemas/handoff-schema.json +19 -0
  221. package/.merlin-core/schemas/learning-schema.json +51 -0
  222. package/.merlin-core/schemas/module.schema.json +124 -0
  223. package/.merlin-core/schemas/must-haves-schema.json +95 -0
  224. package/.merlin-core/schemas/objective-schema.json +23 -0
  225. package/.merlin-core/schemas/plan-schema.json +20 -0
  226. package/.merlin-core/schemas/process-schema.json +82 -0
  227. package/.merlin-core/schemas/reminder-schema.json +20 -0
  228. package/.merlin-core/schemas/skill-eval-schema.json +92 -0
  229. package/.merlin-core/schemas/skill-schema.json +77 -0
  230. package/.merlin-core/schemas/workflow-schema.json +38 -0
  231. package/.merlin-core/skills/README.md +16 -0
  232. package/.merlin-core/skills/domain/azure-cloud/SKILL.md +211 -0
  233. package/.merlin-core/skills/domain/azure-cloud/references/appinsights-instrumentation.md +63 -0
  234. package/.merlin-core/skills/domain/azure-cloud/references/azure-compliance.md +99 -0
  235. package/.merlin-core/skills/domain/azure-cloud/references/azure-cost-optimization.md +419 -0
  236. package/.merlin-core/skills/domain/azure-cloud/references/azure-deploy.md +82 -0
  237. package/.merlin-core/skills/domain/azure-cloud/references/azure-diagnostics.md +130 -0
  238. package/.merlin-core/skills/domain/azure-cloud/references/azure-prepare.md +134 -0
  239. package/.merlin-core/skills/domain/azure-cloud/references/azure-quotas.md +290 -0
  240. package/.merlin-core/skills/domain/azure-cloud/references/azure-rbac.md +11 -0
  241. package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-lookup.md +97 -0
  242. package/.merlin-core/skills/domain/azure-cloud/references/azure-resource-visualizer.md +178 -0
  243. package/.merlin-core/skills/domain/azure-cloud/references/azure-storage.md +91 -0
  244. package/.merlin-core/skills/domain/azure-cloud/references/azure-validate.md +58 -0
  245. package/.merlin-core/skills/domain/azure-cloud/references/entra-app-registration.md +192 -0
  246. package/.merlin-core/skills/domain/browser-automation/SKILL.md +311 -0
  247. package/.merlin-core/skills/domain/browser-automation/references/agent-browser-skill.md +632 -0
  248. package/.merlin-core/skills/domain/browser-automation/references/authentication.md +308 -0
  249. package/.merlin-core/skills/domain/browser-automation/references/commands.md +266 -0
  250. package/.merlin-core/skills/domain/browser-automation/references/profiling.md +120 -0
  251. package/.merlin-core/skills/domain/browser-automation/references/proxy-support.md +194 -0
  252. package/.merlin-core/skills/domain/browser-automation/references/session-management.md +194 -0
  253. package/.merlin-core/skills/domain/browser-automation/references/snapshot-refs.md +196 -0
  254. package/.merlin-core/skills/domain/browser-automation/references/video-recording.md +173 -0
  255. package/.merlin-core/skills/domain/browser-automation/templates/authenticated-session.sh +105 -0
  256. package/.merlin-core/skills/domain/browser-automation/templates/capture-workflow.sh +69 -0
  257. package/.merlin-core/skills/domain/browser-automation/templates/form-automation.sh +62 -0
  258. package/.merlin-core/skills/domain/digital-marketing/SKILL.md +292 -0
  259. package/.merlin-core/skills/domain/digital-marketing/references/content-strategy.md +320 -0
  260. package/.merlin-core/skills/domain/digital-marketing/references/copy-formats.md +298 -0
  261. package/.merlin-core/skills/domain/digital-marketing/references/copy-methodology.md +180 -0
  262. package/.merlin-core/skills/domain/digital-marketing/references/email-sequences.md +135 -0
  263. package/.merlin-core/skills/domain/digital-marketing/references/launch-strategy.md +213 -0
  264. package/.merlin-core/skills/domain/digital-marketing/references/pricing-strategy.md +160 -0
  265. package/.merlin-core/skills/domain/digital-marketing/references/programmatic-seo.md +237 -0
  266. package/.merlin-core/skills/domain/digital-marketing/references/revops-lifecycle.md +170 -0
  267. package/.merlin-core/skills/domain/digital-marketing/references/revops-operations.md +167 -0
  268. package/.merlin-core/skills/domain/digital-marketing/references/schema-markup.md +190 -0
  269. package/.merlin-core/skills/domain/digital-marketing/references/strategy-frameworks.md +324 -0
  270. package/.merlin-core/skills/domain/digital-marketing/references/traffic-management.md +350 -0
  271. package/.merlin-core/skills/domain/expo-native-ui/SKILL.md +348 -0
  272. package/.merlin-core/skills/domain/expo-native-ui/references/animations.md +220 -0
  273. package/.merlin-core/skills/domain/expo-native-ui/references/api-routes.md +361 -0
  274. package/.merlin-core/skills/domain/expo-native-ui/references/cicd-workflows.md +84 -0
  275. package/.merlin-core/skills/domain/expo-native-ui/references/controls.md +266 -0
  276. package/.merlin-core/skills/domain/expo-native-ui/references/data-fetching.md +553 -0
  277. package/.merlin-core/skills/domain/expo-native-ui/references/deployment-stores.md +1353 -0
  278. package/.merlin-core/skills/domain/expo-native-ui/references/deployment.md +183 -0
  279. package/.merlin-core/skills/domain/expo-native-ui/references/dev-client.md +166 -0
  280. package/.merlin-core/skills/domain/expo-native-ui/references/dom-components.md +410 -0
  281. package/.merlin-core/skills/domain/expo-native-ui/references/form-sheet.md +253 -0
  282. package/.merlin-core/skills/domain/expo-native-ui/references/gradients.md +117 -0
  283. package/.merlin-core/skills/domain/expo-native-ui/references/icons.md +218 -0
  284. package/.merlin-core/skills/domain/expo-native-ui/references/media.md +245 -0
  285. package/.merlin-core/skills/domain/expo-native-ui/references/platform-native.md +75 -0
  286. package/.merlin-core/skills/domain/expo-native-ui/references/route-structure.md +229 -0
  287. package/.merlin-core/skills/domain/expo-native-ui/references/search.md +249 -0
  288. package/.merlin-core/skills/domain/expo-native-ui/references/storage.md +121 -0
  289. package/.merlin-core/skills/domain/expo-native-ui/references/tabs.md +433 -0
  290. package/.merlin-core/skills/domain/expo-native-ui/references/tailwind-native.md +473 -0
  291. package/.merlin-core/skills/domain/expo-native-ui/references/toolbar-and-headers.md +284 -0
  292. package/.merlin-core/skills/domain/expo-native-ui/references/upgrading-guides.md +674 -0
  293. package/.merlin-core/skills/domain/expo-native-ui/references/upgrading.md +127 -0
  294. package/.merlin-core/skills/domain/expo-native-ui/references/visual-effects.md +199 -0
  295. package/.merlin-core/skills/domain/expo-native-ui/references/webgpu-three.md +605 -0
  296. package/.merlin-core/skills/domain/expo-native-ui/references/zoom-transitions.md +161 -0
  297. package/.merlin-core/skills/domain/marketing-ops/SKILL.md +117 -0
  298. package/.merlin-core/skills/domain/marketing-ops/references/_index.md +78 -0
  299. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/generative-tools.md +19 -0
  300. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative/references/platform-specs.md +19 -0
  301. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ad-creative.md +251 -0
  302. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/ad-copy-templates.md +19 -0
  303. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/audience-targeting.md +19 -0
  304. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/conversion-tracking.md +19 -0
  305. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads/references/platform-setup-checklists.md +19 -0
  306. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ads.md +322 -0
  307. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-patterns.md +19 -0
  308. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/content-types.md +19 -0
  309. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo/references/platform-ranking-factors.md +19 -0
  310. package/.merlin-core/skills/domain/marketing-ops/references/acquire/ai-seo.md +388 -0
  311. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/apple-specs.md +19 -0
  312. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/benchmarks.md +19 -0
  313. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/google-play-specs.md +19 -0
  314. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/report-template.md +19 -0
  315. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso/references/scoring-criteria.md +19 -0
  316. package/.merlin-core/skills/domain/marketing-ops/references/acquire/aso.md +316 -0
  317. package/.merlin-core/skills/domain/marketing-ops/references/acquire/co-marketing.md +305 -0
  318. package/.merlin-core/skills/domain/marketing-ops/references/acquire/community-marketing.md +169 -0
  319. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/templates.md +19 -0
  320. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling/references/tool-reference.md +19 -0
  321. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitor-profiling.md +442 -0
  322. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/content-architecture.md +19 -0
  323. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors/references/templates.md +19 -0
  324. package/.merlin-core/skills/domain/marketing-ops/references/acquire/competitors.md +281 -0
  325. package/.merlin-core/skills/domain/marketing-ops/references/acquire/content-strategy.md +16 -0
  326. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/directory-list.md +19 -0
  327. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/positioning-variations.md +19 -0
  328. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions/references/submission-tracker-template.md +19 -0
  329. package/.merlin-core/skills/domain/marketing-ops/references/acquire/directory-submissions.md +396 -0
  330. package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools/references/tool-types.md +19 -0
  331. package/.merlin-core/skills/domain/marketing-ops/references/acquire/free-tools.md +196 -0
  332. package/.merlin-core/skills/domain/marketing-ops/references/acquire/image/references/ai-image-prompting.md +19 -0
  333. package/.merlin-core/skills/domain/marketing-ops/references/acquire/image.md +352 -0
  334. package/.merlin-core/skills/domain/marketing-ops/references/acquire/launch.md +18 -0
  335. package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/benchmarks.md +19 -0
  336. package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets/references/format-guide.md +19 -0
  337. package/.merlin-core/skills/domain/marketing-ops/references/acquire/lead-magnets.md +333 -0
  338. package/.merlin-core/skills/domain/marketing-ops/references/acquire/programmatic-seo.md +16 -0
  339. package/.merlin-core/skills/domain/marketing-ops/references/acquire/schema.md +16 -0
  340. package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/ai-writing-detection.md +19 -0
  341. package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit/references/international-seo.md +19 -0
  342. package/.merlin-core/skills/domain/marketing-ops/references/acquire/seo-audit.md +546 -0
  343. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/mermaid-templates.md +19 -0
  344. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/navigation-patterns.md +19 -0
  345. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture/references/site-type-templates.md +19 -0
  346. package/.merlin-core/skills/domain/marketing-ops/references/acquire/site-architecture.md +371 -0
  347. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platform-limits.md +19 -0
  348. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/platforms.md +19 -0
  349. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/post-templates.md +19 -0
  350. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/reverse-engineering.md +19 -0
  351. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social/references/short-form-video.md +19 -0
  352. package/.merlin-core/skills/domain/marketing-ops/references/acquire/social.md +431 -0
  353. package/.merlin-core/skills/domain/marketing-ops/references/acquire/video/references/ai-video-prompting.md +19 -0
  354. package/.merlin-core/skills/domain/marketing-ops/references/acquire/video.md +353 -0
  355. package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/sample-size-guide.md +19 -0
  356. package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing/references/test-templates.md +19 -0
  357. package/.merlin-core/skills/domain/marketing-ops/references/activate/ab-testing.md +379 -0
  358. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/event-library.md +19 -0
  359. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/ga4-implementation.md +19 -0
  360. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics/references/gtm-implementation.md +19 -0
  361. package/.merlin-core/skills/domain/marketing-ops/references/activate/analytics.md +323 -0
  362. package/.merlin-core/skills/domain/marketing-ops/references/activate/copy-editing.md +18 -0
  363. package/.merlin-core/skills/domain/marketing-ops/references/activate/copywriting.md +18 -0
  364. package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/experiments.md +19 -0
  365. package/.merlin-core/skills/domain/marketing-ops/references/activate/cro/references/form.md +19 -0
  366. package/.merlin-core/skills/domain/marketing-ops/references/activate/cro.md +211 -0
  367. package/.merlin-core/skills/domain/marketing-ops/references/activate/emails.md +18 -0
  368. package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls/references/experiments.md +19 -0
  369. package/.merlin-core/skills/domain/marketing-ops/references/activate/paywalls.md +255 -0
  370. package/.merlin-core/skills/domain/marketing-ops/references/activate/popups.md +518 -0
  371. package/.merlin-core/skills/domain/marketing-ops/references/activate/pricing.md +18 -0
  372. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/deck-frameworks.md +19 -0
  373. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/demo-scripts.md +19 -0
  374. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/objection-library.md +19 -0
  375. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement/references/one-pager-templates.md +19 -0
  376. package/.merlin-core/skills/domain/marketing-ops/references/activate/sales-enablement.md +371 -0
  377. package/.merlin-core/skills/domain/marketing-ops/references/activate/signup.md +406 -0
  378. package/.merlin-core/skills/domain/marketing-ops/references/expand/co-marketing.md +18 -0
  379. package/.merlin-core/skills/domain/marketing-ops/references/expand/community-marketing.md +18 -0
  380. package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/affiliate-programs.md +19 -0
  381. package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals/references/program-examples.md +19 -0
  382. package/.merlin-core/skills/domain/marketing-ops/references/expand/referrals.md +278 -0
  383. package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research/references/source-guides.md +425 -0
  384. package/.merlin-core/skills/domain/marketing-ops/references/foundation/customer-research.md +284 -0
  385. package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas/references/ideas-by-category.md +216 -0
  386. package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-ideas.md +188 -0
  387. package/.merlin-core/skills/domain/marketing-ops/references/foundation/marketing-psychology.md +532 -0
  388. package/.merlin-core/skills/domain/marketing-ops/references/foundation/product-marketing.md +276 -0
  389. package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/cancel-flow-patterns.md +19 -0
  390. package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention/references/dunning-playbook.md +19 -0
  391. package/.merlin-core/skills/domain/marketing-ops/references/retain/churn-prevention.md +442 -0
  392. package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding/references/experiments.md +19 -0
  393. package/.merlin-core/skills/domain/marketing-ops/references/retain/onboarding.md +243 -0
  394. package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-lifecycle.md +18 -0
  395. package/.merlin-core/skills/domain/marketing-ops/references/retain/revops-operations.md +18 -0
  396. package/.merlin-core/skills/domain/n8n-automation/SKILL.md +149 -0
  397. package/.merlin-core/skills/domain/n8n-automation/references/code-javascript.md +3744 -0
  398. package/.merlin-core/skills/domain/n8n-automation/references/code-python.md +3293 -0
  399. package/.merlin-core/skills/domain/n8n-automation/references/expression-syntax.md +1662 -0
  400. package/.merlin-core/skills/domain/n8n-automation/references/mcp-tools-expert.md +2111 -0
  401. package/.merlin-core/skills/domain/n8n-automation/references/node-configuration.md +2523 -0
  402. package/.merlin-core/skills/domain/n8n-automation/references/validation-expert.md +2491 -0
  403. package/.merlin-core/skills/domain/n8n-automation/references/workflow-patterns.md +4624 -0
  404. package/.merlin-core/skills/domain/ops-manual/SKILL.md +225 -0
  405. package/.merlin-core/skills/domain/ops-manual/references/elicitation-questions.md +141 -0
  406. package/.merlin-core/skills/domain/ops-manual/references/external-skills-registry.md +63 -0
  407. package/.merlin-core/skills/domain/ops-manual/references/operations-template.yaml +132 -0
  408. package/.merlin-core/skills/domain/remotion-best-practices/SKILL.md +99 -0
  409. package/.merlin-core/skills/domain/remotion-best-practices/rules/3d.md +86 -0
  410. package/.merlin-core/skills/domain/remotion-best-practices/rules/animations.md +27 -0
  411. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
  412. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
  413. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +108 -0
  414. package/.merlin-core/skills/domain/remotion-best-practices/rules/assets.md +78 -0
  415. package/.merlin-core/skills/domain/remotion-best-practices/rules/audio.md +172 -0
  416. package/.merlin-core/skills/domain/remotion-best-practices/rules/calculate-metadata.md +131 -0
  417. package/.merlin-core/skills/domain/remotion-best-practices/rules/can-decode.md +75 -0
  418. package/.merlin-core/skills/domain/remotion-best-practices/rules/charts.md +68 -0
  419. package/.merlin-core/skills/domain/remotion-best-practices/rules/compositions.md +154 -0
  420. package/.merlin-core/skills/domain/remotion-best-practices/rules/display-captions.md +126 -0
  421. package/.merlin-core/skills/domain/remotion-best-practices/rules/extract-frames.md +229 -0
  422. package/.merlin-core/skills/domain/remotion-best-practices/rules/fonts.md +152 -0
  423. package/.merlin-core/skills/domain/remotion-best-practices/rules/get-audio-duration.md +58 -0
  424. package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-dimensions.md +68 -0
  425. package/.merlin-core/skills/domain/remotion-best-practices/rules/get-video-duration.md +58 -0
  426. package/.merlin-core/skills/domain/remotion-best-practices/rules/gifs.md +144 -0
  427. package/.merlin-core/skills/domain/remotion-best-practices/rules/images.md +134 -0
  428. package/.merlin-core/skills/domain/remotion-best-practices/rules/import-srt-captions.md +67 -0
  429. package/.merlin-core/skills/domain/remotion-best-practices/rules/lottie.md +70 -0
  430. package/.merlin-core/skills/domain/remotion-best-practices/rules/maps.md +414 -0
  431. package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
  432. package/.merlin-core/skills/domain/remotion-best-practices/rules/measuring-text.md +143 -0
  433. package/.merlin-core/skills/domain/remotion-best-practices/rules/parameters.md +109 -0
  434. package/.merlin-core/skills/domain/remotion-best-practices/rules/sequencing.md +118 -0
  435. package/.merlin-core/skills/domain/remotion-best-practices/rules/tailwind.md +11 -0
  436. package/.merlin-core/skills/domain/remotion-best-practices/rules/text-animations.md +20 -0
  437. package/.merlin-core/skills/domain/remotion-best-practices/rules/timing.md +179 -0
  438. package/.merlin-core/skills/domain/remotion-best-practices/rules/transcribe-captions.md +19 -0
  439. package/.merlin-core/skills/domain/remotion-best-practices/rules/transitions.md +137 -0
  440. package/.merlin-core/skills/domain/remotion-best-practices/rules/transparent-videos.md +106 -0
  441. package/.merlin-core/skills/domain/remotion-best-practices/rules/trimming.md +51 -0
  442. package/.merlin-core/skills/domain/remotion-best-practices/rules/videos.md +171 -0
  443. package/.merlin-core/skills/domain/resend-email/SKILL.md +377 -0
  444. package/.merlin-core/skills/general/adversarial-review/SKILL.md +144 -0
  445. package/.merlin-core/skills/general/api-design/SKILL.md +513 -0
  446. package/.merlin-core/skills/general/apify-scrape/SKILL.md +137 -0
  447. package/.merlin-core/skills/general/apify-scrape/scripts/apify-scrape.sh +68 -0
  448. package/.merlin-core/skills/general/backup/SKILL.md +87 -0
  449. package/.merlin-core/skills/general/blkskrn/SKILL.md +392 -0
  450. package/.merlin-core/skills/general/blkskrn/references/animation-patterns.md +521 -0
  451. package/.merlin-core/skills/general/blkskrn/references/design-system.md +637 -0
  452. package/.merlin-core/skills/general/blkskrn/references/html-templates.md +440 -0
  453. package/.merlin-core/skills/general/blkskrn/references/presenter-template.md +45 -0
  454. package/.merlin-core/skills/general/blkskrn/references/slide-types.md +424 -0
  455. package/.merlin-core/skills/general/blkskrn/scripts/canvas-manager.js +502 -0
  456. package/.merlin-core/skills/general/blkskrn/scripts/presenter.js +90 -0
  457. package/.merlin-core/skills/general/blkskrn/templates/presenter.html +273 -0
  458. package/.merlin-core/skills/general/blkskrn/templates/slide-base.html +277 -0
  459. package/.merlin-core/skills/general/blkskrn/templates/viewer.html +165 -0
  460. package/.merlin-core/skills/general/browser-takeover/SKILL.md +53 -0
  461. package/.merlin-core/skills/general/claude-api/SKILL.md +90 -0
  462. package/.merlin-core/skills/general/code-javascript/SKILL.md +268 -0
  463. package/.merlin-core/skills/general/code-python/SKILL.md +424 -0
  464. package/.merlin-core/skills/general/code-style/SKILL.md +97 -0
  465. package/.merlin-core/skills/general/code-typescript/SKILL.md +361 -0
  466. package/.merlin-core/skills/general/cold-email/SKILL.md +164 -0
  467. package/.merlin-core/skills/general/cold-email/references/benchmarks.md +18 -0
  468. package/.merlin-core/skills/general/cold-email/references/follow-up-sequences.md +18 -0
  469. package/.merlin-core/skills/general/cold-email/references/frameworks.md +18 -0
  470. package/.merlin-core/skills/general/cold-email/references/personalization.md +18 -0
  471. package/.merlin-core/skills/general/cold-email/references/subject-lines.md +18 -0
  472. package/.merlin-core/skills/general/container-security/SKILL.md +462 -0
  473. package/.merlin-core/skills/general/context-management/SKILL.md +79 -0
  474. package/.merlin-core/skills/general/copy-editing/SKILL.md +501 -0
  475. package/.merlin-core/skills/general/copy-editing/references/checklist.md +18 -0
  476. package/.merlin-core/skills/general/copy-editing/references/content-refresh.md +18 -0
  477. package/.merlin-core/skills/general/copy-editing/references/plain-english-alternatives.md +18 -0
  478. package/.merlin-core/skills/general/copywriting/SKILL.md +294 -0
  479. package/.merlin-core/skills/general/copywriting/references/copy-frameworks.md +392 -0
  480. package/.merlin-core/skills/general/copywriting/references/natural-transitions.md +276 -0
  481. package/.merlin-core/skills/general/database/SKILL.md +561 -0
  482. package/.merlin-core/skills/general/database/references/postgres-concurrency.md +182 -0
  483. package/.merlin-core/skills/general/database/references/postgres-connections.md +97 -0
  484. package/.merlin-core/skills/general/database/references/postgres-data-patterns.md +159 -0
  485. package/.merlin-core/skills/general/database/references/postgres-monitoring.md +136 -0
  486. package/.merlin-core/skills/general/database/references/postgres-rls.md +140 -0
  487. package/.merlin-core/skills/general/database-provision/SKILL.md +56 -0
  488. package/.merlin-core/skills/general/deploy/SKILL.md +65 -0
  489. package/.merlin-core/skills/general/design-inspiration/SKILL.md +146 -0
  490. package/.merlin-core/skills/general/design-palette/SKILL.md +99 -0
  491. package/.merlin-core/skills/general/design-palette/references/full-palettes.md +144 -0
  492. package/.merlin-core/skills/general/design-system/SKILL.md +94 -0
  493. package/.merlin-core/skills/general/design-typography/SKILL.md +115 -0
  494. package/.merlin-core/skills/general/design-typography/references/full-pairings.md +144 -0
  495. package/.merlin-core/skills/general/design-ux-patterns/SKILL.md +155 -0
  496. package/.merlin-core/skills/general/design-ux-patterns/references/charts-data-guidelines.md +197 -0
  497. package/.merlin-core/skills/general/design-ux-patterns/references/landing-patterns.md +199 -0
  498. package/.merlin-core/skills/general/design-ux-patterns/references/professional-ui-checklist.md +56 -0
  499. package/.merlin-core/skills/general/design-ux-patterns/references/style-catalog.md +89 -0
  500. package/.merlin-core/skills/general/design-ux-patterns/references/ux-guidelines.md +837 -0
  501. package/.merlin-core/skills/general/discover-cloud/SKILL.md +108 -0
  502. package/.merlin-core/skills/general/doc-sync/SKILL.md +52 -0
  503. package/.merlin-core/skills/general/document-sharding/SKILL.md +53 -0
  504. package/.merlin-core/skills/general/docx/SKILL.md +418 -0
  505. package/.merlin-core/skills/general/docx/references/windows-setup.md +27 -0
  506. package/.merlin-core/skills/general/docx/scripts/__init__.py +1 -0
  507. package/.merlin-core/skills/general/docx/scripts/accept_changes.py +135 -0
  508. package/.merlin-core/skills/general/docx/scripts/comment.py +318 -0
  509. package/.merlin-core/skills/general/docx/scripts/office/__init__.py +0 -0
  510. package/.merlin-core/skills/general/docx/scripts/office/helpers/__init__.py +0 -0
  511. package/.merlin-core/skills/general/docx/scripts/office/helpers/merge_runs.py +199 -0
  512. package/.merlin-core/skills/general/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  513. package/.merlin-core/skills/general/docx/scripts/office/pack.py +159 -0
  514. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  515. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  516. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  517. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  518. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  519. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  520. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  521. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  522. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  523. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  524. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  525. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  526. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  527. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  528. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  529. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  530. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  531. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  532. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  533. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  534. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  535. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  536. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  537. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  538. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  539. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  540. package/.merlin-core/skills/general/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  541. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  542. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  543. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  544. package/.merlin-core/skills/general/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  545. package/.merlin-core/skills/general/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  546. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  547. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  548. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  549. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  550. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  551. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  552. package/.merlin-core/skills/general/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  553. package/.merlin-core/skills/general/docx/scripts/office/soffice.py +183 -0
  554. package/.merlin-core/skills/general/docx/scripts/office/unpack.py +132 -0
  555. package/.merlin-core/skills/general/docx/scripts/office/validate.py +111 -0
  556. package/.merlin-core/skills/general/docx/scripts/office/validators/__init__.py +15 -0
  557. package/.merlin-core/skills/general/docx/scripts/office/validators/base.py +847 -0
  558. package/.merlin-core/skills/general/docx/scripts/office/validators/docx.py +446 -0
  559. package/.merlin-core/skills/general/docx/scripts/office/validators/pptx.py +275 -0
  560. package/.merlin-core/skills/general/docx/scripts/office/validators/redlining.py +247 -0
  561. package/.merlin-core/skills/general/docx/scripts/templates/comments.xml +3 -0
  562. package/.merlin-core/skills/general/docx/scripts/templates/commentsExtended.xml +3 -0
  563. package/.merlin-core/skills/general/docx/scripts/templates/commentsExtensible.xml +3 -0
  564. package/.merlin-core/skills/general/docx/scripts/templates/commentsIds.xml +3 -0
  565. package/.merlin-core/skills/general/docx/scripts/templates/people.xml +3 -0
  566. package/.merlin-core/skills/general/elicitation/SKILL.md +188 -0
  567. package/.merlin-core/skills/general/engineering-audit/SKILL.md +122 -0
  568. package/.merlin-core/skills/general/find-and-edit/SKILL.md +102 -0
  569. package/.merlin-core/skills/general/first-party-docs/SKILL.md +51 -0
  570. package/.merlin-core/skills/general/frontend-design/SKILL.md +204 -0
  571. package/.merlin-core/skills/general/guardrails/SKILL.md +144 -0
  572. package/.merlin-core/skills/general/image-gen/SKILL.md +49 -0
  573. package/.merlin-core/skills/general/learning-capture/SKILL.md +192 -0
  574. package/.merlin-core/skills/general/lgpd-compliance-audit/SKILL.md +448 -0
  575. package/.merlin-core/skills/general/load-testing/SKILL.md +114 -0
  576. package/.merlin-core/skills/general/load-testing/docker/Dockerfile.dashboard +21 -0
  577. package/.merlin-core/skills/general/load-testing/docker/docker-compose.locust.yml +39 -0
  578. package/.merlin-core/skills/general/load-testing/requirements.txt +1 -0
  579. package/.merlin-core/skills/general/load-testing/scripts/compare_baseline.py +172 -0
  580. package/.merlin-core/skills/general/load-testing/scripts/run_local.py +245 -0
  581. package/.merlin-core/skills/general/load-testing/templates/load_shape_stepped.py +35 -0
  582. package/.merlin-core/skills/general/load-testing/templates/locustfile_dashboard.py +47 -0
  583. package/.merlin-core/skills/general/load-testing/templates/threshold_hook.py +36 -0
  584. package/.merlin-core/skills/general/mage-beauty/SKILL.md +89 -0
  585. package/.merlin-core/skills/general/mage-beauty/references/anti-patterns.md +148 -0
  586. package/.merlin-core/skills/general/mage-beauty/references/color-and-contrast.md +87 -0
  587. package/.merlin-core/skills/general/mage-beauty/references/interaction-design.md +99 -0
  588. package/.merlin-core/skills/general/mage-beauty/references/motion-design.md +90 -0
  589. package/.merlin-core/skills/general/mage-beauty/references/remotion-bridge.md +187 -0
  590. package/.merlin-core/skills/general/mage-beauty/references/responsive-and-multi-format.md +98 -0
  591. package/.merlin-core/skills/general/mage-beauty/references/spatial-design.md +88 -0
  592. package/.merlin-core/skills/general/mage-beauty/references/typography.md +60 -0
  593. package/.merlin-core/skills/general/mage-beauty/references/verb-adapt.md +102 -0
  594. package/.merlin-core/skills/general/mage-beauty/references/verb-animate.md +97 -0
  595. package/.merlin-core/skills/general/mage-beauty/references/verb-audit.md +99 -0
  596. package/.merlin-core/skills/general/mage-beauty/references/verb-bolder.md +94 -0
  597. package/.merlin-core/skills/general/mage-beauty/references/verb-cinematic.md +128 -0
  598. package/.merlin-core/skills/general/mage-beauty/references/verb-clarify.md +107 -0
  599. package/.merlin-core/skills/general/mage-beauty/references/verb-colorize.md +106 -0
  600. package/.merlin-core/skills/general/mage-beauty/references/verb-critique.md +88 -0
  601. package/.merlin-core/skills/general/mage-beauty/references/verb-delight.md +98 -0
  602. package/.merlin-core/skills/general/mage-beauty/references/verb-distill.md +97 -0
  603. package/.merlin-core/skills/general/mage-beauty/references/verb-harden.md +79 -0
  604. package/.merlin-core/skills/general/mage-beauty/references/verb-layout.md +104 -0
  605. package/.merlin-core/skills/general/mage-beauty/references/verb-onboard.md +98 -0
  606. package/.merlin-core/skills/general/mage-beauty/references/verb-optimize.md +124 -0
  607. package/.merlin-core/skills/general/mage-beauty/references/verb-overdrive.md +105 -0
  608. package/.merlin-core/skills/general/mage-beauty/references/verb-polish.md +91 -0
  609. package/.merlin-core/skills/general/mage-beauty/references/verb-quieter.md +95 -0
  610. package/.merlin-core/skills/general/mage-beauty/references/verb-rebrand.md +127 -0
  611. package/.merlin-core/skills/general/mage-beauty/references/verb-shape.md +160 -0
  612. package/.merlin-core/skills/general/mage-beauty/references/verb-typeset.md +109 -0
  613. package/.merlin-core/skills/general/mage-beauty/references/voice-and-microcopy.md +137 -0
  614. package/.merlin-core/skills/general/mcp-builder/SKILL.md +92 -0
  615. package/.merlin-core/skills/general/network-debug/SKILL.md +51 -0
  616. package/.merlin-core/skills/general/next-best-practices/SKILL.md +177 -0
  617. package/.merlin-core/skills/general/next-best-practices/references/async-patterns.md +87 -0
  618. package/.merlin-core/skills/general/next-best-practices/references/bundling.md +182 -0
  619. package/.merlin-core/skills/general/next-best-practices/references/data-patterns.md +306 -0
  620. package/.merlin-core/skills/general/next-best-practices/references/debug-tricks.md +125 -0
  621. package/.merlin-core/skills/general/next-best-practices/references/directives.md +74 -0
  622. package/.merlin-core/skills/general/next-best-practices/references/error-handling.md +232 -0
  623. package/.merlin-core/skills/general/next-best-practices/references/file-conventions.md +141 -0
  624. package/.merlin-core/skills/general/next-best-practices/references/font.md +257 -0
  625. package/.merlin-core/skills/general/next-best-practices/references/functions.md +108 -0
  626. package/.merlin-core/skills/general/next-best-practices/references/hydration-error.md +88 -0
  627. package/.merlin-core/skills/general/next-best-practices/references/image.md +179 -0
  628. package/.merlin-core/skills/general/next-best-practices/references/metadata.md +296 -0
  629. package/.merlin-core/skills/general/next-best-practices/references/parallel-routes.md +298 -0
  630. package/.merlin-core/skills/general/next-best-practices/references/route-handlers.md +146 -0
  631. package/.merlin-core/skills/general/next-best-practices/references/rsc-boundaries.md +164 -0
  632. package/.merlin-core/skills/general/next-best-practices/references/runtime-selection.md +40 -0
  633. package/.merlin-core/skills/general/next-best-practices/references/scripts.md +141 -0
  634. package/.merlin-core/skills/general/next-best-practices/references/self-hosting.md +384 -0
  635. package/.merlin-core/skills/general/next-best-practices/references/suspense-boundaries.md +67 -0
  636. package/.merlin-core/skills/general/next-steps/SKILL.md +43 -0
  637. package/.merlin-core/skills/general/party-mode/SKILL.md +57 -0
  638. package/.merlin-core/skills/general/pdf/SKILL.md +298 -0
  639. package/.merlin-core/skills/general/pdf/references/forms.md +312 -0
  640. package/.merlin-core/skills/general/pdf/references/reference.md +640 -0
  641. package/.merlin-core/skills/general/pdf/references/windows-setup.md +40 -0
  642. package/.merlin-core/skills/general/pdf/scripts/check_bounding_boxes.py +65 -0
  643. package/.merlin-core/skills/general/pdf/scripts/check_fillable_fields.py +11 -0
  644. package/.merlin-core/skills/general/pdf/scripts/convert_pdf_to_images.py +33 -0
  645. package/.merlin-core/skills/general/pdf/scripts/create_validation_image.py +37 -0
  646. package/.merlin-core/skills/general/pdf/scripts/extract_form_field_info.py +122 -0
  647. package/.merlin-core/skills/general/pdf/scripts/extract_form_structure.py +115 -0
  648. package/.merlin-core/skills/general/pdf/scripts/fill_fillable_fields.py +98 -0
  649. package/.merlin-core/skills/general/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  650. package/.merlin-core/skills/general/pptx/SKILL.md +133 -0
  651. package/.merlin-core/skills/general/pptx/references/editing.md +213 -0
  652. package/.merlin-core/skills/general/pptx/references/pptxgenjs.md +581 -0
  653. package/.merlin-core/skills/general/pptx/references/windows-setup.md +27 -0
  654. package/.merlin-core/skills/general/pptx/scripts/__init__.py +0 -0
  655. package/.merlin-core/skills/general/pptx/scripts/add_slide.py +195 -0
  656. package/.merlin-core/skills/general/pptx/scripts/clean.py +286 -0
  657. package/.merlin-core/skills/general/pptx/scripts/thumbnail.py +289 -0
  658. package/.merlin-core/skills/general/property-testing/SKILL.md +214 -0
  659. package/.merlin-core/skills/general/purge-leaked-secret/SKILL.md +383 -0
  660. package/.merlin-core/skills/general/reflection/SKILL.md +100 -0
  661. package/.merlin-core/skills/general/secret-safe-commit/SKILL.md +246 -0
  662. package/.merlin-core/skills/general/secret-safe-commit/templates/.gitleaks.toml +91 -0
  663. package/.merlin-core/skills/general/secret-safe-commit/templates/.pre-commit-config.yaml +57 -0
  664. package/.merlin-core/skills/general/secret-safe-commit/templates/secret-scan.yml +48 -0
  665. package/.merlin-core/skills/general/semantic-search/SKILL.md +79 -0
  666. package/.merlin-core/skills/general/skill-creator/SKILL.md +342 -0
  667. package/.merlin-core/skills/general/skill-creator/agents/analyzer.md +283 -0
  668. package/.merlin-core/skills/general/skill-creator/agents/comparator.md +211 -0
  669. package/.merlin-core/skills/general/skill-creator/agents/grader.md +227 -0
  670. package/.merlin-core/skills/general/skill-creator/assets/eval_review.html +146 -0
  671. package/.merlin-core/skills/general/skill-creator/eval-viewer/generate_review.py +471 -0
  672. package/.merlin-core/skills/general/skill-creator/eval-viewer/viewer.html +1325 -0
  673. package/.merlin-core/skills/general/skill-creator/references/schemas.md +439 -0
  674. package/.merlin-core/skills/general/skill-creator/scripts/__init__.py +0 -0
  675. package/.merlin-core/skills/general/skill-creator/scripts/aggregate_benchmark.py +401 -0
  676. package/.merlin-core/skills/general/skill-creator/scripts/generate_report.py +326 -0
  677. package/.merlin-core/skills/general/skill-creator/scripts/improve_description.py +247 -0
  678. package/.merlin-core/skills/general/skill-creator/scripts/package_skill.py +136 -0
  679. package/.merlin-core/skills/general/skill-creator/scripts/quick_validate.py +103 -0
  680. package/.merlin-core/skills/general/skill-creator/scripts/run_eval.py +310 -0
  681. package/.merlin-core/skills/general/skill-creator/scripts/run_loop.py +328 -0
  682. package/.merlin-core/skills/general/skill-creator/scripts/utils.py +47 -0
  683. package/.merlin-core/skills/general/start-here/SKILL.md +63 -0
  684. package/.merlin-core/skills/general/start-here/recipes.json +758 -0
  685. package/.merlin-core/skills/general/start-here/recipes.schema.json +57 -0
  686. package/.merlin-core/skills/general/static-analysis/SKILL.md +151 -0
  687. package/.merlin-core/skills/general/tailwind-design-system/SKILL.md +201 -0
  688. package/.merlin-core/skills/general/tailwind-design-system/references/advanced-v4.md +152 -0
  689. package/.merlin-core/skills/general/tailwind-design-system/references/component-patterns.md +353 -0
  690. package/.merlin-core/skills/general/teach-method/SKILL.md +86 -0
  691. package/.merlin-core/skills/general/team-execution/SKILL.md +67 -0
  692. package/.merlin-core/skills/general/testing/SKILL.md +412 -0
  693. package/.merlin-core/skills/general/token-economy/SKILL.md +55 -0
  694. package/.merlin-core/skills/general/vps-security-hardening/SKILL.md +406 -0
  695. package/.merlin-core/skills/general/web-quality/SKILL.md +180 -0
  696. package/.merlin-core/skills/general/webapp-testing/SKILL.md +153 -0
  697. package/.merlin-core/skills/general/webapp-testing/scripts/screenshot_compare.py +72 -0
  698. package/.merlin-core/skills/general/webapp-testing/scripts/with_server.py +103 -0
  699. package/.merlin-core/skills/general/xlsx/SKILL.md +167 -0
  700. package/.merlin-core/skills/general/xlsx/references/nodejs-sheetjs-styled-reports.md +141 -0
  701. package/.merlin-core/skills/general/xlsx/references/windows-setup.md +17 -0
  702. package/.merlin-core/skills/general/xlsx/scripts/recalc.py +184 -0
  703. package/.merlin-core/skills/general/xlsx/scripts/styled-report.js +130 -0
  704. package/.merlin-core/skills/general/yolo-mode/SKILL.md +60 -0
  705. package/.merlin-core/skills/general/youtube-transcript/SKILL.md +177 -0
  706. package/.merlin-core/skills/general/youtube-transcript/scripts/fetch_transcript.py +188 -0
  707. package/.merlin-core/skills/general/youtube-transcript/scripts/gladia_transcribe.mjs +230 -0
  708. package/.merlin-core/tools/commands/activate.js +72 -0
  709. package/.merlin-core/tools/commands/archive-thoughts.js +181 -0
  710. package/.merlin-core/tools/commands/backup.js +156 -0
  711. package/.merlin-core/tools/commands/certify-process.js +196 -0
  712. package/.merlin-core/tools/commands/convert.js +87 -0
  713. package/.merlin-core/tools/commands/cron.js +147 -0
  714. package/.merlin-core/tools/commands/disable.js +73 -0
  715. package/.merlin-core/tools/commands/doc-sync.js +127 -0
  716. package/.merlin-core/tools/commands/eval-skill.js +193 -0
  717. package/.merlin-core/tools/commands/frontmatter.js +49 -0
  718. package/.merlin-core/tools/commands/heartbeat.js +43 -0
  719. package/.merlin-core/tools/commands/index-thoughts.js +35 -0
  720. package/.merlin-core/tools/commands/install-remote-approve.js +184 -0
  721. package/.merlin-core/tools/commands/install.js +81 -0
  722. package/.merlin-core/tools/commands/lib/__verify__/diff-reports.js +170 -0
  723. package/.merlin-core/tools/commands/lib/fs-safe.js +186 -0
  724. package/.merlin-core/tools/commands/lib/preflight.js +607 -0
  725. package/.merlin-core/tools/commands/lib/preserve.js +232 -0
  726. package/.merlin-core/tools/commands/lib/project-config.template.yaml +69 -0
  727. package/.merlin-core/tools/commands/lib/report.js +231 -0
  728. package/.merlin-core/tools/commands/lib/settings-merge.js +134 -0
  729. package/.merlin-core/tools/commands/license.js +52 -0
  730. package/.merlin-core/tools/commands/list.js +125 -0
  731. package/.merlin-core/tools/commands/migrate-alkimia.js +271 -0
  732. package/.merlin-core/tools/commands/modules.js +68 -0
  733. package/.merlin-core/tools/commands/provision.js +83 -0
  734. package/.merlin-core/tools/commands/prune-feedback.js +114 -0
  735. package/.merlin-core/tools/commands/run-process.js +28 -0
  736. package/.merlin-core/tools/commands/state.js +79 -0
  737. package/.merlin-core/tools/commands/sync-bridges.js +197 -0
  738. package/.merlin-core/tools/commands/upgrade.js +1135 -0
  739. package/.merlin-core/tools/commands/validate-recipes.js +218 -0
  740. package/.merlin-core/tools/commands/validate.js +159 -0
  741. package/.merlin-core/tools/commands/yolo.js +82 -0
  742. package/.merlin-core/tools/compose-rules.mjs +179 -0
  743. package/.merlin-core/tools/disable-module.mjs +150 -0
  744. package/.merlin-core/tools/lib/deployer.mjs +131 -0
  745. package/.merlin-core/tools/lib/modules-activation.mjs +225 -0
  746. package/.merlin-core/tools/merlin-tools.js +153 -0
  747. package/.merlin-core/tools/migrate-frontmatter-v3.js +192 -0
  748. package/.merlin-core/tools/modules-catalog.mjs +174 -0
  749. package/.merlin-core/tools/provision-module.mjs +191 -0
  750. package/.merlin-core/tools/verify-module.mjs +99 -0
  751. package/.merlin-core/tools/vps-security-audit.sh +234 -0
  752. package/INSTALL.md +312 -0
  753. package/LICENSE +118 -0
  754. package/PRIVACY-LICENSING.md +65 -0
  755. package/README.md +391 -0
  756. package/bin/README.md +15 -0
  757. package/bin/convert-to-merlin.sh +109 -0
  758. package/bin/fleet-patch-hooks.sh +144 -0
  759. package/bin/fleet-patch-v3-fixes.sh +127 -0
  760. package/bin/merlin-init.js +232 -0
  761. package/bin/merlin.js +321 -0
  762. package/package.json +127 -0
@@ -0,0 +1,2523 @@
1
+ <!-- Adapted from czlonkowski/n8n-skills (MIT). Source files: SKILL.md, DEPENDENCIES.md, OPERATION_PATTERNS.md -->
2
+
3
+ # n8n Node Configuration
4
+
5
+ Expert guidance for operation-aware node configuration with property dependencies.
6
+
7
+ ---
8
+
9
+ ## Configuration Philosophy
10
+
11
+ **Progressive disclosure**: Start minimal, add complexity as needed
12
+
13
+ Configuration best practices:
14
+
15
+ - `get_node` with `detail: "standard"` is the most used discovery pattern
16
+ - 56 seconds average between configuration edits
17
+ - Covers 95% of use cases with 1-2K tokens response
18
+
19
+ **Key insight**: Most configurations need only standard detail, not full schema!
20
+
21
+ ---
22
+
23
+ ## Core Concepts
24
+
25
+ ### 1. Operation-Aware Configuration
26
+
27
+ **Not all fields are always required** - it depends on operation!
28
+
29
+ **Example**: Slack node
30
+
31
+ ```javascript
32
+ // For operation='post'
33
+ {
34
+ "resource": "message",
35
+ "operation": "post",
36
+ "channel": "#general", // Required for post
37
+ "text": "Hello!" // Required for post
38
+ }
39
+
40
+ // For operation='update'
41
+ {
42
+ "resource": "message",
43
+ "operation": "update",
44
+ "messageId": "123", // Required for update (different!)
45
+ "text": "Updated!" // Required for update
46
+ // channel NOT required for update
47
+ }
48
+ ```
49
+
50
+ **Key**: Resource + operation determine which fields are required!
51
+
52
+ ### 2. Property Dependencies
53
+
54
+ **Fields appear/disappear based on other field values**
55
+
56
+ **Example**: HTTP Request node
57
+
58
+ ```javascript
59
+ // When method='GET'
60
+ {
61
+ "method": "GET",
62
+ "url": "https://api.example.com"
63
+ // sendBody not shown (GET doesn't have body)
64
+ }
65
+
66
+ // When method='POST'
67
+ {
68
+ "method": "POST",
69
+ "url": "https://api.example.com",
70
+ "sendBody": true, // Now visible!
71
+ "body": { // Required when sendBody=true
72
+ "contentType": "json",
73
+ "content": {...}
74
+ }
75
+ }
76
+ ```
77
+
78
+ **Mechanism**: displayOptions control field visibility
79
+
80
+ ### 3. Progressive Discovery
81
+
82
+ **Use the right detail level**:
83
+
84
+ 1. **get_node({detail: "standard"})** - DEFAULT
85
+ - Quick overview (~1-2K tokens)
86
+ - Required fields + common options
87
+ - **Use first** - covers 95% of needs
88
+
89
+ 2. **get_node({mode: "search_properties", propertyQuery: "..."})** (for finding specific fields)
90
+ - Find properties by name
91
+ - Use when looking for auth, body, headers, etc.
92
+
93
+ 3. **get_node({detail: "full"})** (complete schema)
94
+ - All properties (~3-8K tokens)
95
+ - Use only when standard detail is insufficient
96
+
97
+ > **Cross-reference**: For detailed `get_node` tool usage, see [mcp-tools-expert.md](../mcp-tools-expert.md).
98
+
99
+ ---
100
+
101
+ ## Configuration Workflow
102
+
103
+ ### Standard Process
104
+
105
+ ```
106
+ 1. Identify node type and operation
107
+ |
108
+ 2. Use get_node (standard detail is default)
109
+ |
110
+ 3. Configure required fields
111
+ |
112
+ 4. Validate configuration
113
+ |
114
+ 5. If field unclear -> get_node({mode: "search_properties"})
115
+ |
116
+ 6. Add optional fields as needed
117
+ |
118
+ 7. Validate again
119
+ |
120
+ 8. Deploy
121
+ ```
122
+
123
+ > **Cross-reference**: For validation details, see [validation-expert.md](../validation-expert.md). For where nodes fit in workflow patterns, see [workflow-patterns.md](../workflow-patterns.md).
124
+
125
+ ### Example: Configuring HTTP Request
126
+
127
+ **Step 1**: Identify what you need
128
+
129
+ ```javascript
130
+ // Goal: POST JSON to API
131
+ ```
132
+
133
+ **Step 2**: Get node info
134
+
135
+ ```javascript
136
+ const info = get_node({
137
+ nodeType: "nodes-base.httpRequest",
138
+ });
139
+
140
+ // Returns: method, url, sendBody, body, authentication required/optional
141
+ ```
142
+
143
+ **Step 3**: Minimal config
144
+
145
+ ```javascript
146
+ {
147
+ "method": "POST",
148
+ "url": "https://api.example.com/create",
149
+ "authentication": "none"
150
+ }
151
+ ```
152
+
153
+ **Step 4**: Validate
154
+
155
+ ```javascript
156
+ validate_node({
157
+ nodeType: "nodes-base.httpRequest",
158
+ config,
159
+ profile: "runtime",
160
+ });
161
+ // -> Error: "sendBody required for POST"
162
+ ```
163
+
164
+ **Step 5**: Add required field
165
+
166
+ ```javascript
167
+ {
168
+ "method": "POST",
169
+ "url": "https://api.example.com/create",
170
+ "authentication": "none",
171
+ "sendBody": true
172
+ }
173
+ ```
174
+
175
+ **Step 6**: Validate again
176
+
177
+ ```javascript
178
+ validate_node({...});
179
+ // -> Error: "body required when sendBody=true"
180
+ ```
181
+
182
+ **Step 7**: Complete configuration
183
+
184
+ ```javascript
185
+ {
186
+ "method": "POST",
187
+ "url": "https://api.example.com/create",
188
+ "authentication": "none",
189
+ "sendBody": true,
190
+ "body": {
191
+ "contentType": "json",
192
+ "content": {
193
+ "name": "={{$json.name}}",
194
+ "email": "={{$json.email}}"
195
+ }
196
+ }
197
+ }
198
+ ```
199
+
200
+ **Step 8**: Final validation
201
+
202
+ ```javascript
203
+ validate_node({...});
204
+ // -> Valid!
205
+ ```
206
+
207
+ ---
208
+
209
+ ## get_node Detail Levels
210
+
211
+ ### Standard Detail (DEFAULT - Use This!)
212
+
213
+ ```javascript
214
+ get_node({
215
+ nodeType: "nodes-base.slack",
216
+ });
217
+ // detail="standard" is the default
218
+ ```
219
+
220
+ **Returns** (~1-2K tokens):
221
+
222
+ - Required fields
223
+ - Common options
224
+ - Operation list
225
+ - Metadata
226
+
227
+ **Use**: 95% of configuration needs
228
+
229
+ ### Full Detail (Use Sparingly)
230
+
231
+ ```javascript
232
+ get_node({
233
+ nodeType: "nodes-base.slack",
234
+ detail: "full",
235
+ });
236
+ ```
237
+
238
+ **Returns** (~3-8K tokens):
239
+
240
+ - Complete schema
241
+ - All properties
242
+ - All nested options
243
+
244
+ **Warning**: Large response, use only when standard insufficient
245
+
246
+ ### Search Properties Mode
247
+
248
+ ```javascript
249
+ get_node({
250
+ nodeType: "nodes-base.httpRequest",
251
+ mode: "search_properties",
252
+ propertyQuery: "auth",
253
+ });
254
+ ```
255
+
256
+ **Use**: Find authentication, headers, body fields, etc.
257
+
258
+ > **Cross-reference**: For complete `get_node` modes and parameters, see [mcp-tools-expert.md](../mcp-tools-expert.md).
259
+
260
+ ### Decision Tree
261
+
262
+ ```
263
+ +-----------------------------------+
264
+ | Starting new node config? |
265
+ +-----------------------------------+
266
+ | YES -> get_node (standard) |
267
+ +-----------------------------------+
268
+ |
269
+ +-----------------------------------+
270
+ | Standard has what you need? |
271
+ +-----------------------------------+
272
+ | YES -> Configure with it |
273
+ | NO -> Continue |
274
+ +-----------------------------------+
275
+ |
276
+ +-----------------------------------+
277
+ | Looking for specific field? |
278
+ +-----------------------------------+
279
+ | YES -> search_properties mode |
280
+ | NO -> Continue |
281
+ +-----------------------------------+
282
+ |
283
+ +-----------------------------------+
284
+ | Still need more details? |
285
+ +-----------------------------------+
286
+ | YES -> get_node({detail: "full"}) |
287
+ +-----------------------------------+
288
+ ```
289
+
290
+ ---
291
+
292
+ ## Operation Patterns
293
+
294
+ Common node configuration patterns organized by node type and operation.
295
+
296
+ ### Overview
297
+
298
+ **Purpose**: Quick reference for common node configurations
299
+
300
+ **Coverage**: Top 20 most-used nodes from 525 available
301
+
302
+ **Pattern format**:
303
+
304
+ - Minimal valid configuration
305
+ - Common options
306
+ - Real-world examples
307
+ - Gotchas and tips
308
+
309
+ ---
310
+
311
+ ### HTTP & API Nodes
312
+
313
+ #### HTTP Request (nodes-base.httpRequest)
314
+
315
+ Most versatile node for HTTP operations
316
+
317
+ ##### GET Request
318
+
319
+ **Minimal**:
320
+
321
+ ```javascript
322
+ {
323
+ "method": "GET",
324
+ "url": "https://api.example.com/users",
325
+ "authentication": "none"
326
+ }
327
+ ```
328
+
329
+ **With query parameters**:
330
+
331
+ ```javascript
332
+ {
333
+ "method": "GET",
334
+ "url": "https://api.example.com/users",
335
+ "authentication": "none",
336
+ "sendQuery": true,
337
+ "queryParameters": {
338
+ "parameters": [
339
+ {
340
+ "name": "limit",
341
+ "value": "100"
342
+ },
343
+ {
344
+ "name": "offset",
345
+ "value": "={{$json.offset}}"
346
+ }
347
+ ]
348
+ }
349
+ }
350
+ ```
351
+
352
+ **With authentication**:
353
+
354
+ ```javascript
355
+ {
356
+ "method": "GET",
357
+ "url": "https://api.example.com/users",
358
+ "authentication": "predefinedCredentialType",
359
+ "nodeCredentialType": "httpHeaderAuth"
360
+ }
361
+ ```
362
+
363
+ ##### POST with JSON
364
+
365
+ **Minimal**:
366
+
367
+ ```javascript
368
+ {
369
+ "method": "POST",
370
+ "url": "https://api.example.com/users",
371
+ "authentication": "none",
372
+ "sendBody": true,
373
+ "body": {
374
+ "contentType": "json",
375
+ "content": {
376
+ "name": "John Doe",
377
+ "email": "john@example.com"
378
+ }
379
+ }
380
+ }
381
+ ```
382
+
383
+ **With expressions**:
384
+
385
+ ```javascript
386
+ {
387
+ "method": "POST",
388
+ "url": "https://api.example.com/users",
389
+ "authentication": "none",
390
+ "sendBody": true,
391
+ "body": {
392
+ "contentType": "json",
393
+ "content": {
394
+ "name": "={{$json.name}}",
395
+ "email": "={{$json.email}}",
396
+ "metadata": {
397
+ "source": "n8n",
398
+ "timestamp": "={{$now.toISO()}}"
399
+ }
400
+ }
401
+ }
402
+ }
403
+ ```
404
+
405
+ **Gotcha**: Remember `sendBody: true` for POST/PUT/PATCH!
406
+
407
+ ##### PUT/PATCH Request
408
+
409
+ **Pattern**: Same as POST, but method changes
410
+
411
+ ```javascript
412
+ {
413
+ "method": "PUT", // or "PATCH"
414
+ "url": "https://api.example.com/users/123",
415
+ "authentication": "none",
416
+ "sendBody": true,
417
+ "body": {
418
+ "contentType": "json",
419
+ "content": {
420
+ "name": "Updated Name"
421
+ }
422
+ }
423
+ }
424
+ ```
425
+
426
+ ##### DELETE Request
427
+
428
+ **Minimal** (no body):
429
+
430
+ ```javascript
431
+ {
432
+ "method": "DELETE",
433
+ "url": "https://api.example.com/users/123",
434
+ "authentication": "none"
435
+ }
436
+ ```
437
+
438
+ **With body** (some APIs allow):
439
+
440
+ ```javascript
441
+ {
442
+ "method": "DELETE",
443
+ "url": "https://api.example.com/users",
444
+ "authentication": "none",
445
+ "sendBody": true,
446
+ "body": {
447
+ "contentType": "json",
448
+ "content": {
449
+ "ids": ["123", "456"]
450
+ }
451
+ }
452
+ }
453
+ ```
454
+
455
+ ---
456
+
457
+ #### Webhook (nodes-base.webhook)
458
+
459
+ Most common trigger - 813 searches!
460
+
461
+ ##### Basic Webhook
462
+
463
+ **Minimal**:
464
+
465
+ ```javascript
466
+ {
467
+ "path": "my-webhook",
468
+ "httpMethod": "POST",
469
+ "responseMode": "onReceived"
470
+ }
471
+ ```
472
+
473
+ **Gotcha**: Webhook data is under `$json.body`, not `$json`!
474
+
475
+ ```javascript
476
+ // Wrong
477
+ {
478
+ "text": "={{$json.email}}"
479
+ }
480
+
481
+ // Correct
482
+ {
483
+ "text": "={{$json.body.email}}"
484
+ }
485
+ ```
486
+
487
+ ##### Webhook with Authentication
488
+
489
+ **Header auth**:
490
+
491
+ ```javascript
492
+ {
493
+ "path": "secure-webhook",
494
+ "httpMethod": "POST",
495
+ "responseMode": "onReceived",
496
+ "authentication": "headerAuth",
497
+ "options": {
498
+ "responseCode": 200,
499
+ "responseData": "{\n \"success\": true\n}"
500
+ }
501
+ }
502
+ ```
503
+
504
+ ##### Webhook Returning Data
505
+
506
+ **Custom response**:
507
+
508
+ ```javascript
509
+ {
510
+ "path": "my-webhook",
511
+ "httpMethod": "POST",
512
+ "responseMode": "lastNode", // Return data from last node
513
+ "options": {
514
+ "responseCode": 201,
515
+ "responseHeaders": {
516
+ "entries": [
517
+ {
518
+ "name": "Content-Type",
519
+ "value": "application/json"
520
+ }
521
+ ]
522
+ }
523
+ }
524
+ }
525
+ ```
526
+
527
+ ---
528
+
529
+ ### Communication Nodes
530
+
531
+ #### Slack (nodes-base.slack)
532
+
533
+ Popular choice for AI agent workflows
534
+
535
+ ##### Post Message
536
+
537
+ **Minimal**:
538
+
539
+ ```javascript
540
+ {
541
+ "resource": "message",
542
+ "operation": "post",
543
+ "channel": "#general",
544
+ "text": "Hello from n8n!"
545
+ }
546
+ ```
547
+
548
+ **With dynamic content**:
549
+
550
+ ```javascript
551
+ {
552
+ "resource": "message",
553
+ "operation": "post",
554
+ "channel": "={{$json.channel}}",
555
+ "text": "New user: {{$json.name}} ({{$json.email}})"
556
+ }
557
+ ```
558
+
559
+ **With attachments**:
560
+
561
+ ```javascript
562
+ {
563
+ "resource": "message",
564
+ "operation": "post",
565
+ "channel": "#alerts",
566
+ "text": "Error Alert",
567
+ "attachments": [
568
+ {
569
+ "color": "#ff0000",
570
+ "fields": [
571
+ {
572
+ "title": "Error Type",
573
+ "value": "={{$json.errorType}}"
574
+ },
575
+ {
576
+ "title": "Timestamp",
577
+ "value": "={{$now.toLocaleString()}}"
578
+ }
579
+ ]
580
+ }
581
+ ]
582
+ }
583
+ ```
584
+
585
+ **Gotcha**: Channel must start with `#` for public channels or be a channel ID!
586
+
587
+ ##### Update Message
588
+
589
+ **Minimal**:
590
+
591
+ ```javascript
592
+ {
593
+ "resource": "message",
594
+ "operation": "update",
595
+ "messageId": "1234567890.123456", // From previous message post
596
+ "text": "Updated message content"
597
+ }
598
+ ```
599
+
600
+ **Note**: `messageId` required, `channel` optional (can be inferred)
601
+
602
+ ##### Create Channel
603
+
604
+ **Minimal**:
605
+
606
+ ```javascript
607
+ {
608
+ "resource": "channel",
609
+ "operation": "create",
610
+ "name": "new-project-channel", // Lowercase, no spaces
611
+ "isPrivate": false
612
+ }
613
+ ```
614
+
615
+ **Gotcha**: Channel name must be lowercase, no spaces, 1-80 chars!
616
+
617
+ ---
618
+
619
+ #### Gmail (nodes-base.gmail)
620
+
621
+ Popular for email automation
622
+
623
+ ##### Send Email
624
+
625
+ **Minimal**:
626
+
627
+ ```javascript
628
+ {
629
+ "resource": "message",
630
+ "operation": "send",
631
+ "to": "user@example.com",
632
+ "subject": "Hello from n8n",
633
+ "message": "This is the email body"
634
+ }
635
+ ```
636
+
637
+ **With dynamic content**:
638
+
639
+ ```javascript
640
+ {
641
+ "resource": "message",
642
+ "operation": "send",
643
+ "to": "={{$json.email}}",
644
+ "subject": "Order Confirmation #{{$json.orderId}}",
645
+ "message": "Dear {{$json.name}},\n\nYour order has been confirmed.\n\nThank you!",
646
+ "options": {
647
+ "ccList": "admin@example.com",
648
+ "replyTo": "support@example.com"
649
+ }
650
+ }
651
+ ```
652
+
653
+ ##### Get Email
654
+
655
+ **Minimal**:
656
+
657
+ ```javascript
658
+ {
659
+ "resource": "message",
660
+ "operation": "getAll",
661
+ "returnAll": false,
662
+ "limit": 10
663
+ }
664
+ ```
665
+
666
+ **With filters**:
667
+
668
+ ```javascript
669
+ {
670
+ "resource": "message",
671
+ "operation": "getAll",
672
+ "returnAll": false,
673
+ "limit": 50,
674
+ "filters": {
675
+ "q": "is:unread from:important@example.com",
676
+ "labelIds": ["INBOX"]
677
+ }
678
+ }
679
+ ```
680
+
681
+ ---
682
+
683
+ ### Database Nodes
684
+
685
+ #### Postgres (nodes-base.postgres)
686
+
687
+ Database operations - 456 templates
688
+
689
+ ##### Execute Query
690
+
691
+ **Minimal** (SELECT):
692
+
693
+ ```javascript
694
+ {
695
+ "operation": "executeQuery",
696
+ "query": "SELECT * FROM users WHERE active = true LIMIT 100"
697
+ }
698
+ ```
699
+
700
+ **With parameters** (SQL injection prevention):
701
+
702
+ ```javascript
703
+ {
704
+ "operation": "executeQuery",
705
+ "query": "SELECT * FROM users WHERE email = $1 AND active = $2",
706
+ "additionalFields": {
707
+ "mode": "list",
708
+ "queryParameters": "user@example.com,true"
709
+ }
710
+ }
711
+ ```
712
+
713
+ **Gotcha**: ALWAYS use parameterized queries for user input!
714
+
715
+ ```javascript
716
+ // BAD - SQL injection risk!
717
+ {
718
+ "query": "SELECT * FROM users WHERE email = '{{$json.email}}'"
719
+ }
720
+
721
+ // GOOD - Parameterized
722
+ {
723
+ "query": "SELECT * FROM users WHERE email = $1",
724
+ "additionalFields": {
725
+ "mode": "list",
726
+ "queryParameters": "={{$json.email}}"
727
+ }
728
+ }
729
+ ```
730
+
731
+ ##### Insert
732
+
733
+ **Minimal**:
734
+
735
+ ```javascript
736
+ {
737
+ "operation": "insert",
738
+ "table": "users",
739
+ "columns": "name,email,created_at",
740
+ "additionalFields": {
741
+ "mode": "list",
742
+ "queryParameters": "John Doe,john@example.com,NOW()"
743
+ }
744
+ }
745
+ ```
746
+
747
+ **With expressions**:
748
+
749
+ ```javascript
750
+ {
751
+ "operation": "insert",
752
+ "table": "users",
753
+ "columns": "name,email,metadata",
754
+ "additionalFields": {
755
+ "mode": "list",
756
+ "queryParameters": "={{$json.name}},={{$json.email}},{{JSON.stringify($json)}}"
757
+ }
758
+ }
759
+ ```
760
+
761
+ ##### Update
762
+
763
+ **Minimal**:
764
+
765
+ ```javascript
766
+ {
767
+ "operation": "update",
768
+ "table": "users",
769
+ "updateKey": "id",
770
+ "columns": "name,email",
771
+ "additionalFields": {
772
+ "mode": "list",
773
+ "queryParameters": "={{$json.id}},Updated Name,newemail@example.com"
774
+ }
775
+ }
776
+ ```
777
+
778
+ ---
779
+
780
+ ### Data Transformation Nodes
781
+
782
+ #### Set (nodes-base.set)
783
+
784
+ Most used transformation - 68% of workflows!
785
+
786
+ ##### Set Fixed Values
787
+
788
+ **Minimal**:
789
+
790
+ ```javascript
791
+ {
792
+ "mode": "manual",
793
+ "duplicateItem": false,
794
+ "assignments": {
795
+ "assignments": [
796
+ {
797
+ "name": "status",
798
+ "value": "active",
799
+ "type": "string"
800
+ },
801
+ {
802
+ "name": "count",
803
+ "value": 100,
804
+ "type": "number"
805
+ }
806
+ ]
807
+ }
808
+ }
809
+ ```
810
+
811
+ ##### Set from Input Data
812
+
813
+ **Mapping data**:
814
+
815
+ ```javascript
816
+ {
817
+ "mode": "manual",
818
+ "duplicateItem": false,
819
+ "assignments": {
820
+ "assignments": [
821
+ {
822
+ "name": "fullName",
823
+ "value": "={{$json.firstName}} {{$json.lastName}}",
824
+ "type": "string"
825
+ },
826
+ {
827
+ "name": "email",
828
+ "value": "={{$json.email.toLowerCase()}}",
829
+ "type": "string"
830
+ },
831
+ {
832
+ "name": "timestamp",
833
+ "value": "={{$now.toISO()}}",
834
+ "type": "string"
835
+ }
836
+ ]
837
+ }
838
+ }
839
+ ```
840
+
841
+ **Gotcha**: Use correct `type` for each field!
842
+
843
+ ```javascript
844
+ // Wrong type
845
+ {
846
+ "name": "age",
847
+ "value": "25", // String
848
+ "type": "string" // Will be string "25"
849
+ }
850
+
851
+ // Correct type
852
+ {
853
+ "name": "age",
854
+ "value": 25, // Number
855
+ "type": "number" // Will be number 25
856
+ }
857
+ ```
858
+
859
+ ---
860
+
861
+ #### Code (nodes-base.code)
862
+
863
+ JavaScript execution - 42% of workflows
864
+
865
+ ##### Simple Transformation
866
+
867
+ **Minimal**:
868
+
869
+ ```javascript
870
+ {
871
+ "mode": "runOnceForAllItems",
872
+ "jsCode": "return $input.all().map(item => ({\n json: {\n name: item.json.name.toUpperCase(),\n email: item.json.email\n }\n}));"
873
+ }
874
+ ```
875
+
876
+ **Per-item processing**:
877
+
878
+ ```javascript
879
+ {
880
+ "mode": "runOnceForEachItem",
881
+ "jsCode": "// Process each item\nconst data = $input.item.json;\n\nreturn {\n json: {\n fullName: `${data.firstName} ${data.lastName}`,\n email: data.email.toLowerCase(),\n timestamp: new Date().toISOString()\n }\n};"
882
+ }
883
+ ```
884
+
885
+ **Gotcha**: In Code nodes, use `$input.item.json` or `$input.all()`, NOT `{{...}}`!
886
+
887
+ ```javascript
888
+ // Wrong - expressions don't work in Code nodes
889
+ {
890
+ "jsCode": "const name = '={{$json.name}}';"
891
+ }
892
+
893
+ // Correct - direct access
894
+ {
895
+ "jsCode": "const name = $input.item.json.name;"
896
+ }
897
+ ```
898
+
899
+ ---
900
+
901
+ ### Conditional Nodes
902
+
903
+ #### IF (nodes-base.if)
904
+
905
+ Conditional logic - 38% of workflows
906
+
907
+ ##### String Comparison
908
+
909
+ **Equals** (binary):
910
+
911
+ ```javascript
912
+ {
913
+ "conditions": {
914
+ "string": [
915
+ {
916
+ "value1": "={{$json.status}}",
917
+ "operation": "equals",
918
+ "value2": "active"
919
+ }
920
+ ]
921
+ }
922
+ }
923
+ ```
924
+
925
+ **Contains** (binary):
926
+
927
+ ```javascript
928
+ {
929
+ "conditions": {
930
+ "string": [
931
+ {
932
+ "value1": "={{$json.email}}",
933
+ "operation": "contains",
934
+ "value2": "@example.com"
935
+ }
936
+ ]
937
+ }
938
+ }
939
+ ```
940
+
941
+ **isEmpty** (unary):
942
+
943
+ ```javascript
944
+ {
945
+ "conditions": {
946
+ "string": [
947
+ {
948
+ "value1": "={{$json.email}}",
949
+ "operation": "isEmpty"
950
+ // No value2 - unary operator
951
+ // singleValue: true added by auto-sanitization
952
+ }
953
+ ]
954
+ }
955
+ }
956
+ ```
957
+
958
+ **Gotcha**: Unary operators (isEmpty, isNotEmpty) don't need value2!
959
+
960
+ ##### Number Comparison
961
+
962
+ **Greater than**:
963
+
964
+ ```javascript
965
+ {
966
+ "conditions": {
967
+ "number": [
968
+ {
969
+ "value1": "={{$json.age}}",
970
+ "operation": "larger",
971
+ "value2": 18
972
+ }
973
+ ]
974
+ }
975
+ }
976
+ ```
977
+
978
+ ##### Boolean Comparison
979
+
980
+ **Is true**:
981
+
982
+ ```javascript
983
+ {
984
+ "conditions": {
985
+ "boolean": [
986
+ {
987
+ "value1": "={{$json.isActive}}",
988
+ "operation": "true"
989
+ // Unary - no value2
990
+ }
991
+ ]
992
+ }
993
+ }
994
+ ```
995
+
996
+ ##### Multiple Conditions (AND)
997
+
998
+ **All must match**:
999
+
1000
+ ```javascript
1001
+ {
1002
+ "conditions": {
1003
+ "string": [
1004
+ {
1005
+ "value1": "={{$json.status}}",
1006
+ "operation": "equals",
1007
+ "value2": "active"
1008
+ }
1009
+ ],
1010
+ "number": [
1011
+ {
1012
+ "value1": "={{$json.age}}",
1013
+ "operation": "larger",
1014
+ "value2": 18
1015
+ }
1016
+ ]
1017
+ },
1018
+ "combineOperation": "all" // AND logic
1019
+ }
1020
+ ```
1021
+
1022
+ ##### Multiple Conditions (OR)
1023
+
1024
+ **Any can match**:
1025
+
1026
+ ```javascript
1027
+ {
1028
+ "conditions": {
1029
+ "string": [
1030
+ {
1031
+ "value1": "={{$json.status}}",
1032
+ "operation": "equals",
1033
+ "value2": "active"
1034
+ },
1035
+ {
1036
+ "value1": "={{$json.status}}",
1037
+ "operation": "equals",
1038
+ "value2": "pending"
1039
+ }
1040
+ ]
1041
+ },
1042
+ "combineOperation": "any" // OR logic
1043
+ }
1044
+ ```
1045
+
1046
+ ---
1047
+
1048
+ #### Switch (nodes-base.switch)
1049
+
1050
+ Multi-way routing - 18% of workflows
1051
+
1052
+ ##### Basic Switch
1053
+
1054
+ **Minimal**:
1055
+
1056
+ ```javascript
1057
+ {
1058
+ "mode": "rules",
1059
+ "rules": {
1060
+ "rules": [
1061
+ {
1062
+ "conditions": {
1063
+ "string": [
1064
+ {
1065
+ "value1": "={{$json.status}}",
1066
+ "operation": "equals",
1067
+ "value2": "active"
1068
+ }
1069
+ ]
1070
+ }
1071
+ },
1072
+ {
1073
+ "conditions": {
1074
+ "string": [
1075
+ {
1076
+ "value1": "={{$json.status}}",
1077
+ "operation": "equals",
1078
+ "value2": "pending"
1079
+ }
1080
+ ]
1081
+ }
1082
+ }
1083
+ ]
1084
+ },
1085
+ "fallbackOutput": "extra" // Catch-all for non-matching
1086
+ }
1087
+ ```
1088
+
1089
+ **Gotcha**: Number of rules must match number of outputs!
1090
+
1091
+ ---
1092
+
1093
+ ### AI Nodes
1094
+
1095
+ #### OpenAI (nodes-langchain.openAi)
1096
+
1097
+ AI operations - 234 templates
1098
+
1099
+ ##### Chat Completion
1100
+
1101
+ **Minimal**:
1102
+
1103
+ ```javascript
1104
+ {
1105
+ "resource": "chat",
1106
+ "operation": "complete",
1107
+ "messages": {
1108
+ "values": [
1109
+ {
1110
+ "role": "user",
1111
+ "content": "={{$json.prompt}}"
1112
+ }
1113
+ ]
1114
+ }
1115
+ }
1116
+ ```
1117
+
1118
+ **With system prompt**:
1119
+
1120
+ ```javascript
1121
+ {
1122
+ "resource": "chat",
1123
+ "operation": "complete",
1124
+ "messages": {
1125
+ "values": [
1126
+ {
1127
+ "role": "system",
1128
+ "content": "You are a helpful assistant specialized in customer support."
1129
+ },
1130
+ {
1131
+ "role": "user",
1132
+ "content": "={{$json.userMessage}}"
1133
+ }
1134
+ ]
1135
+ },
1136
+ "options": {
1137
+ "temperature": 0.7,
1138
+ "maxTokens": 500
1139
+ }
1140
+ }
1141
+ ```
1142
+
1143
+ ---
1144
+
1145
+ ### Schedule Nodes
1146
+
1147
+ #### Schedule Trigger (nodes-base.scheduleTrigger)
1148
+
1149
+ Time-based workflows - 28% have schedule triggers
1150
+
1151
+ ##### Daily at Specific Time
1152
+
1153
+ **Minimal**:
1154
+
1155
+ ```javascript
1156
+ {
1157
+ "rule": {
1158
+ "interval": [
1159
+ {
1160
+ "field": "hours",
1161
+ "hoursInterval": 24
1162
+ }
1163
+ ],
1164
+ "hour": 9,
1165
+ "minute": 0,
1166
+ "timezone": "America/New_York"
1167
+ }
1168
+ }
1169
+ ```
1170
+
1171
+ **Gotcha**: Always set timezone explicitly!
1172
+
1173
+ ```javascript
1174
+ // Bad - uses server timezone
1175
+ {
1176
+ "rule": {
1177
+ "interval": [...]
1178
+ }
1179
+ }
1180
+
1181
+ // Good - explicit timezone
1182
+ {
1183
+ "rule": {
1184
+ "interval": [...],
1185
+ "timezone": "America/New_York"
1186
+ }
1187
+ }
1188
+ ```
1189
+
1190
+ ##### Every N Minutes
1191
+
1192
+ **Minimal**:
1193
+
1194
+ ```javascript
1195
+ {
1196
+ "rule": {
1197
+ "interval": [
1198
+ {
1199
+ "field": "minutes",
1200
+ "minutesInterval": 15
1201
+ }
1202
+ ]
1203
+ }
1204
+ }
1205
+ ```
1206
+
1207
+ ##### Cron Expression
1208
+
1209
+ **Advanced scheduling**:
1210
+
1211
+ ```javascript
1212
+ {
1213
+ "mode": "cron",
1214
+ "cronExpression": "0 */2 * * *", // Every 2 hours
1215
+ "timezone": "America/New_York"
1216
+ }
1217
+ ```
1218
+
1219
+ ---
1220
+
1221
+ ### Operation Patterns Summary
1222
+
1223
+ **Key Patterns by Category**:
1224
+
1225
+ | Category | Most Common | Key Gotcha |
1226
+ | ------------- | ------------------ | ------------------------- |
1227
+ | HTTP/API | GET, POST JSON | Remember sendBody: true |
1228
+ | Webhooks | POST receiver | Data under $json.body |
1229
+ | Communication | Slack post | Channel format (#name) |
1230
+ | Database | SELECT with params | Use parameterized queries |
1231
+ | Transform | Set assignments | Correct type per field |
1232
+ | Conditional | IF string equals | Unary vs binary operators |
1233
+ | AI | OpenAI chat | System + user messages |
1234
+ | Schedule | Daily at time | Set timezone explicitly |
1235
+
1236
+ **Configuration Approach**:
1237
+
1238
+ 1. Use patterns as starting point
1239
+ 2. Adapt to your use case
1240
+ 3. Validate configuration
1241
+ 4. Iterate based on errors
1242
+ 5. Deploy when valid
1243
+
1244
+ > **Cross-reference**: For where these node patterns fit within larger workflow compositions, see [workflow-patterns.md](../workflow-patterns.md).
1245
+
1246
+ ---
1247
+
1248
+ ## Property Dependencies Deep Dive
1249
+
1250
+ ### What Are Property Dependencies?
1251
+
1252
+ **Definition**: Rules that control when fields are visible or required based on other field values.
1253
+
1254
+ **Mechanism**: `displayOptions` in node schema
1255
+
1256
+ **Purpose**:
1257
+
1258
+ - Show relevant fields only
1259
+ - Hide irrelevant fields
1260
+ - Simplify configuration UX
1261
+ - Prevent invalid configurations
1262
+
1263
+ ---
1264
+
1265
+ ### displayOptions Structure
1266
+
1267
+ #### Basic Format
1268
+
1269
+ ```javascript
1270
+ {
1271
+ "name": "fieldName",
1272
+ "type": "string",
1273
+ "displayOptions": {
1274
+ "show": {
1275
+ "otherField": ["value1", "value2"]
1276
+ }
1277
+ }
1278
+ }
1279
+ ```
1280
+
1281
+ **Translation**: Show `fieldName` when `otherField` equals "value1" OR "value2"
1282
+
1283
+ #### Show vs Hide
1284
+
1285
+ ##### show (Most Common)
1286
+
1287
+ **Show field when condition matches**:
1288
+
1289
+ ```javascript
1290
+ {
1291
+ "name": "body",
1292
+ "displayOptions": {
1293
+ "show": {
1294
+ "sendBody": [true]
1295
+ }
1296
+ }
1297
+ }
1298
+ ```
1299
+
1300
+ **Meaning**: Show `body` when `sendBody = true`
1301
+
1302
+ ##### hide (Less Common)
1303
+
1304
+ **Hide field when condition matches**:
1305
+
1306
+ ```javascript
1307
+ {
1308
+ "name": "advanced",
1309
+ "displayOptions": {
1310
+ "hide": {
1311
+ "simpleMode": [true]
1312
+ }
1313
+ }
1314
+ }
1315
+ ```
1316
+
1317
+ **Meaning**: Hide `advanced` when `simpleMode = true`
1318
+
1319
+ #### Multiple Conditions (AND Logic)
1320
+
1321
+ ```javascript
1322
+ {
1323
+ "name": "body",
1324
+ "displayOptions": {
1325
+ "show": {
1326
+ "sendBody": [true],
1327
+ "method": ["POST", "PUT", "PATCH"]
1328
+ }
1329
+ }
1330
+ }
1331
+ ```
1332
+
1333
+ **Meaning**: Show `body` when:
1334
+
1335
+ - `sendBody = true` AND
1336
+ - `method IN (POST, PUT, PATCH)`
1337
+
1338
+ **All conditions must match** (AND logic)
1339
+
1340
+ #### Multiple Values (OR Logic)
1341
+
1342
+ ```javascript
1343
+ {
1344
+ "name": "someField",
1345
+ "displayOptions": {
1346
+ "show": {
1347
+ "method": ["POST", "PUT", "PATCH"]
1348
+ }
1349
+ }
1350
+ }
1351
+ ```
1352
+
1353
+ **Meaning**: Show `someField` when:
1354
+
1355
+ - `method = POST` OR
1356
+ - `method = PUT` OR
1357
+ - `method = PATCH`
1358
+
1359
+ **Any value matches** (OR logic)
1360
+
1361
+ ---
1362
+
1363
+ ### Common Dependency Patterns
1364
+
1365
+ #### Pattern 1: Boolean Toggle
1366
+
1367
+ **Use case**: Optional feature flag
1368
+
1369
+ **Example**: HTTP Request sendBody
1370
+
1371
+ ```javascript
1372
+ // Field: sendBody (boolean)
1373
+ {
1374
+ "name": "sendBody",
1375
+ "type": "boolean",
1376
+ "default": false
1377
+ }
1378
+
1379
+ // Field: body (depends on sendBody)
1380
+ {
1381
+ "name": "body",
1382
+ "displayOptions": {
1383
+ "show": {
1384
+ "sendBody": [true]
1385
+ }
1386
+ }
1387
+ }
1388
+ ```
1389
+
1390
+ **Flow**:
1391
+
1392
+ 1. User sees sendBody checkbox
1393
+ 2. When checked -> body field appears
1394
+ 3. When unchecked -> body field hides
1395
+
1396
+ #### Pattern 2: Resource/Operation Cascade
1397
+
1398
+ **Use case**: Different operations show different fields
1399
+
1400
+ **Example**: Slack message operations
1401
+
1402
+ ```javascript
1403
+ // Operation: post
1404
+ {
1405
+ "name": "channel",
1406
+ "displayOptions": {
1407
+ "show": {
1408
+ "resource": ["message"],
1409
+ "operation": ["post"]
1410
+ }
1411
+ }
1412
+ }
1413
+
1414
+ // Operation: update
1415
+ {
1416
+ "name": "messageId",
1417
+ "displayOptions": {
1418
+ "show": {
1419
+ "resource": ["message"],
1420
+ "operation": ["update"]
1421
+ }
1422
+ }
1423
+ }
1424
+ ```
1425
+
1426
+ **Flow**:
1427
+
1428
+ 1. User selects resource="message"
1429
+ 2. User selects operation="post" -> sees channel
1430
+ 3. User changes to operation="update" -> channel hides, messageId shows
1431
+
1432
+ #### Pattern 3: Type-Specific Configuration
1433
+
1434
+ **Use case**: Different types need different fields
1435
+
1436
+ **Example**: IF node conditions
1437
+
1438
+ ```javascript
1439
+ // String operations
1440
+ {
1441
+ "name": "value2",
1442
+ "displayOptions": {
1443
+ "show": {
1444
+ "conditions.string.0.operation": ["equals", "notEquals", "contains"]
1445
+ }
1446
+ }
1447
+ }
1448
+
1449
+ // Unary operations (isEmpty) don't show value2
1450
+ {
1451
+ "displayOptions": {
1452
+ "hide": {
1453
+ "conditions.string.0.operation": ["isEmpty", "isNotEmpty"]
1454
+ }
1455
+ }
1456
+ }
1457
+ ```
1458
+
1459
+ #### Pattern 4: Method-Specific Fields
1460
+
1461
+ **Use case**: HTTP methods have different options
1462
+
1463
+ **Example**: HTTP Request
1464
+
1465
+ ```javascript
1466
+ // Query parameters (all methods can have)
1467
+ {
1468
+ "name": "queryParameters",
1469
+ "displayOptions": {
1470
+ "show": {
1471
+ "sendQuery": [true]
1472
+ }
1473
+ }
1474
+ }
1475
+
1476
+ // Body (only certain methods)
1477
+ {
1478
+ "name": "body",
1479
+ "displayOptions": {
1480
+ "show": {
1481
+ "sendBody": [true],
1482
+ "method": ["POST", "PUT", "PATCH", "DELETE"]
1483
+ }
1484
+ }
1485
+ }
1486
+ ```
1487
+
1488
+ ---
1489
+
1490
+ ### Finding Property Dependencies
1491
+
1492
+ #### Using get_node with search_properties Mode
1493
+
1494
+ ```javascript
1495
+ // Find properties related to "body"
1496
+ get_node({
1497
+ nodeType: "nodes-base.httpRequest",
1498
+ mode: "search_properties",
1499
+ propertyQuery: "body",
1500
+ });
1501
+ ```
1502
+
1503
+ #### Using get_node with Full Detail
1504
+
1505
+ ```javascript
1506
+ // Get complete schema with displayOptions
1507
+ get_node({
1508
+ nodeType: "nodes-base.httpRequest",
1509
+ detail: "full",
1510
+ });
1511
+ ```
1512
+
1513
+ > **Cross-reference**: For full `get_node` usage including all modes and parameters, see [mcp-tools-expert.md](../mcp-tools-expert.md).
1514
+
1515
+ #### When to Use
1516
+
1517
+ **Use when**:
1518
+
1519
+ - Validation fails with "missing field" but you don't see that field
1520
+ - A field appears/disappears unexpectedly
1521
+ - You need to understand what controls field visibility
1522
+ - Building dynamic configuration tools
1523
+
1524
+ **Don't use when**:
1525
+
1526
+ - Simple configuration (use `get_node` with standard detail)
1527
+ - Just starting configuration
1528
+ - Field requirements are obvious
1529
+
1530
+ ---
1531
+
1532
+ ### Complex Dependency Examples
1533
+
1534
+ #### Example 1: HTTP Request Complete Flow
1535
+
1536
+ **Scenario**: Configuring POST with JSON body
1537
+
1538
+ **Step 1**: Set method
1539
+
1540
+ ```javascript
1541
+ {
1542
+ "method": "POST"
1543
+ // -> sendBody becomes visible
1544
+ }
1545
+ ```
1546
+
1547
+ **Step 2**: Enable body
1548
+
1549
+ ```javascript
1550
+ {
1551
+ "method": "POST",
1552
+ "sendBody": true
1553
+ // -> body field becomes visible AND required
1554
+ }
1555
+ ```
1556
+
1557
+ **Step 3**: Configure body
1558
+
1559
+ ```javascript
1560
+ {
1561
+ "method": "POST",
1562
+ "sendBody": true,
1563
+ "body": {
1564
+ "contentType": "json"
1565
+ // -> content field becomes visible AND required
1566
+ }
1567
+ }
1568
+ ```
1569
+
1570
+ **Step 4**: Add content
1571
+
1572
+ ```javascript
1573
+ {
1574
+ "method": "POST",
1575
+ "sendBody": true,
1576
+ "body": {
1577
+ "contentType": "json",
1578
+ "content": {
1579
+ "name": "John",
1580
+ "email": "john@example.com"
1581
+ }
1582
+ }
1583
+ }
1584
+ // Valid!
1585
+ ```
1586
+
1587
+ **Dependency chain**:
1588
+
1589
+ ```
1590
+ method=POST
1591
+ -> sendBody visible
1592
+ -> sendBody=true
1593
+ -> body visible + required
1594
+ -> body.contentType=json
1595
+ -> body.content visible + required
1596
+ ```
1597
+
1598
+ #### Example 2: IF Node Operator Dependencies
1599
+
1600
+ **Scenario**: String comparison with different operators
1601
+
1602
+ **Binary operator** (equals):
1603
+
1604
+ ```javascript
1605
+ {
1606
+ "conditions": {
1607
+ "string": [
1608
+ {
1609
+ "operation": "equals"
1610
+ // -> value1 required
1611
+ // -> value2 required
1612
+ // -> singleValue should NOT be set
1613
+ }
1614
+ ]
1615
+ }
1616
+ }
1617
+ ```
1618
+
1619
+ **Unary operator** (isEmpty):
1620
+
1621
+ ```javascript
1622
+ {
1623
+ "conditions": {
1624
+ "string": [
1625
+ {
1626
+ "operation": "isEmpty"
1627
+ // -> value1 required
1628
+ // -> value2 should NOT be set
1629
+ // -> singleValue should be true (auto-added)
1630
+ }
1631
+ ]
1632
+ }
1633
+ }
1634
+ ```
1635
+
1636
+ **Dependency table**:
1637
+
1638
+ | Operator | value1 | value2 | singleValue |
1639
+ | ---------- | -------- | -------- | ----------- |
1640
+ | equals | Required | Required | false |
1641
+ | notEquals | Required | Required | false |
1642
+ | contains | Required | Required | false |
1643
+ | isEmpty | Required | Hidden | true |
1644
+ | isNotEmpty | Required | Hidden | true |
1645
+
1646
+ #### Example 3: Slack Operation Matrix
1647
+
1648
+ **Scenario**: Different Slack operations show different fields
1649
+
1650
+ ```javascript
1651
+ // post message
1652
+ {
1653
+ "resource": "message",
1654
+ "operation": "post"
1655
+ // Shows: channel (required), text (required), attachments, blocks
1656
+ }
1657
+
1658
+ // update message
1659
+ {
1660
+ "resource": "message",
1661
+ "operation": "update"
1662
+ // Shows: messageId (required), text (required), channel (optional)
1663
+ }
1664
+
1665
+ // delete message
1666
+ {
1667
+ "resource": "message",
1668
+ "operation": "delete"
1669
+ // Shows: messageId (required), channel (required)
1670
+ // Hides: text, attachments, blocks
1671
+ }
1672
+
1673
+ // get message
1674
+ {
1675
+ "resource": "message",
1676
+ "operation": "get"
1677
+ // Shows: messageId (required), channel (required)
1678
+ // Hides: text, attachments, blocks
1679
+ }
1680
+ ```
1681
+
1682
+ **Field visibility matrix**:
1683
+
1684
+ | Field | post | update | delete | get |
1685
+ | ----------- | -------- | -------- | -------- | -------- |
1686
+ | channel | Required | Optional | Required | Required |
1687
+ | text | Required | Required | Hidden | Hidden |
1688
+ | messageId | Hidden | Required | Required | Required |
1689
+ | attachments | Optional | Optional | Hidden | Hidden |
1690
+ | blocks | Optional | Optional | Hidden | Hidden |
1691
+
1692
+ ---
1693
+
1694
+ ### Nested Dependencies
1695
+
1696
+ #### What Are They?
1697
+
1698
+ **Definition**: Dependencies within object properties
1699
+
1700
+ **Example**: HTTP Request body.contentType controls body.content structure
1701
+
1702
+ ```javascript
1703
+ {
1704
+ "body": {
1705
+ "contentType": "json",
1706
+ // -> content expects JSON object
1707
+ "content": {
1708
+ "key": "value"
1709
+ }
1710
+ }
1711
+ }
1712
+
1713
+ {
1714
+ "body": {
1715
+ "contentType": "form-data",
1716
+ // -> content expects form fields array
1717
+ "content": [
1718
+ {
1719
+ "name": "field1",
1720
+ "value": "value1"
1721
+ }
1722
+ ]
1723
+ }
1724
+ }
1725
+ ```
1726
+
1727
+ #### How to Handle
1728
+
1729
+ **Strategy**: Configure parent first, then children
1730
+
1731
+ ```javascript
1732
+ // Step 1: Parent
1733
+ {
1734
+ "body": {
1735
+ "contentType": "json" // Set parent first
1736
+ }
1737
+ }
1738
+
1739
+ // Step 2: Children (structure determined by parent)
1740
+ {
1741
+ "body": {
1742
+ "contentType": "json",
1743
+ "content": { // JSON object format
1744
+ "key": "value"
1745
+ }
1746
+ }
1747
+ }
1748
+ ```
1749
+
1750
+ ---
1751
+
1752
+ ### Auto-Sanitization and Dependencies
1753
+
1754
+ #### What Auto-Sanitization Fixes
1755
+
1756
+ **Operator structure issues** (IF/Switch nodes):
1757
+
1758
+ **Example**: singleValue property
1759
+
1760
+ ```javascript
1761
+ // You configure (missing singleValue)
1762
+ {
1763
+ "type": "boolean",
1764
+ "operation": "isEmpty"
1765
+ // Missing singleValue
1766
+ }
1767
+
1768
+ // Auto-sanitization adds it
1769
+ {
1770
+ "type": "boolean",
1771
+ "operation": "isEmpty",
1772
+ "singleValue": true // Added automatically
1773
+ }
1774
+ ```
1775
+
1776
+ #### What It Doesn't Fix
1777
+
1778
+ **Missing required fields**:
1779
+
1780
+ ```javascript
1781
+ // You configure (missing channel)
1782
+ {
1783
+ "resource": "message",
1784
+ "operation": "post",
1785
+ "text": "Hello"
1786
+ // Missing required field: channel
1787
+ }
1788
+
1789
+ // Auto-sanitization does NOT add
1790
+ // You must add it yourself
1791
+ {
1792
+ "resource": "message",
1793
+ "operation": "post",
1794
+ "channel": "#general", // You must add
1795
+ "text": "Hello"
1796
+ }
1797
+ ```
1798
+
1799
+ ---
1800
+
1801
+ ### Troubleshooting Dependencies
1802
+
1803
+ #### Problem 1: "Field X is required but not visible"
1804
+
1805
+ **Error**:
1806
+
1807
+ ```json
1808
+ {
1809
+ "type": "missing_required",
1810
+ "property": "body",
1811
+ "message": "body is required"
1812
+ }
1813
+ ```
1814
+
1815
+ **But you don't see body field in configuration!**
1816
+
1817
+ **Solution**:
1818
+
1819
+ ```javascript
1820
+ // Check field dependencies using search_properties
1821
+ get_node({
1822
+ nodeType: "nodes-base.httpRequest",
1823
+ mode: "search_properties",
1824
+ propertyQuery: "body"
1825
+ });
1826
+
1827
+ // Find that body shows when sendBody=true
1828
+ // Add sendBody
1829
+ {
1830
+ "method": "POST",
1831
+ "sendBody": true, // Now body appears!
1832
+ "body": {...}
1833
+ }
1834
+ ```
1835
+
1836
+ #### Problem 2: "Field disappears when I change operation"
1837
+
1838
+ **Scenario**:
1839
+
1840
+ ```javascript
1841
+ // Working configuration
1842
+ {
1843
+ "resource": "message",
1844
+ "operation": "post",
1845
+ "channel": "#general",
1846
+ "text": "Hello"
1847
+ }
1848
+
1849
+ // Change operation
1850
+ {
1851
+ "resource": "message",
1852
+ "operation": "update", // Changed
1853
+ "channel": "#general", // Still here
1854
+ "text": "Updated" // Still here
1855
+ // Missing: messageId (required for update!)
1856
+ }
1857
+ ```
1858
+
1859
+ **Validation error**: "messageId is required"
1860
+
1861
+ **Why**: Different operation = different required fields
1862
+
1863
+ **Solution**:
1864
+
1865
+ ```javascript
1866
+ // Check requirements for new operation
1867
+ get_node({
1868
+ nodeType: "nodes-base.slack"
1869
+ });
1870
+
1871
+ // Configure for update operation
1872
+ {
1873
+ "resource": "message",
1874
+ "operation": "update",
1875
+ "messageId": "1234567890", // Required for update
1876
+ "text": "Updated",
1877
+ "channel": "#general" // Optional for update
1878
+ }
1879
+ ```
1880
+
1881
+ #### Problem 3: "Validation passes but field doesn't save"
1882
+
1883
+ **Scenario**: Field hidden by dependencies after validation
1884
+
1885
+ **Example**:
1886
+
1887
+ ```javascript
1888
+ // Configure
1889
+ {
1890
+ "method": "GET",
1891
+ "sendBody": true, // GET doesn't support body
1892
+ "body": {...} // This will be stripped
1893
+ }
1894
+
1895
+ // After save
1896
+ {
1897
+ "method": "GET"
1898
+ // body removed because method=GET hides it
1899
+ }
1900
+ ```
1901
+
1902
+ **Solution**: Respect dependencies from the start
1903
+
1904
+ ```javascript
1905
+ // Correct approach - check property dependencies
1906
+ get_node({
1907
+ nodeType: "nodes-base.httpRequest",
1908
+ mode: "search_properties",
1909
+ propertyQuery: "body"
1910
+ });
1911
+
1912
+ // See that body only shows for POST/PUT/PATCH/DELETE
1913
+ // Use correct method
1914
+ {
1915
+ "method": "POST",
1916
+ "sendBody": true,
1917
+ "body": {...}
1918
+ }
1919
+ ```
1920
+
1921
+ > **Cross-reference**: For interpreting validation errors and profiles, see [validation-expert.md](../validation-expert.md).
1922
+
1923
+ ---
1924
+
1925
+ ### Advanced Patterns
1926
+
1927
+ #### Pattern 1: Conditional Required with Fallback
1928
+
1929
+ **Example**: Channel can be string OR expression
1930
+
1931
+ ```javascript
1932
+ // Option 1: String
1933
+ {
1934
+ "channel": "#general"
1935
+ }
1936
+
1937
+ // Option 2: Expression
1938
+ {
1939
+ "channel": "={{$json.channelName}}"
1940
+ }
1941
+
1942
+ // Validation accepts both
1943
+ ```
1944
+
1945
+ #### Pattern 2: Mutually Exclusive Fields
1946
+
1947
+ **Example**: Use either ID or name, not both
1948
+
1949
+ ```javascript
1950
+ // Use messageId
1951
+ {
1952
+ "messageId": "1234567890"
1953
+ // name not needed
1954
+ }
1955
+
1956
+ // OR use messageName
1957
+ {
1958
+ "messageName": "thread-name"
1959
+ // messageId not needed
1960
+ }
1961
+
1962
+ // Dependencies ensure only one is required
1963
+ ```
1964
+
1965
+ #### Pattern 3: Progressive Complexity
1966
+
1967
+ **Example**: Simple mode vs advanced mode
1968
+
1969
+ ```javascript
1970
+ // Simple mode
1971
+ {
1972
+ "mode": "simple",
1973
+ "text": "{{$json.message}}"
1974
+ // Advanced fields hidden
1975
+ }
1976
+
1977
+ // Advanced mode
1978
+ {
1979
+ "mode": "advanced",
1980
+ "attachments": [...],
1981
+ "blocks": [...],
1982
+ "metadata": {...}
1983
+ // Simple field hidden, advanced fields shown
1984
+ }
1985
+ ```
1986
+
1987
+ ---
1988
+
1989
+ ## AI Connection Types
1990
+
1991
+ ### Resource/Operation Nodes
1992
+
1993
+ Nodes like Slack, Gmail, and Google Sheets follow the resource/operation pattern where the `resource` selects the entity type and `operation` selects the action. Each combination produces a unique set of required and optional fields.
1994
+
1995
+ ### HTTP-Based Nodes
1996
+
1997
+ HTTP Request and Webhook nodes are method-driven. The HTTP method determines which body, query, and header options are available. Authentication type further controls credential fields.
1998
+
1999
+ ### Database Nodes
2000
+
2001
+ Postgres, MySQL, and MongoDB nodes are operation-driven. The operation (executeQuery, insert, update, delete) determines which fields (query, table, columns, values, where) are required.
2002
+
2003
+ ### Conditional Logic Nodes
2004
+
2005
+ IF and Switch nodes use condition-type-driven configuration. The condition type (string, number, boolean) and operator (binary vs unary) determine which value fields appear.
2006
+
2007
+ ### AI/LangChain Nodes
2008
+
2009
+ OpenAI and other LangChain nodes follow the resource/operation pattern but with AI-specific fields like messages, temperature, and maxTokens. System and user message roles control the prompt structure.
2010
+
2011
+ ---
2012
+
2013
+ ## Common Node Patterns
2014
+
2015
+ ### Pattern 1: Resource/Operation Nodes
2016
+
2017
+ **Examples**: Slack, Google Sheets, Airtable
2018
+
2019
+ **Structure**:
2020
+
2021
+ ```javascript
2022
+ {
2023
+ "resource": "<entity>", // What type of thing
2024
+ "operation": "<action>", // What to do with it
2025
+ // ... operation-specific fields
2026
+ }
2027
+ ```
2028
+
2029
+ **How to configure**:
2030
+
2031
+ 1. Choose resource
2032
+ 2. Choose operation
2033
+ 3. Use get_node to see operation-specific requirements
2034
+ 4. Configure required fields
2035
+
2036
+ ### Pattern 2: HTTP-Based Nodes
2037
+
2038
+ **Examples**: HTTP Request, Webhook
2039
+
2040
+ **Structure**:
2041
+
2042
+ ```javascript
2043
+ {
2044
+ "method": "<HTTP_METHOD>",
2045
+ "url": "<endpoint>",
2046
+ "authentication": "<type>",
2047
+ // ... method-specific fields
2048
+ }
2049
+ ```
2050
+
2051
+ **Dependencies**:
2052
+
2053
+ - POST/PUT/PATCH -> sendBody available
2054
+ - sendBody=true -> body required
2055
+ - authentication != "none" -> credentials required
2056
+
2057
+ ### Pattern 3: Database Nodes
2058
+
2059
+ **Examples**: Postgres, MySQL, MongoDB
2060
+
2061
+ **Structure**:
2062
+
2063
+ ```javascript
2064
+ {
2065
+ "operation": "<query|insert|update|delete>",
2066
+ // ... operation-specific fields
2067
+ }
2068
+ ```
2069
+
2070
+ **Dependencies**:
2071
+
2072
+ - operation="executeQuery" -> query required
2073
+ - operation="insert" -> table + values required
2074
+ - operation="update" -> table + values + where required
2075
+
2076
+ ### Pattern 4: Conditional Logic Nodes
2077
+
2078
+ **Examples**: IF, Switch, Merge
2079
+
2080
+ **Structure**:
2081
+
2082
+ ```javascript
2083
+ {
2084
+ "conditions": {
2085
+ "<type>": [
2086
+ {
2087
+ "operation": "<operator>",
2088
+ "value1": "...",
2089
+ "value2": "..." // Only for binary operators
2090
+ }
2091
+ ]
2092
+ }
2093
+ }
2094
+ ```
2095
+
2096
+ **Dependencies**:
2097
+
2098
+ - Binary operators (equals, contains, etc.) -> value1 + value2
2099
+ - Unary operators (isEmpty, isNotEmpty) -> value1 only + singleValue: true
2100
+
2101
+ ---
2102
+
2103
+ ## Operation-Specific Configuration
2104
+
2105
+ ### Slack Node Examples
2106
+
2107
+ #### Post Message
2108
+
2109
+ ```javascript
2110
+ {
2111
+ "resource": "message",
2112
+ "operation": "post",
2113
+ "channel": "#general", // Required
2114
+ "text": "Hello!", // Required
2115
+ "attachments": [], // Optional
2116
+ "blocks": [] // Optional
2117
+ }
2118
+ ```
2119
+
2120
+ #### Update Message
2121
+
2122
+ ```javascript
2123
+ {
2124
+ "resource": "message",
2125
+ "operation": "update",
2126
+ "messageId": "1234567890", // Required (different from post!)
2127
+ "text": "Updated!", // Required
2128
+ "channel": "#general" // Optional (can be inferred)
2129
+ }
2130
+ ```
2131
+
2132
+ #### Create Channel
2133
+
2134
+ ```javascript
2135
+ {
2136
+ "resource": "channel",
2137
+ "operation": "create",
2138
+ "name": "new-channel", // Required
2139
+ "isPrivate": false // Optional
2140
+ // Note: text NOT required for this operation
2141
+ }
2142
+ ```
2143
+
2144
+ ### HTTP Request Node Examples
2145
+
2146
+ #### GET Request
2147
+
2148
+ ```javascript
2149
+ {
2150
+ "method": "GET",
2151
+ "url": "https://api.example.com/users",
2152
+ "authentication": "predefinedCredentialType",
2153
+ "nodeCredentialType": "httpHeaderAuth",
2154
+ "sendQuery": true, // Optional
2155
+ "queryParameters": { // Shows when sendQuery=true
2156
+ "parameters": [
2157
+ {
2158
+ "name": "limit",
2159
+ "value": "100"
2160
+ }
2161
+ ]
2162
+ }
2163
+ }
2164
+ ```
2165
+
2166
+ #### POST with JSON
2167
+
2168
+ ```javascript
2169
+ {
2170
+ "method": "POST",
2171
+ "url": "https://api.example.com/users",
2172
+ "authentication": "none",
2173
+ "sendBody": true, // Required for POST
2174
+ "body": { // Required when sendBody=true
2175
+ "contentType": "json",
2176
+ "content": {
2177
+ "name": "John Doe",
2178
+ "email": "john@example.com"
2179
+ }
2180
+ }
2181
+ }
2182
+ ```
2183
+
2184
+ ### IF Node Examples
2185
+
2186
+ #### String Comparison (Binary)
2187
+
2188
+ ```javascript
2189
+ {
2190
+ "conditions": {
2191
+ "string": [
2192
+ {
2193
+ "value1": "={{$json.status}}",
2194
+ "operation": "equals",
2195
+ "value2": "active" // Binary: needs value2
2196
+ }
2197
+ ]
2198
+ }
2199
+ }
2200
+ ```
2201
+
2202
+ #### Empty Check (Unary)
2203
+
2204
+ ```javascript
2205
+ {
2206
+ "conditions": {
2207
+ "string": [
2208
+ {
2209
+ "value1": "={{$json.email}}",
2210
+ "operation": "isEmpty",
2211
+ // No value2 - unary operator
2212
+ "singleValue": true // Auto-added by sanitization
2213
+ }
2214
+ ]
2215
+ }
2216
+ }
2217
+ ```
2218
+
2219
+ ---
2220
+
2221
+ ## Handling Conditional Requirements
2222
+
2223
+ ### Example: HTTP Request Body
2224
+
2225
+ **Scenario**: body field required, but only sometimes
2226
+
2227
+ **Rule**:
2228
+
2229
+ ```
2230
+ body is required when:
2231
+ - sendBody = true AND
2232
+ - method IN (POST, PUT, PATCH, DELETE)
2233
+ ```
2234
+
2235
+ **How to discover**:
2236
+
2237
+ ```javascript
2238
+ // Option 1: Read validation error
2239
+ validate_node({...});
2240
+ // Error: "body required when sendBody=true"
2241
+
2242
+ // Option 2: Search for the property
2243
+ get_node({
2244
+ nodeType: "nodes-base.httpRequest",
2245
+ mode: "search_properties",
2246
+ propertyQuery: "body"
2247
+ });
2248
+ // Shows: body property with displayOptions rules
2249
+
2250
+ // Option 3: Try minimal config and iterate
2251
+ // Start without body, validation will tell you if needed
2252
+ ```
2253
+
2254
+ ### Example: IF Node singleValue
2255
+
2256
+ **Scenario**: singleValue property appears for unary operators
2257
+
2258
+ **Rule**:
2259
+
2260
+ ```
2261
+ singleValue should be true when:
2262
+ - operation IN (isEmpty, isNotEmpty, true, false)
2263
+ ```
2264
+
2265
+ **Good news**: Auto-sanitization fixes this!
2266
+
2267
+ **Manual check**:
2268
+
2269
+ ```javascript
2270
+ get_node({
2271
+ nodeType: "nodes-base.if",
2272
+ detail: "full",
2273
+ });
2274
+ // Shows complete schema with operator-specific rules
2275
+ ```
2276
+
2277
+ ---
2278
+
2279
+ ## Configuration Anti-Patterns
2280
+
2281
+ ### Don't: Over-configure Upfront
2282
+
2283
+ **Bad**:
2284
+
2285
+ ```javascript
2286
+ // Adding every possible field
2287
+ {
2288
+ "method": "GET",
2289
+ "url": "...",
2290
+ "sendQuery": false,
2291
+ "sendHeaders": false,
2292
+ "sendBody": false,
2293
+ "timeout": 10000,
2294
+ "ignoreResponseCode": false,
2295
+ // ... 20 more optional fields
2296
+ }
2297
+ ```
2298
+
2299
+ **Good**:
2300
+
2301
+ ```javascript
2302
+ // Start minimal
2303
+ {
2304
+ "method": "GET",
2305
+ "url": "...",
2306
+ "authentication": "none"
2307
+ }
2308
+ // Add fields only when needed
2309
+ ```
2310
+
2311
+ ### Don't: Skip Validation
2312
+
2313
+ **Bad**:
2314
+
2315
+ ```javascript
2316
+ // Configure and deploy without validating
2317
+ const config = {...};
2318
+ n8n_update_partial_workflow({...}); // YOLO
2319
+ ```
2320
+
2321
+ **Good**:
2322
+
2323
+ ```javascript
2324
+ // Validate before deploying
2325
+ const config = {...};
2326
+ const result = validate_node({...});
2327
+ if (result.valid) {
2328
+ n8n_update_partial_workflow({...});
2329
+ }
2330
+ ```
2331
+
2332
+ > **Cross-reference**: For validation profiles and error interpretation, see [validation-expert.md](../validation-expert.md).
2333
+
2334
+ ### Don't: Ignore Operation Context
2335
+
2336
+ **Bad**:
2337
+
2338
+ ```javascript
2339
+ // Same config for all Slack operations
2340
+ {
2341
+ "resource": "message",
2342
+ "operation": "post",
2343
+ "channel": "#general",
2344
+ "text": "..."
2345
+ }
2346
+
2347
+ // Then switching operation without updating config
2348
+ {
2349
+ "resource": "message",
2350
+ "operation": "update", // Changed
2351
+ "channel": "#general", // Wrong field for update!
2352
+ "text": "..."
2353
+ }
2354
+ ```
2355
+
2356
+ **Good**:
2357
+
2358
+ ```javascript
2359
+ // Check requirements when changing operation
2360
+ get_node({
2361
+ nodeType: "nodes-base.slack",
2362
+ });
2363
+ // See what update operation needs (messageId, not channel)
2364
+ ```
2365
+
2366
+ ---
2367
+
2368
+ ## Best Practices
2369
+
2370
+ ### Do
2371
+
2372
+ 1. **Start with get_node (standard detail)**
2373
+ - ~1-2K tokens response
2374
+ - Covers 95% of configuration needs
2375
+ - Default detail level
2376
+
2377
+ 2. **Validate iteratively**
2378
+ - Configure -> Validate -> Fix -> Repeat
2379
+ - Average 2-3 iterations is normal
2380
+ - Read validation errors carefully
2381
+
2382
+ 3. **Use search_properties mode when stuck**
2383
+ - If field seems missing, search for it
2384
+ - Understand what controls field visibility
2385
+ - `get_node({mode: "search_properties", propertyQuery: "..."})`
2386
+
2387
+ 4. **Respect operation context**
2388
+ - Different operations = different requirements
2389
+ - Always check get_node when changing operation
2390
+ - Don't assume configs are transferable
2391
+
2392
+ 5. **Trust auto-sanitization**
2393
+ - Operator structure fixed automatically
2394
+ - Don't manually add/remove singleValue
2395
+ - IF/Switch metadata added on save
2396
+
2397
+ 6. **Check dependencies when stuck**
2398
+
2399
+ ```javascript
2400
+ get_node({
2401
+ nodeType: "...",
2402
+ mode: "search_properties",
2403
+ propertyQuery: "...",
2404
+ });
2405
+ ```
2406
+
2407
+ 7. **Configure parent properties first**
2408
+
2409
+ ```javascript
2410
+ // First: method, resource, operation
2411
+ // Then: dependent fields
2412
+ ```
2413
+
2414
+ 8. **Validate after changing operation**
2415
+
2416
+ ```javascript
2417
+ // Operation changed -> requirements changed
2418
+ validate_node({nodeType: "...", config: {...}, profile: "runtime"});
2419
+ ```
2420
+
2421
+ 9. **Read validation errors for dependency hints**
2422
+ ```
2423
+ Error: "body required when sendBody=true"
2424
+ -> Hint: Set sendBody=true to enable body
2425
+ ```
2426
+
2427
+ ### Don't
2428
+
2429
+ 1. **Jump to detail="full" immediately**
2430
+ - Try standard detail first
2431
+ - Only escalate if needed
2432
+ - Full schema is 3-8K tokens
2433
+
2434
+ 2. **Configure blindly**
2435
+ - Always validate before deploying
2436
+ - Understand why fields are required
2437
+ - Use search_properties for conditional fields
2438
+
2439
+ 3. **Copy configs without understanding**
2440
+ - Different operations need different fields
2441
+ - Validate after copying
2442
+ - Adjust for new context
2443
+
2444
+ 4. **Manually fix auto-sanitization issues**
2445
+ - Let auto-sanitization handle operator structure
2446
+ - Focus on business logic
2447
+ - Save and let system fix structure
2448
+
2449
+ 5. **Ignore dependency errors**
2450
+
2451
+ ```javascript
2452
+ // Error: "body not visible" -> Check displayOptions
2453
+ ```
2454
+
2455
+ 6. **Hardcode all possible fields**
2456
+
2457
+ ```javascript
2458
+ // Bad: Adding fields that will be hidden
2459
+ ```
2460
+
2461
+ 7. **Assume operations are identical**
2462
+ ```javascript
2463
+ // Each operation has unique requirements
2464
+ ```
2465
+
2466
+ ---
2467
+
2468
+ ## Property Dependencies Summary
2469
+
2470
+ **Key Concepts**:
2471
+
2472
+ - `displayOptions` control field visibility
2473
+ - `show` = field appears when conditions match
2474
+ - `hide` = field disappears when conditions match
2475
+ - Multiple conditions = AND logic
2476
+ - Multiple values = OR logic
2477
+
2478
+ **Common Patterns**:
2479
+
2480
+ 1. Boolean toggle (sendBody -> body)
2481
+ 2. Resource/operation cascade (different operations -> different fields)
2482
+ 3. Type-specific config (string vs boolean conditions)
2483
+ 4. Method-specific fields (GET vs POST)
2484
+
2485
+ **Troubleshooting**:
2486
+
2487
+ - Field required but not visible -> Check dependencies
2488
+ - Field disappears after change -> Operation changed requirements
2489
+ - Field doesn't save -> Hidden by dependencies
2490
+
2491
+ **Tools**:
2492
+
2493
+ - `get_node({mode: "search_properties"})` - Find property dependencies
2494
+ - `get_node({detail: "full"})` - See complete schema with displayOptions
2495
+ - `get_node` - See operation requirements (standard detail)
2496
+ - Validation errors - Hints about dependencies
2497
+
2498
+ ---
2499
+
2500
+ ## Summary
2501
+
2502
+ **Configuration Strategy**:
2503
+
2504
+ 1. Start with `get_node` (standard detail is default)
2505
+ 2. Configure required fields for operation
2506
+ 3. Validate configuration
2507
+ 4. Search properties if stuck
2508
+ 5. Iterate until valid (avg 2-3 cycles)
2509
+ 6. Deploy with confidence
2510
+
2511
+ **Key Principles**:
2512
+
2513
+ - **Operation-aware**: Different operations = different requirements
2514
+ - **Progressive disclosure**: Start minimal, add as needed
2515
+ - **Dependency-aware**: Understand field visibility rules
2516
+ - **Validation-driven**: Let validation guide configuration
2517
+
2518
+ **Related Skills**:
2519
+
2520
+ - **[mcp-tools-expert.md](../mcp-tools-expert.md)** - How to use discovery tools correctly (get_node modes and parameters)
2521
+ - **[validation-expert.md](../validation-expert.md)** - Interpret validation errors and profiles
2522
+ - **[workflow-patterns.md](../workflow-patterns.md)** - Apply patterns with proper configuration within workflow compositions
2523
+ - **n8n Expression Syntax** - Configure expression fields