# Writing and publishing packages

The package format, and how you develop, verify and publish a package.

| Page | What it covers |
|---|---|
| [The package format](/docs/the-package-format.md) | A package is laid out as `shared/` is, so one set of rules covers the app and every package, and the compiler checks a package as it checks `shared/`. |
| [Developing and publishing a package](/docs/developing-and-publishing-a-package.md) | A package lives in its own repository. |
| [The public registry](/docs/the-public-registry.md) | The registry at jadpo.dev holds public Jadpo packages of both kinds. |
| [The verifier](/docs/the-verifier.md) | The verifier is `jadpo package verify`, the same tool authors run, in a container image published with each Jadpo release. |

## Details

The exact rules, for when you hit an edge case.

| Page | What it covers |
|---|---|
| [How the package format is read](/docs/how-the-package-format-is-read.md) | This is the detail behind The package format: exactly how Jadpo reads a package's folder, its names and the lock. |
| [How the surface and the publishing bar work](/docs/how-the-surface-and-the-publishing-bar-work.md) | What a package's surface record holds, how its version is worked out, and what `jadpo package check` and `jadpo package show` do. |
| [How a release's facts, change record and fingerprints are worked out](/docs/how-a-releases-facts-change-record-and-fingerprints-are-worked-out.md) | This is the detail behind What a release shows, The changelog, Search and The verifier: what `jadpo package check` prints above its bar, and what `jadpo package verify --json` writes. |
| [How the registry commands work](/docs/how-the-registry-commands-work.md) | This is the detail behind Installing and updating from the registry, Yanks, takedowns and advisories, Search and Developing for the registry: what each command does and shows. |
| [Package actions and recipes](/docs/package-actions-and-recipes.md) | What a package action may call, how the app calls one, and how `jadpo package recipe` copies a recipe into your project. |
| [Package subscribers and recipes in sample/](/docs/package-subscribers-and-recipes-in-sample.md) | What a package's own subscribers hear and emit, and how `jadpo package check` compiles a package's recipes in its `sample/` app. |
| [Recordings](/docs/recordings.md) | A recording is a provider's answer to one operation with its plain values replaced by placeholders, so its decoding can be checked without calling the provider. |
