Documentation
One file per question, read straight from the Skelet repo. Start with Concepts - it defines the vocabulary the rest assumes.
- Colophon
- Docs
- 24
- Sections
- 153
- Reading
- about 4 h 00 min
- Source
- docs/ in the Skelet repo
- Read in
- at every build
Working on the code
01Read first6 min
Concepts and vocabulary
The vocabulary: channel, scope, listing, locale, the Signals suites
- Channel
- Scope
- Listing
- Locale and currency
- and 4 more
026 min
Repository layout
What every directory at the root is for, dotfiles included
0311 min
Architecture
Where the code lives, the GraphQL surfaces and the Signals wire contract, the shape every domain package follows
0418 min
Development workflow
Daily commands, the Docker setup, what to regenerate after a schema change, which apps run
059 min
Code conventions
House rules per app - the dashboard's staged-save convention most of all
069 min
The commerce model
Per-domain engineering notes and footguns
0714 min
Commands
Every command, what it does and when to reach for it
0810 min
Plugins
Extending the backend: Go plugins compiled in, or remote providers over HTTP
0928 min
Environment variables
Every environment variable, which file it belongs in, and the tradeoffs behind the optional ones
106 min
Database and migrations
The three migration streams, what the generated baselines are, and how to add to or regenerate one
1115 min
Permissions: enforcement
The permission model - the contract for resolver authors
126 min
Releasing
The branch model, what each version number means, and how a release is cut
Running a store
135 min
Checkout delivery options
Delivery options at checkout - ship to address, store pickup, PO boxes - and how product types limit and price them
142 min
Store availability
Public stores, per-store product stock, and development demo fixtures
156 min
Cart offers
Carts an admin builds and sends as a link - offer prices, custom lines, locks, expiry and the recipient's checkout
168 min
Channels, scope and locale
What's global vs per-channel, the scope ladder, how locale and currency resolve
176 min
Deploying
The two deployment shapes, putting an edge in front, health, backups, logs
1810 min
Permissions
Configuring roles, plus the generated slug reference
196 min
Import & export
Bulk data in and out: the resource registry, the job model, and how to add a resource or a format
2025 min
Settings
Every configurable knob, its scope and default
2119 min
Webhooks
Subscribing to events: async vs sync, signing, retries, the event catalogue
228 min
Building a remote provider
Writing a remote provider: the signed envelope, limits, per-kind schemas
234 min
Reading the store over MCP
Letting an AI agent read the store over MCP: connecting one, the channel it reads, which tools it gets
243 min
Backups
What needs backing up, and the tools to do it with
Every section of the docs, A to Z
A
- Adding a migrationDatabase and migrations
- Adding a new resourcePermissions: enforcement
- Adding a resourceImport & export
- AI assistant keysEnvironment variables
- Answering a sync webhookWebhooks
- Async and syncWebhooks
B
- The BACKUP_* variablesBackups
- Before the first releaseReleasing
- Building and sending oneCart offers
C
- ChannelConcepts and vocabulary
- The CLIImport & export
- ClickHouseBackups
- Codegen flowDevelopment workflow
- Codegen, lint and testsCommands
- CommandsDevelopment workflow
- Common setupsChannels, scope and locale
- Configure a channelCheckout delivery options
- Configure payment plugins in the dashboardPlugins
- Connecting an agentReading the store over MCP
- Contract versioningBuilding a remote provider
- Cross-app contractsDevelopment workflow
- CurrencyChannels, scope and locale
- Cutting a releaseReleasing
D
- Dashboard hygieneCode conventions
- Data modelPermissions: enforcement
- Data patchesDatabase and migrations
- DatabaseCommands
- Database backupsEnvironment variables
- DatastoresEnvironment variables
- Delivery and extension pointsConcepts and vocabulary
- Delivery datesCheckout delivery options
- Demo fixturesStore availability
- DeploymentCommands
- Docker setupDevelopment workflow
- Domain patternArchitecture
E
- Email and eventsCart offers
- Email and SMSEnvironment variables
- The endpoint does not authenticate for youPermissions: enforcement
- Event referenceWebhooks
F
- Feature switchesEnvironment variables
- The filesEnvironment variables
- First runDevelopment workflow
- The five-minute versionBuilding a remote provider
- FormatsImport & export
- The frontend halvesPlugins
G
- The gatesCommands
- Gotchas worth knowingImport & export
- GraphQL surfaceArchitecture
H
- Header-driven scope (dashboard)The commerce model
- How a boot applies themDatabase and migrations
- How a path is builtSettings
- How a run worksImport & export
I
- Image tagsEnvironment variables
- Integration tokens are not adminsPermissions
- Inventory modesPermissions: enforcement
K
- Key domain notesThe commerce model
- The kindsBuilding a remote provider
- Known gaps / deferredPermissions: enforcement
- Known limitationsPlugins
L
- Licensing: your plugin is yoursPlugins
- LifetimeCart offers
- Limits and logsReading the store over MCP
- The linkCart offers
- ListingConcepts and vocabulary
- Local snapshotsBackups
- LocaleChannels, scope and locale
- Locale and currencyConcepts and vocabulary
M
- Managed datastoresDeploying
- The modelPermissions
N
- Names you’ll meetConcepts and vocabulary
- NetworkingEnvironment variables
- The “no channel at all” adminPermissions: enforcement
O
- Object storageEnvironment variables
- Observability and logsEnvironment variables
- One channel per connectionReading the store over MCP
- The ones that hold configurationRepository layout
- The ones that hold the productRepository layout
- The ones that support the workRepository layout
- OperationsDeploying
- Other toolsCommands
P
- Payment setupCheckout delivery options
- Per-channel availabilityThe commerce model
- Permission referencePermissions
- Permission slugsPermissions: enforcement
- PermissionsThe commerce model
- PermissionsImport & export
- Picking a channelChannels, scope and locale
- Plugin / microservice URL rewritesPermissions: enforcement
- PostgresBackups
- Project LayoutArchitecture
- Public settingsSettings
- Putting an edge in frontDeploying
R
- Rate limiting and login lockoutEnvironment variables
- ReferenceSettings
- Refunds and credit memosPermissions: enforcement
- Regenerating a baselineDatabase and migrations
- RegisteringBuilding a remote provider
- Remote providers - HTTP, out of processPlugins
- The requestBuilding a remote provider
- Required to bootEnvironment variables
- Resolver hygieneCode conventions
- Resolver patternsPermissions: enforcement
- The responseBuilding a remote provider
- Restore orderingBackups
- Retries and the queueWebhooks
- Running things inside containersCommands
S
- ScopeConcepts and vocabulary
- ScopeWebhooks
- Scope, and how a value resolvesSettings
- SearchEnvironment variables
- Session and link keysEnvironment variables
- Setting up the common rolesPermissions
- Settings and the scope ladderChannels, scope and locale
- Several methods, carriers and optionsCheckout delivery options
- Shopper delivery stepCheckout delivery options
- Signals, and its four surfacesConcepts and vocabulary
- SigningWebhooks
- StackArchitecture
- Starting a projectCommands
- Starting and stopping the stackCommands
- Storefront hygieneCode conventions
- Storefront linksEnvironment variables
- The storefront packages on npmReleasing
T
- Testing a pluginPlugins
- Text written by shoppers and visitorsReading the store over MCP
- Tier 1 plugins - Go, compiled inPlugins
- Tiers you can split outEnvironment variables
- The two branchesReleasing
- The two shapesDeploying
- TypesSettings
V
- Verifying the signatureBuilding a remote provider
- Version numbers, and which is whichReleasing
W
- What can be delivered how: product typesCheckout delivery options
- What delivery costs: shipping methodsCheckout delivery options
- What happens when you failBuilding a remote provider
- What has to be backed upBackups
- What shipsImport & export
- What the files areDatabase and migrations
- What the first tag switches onReleasing
- What the SDK gives a gateway authorPlugins
- What the SDK gives a plugin that owns a domainPlugins
- What varies per channelChannels, scope and locale
- What’s enforced todayPermissions: enforcement
- What’s NOT scope-aware (intentionally, today)Permissions: enforcement
- Where it livesCart offers
- Where points come fromCheckout delivery options
- Where the verbs liveCommands
- Where to go nextConcepts and vocabulary
- Which apps runDevelopment workflow
- Which onePlugins
- Which tools show upReading the store over MCP
- Why can’t my admin see something?Permissions
- Working with WSL + WindowsDevelopment workflow
