# Launch a Prophecy venue > The whole path to a live venue, for the agent doing the work. Commands to run, in order, and the > five things that actually go wrong. The prose version of this page, with the reasoning, is at > https://docs.prophecyhosting.com/make-a-venue — read that if you want to know WHY. This file is what to DO. ## 0 · Two credentials, and they are different things npm config set //registry.npmjs.org/:_authToken= export PROPHECY_ACCESS_TOKEN= The npm key INSTALLS the packages. The access token PROVES WHO YOU ARE so a venue can be created and deployed under your name. Neither substitutes for the other. IF YOU ARE AN AGENT, SET PROPHECY_ACCESS_TOKEN AND DO NOT RUN `prophecy login`. Login opens a browser and waits on a localhost callback; it cannot complete on a headless box. Every command that needs a sign-in reads PROPHECY_ACCESS_TOKEN instead. YOU DO NOT NEED A CLOUDFLARE ACCOUNT AND YOU DO NOT NEED ANY CREDENTIAL OF OURS. If you are looking for CLOUDFLARE_API_TOKEN or CLOUDFLARE_ACCOUNT_ID, you have gone wrong: it means you are not signed in, and the fix is the access token above, not a Cloudflare key. Do not search the filesystem for one. (Setting those two variables actively makes things worse — it switches `deploy` to the operator path, which uploads directly and never registers the venue in the studio gallery.) ## 1 · Scaffold npm init @prophecy-dev/venue@latest -- \ --name "" --about "" --terms "" SAY `@latest`, DO NOT PIN. With no tag npx silently reuses whatever it has cached — a real run scaffolded a release two versions late, exited 0, and looked identical. `@latest` forces npx to resolve against the registry. A FIXED version is worse than either: this file shipped `@0.2.0` while 0.7.0 was current, so it handed every agent a five-version-stale scaffolder and called that careful. `@^0.7.0` is not the fix either — below 1.0 a caret is bounded by the minor, so it refuses 0.8.0. --terms IS NOT OPTIONAL. Search matches market TITLES, not topics. "formula 1" returns 0 while "Verstappen" returns 1; "book releases" returns 0 while "novel" returns 3. Scope by names that appear INSIDE market titles. READ THE SCOPE CHECK IT PRINTS. It asks the live index what your terms actually match: ON THE BOARD: 0 -> STOP. Change the terms now. The venue would be a themed empty page, and no amount of design fixes that. Do not continue to step 2. ON THE BOARD: 1-3 -> thin. Widen the terms before designing. ## 2 · Install and run it cd npm install npm run dev # http://localhost:3000 You should see real testnet markets BEFORE you change anything. If the board is empty, the scope is wrong — go back to step 1. ## 3 · Design it Read AGENTS.md and .claude/skills/prophecy-venue/ in the new directory. They arrived with the scaffold and carry the rules, the verified component list and the house style. In practice you edit app/page.tsx and app/globals.css, and nothing else. RESTYLE AND RESTRUCTURE FREELY, NEVER REWIRE. The trade path lives in the kit and in the drawer mounted once in app/providers.tsx. A page can look like anything and still not break checkout. The kit ships comments, takes and a community feed. A venue is a place people argue, not only a board — if the subject has a community, put one on the page rather than leaving it to be asked for. ## 4 · Check it npm run validate npm run shot # needs Playwright, resolvable FROM THE CLI (see below) validate is structural. shot is the ONLY check that sees the page, and it is the one you cannot perform for yourself. OPEN THE PNGs. If you are an agent and cannot see images, say so rather than calling the venue done. Fix the cause the guard names rather than working around it. ## 5 · Go live prophecy venue create "" # prints the venue key, ONCE prophecy deploy --key pck_... Issuing that first key IS creating the venue on Connect; there is no separate step. The key is shown once and cannot be read back. It ships inside the venue's bundle and is scoped to read + trade, so treat it as public rather than secret. Live at https://.venues.prophecyhosting.com — THE DIRECTORY NAME BECOMES THE HOSTNAME, not the --name. A venue scaffolded in ./spacex named "SpaceX Investors" serves at spacex.venues... and spacex-investors.venues... is a 404. The hostname is the venue's address forever; choose the directory name once. Deploying again is the same command. That is how you iterate. If your Prophecy sign-in has expired, `deploy` STOPS and says so. It does not fall back to your own Cloudflare account — that would silently change whose infrastructure the venue lands on. Sign in again, or set PROPHECY_ACCESS_TOKEN. You still do not need a Cloudflare token. ## The six that actually go wrong 1. A 404 ON @prophecy-dev/* IS A MISSING KEY, NOT A MISSING PACKAGE. These packages are restricted, so npm answers 404 rather than 401 when unauthenticated. It reads exactly like "this package does not exist". Check the npm key before believing anything about the registry. Verify with: npm whoami 2. WITHOUT AN events PROP FETCHES THE GLOBAL POOL. It will fill your venue with unrelated markets. Always pass the venue's own: const { events, loading } = useVenueMarkets() The guard rejects this, but only after you have written the page. 3. OPAQUE INK COLOURS FAIL THE GUARD. Setting color: #fff (or any opaque literal for text) in globals.css is refused: the shell paints the page and the theme can change, so the venue cannot know that colour is legible. Use the tokens. Backgrounds are yours to choose; translucent values like rgba(0,0,0,.55) are fine. 4. `prophecy --version` DOES NOT EXIST. It prints the usage block and exits 1. There is no version flag; do not treat that as a broken install. 5. PLAYWRIGHT MUST BE RESOLVABLE FROM THE CLI, NOT FROM THE VENUE. `--shot` imports it from wherever the CLI lives, so installing it in the venue does not help a globally-installed CLI. One of: global CLI: npm i -g playwright && npx playwright install chromium via npx: npx --package @prophecy-dev/studio --package playwright prophecy validate --shot workspace: npm i -D playwright at the ROOT that resolves the CLI It is a browser, so it is deliberately not bundled and not depended on. 6. ON WINDOWS, THE SHELL IS POWERSHELL. `Select-Object -First` on a non-array throws a type error, `head`/`tail`/`which` do not exist, and 2>/dev/null is 2>$null. Use the PowerShell equivalents rather than retrying the Unix form. ## More - https://docs.prophecyhosting.com/make-a-venue the same path as prose, with the reasoning - https://docs.prophecyhosting.com/prompt-to-venue what to say to an agent to get a venue built - https://docs.prophecyhosting.com/llms.txt every page on this site, one line each - https://docs.prophecyhosting.com/llms-full.txt every concept page, whole