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

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ x86-64

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

Uploaded Python 3manylinux: glibc 2.17+ ARM64

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

Uploaded Python 3macOS 11.0+ x86-64

yieldskill-0.1.34-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.34-py3-none-win_arm64.whl.

File metadata

  • Download URL: yieldskill-0.1.34-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.34-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 26b59724b2be228a821c2d0349275af12026e25c38d72f8ff980c74eff26d6f9
MD5 af7c31eb9d93ca5dafe3928987e72600
BLAKE2b-256 70e838dfebe57ccccd4a5066d18e9ea5956ee00a69681be2fc6451ac101d0f40

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: yieldskill-0.1.34-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.34-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 1b4b21428140b22b2593dc56d8f0f1dfc63b733b7756729e116fc5bc34b2b296
MD5 b44091113aa1789285ccab46fdd51cc2
BLAKE2b-256 88486b79145f72338a7332f758e982bf1c1b20b482a88a93e73b224625fdc3b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for yieldskill-0.1.34-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 e65e5bbbcbf8b02dcda96bcbf37055a2a8bce808d7f36576e184447d6602844c
MD5 e45ce5f1bc13e64cbcf3c327b7ca0dd3
BLAKE2b-256 737ecef9c8217b308f835eb5444766c73ca0be09bd6a865f28ac97bba71d53fe

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for yieldskill-0.1.34-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 df355b55c07a4b8dbd8e5a97a753216a3f6f7c8570eac5835b39cdeb93a72a77
MD5 76af9bb1f03e93b87dc9b7d0e6341fb4
BLAKE2b-256 6e3fc31fb5532f3f898312e453aeb7e1ae3e5fc4ba69536dcf9dee1d39ad7621

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for yieldskill-0.1.34-py3-none-macosx_11_0_x86_64.whl
Algorithm Hash digest
SHA256 4fd4c1003bf7071028f54ce3c21899700959cca53c7a61bd0080737f840554fe
MD5 6f9e074353a055705017d5ec05bd795a
BLAKE2b-256 f07029a846ec637e64bd1cb647c19a9b11f849c95e2fd2fda2347ca6ab0b2b60

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for yieldskill-0.1.34-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8a3c3fab0aff8474168d7b1611e7f6e72dae29007847bd710c69b628679ce571
MD5 f768069310d6f1cd6fc1ac7c0244cbfd
BLAKE2b-256 8bf04f70f1cbe6b65c05aed0b8c162a4d9c73f3907082e922e7e8ef1c2be42bf

See more details on using hashes here.

Provenance

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