santifer/career-ops · warning
⚠️ ${label} not found at: ${path}
Error message
⚠️ ${label} not found at: ${path} What it means
gemini-eval.mjs's readFile helper found that one of its context inputs — modes/_shared.md, modes/oferta.md, cv.md, modes/_profile.md, or config/profile.yml — does not exist at the expected path, and substituted a '[label not found — skipping]' placeholder into the prompt. The evaluation still runs, but with less grounding: a missing cv.md in particular means scores are computed without your experience, producing generic results.
Source
Thrown at gemini-eval.mjs:166
// ---------------------------------------------------------------------------
const apiKey = process.env.GEMINI_API_KEY;
if (!apiKey) {
console.error(`
❌ GEMINI_API_KEY not found.
1. Get a free key at https://aistudio.google.com/apikey
2. Add it to .env: GEMINI_API_KEY=your_key_here
3. Or export it: export GEMINI_API_KEY=your_key_here
`);
process.exit(1);
}
// ---------------------------------------------------------------------------
// File helpers
// ---------------------------------------------------------------------------
function readFile(path, label) {
if (!existsSync(path)) {
console.warn(`⚠️ ${label} not found at: ${path}`);
return `[${label} not found — skipping]`;
}
return readFileSync(path, 'utf-8').trim();
}
function validateEvaluationShape(text) {
const issues = [];
const requiredBlocks = [
['A', /(?:^|\n)#{1,3}\s*(?:A[).:-]?|Block A\b)/im],
['B', /(?:^|\n)#{1,3}\s*(?:B[).:-]?|Block B\b)/im],
['C', /(?:^|\n)#{1,3}\s*(?:C[).:-]?|Block C\b)/im],
['D', /(?:^|\n)#{1,3}\s*(?:D[).:-]?|Block D\b)/im],
['E', /(?:^|\n)#{1,3}\s*(?:E[).:-]?|Block E\b)/im],
['F', /(?:^|\n)#{1,3}\s*(?:F[).:-]?|Block F\b)/im],
['G', /(?:^|\n)#{1,3}\s*(?:G[).:-]?|Block G\b)/im],
];
for (const [label, pattern] of requiredBlocks) {View on GitHub (pinned to 60398d6549)
Solutions
- Run from the repo root: cd /path/to/career-ops && node gemini-eval.mjs ...
- Create the missing files (complete onboarding: cv.md, config/profile.yml, modes/_profile.md) and re-run for grounded scores.
- If a file is intentionally absent, accept the reduced-context evaluation — but treat a missing cv.md as a stop signal.
Example fix
# before — relative paths break when invoked from elsewhere ~/projects $ node career-ops/gemini-eval.mjs https://jobs.example/1 # ⚠️ cv.md not found at: cv.md # after — run from the repo root so PATHS resolve ~/projects/career-ops $ node gemini-eval.mjs https://jobs.example/1
Defensive patterns
Strategy: validation
Validate before calling
import { existsSync } from 'node:fs';
const CONTEXT_FILES = ['modes/_shared.md', 'modes/oferta.md', 'cv.md', 'modes/_profile.md', 'config/profile.yml'];
const missing = CONTEXT_FILES.filter((p) => !existsSync(p));
if (missing.length) {
console.error(`Missing context files (run from repo root?): ${missing.join(', ')}`);
process.exit(1);
} Try / catch
if (!existsSync(path)) {
console.warn(`${label} not found at: ${path}`);
return `[${label} not found — skipping]`;
} // graceful degradation suits OPTIONAL inputs; make cv.md a hard failure instead Prevention
- Always run eval scripts from the repo root so relative PATHS resolve
- Complete onboarding (cv.md, config/profile.yml) before the first evaluation
- Treat 'cv.md not found' as a stop signal — evaluations without the CV are noise
When it happens
Trigger: Running gemini-eval.mjs from a directory other than the repo root so the relative paths break; a fresh clone where onboarding files (cv.md, config/profile.yml) were never created; a context file renamed or moved during reorganization.
Common situations: Wrong working directory (the most common cause — invoking the script from outside the repo); pre-onboarding runs; reorganized repos.
Related errors
- portals.yml not found
- file not found: ${filePath}
- ⚠️ ${label} not found at: ${path}
- Profile photo not found or unreadable: ${photo} (${err.code
- Template not found for kind=${kind} name=${chosen} (${fileFo
AI-assisted analysis of santifer/career-ops@60398d6549 (2026-08-20).
Data as JSON: /api/errors/82464d5fe323e140.
Report an issue: GitHub.