prumo
prumo contains 16 collected skills from raphaelfh, with repository-level occupation coverage and site-owned skill detail pages.
Skills in this repository
prumo's visual language — the *what it should look like* layer (Plane/Linear/WorkOS aesthetic). Use when deciding layout structure, density, header height, sidebar behaviour, hover affordances, empty states, loading patterns, or any "how should this screen feel" question for frontend/ pages and components. The sibling ui-styling skill is the *how* layer underneath (Tailwind/shadcn/Radix mechanics) — read this one first when designing, that one when implementing classes.
Use this when writing or modifying anything under `backend/app/` — FastAPI endpoints, SQLAlchemy 2.0 async models or queries, Alembic migrations, Celery tasks in `backend/app/worker/`, Pydantic v2 schemas, Supabase RLS policies in `supabase/migrations/`, or `pytest` tests. Covers prumo's HITL stack (extraction + quality assessment), project-membership auth, structlog observability, and the migration split between Alembic (app schema) and Supabase CLI (auth/storage). Trigger on requests like "add endpoint", "create migration", "write a Celery task", "fix RLS", "new SQLAlchemy model", or anything touching `extraction_*` tables or `/api/v1/runs/...` / `/api/v1/hitl/sessions`.
Runbook for shipping prumo to production — promoting dev to main, Railway deploy mechanics (Wait-for-CI, SKIPPED-SHA recovery), Supabase auth/storage migration deploys, env-var rotation, and rollback. Invoke manually with /deploy-release when deploying, promoting, or recovering a stuck deploy.
Use whenever writing, debugging, or designing tests for prumo — Playwright E2E (with a11y + visual), Vitest unit/component, pytest backend integration, MSW v2 network mocks, or whenever a test is flaky. Pulls in the right tool, the right fixture pattern, and the project rule that integration beats heavy mocking. Trigger on "test", "spec", "flaky", "Playwright", "Vitest", "pytest", "MSW", "axe", "snapshot", "visual regression", "test strategy", "mock the database", "test fixture", "CI test".
Use when writing or modifying the STRUCTURE of anything under `frontend/` — where code lives, data flow, and state. Covers components/{domain} organization, TanStack Query hooks + key factories, `services/*Service.ts` via the typed apiClient, Zustand stores vs React Context, react-hook-form + Zod forms, generated `types/api/schema.d.ts`, ErrorResult boundaries, and the React Compiler constraints. Trigger on "add a page", "add a data hook", "add a mutation", "wire a form", "new store", "fetch data", or anything about how the frontend is organized. NOT for visual language (use `frontend-ux`) or Tailwind/shadcn class mechanics (use `ui-styling`).
Use BEFORE claiming done, before writing a PR body, when receiving review feedback (especially unclear or technically questionable), when requesting review, or after completing a feature/bugfix. Enforces technical rigor over performative agreement, evidence-based completion claims, and a prumo-specific review checklist tuned to recurring incident classes (BOLA, run-state TOCTOU, error swallowing, schema drift, ApiResponse envelope drift, stale TanStack cache). Triggers on phrases "looks good", "should be fine", "I'll fix it", "ready to merge", "tests pass", "done", "complete", "fixed", "ready for review", "let me draft the PR". Be pushy about running it.
prumo's visual feedback loop — render the screen, screenshot it, compare to the Plane/Linear target, list the diffs, fix, re-screenshot, confirm. Use BEFORE claiming any frontend screen or component "done", and whenever the ask is "does this look right", "match Linear/Plane", "tighten this screen", "iterate on the UI", "why does this look off / generic / AI-made", or after any non-trivial layout, density, spacing, or theme change. The `/design-review` command runs this loop on a route. Siblings: `frontend-ux` sets the visual language (what it should look like), `ui-styling` is the Tailwind/shadcn mechanics (how to wire the classes); this skill is the *did it actually end up that way* layer that closes the loop with your eyes, not the diff.
Tailwind + shadcn/ui + Radix mechanics for the prumo frontend (Vite + React 19 + TS strict). Use whenever you are adding or editing a `frontend/components/**/*.tsx` file, installing a new shadcn primitive, writing className strings, building a cva variant, touching `frontend/index.css` / `tailwind.config.ts` / `components.json`, wiring dark mode, fixing a contrast/focus/keyboard a11y bug, or hand-rolling a Radix primitive. Be a little pushy: if you are about to write JSX with classes, read this first — it will stop you from inventing colors, breaking the cn() merge order, or shipping focus-less buttons. For the project's *visual language* (Plane/Linear aesthetic, header height, density, hover affordances) see the sibling `frontend-ux` skill; this skill is the *how* layer underneath.
Dispatcher for prumo's debugging methodology — use the moment a user reports a bug, a failing test, an unexpected behaviour, a "weird" UI state, or anything that does not match the spec. Picks the right sub-skill for the phase you are in.
Four-phase debugging framework for prumo. Use BEFORE forming any hypothesis when a bug, failing test, or unexpected behaviour is reported. Stops the "I bet it's X, let me change X" reflex that produces three new bugs.
SCAN phase of the prumo architectural quality loop — dispatches 5 parallel Explore subagents (concept-drift, layered-arch, security, legacy-spotter, test-gaps) + runs the deterministic fitness scripts in scripts/fitness/. Emits findings.jsonl + telemetry.jsonl. Trigger when the user asks "scan for drift", "find legacy in <scope>", "audit extraction services", "what's wrong in this slice" — or as the SCAN phase of architectural-quality-loop. Standalone-invocable; produces a backlog you can act on manually without continuing into TRIAGE/PLAN/APPLY.
Safely delete legacy code from prumo — proves the symbol is unused, deletes in ONE commit (no two-PR deprecation dance), and adds a fitness rule / regression test that prevents the concept from coming back. Trigger when the architectural-quality-loop APPLY phase routes a `category=legacy` finding here, or when the user explicitly says "evict <symbol>", "remove dead <thing>", "delete the legacy X". Always runs inside a git worktree (via superpowers:using-git-worktrees) — the main tree is never partially mutated.
Run one cycle of the prumo autonomous architectural quality loop on a scoped slice of the repo — detects concept-vocabulary drift, layered-architecture violations, security gaps, legacy code, and missing tests; converges through deterministic gates + LLM judge. Trigger on requests like "run the quality loop", "sweep extraction services for drift", "find legacy in this slice", "audit architectural drift", "autoloop on <path>", "quality sweep". Manual: one cycle per invocation. Autonomous: chainable via `superpowers:loop` skill.
After finding a root cause, validate at every layer the data passes through so the bug becomes structurally impossible. Use when designing or reviewing prumo validation, especially for auth/RLS, BOLA, multi-tenant invariants, and SQLAlchemy ↔ Pydantic drift.
Trace a bug backwards through prumo's call stack — frontend hook → service → API → SQLAlchemy → RLS — until you find the original trigger. Use when the error appears in one place but the bad data clearly came from somewhere upstream.
Before claiming a fix is done, a bug is confirmed, a flake is real, or work is ready to ship — run the verification commands and read the output. Evidence before assertions. Use BEFORE typing "fixed", "done", "passing", "ready", or filing a PR.