Workflow building for the coding agent era.
npm i -g terse-clinpx skills add TerseAI/Terseimport { createJob, TerseAgent } from "terse-sdk"// generated types for your workspace ↓import { Triggers, Skills, LinearProject } from "./terse.generated" createJob({ name: "linear-triage-summary", triggers: [Triggers.linear.onIssueCreated({ project: LinearProject.Triage })], onTrigger: async (event) => { const issue = event.data.data // ACL'd skills, agent stays in scope ↓ const agent = TerseAgent.create({ prompt: "Summarize the PRs linked to this Linear issue.", skills: [Skills.linear(), Skills.github(), Skills.slack()], }) // agentic reasoning ↓ const summary = await agent.runAndWait( `Summarize PRs linked to ${issue.identifier}` ) // deterministic tool call ↓ await agent.tools.slack.sendMessage({ slackUserId: issue.assignee.slackUserId, message: summary, }) },})import { createJob, TerseAgent } from "terse-sdk"import { Triggers, Skills, LinearProject, SlackChannel } from "./terse.generated"createJob({name: "linear-triage-summary",triggers: [Triggers.linear.onIssueCreated({ project: LinearProject.Triage })],onTrigger: async (event) => {const issue = event.data.dataconst agent = TerseAgent.create({prompt: "Summarize the PRs linked to this Linear issue.",skills: [Skills.linear(), Skills.github(), Skills.slack()],})const summary = await agent.runAndWait(`Summarize PRs linked to ${issue.identifier}`)await agent.tools.slack.sendMessage({slackUserId: issue.assignee.slackUserId,message: summary,})const slackUserId = issue.assignee.slackUserIdif (slackUserId) {await agent.tools.slack.sendMessage({slackUserId,message: summary,})} else {await agent.tools.slack.sendMessage({channelId: SlackChannel.Triage.channelId,message: `${issue.assignee.name}: ${summary}`,})}},})
Why Terse
Equipped to build production workflows.
Typed end-to-end
Mistakes caught at compile time, not in prod.
Your editor knows which channels, repos, and projects Terse has access to. Reference one you haven't granted, and the type checker catches it before the workflow ever runs.
Improves with use
Production teaches the workflow.
Every week, Terse reviews recent runs and proposes patches: missing fallbacks, prompt drift, redundant calls. Apply with terse apply, verify with terse test.
Deterministic by default
Skip the agent when you don't need one.
Not every step needs reasoning. Call skill methods directly with the toolbox: same typed SDK, same ACL'd scopes, no agent overhead. Use it when you just need to push, pull, or post.
Debug like code
Reproduce any run locally.
terse history lists past runs. terse replay reproduces any one locally with the exact event. terse test runs jobs locally against sample events. terse listen pipes live prod events into your dev process.
Ready?
Your first workflow in 60 seconds.
Install the CLI, write a job in TypeScript, deploy serverless.
npm i -g terse-clinpx skills add TerseAI/Terse




