# Packaging — Atom Apps

Machine-readable. HTML twin: https://atom.apps.qwixl.com/docs/packaging

A module is a zip Atom can install into a shell. Package once; publish to Atom Apps.

## What you need

- Module id `publisher/name` (example `acme/notes`) — hyphens OK; never use `--`
- Semver version (example `1.0.0`)
- Zip matching Atom module layout with root `manifest.json`
- Short title + description for the store listing

## Module format

Open-source layout, manifests, sandbox, integrity (fetch raw markdown):

- https://raw.githubusercontent.com/Qwixl/Atom/main/MODULES.md
- https://raw.githubusercontent.com/Qwixl/Atom/main/API-v1.md

Store zip constraints (enforced on upload):

- Zip (`PK…`); max 40 MiB compressed; 120 MiB uncompressed; ≤2000 files
- No absolute paths; no `..`
- `manifest.json` at root (or shallow `*/manifest.json`)
- Manifest `id` / `version` must equal console App id / Release version
- Integrity on store = sha256 of entire zip bytes

## Store listing fields (not in registry index)

- Title
- Description
- Categories
- Instructions (optional)
- Pricing: free, or paid GBP (min £0.50)

## Checklist before upload

1. Zip loads in a local Atom shell.
2. Module id and version are final for this release.
3. Description sells the outcome.
4. Paid: finish Connect onboarding first — https://atom.apps.qwixl.com/docs/paid.md

Next: https://atom.apps.qwixl.com/docs/publish.md
