Scripts Reference
npm commands
| Command |
Script |
Purpose |
npm run dev |
scripts/jobs/copy-applications.mjs + next dev |
Local dev server (mirrors career/applications/ into public/ first) |
npm run build |
copy-applications.mjs + cv:validate + ci-exclude-jobs.mjs + next build |
Production build pipeline |
npm run start |
next start |
Serve the production build |
npm run lint |
next lint |
Next.js lint |
npm run cv:validate |
scripts/cv/cv-validate.mjs |
Validate CV data (src/data/cv/) against schema/ |
npm run cv:export |
scripts/cv/cv-export-ats.mjs |
Export flat ATS-readable JSON to exports/cv-json/ |
npm run apps:copy |
scripts/jobs/copy-applications.mjs |
Mirror career/applications/ into public/applications/ (run manually if you skip dev/build) |
npm run scrape-jobs |
scripts/jobs/scrape-jobs.mts |
Standalone crawler run (same crawlers behind /jobs), writes to jobs/found/ |
npm run skills:sync |
scripts/skills-sync.mjs |
Mirror .claude/skills/ into .agents/, .cursor/, .antigravitycli/, .kimi/, .qwen/ |
Not wired to npm (run with node/python3 directly)
| Script |
Purpose |
scripts/cv/cv-lib.mjs |
Shared JSON loader/merger used by cv-validate.mjs and cv-export-ats.mjs, not runnable on its own |
scripts/cv/export-cv-pdf.mjs |
Print a CV route to PDF via headless Chrome (node export-cv-pdf.mjs {route} {out-name}, defaults to gft) |
scripts/cv/export-gft-pdf.mjs |
Same as above, hardcoded to the /gft route only — likely superseded by export-cv-pdf.mjs, kept for now, not confirmed dead |
scripts/cv/verify-pdf-text.py |
ATS text-layer gate for a generated PDF ((cid:N) glyph garbage, dash characters, reading order); required by tailor Step 4 before delivering any PDF |
scripts/jobs/ci-exclude-jobs.mjs |
Removes the /jobs dashboard’s dynamic route handlers before a static GitHub Pages export (CI-only, no-ops outside GITHUB_ACTIONS=true) |
scripts/jobs/_gen_geekhunter_companies.py |
Regenerates vagas-fontes-crawler-geekhunter.md + src/data/jobs/geekhunter-companies.ts from the public GeekHunter sitemap |
Content generators (scripts/content/)
One-off Python scripts that produced the interview Q&A bank now living in career/interview/questions-answers/ (Appium, k6, Playwright, pytest, REST Assured, Selenium, per-language variants) plus audio-summary generation (gen-audio-{en,es,fr}.py). Historical/one-time-use, not part of any regular workflow; re-run only if regenerating that content from scratch.