TerminalSkills/skills

pipedream

Pipedream is a developer-focused integration platform: event-driven workflows built from Node.js or Python code steps and managed OAuth for 3,000+ apps.

소스 보기

사용 방법

  1. 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
  2. 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
  3. 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/TerminalSkills/skills --skill pipedream

시작 전 확인

  • 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
  • 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 Skill 문서

원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.

Pipedream — Developer-First Workflow Automation

Overview

Pipedream runs event-driven workflows: a trigger (HTTP webhook, schedule, app event) followed by steps that are Node.js, Python, Go or Bash code or pre-built app actions, with managed OAuth, a key-value data store and *.m.pipedream.net HTTP endpoints.

Status as of October 2026: Pipedream Workflows and String are shutting down on 31 March 2027. Workflows are in maintenance mode (no signups, no new features); existing ones keep running until that date, and all workflow data, including connected-account credentials, is deleted by 30 April 2027. Subscriptions are cancelled with a prorated refund. Pipedream Connect (managed auth, pre-built tools, MCP servers, API proxy) is not affected and is where the company's development goes. So:

  • Do not start new production systems on Workflows. Build them on Connect or elsewhere.
  • For existing workflows, export them (Step 4) and plan the move before the date.

Instructions

Step 1: Workflow code steps (existing workflows)

Each step is a component. run receives { steps, $ }; props are exposed on this. Anything returned becomes steps.<name>.$return_value, and $.export("key", value) adds a named export. Exports must be JSON-serialisable; write files to /tmp.

javascript
export default defineComponent({
  async run({ steps, $ }) {
    const event = steps.trigger.event;          // HTTP trigger: event.body, event.headers, event.query
    return {
      email: event.body.customer.email,
      amount: event.body.amount / 100,
      currency: event.body.currency.toUpperCase(),
    };
  },
});

A connected app account is declared as an app prop and its credentials appear in this.slack.$auth:

javascript
import { WebClient } from "@slack/web-api";

export default defineComponent({
  props: { slack: { type: "app", app: "slack" } },
  async run({ steps, $ }) {
    const client = new WebClient(this.slack.$auth.oauth_access_token);
    await client.chat.postMessage({
      channel: "#payments",
      text: `New payment: ${steps.transform.$return_value.amount} ${steps.transform.$return_value.currency}`,
    });
  },
});

npm packages are imported with plain import at the top of the step and installed automatically. Always await asynchronous calls, or the step ends before they finish.

Step 2: Data store (key-value)

Declare a data_store prop, then get, set, has, keys, delete and setTtl. Every call is async. set takes { ttl: seconds } as a third argument.

javascript
export default defineComponent({
  props: { dataStore: { type: "data_store" } },
  async run({ steps, $ }) {
    const id = steps.trigger.event.body.id;
    if (await this.dataStore.has(id)) {
      return $.flow.exit("Already processed");     // ends the workflow early
    }
    await this.dataStore.set(id, { processedAt: new Date().toISOString() }, { ttl: 7 * 86400 });
  },
});

Step 3: HTTP trigger and responses

An HTTP trigger gives the workflow a URL on the *.m.pipedream.net domain (or your own custom domain). event.body is the parsed body (JSON or form), event.headers the request headers. Respond with await $.respond({ status, headers, body }); by default the response is sent at the end of the workflow, so add immediate: true to reply first and keep working. Providers that sign payloads over the raw body (Stripe, GitHub) need the vendor's pre-built trigger, which verifies the signature for you; the generic trigger only parses the body. For a hand-rolled webhook, compare a shared secret header:

javascript
import { timingSafeEqual } from "node:crypto";

export default defineComponent({
  async run({ steps, $ }) {
    const sent = Buffer.from(steps.trigger.event.headers["x-api-key"] ?? "");
    const expected = Buffer.from(process.env.INTAKE_API_KEY);
    if (sent.length !== expected.length || !timingSafeEqual(sent, expected)) {
      await $.respond({ status: 401, body: "invalid key" });
      return $.flow.exit("unauthorized");
    }
    await $.respond({ status: 202, body: { accepted: true }, immediate: true });
  },
});

Project secrets (process.env.*) are set in the project's variables settings.

Step 4: Export and migrate

  • Open the project in the dashboard, go to Settings and click Export Workflows: Pipedream builds a ZIP with one JSON file per workflow (triggers, steps, code, props, control flow), one project at a time. The ZIP (project_export-proj_abc123.zip) is written to the project's File Store, so your plan must include File Stores; download it from there. To export again, delete the old ZIP first. Secret props are left out and must be re-entered. Reconnect accounts in the new system.
  • The pd CLI (Homebrew: brew tap pipedreamhq/pd-cli && brew install pipedreamhq/pd-cli/pipedream, or the zip builds on cli.pipedream.com; there is no npm package) does pd login, pd deploy (deploys a component source such as http.js or a registry source, not a workflow YAML), pd publish, pd logs, pd init connect.
  • Open-source component code (the actions and sources behind the 3,000+ apps) lives in github.com/PipedreamHQ/pipedream under components/ and is a reference for API calls when you rebuild a step by hand.

