improvement: some files replaced, lots of them i shall say. AGENT.MD file created. some rules and skills added for cursor agent.
This commit is contained in:
69
.cursor/skills/add-feature/SKILL.md
Normal file
69
.cursor/skills/add-feature/SKILL.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
name: dyolink-add-feature
|
||||
description: Adds a new Dyolink feature end-to-end (permission, backend module, frontend tab, i18n). Use when the user asks for a new tab, module, screen, or CRUD feature in Dyolink.
|
||||
---
|
||||
|
||||
# Add a Dyolink feature
|
||||
|
||||
Follow this checklist. Adapt steps if the feature is read-only or org-type-specific.
|
||||
|
||||
## Checklist
|
||||
|
||||
```
|
||||
- [ ] 1. Permissions & org type
|
||||
- [ ] 2. Backend module
|
||||
- [ ] 3. Frontend UI + thin page
|
||||
- [ ] 4. i18n (en, fa, nl)
|
||||
- [ ] 5. Verify build / tsc
|
||||
```
|
||||
|
||||
## 1. Permissions & org type
|
||||
|
||||
- Add `TAB_{FEATURE}_READ` and `TAB_{FEATURE}_EDIT` to:
|
||||
- `backend/src/common/permissions.ts` (`ALL_TAB_PERMISSIONS`, `EDIT_TO_READ`)
|
||||
- `backend/prisma/seed.ts` (owner defaults per org type)
|
||||
- `backend/src/modules/auth/auth.service.ts` if listed there
|
||||
- Frontend: `components/staff/staff-permission-form.ts`, `components/shared/permissions.ts` route prefix if needed.
|
||||
- Sidebar: `components/ui/shared/Sidebar.tsx` with `orgTypes` filter.
|
||||
|
||||
## 2. Backend module
|
||||
|
||||
```
|
||||
backend/src/modules/{feature}/
|
||||
{feature}.module.ts
|
||||
{feature}.controller.ts
|
||||
{feature}.service.ts
|
||||
dto/
|
||||
```
|
||||
|
||||
- Apply guards (`JwtAuthGuard`, org-type guard as needed).
|
||||
- Service-level permission checks with `hasEffectivePermission`.
|
||||
- DTOs use `ErrorCode` validation messages.
|
||||
- Register in `app.module.ts`.
|
||||
|
||||
## 3. Frontend
|
||||
|
||||
- API client: `frontend/src/lib/api/{feature}.ts`
|
||||
- Types: `frontend/src/types/{feature}.ts`
|
||||
- UI: `frontend/src/components/ui/{feature}/`
|
||||
- Non-UI helpers: `frontend/src/components/{feature}/`
|
||||
- Page: thin `app/[locale]/(dashboard)/{feature}/page.tsx` → `{Feature}Page.tsx`
|
||||
|
||||
## 4. i18n
|
||||
|
||||
Add keys to `en.json`, `fa.json`, `nl.json` under a feature namespace (e.g. `"patients": { ... }`).
|
||||
|
||||
## 5. Verify
|
||||
|
||||
```bash
|
||||
cd backend && npm run build
|
||||
cd frontend && npx tsc --noEmit
|
||||
```
|
||||
|
||||
## Reference implementations
|
||||
|
||||
| Pattern | Look at |
|
||||
|---------|---------|
|
||||
| Thin page + workspace | `treatment/page.tsx`, `TreatmentWorkspace.tsx` |
|
||||
| CRUD + permissions | `modules/patients/` |
|
||||
| Lab feature | `modules/cases/`, `ui/lab/` |
|
||||
Reference in New Issue
Block a user