Verify cv-builder Changes

VerifiedCaution

Skill for verifying end-to-end changes in the cv-builder web app, including building, data hygiene, and Playwright-driven UI testing.

Sby Skills Guide Bot
TestingIntermediate
7/22/2026
Claude CodeCursor
#e2e-testing#playwright#nextjs#local-dev#data-hygiene

Recommended for

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
When to use it

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.

When not to use it

Skip it on any other project, or when you need a versioned e2e suite that runs reproducibly in CI.

Security analysis

Caution
Quality score84/100

The 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'.

Findings
  • •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
How this analysis is made

Examples

Verify a wizard change
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.
Check the pending delivery flow
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.
Test the delivery archive endpoints
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) and npm run build are 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 (check lsof -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) and data/cvs/. Create test rows with obviously fake company names, then clean up: curl -X DELETE localhost:3000/api/registry/<code> and rm -rf data/cvs/<folder>.
  • .env.local may have GDOCS_* set — a real generation then creates REAL Google Docs in the user's Drive. The app cannot delete them; capture driveFolder from 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.mjs directly from a scratchpad .mjs script (NODE_PATH does not work for ESM).
  • Selector gotchas:
    • "Empresa" label is ambiguous (table cells carry aria-labels) — use #company, #email, etc.
    • IconSelect dropdowns (Canal, Foco…) are DS DropdownMenus: options are getByRole("menuitemcheckbox", { name: ... }), not option.
    • 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.

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 in data/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 files

This 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.md

From 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 installation
openskills 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 sync

Manual 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.

Related skills