Skip to main content

Yield

Yield for Python

Move repeatable coding-agent instructions from words into Python.

Build typed, resumable workflows that stay beside the code they operate on.

PyPI version Python versions Build status MIT license

Website · Documentation · PyPI · GitHub

The package name and import name are both yieldskill. Python reserves yield as a keyword.

Create a workflow

1. Install Yield

Yield supports Python 3.10 or later on macOS, Linux, and Windows. Create a virtual environment and install the public package:

python3 -m venv .venv
source .venv/bin/activate
python -m pip install yieldskill
python -m yieldskill --version

On Windows PowerShell:

py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install yieldskill
python -m yieldskill --version

Each wheel contains the matching yskill runtime for its platform. You do not need Go, Node.js, or a separate CLI installation.

2. Create the workflow

Create a Python workflow inside your repository:

python -m yieldskill init skills/env-doctor \
  --language python \
  --description "Check the Python environment and explain the required fix."

Replace skills/env-doctor/main.py with this tested workflow:

from yieldskill import define_skill

def program(ctx):
    probe = ctx.run_command(
        "probe-python", "python3 --version || python --version", timeout_seconds=60
    )

    diagnosis = ctx.agent_task(
        "diagnose",
        "Given the probe output, is this environment healthy for the project? "
        "If not, state the single most likely fix.",
        context={"exit_code": probe.exit_code, "stdout": probe.stdout, "stderr": probe.stderr},
        schema={
            "type": "object",
            "required": ["healthy"],
            "properties": {
                "healthy": {"type": "boolean"},
                "fix_hint": {"type": "string"},
            },
        },
    )

    if not diagnosis["healthy"]:
        answer = ctx.ask_user(
            "apply-fix",
            f"The environment needs a fix: {diagnosis.get('fix_hint', 'unknown')}. Apply it now and reply done.",
            options=[{"value": "done"}, {"value": "skip"}],
        )
        if answer != "done":
            ctx.blocked("the environment fix was not applied")
        recheck = ctx.run_command(
            "recheck-python", "python3 --version || python --version", timeout_seconds=60
        )
        ctx.require(recheck.exit_code == 0, "the environment probe passes after the fix", recheck)
        return {"healthy": True, "fixed": True}

    ctx.require(probe.exit_code == 0, "the environment probe passes", probe)
    return {"healthy": True, "fixed": False}


define_skill(program)

The generated skill.json declares Python as the runner. The generated SKILL.md tells a coding agent how to start and resume the workflow.

3. Test the workflow

Use deterministic fixture responses during tests. Save this as skills/env-doctor/fixtures/responses.json:

{
  "diagnose": { "healthy": true }
}

Then test the workflow:

python -m yieldskill doctor skills/env-doctor --test

Yield runs commands for real and supplies agent and user responses from the fixture. A successful test reaches completed without leaving a run journal.

4. Register the skill

Registration lets installed coding agents discover the workflow:

python -m yieldskill register skills/env-doctor

Select the verified agents explicitly when you do not want automatic detection:

python -m yieldskill register skills/env-doctor \
  --agent cursor,codex,claude-code

The generated adapters point back to skills/env-doctor. They do not copy the workflow or install its dependencies again.

5. Run the skill

Start a new coding-agent session so it discovers the registered skill. Where slash skills are supported, run:

/env-doctor

Otherwise, ask the agent in plain language:

Use the env-doctor skill to check this project.

The agent follows the adapter, starts the canonical Python workflow, and asks for each required agent or user response.

How Yield runs and resumes

  1. Your Python function emits one typed operation.
  2. Yield records the request and exits. It does not run a daemon.
  3. The coding agent, user, or CLI supplies the result.
  4. Yield replays the function from its journal until it reaches the next operation.

Replay must produce the same operation sequence. Yield reports divergence instead of giving a recorded response to a different operation.

Where AgentTask fits

ctx.agent_task() delegates one bounded judgment to the coding agent. Pass important evidence explicitly, as this workflow passes the probe result. With its schema, Yield checks the returned JSON shape before the workflow continues; it does not prove the diagnosis is correct. Host workspace and conversation access are host-dependent.

Python primitive Purpose
ctx.run_command() Execute a command and record its exit code and output.
ctx.agent_task() Delegate one bounded judgment; an optional schema validates the result.
ctx.ask_user() Request an explicit human decision.
ctx.require() Bind a required claim to recorded evidence.
ctx.blocked() / ctx.refused() Stop honestly when work cannot or must not continue.

See the primitive guides and CLI reference for the complete contract.

Guarantees and limits

Yield provides deterministic control flow, typed requests and responses, persistent run state, replay with divergence detection, stale and duplicate response rejection, and evidence-bound completion.

Schema validity is not truth. Yield cannot prove that a coding agent performed only the requested work. run_command is different: the Yield CLI executes the command, so its recorded exit code and output are observed facts.

