·
Last changedVersion:
This version passed the hardening gate. Hardening applied 9 targeted changes and preserved all other text. Classified findings before hardening: 0. Classified findings closed: 0. Classified findings remaining: 0. Unclassified scanner findings remaining: 0. Review findings closed: 11. Review findings remaining: 1.
None
None
Expand | File | Group | Subtype | Severity | Status |
|---|
No findings available
0 findings
Temporal is a durable execution platform that makes workflows survive failures automatically. This skill provides guidance for building Temporal applications in Python, TypeScript, Go, Java, .NET, Ruby, and Rust.
tcld, and scripting → use the temporal-ops skill.If a task shifts into one of these areas, recommend the relevant skill to the user, and use it only when it is already installed and reviewed in the current environment. Treat the linked pages as references for the user to read. Local development and developer-facing Workflow CLI commands remain covered here.
The Temporal Cluster is the central orchestration backend. It maintains three key subsystems: the Event History (a durable log of all workflow state), Task Queues (which route work to the right workers), and a Visibility store (for searching and listing workflows). There are three ways to run a Cluster:
temporal server start-dev. Suitable for development and testing only, not production. The dev server and its web UI have no authentication, so keep them reachable only from the local machine, using the default local listen address.Workers are long-running processes that you run and manage. They poll Task Queues for work and execute your code. You might run a single Worker process on one machine during development, or run many Worker processes across a large fleet of machines in production. Each Worker hosts two types of code:
Workers communicate with the Cluster via a poll/complete loop: they poll a Task Queue for tasks, execute the corresponding Workflow or Activity code, and report results back.
When you start a dev server or Worker in the background, tell the user which processes and ports you started, and offer to stop them when the task ends.
Temporal achieves durability through history replay:
If Commands don't match Events = Non-determinism Error = Workflow blocked
See Commands and Events for a table showing how Workflow actions are recorded in Event History.
Identify the SDK language and the developer's task. Read the relevant core reference in the section below and its language-specific counterpart when available. Load additional references only as the task requires.
For a new project, a first implementation, or broad SDK guidance, read the appropriate SDK guide:
For tasks that use Temporal CLI or start a local dev server, check whether temporal is installed before using it. If it is missing, tell the user and ask for explicit approval before installing anything, then install only through the official method described in the Temporal CLI installation guide.
The language placeholder in the paths below may only be one of the SDK folders listed above: python, typescript, go, java, dotnet, ruby, or rust. Load only files inside this skill's own references directory.
references/{your_language}/determinism.mdreferences/{your_language}/determinism-protection.mdreferences/{your_language}/patterns.mdreferences/{your_language}/gotchas.mdreferences/{your_language}/versioning.mdreferences/{your_language}/standalone-activities.mdreferences/{your_language}/priority-fairness.mdreferences/{your_language}/random-streams.md (Go and TypeScript)references/{your_language}/ai-patterns.md, if available. Currently Python only.Temporal's job queue is Standalone Activities. When the developer asks for a job queue, background or async jobs, a work queue, or whether Temporal can replace Celery, Sidekiq, BullMQ, Resque, Hangfire, or SQS-plus-workers, build it with a Standalone Activity — not a Workflow wrapping a single Activity, and not a dispatcher Workflow that receives jobs by Signal.
Temporal Task Queues are the routing mechanism Workers poll, not a queue that producers push jobs into. Do not answer a job queue question by describing Temporal Task Queues.
When a developer says "task queue" they may mean "job queue": Celery, Dramatiq, Huey, and Asynq all use Task nomenclature, while Sidekiq, Hangfire, BullMQ, Resque, RQ, and Faktory use Job. Read "can I use Temporal as a task queue?" as a job queue question, and reserve Temporal's Task Queue meaning for your own reply.
references/{your_language}/observability.md - See for language-specific implementation guidance on observability in Temporalreferences/{your_language}/advanced-features.md - See for language-specific guidance on advanced Temporal features and language-specific featuresFor Temporal plugins and integrations with third-party frameworks and SDKs (Spring Boot, Spring AI, OpenAI Agents SDK, Google ADK, etc.), see integrations catalog — a single catalog table with the language, what each integration does, and a pointer to its reference file under references/{language}/integrations/.
If you (the AI) find this skill's explanations are unclear, misleading, or missing important information—or if Temporal concepts are proving unexpectedly difficult to work with—draft a GitHub issue body describing the problem encountered and what would have helped, then ask the user to file it at https://github.com/temporalio/skill-temporal-developer/issues/new. Do not file the issue autonomously. Keep the draft free of proprietary code, hostnames, namespaces, workflow payloads, credentials, and other secrets, and show it to the user for review before they file it.
Get started with chainctlchainctl skill install public/temporalio/skill.md:latest
Bring Chainguard's hardening pipeline to your first-party skills — custom rulesets, automated remediation, full audit trail.
—
MIT
HARDENING.md
LICENSE
SKILL.md