workflow-automation — Claude Code skill: what it does, how to install
Teaches durable execution for multi-step jobs: when a step dies mid-flow, the workflow picks up where it stopped instead of replaying from the start.
npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a claude-codeWhat workflow-automation does
The skill covers durable execution for agent workflows. A network hiccup in the middle of a payment flow normally means lost work and an angry customer; here the run resumes at the broken step. It compares n8n, Temporal and Inngest, and walks through sequential, parallel and orchestrator-worker shapes. The author's call: n8n for accessibility, Temporal for correctness, Inngest for developer experience. Pick by need.
The material is SKILL.md plus references/detailed-guide.md, which the skill tells you to read before running anything. Samples are TypeScript: step.run steps in Inngest, proxyActivities with a retry block in Temporal. They are fragments, and the SDK signatures move between versions, so check them against your installed types and run them on test accounts.
One limit carries more weight than the rest. Durability does not buy exactly-once external effects. Payment and shipment calls need a stable operation key and a way to reconcile an ambiguous success, and email needs an outbox with deduplication. Keep payloads and credentials out of workflow history and logs. Audit your own steps before this goes near production, because a replayed charge costs more than a slow rollout.
What it helps with
- split a payment flow into durable steps with idempotency keys
- choose between n8n, Temporal and Inngest for the job at hand
- run three document analyses in parallel and merge one report
- survive a dropped connection without losing finished steps
- keep payloads and credentials out of workflow history
Example prompts for the agent
- Turn this order flow into durable Inngest steps and add an idempotency key to the payment call
- Compare Temporal and n8n for background document processing and tell me which fits our case
- Build an orchestrator-worker Temporal workflow: plan the task, then child workflows for create, modify and delete
How to install workflow-automation
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a claude-code2Manually: put the files in place
~/.claude/skills/workflow-automation/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/workflow-automation/
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a codex2Manually: put the files in place
.agents/skills/workflow-automation/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a cursor2Manually: put the files in place
.cursor/skills/workflow-automation/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install sickn33/agentic-awesome-skills workflow-automation2Manually: put the files in place
.github/skills/workflow-automation/SKILL.md1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a gemini-cli2Platform CLI
gemini skills install https://github.com/sickn33/agentic-awesome-skills --path skills/workflow-automationManually: put the files in place
.devin/skills/workflow-automation/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set80
The whole set →Similar
Questions about workflow-automation
How do I install workflow-automation in Claude Code?
Run npx skills add sickn33/agentic-awesome-skills --skill workflow-automation -a claude-code. The skill lands at ~/.claude/skills/workflow-automation/SKILL.md.
What does workflow-automation do?
It steers your agent toward durable multi-step workflows that resume after a crash instead of starting over, and it helps you pick between n8n, Temporal and Inngest.
Does durable execution stop a payment from being charged twice?
No. Durability alone does not give exactly-once external effects: forward a stable operation key to the provider and reconcile ambiguous successes. Email needs an outbox with deduplication.
Source text
SKILL.md · MIT
---
name: workflow-automation
description: Workflow automation is the infrastructure that makes AI agents
reliable. Without durable execution, a network hiccup during a 10-step payment
flow means lost money and angry customers. With it, workflows resume exactly
where they left off.
risk: critical
source: vibeship-spawner-skills (Apache 2.0)
date_added: 2026-02-27
---
# Workflow Automation
Workflow automation is the infrastructure that makes AI agents reliable.
Without durable execution, a network hiccup during a 10-step payment
flow means lost money and angry customers. With it, workflows resume
exactly where they left off.
This skill covers the platforms (n8n, Temporal, Inngest) and patterns
(sequential, parallel, orchestrator-worker) that turn brittle scripts
into production-grade automation.
Key insight: The platforms make different tradeoffs. n8n optimizes for
accessibility, Temporal for correctness, Inngest for developer experience.
Pick based on your actual needs, not hype.
## Reliability and example limits
Durability does not guarantee exactly-once external effects. Payment/shipment helpers must forward a stable operation key to the provider and reconcile ambiguous success; email needs an outbox/deduplication strategy. Examples are incomplete fragments with version-specific SDK signatures. Validate them against installed types, use test accounts, and keep payloads/credentials out of workflow history and logs.
## Detailed Guide
Read [the detailed guide](references/detailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
## Inngest Example (TypeScript)
```
import { inngest } from "./client";
export const processOrder = inngest.createFunction(
{ id: "process-order" },
{ event: "order/created" },
async ({ event, step }) => {
// Step 1: Validate order
const validated = await step.run("validate-order", async () => {
return validateOrder(event.data.order);
});
// Step 2: Process payment (durable - survives crashes)
const payment = await step.run("process-payment", async () => {
return chargeCard(validated.paymentMethod, validated.total, { idempotencyKey: `order-${event.data.orderId}-payment` });
});
// Step 3: Create shipment
const shipment = await step.run("create-shipment", async () => {
return createShipment(validated.items, validated.address);
});
// Step 4: Send confirmation
await step.run("send-confirmation", async () => {
return sendEmail(validated.email, { payment, shipment });
});
return { success: true, orderId: event.data.orderId };
}
);
```
## Temporal Example (TypeScript)
```
import { proxyActivities } from '@temporalio/workflow';
import type * as activities from './activities';
const { validateOrder, chargeCard, createShipment, sendEmail } =
proxyActivities<typeof activities>({
startToCloseTimeout: '30 seconds',
retry: {
maximumAttempts: 3,
backoffCoefficient: 2,
}
});
export async function processOrderWorkflow(order: Order): Promise<void> {
const validated = await validateOrder(order);
const payment = await chargeCard(validated.paymentMethod, validated.total, { idempotencyKey: `order-${order.id}-payment` });
const shipment = await createShipment(validated.items, validated.address);
await sendEmail(validated.email, { payment, shipment });
}
```
## Inngest Example
```
export const analyzeDocument = inngest.createFunction(
{ id: "analyze-document" },
{ event: "document/uploaded" },
async ({ event, step }) => {
// Run analyses in parallel
const [security, performance, compliance] = await Promise.all([
step.run("security-analysis", () =>
analyzeForSecurityIssues(event.data.document)
),
step.run("performance-analysis", () =>
analyzeForPerformance(event.data.document)
),
step.run("compliance-analysis", () =>
analyzeForCompliance(event.data.document)
),
]);
// Aggregate results
const report = await step.run("generate-report", () =>
generateReport({ security, performance, compliance })
);
return report;
}
);
```
## Temporal Example
```
export async function orchestratorWorkflow(task: ComplexTask) {
// Orchestrator decides what work needs to be done
const plan = await analyzeTask(task);
// Dispatch to specialized worker workflows
const results = await Promise.all(
plan.subtasks.map(subtask => {
switch (subtask.type) {
case 'create':
return executeChild(createWorkerWorkflow, { args: [subtask] });
case 'modify':
return executeChild(modifyWorkerWorkflow, { args: [subtask] });
case 'delete':
return executeChild(deleteWorkerWorkflow, { args: [subtask] });
}
})
);
// Aggregate results
return aggregateResults(results);
}
```
## When to Use
- User mentions or implies: workflow
- User mentions or implies: automation
- User mentions or implies: n8n
- User mentions or implies: temporal
- User mentions or implies: inngest
- User mentions or implies: step function
- User mentions or implies: background job
- User mentions or implies: durable execution
- User mentions or implies: event-driven
- User mentions or implies: scheduled task
- User mentions or implies: job queue
- User mentions or implies: cron
- User mentions or implies: trigger
## Limitations
- 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.
© sickn33 · MIT · sickn33/agentic-awesome-skills