Files
openapi/Dockerfile.skills
T
4bac9b547c feat(agent-skills): publish the skills catalog as a versioned artifact image (#34)
* feat(agent-skills): publish the skills catalog as a versioned artifact image

Decomplect hanzoai/cloud's build: the /.well-known/agent-skills catalog
(skills.py --no-services -> /catalog) is now a versioned immutable image
(agent-skills) built by openapi's OWN CI, not re-run inside every cloud
release. cloud will FROM registry.hanzo.ai/hanzoai/agent-skills:<tag> AS skills
+ COPY --from=skills /catalog/, so cloud compiles only Go.

- Dockerfile.skills: python gen -> FROM scratch with /catalog (fail-hard on a
  missing master index, same invariant cloud's skills stage enforced).
- hanzo.yml: images: agent-skills (hanzoai/ci builds + auto-mirrors).
- cicd.yml: canonical hanzoai/ci caller.


* ci: trigger CI/CD for the agent-skills artifact


---------

Co-authored-by: hanzo-dev <[email protected]>
2026-07-16 20:24:46 -07:00

18 lines
897 B
Docker

# hanzoai/openapi — the agent-skills artifact.
#
# Regenerates the FULL /.well-known/agent-skills catalog from the OpenAPI SOT
# (skills.py --no-services) ONCE, as a versioned immutable image whose rootfs is
# the catalog at /catalog. hanzoai/cloud then does
# `FROM registry.hanzo.ai/hanzoai/agent-skills:<tag> AS skills` +
# `COPY --from=skills /catalog/` instead of cloning openapi and re-running
# skills.py inside every cloud release — so cloud compiles only Go.
FROM public.ecr.aws/docker/library/python:3.12-alpine AS build
RUN pip install --no-cache-dir pyyaml
WORKDIR /openapi
COPY . .
# Master catalogue only (--no-services): what cloud embeds. FAIL-HARD if the
# master index isn't produced — the image is not built (same as cloud's stage).
RUN python3 skills.py --no-services --out /catalog && test -s /catalog/hanzo/index.json
FROM scratch
COPY --from=build /catalog/ /catalog/