feat: add AGENTS.md for all packages and apps (9 files)
This commit is contained in:
40
packages/cms-core/AGENTS.md
Normal file
40
packages/cms-core/AGENTS.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# @repo/cms-core — Payload CMS Definition
|
||||
|
||||
All Payload configuration lives here: payload.config.ts, collections, globals, hooks, access control. The `apps/cms` app is a thin shell that imports this config.
|
||||
|
||||
## Hook Rules
|
||||
|
||||
| Category | Location | Examples |
|
||||
|---|---|---|
|
||||
| CMS-operational | Stay in hook | Slugify, image resize, default values |
|
||||
| Business logic | Delegate to use case | Notifications, validation, cross-domain updates |
|
||||
|
||||
### DO
|
||||
|
||||
- Keep hooks thin (max 5-10 lines)
|
||||
- Import use cases from `@repo/core/application`
|
||||
- Map Payload hook args to use case input types
|
||||
|
||||
### DON'T
|
||||
|
||||
- Import from `@repo/core/infrastructure`
|
||||
- Put business validation in hooks
|
||||
- Call external services directly from hooks
|
||||
- Duplicate logic that exists in a use case
|
||||
|
||||
## Adding a New Collection
|
||||
|
||||
1. Create folder: `src/collections/{name}/`
|
||||
2. Create: `index.ts` (CollectionConfig), `fields.ts`
|
||||
3. Optionally: `hooks/`, `access/`
|
||||
4. Import in `src/payload.config.ts` collections array
|
||||
5. Export from `src/index.ts`
|
||||
|
||||
## Adding a Hook That Calls a Use Case
|
||||
|
||||
1. Create `src/collections/{name}/hooks/{hook-name}.ts`
|
||||
2. Import use case from `@repo/core` (application layer only)
|
||||
3. Map Payload's hook args to use case input
|
||||
4. Call use case, return data
|
||||
|
||||
**Rule of thumb:** If deleting the hook would break a business requirement, the logic must be in a use case.
|
||||
Reference in New Issue
Block a user