Skip to content
cccskills
FreePublished on GitHub

site-build

Use when building, testing or previewing site-os — the BUILD_TARGET=stable dist directory, the four verification gates (build, test, env:check, brand:check), the preview servers on :3000 and :3100, and the failure modes that look like bugs but are not.

The English summary is being prepared. Showing the original description.

Run score Not tested

See how to install

Files included (1)

  • SKILL.md3.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Building and verifying

The gates — all four, every time

BUILD_TARGET=stable pnpm build     # production build
pnpm test                          # vitest
pnpm env:check                     # every process.env var has a declared home
pnpm brand:check                   # brand assets, scales, no retired hexes

tsc --noEmit alone is not enough: it cannot see inside a SQL string or a Tailwind class name, and both have produced runtime failures here that compiled cleanly.

BUILD_TARGET=stable writes to .next-stable

next.config.mjs sets distDir from it. Use the same value for build and start, or pnpm start serves a stale or missing directory:

BUILD_TARGET=stable pnpm build
BUILD_TARGET=stable PORT=3100 pnpm start

Rebuilding under a running server breaks it

Rebuilding into .next-stable while a server is serving from it invalidates the chunk hashes its manifest holds, and every page starts throwing. It looks like a code bug; it is not. Restart the server after a rebuild:

pkill -f "next start"; sleep 2
BUILD_TARGET=stable PORT=3100 pnpm start > /tmp/vb-preview.log 2>&1 &

Previewing

PortServes
3000~/projects/site-os — main
3100~/projects/site-os-brand-v4 — the brand-v4 worktree

Both bind to all interfaces, so no tunnel: localhost, Tailscale 100.88.18.114, or LAN 192.168.0.11. Admin routes 307 to /login — that is correct, not a failure.

The Coolify tunnel (scripts/coolify-tunnel.sh, port 8000) is unrelated; it reaches the Coolify dashboard and API, which are loopback-only on the server.

Verify against the rendered page, not the source

A page compiling proves nothing about what it renders. curl it:

curl -s http://localhost:3100/services | grep -oiE "lead generation|demand gen"

For anything visual, say plainly that it was not seen if no browser was opened. Structural checks are not the same as looking at it.

Tailwind: an unknown class fails the build, a wrong one does not

Tailwind v3 cannot apply an alpha modifier (bg-saffron-500/10) to a var() holding a full hex, which is why the saffron and green scales in tailwind.config.ts must stay hex literals. brand:check asserts they still match tokens.css.

To prove a class emits real CSS, grep the built stylesheet — there are several, and the main one is the largest:

grep -o "\.rounded-ui-md{[^}]*}" .next-stable/static/css/*.css

Committing

Branch brand-v4. No push, no merge, no deploy without being asked.

Before committing, check no secret is staged:

git status --porcelain | grep -E '\.env\.local|\.secrets/'   # must be empty
git grep -l '<any token value>'                              # must be 0 files

.env.local and .secrets/ are gitignored (.gitignore:36 and :44).

Related

  • [[site-database]] — migrations and the ownership rule.
  • [[brand]] — what brand:check is enforcing.
  • docs/OPS.md §3 — which store holds which environment value.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

brand

Free

Apply this site's visual identity — colours, type, logo files and fixed brand strings. Use for any page, component, social asset or document that should look like the site.

The English summary is being prepared. Showing the original description.

aryannema/vigyan-site-os2Updated Oct 2, 2026

Use FIRST when someone asks for a new feature or a change to an existing one — before any schema, code or test. Works out what is actually being asked for, whether to build it or integrate a third party (Trustpilot, Stripe, Calendly and the like), where the data lives, who may do what, and what happens when the vendor is down. Produces a decision, then hands to feature-schema.

The English summary is being prepared. Showing the original description.

aryannema/vigyan-site-os2Updated Oct 2, 2026

Use when a new feature needs a table, column or capability — evolving the schema so the new thing joins the permission, audit and RLS contract instead of sitting outside it. Covers the DDL/DML split, the resource/capability wiring, and the self-verifying migration.

The English summary is being prepared. Showing the original description.

aryannema/vigyan-site-os2Updated Oct 2, 2026

Use after building a feature — explore it in a real browser to find what nobody predicted, then turn each finding into a deterministic test that guards it forever. Covers the agentic pass, what to generate vs hand-write, and how to skip honestly when a capability is missing.

The English summary is being prepared. Showing the original description.

aryannema/vigyan-site-os2Updated Oct 2, 2026

Publishing content or deploying site-os — what caches exist, what refreshes them, and how to prove a change is actually live. Use when publishing a post or product, launching a page, deploying, or when someone says a change "isn't showing".

The English summary is being prepared. Showing the original description.

aryannema/vigyan-site-os2Updated Oct 2, 2026

Handling secrets, keys and credentials for site-os — reading vigyan-secrets.md safely, moving keys into app_secrets, rotating, and responding to an exposure. Use whenever a task touches a key, token, password, .env file, app_secrets, encryption, or the secrets document.

The English summary is being prepared. Showing the original description.

aryannema/vigyan-site-os2Updated Oct 2, 2026

See all skills by aryannema

Report a problem with this skill