slice-conventionslisted
Install: claude install-skill fame-healthscreening/ZD-claude-plugin
# Vertical slices
```
apps/api/src/<Product>.Api/Features/<Feature>/
<Feature>Endpoints.cs MapGroup("/api/v1/<feature>") · .RequireAuthorization("<policy>") · .RequireRateLimiting("<policy>") where heavy
<Feature>Models.cs request/response records; numbers-from-strings where the DB stores numerics as nvarchar
<Feature>Service.cs use-cases over an I<Feature>Data interface
apps/api/src/<Product>.Infrastructure/Procedures/ SqlServer<Feature>Data: proc calls, column names verbatim from the legacy proc
apps/api/src/<Product>.Gateway/ YARP front door; TLS from the Windows cert store; forwarded headers trusted from loopback only
apps/api/tests/<Product>.Tests/ xUnit; SQLite provider + WebApplicationFactory; UseLocalSettings=false so tests can never reach a real server
apps/web/app/(app)/<route>/ page.tsx · _components/ · _lib/ (route-local math + *.test.ts with vitest)
apps/web/lib/ shared helpers: area.ts (the /8 rule, once), terminology, crop-auth, gee/
```
Rules
- One feature = one folder; a proc that returns several result sets stays one data method.
- Scope every read by the signed-in user's vendor/mills; the AI tools re-apply the caller's scope on top of whatever the model asked for.
- Rate-limit policies exist for auth, auth-refresh, admin-heavy, dashboard-refresh and the ORS proxy; new heavy endpoints get a policy, not an exception.
- Uploads answe