@juancr11/sibu 0.12.4 → 0.13.1

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.1",
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": "97",
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": {
@@ -128,10 +128,10 @@
128
128
  ]
129
129
  },
130
130
  "skills/scrum-master-planner/SKILL.md": {
131
- "version": "10",
131
+ "version": "11",
132
132
  "description": "Mandatory Scrum planner skill for creating pragmatic Epics and User Stories from approved feature and technical design docs.",
133
133
  "changes": [
134
- "Removes label creation and label assignment from Scrum planning GitHub issue export while keeping the mandatory GitHub export gate and native sub-issue requirements."
134
+ "Clarifies that User Stories should be deployable increments that can be merged safely on their own, even when gated or incomplete until the parent Epic is done."
135
135
  ]
136
136
  },
137
137
  "skills/ai-implementation-planner/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?
@@ -164,7 +164,9 @@ Adapt headings only when it improves clarity. Keep the Epic brief short.
164
164
 
165
165
  Within each Epic, decide the order of execution before writing User Story files. Use the lowest practical sequence number for the first story that should be implemented, then increment only when later stories depend on earlier work. If two or more stories can be developed at the same time, give them the same order number.
166
166
 
167
- Each User Story should be independently understandable and reviewable.
167
+ Each User Story should be independently understandable, reviewable, and deployable.
168
+
169
+ A User Story represents a shippable increment that can move from backlog to Done and be merged safely on its own. It may be hidden behind feature flags, internal-only paths, disabled defaults, or incomplete parent-Epic workflows, but it must leave the product in a valid deployable state without requiring unmerged sibling Stories.
168
170
 
169
171
  Use this structure:
170
172
 
@@ -206,6 +208,7 @@ Before finishing, verify:
206
208
  - every Story belongs to exactly one Epic
207
209
  - every Story filename includes a two-digit execution order prefix
208
210
  - Stories with the same order number are actually parallelizable
211
+ - every Story can be merged and deployed safely on its own, even if its user-facing value is gated or incomplete until the Epic is done
209
212
  - Story count is pragmatic, not inflated
210
213
  - no Story adds scope that is absent from the feature brief or technical design
211
214
  - acceptance criteria are testable enough for a reviewer