Programs must remain deterministic between operations. Do not read clocks, random values, environment variables, or changing files to choose the next operation. Cross those boundaries through a Yield operation instead.

Yield is not a daemon, hosted runtime, workflow DSL, marketplace, coding-agent loop, multi-agent orchestrator, or security sandbox.

Optional developer helper

Installing yieldskill does not create skills or coding-agent adapters. After learning the manual workflow above, install guided assistance explicitly:

python -m yieldskill helper install --language python

Review the plan and restart the coding agent after installation. The helper can teach, create, convert, check, repair, upgrade, and register workflows. yskill bootstrap remains a compatibility alias.

Coding agents and source

Cursor, Codex, and Claude Code are verified integrations. Yield also provides registry-backed project paths for other coding agents; those paths are not presented as end-to-end verified.

Yield is available under the MIT license.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

yieldskill-0.5.0-py3-none-win_arm64.whl (1.7 MB view details)

Uploaded Python 3Windows ARM64

yieldskill-0.5.0-py3-none-win_amd64.whl (2.0 MB view details)

Uploaded Python 3Windows x86-64

yieldskill-0.5.0-py3-none-manylinux_2_17_x86_64.whl (1.9 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

yieldskill-0.5.0-py3-none-manylinux_2_17_aarch64.whl (1.7 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

yieldskill-0.5.0-py3-none-macosx_11_0_x86_64.whl (1.9 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

yieldskill-0.5.0-py3-none-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file yieldskill-0.5.0-py3-none-win_arm64.whl.

File metadata

  • Download URL: yieldskill-0.5.0-py3-none-win_arm64.whl
  • Upload date:
  • Size: 1.7 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for yieldskill-0.5.0-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 f095180effaec543175b25d94862f3a0c261ab88640c19e5d5b15f0bcf894b92
MD5 3c5b7987c76a62e6f438061cdd3d1b0b
BLAKE2b-256 83d41d0b826abb11165b665a9a52c717a6ca51e7eef167e0b13755db3a0e0803

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.5.0-py3-none-win_arm64.whl:

Publisher: npm-publish.yml on operatorstack/yield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yieldskill-0.5.0-py3-none-win_amd64.whl.

File metadata

  • Download URL: yieldskill-0.5.0-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for yieldskill-0.5.0-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 72e1d2fc6258776355e5f0c892b1365e323c5afd324570a0577bde8a3f0a407d
MD5 8edc5d8c99846bb2b9db2cb4fcc440a6
BLAKE2b-256 84ae7ad94cb9afcfb46b66dbed21cf4614d28fcf5d1428074c6aea9877f9ee56

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.5.0-py3-none-win_amd64.whl:

Publisher: npm-publish.yml on operatorstack/yield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yieldskill-0.5.0-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for yieldskill-0.5.0-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5a34826aa01028c0659546bfed53b65e0f174501569443bd129ce3fd4623d790
MD5 edb97a0ba8bc108fbe925cc253bbfb21
BLAKE2b-256 1ccef88005c8910369aeaba20fa99e89e172ea17d12d8b3715e8e9460829f5f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.5.0-py3-none-manylinux_2_17_x86_64.whl:

Publisher: npm-publish.yml on operatorstack/yield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yieldskill-0.5.0-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for yieldskill-0.5.0-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 36b35a165b8ba843c747167a068b387e7d7cfc5996f2e1c1723d96c61d3580bf
MD5 88469650b636d9ce93956c63d81ff266
BLAKE2b-256 8ce57c1048a51bc3a3244bfb3bf341f1e255b6e8c81369c284ecfcf79b9dedc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.5.0-py3-none-manylinux_2_17_aarch64.whl:

Publisher: npm-publish.yml on operatorstack/yield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yieldskill-0.5.0-py3-none-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for yieldskill-0.5.0-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 d4c9f69243df4dace1a89aacc48295b1f0074a21320d911dd8a9aaf508eb46ba
MD5 a271fd4aa87fc4779dcf0bbad19e800c
BLAKE2b-256 0192716ba85f44528bc555412498325c02a6981222ac3262f3b28abf057397f8

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.5.0-py3-none-macosx_11_0_x86_64.whl:

Publisher: npm-publish.yml on operatorstack/yield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yieldskill-0.5.0-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yieldskill-0.5.0-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0f6c4243dd8061fd081222263655f4bd1a6b98b4f18a034e2295a42b59b00ff2
MD5 407c9045e0df5502feb4077fb6b77bbf
BLAKE2b-256 c7431bbdc838382dc472229d27f4eb2e728217a9954437f29b28d7b71c24dd46

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.5.0-py3-none-macosx_11_0_arm64.whl:

Publisher: npm-publish.yml on operatorstack/yield

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page