YO

yo-async-effects

Provides patterns for single-threaded async workflows and algebraic-effect-based APIs in Yo.

Install

mkdir -p .claude/skills/yo-async-effects && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16616" && unzip -o skill.zip -d .claude/skills/yo-async-effects && rm skill.zip

Installs to .claude/skills/yo-async-effects

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Write Yo async code and algebraic effect handlers. Use this when working with Io, Future, JoinHandle, ctl/fn handlers, io.async, io.await, io.spawn, return, and unwind.
168 chars✓ has a “when” trigger
Advanced

Key capabilities

  • Write functions with `io : Io` parameters
  • Return or consume `Future(...)` values
  • Run tasks with `io.async`, `io.await`, or `io.spawn`
  • Define handlers using `ctl(args) -> R`
  • Reason about `return` versus `unwind` in handlers

How it works

This skill guides the creation of single-threaded async workflows and algebraic-effect-based APIs in Yo by defining explicit effect parameters and managing future values and handlers.

Inputs & outputs

You give it
async task, effect, or API requirement
You get back
Yo async code or algebraic effect handlers

When to use yo-async-effects

  • write async functions with IO parameters
  • define and implement algebraic effect handlers
  • manage concurrent tasks with io.spawn

About this skill

Yo Async and Effects

Use this skill for single-threaded async workflows and algebraic-effect-based APIs in Yo.

If a repository wraps these primitives, keep the same semantics and verify whether the wrapper changes naming only or behavior too.

When to use this skill

Use this skill when you need to:

  • write functions that take an io : Io parameter
  • return or consume Future(...) values
  • run tasks with io.async, io.await, or io.spawn
  • define handlers using ctl(args) -> R and install them as plain local bindings
  • reason about return versus unwind in handlers

Workflow

  1. Decide whether the task needs sequential async, concurrent async on one thread, or true parallelism.
  2. Add the effect parameters (io : Io, raise : Raise, …) to function signatures and call sites. There is no implicit injection — pass them explicitly.
  3. Use the async and effects recipes for working patterns.
  4. Re-check handler semantics before finalizing:
    • return(value) resumes the continuation
    • unwind(expr) discards it (only valid inside a ctl(...) -> R body)

High-signal rules

  • io.async(fn) creates a lazy future; it does not start until awaited or spawned.
  • io.await(future, e) runs or waits for the future and returns its result. e is the effect bundle the future expects.
  • io.spawn(future, e) starts it without waiting and returns JoinHandle(T).
  • handle.await(io) returns Option(T); .None means the task aborted via unwind.
  • Future types are Future(T) or Future(T, E) where E is a single effect bundle (typically a struct). Pack multiple effects into one struct rather than passing them as separate type arguments.
  • Effects are passed as explicit parameters — pass them by name at call sites.
  • A handler whose body may unwind must be typed ctl(args) -> R; otherwise type it fn(args) -> R. Subtyping is one-way: fn(T) -> R <: ctl(T) -> R.
  • return(value) inside a handler resumes the continuation; unwind(expr) discards it and exits the install frame.
  • Exception — non-resumable; handler calls unwind(...) to exit. ResumableException(T) — handler calls return(...) to resume.
  • Closures cannot be ctl and cannot capture ctl values. Handlers are bare (non-capturing) anonymous functions.
  • Yo async is single-threaded concurrency, not multithreaded parallelism.

Resource

When not to use it

  • When the task requires true parallelism
  • When working with multithreaded parallelism

Limitations

  • Yo async is single-threaded concurrency, not multithreaded parallelism.
  • There is no implicit injection of effect parameters; they must be passed explicitly.

How it compares

This skill provides specific guidance for Yo's single-threaded async and algebraic effect model, which differs from general async programming paradigms.

Compared to similar skills

yo-async-effects side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
yo-async-effects (this skill)02moNo flagsAdvanced
dify-dsl-generator188moNo flagsIntermediate
agentscope-java12moNo flagsAdvanced
cloudrun-development12moNo flagsAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

dify-dsl-generator

wwwzhouhui

专业的 Dify 工作流 DSL/YML 文件生成器,根据用户业务需求自动生成完整的 Dify 工作流配置文件,支持各种节点类型和复杂工作流逻辑

18108

agentscope-java

agentscope-ai

Expert Java developer skill for AgentScope Java framework - a reactive, message-driven multi-agent system built on Project Reactor. Use when working with reactive programming, LLM integration, agent orchestration, multi-agent systems, or when the user mentions AgentScope, ReActAgent, Mono/Flux, Project Reactor, or Java agent development. Specializes in non-blocking code, tool integration, hooks, pipelines, and production-ready agent applications.

122

cloudrun-development

TencentCloudBase

CloudBase Run backend development rules (Function mode/Container mode). Use this skill when deploying backend services that require long connections, multi-language support, custom environments, or AI agent development.

113

honcho-integration

plastic-labs

Integrate Honcho memory and social cognition into existing Python or TypeScript codebases. Use when adding Honcho SDK, setting up peers, configuring sessions, or implementing the dialectic chat endpoint for AI agents.

11

mistral-core-workflow-a

jeremylongshore

Execute Mistral AI primary workflow: Chat Completions and Streaming. Use when implementing chat interfaces, building conversational AI, or integrating Mistral for text generation. Trigger with phrases like "mistral chat", "mistral completion", "mistral streaming", "mistral conversation".

10

mistral-sdk-patterns

jeremylongshore

Apply production-ready Mistral AI SDK patterns for TypeScript and Python. Use when implementing Mistral integrations, refactoring SDK usage, or establishing team coding standards for Mistral AI. Trigger with phrases like "mistral SDK patterns", "mistral best practices", "mistral code patterns", "idiomatic mistral".

10

Search skills

Search the agent skills registry