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.

Build a Python skill in five steps

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.

Python primitive Purpose
ctx.run_command() Execute a command and record its exit code and output.
ctx.agent_task() Ask the coding agent for schema-valid JSON.
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.

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.1.38-py3-none-win_arm64.whl (1.7 MB view details)

Uploaded Python 3Windows ARM64

yieldskill-0.1.38-py3-none-win_amd64.whl (1.9 MB view details)

Uploaded Python 3Windows x86-64

yieldskill-0.1.38-py3-none-manylinux_2_17_x86_64.whl (1.8 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

yieldskill-0.1.38-py3-none-macosx_11_0_x86_64.whl (1.8 MB view details)

Uploaded Python 3macOS 11.0+ x86-64

yieldskill-0.1.38-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.1.38-py3-none-win_arm64.whl.

File metadata

  • Download URL: yieldskill-0.1.38-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.1.38-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 5d70ec7e6063e61566b29ef3be7a652e3be5f3d8ec6b26d0043ccb874ede1904
MD5 a12b4f3e85ceea670bca66c852f06ec1
BLAKE2b-256 2063ae977fa7989c21b3eb749f36b34501ae05eb03886016a980d2c21f081e04

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.1.38-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.1.38-py3-none-win_amd64.whl.

File metadata

  • Download URL: yieldskill-0.1.38-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.9 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.1.38-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 7dbc3c6a4f21fc362c86ddbd1e0c5aefc216daef375a0680472a99fe3dedbb2a
MD5 08a665acb5485b1882a7c2a18b80e756
BLAKE2b-256 10d5afef19dc9d9ca5696ad4bc6fbef7024f920a97ad70617cede9f368e2bc0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.1.38-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.1.38-py3-none-manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for yieldskill-0.1.38-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 c39c240b92d3e1d6f92b35c5ba8f55f1cdf4c5ae53ea38437a3690cc6f31d7d4
MD5 f97ffa3741b6bdf4928ce8c7780a8eb5
BLAKE2b-256 72e5afe21bdecfc7fec28c5536ee3842064bf5ec41ce40ecb3bf16b94967e980

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.1.38-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.1.38-py3-none-manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for yieldskill-0.1.38-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 bb8380551a36fdd8b81b5c68ed9c1ffb28a2b28fa8c9e43d3854991c41d04d11
MD5 92a873274f905a042606f6b003f22420
BLAKE2b-256 228da9b4497bd1b6828d16251659c3bd9abed2d30f6beeb45b6d3c8e0b33208c

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.1.38-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.1.38-py3-none-macosx_11_0_x86_64.whl.

File metadata

File hashes

Hashes for yieldskill-0.1.38-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 59a0ef3a22e60364360ab27014eefb78245c7e4ea57b60364e1c05d59065c474
MD5 41ecd7947ce44a47d5a8204d9e064215
BLAKE2b-256 46a54a72fdd5081a42543d2e3defdc41fc0b0f64943f9609977b1ea59dc25f4a

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.1.38-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.1.38-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for yieldskill-0.1.38-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 08eb330438fb12b7712b053f6a5c14585b0bedd2b95a1edbfc7aa1e10c3ed8ab
MD5 7199fb572f6206d0ea63cb4ea6802ab9
BLAKE2b-256 5797a237a89813429a77273d8895cbc3702fb34db5464e3dc4acf8d53f842194

See more details on using hashes here.

Provenance

The following attestation bundles were made for yieldskill-0.1.38-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