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:
39
.cursor/skills/frontend-structure/SKILL.md
Normal file
39
.cursor/skills/frontend-structure/SKILL.md
Normal file
@@ -0,0 +1,39 @@
|
||||
---
|
||||
name: dyolink-frontend-structure
|
||||
description: Audits or refactors Dyolink frontend folder layout (components vs components/ui, thin pages). Use when moving components, fixing structure violations, or when the user mentions folder rules, page.tsx bloat, or component organization.
|
||||
---
|
||||
|
||||
# Frontend structure audit
|
||||
|
||||
## Target layout
|
||||
|
||||
```
|
||||
components/ui/shared/ → reusable UI (Button, Dialog, …)
|
||||
components/ui/{feature}/ → feature UI + {Feature}Page.tsx
|
||||
components/shared/ → cross-feature non-UI
|
||||
components/{feature}/ → feature non-UI (helpers, config)
|
||||
app/**/page.tsx → thin wrapper importing ui/{feature} page component
|
||||
```
|
||||
|
||||
## Audit steps
|
||||
|
||||
1. List files in `components/` **outside** `ui/` — any `.tsx` with JSX → move to `components/ui/{feature}/`.
|
||||
2. List files in `components/ui/` — any pure `.ts` helper → move to `components/{feature}/` or `components/shared/`.
|
||||
3. List `app/**/page.tsx` — if > ~30 lines of logic/state, extract to `components/ui/{feature}/{Feature}Page.tsx`.
|
||||
4. Update all `@/components/...` imports.
|
||||
5. Run `npx tsc --noEmit` in `frontend/`.
|
||||
|
||||
## Common mistakes
|
||||
|
||||
| Wrong | Right |
|
||||
|-------|-------|
|
||||
| `components/today/TodayDashboard.tsx` | `components/ui/today/TodayDashboard.tsx` |
|
||||
| `components/ui/treatment/treatmentTypeDisplay.ts` | `components/shared/treatmentTypeDisplay.ts` |
|
||||
| Logic in `app/.../staff/page.tsx` | `components/ui/staff/StaffPage.tsx` |
|
||||
|
||||
## Non-UI that stays outside ui/
|
||||
|
||||
- `components/today/widget-registry.ts`, `chart-theme.ts` (config)
|
||||
- `components/staff/workingHours.ts`
|
||||
- `components/appointments/appointmentTime.ts`
|
||||
- `components/i18n/LocaleSync.tsx` (null-render side effect for layout)
|
||||
Reference in New Issue
Block a user