mcpField
D
dbos-typescript

dbos-typescript

github.com/dbos-incDevelopment19632 installsUpdated today
Repository

About dbos-typescript

A best-practices skill for developers building fault-tolerant TypeScript applications with DBOS durable workflows. It covers setup, workflow design, queues, communication, testing, and DBOS 4.x migration guidance.

Key features

  1. 01DBOS TypeScript 5.x guidance
  2. 02Workflow and step design
  3. 03Queue and concurrency practices
  4. 04Workflow communication patterns
  5. 05Testing and upgrade guidance

Use cases

  1. 01Adding DBOS to a TypeScript application
  2. 02Designing durable workflows and steps
  3. 03Applying queues for concurrency control
  4. 04Upgrading projects using DBOS 4.x

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dbos-inc/agent-skills --skill dbos-typescript

After installing, type/dbos-typescriptin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

AGENTS.md
references/
_sections.md
advanced-patching.md
advanced-serialization.md
advanced-shared-database.md
advanced-upgrading.md
advanced-versioning.md
client-enqueue.md
client-setup.md
comm-events.md
comm-messages.md
comm-streaming.md
lifecycle-config.md
lifecycle-express.md
pattern-classes.md
pattern-debouncing.md
pattern-idempotency.md
pattern-scheduled.md
pattern-sleep.md
queue-basics.md
queue-concurrency.md
queue-deduplication.md
queue-delay.md
queue-listening.md
queue-management.md
queue-partitioning.md
queue-rate-limiting.md
step-basics.md
step-retries.md
step-timeouts.md

Details

From the project README

DBOS TypeScript Best Practices

Guide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows. Targets DBOS TypeScript 5.x (@dbos-inc/dbos-sdk). If a project is on 4.x or uses removed APIs (new WorkflowQueue, @DBOS.scheduled/DBOS.registerScheduled, partitionQueue, priorityEnabled, @DBOS.requiredRole, dbos-config.yaml-based config), see references/advanced-upgrading.md.

When to Apply

Reference these guidelines when:

  • Adding DBOS to existing TypeScript code
  • Creating workflows and steps
  • Using queues for concurrency control
  • Implementing workflow communication (events, messages, streams)
  • Configuring and launching DBOS applications
  • Using DBOSClient from external applications
  • Testing DBOS applications

Rule Categories by Priority

PriorityCategoryImpactPrefix
1LifecycleCRITICALlifecycle-
2WorkflowCRITICALworkflow-
3StepHIGHstep-
4QueueHIGHqueue-
5CommunicationMEDIUMcomm-
6PatternMEDIUMpattern-
7TestingLOW-MEDIUMtest-
8ClientMEDIUMclient-
9AdvancedLOWadvanced-

Critical Rules

Installation

Always install the latest version of DBOS:

npm install @dbos-inc/dbos-sdk@latest
DBOS Configuration and Launch

A DBOS application MUST configure and launch DBOS before running any workflows:

import { DBOS } from "@dbos-inc/dbos-sdk";

async function main() {
  DBOS.setConfig({
    name: "my-app",
    applicationVersion: "0.1.0",
    systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,
  });
  await DBOS.launch();
  await myWorkflow();
}

main().catch(console.log);

When creating a new application, set applicationVersion to "0.1.0". If omitted, DBOS derives an opaque hash from workflow source code. When editing an existing application, leave its configured version alone — changing it is a deployment decision (see references/advanced-versioning.md).

Workflow and Step Structure

Workflows are comprised of steps. Any function performing complex operations or accessing external services must be run as a step using DBOS.runStep:

import { DBOS } from "@dbos-inc/dbos-sdk";

async function fetchData() {
  return await fetch("https://api.example.com").then(r => r.json());
}

async function myWorkflowFn() {
  const result = await DBOS.runStep(fetchData, { name: "fetchData" });
  return result;
}
const myWorkflow = DBOS.registerWorkflow(myWorkflowFn);
Key Constraints
  • Do NOT call, start, or enqueue workflows from within steps
  • Do NOT use threads or uncontrolled concurrency to start workflows - use DBOS.startWorkflow or queues
  • Workflows MUST be deterministic - non-deterministic operations go in steps
  • Do NOT modify global variables from workflows or steps
  • Register queues (DBOS.registerQueue) and create schedules (DBOS.applySchedules/DBOS.createSchedule) AFTER DBOS.launch() - they are stored in the system database
  • Steps are only durable when called from a workflow; outside a workflow they run as plain function calls
  • Connecting to DBOS Conductor (conductorKey, or deploying to DBOS Cloud) requires installing @dbos-inc/dbos-enterprise at the same minor version as @dbos-inc/dbos-sdk

How to Use

Read individual rule files for detailed explanations and examples:

references/lifecycle-config.md
references/workflow-determinism.md
references/queue-concurrency.md
references/advanced-upgrading.md
references/advanced-shared-database.md

If multiple applications share one system database, always set applicationName on DBOSClient and see references/advanced-shared-database.md.

References

Comments

Markdown supported