| name | code-review/boundary-doctor |
| description | Import boundary & package dependency direction detection. Covers cross-feature imports (forbidden), packages importing feature code (forbidden), ui -> frontend-core dependency inversion (forbidden), backend cross-module internal imports (forbidden). All Blocking. Trigger: import boundary cross-feature cross-module package dependency direction module isolation.
|
| version | 3 |
boundary-doctor — Import Boundary & Dependency Direction
Responsibility
Enforce module isolation and package dependency direction rules to prevent architecture decay.
Step 0: Discover Feature & Module Directories
All paths are dynamically discovered — no hardcoded project paths.
Discover frontend feature directories
list_dir_or_search: find any directory named "features" under <workspace_root>/apps/
From results, determine the active frontend feature root (e.g., apps/<project>/src/features/). List its subdirectories to get feature names. Build a disjunction pattern for Rule 1.
Discover backend module directories
list_dir_or_search: find any directory named "modules" under <workspace_root>/apps/
From results, determine the backend modules root (e.g., apps/<project>/src/modules/). List its subdirectories to get module names. Build a disjunction pattern for Rule 4.
Rules
Rule 1: Cross-feature imports
Rule 2: Packages importing feature code
Rule 3: ui -> frontend-core dependency violation
Rule 4: Backend cross-module internal imports
Execution
- Run Step 0 first to discover feature and module directories.
- Build the cross-feature and cross-module patterns from discovered names.
- Run Rules 1–4 in PARALLEL (skip rules whose scope doesn't apply).
- For Rules 2–3, use
<workspace_root>/packages/ and <workspace_root>/packages/ui/ — these are monorepo structural conventions, not project-specific paths.
- All violations are ❌ Blocking.
- Report: list each violation with filePath, lineNumber, matched import statement, and which rule it violates.