mit einem Klick
snapmatch
snapmatch enthält 61 gesammelte Skills von matthewharwood, mit Repository-Berufsabdeckung und Skill-Detailseiten auf SkillsMP.
Skills in diesem Repository
Propagate a foundational Snapmatch app, remote-state, Firebase Hosting, or deployment-policy change through the current app, generator template, rendered-template validation, root platform configuration, owning skills/docs, and a final cross-surface release audit.
Own the Snapmatch static release contract: Nitro v3 through TanStack Start, Firebase Hosting from the selected app's `dist/client` at `BASE_PATH=/`, optional GitHub Pages isolation, deployment-failure diagnosis, exact-`origin/main` release verification, and live Hosting smoke checks. Use for Firebase deploys, red deployment checks, `configure-pages` failures, hosting verification, and static artifact or base-path changes.
Jake Archibald's `idb` v8 wrapper for Snapmatch — the validated, namespaced durable local replica and exact command outbox between Firestore and Jotai, plus device-local seed state.
Jotai 2.19+ atom authoring for Snapmatch — the reactive optimistic projection published after durable IDB commits, never Firestore authority; covers commands, reconciliation, sync lifecycle, and local-only atomWithIDB state.
Playwright end-to-end tests pointed at the running snapmatch app — route workflows under `apps/example-game/tests/app/`, real IDB hydration via `page.evaluate`, BroadcastChannel cross-tab verification, IDB-seeded fixtures (no mocks). Triggers on: playwright app test, e2e workflow, app-level test, route workflow test, idb seeded test, idb assertion.
Bun 1.3.13 runtime APIs for tooling and scripts in snapmatch — Bun.serve, Bun.file, Bun.$, bunx — with the rule that browser code is bundled by Vite, never executed directly by Bun. Triggers on: bun runtime, Bun.serve, Bun.file, Bun.$, bun shell, bunx, bun script.
Router skill for Bun 1.3.13 in snapmatch — pins the runtime via `packageManager` and dispatches to a sub-skill (runtime, test, package manager) based on the question. Triggers on: bun, bun 1.3.13, packageManager, which bun, bun overview.
Bun 1.3.13 unit-test runner for snapmatch — pure-logic tests (atom reducers, IDB migration logic, Zod edge cases, parsers) using `bun:test` matchers, mocks, and snapshots. Anything that touches a real DOM or IndexedDB belongs in Playwright. Triggers on: bun test, bun:test, bun matcher, bun mock, bun snapshot, bun coverage, bun watch test, unit test.
Add and operate LiteRT.js 2.5 browser-local inference in snapmatch. Use for `.tflite` model loading, Wasm asset hosting, WebGPU or WebNN accelerator selection, tensor preprocessing and cleanup, model-pipeline testing, or diagnosing LiteRT.js loading and inference failures.
Zero-dependency TypeScript utilities for snapmatch — native ECMAScript first (`structuredClone`, `Object.groupBy`, `Map.groupBy`, `toSorted`, `replaceAll`, `Intl.NumberFormat`), then Bun built-ins (`Bun.deepEquals`, `Bun.escapeHTML`, `Bun.password`, `Bun.file`) for tooling/scripts only, then a one-line typed inline helper, then `just-*` micro-packages, then `memoize-one` (module scope only). Calibrated for Bun 1.3.13 / Node 25 / TypeScript 7 with React 19 + Compiler. Triggers on: structuredClone, deep clone, deep merge, deep equality, group by, partition, pick omit, debounce, throttle, memoize-one, just-extend, micro utilities, lodash alternative.
Node 25 in snapmatch — installed only for tools that refuse to run on Bun, pinned via `.nvmrc` (the single source of truth). The repo does NOT ship `.tool-versions` or a `volta` block; the per-developer version manager is each contributor's choice. Node is a tooling runtime, never an application target. Triggers on: node 25, node version, .nvmrc, .tool-versions, volta, asdf, node tooling, node toolchain.
Use this skill first for ANY PixiJS v8 task; it routes to the right specialized skill for the job. Covers the full PixiJS surface: Application setup, the scene graph (Container, Sprite, Graphics, Text, Mesh, ParticleContainer, DOMContainer, GifSprite), rendering (WebGL/WebGPU/Canvas, render loop, custom shaders, filters, blend modes), assets, events, color, math, ticker, accessibility, performance, environments, migration from v7, and project scaffolding. Triggers on: pixi, pixi.js, pixijs, PixiJS, v8, Application, app.init, Sprite, Container, Graphics, Text, Mesh, ParticleContainer, DOMContainer, GifSprite, Assets, Ticker, renderer, WebGL, WebGPU, scene graph, filter, shader, blend mode, texture, BitmapText, create-pixi, how do I draw, how do I render, how do I animate in pixi.
The future offline-deep-link Playwright contract for snapmatch — currently skipped until the build emits a Workbox service worker; once enabled, install the SW, go offline with `context.setOffline(true)`, deep-link to a route the prerender did NOT emit, and assert the router resolves it from cache. Triggers on: offline test, pwa offline test, deep link offline test, network offline, service worker test, navigation fallback test.
React 19 primitive APIs for snapmatch — `use(promise)`, `useTransition`, `useDeferredValue`, `useOptimistic`, `useActionState`, `useFormStatus`, and the `<Suspense>` boundary. Owns the API surface; idb owns the snapmatch root-hydration usage. Triggers on: use(promise), useTransition, useDeferredValue, useOptimistic, useActionState, useFormStatus, Suspense, react 19 hook.
Router skill for React 19 + React Compiler in snapmatch — pins the React major and dispatches to the Compiler-rules sub-skill or the React-19-primitives sub-skill based on the question. Triggers on: react, react 19, react overview, which react skill.
`@t3-oss/env-core` for Snapmatch — build-time validation for public `VITE_*` configuration, including an enabled/disabled Firebase client contract, with an intentionally empty server slot.
TanStack DevTools for snapmatch — `@tanstack/react-devtools` (the floating dev-only host panel), `@tanstack/react-router-devtools` (router plugin into that host), and `@tanstack/devtools-vite` (the Vite plugin that wires browser-element → editor source-file linking). All three are dev-only AND opt-in via `VITE_ENABLE_TANSTACK_DEVTOOLS=true`; production tree-shakes via `import.meta.env.DEV`. Triggers on: TanStackDevtools, TanStackRouterDevtoolsPanel, devtools-vite, tanstack devtools, click to source, browser to editor, router devtools, dev panel.
TanStack Router's `defaultPreload: "intent"` policy for snapmatch — modulepreload of route JS chunks plus loader execution on `touchstart`/hover, independent from the future Workbox SW plan. Triggers on: defaultPreload, modulepreload, intent preload, viewport preload, link preload, tanstack router preload, route preload.
Future TanStack Router + Workbox NavigationRoute contract for snapmatch — currently unshipped and test-skipped until a service worker is explicitly approved and implemented. Triggers on: spa fallback, navigation fallback, deep link offline, NavigationRoute, router pwa, offline route resolution.
TanStack Router file-based routing for snapmatch — `createFileRoute`, route trees, route params, search params, `Link` / `useNavigate` / `useRouter`, and Zod-validated params via `validateSearch` (defers to zod for the schemas). Triggers on: tanstack router, file-based routing, createRoute, route param, search params, useNavigate, Link, route tree.
Router skill for TanStack Start (`@tanstack/react-start`) in snapmatch — dispatches to the SPA-prerender sub-skill, the routing sub-skill, or the PWA-deep-links sub-skill. SPA mode + full prerender targets Firebase Hosting; no server functions or server loaders. Triggers on: tanstack, tanstack start, tanstack router overview, which tanstack skill.
TanStack Start configured for SPA mode + full prerender on Firebase Hosting — `@tanstack/react-start/plugin/vite`, `prerender.enabled: true`, `ssr: false` per-route opt-out semantics, no server functions, no server loaders. Triggers on: tanstack start spa, tanstack prerender, ssr false, spa mode, prerender route, server functions disabled, server loaders disabled.
Zod 4 schema authoring for snapmatch — every type comes from `z.infer<typeof Schema>`, every boundary input is parsed (never cast), and the dev-only `defineComponent(schema, fn)` wraps `schema.parse` so production tree-shakes the runtime check. Triggers on: parse, refine, safeParse, schema, transform, z.infer, z.object, zod, zod 4, ZodError.
Local-only second-opinion lint pass via `eslint-plugin-sonarjs` — code-smell, cognitive-complexity, and bug-pattern rules layered on top of Biome (which owns formatting + the bulk of lint). NO SonarQube server, NO `sonar-scanner`, NO project token. Runs as `bun run check:sonar` (the workspace task) and as the standalone `.github/workflows/sonarjs.yml` workflow. Triggers on: sonar, sonarjs, eslint-plugin-sonarjs, cognitive-complexity, pseudo-random, no-nested-conditional, no-nested-functions, void-use, second-opinion lint, eslint.sonar.config.mjs.
anime.js v4 named-import API for snapmatch — `createTimeline`, `createAnimatable`, `animate`, `stagger`, `engine`; the `useAnime(ref, params, deps)` hook that fronts every animation; `prefers-reduced-motion` short-circuited at the hook level. Triggers on: anime.js, animejs, anime v4, createTimeline, createAnimatable, createScope, createDraggable, useAnime, prefers-reduced-motion, anime utils.
Biome 2.x as the formatter + linter for `.ts`, `.tsx`, `.js`, and `.json` in snapmatch — `biome ci` is the gate, watch mode runs alongside `bun run dev`, and Biome MUST NOT touch CSS. Triggers on: biome, biome.json, biome ci, biome lint, biome format, biome watch, biome rule.
Bun 1.3.13 package manager for the snapmatch monorepo — `bun install`, `bun add`, the text lockfile `bun.lock`, workspace globs, the `packageManager` pin, and overrides. Triggers on: bun install, bun add, bun remove, bun.lockb, bun workspace, bun overrides, bun lockfile.
Codebase intelligence for JavaScript and TypeScript. Free static layer finds unused code (files, exports, types, dependencies), code duplication, circular dependencies, complexity hotspots, architecture boundary violations, and feature flag patterns. Runtime coverage merges production execution data into the same health report for hot-path review, cold-path deletion confidence, and stale-flag evidence - a single local capture is free, while continuous/cloud runtime monitoring is paid. 90 framework plugins, zero configuration, sub-second static analysis. Use when asked to analyze code health, find unused code, detect duplicates, check circular dependencies, audit complexity, check architecture boundaries, detect feature flags, clean up the codebase, auto-fix issues, merge runtime coverage, or run fallow.
Use when asked to kill stale snapmatch dev, preview, or Storybook server processes and free ports before `bun run check`, Playwright, or the five-phase-pass skill. Recreates the old /kill-servers command as a Codex skill.
Use this skill when creating and configuring a PixiJS v8 Application. Covers async app.init options, renderer/canvas/stage access, ResizePlugin, TickerPlugin, CullerPlugin, custom ApplicationPlugin creation, start/stop lifecycle, and app.destroy cleanup. Triggers on: Application, app.init, app.stage, app.renderer, app.canvas, app.screen, ApplicationOptions, ApplicationPlugin, resizeTo, preference, autoStart, sharedTicker, powerPreference, CullerPlugin, app.start, app.stop, app.destroy, releaseGlobalResources.
Use this skill when scaffolding a new PixiJS v8 project with the create-pixi CLI or adding PixiJS to an existing project. Covers npm/yarn/pnpm/bun create commands, interactive vs non-interactive flows, bundler vs creation template categories, available template presets (bundler-vite, bundler-webpack, bundler-esbuild, bundler-import-map, creation-web, framework-react, extension-default), Node version requirements, `npm install pixi.js` for existing projects, post-scaffold dev flow, and the Vite top-level-await production-build gotcha. Triggers on: create pixi.js, npm create, npm install pixi.js, scaffold, template, bundler-vite, bundler-webpack, creation-web, framework-react, new project, existing project, getting started, quick start.
The shared conventions every Playwright spec in snapmatch obeys — the load-bearing ASK-FIRST rule (Pillar 4), selector strategy (`getByRole` > `getByTestId` > `getByText`), fixture patterns (fresh IDB, seeded IDB, offline, throttled), reduced-motion forced on, and the `playwright.config.ts` shape. Triggers on: playwright fixture, playwright selector, role selector, getByRole, test-id, fresh idb fixture, reduced motion playwright, ask first test.
Router skill for Playwright in snapmatch — pins `@playwright/test` 1.59+, dispatches to the story-tests, app-tests, PWA-offline, or conventions sub-skill, and surfaces the load-bearing ASK-FIRST rule before any Playwright test is written or modified. Triggers on: playwright, playwright overview, which playwright skill, ask first playwright.
Playwright tests pointed at Storybook story URLs in snapmatch — mount `iframe.html?id=<storyId>` for clean in-iframe rendering, exercise the play function, and assert on visible state, ARIA, or real IDB contents. Triggers on: story test, playwright story, storybook url test, story-level test, mount story.
React 19 + React Compiler purity rules for snapmatch — no manual `useMemo`/`useCallback`/`React.memo`, anime.js AND PixiJS are side channels never called in render (use `useAnime` / `usePixiApp` from `useEffect`), Jotai hooks are pure subscribers safe to use directly, and the Compiler is the source of truth for memoization. Triggers on: react compiler, useMemo, useCallback, React.memo, manual memoization, render purity, side channel, compiler audit, useAnime, usePixiApp.
Use when finishing a feature, fixing a bug, before committing React code, or when the user wants to improve code quality or clean up a codebase. Checks for score regression. Covers lint, dead code, accessibility, bundle size, architecture diagnostics.
Use when asked to generate a sound effect via the ElevenLabs MCP and save it to disk. Pairs with the `sound-design` skill: that skill authors the six-slot prompt using `docs/sound-design/CONSOLIDATED.md`, and this skill executes one generation. Recreates the old /sfx command as a Codex skill.
Kill any stale dev/preview/storybook server processes and free their ports. Run before `bun run check` or `/five-phase-pass` to eliminate the documented parallel-worker race against a zombie Vite/Storybook process — the recurring cause of intermittent `ERR_CONNECTION_REFUSED` on Playwright gate runs.
Storybook 10 with the Vite builder for snapmatch — shares the app's Vite, Tailwind, and alias config from a single source (never forked), wires `@storybook/react-vite` in `main.ts`, and registers global decorators in `preview.tsx`. Triggers on: storybook config, storybook vite builder, storybook main.ts, storybook preview.ts, shared vite config, storybook addon.
Storybook `play` functions in snapmatch — interaction tests authored INSIDE the story using `@storybook/test` (`expect`, `userEvent`, `within`), executed inside Storybook's iframe at story render. Distinct from external Playwright story tests. Triggers on: play function, @storybook/test, userEvent, interaction test, story interaction, play step.