claude-workflows
Advisory, not binding. Last validated 2026-07 against Claude Code with the Claude 5 family. The instruction files (`AGENTS.md`,…
Read before tests, UI work, navigation work, or platform checks.
$ npx -y skills add ZoneMinder/zmNinjaNg --agent claude-codeHow it fires
How this agent gets triggered: by you, by Claude, or both.
Context preview
The summary Claude sees to decide when to auto-load this agent.
Read before tests, UI work, navigation work, or platform checks.
Read before tests, UI work, navigation work, or platform checks.
the highest interface that reaches the behavior, ideally one. Code that touches a store is tested against the real store (seed with `getState()`), mocking only `api/*`, which is the system boundary. A `vi.mock` of the app's own `stores/`, `hooks/`, `services/`, or `components/` is counted by the quality ratchet (`app/.quality-baseline.json`) and may not multiply.
show it fail (`node scripts/proven-red.mjs <base> <head>` does this in a worktree; CI runs it on every PR). A bug fix starts with that red command, shown, before any code is read for a theory.
red by hand: `git stash push <source file>`, `npx bddgen`, `npx playwright test --grep "<scenario name>"`, then `git stash pop`. Skipping it hides a scenario that skips itself or asserts the wrong thing (refs #382).
two hoisted one-liners mock `api/store-gates` and `lib/security/secureStorage` with their `tests/fake-*` stand-ins, `seedProfiles([...])` fills the real profile, settings and auth stores, and `installApiClient(id, fakeApiClient({ '/monitors.json': body }))` scripts the HTTP boundary so the real session registry, hooks and components run. An unscripted request rejects. Reset with `resetProfileFixture()` and `resetFakeStoreGates()` in `afterEach`. The reference is `hooks/__tests__/useMonitors.test.tsx`. Never mock `zustand/react/shallow` as a passthrough: it hides the selector loop the real store exists to catch, and three files were doing it.
against a scratch violation, then the scratch is removed in the same commit; proven-red classifies that directory as gate work and does not demand a red run against the previous commit.
and schema-tolerance and expects each module's tests to go red. CI runs it on every PR (about seven seconds); locally, run it when touching those modules or their tests. It is not in `npm run gates` because it runs each suite once per mutation.
or only by a missing symbol. A test for a new export can only give the second kind against the fork point, so it gets a warning, not a failure; the reviewer then checks the assertions by hand or adds the module to the mutation targets.
ten migrated files carried bare strings where a `ProfileId` was expected and passed at runtime.
timers) and not e2e-tested: `HoverPreview` opens on a 700ms timer and cancels on mouseleave, and a synthetic cursor over a polling list loses that race three runs in three. Do not add a hover scenario.
(`npm run test:e2e` does it first). A stale `.features-gen` reports `Missing step`, which reads like a failing test and is not one.
quality ratchet holds the count of sleeps in `app/tests/steps/` and lists the files when it grows.
`/events/:id`) repaint their content either way, so a DOM property such as a transform is green with or without the fix. Assert the state that survives the repaint, such as a control that only renders while the hook holds the old value (refs #382).
schedule: CI's job skips (no reachable ZoneMinder) and `make_release.sh` asks, reading `app/.e2e-full-pass` (the date `npm run test:e2e:full` writes after a full passing run) to say when the whole suite last passed here.
# Run from app/ npm test npm run test:mutation npx tsc -b npm run build npm run test:e2e -- <feature>.feature npm run
Documentation A ZoneMinder client for web, desktop, iOS, and Android. It shows live camera feeds, a montage of many cameras at once, and events on a timeline, and has an AI chat agent you can ask about your cameras.
Advisory, not binding. Last validated 2026-07 against Claude Code with the Claude 5 family. The instruction files (`AGENTS.md`,…
Read before assistant tools, WebLLM configuration, or ZoneMinder schemas.
Verified project intelligence for writing code: API quirks, platform behavior, and approaches that already failed. Read before…
One name per concept, for code identifiers, briefs, docs, and commit messages. Each entry says what the thing is, not what it…
Model-selection and model-behavior facts for the in-app assistant. Read before changing prompts, providers, tool schemas, or…