Yield for Python
Move repeatable coding-agent instructions from words into Python.
Build typed, resumable workflows that stay beside the code they operate on.
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
- Your Python function emits one typed operation.
- Yield records the request and exits. It does not run a daemon.
- The coding agent, user, or CLI supplies the result.
- 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yieldskill-0.1.35-py3-none-win_arm64.whl.
File metadata
- Download URL: yieldskill-0.1.35-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
411c4a9c5ae7eaeb9c4d100b90819fb05e95b170f8e85f1841f7ef63fb7804ef
|
|
| MD5 |
5e1955cf767de6a03a40eff4c11942b4
|
|
| BLAKE2b-256 |
7939cbc4dd0e68d825154f4407a68f12815c62fb62ab563d45d4b141e0387d60
|
Provenance
The following attestation bundles were made for yieldskill-0.1.35-py3-none-win_arm64.whl:
Publisher:
npm-publish.yml on operatorstack/yield
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yieldskill-0.1.35-py3-none-win_arm64.whl -
Subject digest:
411c4a9c5ae7eaeb9c4d100b90819fb05e95b170f8e85f1841f7ef63fb7804ef - Sigstore transparency entry: 2373352077
- Sigstore integration time:
-
Permalink:
operatorstack/yield@79f35cbc02cd26efa220e3340f516487c5502597 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/operatorstack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
npm-publish.yml@79f35cbc02cd26efa220e3340f516487c5502597 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file yieldskill-0.1.35-py3-none-win_amd64.whl.
File metadata
- Download URL: yieldskill-0.1.35-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
febe89f41cb1d2258e1ca90fa5a386227507fb2a319d75ceb62221b426023327
|
|
| MD5 |
5d90e599f633d3e1525a4101a37b68ac
|
|
| BLAKE2b-256 |
e083a6ae8f798a600ab265b22d73e3f7cffc13eb0855d45f580ce6cc1745478e
|
Provenance
The following attestation bundles were made for yieldskill-0.1.35-py3-none-win_amd64.whl:
Publisher:
npm-publish.yml on operatorstack/yield
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yieldskill-0.1.35-py3-none-win_amd64.whl -
Subject digest:
febe89f41cb1d2258e1ca90fa5a386227507fb2a319d75ceb62221b426023327 - Sigstore transparency entry: 2373351197
- Sigstore integration time:
-
Permalink:
operatorstack/yield@79f35cbc02cd26efa220e3340f516487c5502597 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/operatorstack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
npm-publish.yml@79f35cbc02cd26efa220e3340f516487c5502597 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file yieldskill-0.1.35-py3-none-manylinux_2_17_x86_64.whl.
File metadata
- Download URL: yieldskill-0.1.35-py3-none-manylinux_2_17_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16f7f275af79f06f5ae4e294b98e777467a85f2b80b85e0fc35f04b03afeb447
|
|
| MD5 |
ed8b8a7b4f5e5c9244676b0a953545f1
|
|
| BLAKE2b-256 |
6c0f7f45e33d90d21f270c4d2e38a3c05e31713a3191d0da9d6765465119f661
|
Provenance
The following attestation bundles were made for yieldskill-0.1.35-py3-none-manylinux_2_17_x86_64.whl:
Publisher:
npm-publish.yml on operatorstack/yield
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yieldskill-0.1.35-py3-none-manylinux_2_17_x86_64.whl -
Subject digest:
16f7f275af79f06f5ae4e294b98e777467a85f2b80b85e0fc35f04b03afeb447 - Sigstore transparency entry: 2373351660
- Sigstore integration time:
-
Permalink:
operatorstack/yield@79f35cbc02cd26efa220e3340f516487c5502597 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/operatorstack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
npm-publish.yml@79f35cbc02cd26efa220e3340f516487c5502597 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file yieldskill-0.1.35-py3-none-manylinux_2_17_aarch64.whl.
File metadata
- Download URL: yieldskill-0.1.35-py3-none-manylinux_2_17_aarch64.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6a36f729c86f1b9bfab095bd142cfe9dfc7f1165521a937af913eb5171845ada
|
|
| MD5 |
193ac093bebfe95c0baa6adf8e6e5936
|
|
| BLAKE2b-256 |
3bbef58570447f7e251f9ad357a0afed04affa8ce0ee468ad33e2c24aaf115ef
|
Provenance
The following attestation bundles were made for yieldskill-0.1.35-py3-none-manylinux_2_17_aarch64.whl:
Publisher:
npm-publish.yml on operatorstack/yield
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yieldskill-0.1.35-py3-none-manylinux_2_17_aarch64.whl -
Subject digest:
6a36f729c86f1b9bfab095bd142cfe9dfc7f1165521a937af913eb5171845ada - Sigstore transparency entry: 2373353962
- Sigstore integration time:
-
Permalink:
operatorstack/yield@79f35cbc02cd26efa220e3340f516487c5502597 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/operatorstack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
npm-publish.yml@79f35cbc02cd26efa220e3340f516487c5502597 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file yieldskill-0.1.35-py3-none-macosx_11_0_x86_64.whl.
File metadata
- Download URL: yieldskill-0.1.35-py3-none-macosx_11_0_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: Python 3, macOS 11.0+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08ee15c5c61bae0391600dab5e8a14873981ad704a8424ac7ecfada2e942fca7
|
|
| MD5 |
00f4cf18b46e1dc9e716003b5f2251e6
|
|
| BLAKE2b-256 |
0513407b488a3285cd679e6c06b438115c2b6fac10ce368290e98d732958e37a
|
Provenance
The following attestation bundles were made for yieldskill-0.1.35-py3-none-macosx_11_0_x86_64.whl:
Publisher:
npm-publish.yml on operatorstack/yield
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yieldskill-0.1.35-py3-none-macosx_11_0_x86_64.whl -
Subject digest:
08ee15c5c61bae0391600dab5e8a14873981ad704a8424ac7ecfada2e942fca7 - Sigstore transparency entry: 2373350523
- Sigstore integration time:
-
Permalink:
operatorstack/yield@79f35cbc02cd26efa220e3340f516487c5502597 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/operatorstack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
npm-publish.yml@79f35cbc02cd26efa220e3340f516487c5502597 -
Trigger Event:
workflow_run
-
Statement type:
File details
Details for the file yieldskill-0.1.35-py3-none-macosx_11_0_arm64.whl.
File metadata
- Download URL: yieldskill-0.1.35-py3-none-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7271c58bbc1f4287a66911630e60becb9689f52172ec0dcd33974d53aedfe34c
|
|
| MD5 |
2138964d926195df83c574939ac87e22
|
|
| BLAKE2b-256 |
96e9f297bcd025466fab1a56fe1e371d684cd83220b2b08c34f03062ce1a2f44
|
Provenance
The following attestation bundles were made for yieldskill-0.1.35-py3-none-macosx_11_0_arm64.whl:
Publisher:
npm-publish.yml on operatorstack/yield
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
yieldskill-0.1.35-py3-none-macosx_11_0_arm64.whl -
Subject digest:
7271c58bbc1f4287a66911630e60becb9689f52172ec0dcd33974d53aedfe34c - Sigstore transparency entry: 2373352939
- Sigstore integration time:
-
Permalink:
operatorstack/yield@79f35cbc02cd26efa220e3340f516487c5502597 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/operatorstack
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
npm-publish.yml@79f35cbc02cd26efa220e3340f516487c5502597 -
Trigger Event:
workflow_run
-
Statement type: