engineeringoperations
Automation Workflow Design
Design and document automation workflows for n8n, Make, Zapier, and Power Automate. Covers trigger-action chain mapping, conditional branching, error handling, retry logic, and workflow diagrams with platform-specific node references.
automationworkflown8nmakezapierpower-automateintegrationno-code
Works well with agents
Works well with skills
$ npx skills add The-AI-Directory-Company/(…) --skill automation-workflow-designautomation-workflow-design/
SKILL.md
Markdown
| 1 | |
| 2 | # Automation Workflow Design |
| 3 | |
| 4 | ## Before you start |
| 5 | |
| 6 | Gather the following from the user: |
| 7 | |
| 8 | 1. **What is the trigger?** (Webhook, schedule, database event, form submission, file upload) |
| 9 | 2. **What is the desired outcome?** (Record created, notification sent, file transformed, data synced) |
| 10 | 3. **Which platform?** (n8n, Make, Zapier, Power Automate, or platform-agnostic) |
| 11 | 4. **What systems are involved?** (APIs, databases, SaaS tools, file storage) |
| 12 | 5. **What is the expected volume?** (Runs per hour/day, payload sizes) |
| 13 | 6. **What happens on failure?** (Retry, alert, fallback, manual queue) |
| 14 | |
| 15 | If the user says "automate this process," push back: "Which trigger starts it, what systems are involved, and what should happen when a step fails?" |
| 16 | |
| 17 | ## Workflow mapping procedure |
| 18 | |
| 19 | ### Step 1: Define the trigger |
| 20 | |
| 21 | Identify the event that starts the workflow. Document: |
| 22 | |
| 23 | - **Trigger type**: Webhook, polling, cron schedule, event subscription |
| 24 | - **Payload shape**: Fields available from the trigger (provide a sample JSON) |
| 25 | - **Frequency**: Expected invocations per time window |
| 26 | - **Idempotency**: Whether duplicate triggers are possible and how to handle them |
| 27 | |
| 28 | ### Step 2: Map the action chain |
| 29 | |
| 30 | For each step after the trigger, document in sequence: |
| 31 | |
| 32 | ``` |
| 33 | Step [N]: [Action name] |
| 34 | Platform node: [Specific node/module name for the target platform] |
| 35 | Input: [Which fields from previous steps] |
| 36 | Transform: [Any data mapping or formatting] |
| 37 | Output: [Fields produced for downstream steps] |
| 38 | Error behavior: [Retry N times / skip / halt workflow] |
| 39 | ``` |
| 40 | |
| 41 | Group related steps into logical stages: Intake, Processing, Output, Notification. |
| 42 | |
| 43 | ### Step 3: Add conditional branches |
| 44 | |
| 45 | For each decision point: |
| 46 | |
| 47 | - State the condition as a boolean expression using available fields |
| 48 | - Document the true-path and false-path step sequences |
| 49 | - Identify whether branches rejoin or terminate independently |
| 50 | |
| 51 | ### Step 4: Design error handling |
| 52 | |
| 53 | For every step that calls an external service: |
| 54 | |
| 55 | - **Retry strategy**: Count, backoff interval, max wait |
| 56 | - **Timeout**: Maximum seconds before treating as failure |
| 57 | - **Dead letter handling**: Where failed items go (error queue, log table, notification) |
| 58 | - **Circuit breaker**: If failure rate exceeds threshold, pause workflow and alert |
| 59 | |
| 60 | ### Step 5: Draw the workflow diagram |
| 61 | |
| 62 | Produce a text-based diagram showing the flow: |
| 63 | |
| 64 | ``` |
| 65 | [Trigger: New form submission] |
| 66 | | |
| 67 | v |
| 68 | [Validate payload] --invalid--> [Log error + notify] |
| 69 | |valid |
| 70 | v |
| 71 | [Enrich: Fetch customer from CRM] |
| 72 | | |
| 73 | v |
| 74 | [Branch: Is enterprise?] |
| 75 | |yes |no |
| 76 | v v |
| 77 | [Create Jira ticket] [Add to Mailchimp list] |
| 78 | | | |
| 79 | v v |
| 80 | [Notify #sales] [Send welcome email] |
| 81 | ``` |
| 82 | |
| 83 | Include error paths as dashed or labeled branches. |
| 84 | |
| 85 | ## Platform-specific notes |
| 86 | |
| 87 | **n8n**: Use Error Trigger node for global error handling. Reference nodes by exact name (HTTP Request, IF, Switch, Merge). Use expressions with `{{ $json.field }}` syntax. |
| 88 | |
| 89 | **Make (Integromat)**: Use error handler routes (Break, Resume, Ignore, Rollback). Reference modules by app name + action. Note the 15-minute default scenario timeout. |
| 90 | |
| 91 | **Zapier**: Use Paths for conditional logic. Note that error handling requires Formatter + Filter workarounds or custom code steps. Multi-step zaps have a 30-second per-step timeout. |
| 92 | |
| 93 | **Power Automate**: Use Scope actions for try-catch patterns. Configure run-after settings (succeeded, failed, skipped, timed out) on each action. Use `@outputs('step')['statusCode']` for error inspection. |
| 94 | |
| 95 | ## Workflow document template |
| 96 | |
| 97 | ```markdown |
| 98 | # Workflow: [Name] |
| 99 | |
| 100 | ## Overview |
| 101 | - **Trigger**: [Event description] |
| 102 | - **Platform**: [n8n / Make / Zapier / Power Automate] |
| 103 | - **Schedule**: [If applicable] |
| 104 | - **Owner**: [Team or person] |
| 105 | |
| 106 | ## Steps |
| 107 | | # | Action | Node/Module | Input | Output | Error Handling | |
| 108 | |---|--------|-------------|-------|--------|----------------| |
| 109 | | 1 | ... | ... | ... | ... | ... | |
| 110 | |
| 111 | ## Branches |
| 112 | | Condition | True path | False path | |
| 113 | |-----------|-----------|------------| |
| 114 | |
| 115 | ## Error handling |
| 116 | - Global error handler: [Description] |
| 117 | - Dead letter destination: [Queue / table / channel] |
| 118 | - Alert channel: [Slack / email / PagerDuty] |
| 119 | |
| 120 | ## Volume & limits |
| 121 | - Expected runs: [N per hour/day] |
| 122 | - Rate limits: [Per-API limits to respect] |
| 123 | - Payload size limits: [If applicable] |
| 124 | ``` |
| 125 | |
| 126 | ## Quality checklist |
| 127 | |
| 128 | Before delivering the workflow design, verify: |
| 129 | |
| 130 | - [ ] Every step has explicit input fields, output fields, and error behavior |
| 131 | - [ ] Conditional branches document both paths and specify whether they rejoin |
| 132 | - [ ] Error handling covers retries, timeouts, dead letters, and alerting |
| 133 | - [ ] The workflow diagram matches the step table exactly |
| 134 | - [ ] Platform-specific node names and syntax are correct for the target platform |
| 135 | - [ ] Idempotency is addressed for the trigger and any create/update operations |
| 136 | - [ ] Volume estimates and rate limits are documented |
| 137 | |
| 138 | ## Common mistakes |
| 139 | |
| 140 | - **No error handling on HTTP steps.** Every external call can fail. Skipping retry and timeout config means silent data loss in production. |
| 141 | - **Ignoring idempotency.** Webhooks can fire twice. Without deduplication (check by ID before create), you get duplicate records. |
| 142 | - **Hardcoding credentials in workflow steps.** Use the platform's credential store or environment variables. Never embed API keys in node configurations. |
| 143 | - **Linear-only thinking.** Real workflows branch. If you have zero conditional nodes, you probably have not considered validation failures or edge cases. |
| 144 | - **Missing the "what if the whole workflow fails" path.** Individual step retries are not enough. Design a global error handler that captures the workflow run ID, failed step, and payload for manual replay. |
| 145 | - **Not documenting rate limits.** A workflow that runs fine at 10/hour breaks at 1000/hour when a batch import triggers it. State the ceiling. |
| 146 |