Enforce the vertical-slice layout of the Olevin .NET API (`api/`) — `Features/` own their endpoints, data and logic; code used by several features goes to `Shared/`; technical wiring lives in `Infrastructure/`; features never reach into each other except…
Build and modify the Olevin .NET 10 API (`api/`: ASP.NET Core + Wolverine HTTP + EF Core/PostgreSQL + FluentValidation + Logto JWT) so every endpoint, entity, validator and config stays consistent with the API contract, data, auth, and code-style conventions.…
Pick the right NuGet package and use existing ones correctly in the Olevin .NET API (`api/`), which keeps a deliberate set of dependencies (Wolverine, EF Core + Npgsql, FluentValidation, JWT bearer, Serilog, OpenTelemetry, Scalar, DotNetEnv; xUnit v3 for…
Read, write, and keep up-to-date lightweight per-feature specs (markdown files colocated inside each `Olevin.Api/Features/<Feature>/` directory) for the Olevin .NET API (`api/`). Always use this skill before touching any existing feature — check whether a…
Decide where to test, what to test, and how to run tests in the Olevin .NET API (`api/`, xUnit v3 unit tests in `Olevin.Tests`). Use this skill when: writing a new test, a test is failing, deciding whether a calculation, validator, mapping or endpoint needs a…
Handle all GitHub operations for the Olevin monorepo (`Khavoleh/olevin`: `web-app/`, `api/`, `infrastructure/`) — branches, commits, PRs, and issues — using the GitHub CLI (`gh`), following the `[id]/task-name` branch convention, the repo's commit message…
Read, write, and keep up-to-date lightweight per-feature specs (markdown files colocated inside each `src/features/<slice>/` directory) for the Olevin Next.js web app (`web-app/`). Always use this skill before touching any existing feature — check whether a…
Pick the right dependency and use existing ones correctly in the Olevin Next.js web app (`web-app/`), which keeps a small, deliberate set of runtime deps (Next, React, Logto, conform, React Aria, Phosphor icons, Zod, Zustand). Use this skill before running…