From IBL ABP
Use when an ABP project is or should become modular: deciding entity/module ownership, proposing Shared or bounded-context modules, moving backend/React/localization/permissions between modules, or diagnosing missing menu/styles/permissions after modularization.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ibl-abp:abp-module-architectureThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this skill before adding, moving, or splitting ABP features in a modular
Use this skill before adding, moving, or splitting ABP features in a modular solution. The goal is to keep bounded contexts coherent across backend, MongoDB, permissions, localization, tests, and React UI.
This guidance and scripts/analyze_module_ownership.py work for both ABP
templates and auto-detect which one is in play: nolayers (single project /
Simple Monolith / IBL360), where a feature's resources sit together under
Entities/, Services/, Permissions/, Data/; and layered (DDD), where
the same bounded context fans out across separate layer projects (*.Domain,
*.Domain.Shared, *.Application.Contracts, *.Application, *.MongoDB). The
placement rules are the same either way; only where the files land differs.
Before writing files, answer one question:
Which module owns this concept, and what other modules are allowed to know about it?
If the answer is unclear, stop and classify the entity using
references/entity-ownership.md. Do not place everything in the host just
because it is technically easy.
scripts/analyze_module_ownership.py from the solution root when
moving an existing project.Crm, Hr,
Finance, etc.).Shared only when two or more modules
genuinely reuse them.*.Domain, *.Domain.Shared,
*.Application.Contracts, *.Application, *.MongoDB) moves as one unit.references/module-migration-checklist.md before editing.http://localhost:5173, not http://127.0.0.1:5173.Propose a new module when one of these is true:
Do not create a module for a single helper, one DTO, or a component that is only reused inside one bounded context.
| Work | Delegate |
|---|---|
| ABP base classes, DI, exception conventions | abp-core |
| Entity/AppService/DTO design inside the chosen module | abp-feature-dev |
| Mongo context, collection names, repositories, indexes | abp-mongodb |
| Tenant scoping and permission side | abp-multitenancy |
| Module-local or shared React UI | abp-react-ui |
| Integration tests after module moves | abp-testing |
NewModule.* permissions but the tenant role still has old HostModule.*
grants. Run the data seed/migrator and verify grants in the permission store.react/src; add module React
folders with @source "../../../modules/<module>/react/src";.127.0.0.1 while
ABP CORS allows localhost. Use the configured App:ReactUrl origin or add
the extra origin deliberately.AddApplicationPartIfNotExists were not wired in
the module.npx claudepluginhub inno-bit-lab/ibl-agent-plugins --plugin ibl-abpGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.