@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
package/templates/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"templateVersion": "
|
|
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": "
|
|
124
|
+
"version": "3",
|
|
125
125
|
"description": "Selectable React skill for component design, props, state ownership, and presentational boundaries.",
|
|
126
126
|
"changes": [
|
|
127
|
-
"
|
|
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.
|
|
75
|
-
2.
|
|
76
|
-
3. one
|
|
77
|
-
4.
|
|
78
|
-
5.
|
|
79
|
-
6.
|
|
80
|
-
7.
|
|
81
|
-
8.
|
|
82
|
-
9.
|
|
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?
|