Gvc
Purpose
GitHub + Vercel + Cloudflare project bootstrap. Use when the user gives a project name and wants a private GitHub repository, local clone, hello-world Next.js app, initial commit and push, Vercel project/deployment, Cloudflare DNS custom domain such as project.sgnk.ai, and live health checks. Trigger on requests like "use gvc for xyz", "create/deploy xyz", "make xyz.sgnk.ai live", or any one-name repo-to-Vercel-to-domain bootstrap.
Description
GVC
Overview
Create a production-ready starter app from one project name: GitHub repo, local clone, Next.js hello world, Vercel production deploy, Cloudflare DNS, and final URL verification.
Default Sagnik machine settings:
- GitHub owner:
sagnikmitra - Vercel scope:
sagnik - Domain root:
sgnk.ai - Local root:
/Users/sagnikmitra/Desktop/GitHub - Local dev launcher:
sgnk <project> - Repo visibility: private
- Site visibility: public
- Account token file:
/Users/sagnikmitra/.config/codex-env/tokens.zsh
For other machines, require equivalent flags/env and explain missing setup rather than asking for secrets in chat.
Project Name Rules
Normalize the user-provided name before running anything:
- Lowercase.
- Convert underscores/spaces to hyphens.
- Keep only
a-z,0-9, and-. - Collapse repeated hyphens.
- Reject empty names, leading/trailing hyphens, labels over 63 chars, and names that do not match the final normalized name unless the user clearly permits normalization.
Examples: xyz -> xyz, xyz-A -> xyz-a, my_app -> my-app.
Quick Start
Prefer the bundled runner for deterministic execution:
python3 ~/.codex/skills/gvc/scripts/gvc_bootstrap.py xyz \
--github-owner sagnikmitra \
--vercel-scope sagnik \
--domain-root sgnk.ai \
--base-dir /Users/sagnikmitra/Desktop/GitHub
Use --dry-run first when changing defaults or running on a new machine.
Workflow
- Load Sagnik account tokens from
/Users/sagnikmitra/.config/codex-env/tokens.zshor let the runner import it. Do not useINW_*tokens for GVC; those are for other specific projects. - Verify required tools:
git,gh,node,npm,vercel,curl,dig. - Verify required tokens without printing values:
- GitHub:
GH_TOKENorGITHUB_TOKEN - Vercel:
VERCEL_TOKEN - Cloudflare:
CLOUDFLARE_API_TOKEN
- GitHub:
- Create or reuse
github.com/<owner>/<project>as a private repo. - For a newly-created empty repo, initialize the local repo directly at
<base-dir>/<project>and addorigin; clone only when reusing an existing remote repo. - Scaffold a minimal Next.js App Router starter directly from the runner and write the hello-world screen. Avoid
create-next-app, localnpm install, and local build on the happy path because Vercel production build plus live URL health is the final authority. - Use
--local-buildonly when debugging or changing the template; use--lockfileonly when a local package lock is explicitly needed. - Commit
Hello <project>and pushmain. - Create/link Vercel project
<project>, connect the GitHub repo, set frameworknextjs, disable Vercel protection for public custom-domain access, and deploy production. - Add
<project>.<domain-root>to the Vercel project. - In Cloudflare, create/update DNS-only records from Vercel config. Prefer Vercel-recommended A records when available; they avoid router/local resolver failures seen with Vercel's per-domain CNAME chains. Fall back to CNAME only when Vercel does not provide IPv4 values. Add Vercel TXT verification records if requested.
- Verify the domain in Vercel. The runner caches TXT verification work and polls quickly, so repeated Vercel verification responses do not cause repeated Cloudflare writes or noisy logs.
- Poll HTTP health through normal DNS and Cloudflare public DNS. On Sagnik's machine, if public DNS works but local DNS fails, auto-set Wi-Fi DNS to
1.1.1.1,8.8.8.8, flush cache, and retest browser-style loading. - Redeploy production only if the verified custom domain is not healthy after a short probe. This avoids an unnecessary second Vercel deploy on the normal happy path.
- Confirm the local dev launcher resolves with
sgnk <project> --dry-run. Do not maintain a manual project registry;sgnkdiscovers all repos under/Users/sagnikmitra/Desktop/GitHubat runtime. - Return the GitHub URL, local path, Vercel deployment URL, custom URL, local dev command, health path, checks run, and any residual DNS propagation caveat.
Local Dev Launcher
The global sgnk command is installed at /Users/sagnikmitra/.local/bin/sgnk.
Use it to open any local project under /Users/sagnikmitra/Desktop/GitHub:
sgnk <project>
Behavior:
- Resolves the project dynamically from the GitHub folder every run.
- Searches the repo root and common app folders for
package.jsonwith adevscript. - Runs
npm run devin the selected folder. - Detects the localhost URL from dev-server output and opens it in the browser.
- Supports new cloned/GVC-created repos without editing a registry, as long as the repo has a
devscript.
Useful checks:
sgnk --list
sgnk --dry-run <project>
For GVC-created projects, ensure the scaffold keeps a root package.json with:
{
"scripts": {
"dev": "next dev"
}
}
Failure Rules
- Never print token values.
- Do not overwrite an existing non-empty local directory unless it is already the matching Git repo.
- Do not delete unrelated Cloudflare records. Only update the exact project A/CNAME records and add missing exact TXT verification records.
- Keep the GitHub repo private by default.
- Keep the deployed site public by disabling Vercel deployment protection only for this new project.
- If a token, CLI, team scope, domain zone, or permission is missing, stop with exact missing item and remediation.
- Do not use
create-next-appunless the direct scaffold path fails and the user explicitly wants the official generator. - Do not run local dependency install/build by default. Use Vercel's production build and custom-domain
HTTP 200as the release gate. - Do not add new projects to a static
sgnkregistry. The launcher must stay dynamic so every cloned or newly bootstrapped repo becomes runnable by name.
Resources
- Run
scripts/gvc_bootstrap.pyfor the full bootstrap. - Read
references/operator-guide.mdonly when credentials, permissions, Vercel scopes, Cloudflare DNS, or health checks fail.
Source
Codex
Capabilities
- See original source for capabilities.
Inputs
Inputs depend on the skill's trigger and arguments. See the source SKILL.md.
Outputs
Outputs depend on the skill. Typical: files written, reports generated, agent actions performed.
When To Use
When the user invokes /gvc or describes a task the skill's description matches.
Dependencies
See the source skill's references and scripts folders.
Related Systems
- Claude (if synced from
~/.claude/skills/gvc) - HQ Project — landing page Skills section
- MD Project (md.sgnk.ai) —
Skills/Gvc/ - Obsidian Vault —
Skills/Gvc/
Examples
See workflow.md.
Source: ~/.codex/skills/gvc/SKILL.md Category: General