Automates verification of cv-builder changes, covering dev server setup, data cleanup, and automated UI testing via Playwright.
Install
mkdir -p .claude/skills/verify-lenincuadra && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18997" && unzip -o skill.zip -d .claude/skills/verify-lenincuadra && rm skill.zipInstalls to .claude/skills/verify-lenincuadra
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
How to build, run and drive cv-builder to verify a change end-to-end (dev server, Playwright recipe, data hygiene, cleanup).Key capabilities
- →Build and launch the cv-builder dev server
- →Drive the UI using Playwright
- →Maintain data hygiene with mock data
- →Clean up test data after verification
- →Verify feature changes end-to-end
How it works
The skill guides building and launching the cv-builder dev server, driving its UI with Playwright, and managing data hygiene. It outlines flows for wizard, pending, and delivery archive.
Inputs & outputs
When to use verify
- →Verify feature changes in the dev environment
- →Run automated UI tests for cv-builder
- →Cleanup test data after local verification
- →Debug UI interaction issues
About this skill
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 4"). - Generation fires a browser download — grab
page.waitForEvent("download")before clicking Generar. - Confirmar's optional cover letter/preguntas actions swap the wizard's own
body+footer for a takeover (own Cancelar/Guardar) —
getByRole("button", { name: "Atrás" })disappears while one is open; wait on the takeover's own heading (e.g.getByText("Nueva pregunta")) instead of the step counter.
- "Empresa" label is ambiguous (table cells carry aria-labels) — use
Flows worth driving
- Wizard: card "Nueva aplicación" → step 1 empresa → step 2 opcionales (fork
"Registrar sin CV" lives here; canal Email + empty email disables both
exits) → 3 idioma/foco → 4 confirmar (code preview + folder). Confirmar's
end has two optional cards, "Cover letter" and "Preguntas" — clicking their
button silently creates the Borrador row (reusing the code already shown in
the folder preview) then opens the same takeover the row detail drawer
uses; cancelling out of the cover letter form there does not create a
Drive doc or download (no
data/cvs/cleanup needed) as long as you stop before "Generar y entregar". - 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>/.
When not to use it
- →When a dev server for the same directory is already running and you intend to launch a new one
Limitations
- →Next 16 refuses a second dev server for the same directory
- →Local dev uses the user's REAL data
- →The app cannot delete Google Docs created by real generation
How it compares
This skill provides a structured approach to end-to-end verification of cv-builder changes, including dev server management, data hygiene, and Playwright-driven UI testing, unlike manual testing.
Compared to similar skills
verify side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| verify (this skill) | 0 | 15d | Caution | Intermediate |
| playwright-browser-automation | 29 | 7mo | Review | Intermediate |
| documenso-local-dev-loop | 2 | 10d | Review | Beginner |
| customerio-local-dev-loop | 1 | 10d | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
documenso-local-dev-loop
jeremylongshore
Set up local development environment and testing workflow for Documenso. Use when configuring dev environment, setting up test workflows, or establishing rapid iteration patterns with Documenso. Trigger with phrases like "documenso local dev", "documenso development", "test documenso locally", "documenso dev environment".
customerio-local-dev-loop
jeremylongshore
Configure Customer.io local development workflow. Use when setting up local testing, development environment, or offline development for Customer.io integrations. Trigger with phrases like "customer.io local dev", "test customer.io locally", "customer.io development environment", "customer.io sandbox".
firecrawl-local-dev-loop
jeremylongshore
Configure FireCrawl local development with hot reload and testing. Use when setting up a development environment, configuring test workflows, or establishing a fast iteration cycle with FireCrawl. Trigger with phrases like "firecrawl dev setup", "firecrawl local development", "firecrawl dev environment", "develop with firecrawl".
deepgram-local-dev-loop
jeremylongshore
Configure Deepgram local development workflow with testing and iteration. Use when setting up development environment, configuring test fixtures, or establishing rapid iteration patterns for Deepgram integration. Trigger with phrases like "deepgram local dev", "deepgram development setup", "deepgram test environment", "deepgram dev workflow".
maintainx-local-dev-loop
jeremylongshore
Set up a local development loop for MaintainX integration development. Use when configuring dev environment, testing API calls locally, or setting up a sandbox workflow for MaintainX. Trigger with phrases like "maintainx dev setup", "maintainx local", "maintainx development environment", "maintainx testing setup".