@juancr11/sibu 0.12.4 → 0.13.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.
@@ -147,7 +147,7 @@ export const SELECTABLE_ARCHITECTURE_SKILLS = [
147
147
  {
148
148
  id: 'ddd-hexagonal',
149
149
  name: 'DDD + Hexagonal Architecture',
150
- description: 'Install back-end architecture guidance for DDD, ports/adapters, and inward dependencies',
150
+ description: 'Choose for complex back-end domains that need DDD, ports/adapters, and strict inward dependencies',
151
151
  routingInstruction: 'For backend features, refactors, bug fixes, persistence, external integrations, application/service boundaries, domain modeling, or architectural tradeoffs, use `ddd-hexagonal`.',
152
152
  templateRelativePath: 'skills/architecture/ddd-hexagonal/SKILL.md',
153
153
  targetRelativePathsByAgent: {
@@ -160,7 +160,7 @@ export const SELECTABLE_ARCHITECTURE_SKILLS = [
160
160
  {
161
161
  id: 'command-pattern',
162
162
  name: 'Command Pattern',
163
- description: 'Install architecture guidance for structuring executable operations as commands and handlers',
163
+ description: 'Choose for workflow-heavy apps that need executable operations structured as commands and handlers',
164
164
  routingInstruction: 'For work that structures actions, workflows, command handlers, operation dispatch, request processing, or executable tasks, use `command-pattern`.',
165
165
  templateRelativePath: 'skills/architecture/command-pattern/SKILL.md',
166
166
  targetRelativePathsByAgent: {
@@ -170,6 +170,19 @@ export const SELECTABLE_ARCHITECTURE_SKILLS = [
170
170
  windsurf: '.agents/skills/command-pattern/SKILL.md',
171
171
  },
172
172
  },
173
+ {
174
+ id: 'layered-architecture',
175
+ name: 'Layered Architecture',
176
+ description: 'Choose for smaller apps that need lightweight separation with controllers, services, models, and repositories',
177
+ routingInstruction: 'For smaller apps that need lightweight separation of concerns with controllers, services, models, and repositories, use `layered-architecture`.',
178
+ templateRelativePath: 'skills/architecture/layered-architecture/SKILL.md',
179
+ targetRelativePathsByAgent: {
180
+ codex: '.agents/skills/layered-architecture/SKILL.md',
181
+ gemini: '.agents/skills/layered-architecture/SKILL.md',
182
+ claude: '.agents/skills/layered-architecture/SKILL.md',
183
+ windsurf: '.agents/skills/layered-architecture/SKILL.md',
184
+ },
185
+ },
173
186
  ];
174
187
  export const SELECTABLE_WORKFLOW_SKILLS = [
175
188
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@juancr11/sibu",
3
- "version": "0.12.4",
3
+ "version": "0.13.0",
4
4
  "description": "CLI for setting up a local AI-augmented development workflow.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,11 +1,11 @@
1
1
  {
2
- "templateVersion": "95",
2
+ "templateVersion": "96",
3
3
  "templates": {
4
4
  "AGENTS.md": {
5
- "version": "28",
5
+ "version": "29",
6
6
  "description": "Project-level agent instructions and Sibu maintenance guidance.",
7
7
  "changes": [
8
- "Routes story and Epic planning requests to the executor by default so generated plans are implemented immediately unless planning-only is explicit."
8
+ "Can render Layered Architecture routing when that architecture option is selected."
9
9
  ]
10
10
  },
11
11
  ".codex/config.toml": {
@@ -89,7 +89,7 @@
89
89
  "version": "1",
90
90
  "description": "Selectable Go skill installed when Go language support is selected.",
91
91
  "changes": [
92
- "Adds an optional Go skill with concise, Effective Go\u2013style guidance for .go files, package APIs, interfaces, errors, receivers, concurrency, and tests."
92
+ "Adds an optional Go skill with concise, Effective Go–style guidance for .go files, package APIs, interfaces, errors, receivers, concurrency, and tests."
93
93
  ]
94
94
  },
95
95
  "skills/postgresql-expert/SKILL.md": {
@@ -161,6 +161,13 @@
161
161
  "changes": [
162
162
  "Strengthens UX interviews to resolve material experience questions before drafting and replaces open UX questions with risks/tradeoffs."
163
163
  ]
164
+ },
165
+ "skills/architecture/layered-architecture/SKILL.md": {
166
+ "version": "1",
167
+ "description": "Selectable lightweight architecture skill for pragmatic controllers, services, models, and repositories guidance.",
168
+ "changes": [
169
+ "Adds a Layered Architecture skill for smaller apps that need simple separation of concerns."
170
+ ]
164
171
  }
165
172
  }
166
173
  }
@@ -0,0 +1,132 @@
1
+ ---
2
+ name: layered-architecture
3
+ description: Use this skill for smaller apps that need lightweight separation of concerns with controllers, services, models, and repositories.
4
+ ---
5
+
6
+ # layered-architecture
7
+
8
+ Use this skill for smaller apps that need basic separation of concerns.
9
+
10
+ This is Sibu's pragmatic layered architecture guidance. It is not the only valid meaning of “Layered Architecture”; it is the lightweight shape Sibu recommends when a project needs clearer boundaries but not a full domain-architecture framework.
11
+
12
+ ## Main rule
13
+
14
+ > **Controllers adapt input, services coordinate behavior, models represent core concepts, and repositories hide persistence details.**
15
+
16
+ Keep the layers useful, not ceremonial. If splitting a small function across layers makes the code harder to understand, prefer the simpler code.
17
+
18
+ ## Layer responsibilities
19
+
20
+ ### Controllers
21
+
22
+ Controllers are entrypoints. They adapt the outside world into application calls.
23
+
24
+ Controllers may:
25
+
26
+ - parse request, CLI, job, or UI-facing input
27
+ - call services
28
+ - translate service results into response, CLI, or UI-facing output
29
+ - handle transport-specific validation and formatting
30
+
31
+ Controllers should not:
32
+
33
+ - own business rules
34
+ - talk directly to persistence
35
+ - coordinate multi-step business behavior that belongs in a service
36
+ - leak framework-specific objects into services
37
+
38
+ ### Services
39
+
40
+ Services coordinate application behavior and business rules.
41
+
42
+ Services may:
43
+
44
+ - run use-case or workflow logic
45
+ - validate business conditions
46
+ - coordinate models and repositories
47
+ - return plain results that controllers can adapt
48
+
49
+ Services should not:
50
+
51
+ - depend on framework request/response objects
52
+ - embed SQL, ORM, SDK, or filesystem details directly
53
+ - become generic “miscellaneous helper” bags
54
+
55
+ ### Models
56
+
57
+ Models represent core data shapes or business concepts.
58
+
59
+ Models may:
60
+
61
+ - define meaningful application data structures
62
+ - contain simple validation or derived behavior when it clarifies the concept
63
+ - make important states and invariants explicit
64
+
65
+ Models should not:
66
+
67
+ - mirror persistence tables blindly when that hides business meaning
68
+ - know about controllers, framework concerns, or repository implementations
69
+ - become over-modeled when a plain type or object is enough
70
+
71
+ ### Repositories
72
+
73
+ Repositories hide persistence and data-access details.
74
+
75
+ Repositories may:
76
+
77
+ - load and save models or data shapes
78
+ - translate between storage records and application-facing data
79
+ - contain SQL, ORM, filesystem, or external data-access details
80
+
81
+ Repositories should not:
82
+
83
+ - own business workflows
84
+ - expose low-level persistence details to services
85
+ - import controllers or transport-layer code
86
+
87
+ ## Dependency direction
88
+
89
+ Use this default flow:
90
+
91
+ ```txt
92
+ controller -> service -> repository
93
+ service -> model
94
+ repository -> model or storage mapping
95
+ ```
96
+
97
+ Avoid these flows:
98
+
99
+ ```txt
100
+ controller -> repository
101
+ service -> controller
102
+ model -> controller
103
+ repository -> service
104
+ ```
105
+
106
+ ## Practical project mapping
107
+
108
+ Use the project's existing folders when they are already clear. If no convention exists, this simple shape is enough:
109
+
110
+ ```text
111
+ src/controllers/** # entrypoints and adapters
112
+ src/services/** # application behavior and business rules
113
+ src/models/** # core data shapes and business concepts
114
+ src/repositories/** # persistence and data access
115
+ ```
116
+
117
+ For modular projects, place those layers inside the owning module instead:
118
+
119
+ ```text
120
+ src/modules/<module-slug>/controllers/**
121
+ src/modules/<module-slug>/services/**
122
+ src/modules/<module-slug>/models/**
123
+ src/modules/<module-slug>/repositories/**
124
+ ```
125
+
126
+ ## Review checklist
127
+
128
+ - Does each controller stay thin and call services instead of persistence?
129
+ - Does each service coordinate behavior without depending on framework objects?
130
+ - Do repositories hide data-access details from services?
131
+ - Are models meaningful without unnecessary ceremony?
132
+ - Is the layer split making the app easier to understand?