<!--
Sitemap:
- [What is HUSK](/index)
- [How it works](/how-it-works)
- [Quickstart](/quickstart)
- [Anatomy of a skill](/skills/anatomy)
- [The manifest](/skills/manifest)
- [LLM skills & tools](/skills/llm)
- [The kernel I/O contract](/skills/kernel)
- [Proxy skills](/skills/proxy)
- [Examples](/skills/examples)
- [The HTTP server](/serve/http)
- [Streaming (SSE)](/serve/streaming)
- [One skill, three runtimes](/serve/runtimes)
- [Containers](/serve/docker)
- [CLI](/cli)
- [Library (husk-core)](/library)
- [HTTP API](/reference/http-api)
- [Manifest fields](/reference/manifest-fields)
- [Compatibility](/reference/compatibility)
-->

# Compatibility

HUSK is intentionally compatible with the broader Agent Skills format. The same skill folder can be a documentation skill and a HUSK HTTP service at the same time.

## Agent Skills

A HUSK manifest is a **superset** of the Agent Skills `SKILL.md` used by Claude Code, Codex, and Cursor: `name` + `description` + a Markdown body. A bare skill like that loads as a `mode: llm` skill (the body is the system prompt); add `run:` to make it a script, or `tools:` to give the model tools. HUSK ignores fields it does not recognize, so the same file stays a valid Agent Skill.

## What HUSK does not do

HUSK owns the transport and the execution, not the marketplace. It deliberately does **not**:

* host models - for `mode: llm` it calls your chosen provider over HTTP with **your** API key, bundling no model and no provider SDK,
* handle discovery, identity, or payments (`price`, `token`, `capabilities`),
* manage on-chain state or peer-to-peer file transfer.

:::tip
This split is the design. HUSK is the **husk** - the HTTP shell around a kernel, whether that kernel is a script or an LLM-with-tools. A marketplace or discovery protocol is a different shell around the same kernels. Your skill code does not change when you move between them.
:::

## Unknown fields are harmless

Because unknown frontmatter is preserved but ignored, you can keep `price`, `token`, `capabilities`, and other extra fields in a manifest and serve it with HUSK at the same time. The fields stay available for other tools; HUSK just does not act on them.
