You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: .hermes/skills/devlog-architecture-harness/SKILL.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -79,6 +79,7 @@ Ask the user before editing when:
79
79
- Data would gain concrete SDK or storage implementation details.
80
80
- Data or Presentation would expand platform SDK usage beyond the existing narrow cancellation-classification or notification-badge patterns.
81
81
- Infra would add any Domain dependency, source import, or SDK service contract coupling.
82
+
- A same-layer dependency would be injected outside a SwiftUI `View` file in `Application/DevLogPresentation`.
82
83
- The Presentation `StorePattern` flow or reducer responsibility would change.
83
84
- A compile fix requires relaxing the intended architecture.
84
85
- The change is outside the requested issue or PR scope.
@@ -120,6 +121,7 @@ After completion, report only:
120
121
121
122
- Do not infer project-specific architecture policy from generic Clean Architecture rules when DevLog already has a concrete pattern.
122
123
- Do not move domain entities to Core just because multiple modules need them.
124
+
- Do not inject same-layer dependencies except from SwiftUI `View` files in `Application/DevLogPresentation` into same-layer presentation objects for UI composition.
123
125
- Do not hide architecture decisions inside build-fix wording.
124
126
- Do not broaden a modularization task into unrelated Firestore, Messaging, or UI safety edits.
125
127
- Do not mark work complete if the diff contains unrelated project-file or lockfile churn.
Do not inject dependencies between types that belong to the same layer.
136
+
137
+
This rule covers initializer injection, stored-property injection, environment injection, and resolving same-layer types through `DIContainer`.
138
+
139
+
The only allowed exception is a SwiftUI `View` file in `Application/DevLogPresentation` receiving same-layer presentation objects such as a ViewModel, Coordinator, or Store for UI composition.
140
+
141
+
That exception does not apply to non-View files in Presentation, and does not apply to Core, Domain, Data, Infra, Persistence, Widget, App, WidgetCore, WidgetExtension, or Firebase functions.
142
+
133
143
## Presentation StorePattern flow
134
144
135
145
```mermaid
@@ -165,6 +175,7 @@ flowchart TD
165
175
CoreDomain{"Core vs Domain ownership?"}
166
176
Shared{"Moved only because shared?"}
167
177
NewDependency{"New module dependency?"}
178
+
SameLayerDI{"Same-layer dependency injection?"}
168
179
ExternalSDK{"External SDK crosses layer?"}
169
180
WidgetBoundary{"WidgetCore sees app/domain/data?"}
Copy file name to clipboardExpand all lines: .hermes/skills/devlog-architecture-harness/references/devlog-workflow-rules.md
+7Lines changed: 7 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -57,6 +57,13 @@ This reference holds DevLog-specific working rules that should live with the pro
57
57
- Keep project-file, lockfile, and code changes separated when the task scope requires clean review.
58
58
- Do not broaden architecture work into unrelated Firestore, Messaging, UI, or safety edits.
59
59
60
+
## Layer-internal dependency injection
61
+
62
+
- Do not inject dependencies between types that belong to the same layer.
63
+
- This includes initializer injection, stored-property injection, environment injection, and resolving same-layer types through `DIContainer`.
64
+
- The only allowed exception is a SwiftUI `View` file in `Application/DevLogPresentation` receiving same-layer presentation objects such as a ViewModel, Coordinator, or Store for UI composition.
65
+
- The exception does not apply to non-View files in Presentation, and does not apply to Core, Domain, Data, Infra, Persistence, Widget, App, WidgetCore, WidgetExtension, or Firebase functions.
66
+
60
67
## Data, Domain, and Infra boundary
61
68
62
69
- Do not move domain entities to Core only because multiple modules need them.
Copy file name to clipboardExpand all lines: AGENTS.md
+8Lines changed: 8 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -53,6 +53,13 @@ Treat this repository as a Tuist-generated, workspace-based modular iOS app. The
53
53
-`Widget/DevLogWidgetExtension`: WidgetKit UI, widget providers, entries, timelines, and extension resources. It should consume WidgetCore outputs rather than app/domain services directly.
54
54
-`Firebase/functions`: TypeScript Cloud Functions. Deploy updated functions one by one separately.
55
55
56
+
### Layer-internal dependency injection
57
+
58
+
- Do not inject dependencies between types that belong to the same layer.
59
+
- This applies to initializer injection, stored-property injection, environment injection, and resolving same-layer types through `DIContainer`.
60
+
- The only allowed exception is a SwiftUI `View` file in `Application/DevLogPresentation` receiving same-layer presentation objects such as a ViewModel, Coordinator, or Store for UI composition.
61
+
- The exception does not apply to non-View files in Presentation, and does not apply to Core, Domain, Data, Infra, Persistence, Widget, App, WidgetCore, WidgetExtension, or Firebase functions.
62
+
56
63
### StorePattern flow
57
64
58
65
- Preserve the existing Presentation `StorePattern`.
@@ -72,6 +79,7 @@ Ask the user before editing when any of these are true:
72
79
- Firebase, GoogleSignIn, AuthenticationServices, UserNotifications, LinkPresentation, Network, WidgetKit, or storage implementation details would move to another layer.
73
80
- A repository protocol, service protocol, assembler, or DI ownership boundary would change.
74
81
- WidgetCore would start depending on app/domain/data implementation concepts.
82
+
- A same-layer dependency would be injected outside a SwiftUI `View` file in `Application/DevLogPresentation`.
75
83
- The requested change suggests cleanup outside the current issue or PR scope.
0 commit comments