# Using packages

The kinds of package, where they come from, and what a package may do in your app.

| Page | What it covers |
|---|---|
| [Kinds of package](/docs/kinds-of-package.md) | A package is Jadpo code shared between apps. |
| [Where packages live](/docs/where-packages-live.md) | `packages/` holds only packages you installed. |
| [Where packages come from](/docs/where-packages-come-from.md) | `jadpo package add <name>` looks for a package in a fixed order and records which step it used, so an agent never improvises where to look. |
| [The surface](/docs/the-surface.md) | A package's surface is everything it offers an app, in one file you can read. |
| [What package code may do](/docs/what-package-code-may-do.md) | A provider package may act on its own API, but never on your app's data. |
| [What reviewers see](/docs/what-reviewers-see.md) | The approval report (Reviewing a change) lists, for each change. |
| [Compile time](/docs/compile-time.md) | A provider's description doesn't slow your build, however large it is, because the compiler never reads it. |
| [Enum values and failures through a package](/docs/enum-values-and-failures-through-a-package.md) | How your app writes a package's enum values and failures: through the package's name, as its types are. |

## Details

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

| Page | What it covers |
|---|---|
| [How packages are installed and linked](/docs/how-packages-are-installed-and-linked.md) | This is the detail behind Installing safely: what `jadpo package add`, `update`, `remove`, `link` and `unlink` do, and what each refuses. |
| [A package's names, and watching a linked checkout](/docs/package-names-and-linked-checkouts.md) | How a name written through a package is told apart from the app's own, and how `jadpo dev` and `jadpo test --watch` follow a package you have linked to a checkout you are working on. |
| [Two versions side by side, lazy loading and the package cache](/docs/two-versions-side-by-side-lazy-loading-and-the-package-cache.md) | How an app holds two major versions of one package while it moves between them, and how Jadpo avoids compiling and checking package code the app doesn't use. |
| [How the OpenAPI importer reads a document](/docs/how-the-openapi-importer-reads-a-document.md) | What `jadpo package import openapi <file>` reads from a provider's OpenAPI document, what it writes, and what it leaves for you. |
| [Shape and name detection](/docs/shape-and-name-detection.md) | How the importer turns a provider's fields into standard types, by their shape and their names. |
| [The scoped review and unconfirmed operations](/docs/the-scoped-review-and-unconfirmed-operations.md) | This is the detail behind layers 4 and 5 of Mapping imported types to standard types: which imported types you review, how a review is marked, and which calls still need a recording to confirm them. |
