Shared Cursor Agent Skills for FixMyBerlin / FMC projects.
Repo-specific skills (e.g. tilda-geo processing, topic-docs, static datasets, local isolation) live in that project under .cursor/skills/, not here. Those are on-demand playbooks — everyday coding conventions stay in the project’s AGENTS.md.
| Skill | Description | Command |
|---|---|---|
| new-project-setup | Bootstrap a greenfield FMC repo — git, AGPL license, skills, orchestration, Bun tooling, finish-work commits | bunx skills add FixMyBerlin/fixmyskills --skill new-project-setup -a cursor -y |
| 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 |
| review-dependabot | Review and merge Dependabot PRs — changelog triage, risk tiers, rebase merge | bunx skills add FixMyBerlin/fixmyskills --skill review-dependabot -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, useEffect discipline; FMC TanStack Start — not routing/server | bunx skills add FixMyBerlin/fixmyskills --skill react-dev -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-router-conventions | TanStack Router: validateSearch, pretty search URLs, loaders + Query, typed routes (SPA or Start) | bunx skills add FixMyBerlin/fixmyskills --skill tanstack-router-conventions -a cursor -y |
| tanstack-start-conventions | TanStack Start: app layout, boundaries, server functions, SSR, API route validation (requires router skill) | 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 |
| 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 |
| prisma | Prisma schema naming (models, relations), legacy renames, migrate workflows | bunx skills add FixMyBerlin/fixmyskills --skill prisma -a cursor -y |
| finish-work | Pre-commit checks (bun run check) and FMC commit message format |
bunx skills add FixMyBerlin/fixmyskills --skill finish-work -a cursor -y |
| close-worktree | Land a worktree feature branch onto develop, preserve keepable untracked files, then remove worktree + local branch |
bunx skills add FixMyBerlin/fixmyskills --skill close-worktree -a cursor -y |
| agent-orchestration | Grok 4.6 High orchestrator + Grok 4.6 Low workers — separate Cursor IDE and Claude Code setup (init-cursor.sh / init-claude.sh) |
bunx skills add FixMyBerlin/fixmyskills --skill agent-orchestration -a cursor -y |
| academic-research | Evidence-bound academic research — facts, quotes, sources; OpenAlex, Semantic Scholar, Crossref, BASE, DNB | bunx skills add FixMyBerlin/fixmyskills --skill academic-research -a cursor -y |
| user-changelog | Weekly end-user release notes from Git (German output in docs/user-changelog.md, SHA boundaries) |
bunx skills add FixMyBerlin/fixmyskills --skill user-changelog -a cursor -y |
Skills under deprecated/ are archived and not installable. After an upstream removal, run bunx skills update -p (interactive) to be prompted to uninstall local copies — see deprecated/README.md.
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 TanStack stack skills (shared across FMC TanStack projects):
# SPA (Router only)
bunx skills add FixMyBerlin/fixmyskills \
--skill tanstack-router-conventions \
-a cursor -y
# TanStack Start (Router + Start)
bunx skills add FixMyBerlin/fixmyskills \
--skill tanstack-router-conventions \
--skill tanstack-start-conventions \
--skill tanstack-start-auth \
-a cursor -yTILDA Geo keeps the full project-specific doc in docs/TanStack-Start-App-Structure-And-Conventions.md; use tanstack-router-conventions + tanstack-start-conventions 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.