* Add Python standalone activities reference
* Add TypeScript standalone activities reference
* Add .NET standalone activities reference
* Add Java standalone activities reference
* Finalize draft for 0001-standalone-activities
* remove incomplete sections
* Add core page which abstracts out all shared stuff
* Standardize connection logic
* Unify worker setup section across SDK standalone-activity refs
Rename the worker section to "Worker setup & activity registration" in
all four SDK files and lead with a single sentence noting the Activity
is defined and registered exactly as normal. Drop the .NET "Define the
Activity" section so no file repeats how to define an activity, matching
the Python structure.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* re-organize to a LOGICAL structure, not just a flat list of H2 headings.
* finish cleaning up parts other than calling activities
* Get client connection in order
* cleanup of operations content
* Add links
---------
Co-authored-by: skill-sync[bot] <skill-sync[bot]@users.noreply.github.com>
Co-authored-by: Donald Pinckney <donald.pinckney@temporal.io>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Add Preload Modules subsection to TypeScript advanced features
Documents the `preloadModules` bundler option on `BundleOptions` and
`WorkerOptions.bundlerOptions`, including the `reuseV8Context`
precondition, the per-workflow-state warning, and the bundle-time
conflict with `ignoreModules`. Sourced from sdk-typescript JSDoc since
the docs clone is silent on this option.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* Finalize draft for 0025-preload-modules
---------
Co-authored-by: skill-sync[bot] <skill-sync[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
* Implement planned topic: 0035-dns-resolver-config
Add DNS Resolver Configuration section to references/python/advanced-features.md
documenting temporalio.service.DnsLoadBalancingConfig: the resolution_interval_millis
field, the default classvar, the Client.connect / CloudOperationsClient.connect
kwargs, and the silent mutual-exclusion with HttpConnectProxyConfig. Anchored to
sdk-python v1.27.2 source (the official docs site does not yet cover this class).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
* Finalize draft for 0035-dns-resolver-config
* Apply suggestions from code review
Co-authored-by: Donald Pinckney <donald_pinckney@icloud.com>
---------
Co-authored-by: skill-sync[bot] <skill-sync[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Donald Pinckney <donald.pinckney@temporal.io>
Co-authored-by: Donald Pinckney <donald_pinckney@icloud.com>
* Absorb CLI skill content: workflow commands, dev server, and CLI gotchas
Migrate developer-facing content from skill-temporal-cli as part of the
CLI skill consolidation. Adds cli-workflow-commands.md (start, execute,
signal, query, update reference), expands dev-management.md with full
dev server flags and dev-to-prod recipe, appends CLI gotchas, and
enriches install_cli.md. Updates SKILL.md triggers and routing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Address review feedback: flag table consistency, global flag annotations, dedup gotchas
Standardize cli-workflow-commands.md flag tables to use Required column
throughout. Annotate --log-level and --log-format as global flags in
dev-management.md. Collapse redundant dev server gotchas into a
cross-reference to dev-management.md.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Clarify that a local dev server is not required for development
Workers can target a local dev server, self-hosted cluster, or
Temporal Cloud. The previous wording implied a local server was
mandatory.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Clean up out of scope section
* Cleanup CLI installation
* Remove junk, add --output json
* Apply edit suggestion
* Add --output json explicitly
* remove docs markers
* Add one more --output json
* Apply suggestion from @donald-pinckney
* Change env to profile, and remove dead cross-reference to ops skill.
* Remove dead cross-links for now
* Update references/core/dev-management.md
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Donald Pinckney <donald.pinckney@temporal.io>
* Add all Ruby SDK reference files (11 files, ~2100 lines)
Created complete Ruby reference documentation covering:
- ruby.md: Overview, quick start, key concepts, file organization
- patterns.md: Signals, queries, updates, child workflows, saga, cancellation, etc.
- determinism.md: Illegal call tracing, safe alternatives table
- determinism-protection.md: TracePoint, durable fiber scheduler, customization
- versioning.md: Patching API, type versioning, worker versioning
- testing.md: WorkflowEnvironment, mocking, replay, activity testing
- error-handling.md: ApplicationError, retries, timeouts, workflow failure
- data-handling.md: Data converter, ActiveModel, hints, search attributes
- observability.md: Logging, metrics, best practices
- gotchas.md: Common mistakes, illegal call tracing issues
- advanced-features.md: Schedules, async completion, worker tuning, Rails
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix alignment issues in Ruby reference files
Self-review fixes:
- patterns.md: Remove non-existent `workflow_run` annotation; entry point
is `def execute` (no annotation needed, unlike Python's @workflow.run)
- patterns.md: Remove conflicting manual query methods that duplicated
workflow_query_attr_reader
- error-handling.md: Remove `await` keyword (doesn't exist in Ruby)
- gotchas.md: Replace TS-style CancellationScope with Ruby's
Temporalio::Cancellation token-based detached cancellation
- data-handling.md: Replace homemade ActiveModel mixin with official SDK
pattern using ActiveSupport::Concern + ActiveModel::Serializers::JSON
- data-handling.md: Fix list_workflows call signature (positional, not kw)
- ruby.md, gotchas.md: Fix require paths to use 'temporalio/activity'
instead of 'temporalio/activity/definition'
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Fix correctness issues in Ruby reference files
- patterns.md: Fix external workflow signal to use class method ref
(TargetWorkflow.data_ready instead of TargetWorkflow, :data_ready)
- patterns.md: Add ? suffix to all_handlers_finished (Ruby boolean convention)
- ruby.md: Add 'default' namespace to Client.connect calls
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Add Ruby to all language references in SKILL.md and core files
- SKILL.md: Add "Temporal Ruby" trigger phrase to description
- SKILL.md: Update Overview to list Ruby as supported language
- SKILL.md: Add Ruby entry to Getting Started guide
- core/determinism.md: Add Ruby SDK Protection Mechanism entry
(Illegal Call Tracing via TracePoint + Durable Fiber Scheduler)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Apply suggestions from code review
Co-authored-by: Bart de Water <118401830+bdewater-thatch@users.noreply.github.com>
Co-authored-by: Chris Olszewski <chrisdolszewski@gmail.com>
* Apply suggestions from code review
Co-authored-by: Bart de Water <118401830+bdewater-thatch@users.noreply.github.com>
Co-authored-by: Donald Pinckney <donald_pinckney@icloud.com>
* Apply suggestion from @chris-olszewski
Co-authored-by: Chris Olszewski <chrisdolszewski@gmail.com>
* copy over sample code
* Remove useless section, mention Mutex
* cleanup mutex mentions
* Clean up transitive NDE section
* Menial changes to align to python structure
* Add Workflow Init section to Ruby advanced-features
Document the workflow_init class method (Ruby's equivalent of Python's
@workflow.init) for initializing workflow state before signal/update
handlers run. Parallels the Python reference's Workflow Init section.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Document graceful_shutdown_period in Ruby Worker Tuning
Add the graceful_shutdown_period worker option (Ruby's equivalent of
Python's graceful_shutdown_timeout) to the Worker Tuning section, with
an explanation of the worker shutdown sequence.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Propagate cancellation in Ruby activity-error handling
Update the Handling Activity Errors example to re-raise when
Temporalio::Error.canceled? is true (Ruby's equivalent of Python's
is_cancelled_exception), so a canceled activity cancels the workflow
rather than failing it. Also clarify that only ApplicationError fails a
workflow; other exceptions only fail/retry the workflow task.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Align Ruby Workflow Failure section to Python
Replace the workflow_failure_exception_type / worker-option examples
(misaligned with Python and already covered in advanced-features.md)
with Python's example of raising an ApplicationError to deliberately
fail a workflow. Add the terse note about not using non_retryable
inside a workflow.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Add logger configuration to Ruby observability
Document configuring the logger via Client.connect (logger: kwarg),
which is used by both Temporalio::Workflow.logger and the activity
logger. Parallels Python's Customizing Logger Configuration section.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Make Ruby Saga compensations cancellation-proof
Run saga compensations with a detached Temporalio::Cancellation so they
still execute when the workflow is canceled mid-saga. Previously they
used the workflow cancellation, which is already canceled at that point,
so the compensation activities would be canceled before starting. This
is the Ruby equivalent of Python's asyncio.shield.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Document patched() memoization caveat in Ruby versioning
Note that Temporalio::Workflow.patched memoizes per patch ID, so it
can't be used reliably in loops; append a sequence number to the patch
ID per iteration. This behavior is shared with Python and .NET.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Add default versioning behavior to Ruby worker versioning
Document configuring default_versioning_behavior on
Temporalio::Worker::DeploymentOptions, paralleling Python's Worker
Configuration with Default Behavior section.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix worker versioning config API names in Ruby docs
The Configuring Workers for Versioning example used class/kwarg names
that don't exist in the SDK. Correct them to deployment_options:,
Temporalio::Worker::DeploymentOptions, and
Temporalio::WorkerDeploymentVersion, matching the actual API and the
Worker Configuration with Default Behavior example.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Fix worker concurrency config in Ruby Worker Tuning
max_concurrent_workflow_tasks and max_concurrent_activities are not
valid Worker.new kwargs. Use the tuner: option with
Temporalio::Worker::Tuner.create_fixed(workflow_slots:, activity_slots:)
to control concurrent execution slots.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Align Ruby Workflow Init title with Python
Rename the section to 'Workflow Init Decorator' to match the Python
reference's heading.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Structure Ruby Metrics to match Python
Split the flat Metrics section into 'Enabling SDK Metrics' and
'Key SDK Metrics' subsections, matching the Python reference.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Bart de Water <118401830+bdewater-thatch@users.noreply.github.com>
Co-authored-by: Chris Olszewski <chrisdolszewski@gmail.com>
* Finalize draft for 0032-workflow-streams
* Apply suggestions from code review
Co-authored-by: Donald Pinckney <donald_pinckney@icloud.com>
* Remove the extended example. Can add later if needed.
---------
Co-authored-by: skill-sync[bot] <skill-sync[bot]@users.noreply.github.com>
Co-authored-by: Donald Pinckney <donald.pinckney@temporal.io>
Co-authored-by: Donald Pinckney <donald_pinckney@icloud.com>
* Add integrations catalog and per-language integrations/ layout
Adds references/integrations.md as a single catalog table for third-party
plugins and integrations (one row per integration: language, what it does,
link to a reference file). Reference files live under
references/{language}/integrations/.
Pre-seeds the catalog by moving the existing Spring Boot reference into
the new layout (references/java/integrations/spring-boot.md) and updating
its inbound links.
SKILL.md gains a single 3-line "Third-Party Integrations" section pointing
at the catalog so SKILL.md no longer accrues a line per new integration.
Each language entry-point (java.md, python.md) gets a one-line pointer to
the catalog filtered to its language.
This lets open integration PRs (Spring AI, Google ADK, OpenAI Agents
sandbox) be rebased onto a consistent home: move their reference file
into references/{language}/integrations/ and add one row to
references/integrations.md.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* Drop HTML contribution comment from integrations.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Covers auto-discovery mechanics, annotation layering (@WorkflowImpl vs
@ActivityImpl + @Component), WorkflowClient injection, worker lifecycle,
testing strategies, and Spring-specific gotchas. Updates java.md and
testing.md with pointers to the new reference.
Co-authored-by: Donald Pinckney <donald.pinckney@temporal.io>
Add a core reference file covering Priority (keys 1-5, inheritance,
when to use) and Fairness (keys, weights, virtual queues, round-robin
dispatch, rate limiting, weight overrides, enabling, limitations) with
SDK examples for Go, Java, Python, TypeScript, and .NET. Content is
grounded in the official Temporal docs.
Update SKILL.md to proactively surface Fairness when developers are
building multi-tenant applications, before they run into tenant
starvation problems.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* progress on go
* Go translation workflow completed.
* missed a few spots
* Manual edits
* Address feedback
* Add gotcha about anonymous local activities
* Sample code for payload converter
* clarify sdk protection mechanisms
When a workflow is cancelled mid-saga, compensations must run in a
cancellation-protected scope, otherwise they are immediately cancelled
before they can execute.
- Python: wrap compensation loop in asyncio.shield() so it runs even
when the workflow receives a CancelledError
- TypeScript: wrap compensation loop in CancellationScope.nonCancellable()
so it runs even when the root scope is cancelled (per official docs:
"Cleanup logic must be in a nonCancellable scope")
- TypeScript: also fix compensation registration order — register BEFORE
calling the activity (was already correct in Python)
Co-authored-by: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>