"Build BentoML Services into Bentos, author bentofile.yaml or
Scanned 9/8/2026
Install to Claude Code
npx -y skills add VectorSpaceLab/AREX-Skill --skill packaging-and-containerization --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Packaging And Containerization?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/vectorspacelab-packaging-and-containerization)More formats (shields.io, HTML) on the badges page.
---
name: packaging-and-containerization
description: "Build BentoML Services into Bentos, author bentofile.yaml or
equivalent build options, configure runtime images/dependencies, manage local
Bento stores, and containerize safely."
disable-model-invocation: true
metadata:
disco-role: operating
license: Apache 2.0
---
# Packaging and Containerization
Use this sub-skill when the task is about turning a BentoML Service into a Bento artifact or OCI image: `bentoml build`, `bentoml.build(...)`, `bentofile.yaml`, `pyproject.toml [tool.bentoml.build]`, dependency/runtime image settings, file inclusion, local Bento store operations, or `bentoml containerize`.
Do not use this sub-skill for writing the Service/API itself, running clients or servers, BentoCloud deployment, or framework-specific model import/export details. Route those to `service-authoring`, `serving-and-clients`, `cli-and-cloud`, or `model-management`.
## Fast Path
1. Identify the entry Service import path, usually `service:ClassName` for a class decorated with `@bentoml.service` or `module:svc` for an exported service object.
2. Prefer runtime image configuration in Python with `bentoml.images.Image(...)` attached to `@bentoml.service(image=...)` for new SDK Services.
3. Use `bentofile.yaml` or `[tool.bentoml.build]` when the project needs declarative build metadata, file patterns, models, or compatibility with existing workflows.
4. Run safe local validation before building: parse the YAML, check required files, inspect include/exclude patterns, and confirm dependency files exist.
5. Build with `bentoml build`, `bentoml build -f path/to/bentofile.yaml BUILD_CTX`, or `bentoml.build(...)`.
6. Containerize only when Docker or another OCI backend is available: `bentoml containerize BENTO_TAG` or `bentoml build --containerize`.
## Safe Local Checks
- `python scripts/validate_bentofile.py bentofile.yaml --project-dir .` validates field shapes, required paths, and common packaging mistakes without running BentoML, Docker, network access, or dependency resolution.
- `python scripts/create_minimal_bentofile.py --service service:MyService --package numpy --include service.py` prints a starter `bentofile.yaml` to stdout or writes it with `--output bentofile.yaml`.
- `bentoml build --bentofile bentofile.yaml --name NAME --version VERSION .` creates a Bento in the local Bento store and may resolve dependencies; treat it as more expensive than static validation.
- `bentoml containerize BENTO_TAG --platform linux/amd64` requires a container backend and may pull base images or run Docker/BuildKit.
## Core Workflows
- Authoring field-level build files: see `references/bentofile-reference.md`.
- Choosing CLI/API/container commands and build contexts: see `references/workflows.md`.
- Diagnosing build and image failures: see `references/troubleshooting.md`.
## Minimal Examples
A minimal `bentofile.yaml`:
```yaml
service: "service:MyService"
include:
- "service.py"
python:
packages:
- "numpy"
docker:
python_version: "3.11"
```
Equivalent direct build API shape:
```python
import bentoml
bento = bentoml.build(
service="service:MyService",
include=["service.py"],
python={"packages": ["numpy"]},
docker={"python_version": "3.11"},
)
```
A modern runtime image in `service.py`:
```python
import bentoml
image = bentoml.images.Image(python_version="3.11").python_packages("numpy")
@bentoml.service(image=image)
class MyService:
pass
```
## Build Context Rules
- Relative paths in `include`, `exclude`, `requirements_txt`, `environment_yml`, `setup_script`, `dockerfile_template`, wheels, and descriptions using `file:` are resolved relative to the build context.
- If `include` is absent, BentoML includes all files under the build context, then applies `exclude`, `.bentoignore`, and built-in ignores such as `.git/`, virtualenvs, `__pycache__/`, and `.DS_Store`.
- `exclude` always applies after `include`; use it to remove secrets, tests, training data, notebooks, and large artifacts.
- For `src/` layout projects, `pyproject.toml` auto-detection can mark `python.is_src_layout`, and explicit `python: {is_src_layout: true}` strips the leading `src/` when packaging code.
## Side-Effect Boundaries
- Static YAML checks and file existence checks are safe.
- `bentoml build` writes to the local Bento store and can run package locking; it may access package indexes or local model stores.
- `bentoml build --containerize`, `bentoml containerize`, and `bentoml.container.build` require an OCI builder and may pull or build images.
- `bentoml push`, `bentoml pull`, and `bentoml deploy` are cloud/network operations and belong in cloud/deployment workflows.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!