CtrlK
BlogDocsLog inGet started
Tessl Logo

agently-stage

Use for Agently-Stage process-local task lifetime and sync/async interop: Stage scopes and handles, settlement/cancellation, StageCallBridge and StageStream, Tunnel replay channels, or local EventEmitter listeners. Choose this even inside TriggerFlow when a provider-owned sync wrapper bridges an async SDK; use TriggerFlow for application workflow orchestration or persistence.

70

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Agently Stage

Agently 4.1.4.7+ requires agently-stage>=0.3.8,<0.4.0. Use Stage for process-local lifetime, call-shape bridging, replay channels, and local listener dispatch. These APIs are independently useful, while Agently also uses Stage as a private runtime mechanism.

Read by Need

  • Stage scopes/backend selection, StageHandle, settlement, cancellation, caller-loop task ownership, pressure, idle timeout, and snapshots: task-lifecycle.md.
  • Stage.as_sync/as_async, StageCallBridge, StageStream, Tunnel, EventEmitter, and compatibility names: bridges-streams-events.md.
  • TriggerFlow state/signals, workflow close, recovery, or application orchestration: use agently-triggerflow.
  • Actions, ExecutionResources, TaskWorkspace, RecordStore, services, or DevTools: use agently-runtime.

Boundary

Choose the smallest surface that matches the caller:

  • Direct call/await when caller and work already have the same shape.
  • async with Stage() for explicit async lifetime; with Stage() for a deliberate blocking boundary.
  • Stage.as_sync/as_async for one scalar adapter.
  • Stage.go(...) plus StageHandle for a submitted result that must be read across loops or threads.
  • Stage.create_task(...) for caller-loop work Stage creates; adopt(...) only for a task that already exists.
  • StageCallBridge for injected lifetime, managed blocking cancellation, or iterator conversion; StageStream for generator replay.
  • Tunnel for an independently writable process-local replay channel and EventEmitter for process-local listeners.

A synchronous facade blocks its calling thread. Do not bridge a call that already has the correct native shape.

Invariants

  • Body completion and settlement are different facts. Read the body with get()/async_get() and wait for retained descendants/finalizers with wait_settled()/async_wait_settled() when their completion matters.
  • Never block the caller-owned loop needed by the work. Use the matching async barrier when Stage reports a lifecycle conflict.
  • After cancellation, wait for settlement before claiming no later Stage-owned work can occur. Stage cannot preempt a non-cooperative blocking function or undo an external side effect.
  • Put concurrency, pending, worker, and idle limits at their actual pressure boundaries. Carrier-loop count is not application admission control.
  • Automatic Stage scopes remain independent even when they safely reuse a carrier.

Stage does not own workflow progression, business retry, persistence, authorization, provider cancellation acknowledgement, or external side effects. TriggerFlowExecution remains Agently's public workflow lifecycle owner; Stage objects and carrier state must not enter execution snapshots.

LocalTaskScope and the historical Stage dispatch/function type names are 0.3 compatibility surfaces. Do not teach them as new owner layers.

Repository
AgentEra/Agently-Skills
Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.