title: agentskills-oci description: Read Agent Skills from OCI Distribution registries
Read-only OCI distribution support for progressive, digest-verified Agent
Skills files. Each skill occupies one registry tag. Its OCI image manifest uses
application/vnd.agentskills.skill.v1 as artifactType, and each canonical
file is a raw layer labeled with org.opencontainers.image.title.
Install
pip install agentskills-oci
Requires Python 3.12 or newer. The dependency is the ORAS Python SDK. You do not need the separate ORAS CLI to read skills with this provider.
Read Skills
The repository must already contain skill artifacts in the format described below. Replace the repository and skill ID with yours:
import asyncio
from agentskills_oci import OCISkillProvider
async def main() -> None:
async with OCISkillProvider("ghcr.io/acme/skills") as provider:
print(await provider.discover())
print(await provider.list_files("incident-response"))
print(await provider.read_file("incident-response", "SKILL.md"))
asyncio.run(main())
Discovery and listing fetch tags and manifests, not file layers. read_file downloads only
the requested layer and verifies its size and SHA-256 digest. The provider caches manifests
per instance, so use immutable tags or recreate the provider when updating a source.
Artifact Format
This provider is read-only. Publishing is handled by your registry tooling, which must produce the following format. An arbitrary container image or a default ORAS file push is not sufficient.
| Field | Required value |
|---|---|
| Tag | Skill ID, such as incident-response |
schemaVersion |
2 |
Manifest mediaType |
application/vnd.oci.image.manifest.v1+json |
Manifest artifactType |
application/vnd.agentskills.skill.v1 |
| Manifest title annotation | org.opencontainers.image.title must equal the tag |
Layer mediaType |
application/vnd.agentskills.file.v1 for every file |
| Layer title annotation | Relative POSIX path, such as SKILL.md or references/guide.md |
| Layer descriptor | Exact byte size and sha256: digest of the uploaded file |
Include SKILL.md as a layer and preserve its original YAML frontmatter and body. Duplicate
paths, traversal, missing skill files, unsupported digests, and oversized descriptors are rejected.
Defaults are 512 files, 10 MiB per file, and 16 MiB declared total size per skill. Configure
max_files, max_file_bytes, and max_total_bytes in the constructor.
Authentication and Cleanup
ORAS uses its token auth backend and local Docker-compatible credentials by default. Pass a configured ORAS client for other registry auth, TLS, or signing controls. Layer descriptors are checked against the fetched bytes. Registry digests establish consistency, not publisher identity. Use the core trust policy after capturing a complete skill snapshot when publisher verification is required.
The async context manager closes the HTTP session only when the provider created the ORAS
client. Injected clients remain caller-owned. TLS verification is enabled by default. Keep
insecure=False and tls_verify=True for production registries.
Metadata
Release files for agentskills-oci 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| agentskills_oci-0.8.0.tar.gz | 6.2 kB | With provenance | Details for agentskills_oci-0.8.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| agentskills_oci-0.8.0-py3-none-any.whl | Python 3 | none | any | Details for agentskills_oci-0.8.0-py3-none-any.whl |
Total release size: 13.7 kB
Release files / agentskills_oci-0.8.0.tar.gz
| Download URL | agentskills_oci-0.8.0.tar.gz |
|---|---|
| Size | 6.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f30dd151d3e7c1ef15762a121665adc2139aeb3798b97b783e4b563648edadf
|
|
BLAKE2b-256 checksum How to use checksums |
feb3bba45185285fd3eaeb1270888ac76ddc0a165fd7c19b5038adfd33f1f532
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logRelease files / agentskills_oci-0.8.0-py3-none-any.whl
| Download URL | agentskills_oci-0.8.0-py3-none-any.whl |
|---|---|
| Size | 7.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fbafd3e18f2ba69ce9858393daee21aee34db930bf89e677d5bb12c7e1c1d688
|
|
BLAKE2b-256 checksum How to use checksums |
437988dd908ff00d53a7303b3c5877d0b130cb611eb36b3fce908822240a2be2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logSecurity for agentskills-oci 0.8.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for agentskills_oci-0.8.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.