@juancr11/sibu 0.9.7 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juancr11/sibu",
3
- "version": "0.9.7",
3
+ "version": "0.10.0",
4
4
  "description": "CLI for setting up a local AI-augmented development workflow.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,5 +1,5 @@
1
1
  {
2
- "templateVersion": "86",
2
+ "templateVersion": "89",
3
3
  "templates": {
4
4
  "AGENTS.md": {
5
5
  "version": "28",
@@ -73,10 +73,10 @@
73
73
  ]
74
74
  },
75
75
  "skills/technical-design-writer/SKILL.md": {
76
- "version": "15",
76
+ "version": "16",
77
77
  "description": "Mandatory technical design writer skill installed once at the shared .agents/skills workspace path.",
78
78
  "changes": [
79
- "Updates technical design guidance to translate selected Deep Modules into implementation boundaries."
79
+ "Requires technical designs crossing framework boundaries to name the allowed application/orchestration entrypoint and forbidden lower-level dependencies."
80
80
  ]
81
81
  },
82
82
  "skills/typescript/SKILL.md": {
@@ -101,24 +101,24 @@
101
101
  ]
102
102
  },
103
103
  "skills/architecture/ddd-hexagonal/SKILL.md": {
104
- "version": "7",
104
+ "version": "8",
105
105
  "description": "Selectable back-end architecture skill for DDD and Hexagonal Architecture.",
106
106
  "changes": [
107
- "Adds anti-corruption adapter guidance for translating external models at infrastructure boundaries."
107
+ "Adds a framework-agnostic adapter dependency rule requiring delivery entrypoints to call application/orchestration boundaries instead of infrastructure or domain workflow internals."
108
108
  ]
109
109
  },
110
110
  "skills/architecture/command-pattern/SKILL.md": {
111
- "version": "5",
111
+ "version": "6",
112
112
  "description": "Selectable architecture skill for command-oriented vertical slices using Command Pattern, Hexagonal Architecture, and DDD principles.",
113
113
  "changes": [
114
- "Clarifies that Deep Modules hide implementation complexity behind small interfaces and are not product categories by themselves."
114
+ "Adds a framework-agnostic entrypoint dependency rule requiring delivery adapters to create commands and call handlers or dispatchers instead of infrastructure, SDKs, repositories, or domain workflow internals."
115
115
  ]
116
116
  },
117
117
  "skills/nextjs/SKILL.md": {
118
- "version": "1",
118
+ "version": "3",
119
119
  "description": "Selectable framework skill for Next.js App Router and framework-specific behavior.",
120
120
  "changes": [
121
- "Adds an optional Next.js skill for projects that use App Router pages, layouts, route handlers, metadata, and Server/Client Component boundaries."
121
+ "Keeps Next.js boundary guidance architecture-agnostic by referring to the selected orchestration/application boundary instead of naming a specific architecture."
122
122
  ]
123
123
  },
