> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stardeck.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# The SDKs

> The Stardeck packages installed in every app, what each one owns, and where to read its full API.

Every platform capability is an npm package under the
`@stardeck-customer-apps/*` scope. They are published publicly, so a clone plus
`npm install` needs no registry token.

**Each SDK ships its own complete API reference inside the installed package**, as
a `SKILL.md` file. That file is the reference — it is versioned with the code, so
it cannot drift from the API you actually have installed.

```bash theme={null}
# From apps/web
cat node_modules/@stardeck-customer-apps/payments-sdk/SKILL.md

# If your install is hoisted
find . -path '*/@stardeck-customer-apps/*/SKILL.md' -not -path '*/.git/*'
```

<Tip>
  With [Claude Code connected](/local-claude-code/connect), ask it to load the skill for the
  capability you are building — it reads these files and the platform's design skills directly.
</Tip>

## Installed in every app

| Package            | What it owns                                                                   |
| ------------------ | ------------------------------------------------------------------------------ |
| `project-auth`     | Sign-in, sessions, RBAC, SSO, admin and user dashboards, test personas         |
| `data-store-sdk`   | Request-time database and file access against your organization's Data Stores  |
| `payments-sdk`     | Checkout, subscriptions and billing through the platform's payment providers   |
| `email-sdk`        | Transactional email                                                            |
| `integrations-sdk` | Messaging channels (LINE, Slack), Google Sheets sync, and Platform Identity    |
| `analytics-sdk`    | Pageviews and custom events                                                    |
| `scheduling-sdk`   | Scheduled and recurring jobs                                                   |
| `document-sdk`     | HTML to PDF generation                                                         |
| `edge-sdk`         | On-premise hardware — receipt printers, cash drawers, customer displays        |
| `cross-app`        | Calling API endpoints on sibling apps in the same organization                 |
| `storage-sdk`      | File storage. **Legacy** — prefer a storage-type Data Store for new work       |
| `client-utils`     | Small shared client helpers. No separate skill file                            |
| `testing`          | The hermetic test harness: in-process Postgres and simulated platform services |

## Development-only packages

| Package                                 | What it owns                                                                                                                              |
| --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `@stardeck-customer-apps/eslint-plugin` | The lint rules that enforce platform constraints — Kysely transactions, Module imports, generated-file markers, `className` interpolation |
| `@stardeck-customer-apps/tsconfig`      | Shared TypeScript configuration                                                                                                           |

## Not for app code

`@stardeck-customer-apps/kernel` is the internal primitive layer the other SDKs
build on — HMAC request signing and retry behavior. App code must not import it.
If you are reaching for it, the capability you want belongs to one of the SDKs
above.

## How to choose

```mermaid theme={null}
flowchart TB
    Q{"What do you need?"}
    Q -->|"Store or read data"| A["data-store-sdk"]
    Q -->|"Know who the user is"| B["project-auth"]
    Q -->|"Take money"| C["payments-sdk"]
    Q -->|"Send a message out"| D["email-sdk · integrations-sdk"]
    Q -->|"Run something later"| E["scheduling-sdk"]
    Q -->|"Produce a document"| F["document-sdk"]
    Q -->|"Touch hardware"| G["edge-sdk"]
    Q -->|"Ask another app"| H["cross-app"]
```

What keeps an app upgradeable:

* **Use the SDK rather than the wire.** Every SDK signs its own platform calls.
  Hand-built requests to platform endpoints are the code most likely to break on a
  platform upgrade.
* **Do not rebuild what an SDK owns.** A bespoke auth table, an email queue, or a
  file-upload service is work the upgrade rail cannot maintain for you.

## Related pages

<CardGroup cols={2}>
  <Card title="Constraints" icon="triangle-exclamation" href="/graviton/constraints">
    The limits these SDKs operate inside.
  </Card>

  <Card title="Testing" icon="flask" href="/testing">
    How the `testing` package runs your suite without network access.
  </Card>
</CardGroup>
