verify
Tools for verifying HomeGlow client/server changes using local demo modes and Playwright driving.
Install
mkdir -p .claude/skills/verify-jherforth && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/16685" && unzip -o skill.zip -d .claude/skills/verify-jherforth && rm skill.zipInstalls to .claude/skills/verify-jherforth
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.
Build, launch, and drive HomeGlow locally to verify client/server changes end-to-end.Key capabilities
- →Launch HomeGlow API server in demo mode
- →Launch HomeGlow client dev server
- →Drive widget interactions using Playwright
- →Simulate tab visibility states
- →Track data churn with page.on('request')
How it works
This skill provides commands to launch HomeGlow's API and client in demo mode and uses Playwright for browser automation to interact with and verify widget behavior and system states.
Inputs & outputs
When to use verify
- →Run HomeGlow locally
- →Test widget refresh
- →Simulate screensaver states
- →Verify API churn
About this skill
Verifying HomeGlow changes
Launch (demo mode gives instant sample data)
# API server — demo mode auto-seeds chores + calendar for each new device
cd server && PORT=5001 DEMO_MODE=true node index.js &
# Client dev server (client/ expects the API at localhost:5001 in dev mode)
cd client && npx vite --port 3012 --strictPort &
Gotchas:
- Ports 3001/3005 are often already taken by the user's own dev servers on this machine — pick an unused port, never kill existing node processes.
- Each browser profile is a fresh "device" (
homeglow_device_namein localStorage). Demo seeding only happens for first-run devices: if you interceptGET /api/devices/*/settingsand injectwidgetSettingsinto an empty response, the app thinks it's configured and never seeds.
Drive (Playwright + system Edge, no browser download)
npm i playwright-core in the scratchpad, then
chromium.launch({ channel: 'msedge', headless: true }).
Useful handles:
-
Widgets:
.widget-wrapper; refresh ring:button[aria-label="Refresh widget now"]. -
Shrink widget refresh intervals by rewriting
GET /api/devices/*/settingsresponses (only whenwidgetSettingsalready exists — see gotcha above). -
Simulate tab hide/show:
Object.defineProperty(document,'visibilityState',...)plus dispatchingvisibilitychange. -
Screensaver: seed localStorage
screensaverSettings({enabled,mode:'photos'|'tabs',timeout(minutes, fractions ok),slideshowInterval}) before load; exit by clicking the overlay. -
Track data churn with
page.on('request')filtered tolocalhost:5001. -
Chore cards (
.chore-card,[data-schedule-id]) have a long-press/right-click context menu;locator.click({ button: 'right' })opens it. Long-press via CDPInput.dispatchTouchEvent(context needshasTouch: true), hold ~900ms. PIN-gated flows need a non-demo server (fileDB_PATH) with a PIN set viaPOST /api/admin-pin/set; PinModal accepts keyboard digits + Enter.
Worth driving
- Widget auto-refresh cadence and the countdown ring (in-place, no remount: tag DOM nodes with a marker property and confirm they survive a refresh).
- Hidden page / photos-mode screensaver must stop all widget fetches; on resume an overdue widget fetches exactly once (catch-up).
- Client unit tests:
cd client && npm test(vitest). Server:cd server && npm test.
When not to use it
- →When verifying changes for a system other than HomeGlow
- →When not needing to verify client/server changes end-to-end
Prerequisites
Limitations
- →Specific to HomeGlow client/server verification.
- →Demo seeding only happens for first-run devices.
How it compares
This approach automates the launch and interaction with HomeGlow's specific client/server components for end-to-end verification, unlike manual testing or generic browser automation.
Compared to similar skills
verify side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| verify (this skill) | 0 | 1mo | Review | Intermediate |
| sentry-hello-world | 1 | 1mo | Caution | Beginner |
| langfuse-core-workflow-b | 0 | 1mo | Review | Intermediate |
| chaos-scenario | 0 | 2mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
sentry-hello-world
jeremylongshore
Execute capture your first error with Sentry and verify it appears in the dashboard. Use when testing Sentry integration or verifying error capture works. Trigger with phrases like "test sentry", "sentry hello world", "verify sentry", "first sentry error".
langfuse-core-workflow-b
jeremylongshore
Execute Langfuse secondary workflow: Evaluation and scoring. Use when implementing LLM evaluation, adding user feedback, or setting up automated quality scoring for AI outputs. Trigger with phrases like "langfuse evaluation", "langfuse scoring", "rate llm outputs", "langfuse feedback", "evaluate ai responses".
chaos-scenario
petercort
Use when authoring, running, or reviewing chaos engineering experiments in this monorepo. Covers steady-state hypothesis, fault injection (service kill, latency, network partition, overload), result recording to CSV, and cleanup/restore. Triggers: "add chaos scenario", "new chaos test", "inject faul
bench
OysteinAmundsen
Run @toolbox-web benchmarks as local regression testing during development — either current-vs-previous-run (`bun run bench`) or current-vs-tag (the bundled bench-vs-tag.ts orchestrator). Covers writing `.bench.ts` files as part of issue development, running the suites, locating artifacts, and inter
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.