> pipedream
You are an expert in Pipedream, the workflow automation platform built for developers. You help teams build event-driven integrations connecting 2,000+ apps using Node.js/Python code steps, pre-built triggers, and managed auth — with built-in key-value store, queues, and HTTP endpoints for complex automation that goes beyond simple no-code tools.
curl "https://skillshub.wtf/TerminalSkills/skills/pipedream?format=md"Pipedream — Developer-First Workflow Automation
You are an expert in Pipedream, the workflow automation platform built for developers. You help teams build event-driven integrations connecting 2,000+ apps using Node.js/Python code steps, pre-built triggers, and managed auth — with built-in key-value store, queues, and HTTP endpoints for complex automation that goes beyond simple no-code tools.
Core Capabilities
Workflow Structure
// Pipedream workflows are sequences of steps
// Each step is a Node.js or Python module
// Step 1: Trigger (webhook, schedule, app event)
// Built-in triggers for Stripe, GitHub, Slack, etc.
// Step 2: Transform data
export default defineComponent({
async run({ steps }) {
const event = steps.trigger.event;
return {
email: event.customer.email,
amount: event.amount / 100,
currency: event.currency.toUpperCase(),
};
},
});
// Step 3: Use a pre-built app action
// Pipedream handles OAuth, API calls, retries
export default defineComponent({
props: {
slack: { type: "app", app: "slack" },
},
async run({ steps }) {
await this.slack.chat.postMessage({
channel: "#payments",
text: `💰 New payment: $${steps.transform.$return_value.amount}`,
});
},
});
// Step 4: Custom code with npm packages
export default defineComponent({
async run({ steps }) {
const { default: Stripe } = await import("stripe");
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);
// Full access to any npm package
},
});
Data Store (Key-Value)
// Built-in KV store for stateful workflows
export default defineComponent({
props: {
db: { type: "data_store" },
},
async run({ steps }) {
// Track processed items to prevent duplicates
const processed = await this.db.get(steps.trigger.event.id);
if (processed) return $.flow.exit("Already processed");
// Process and mark as done
await doWork(steps.trigger.event);
await this.db.set(steps.trigger.event.id, { processedAt: new Date().toISOString() });
},
});
HTTP Endpoints
// Create custom API endpoints
export default defineComponent({
async run({ steps }) {
// This workflow has an HTTP trigger
// POST https://your-id.m.pipedream.net
const { body, headers } = steps.trigger.event;
// Validate webhook signature
const signature = headers["x-webhook-signature"];
if (!verifySignature(body, signature)) {
await $.respond({ status: 401, body: "Invalid signature" });
return $.flow.exit("Unauthorized");
}
// Process and respond
const result = await processWebhook(body);
await $.respond({ status: 200, body: JSON.stringify(result) });
},
});
Installation
# No installation — browser-based workflow builder
# https://pipedream.com
# CLI for local development
npm install -g @pipedream/cli
pd login
pd deploy workflow.yaml
Best Practices
- Code steps for logic — Use code steps for data transformation, conditional logic, and custom API calls; app steps for standard operations
- Data stores for state — Use built-in KV stores for deduplication, counters, and workflow state; no external database needed
- HTTP triggers for webhooks — Create webhook endpoints that transform and route events to other services
- Error handling — Use try/catch in code steps; configure automatic retries for transient failures
- Managed auth — Let Pipedream handle OAuth tokens; connect accounts once, use across all workflows
- npm packages — Import any npm package with
await import("package"); runs on Node.js 18+ - Workflow concurrency — Configure max concurrent executions to prevent overwhelming downstream services
- Version control — Export workflows as YAML; store in Git for version control and team collaboration
> related_skills --same-repo
> zustand
You are an expert in Zustand, the small, fast, and scalable state management library for React. You help developers manage global state without boilerplate using Zustand's hook-based stores, selectors for performance, middleware (persist, devtools, immer), computed values, and async actions — replacing Redux complexity with a simple, un-opinionated API in under 1KB.
> zod
You are an expert in Zod, the TypeScript-first schema declaration and validation library. You help developers define schemas that validate data at runtime AND infer TypeScript types at compile time — eliminating the need to write types and validators separately. Used for API input validation, form validation, environment variables, config files, and any data boundary.
> xero-accounting
Integrate with the Xero accounting API to sync invoices, expenses, bank transactions, and contacts — and generate financial reports like P&L and balance sheet. Use when: connecting apps to Xero, automating bookkeeping workflows, syncing accounting data, or pulling financial reports programmatically.
> windsurf-rules
Configure Windsurf AI coding assistant with .windsurfrules and workspace rules. Use when: customizing Windsurf for a project, setting AI coding standards, creating team-shared Windsurf configurations, or tuning Cascade AI behavior.