spd publish uploads your project’s sources, the server builds them with the same bundler as
spd build, checks the result, and the version goes live. We’ll take a script from a fresh
spd new project to the catalog.
You need a project made with
spd new (see Getting started) and a confirmed email on your
spurdo! account.Step 1: Sign in
spurdoverse.app/cli with an 8-character code such as ABCD-EFGH. Check that
it matches the one in the terminal and press Allow. The page shows the scope you’ll publish
as, for example @yournick.
The key goes to the Windows Credential Manager and doesn’t expire. spd whoami shows who you’re
signed in as, spd logout revokes the key. No browser on that machine? spd login --no-browser
only prints the link.
Step 2: The manifest
For publishing,name is a package id in your scope and version is semver. spd new already
writes both:
The scope is fixed by your first publish and doesn’t change if you change your nick.
license
isn’t read.
Step 3: The changelog
Add a section for the version toCHANGELOG.md:
## [1.0.0] - 2026-10-01 and ## v1.0.0 work too. Or skip the file and pass the notes:
spd publish --notes "Fixed ESP". Buyers read them on the item page, under the branch’s
changelog.
Step 4: Publish
manifest.jsonis valid andnameis in your scope;- TypeScript has no type errors and the project bundles;
package-lock.jsonexists (runnpm installif it doesn’t);- the version is higher than every published one, and a prerelease isn’t going to stable.
spd publish --no-wait uploads and returns without
following the build.
What gets uploaded
manifest.json, package.json, package-lock.json, tsconfig.json or jsconfig.json,
CHANGELOG.md, README.md, LICENSE, src/ and assets/. Never dist/, node_modules/,
data/ or .npmrc. The server installs packages exactly as package-lock.json lists them.
Step 5: Fill in the item
The first publish creates the market item as a draft and prints a link to its editor:- Product:
spd publishdoesn’t set one, so pick the game here once. - The card: name, summary, description, tags and at least one screenshot. See The item card.
- Price & access: free, forever, by term. See Prices, discounts and grants.
Step 6: Put it on the market
Press Send for review at the bottom of the editor.- The stable version is already live (no
ffi, nofilesystem): the item goes to the catalog right away. - The stable version is with a moderator: the item is In review and goes live by itself when the version is approved.
The server build
Everyspd publish is built on the server. The editor’s Builds section shows each build’s
status, its log, the automated checks, dependencies and sizes. It’s the same log your terminal
showed.
What the automated checks look at: Automated checks.
Why builds fail: FAQ.
Permissions and moderation
A version’s permissions are its own frommanifest.json plus those of every library it uses.
- No
ffi, nofilesystem: the version is published as soon as the build passes. No person looks at it. ffiorfilesystem: a moderator reviews the code first, usually within a day.
spd build --fix-permissions adds ffi when the code imports
@native/ffi. What each permission gives: Permissions.
Private and open code
"visibility" decides whether buyers can read your code.
- private
- public
The default for scripts. The server minifies the bundle and encrypts it for each cheat session
on delivery. Buyers run it but can’t read it. Moderators still see your sources.
src/ has to be readable source. Minified, packed or obfuscated files fail the
checks: the server minifies private scripts itself.
Next steps
Updates and branches
New versions, beta and dev, rollbacks, yanks.
spd commands
Every publishing command with examples.
Libraries
Free code for other scripts.
Publishing and moderation
Refusals, checks, what happens after review.