<a id="ref-index"></a>

# Reference

These reference guides
provide technical background
that may be required to use **Workshop** and **SDKcraft**.

<a id="ref-cli"></a>

## Command-line interfaces

**Workshop** and **SDKcraft** ship with a small set of command-line tools:

* [CLI](https://ubuntu.com/workshop/docs//reference/cli/index.md)
  * [sdk (CLI)](https://ubuntu.com/workshop/docs//reference/cli/sdk.md)
  * [sdkcraft (CLI)](https://ubuntu.com/workshop/docs//reference/cli/sdkcraft.md)
  * [workshop (CLI)](https://ubuntu.com/workshop/docs//reference/cli/workshop.md)
  * [workshopctl (CLI)](https://ubuntu.com/workshop/docs//reference/cli/workshopctl.md)

<a id="ref-definitions"></a>

## Definition file formats

<!-- @artefact SDK -->
<!-- @artefact workshop (container) -->

Workshops and SDKs are defined in YAML and share a number of basic elements
such as plugs, base images and so on.
However, both definition types have different purposes and structure:

* [Definition files](https://ubuntu.com/workshop/docs//reference/definition-files/index.md)
  * [SDK definition](https://ubuntu.com/workshop/docs//reference/definition-files/sdk-definition.md)
  * [Workshop definition](https://ubuntu.com/workshop/docs//reference/definition-files/workshop-definition.md)

## Structure and behavior

Workshops are largely made of SDKs;
understanding how a workshop runs and the status it carries
starts with how SDKs are structured and operated at run-time:

* [SDK internals](https://ubuntu.com/workshop/docs//reference/sdks.md)
* [Workshop internals](https://ubuntu.com/workshop/docs//reference/workshops.md)
* [Workshop status diagrams](https://ubuntu.com/workshop/docs//reference/workshop-status.md)

<a id="ref-ai"></a>

## AI agents

**Workshop** exposes documentation in LLM-readable form
and ships two agentic skills that wrap its CLIs
for coding agents:

* [Workshop and AI agents](https://ubuntu.com/workshop/docs//reference/ai-agents.md)

## Reference implementations

<!-- @artefact SDK -->

These real-life examples on GitHub,
maintained by the **Workshop** team,
are meant to showcase different SDK patterns and workshop implementations.
Study them to better understand SDK design and workshop creation:

- [https://github.com/canonical/reference-sdks](https://github.com/canonical/reference-sdks)
- [https://github.com/canonical/reference-workshops](https://github.com/canonical/reference-workshops)
