Documents solution folder structure for AI agents
Adds AGENTS.md as the canonical description of the Application/Tests/Clients solution layout, mirrored into CLAUDE.md, .junie/guidelines.md, and .github/copilot-instructions.md so Claude, Junie, and Copilot all pick it up. Also un-ignores .junie/ so guidelines.md is tracked. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Wi5qHAuq8UbzN4NLUFeKkJ
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
# SlpModularCms — Solution Structure
|
||||||
|
|
||||||
|
> Canonical copy: `AGENTS.md` (also mirrored in `CLAUDE.md` and `.junie/guidelines.md`). Update all four together.
|
||||||
|
|
||||||
|
This solution is organized into three top-level Solution Folders. Any agent working in this repo should respect this layout when adding, moving, or referencing projects.
|
||||||
|
|
||||||
|
- **Application** — Development versions of the applications: the Master and Slave APIs, plus a nested **Modules** solution folder containing the individual CMS modules (e.g. `SlpModularCms.Modules.Master`, `SlpModularCms.Modules.Identity`, `SlpModularCms.Modules.Availability`).
|
||||||
|
- **Tests** — Test projects mirroring the structure of **Application**, with the same nested **Modules** grouping — except the Slave API, which has no test project.
|
||||||
|
- **Clients** — The actual buildable/shippable API projects (e.g. `SlpModularCms.Api`).
|
||||||
|
|
||||||
|
When adding a new project:
|
||||||
|
- A new module goes under `Application/Modules`, with its test project under `Tests/Modules`.
|
||||||
|
- A new deployable API/client goes under `Clients`.
|
||||||
@@ -46,4 +46,3 @@ secrets.json
|
|||||||
|
|
||||||
# Tooling
|
# Tooling
|
||||||
.tools/
|
.tools/
|
||||||
.junie/
|
|
||||||
|
|||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SlpModularCms — Solution Structure
|
||||||
|
|
||||||
|
> Canonical copy: `AGENTS.md` (also mirrored in `CLAUDE.md` and `.github/copilot-instructions.md`). Update all four together.
|
||||||
|
|
||||||
|
This solution is organized into three top-level Solution Folders. Any agent working in this repo should respect this layout when adding, moving, or referencing projects.
|
||||||
|
|
||||||
|
- **Application** — Development versions of the applications: the Master and Slave APIs, plus a nested **Modules** solution folder containing the individual CMS modules (e.g. `SlpModularCms.Modules.Master`, `SlpModularCms.Modules.Identity`, `SlpModularCms.Modules.Availability`).
|
||||||
|
- **Tests** — Test projects mirroring the structure of **Application**, with the same nested **Modules** grouping — except the Slave API, which has no test project.
|
||||||
|
- **Clients** — The actual buildable/shippable API projects (e.g. `SlpModularCms.Api`).
|
||||||
|
|
||||||
|
When adding a new project:
|
||||||
|
- A new module goes under `Application/Modules`, with its test project under `Tests/Modules`.
|
||||||
|
- A new deployable API/client goes under `Clients`.
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
sessionId: session-260607-224229-1f53
|
||||||
|
---
|
||||||
|
|
||||||
|
# Overzicht
|
||||||
|
|
||||||
|
### Doel
|
||||||
|
|
||||||
|
Genereer de user stories en persona's voor SlpModularCms.Api op basis van het goedgekeurde story generation plan.
|
||||||
|
|
||||||
|
### Goedgekeurde beslissingen
|
||||||
|
|
||||||
|
Vraag | Beslissing |
|
||||||
|
---|---|
|
||||||
|
Story organisatie | Feature-gebaseerd (Authenticatie, Gebruikersbeheer, Autorisatie, Setup, Modules, Beschikbaarheidscontrole) |
|
||||||
|
Granulariteit | Standaard — "Als [rol] wil ik [actie] zodat [doel]" + basisacceptatiecriteria |
|
||||||
|
Gebruiker standaard rechten | Alleen lezen + eigen profiel bewerken (behalve e-mail/rol) |
|
||||||
|
Eigenaarschap overdracht | Meerdere eigenaars mogelijk (huidige behoudt rol) |
|
||||||
|
Initieel wachtwoord | Uitnodigingslink per e-mail — gebruiker stelt zelf wachtwoord in |
|
||||||
|
Refresh token | Rotation (eenmalig bruikbaar) |
|
||||||
|
Eerste Eigenaar | Combinatie: seed script (dev) + setup-endpoint (productie) |
|
||||||
|
Module rechten | Modules kunnen eigen rechten definiëren per Gebruiker |
|
||||||
|
|
||||||
|
### Te genereren artifacts
|
||||||
|
|
||||||
|
- `aidlc-docs/inception/user-stories/personas.md` — 3 persona's
|
||||||
|
- `aidlc-docs/inception/user-stories/stories.md` — INVEST-compliant stories met feature-mapping, persona-mapping en acceptatiecriteria
|
||||||
|
|
||||||
|
# Stappen
|
||||||
|
|
||||||
|
### Uitvoeringsplan
|
||||||
|
|
||||||
|
**Stap 1**: Persona's definiëren (Eigenaar, Beheerder, Gebruiker)
|
||||||
|
|
||||||
|
**Stap 2**: User stories genereren per feature-domein:
|
||||||
|
- Authenticatie (login, token refresh, logout, uitnodigingsflow)
|
||||||
|
- Gebruikersbeheer (aanmaken via uitnodiging, bewerken, verwijderen, profielbeheer)
|
||||||
|
- Autorisatie (rolbeheer, hiërarchische bevoegdheden, eigenaarschap overdracht)
|
||||||
|
- Setup (eerste Eigenaar — seed + setup-endpoint)
|
||||||
|
- Modules (laden, uitschakelen, module-specifieke rechten)
|
||||||
|
- Beschikbaarheidscontrole (placeholder/stub)
|
||||||
|
|
||||||
|
**Stap 3**: Acceptatiecriteria toevoegen (INVEST-compliant)
|
||||||
|
|
||||||
|
**Stap 4**: Feature-story mapping (elke story getagd met feature-domein)
|
||||||
|
|
||||||
|
**Stap 5**: Persona-story mapping (elke story gelinkt aan persona('s))
|
||||||
|
|
||||||
|
**Stap 6**: Artifacts opslaan
|
||||||
|
|
||||||
|
# Delivery Steps
|
||||||
|
|
||||||
|
### ✓ Step 1: Stap 1-3: Persona's definiëren en stories genereren met acceptatiecriteria
|
||||||
|
personas.md en stories.md zijn aangemaakt met alle INVEST-compliant user stories en acceptatiecriteria.
|
||||||
|
|
||||||
|
- Maak `aidlc-docs/inception/user-stories/personas.md` aan met 3 persona's: Eigenaar, Beheerder, Gebruiker
|
||||||
|
- Maak `aidlc-docs/inception/user-stories/stories.md` aan met stories per feature-domein:
|
||||||
|
- **Authenticatie**: login, token refresh (rotation), logout, uitnodigingsflow wachtwoord instellen
|
||||||
|
- **Gebruikersbeheer**: gebruiker aanmaken via uitnodiging, bewerken, verwijderen, profielbeheer
|
||||||
|
- **Autorisatie**: rol wijzigen, eigenaarschap overdragen, hiërarchische bevoegdheidsgrenzen
|
||||||
|
- **Setup**: eerste Eigenaar via seed script (dev) en setup-endpoint (productie)
|
||||||
|
- **Modules**: module laden bij startup, module uitschakelen, module-specifieke rechten per Gebruiker
|
||||||
|
- **Beschikbaarheidscontrole**: stub/placeholder interactie
|
||||||
|
- Elke story volgt het formaat: "Als [rol] wil ik [actie] zodat [doel]"
|
||||||
|
- Elke story heeft basisacceptatiecriteria (Given/When/Then of bullet-stijl)
|
||||||
|
- Checkboxes in story-generation-plan.md markeren als [x] na voltooiing
|
||||||
|
|
||||||
|
### ✓ Step 2: Stap 4-6: Feature-story mapping, persona-story mapping en state bijwerken
|
||||||
|
Alle stories zijn getagd met feature-domein en persona('s), en de workflow state is bijgewerkt.
|
||||||
|
|
||||||
|
- Voeg feature-tag toe aan elke story (bijv. `[Feature: Authenticatie]`)
|
||||||
|
- Voeg persona-koppeling toe aan elke story (bijv. `[Personas: Eigenaar, Beheerder]`)
|
||||||
|
- Markeer resterende checkboxes in `story-generation-plan.md` als [x]
|
||||||
|
- Werk `aidlc-docs/aidlc-state.md` bij: User Stories → IN PROGRESS → VOLTOOID
|
||||||
|
- Log voltooiing in `aidlc-docs/audit.md`
|
||||||
|
- Presenteer completion message met review links
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SlpModularCms — Solution Structure
|
||||||
|
|
||||||
|
This is the canonical description of the solution layout. It is mirrored into `CLAUDE.md`, `.junie/guidelines.md`, and `.github/copilot-instructions.md` so every AI coding agent (Claude, Junie, GitHub Copilot, etc.) picks it up. If you update this file, update those too.
|
||||||
|
|
||||||
|
This solution is organized into three top-level Solution Folders. Any agent working in this repo should respect this layout when adding, moving, or referencing projects.
|
||||||
|
|
||||||
|
- **Application** — Development versions of the applications: the Master and Slave APIs, plus a nested **Modules** solution folder containing the individual CMS modules (e.g. `SlpModularCms.Modules.Master`, `SlpModularCms.Modules.Identity`, `SlpModularCms.Modules.Availability`).
|
||||||
|
- **Tests** — Test projects mirroring the structure of **Application**, with the same nested **Modules** grouping — except the Slave API, which has no test project.
|
||||||
|
- **Clients** — The actual buildable/shippable API projects (e.g. `SlpModularCms.Api`).
|
||||||
|
|
||||||
|
When adding a new project:
|
||||||
|
- A new module goes under `Application/Modules`, with its test project under `Tests/Modules`.
|
||||||
|
- A new deployable API/client goes under `Clients`.
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# SlpModularCms — Solution Structure
|
||||||
|
|
||||||
|
> Canonical copy: `AGENTS.md` (also mirrored in `.junie/guidelines.md` and `.github/copilot-instructions.md`). Update all four together.
|
||||||
|
|
||||||
|
This solution is organized into three top-level Solution Folders. Any agent working in this repo should respect this layout when adding, moving, or referencing projects.
|
||||||
|
|
||||||
|
- **Application** — Development versions of the applications: the Master and Slave APIs, plus a nested **Modules** solution folder containing the individual CMS modules (e.g. `SlpModularCms.Modules.Master`, `SlpModularCms.Modules.Identity`, `SlpModularCms.Modules.Availability`).
|
||||||
|
- **Tests** — Test projects mirroring the structure of **Application**, with the same nested **Modules** grouping — except the Slave API, which has no test project.
|
||||||
|
- **Clients** — The actual buildable/shippable API projects (e.g. `SlpModularCms.Api`).
|
||||||
|
|
||||||
|
When adding a new project:
|
||||||
|
- A new module goes under `Application/Modules`, with its test project under `Tests/Modules`.
|
||||||
|
- A new deployable API/client goes under `Clients`.
|
||||||
+3
-1
@@ -28,6 +28,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{30D8
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{77DF6642-7863-4D67-BAEE-217EC2D99894}"
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{77DF6642-7863-4D67-BAEE-217EC2D99894}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Clients", "Clients", "{D72703E6-B021-4360-B1EE-0E99999B5899}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
@@ -165,7 +167,6 @@ Global
|
|||||||
GlobalSection(NestedProjects) = preSolution
|
GlobalSection(NestedProjects) = preSolution
|
||||||
{8A35AF71-50C0-4D5F-83CF-A0FA115B6619} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
{8A35AF71-50C0-4D5F-83CF-A0FA115B6619} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
{A5FD67AC-1458-4D90-90F6-B361DB938048} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
{A5FD67AC-1458-4D90-90F6-B361DB938048} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
{BCBB1ABB-6C22-4F81-BB06-D4FE81B4BED3} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
|
||||||
{71C6F408-CCFD-4607-A5E2-BE83C8F74217} = {2F43D186-C7D5-4AB1-B821-4D595CA2ECB3}
|
{71C6F408-CCFD-4607-A5E2-BE83C8F74217} = {2F43D186-C7D5-4AB1-B821-4D595CA2ECB3}
|
||||||
{30D8F44D-4B6E-4980-8D1F-29D1A64F438C} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
{30D8F44D-4B6E-4980-8D1F-29D1A64F438C} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
{BABECABB-E664-4BC5-9B5F-F645D19F1B12} = {30D8F44D-4B6E-4980-8D1F-29D1A64F438C}
|
{BABECABB-E664-4BC5-9B5F-F645D19F1B12} = {30D8F44D-4B6E-4980-8D1F-29D1A64F438C}
|
||||||
@@ -175,5 +176,6 @@ Global
|
|||||||
{3D0192D6-6893-4295-A508-077D60D15D6E} = {77DF6642-7863-4D67-BAEE-217EC2D99894}
|
{3D0192D6-6893-4295-A508-077D60D15D6E} = {77DF6642-7863-4D67-BAEE-217EC2D99894}
|
||||||
{50951BA1-EC62-49BE-86F5-1CCB76342552} = {77DF6642-7863-4D67-BAEE-217EC2D99894}
|
{50951BA1-EC62-49BE-86F5-1CCB76342552} = {77DF6642-7863-4D67-BAEE-217EC2D99894}
|
||||||
{D9F06019-5B34-4D94-8E74-82F378196BDE} = {77DF6642-7863-4D67-BAEE-217EC2D99894}
|
{D9F06019-5B34-4D94-8E74-82F378196BDE} = {77DF6642-7863-4D67-BAEE-217EC2D99894}
|
||||||
|
{BCBB1ABB-6C22-4F81-BB06-D4FE81B4BED3} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
EndGlobal
|
EndGlobal
|
||||||
|
|||||||
Reference in New Issue
Block a user