124
124
  "skills/react/SKILL.md": {
@@ -81,6 +81,37 @@ The Handler must be "blind" to the entrypoint. It should not know if it is being
81
81
  ### Rule 4: Thin Entrypoints
82
82
  Entrypoints (CLI/API) are responsible for Syntactic Validation (is the input the right type?). Handlers are responsible for Semantic Validation (does this operation make sense in the current state of the system?).
83
83
 
84
+ ### Rule 5: Entrypoints Call Commands, Not Lower Layers
85
+ Entrypoints are driving adapters. Examples include CLI commands, HTTP routes, Next.js App Router files, server actions, queue consumers, jobs, webhooks, RPC handlers, and GraphQL resolvers.
86
+
87
+ An entrypoint may:
88
+ - adapt framework or transport input into a Command
89
+ - call the feature Handler directly, or call an application-level command dispatcher/orchestration API
90
+ - translate the Result into a framework or transport response
91
+
92
+ An entrypoint must not directly import or call:
93
+ - infrastructure adapters
94
+ - database clients or repository implementations
95
+ - SDK clients
96
+ - persistence models or external API response shapes
97
+ - another feature-slice's internals
98
+ - domain workflow logic that bypasses the Handler
99
+
100
+ Allowed flow:
101
+
102
+ ```txt
103
+ entrypoint / framework adapter -> Command -> Handler / dispatcher -> Ports -> infrastructure adapters
104
+ ```
105
+
106
+ Forbidden flow:
107
+
108
+ ```txt
109
+ entrypoint / framework adapter -> infrastructure / database / SDK / repository implementation
110
+ entrypoint / framework adapter -> domain workflow internals that bypass the Handler
111
+ ```
112
+
113
+ If dependency wiring needs infrastructure implementations, prefer a composition/bootstrap module or small factory that constructs the Handler. Keep request handling, command creation, and result translation separate from infrastructure behavior.
114
+
84
115
  ---
85
116
 
86
117
  ## 4. Implementation Workflow
@@ -95,6 +95,34 @@ This means:
95
95
 
96
96
  If business logic needs a DB client, SDK response, HTTP object, or framework context directly, the boundary is probably wrong.
97
97
 
98
+ ## Framework adapter dependency rule
99
+
100
+ Framework code is a driving adapter. Examples include HTTP routes, controllers, Next.js App Router files, server actions, CLI commands, queue consumers, jobs, webhooks, RPC handlers, and GraphQL resolvers.
101
+
102
+ Framework adapters may adapt framework input/output and call the application/orchestration boundary. They must not directly import or call:
103
+
104
+ - repository implementations or database clients
105
+ - SDK clients or infrastructure adapters
106
+ - persistence models or external API response shapes
107
+ - domain internals that perform a business workflow outside an application use case
108
+ - other delivery/framework adapters
109
+
110
+ Allowed flow:
111
+
112
+ ```txt
113
+ framework adapter -> application use case / orchestration API -> domain + ports
114
+ infrastructure adapter -> application/domain port contracts
115
+ ```
116
+
117
+ Forbidden flow:
118
+
119
+ ```txt
120
+ framework adapter -> infrastructure / database / SDK / repository implementation
121
+ framework adapter -> domain workflow internals that bypass the application boundary
122
+ ```
123
+
124
+ When planning or implementing a feature, name the application/orchestration API each framework entrypoint is allowed to call. Add an explicit allow/deny import list when the boundary could be ambiguous.
125
+
98
126
  ## Domain modeling: entity, value object, or neither
99
127
 
100
128
  Do not force DDD labels onto every concept. Use them only when they buy clarity, express real business meaning, or protect invariants.
@@ -44,9 +44,10 @@ Add `"use client"` only for code that needs client-side capabilities, such as:
44
44
  Prefer isolating the smallest interactive subtree into a Client Component rather than turning a whole page or layout into a Client Component.
45
45
 
46
46
  ### 4. Keep `src/app/**` thin
47
- - Treat `src/app/**` as a framework boundary.
48
- - Pages and route handlers should call application/domain code instead of containing business logic.
49
- - Keep request parsing, response formatting, redirects, and framework concerns in `src/app/**`.
47
+ - Treat `src/app/**` as a framework adapter boundary.
48
+ - When an architecture skill or technical design defines an orchestration/application boundary, App Router files may call only that boundary.
49
+ - Pages, layouts, route handlers, Server Actions, and metadata functions must not bypass the selected architecture's dependency rules.
50
+ - Keep request parsing, response formatting, redirects, rendering decisions, and framework concerns in `src/app/**`.
50
51
  - Move reusable business behavior out of App Router files.
51
52
 
52
53
  ### 5. Route handlers are framework adapters
@@ -54,6 +55,7 @@ Prefer isolating the smallest interactive subtree into a Client Component rather
54
55
  - Use the Web `Request` and `Response` APIs.
55
56
  - Keep handlers focused on HTTP concerns: parse input, call application behavior, and return a stable response.
56
57
  - Do not put backend business rules directly in route handlers.
58
+ - Do not import infrastructure, database clients, repository implementations, SDK wrappers, persistence models, or external API shapes directly from App Router files unless the selected architecture explicitly allows it.
57
59
 
58
60
  ### 6. Use Next.js error and empty-state conventions
59
61
  - Use `notFound()` for route resources that genuinely do not exist.
@@ -72,6 +72,8 @@ Translate product intent into implementation direction.
72
72
 
73
73
  Deep Modules answer “where does this implementation work belong?” Architecture guidance answers “how is that module structured internally?” Translate the feature brief's selected Deep Modules into implementation boundaries appropriate for the selected architecture. Capture those boundaries in the technical design so downstream Scrum planning, implementation planning, and execution can trust the technical design instead of rereading the Deep Module Map by default.
74
74
 
75
+ When a feature crosses a framework or delivery boundary, include the allowed orchestration/application entrypoint and the forbidden lower-level dependencies. Keep this framework-agnostic: name roles like framework adapter, application/orchestration boundary, domain, port, and infrastructure, then add concrete project paths only where useful.
76
+
75
77
  Prefer:
76
78
 
77
79
  - concise decisions over long explanation
@@ -143,6 +145,8 @@ Use this structure as a starting point. Delete sections that do not add value.
143
145
 
144
146
  <Explain how the selected Deep Modules translate into architecture, module, command, file, or implementation boundaries when that affects downstream work.>
145
147
 
148
+ <For framework/delivery entrypoints, state the application/orchestration API they may call and the lower-level layers, modules, or paths they must not call directly.>
149
+
146
150
  ## Validation
147
151
  <Focused test/build/manual checks.>
148
152