Step 5: Pipedream Connect (the supported product)

Server side: create the client with an OAuth client from workspace API settings, mint a short-lived token per end user, run actions on their behalf.

bash
npm install @pipedream/sdk      # 3.3.0, Node 18+
typescript
import { PipedreamClient } from "@pipedream/sdk";

const client = new PipedreamClient({
  projectEnvironment: "production",              // or "development"
  clientId: process.env.PIPEDREAM_CLIENT_ID,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET,
  projectId: process.env.PIPEDREAM_PROJECT_ID,
});

// Hand `token` to your frontend (client.connectAccount) or send the user to connectLinkUrl
const { token, connectLinkUrl } = await client.tokens.create({ externalUserId: "user_8412" });

// Run a pre-built action with the user's connected account
const result = await client.actions.run({
  externalUserId: "user_8412",
  id: "gitlab-list-commits",
  configuredProps: { gitlab: { authProvisionId: "apn_kVh9AoD" }, projectId: 45672541, refName: "main" },
});

For AI agents, Pipedream hosts MCP servers at https://remote.mcp.pipedream.net/v3, selected with the headers x-pd-project-id, x-pd-environment, x-pd-external-user-id and x-pd-app-slug. pd init connect scaffolds a Next.js demo, an SDK playground or an MCP chat app.

Examples

Example 1: "Stop my Stripe workflow from sending duplicate Slack alerts"

Add the Step 2 data store to the step that posts to Slack, keyed on steps.trigger.event.id, with a 7-day TTL. A replayed Stripe event now ends at $.flow.exit("Already processed"), and the second run shows the exit message in the event inspector.

Example 2: "We use Pipedream workflows, what do we do before March 2027?"

  1. List every workflow in the dashboard and note triggers, schedules and connected apps.
  2. Export each project with the export tool and keep the JSON in Git.
  3. Rebuild the logic: HTTP and schedule triggers become routes or cron jobs in your own service, code steps are copied nearly as they are (replace steps.* with function arguments), and app calls use the vendor SDK or Pipedream Connect (client.actions.run) if you want managed OAuth.
  4. Run old and new in parallel, then disable the Pipedream workflow. Disconnect accounts in the dashboard before 30 April 2027.

Guidelines

  • Treat Workflows as end-of-life: fix and migrate, do not expand.
  • Put secrets in project variables or environment variables, never in step code; do not log this.<app>.$auth.
  • Pre-built triggers verify provider signatures; a generic HTTP trigger does not. Never trust a body without checking a shared secret.
  • $.respond and $.flow.exit need the $ argument in run({ steps, $ }).
  • Every data store call must be awaited; stored values must be JSON-serialisable.
  • Connect environments are separate: development and production have different connected accounts and tokens.
같은 저장소의 Skills

더 많은 Skills

모든 Skills
TerminalSkills
커뮤니티

3dsmax-rendering

Scripts and configures production rendering in Autodesk 3ds Max with the V-Ray and Corona renderers: output size and files, render elements, denoising, light mix, batch and command-line rendering, and network rendering. Use when a user asks to set up a production render, render several cameras in one batch, render from the command line or on a render farm, add render passes for compositing, or cut render time for archviz and product shots.

설치 수
0
GitHub Stars
180
업데이트
10월 25일
TerminalSkills
커뮤니티

3dsmax-scripting

Covers scripting Autodesk 3ds Max, the 3D modeling and rendering application, with MAXScript and Python (pymxs): scene manipulation, object creation, material assignment, camera and light setup, batch operations, and file I/O. Use when tasks involve automating repetitive 3ds Max workflows, batch processing scenes, running scripts headless with 3dsmaxbatch, creating custom tools, or scripting scene setup for archviz, product visualization, or VFX.

설치 수
0
GitHub Stars
180
업데이트
10월 25일
TerminalSkills
커뮤니티

3proxy

3proxy is a small open-source proxy server that runs HTTP/HTTPS, SOCKS4/5, SNI and TCP/UDP port-mapping proxies from one config file. Use when a user asks to set up an HTTP or SOCKS5 proxy, add proxy users and passwords, write 3proxy access rules, chain or rotate upstream (parent) proxies, limit bandwidth, connections or monthly traffic per user, run 3proxy in Docker, or fix a 3proxy.cfg that will not start.

설치 수
0
GitHub Stars
180
업데이트
10월 25일
TerminalSkills
커뮤니티

a2a-protocol

Builds Agent2Agent (A2A) servers and clients, the open protocol (originally from Google, now under the Linux Foundation) that lets AI agents from different frameworks call each other. Use when the user wants to create an A2A-compliant agent, build an Agent Card, implement task management, connect agents across frameworks, set up agent discovery, handle streaming responses, implement push notifications, or orchestrate multi-agent workflows. Trigger words: a2a, agent to agent, agent2agent, a2a pro

설치 수
0
GitHub Stars
180
업데이트
10월 25일