Gmira ship
Use when a web surface is finished and needs to be built, staged, or deployed, and when preparing a release of the work. Covers the production build, bundle and asset checks, metadata and social cards, robots and sitemap, redirects, environment separation, and the staging handoff. Also use when someone asks to publish, push live, or deploy, because this skill holds the rule that deployment needs an explicit human go.From its SKILL.md
npx -y skills add OthmanAdi/gmira --skill gmira-shipAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.3 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Ship
Build locally, stage the deploy, wait for the order.
Load ../gmira/references/DOCTRINE.md.
The rule that overrides everything else here
Never publish, push, or deploy without an explicit go from the person who owns the site.
Not implied by "finish the site". Not implied by "get it ready". Not implied by having credentials that work. Build it, stage it, describe exactly what would happen, and wait.
This is on record because an unauthorized deploy in a predecessor project caused real damage. A
deploy is outward-facing and hard to reverse: caches, indexes, and people's inboxes do not roll back
when you git revert.
INCORRECT "The site is done, so I deployed it to production and here is the URL."
CORRECT "The site is built and passing. Staged and ready. Deploying would publish to
<host> at <domain>, replacing the current live version. Say the word and I will."
Before you build
Every gate in gmira-verify green, on every route, not just the one you worked on last. A route
nobody looked at is a route that ships broken.
Build
pnpm build # must exit 0 with zero type errors and zero lint errors
pnpm start # run the production build locally, not just the dev server
Verify against the production build, not dev. Things that only appear in production:
- Real bundle sizes and code splitting
- Static generation failures on dynamic routes with bad
generateStaticParams - Hydration mismatches that dev overlays hide
NODE_ENV-gated code paths- Image optimization actually running
- Effects that were fast with an unminified React and are not fast now
Re-run gmira-verify against pnpm start before you call it done.
The pre-flight list
| Item | Check |
|---|---|
| Metadata | Real title and description per route, not the framework default. Grep for "Create Next App". |
| Social card | openGraph and twitter images that exist and are the right dimensions. Open the file. |
| Favicon | Present, and not the framework's. |
robots.txt | Present and correct for the environment. A staging site must be Disallow: /. |
| Sitemap | Generated, and every URL in it returns 200. |
| Canonical URLs | Set, and pointing at the production host, not localhost or a preview URL. |
| 404 and error | Real pages that match the site's world, not the framework defaults. |
| Redirects | Old paths mapped if this replaces an existing site. A broken inbound link is lost traffic. |
| Env vars | Nothing secret in NEXT_PUBLIC_*. Grep for keys, tokens, and connection strings in the client bundle. |
| Analytics | Present if asked for, absent if not. Never add tracking nobody requested. |
| Fonts | Self-hosted or next/font, so no layout shift and no third-party request on first paint. |
| Remote assets | No demo host left in a default prop. Registry components ship unsplash and framerusercontent URLs. |
| Console | Zero errors and zero warnings on the production build. |
The things that only bite in production
- Registry components hotlinking demo assets.
collection-surfer,infinite-image-field,ripple-transition,sticky-scroll-cards,scroll-split-card,github-calendar,music-playerall ship remote URLs in default props. Grep the built output forunsplash,framerusercontent, and any third-party API host before you ship a client site that depends on someone else's uptime. - A leaked WebGL context. Fine in dev where you reload constantly, fatal in a session where a user visits eight routes. Test with 20 route changes on the production build.
- Fonts loading from Google at runtime instead of being self-hosted by
next/font.
Staging handoff
State these four things, in this order, and then stop:
- What is built, and which routes.
- Where it is staged, and how to look at it.
- What deploying would do: which host, which domain, what it replaces, and what is not reversible.
- The exact command you would run.
Then wait.
Repository rules for this project
- Author of record is the repo owner only. No
Co-Authored-Bytrailer on any commit, ever. Contributors get credit in CHANGELOG and CONTRIBUTORS.md, not in commit trailers. - No dashes as pause in commit bodies, PR text, release notes, or CHANGELOG prose. Compound hyphens are fine. Sachlich tone.
- Feature work does not bump versions or write changelog entries. Bumping is a release step.
- Commit or push only when asked. If on the default branch, branch first.
Checks before this skill is done
- Every route green in
gmira-verify, against the production build -
pnpm buildexits 0, zero type errors, zero lint errors - Full pre-flight table walked, not skimmed
- Client bundle grepped for secrets and for third-party asset hosts
- 20 route changes on the production build, WebGL context count flat
- Staged, with the four handoff facts stated
- Nothing deployed, because nobody has said go yet
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.