* 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]>
18 lines
897 B
Docker
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/
|