Automated summary
Explains how to launch cv-builder, drive its UI with Playwright and verify a change end-to-end while protecting the user's real data.
Strengths
- Gives the exact startup recipe (npm run dev, port 3000) and notes that Next 16 rejects a second dev server, with the lsof command to detect one
- Documents app-specific Playwright selector gotchas: ambiguous labels, DropdownMenu options as menuitemcheckbox, toasts, and wizard step waits
- Includes a data hygiene section: obviously fake test rows, cleanup through the registry API and rm of CV folders
- Flags the risk of real Google Docs created via GDOCS_* and explains how to have the user remove them manually
Limitations
- Heavily tied to the cv-builder repo: paths, API routes and Spanish UI labels do not transfer elsewhere
- Playwright is not a project dependency; you must locate the npx cache copy and import index.mjs from a scratch script
- Provides no automated test suite or reusable assertions, only a guided manual procedure
Use it when a cv-builder change must be validated in a real browser session rather than only through npm test and npm run build.
Skip it on any other project, or when you need a versioned e2e suite that runs reproducibly in CI.
Security analysis
CautionThe instructions direct real bash/network tooling (dev server, curl DELETE, rm -rf, Playwright scripts) but always for legitimate local testing of a specific app, with scoped paths and explicit data-hygiene warnings. There is no obfuscation, no piping remote scripts to a shell, and no exfiltration of secrets or tokens; the only outbound side effect called out (Google Docs creation) is flagged for the user to handle manually. Risk comes from the destructive cleanup commands and real-data/real-Drive side effects, so 'caution' rather than 'safe' or 'risky'.
- •Instructs destructive shell command `rm -rf data/cvs/<folder>` for cleanup — scoped to the project data directory, but unguarded path substitution could delete unintended content if `<folder>` is wrong or empty
- •Instructs `curl -X DELETE localhost:3000/api/registry/<code>` against the local dev API, which mutates/removes the user's real registry data
- •Explicitly acknowledges it operates on the user's REAL private data (`data/registry.json`, `data/cvs/`) and real Google Drive via `GDOCS_*` env vars, with side effects the app cannot undo
- •Loads Playwright by locating a cached copy under `~/.npm/_npx` and importing it via absolute path — an unusual dependency-sourcing pattern, though read-only
Examples
I changed step 2 of the CV wizard so that choosing Canal Email with an empty email disables both exits. Run the dev server, drive the wizard with Playwright, confirm the buttons are disabled, then clean up the test row.Verify end-to-end that a row with a muted FileClock in Seguimiento opens the drawer, and that 'Generar CV' resumes the deferred wizard at step 3 with the reserved code.Create a fake registry entry, generate a CV, then check that GET /api/cvs/<folder>/<file>.docx returns a 200 attachment, an invalid path returns 400 and a missing file 404 — and remind me to delete any Google Drive folder afterwards.name: verify description: How to build, run and drive cv-builder to verify a change end-to-end (dev server, Playwright recipe, data hygiene, cleanup).
Verifying cv-builder changes
Build / launch
npm test(vitest) andnpm run buildare CI checks — the real surface is the web app.- Dev server:
npm run dev(port 3000). Next 16 refuses a second dev server for the same dir — if one is already running (checklsof -nP -iTCP:3000 -sTCP:LISTEN), drive that one: it hot-reloads the working tree, so it already serves your changes.
Data hygiene (important)
- Local dev uses the user's REAL data:
data/registry.json(private applications) anddata/cvs/. Create test rows with obviously fake company names, then clean up:curl -X DELETE localhost:3000/api/registry/<code>andrm -rf data/cvs/<folder>. .env.localmay haveGDOCS_*set — a real generation then creates REAL Google Docs in the user's Drive. The app cannot delete them; capturedriveFolderfrom the row before deleting it and tell the user to remove the folder manually (or unset the env vars first and restart the server).
Driving the UI (Playwright)
- Playwright isn't a project dep. A working copy lives in the npx cache:
find ~/.npm/_npx -maxdepth 3 -name playwright -type d→ import<that-path>/index.mjsdirectly from a scratchpad.mjsscript (NODE_PATH does not work for ESM). - Selector gotchas:
- "Empresa" label is ambiguous (table cells carry aria-labels) — use
#company,#email, etc. IconSelectdropdowns (Canal, Foco…) are DS DropdownMenus: options aregetByRole("menuitemcheckbox", { name: ... }), notoption.- Toasts:
[data-sonner-toast]filtered by text. - Wizard steps: wait on
getByText("Paso N de 5"). - Generation fires a browser download — grab
page.waitForEvent("download")before clicking Generar.
- "Empresa" label is ambiguous (table cells carry aria-labels) — use
Flows worth driving
- Wizard: card "Generar un CV" → step 1 empresa → step 2 opcionales (fork "Guardar sin CV" lives here; canal Email + empty email disables both exits) → 3 idioma/foco → 4 carta → 5 confirmar (code preview) → Generar.
- Pending flow: row shows muted FileClock in Seguimiento; drawer → card Entrega → "Generar CV" opens the deferred wizard at step 3 with the reserved code.
- Delivery archive:
GET /api/cvs/<folder>/<file>.docx(200 attachment), invalid paths → 400, missing → 404; files land indata/cvs/<folder>/.
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/verify-cv-builder-changes-mrwak9yl' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/verify-cv-builder-changes-mrwak9yl/download' --output '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md.part' && mv '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md.part' '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.
Claude Code
test -f '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md' && test -s '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/verify' && cp -R '.skill-downloads/verify-cv-builder-changes-mrwak9yl' '.claude/skills/verify'Cursor
test -f '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md' && test -s '.skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/verify' && cp -R '.skill-downloads/verify-cv-builder-changes-mrwak9yl' '.cursor/skills/verify'OpenSkills
OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.
Official OpenSkills installationopenskills install './.skill-downloads/verify-cv-builder-changes-mrwak9yl'openskills read 'verify-cv-builder-changes-mrwak9yl'Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.
For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.
openskills syncManual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/verify-cv-builder-changes-mrwak9yl/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
ClickHouse Performance Comparison
Testing
Evaluate ClickHouse performance test results, check PR performance changes, compare with history, and assess whether a result is actionable.
Analyze CI Performance Reports
Testing
Analyze CI performance comparison reports for a ClickHouse PR. Cross-references master history to distinguish real regressions from flaky tests.
Santa Method
Testing
Multi-agent adversarial verification with two independent reviewers. Output is checked twice and iteratively fixed until both pass before shipping.