Provided npm i and npm run build done:
npm start # shows help
npm start -- init # runs the init command
npm start -- --version # shows versionThe -- tells npm to pass the remaining args through to the script.
In bespoke/cli:
npm run build && npm pack
# Creates bespokeui-cli-1.0.0.tgz
# In your AgnosticUI workspace:
npm install /path/to/bespoke/cli/bespokeui-cli-1.0.0.tgz
# Then run:
npx bespokeui initnpm pack creates a tarball of only what's in "files": ["dist"], and npm install <tarball> installs it locally with the bespokeui bin linked. You can then interact with it exactly as if it were published to npm.
- 180 SVGs across 15 niches (12 each), bundled into
dist/assets/layouts/ - Puppeteer is optional — not in CLI deps, marked
externalin esbuild. Only needed for thecombine-previewsscreenshot step - ora provides terminal spinners; prompts handles interactive framework/directory selection during
bespokeui init
Just putting here notes for how I'd go about setting this up bespoke.agnosticui.com
- agnosticui.github.io = a big GitHub Pages switchboard
- DNS = the phone book that says “when someone asks for this name, send them to that switchboard”
- Each repo = a room behind the switchboard
- The CNAME file = a name tag on the room door saying “I answer when THIS domain name is requested”
GitHub Pages looks at:
“What domain did the browser ask for?” Then: “Which repo claims that domain?”
That’s it. No conflicts. No guessing.
You want two different websites, both served by GitHub Pages:
| URL | Repo | Branch |
|---|---|---|
| https://www.agnosticui.com | AgnosticUI/agnosticui |
gh-pages |
| https://bespoke.agnosticui.com | AgnosticUI/bespoke |
(usually main or gh-pages) |
Both can point to agnosticui.github.io behind the scenes. That’s normal.
https://github.com/AgnosticUI/agnosticui
-
Go to Settings → Pages
-
Confirm:
- Source =
gh-pagesbranch - Folder =
/ (root)
- Source =
In Custom domain, it should say one of these:
www.agnosticui.comORagnosticui.com
Click Save if it’s not already saved.
In the gh-pages branch, you should see a file named:
CNAME
Its contents should be exactly one line:
www.agnosticui.com
(or agnosticui.com if you chose apex)
✅ If this is true, do not touch it. Your main site is already “claiming” that domain.
https://github.com/AgnosticUI/bespoke
This repo will ONLY answer for:
bespoke.agnosticui.com
Decide which branch serves the site:
- If it’s a static build → usually
gh-pages - If it’s simple →
main
(Doesn’t matter as long as you’re consistent.)
-
Go to Settings → Pages
-
Set:
- Source = your chosen branch
- Folder =
/ (root)
In Custom domain, enter:
bespoke.agnosticui.com
Click Save.
GitHub will:
- Create a
CNAMEfile automatically or - Ask you to add one
In the serving branch, confirm there is a file:
CNAME
with exactly:
bespoke.agnosticui.com
agnosticui.comwww.agnosticui.com
Only the bespoke subdomain.
You control agnosticui.com, so this is easy.
Go to your DNS provider (Cloudflare, Namecheap, Route53, etc.).
You need two CNAME records.
Type: CNAME
Name: www
Value: agnosticui.github.io
Type: CNAME
Name: bespoke
Value: agnosticui.github.io
Yes — they BOTH point to the same place. That’s expected. That’s the “switchboard”.
If you want https://agnosticui.com (no www):
- Use ALIAS / ANAME →
agnosticui.github.io - OR GitHub’s A records (not required if www is fine)
Visiting https://www.agnosticui.com
-
DNS → agnosticui.github.io
-
GitHub Pages checks:
- “Which repo has
www.agnosticui.comin its CNAME?”
- “Which repo has
-
Answer: agnosticui repo
-
Site loads ✅
Visiting https://bespoke.agnosticui.com
-
DNS → agnosticui.github.io
-
GitHub Pages checks:
- “Which repo has
bespoke.agnosticui.comin its CNAME?”
- “Which repo has
-
Answer: bespoke repo
-
Site loads ✅
No conflicts. Ever.
✅ Main repo CNAME = www.agnosticui.com
✅ Bespoke repo CNAME = bespoke.agnosticui.com
✅ DNS has:
www → agnosticui.github.iobespoke → agnosticui.github.io✅ Each repo claims only its own domain