Welcome to the Plot Twist Creator documentation! This comprehensive guide will help you build powerful Twists that organize and prioritize your work.
Plot Twists are smart automations that connect, organize, and prioritize your work. They implement opinionated workflows, integrate with external services, and help you stay organized across all your apps and messages.
plot-twist.mdCore Concepts - Understanding the Plot architecture
Built-in Tools Guide - Complete reference for all built-in twist tools
Building Custom Tools - Create your own twist tools
CLI Reference - Complete command-line interface documentation
Runtime Environment - Understanding execution constraints
Advanced Topics - Complex patterns and techniques
Explore the complete API documentation using the navigation on the left:
Check out these examples to get started:
import {
ActivityType,
Twist,
type Priority,
type ToolBuilder,
} from "@plotday/twister";
import { Plot } from "@plotday/twister/tools/plot";
export default class WelcomeTwist extends Twist<WelcomeTwist> {
build(build: ToolBuilder) {
return {
plot: build(Plot),
};
}
async activate(priority: Pick<Priority, "id">) {
await this.tools.plot.createActivity({
type: ActivityType.Note,
title: "Welcome to Plot! 👋",
});
}
}
import { type Activity, Twist, type ToolBuilder } from "@plotday/twister";
import { Network } from "@plotday/twister/tools/network";
import { Plot } from "@plotday/twister/tools/plot";
export default class CalendarTwist extends Twist<CalendarTwist> {
build(build: ToolBuilder) {
return {
plot: build(Plot),
network: build(Network, {
urls: ["https://www.googleapis.com/calendar/*"],
}),
};
}
async activate(priority: Pick<Priority, "id">) {
// Set up webhook for calendar updates
const webhookUrl = await this.tools.network.createWebhook(
"onCalendarUpdate",
{ priorityId: priority.id }
);
await this.set("webhook_url", webhookUrl);
}
}
MIT © Plot Technologies Inc.