create-workflow-typescript
Creates a TypeScript Dapr app, run locally with dapr run, that demonstrates Workflow, service invocation, pub/sub, bindings, jobs, state and secrets.
Skill by diagrid-labs
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/diagrid-labs-create-workflow-typescript
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: security, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/create-workflow-typescript
What's inside
- Skill name
create-workflow-typescript- Description
- Creates a TypeScript Dapr app, run locally with dapr run, that demonstrates Workflow, service invocation, pub/sub, bindings, jobs, state and secrets. Use for "create a workflow in TypeScript" or "create a Dapr app in Node.js". For Diagrid Catalyst use the catalyst-ai plugin.
- License
- MIT
- Instructions
- 168 lines in SKILL.md · view on GitHub
Agent Skills spec issues
- allowed-tools: must be a space-separated string
Files (2)
- REFERENCE.md
- SKILL.md
SKILL.md (first lines)
# Create Dapr Workflow TypeScript Application
## Overview
This skill describes how to create a Dapr application in TypeScript (Node.js) using the [`@dapr/dapr`](https://www.npmjs.com/package/@dapr/dapr) SDK. Unlike the other `create-workflow-*` skills, which scaffold a workflow-only app, this skill scaffolds a Dapr Workflow whose activities each exercise one other core Dapr building block — service invocation, pub/sub, bindings, jobs, state management, and secrets — plus a small second application that the workflow calls into via service invocation.
The `@dapr/dapr` SDK does not yet wrap the Jobs building block (no client method, no server callback hook as of `3.18.0`). The Jobs activity and its trigger route call the Dapr sidecar's HTTP API directly instead of going through the SDK — this is called out explicitly in the generated code, not hidden.
## Execution Order
You MUST follow these phases in strict order:
1. **Check specification** - Check if the user specified what needs to be built.
2. **Check optional tools** — Check whether the Diagrid Dapr Dev Dashboard is installed and remember the result. Never stop, ask or install for this.
3. **Project Setup** — Create all files and folders.
4. **Verify** — Verify that the project builds.
5. **Create README.md** — Create a readme that summarizes what is built and how to run & test the application. Do not provide instructions at the end of this phase.
6. **Show final message** - Your LAST output MUST be EXACTLY the message defined in the `## Show final message` section: the closing sentence followed by the Dev Dashboard recommendation. Do NOT add any other text, summary, or commentary.
## Check specification
If you don't have enough context what to build, ask the user the following clarifying questions one by one using an interview style:
1. Use the default **Order Processing** reference scenario, or describe a different business scenario? The default (recommended) prices an order via service invocation, saves it to state, pays for it using a secret, and announces completion via pub/sub, an output binding, and a scheduled follow-up job — exercising all 7 building blocks in one clean flow. If the user describes a different scenario, restate it back mapped onto the same 7 roles (one activity per building block, plus a second small app that the service-invocation activity calls) in your reply before creating any files — if the user said not to wait for confirmation, still show the mapping first, then continue without stopping — and adapt file/activity/topic names to that domain instead of the order-processing ones used below.
2. What's the name of this project? This will be used as the folder name. Don't use any spaces in this name.
## Prerequisites
The following must be installed by the user before this skill can run:
- [Node.js 22+ (LTS)](https://nodejs.org/en/download) — the SDK requires Node.js 18+; 22+ is recommended since Node 18 has reached end-of-life.
- [Docker](https://www.docker.com/products/docker-desktop/) or [Podman](https://podman.io/docs/installation)
- [Dapr CLI](https://docs.dapr.io/getting-started/install-dapr-cli/)
Additional runtime dependencies (handled during project setup):
- npm package: `@dapr/dapr` version `3.18.0`
- Optional: the [Diagrid Dapr Dev Dashboard](https://github.com/diagridio/dev-dashboard) for inspecting workflow runs locally. The skill only checks whether it is installed (see `## Check optional tools`); it never installs it and never stops without it.
## Check optional tools
Check once whether the optional [Diagrid Dapr Dev Dashboard](https://github.com/diagridio/dev-dashboard) is installed by following the **Check** section of [`../dapr-shared/dev-dashboard.md`](../dapr-shared/dev-dashboard.md) (`diagrid-dev-dashboard --version`). Remember the result (`DevDashboardInstalled`) for the final message. This check never stops the skill: do not ask the user about it, do not install anything, and continue with the next step whether or not the dashboard is installed.
## Project Setup
Create the project root folder inside the current location where the terminal is open:
```shell
mkdir <ProjectRoot>
cd <ProjectRoot>
```
The main application folder should start with the <ProjectRoot> and end with `-app`: <ProjectRoot>-app. The companion service invoked by the service-invocation activity is a second, independent npm project (its name follows the domain — `pricing-service` for the default scenario).
### Folder structure
```
<ProjectRoot>/
├── .gitignore
├── dapr.yaml
├── local.http
├── resources/
│ ├── statestore.yaml
│ ├── pubsub.yaml
│ ├── secretstore.yaml
│ ├── binding-receipt.yaml
│ └── binding-schedule.yaml
├── <ProjectName>/
│ ├── package.json
│ ├── tsconfig.json
│ └── src/
│ ├── index.ts
│ ├── models.ts
│ ├── workflow.ts
│ └── activities.ts
└── pricing-service/
├── package.json
├── tsconfig.json
└── src/
└── index.ts
```
### .gitignore
Node.js style `.gitignore` file in the project root. See `REFERENCE.md` for full example.
### dapr.yaml
Multi-app run file in the project root that starts both the main app and the companion service together, each with its own Dapr sidecar. Points to the resources folder. See `REFERENCE.md` for full example and key points.
### resources/statestore.yaml
Dapr Workflow requires a state store component (with `actorStateStore` set to `"true"`). See [`../dapr-shared/dapr-statestore.md`](../dapr-shared/dapr-statestore.md) for full example and key points.
### resources/pubsub.yaml
See [`../dapr-shared/dapr-pubsub-redis.md`](../dapr-shared/dapr-pubsub-redis.md) for full example and key points.
### resources/secretstore.yaml
See [`../dapr-shared/dapr-secretstore-local-env.md`](../dapr-shared/dapr-secretstore-local-env.md) for full example and key points.
### resources/binding-receipt.yaml and resources/binding-schedule.yaml
An output binding (`bindings.http`) and an input binding (`bindings.cron`) — the two directions of the Bindings building block. Neither needs extra infrastructure beyond what `dapr init` already provides. See `REFERENCE.md` for full example and key points.
### package.json / tsconfig.json (both apps)
Standard npm project files. Targets the `@dapr/dapr` SDK with CommonJS modules, matching the SDK's own tested consumption pattern. See `REFERENCE.md` for full example.
### Models
TypeScript interfaces for workflow and activity input/output, placed in a `models.ts` file in the main app. See `REFERENCE.md` for full example and key points.
### Workflow file
A workflow is an `async function*` registered with `WorkflowRuntime.registerWorkflow(...)`. The workflow code is placed in a `workflow.ts` file and orchestrates activities via `ctx.callActivity(...)`. See `REFERENCE.md` for full example, key points, determinism rules, and workflow patterns (chaining, fan-out/fan-in, sub-workflows, external events, saga).
### Activities fileFrom diagrid-labs/dapr-skills, MIT.
More from diagrid-labs/dapr-skills
- 0.633score
dapr-shared
diagrid-labs
Shared reference files for the Dapr skills.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
add-pubsub-dotnet
diagrid-labs
Adds Dapr pub/sub to an existing .NET (ASP.NET Core, plain or Aspire) project.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
migrate-workflow-typescript
diagrid-labs
Migrates an existing TypeScript/Node.js app to Dapr incrementally.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
create-workflow-from-diagram
diagrid-labs
Creates a Dapr workflow app from a diagram image (PNG, JPG, GIF, WebP) or a BPMN 2.0 file, in Go, Python, .NET, Java or JavaScript, run locally with dapr run.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
add-workflow-dotnet
diagrid-labs
Adds Dapr Workflow to an existing .NET (ASP.NET Core, plain or Aspire) project.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
review-workflow-management
diagrid-labs
Read-only audit of the HTTP management endpoints (start, status, terminate, pause, resume, raise-event, purge) an app exposes for Dapr Workflows, with…
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
add-pubsub-python
diagrid-labs
Adds Dapr pub/sub to an existing Python FastAPI app.
SkillAFreshness: A★ 13Claude Code +9 - 0.629score
create-agent-python
diagrid-labs
Creates a durable AI agent app in Python with the Dapr Agents SDK or a Diagrid framework wrapper, run locally with dapr run.
SkillAFreshness: A★ 13Claude Code +9 - 0.629score
create-agent-dotnet
diagrid-labs
Creates a durable AI agent app in .NET with Microsoft Agent Framework on Dapr Workflow, run locally with dapr run.
SkillAFreshness: A★ 13Claude Code +9 - 0.629score
create-workflow-dotnet
diagrid-labs
Creates a Dapr workflow app in .NET, run locally with dapr run.
SkillAFreshness: A★ 13Claude Code +9 - 0.629score
create-workflow-aspire
diagrid-labs
Creates a Dapr workflow app with .NET Aspire, run locally through the Aspire AppHost.
SkillAFreshness: A★ 13Claude Code +9 - 0.629score
check-prereq-python
diagrid-labs
Checks prerequisites for building Dapr Workflow apps in Python.
SkillAFreshness: A★ 13Claude Code +9
Signals
- Stars
- 13
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Oct 17, 2026 (12 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/diagrid-labs/dapr-skills
- Website
- diagrid.io
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from diagrid-labs
- 0.633score
dapr-shared
diagrid-labs
Shared reference files for the Dapr skills.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
migrate-workflow-typescript
diagrid-labs
Migrates an existing TypeScript/Node.js app to Dapr incrementally.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
add-pubsub-python
diagrid-labs
Adds Dapr pub/sub to an existing Python FastAPI app.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
create-workflow-from-diagram
diagrid-labs
Creates a Dapr workflow app from a diagram image (PNG, JPG, GIF, WebP) or a BPMN 2.0 file, in Go, Python, .NET, Java or JavaScript, run locally with dapr run.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
add-pubsub-dotnet
diagrid-labs
Adds Dapr pub/sub to an existing .NET (ASP.NET Core, plain or Aspire) project.
SkillAFreshness: A★ 13Claude Code +9 - 0.632score
review-workflow-management
diagrid-labs
Read-only audit of the HTTP management endpoints (start, status, terminate, pause, resume, raise-event, purge) an app exposes for Dapr Workflows, with…
SkillAFreshness: A★ 13Claude Code +9
Cite this page
create-workflow-typescript skill. Agent Mart. https://agentmart.dev/skills/diagrid-labs-create-workflow-typescript (last updated 2026-10-24)