Hadrian Extension: Skills to mount into the shell-tool
session. Hadrian treats skills as a top-level request field
rather than threading them through the OpenAI shell-tool
environment block, so they're accepted on every responses
request regardless of whether the upstream provider has its own
skills surface.
Mirrors OpenAI's typed shape — each entry is either a reference
to a stored skill or an inline bundle:
[
{"type": "skill_reference", "skill_id": "skill_…", "version": "latest"},
{"type": "inline", "name": "extract-csv", "description": "...",
"source": {"type": "base64", "media_type": "text/markdown", "data": "..."}}
]
For skill_reference, skill_id is a prefixed id (skill_…), a bare
UUID, or the skill's name slug, owned by the caller's org. version is
optional: omit for the skill's default version, "latest" for the
newest, or a positive integer for that exact version (default and latest
can differ).
For inline, the decoded source.data is mounted as an
ephemeral skill bundle: text/markdown is treated as the
SKILL.md content; other media types are rejected today. The
name must be a lowercase slug — it becomes the mount directory.
Each resolved skill's SKILL.md is prepended to instructions
so the model knows the skill is available; all skill files are
materialized under /skills/<name>-<version>/ (stored skills) or
/skills/<name>/ (inline skills) inside the sandbox. The path
mirrors OpenAI's <name>-<version> container layout under
Hadrian's /skills root.