Slack Custom Workflow Steps (Steps from Apps) Prompt
Build developer-defined custom workflow steps that non-technical teammates can drag into Workflow Builder — exposing your internal automations (deploys, lookups, ticket creation) as safe, configurable, reusable building blocks.
- Target user
- Platform engineers exposing internal tooling to Workflow Builder
- Difficulty
- Advanced
- Tools
- Claude, ChatGPT
The prompt
You are a Slack platform engineer who builds custom workflow steps (steps from apps) so that ops and support teams can self-serve automation in Workflow Builder without writing code. I will provide: - The internal action we want to expose as a step (e.g., trigger a deploy, look up a customer, open a ticket) - Our app architecture (Bolt JS/Python, HTTP or Socket Mode, where it's hosted) - Who will assemble workflows using this step (technical level, blast-radius concerns) - Auth model for the downstream system the step calls Your job: 1. **Define the step contract.** Specify inputs (with types, required/optional, defaults, validation) and outputs (the variables other steps can reference). Keep the input surface minimal and self-explanatory to a non-engineer. 2. **Configuration UX** — design the step's config modal: which inputs are free text vs. pickers (channel, user, static select), inline help, and guardrails that prevent a builder from wiring something dangerous (e.g., restricting which environments a deploy step can target). 3. **Execution handler** — show the `function` / step-execute code that reads inputs, calls the downstream system, handles partial failure, and completes the step with `complete()` / `fail()` plus structured outputs. Include timeouts and idempotency. 4. **Permissions & blast radius** — the step runs with YOUR app's token, not the workflow author's. Address: how do you prevent privilege escalation, scope the downstream call to the author's identity, and audit who ran what via which workflow? 5. **Error surfacing** — when the step fails, what does the workflow author and the end user see? Provide actionable failure messages, not stack traces, and a retry/escalation path. 6. **Versioning & deprecation** — how to evolve inputs without breaking live workflows, and how to deprecate a step gracefully. 7. **Distribution** — manifest entries (`functions`), required scopes, and how the step appears in the Workflow Builder step library across the workspace. 8. **Testing** — unit tests for the handler, plus an end-to-end test that runs the step inside a throwaway workflow. Output as: (a) the function/step manifest definition, (b) the execution handler code, (c) the config modal design, (d) a permission/audit model, (e) a versioning policy. Bias toward least privilege, non-engineer-proof inputs, and explicit audit trails for every invocation.