Skip to content
Back to skills

Distributed Transaction Manager

ASecurity

Saga patterns, compensating actions, and two-phase commit for distributed transactions. Activate on: distributed transaction, saga, compensating action, two-phase commit, eventual consistency, cross-service transaction. NOT for: single-database transactions (use database-connection-pool-manager), event sourcing (use cqrs-event-sourcing-architect).

  • 10 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added September 11, 2026
devopstypescriptgobashdockerdebuggingdatabasebackend

Works with

  • terminal

Security analysis

A100/100

Scanned September 11, 2026

npx -y skills add curiositech/windags-skills --skill distributed-transaction-manager --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Distributed Transaction Manager?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Distributed Transaction Manager
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/curiositech-distributed-transaction-manager/badge)](https://www.skillsdirectory.com/skills/curiositech-distributed-transaction-manager)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
license: Apache-2.0
name: distributed-transaction-manager
description: "Saga patterns, compensating actions, and two-phase commit for distributed transactions. Activate on: distributed transaction, saga, compensating action, two-phase commit, eventual consistency, cross-service transaction. NOT for: single-database transactions (use database-connection-pool-manager), event sourcing (use cqrs-event-sourcing-architect)."
allowed-tools: Read,Write,Edit,Bash(npm:*,npx:*,docker:*)
category: Backend & Infrastructure
tags:
  - distributed-transactions
  - saga
  - compensating-actions
  - consistency
  - microservices
pairs-with:
  - skill: cqrs-event-sourcing-architect
    reason: Event sourcing provides audit trail for saga steps
  - skill: event-driven-architecture-expert
    reason: Sagas coordinate via async events
  - skill: observability-apm-expert
    reason: Distributed tracing across saga steps is essential
---

# Distributed Transaction Manager

Design and implement reliable cross-service transactions using saga patterns, compensating actions, and orchestrated workflows.

## Activation Triggers

**Activate on:** "distributed transaction", "saga pattern", "compensating action", "two-phase commit", "eventual consistency", "cross-service transaction", "Temporal workflow", "rollback across services"

**NOT for:** Single-database ACID transactions → `database-connection-pool-manager` | Event sourcing → `cqrs-event-sourcing-architect` | Message queue setup → `event-driven-architecture-expert`

## Quick Start

1. **Map the transaction boundary** — identify all services that must participate
2. **Choose pattern** — choreography saga (event-driven) or orchestration saga (central coordinator)
3. **Define compensating actions** — every forward step needs a reverse operation
4. **Implement idempotency** — all steps must be safely retryable
5. **Add timeout and dead-letter handling** — no saga should hang indefinitely

## Core Capabilities

| Domain | Technologies |
|--------|-------------|
| **Orchestration** | Temporal 1.25+, Step Functions, Conductor |
| **Choreography** | Kafka events, RabbitMQ, Redis Streams |
| **Frameworks** | NestJS Saga, MassTransit (.NET), Axon (JVM) |
| **State Machines** | XState 5.x, custom saga state tables |
| **Monitoring** | Temporal UI, saga state dashboards |

## Architecture Patterns

### Orchestration Saga (Temporal)

```
Saga Orchestrator (Temporal Workflow)
    │
    ├─→ Step 1: Reserve Inventory    ──fail──→ (no compensation needed)
    │       ↓ success
    ├─→ Step 2: Charge Payment       ──fail──→ Compensate: Release Inventory
    │       ↓ success
    ├─→ Step 3: Create Shipment      ──fail──→ Compensate: Refund Payment
    │       ↓ success                            Compensate: Release Inventory
    └─→ COMPLETE
```

```typescript
// Temporal workflow definition
import { proxyActivities } from '@temporalio/workflow';

const { reserveInventory, releaseInventory,
        chargePayment, refundPayment,
        createShipment } = proxyActivities<Activities>({
  startToCloseTimeout: '30s',
  retry: { maximumAttempts: 3 },
});

export async function orderSaga(order: Order): Promise<OrderResult> {
  // Step 1
  await reserveInventory(order.items);
  try {
    // Step 2
    const paymentId = await chargePayment(order.payment);
    try {
      // Step 3
      const shipmentId = await createShipment(order.shipping);
      return { status: 'completed', paymentId, shipmentId };
    } catch {
      await refundPayment(paymentId);
      throw new Error('Shipment failed');
    }
  } catch {
    await releaseInventory(order.items);
    throw new Error('Order saga failed');
  }
}
```

### Choreography Saga (Event-Driven)

```
Order Service         Inventory Service       Payment Service
     │                       │                       │
     ├─ OrderCreated ───────→│                       │
     │                       ├─ InventoryReserved ──→│
     │                       │                       ├─ PaymentCharged
     │←── OrderCompleted ────┤←── PaymentConfirmed ──┤
     │                       │                       │
     │  On failure at any step, each service         │
     │  listens for failure events and compensates   │
```

### Saga State Machine

```
STARTED → INVENTORY_RESERVED → PAYMENT_CHARGED → SHIPMENT_CREATED → COMPLETED
    │              │                   │                  │
    └→ FAILED   COMPENSATING ←─── COMPENSATING ←─── COMPENSATING
                    │
                COMPENSATED (terminal)
```

## Anti-Patterns

1. **Distributed two-phase commit** — 2PC across microservices creates tight coupling and availability problems; use sagas instead
2. **No compensation logic** — every forward action must have a defined reverse; "undo" is not optional
3. **Non-idempotent steps** — network retries will duplicate calls; use idempotency keys for every saga step
4. **Ignoring partial failure** — compensations can also fail; implement compensation retry with dead letter escalation
5. **Synchronous saga coordination** — sagas should be async; do not block the original request on saga completion

## Quality Checklist

- [ ] Every forward step has a defined compensating action
- [ ] All steps are idempotent with unique operation IDs
- [ ] Saga state persisted durably (not in-memory)
- [ ] Timeout configured for each step (no infinite waits)
- [ ] Compensation failures route to dead letter queue with alerting
- [ ] Distributed tracing spans the entire saga lifecycle
- [ ] Saga state machine has clear terminal states (COMPLETED, COMPENSATED, FAILED)
- [ ] Integration tests cover happy path AND each compensation branch
- [ ] Temporal/orchestrator dashboard accessible for debugging stuck sagas

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…