Shared Cursor Agent Skills for FixMyBerlin / FMC projects.
Tilda-geo–specific skills (processing, topic-docs, static datasets, etc.) live in the tilda-geo repo under .cursor/skills/, not here.
| Skill | Description | Command |
|---|---|---|
| tech-stack | Default FMC stack for geo-heavy React SPAs — tooling, tsconfig, when to use sibling skills | bunx skills add FixMyBerlin/fixmyskills --skill tech-stack -a cursor -y |
| nuqs | URL query state — prefer TanStack validateSearch; nuqs for Next.js / shared libs |
bunx skills add FixMyBerlin/fixmyskills --skill nuqs -a cursor -y |
| playwright-skill | TanStack Start E2E (TILDA patterns), smoke tests, stubbed auth, ad-hoc automation | bunx skills add FixMyBerlin/fixmyskills --skill playwright-skill -a cursor -ythen bun run setup in the skill dir |
| react-dev | React 19 + TypeScript (Compiler, oxlint); FMC TanStack Start — not routing/server | bunx skills add FixMyBerlin/fixmyskills --skill react-dev -a cursor -y |
| react-useeffect | useEffect best practices, naming discipline, and alternatives | bunx skills add FixMyBerlin/fixmyskills --skill react-useeffect -a cursor -y |
| react-map-gl | react-map-gl/maplibre — MapProvider, layers, URL viewport, tilda-geo patterns | bunx skills add FixMyBerlin/fixmyskills --skill react-map-gl -a cursor -y |
| rust-wasm-geo | Rust/WASM geo — Turf vs WASM, crates, wasm-bindgen, Vite for FMC geo-heavy apps | bunx skills add FixMyBerlin/fixmyskills --skill rust-wasm-geo -a cursor -y |
| tanstack-start-migration | Migrate Next.js apps to TanStack Start | bunx skills add FixMyBerlin/fixmyskills --skill tanstack-start-migration -a cursor -y |
| tanstack-start-conventions | TanStack Start/Router: boundaries, Query loaders, SSR, API vs UI validation | bunx skills add FixMyBerlin/fixmyskills --skill tanstack-start-conventions -a cursor -y |
| tanstack-start-auth | Better Auth config + TanStack Start routes, sessions, cookies (FMC/TILDA) | bunx skills add FixMyBerlin/fixmyskills --skill tanstack-start-auth -a cursor -y |
| tanstack-better-upload | Better Upload direct-to-S3 in TanStack Start; optional react-dropzone for multi-file UX | bunx skills add FixMyBerlin/fixmyskills --skill tanstack-better-upload -a cursor -y |
| tanstack-start-app-structure | Portable app/src folder layout (thin routes, Layout/Page, server domains) |
bunx skills add FixMyBerlin/fixmyskills --skill tanstack-start-app-structure -a cursor -y |
| zustand-state-management | Zustand v5 conventions: *-store.ts layout, custom hooks, atomic selectors |
bunx skills add FixMyBerlin/fixmyskills --skill zustand-state-management -a cursor -y |
FMC projects use the Skills CLI (bunx skills) to install Cursor agent skills. Project installs are tracked in skills-lock.json at the repo root — commit that file so everyone (and CI) gets the same skill versions.
| npm | Skills CLI |
|---|---|
package-lock.json |
skills-lock.json |
node_modules/ |
.agents/skills/ (+ agent symlinks/copies) |
npm ci |
bunx skills experimental_install |
If your project already has a skills-lock.json, reinstall every locked skill in one step:
bunx skills experimental_installWhat it does: reads skills-lock.json, fetches each skill from its pinned source (e.g. FixMyBerlin/fixmyskills), and installs them into .agents/skills/ with links for Cursor. It is idempotent — safe to run after every clone, in onboarding scripts, or in CI.
When to use it: fresh clone, new machine, deleted .agents/skills/, or any time you want the exact versions in the lockfile without re-running individual add commands.
List available skills in this repo:
bunx skills add FixMyBerlin/fixmyskills --listInstall one skill for Cursor (project scope; updates skills-lock.json):
bunx skills add FixMyBerlin/fixmyskills --skill zustand-state-management -a cursor -yInstall all skills from this repo:
bunx skills add FixMyBerlin/fixmyskills --all -a cursor -yInstall the three TanStack Start stack skills (shared across FMC TanStack projects):
bunx skills add FixMyBerlin/fixmyskills \
--skill tanstack-start-conventions \
--skill tanstack-start-auth \
--skill tanstack-start-app-structure \
-a cursor -yTILDA Geo keeps the full project-specific app-structure doc in docs/TanStack-Start-App-Structure-And-Conventions.md; use tanstack-start-app-structure for the portable summary.
Local development when this repo is a sibling of your project:
bunx skills add ../skills --skill react-dev -a cursor -yAfter adding skills, commit the updated skills-lock.json.
The CLI command is remove (alias rm) — there is no uninstall subcommand:
bunx skills remove # interactive picker
bunx skills remove react-dev -y # remove one skill, skip prompts
bunx skills remove skill1 skill2 -y # remove severalWhat it does: deletes the skill from .agents/skills/ and unlinks it from agent directories (e.g. Cursor).
Lockfile gap: remove does not update skills-lock.json. The removed skill stays in the lockfile, so bunx skills experimental_install will install it again. Until the CLI fixes this, manually delete the skill entry from skills-lock.json (or remove the whole file if empty) and commit that change alongside the removal.
Pull newer skill content from the source repos and refresh the lockfile:
bunx skills update -p -y # all project skills
bunx skills update react-dev -p -y # one skillCommit the updated skills-lock.json so the team stays in sync.
Note: The Skills CLI installs Cursor project skills to .agents/skills/ by default. After install, run bun run setup inside playwright-skill if you use browser automation. experimental_install is an experimental CLI command (a stable skills ci alias may land later); it is the supported way to restore from skills-lock.json today.
This repo uses Bun (packageManager in package.json). Install tooling and hooks:
bun installFormat markdown and package.json files:
bun run formatAGPL-3.0 — see LICENSE.