About dbos-typescript
A best-practices skill for building reliable TypeScript applications with DBOS durable workflows. It guides developers through configuration, workflow and step design, queues, communication, testing, and client use.
Key features
- 01Configure and launch DBOS
- 02Structure deterministic workflows
- 03Run external operations as steps
- 04Control concurrency with queues
- 05Use workflow communication patterns
- 06Test DBOS applications
Use cases
- 01Add DBOS to a TypeScript application
- 02Build workflows with durable steps
- 03Limit concurrent workflow execution
- 04Test DBOS applications
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill dbos-typescriptAfter installing, type/dbos-typescriptin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
AGENTS.mdCLAUDE.mdreferences/advanced-patching.mdadvanced-versioning.md_sections.mdclient-setup.mdclient-enqueue.mdcomm-events.mdcomm-messages.mdcomm-streaming.mdlifecycle-config.mdpattern-debouncing.mdpattern-idempotency.mdpattern-classes.mdlifecycle-express.mdpattern-scheduled.mdpattern-sleep.mdqueue-basics.mdqueue-deduplication.mdqueue-concurrency.mdqueue-listening.mdqueue-partitioning.mdworkflow-control.mdstep-basics.mdstep-transactions.mdworkflow-background.mdstep-retries.mdworkflow-constraints.mdqueue-rate-limiting.mdtest-setup.mdDetails
From the project READMEDBOS TypeScript Best Practices
Guide for building reliable, fault-tolerant TypeScript applications with DBOS durable workflows.
When to Use
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
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | Lifecycle | CRITICAL | lifecycle- |
| 2 | Workflow | CRITICAL | workflow- |
| 3 | Step | HIGH | step- |
| 4 | Queue | HIGH | queue- |
| 5 | Communication | MEDIUM | comm- |
| 6 | Pattern | MEDIUM | pattern- |
| 7 | Testing | LOW-MEDIUM | test- |
| 8 | Client | MEDIUM | client- |
| 9 | Advanced | LOW | advanced- |
Critical Rules
Installation
Install a supported SDK version compatible with the existing application and pin it in the lockfile. For a new project, first verify the current official release:
npm install @dbos-inc/dbos-sdk@<verified-version>
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",
systemDatabaseUrl: process.env.DBOS_SYSTEM_DATABASE_URL,
});
await DBOS.launch();
await myWorkflow();
}
main().catch(error => { console.error(error); process.exitCode = 1; });
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.startWorkflowor queues - Workflows MUST be deterministic - non-deterministic operations go in steps
- Do NOT modify global variables from workflows or steps
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
Limitations
- Examples are version-specific sketches; verify signatures and migration guidance against the installed SDK. Register workflows/steps before launch. Keep database credentials private.
- Step replay/retries can repeat external effects. Use stable provider-side idempotency keys and application transactions; a workflow ID alone does not guarantee a card is charged only once.
- Database reset, cancellation, resume and fork examples require an explicit target and authorization; they may destroy data, bypass queue limits or repeat effects.
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.