@juancr11/sibu 0.13.1 → 0.13.2

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.13.1",
3
+ "version": "0.13.2",
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": "97",
2
+ "templateVersion": "98",
3
3
  "templates": {
4
4
  "AGENTS.md": {
5
5
  "version": "29",
@@ -121,10 +121,10 @@
121
121
  ]
122
122
  },
123
123
  "skills/react/SKILL.md": {
124
- "version": "2",
124
+ "version": "3",
125
125
  "description": "Selectable React skill for component design, props, state ownership, and presentational boundaries.",
126
126
  "changes": [
127
- "Strengthens React component guidance around Single Responsibility Principle splits, stateless versus stateful boundaries, and one component per file by default."
127
+ "Adds broadly applicable React screen componentization guidance so route and feature entry files stay thin while meaningful UI regions move into focused nearby files."
128
128
  ]
129
129
  },
130
130
  "skills/scrum-master-planner/SKILL.md": {
@@ -13,6 +13,8 @@ This skill covers React componentization, component responsibility, state owners
13
13
 
14
14
  - creating or editing React components
15
15
  - splitting large components
16
+ - constructing or refactoring page-level UI from smaller route-local components
17
+ - deciding when a page file should delegate sections, repeated items, panels, overlays, menus, states, and formatting helpers to focused files
16
18
  - deciding where state should live
17
19
  - separating presentational components from server-interacting or data-owning components
18
20
  - reviewing component responsibility and prop design
@@ -68,15 +70,61 @@ This skill covers React componentization, component responsibility, state owners
68
70
  - Each component should live in its own file by default; do not define multiple components in the same file just because they are currently small.
69
71
  - If a helper component is only temporary, promote it to its own file as soon as it represents a meaningful UI responsibility.
70
72
 
73
+ ### 9. Build screens as composition roots, not component dumping grounds
74
+ - Treat page-level components, route-level containers, and major feature components as composition roots: they should assemble focused child components, not define every section, repeated item, overlay, menu, state, helper, and interaction inline.
75
+ - A top-level screen component may own data loading, high-level layout, route states, and wiring, but should delegate meaningful UI regions to named components.
76
+ - If a UI region has its own state, interaction, repeated rendering, overlay, menu, empty/error/loading state, or domain formatting concern, strongly prefer extracting it to a focused nearby file.
77
+ - Keep route entry files especially thin: they should fetch or prepare data, handle route-level states, and compose the screen. Avoid placing substantial presentational or interactive subcomponents directly inside them.
78
+ - Route-local or feature-local components are good defaults for UI that belongs to one screen or feature. Shared components should be extracted only when reuse is real, not speculative.
79
+
80
+ ## File splitting triggers
81
+
82
+ When editing a React page, route container, or major component, extract a separate component or helper file when any of these are true:
83
+
84
+ - The file defines more than one meaningful UI responsibility, such as a container plus repeated item plus action surface plus state view.
85
+ - A nested component has a product/UI name a user, designer, or teammate would recognize.
86
+ - A UI region owns local state, submission or mutation behavior, pending/optimistic feedback, validation, confirmation, or recovery behavior.
87
+ - A component renders a repeated unit, such as a row, card, list item, tile, timeline entry, tab panel, or menu group.
88
+ - A component represents an empty state, error state, no-results state, loading state, permission state, or other named screen state.
89
+ - A helper formats domain-visible values, such as money, dates, percentages, names, quantities, labels, or statuses, and is used by more than one component.
90
+ - The parent component becomes hard to scan in one pass or requires scrolling through implementation details to understand the screen structure.
91
+
92
+ Prefer nearby files first, using names from the product or UI. For example:
93
+
94
+ ```txt
95
+ page.tsx
96
+ feature-shell.tsx
97
+ feature-summary.tsx
98
+ feature-list.tsx
99
+ feature-item.tsx
100
+ feature-actions.tsx
101
+ feature-state.tsx
102
+ feature-format.ts
103
+ feature-types.ts
104
+ ```
105
+
71
106
  ## Decision rule
72
107
 
73
108
  When unsure, prefer:
74
- 1. one clear responsibility per component
75
- 2. more focused components instead of fewer overloaded components
76
- 3. one component per file by default
77
- 4. stateless presentational components that render from props
78
- 5. stateful components only where local interaction state is genuinely owned
79
- 6. data/server interaction in obvious owner components
80
- 7. local state unless coordination requires lifting it
81
- 8. composition over flag-heavy component APIs
82
- 9. no duplicated derived state
109
+ 1. route entry files as thin composition roots
110
+ 2. route-level or feature-level containers that own only the interaction state they coordinate
111
+ 3. one clear responsibility per component
112
+ 4. more focused components instead of fewer overloaded components
113
+ 5. one meaningful component per file by default
114
+ 6. nearby component files before shared abstractions
115
+ 7. stateless presentational components that render from props
116
+ 8. stateful components only where local interaction state is genuinely owned
117
+ 9. data/server interaction in obvious owner components
118
+ 10. local state unless coordination requires lifting it
119
+ 11. composition over flag-heavy component APIs
120
+ 12. no duplicated derived state
121
+
122
+ ## Componentization self-review
123
+
124
+ Before finishing a React change, ask:
125
+
126
+ - Can I understand the screen structure from the top-level file without reading repeated item, action surface, overlay, state, or formatting internals?
127
+ - Are meaningful UI regions and repeated units in named components?
128
+ - Does each file have one obvious reason to change?
129
+ - Are server/client boundaries still as small as practical?
130
+ - Did I avoid creating shared abstractions before there is real reuse?