cellajs/cella/verify
Claude Code and agent skill by cellajs/cella
Trust tier 3
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
Build, launch, and drive the cella frontend to verify UI changes at runtime.
Install
npx vskill@latest install cellajs/cella/verifySKILL.md
Verifying cella frontend changes
Launch
- Dev server:
cd frontend && pnpm dev(plain HTTP). The main checkout serves http://localhost:3000; a linked git worktree runs on ports of its own, which Vite prints (Dev ports). Marketing pages (/about,/features,/sync-engine,/docs) render without the backend; the "Offline · Connection lost" toast without a backend is expected, not a regression. - Never pass
--port, and never start a server on the main checkout's ports from a worktree: the app URLs come from the config, so a server on another port fails with "Failed to fetch". 3020/4020 and the like belong to other apps (projectcampus). - A worktree's Vite proxies
/apito the worktree's own backend, which migrates the database named inbackend/.envon boot: the main checkout's, unless the worktree has its own. Give a branch with migrations its own database first (A throwaway database), and never run a second CDC worker on a shared one: it waits for the slot the running one holds and reports degraded meanwhile. - When you start the stack yourself, capture its stdout:
pnpm dev > <scratch>/dev-stack.log 2>&1(background). pino writes no file, and backend errors are there. - Stack health: the API's
/health?depth=fullshows thecdccomponenthealthy, or thereasonit is not. The worker's owncurl http://localhost:<devPorts.cdcHealth>/health?depth=fulladdsreplication.status(activewhile it reads),setupProblemsandfailure. - Typecheck:
cd frontend && pnpm ts(tsgo). Lint:pnpm exec biome check <file>from repo root.
A throwaway database
Clean seeded data, or a branch with migrations, beside the stack you already run. Variables in the environment win over backend/.env, so nothing in the checkout changes. Offset 40 and port 5440 are free: pnpm a11y:run takes 70 and 5470, and linked worktrees take the hundreds.
- Every command runs with those exports:
pnpm seedwithout them seeds the database you work in. An agent's shell keeps no exports between calls, so put them in a wrapper script that ends inexec "$@"and run each command through it. - The API and Vite serve pages and writes. Nothing here starts the CDC worker or the relay, so pages get no live updates.
- Both Vite servers share
frontend/node_modules/.vite: the second re-bundles the dependencies there, and the first re-bundles once more at its next start. - Afterwards stop the two listeners (
lsof -tiTCP:<port> -sTCP:LISTEN) anddocker rm -fv scratch_db.
Drive (browser)
- Playwright is a
frontenddevDependency, and Node resolves a bareimport 'playwright'from the script file's own folder, so a scratch script elsewhere fails withERR_MODULE_NOT_FOUND. Pipe it in fromfrontend/:cd frontend && node --input-type=module < <script.mjs>. The drivers undercella/skills/load it throughtwo-tab-sync-test/driver-lib.mjs. Chromium cache:~/Library/Caches/ms-playwright. - Signed-in pages: mint a session, with no UI login and no cookie built by hand (the app signs every cookie).
pnpm --filter backend session:mint <email>(backend scripts) prints<cookie name>=<signed value>and a curl line with the API URL; the seeded admin isADMIN_EMAILinbackend/.env, and acts as one from an address inSYSTEM_ADMIN_IP_ALLOWLISTthere: a.envcopied from.env.exampleallows this machine. Set the cookie withcontext.addCookies([{ name, value, url: <appConfig.frontendUrl> }]); the API is same-origin, under<frontendUrl>/api. - When the script is done, sign the session out (
POST <api>/auth/sign-outwith the cookie and a JSON content type), or it stays listed as live in the user's sessions until it expires. In a driver:mintSessionandendSessionintwo-tab-sync-test/driver-lib.mjs, orstartSessionandendSessionina11y/src/session.ts. - A freshly seeded admin opens on the onboarding dialog:
PUT <api>/mewith{ userFlags: { finishedOnboarding: true } }skips it, as the drivers do. - Boot smoke of a checkout or a new app:
node cella/skills/verify/smoke-driver.mjsfrom the repo root startspnpm dev, waits for a healthy stack with an active CDC replication, signs in asADMIN_EMAILthrough the magic link the backend prints, opens/homeand an organization's attachments (seeded rows expected), then stops the stack.START=attaches to a stack that already runs and has no log to read the link from, so it leaves the magic link out;OUT_DIRholds the stack log, screenshots andevidence.json. The nightlycreate-flow.ymlworkflow in create-cella runs it on a new app: keep its interface stable. - Realtime behavior across two tabs (entity sync, collaborative descriptions): the
two-tab-sync-testskill and its driver. - The on-screen keyboard, the visual viewport, editing text on a phone or real touch scrolling: the
android-emulatorskill. Desktop Chromium with a phone viewport shows none of these. - Breakpoints come from
appConfig.theme.screenSizes, not Tailwind's defaults: cella addsxs420 and sets2xlto 1400.useBreakpointBelow('sm')is strict< 640.
Gotchas
use-scroll-visibility.tsignores single-frame scroll jumps > 150px (maxGestureDelta) and has a 500ms initial cooldown, sowindow.scrollBy(0, 1000)will NOT hide floating nav buttons. Simulate gestures: repeatedpage.mouse.wheel(0, ~100)ticks at ~60ms intervals, after waiting ~1s post-load.- Floating nav buttons:
#floating-navcontainer, item ids likemarketing-menu/docs-menu; hidden =opacity-0class on the button. - Auth routes (check-email, magic links, SSO) run
isNoBot(backend/src/middlewares/is-no-bot.ts), which answers 400maybe_botto headless Chromium'sHeadlessChromeuser agent. A script that walks the auth flow setsuserAgenton its context to the same string withoutHeadless. - The dev-mode "Testing credentials" banner, fixed to the bottom of public pages, can overlap bottom-anchored UI in screenshots.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingcella/skills/verify/SKILL.md
Popularity
- 7-day trend score
- 5
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/cellajs/cella/verify)