@mandujs/mcp 0.36.2 → 0.37.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.
Files changed (153) hide show
  1. package/package.json +4 -4
  2. package/src/activity-adapter.ts +23 -23
  3. package/src/adapters/index.ts +20 -20
  4. package/src/adapters/monitor-adapter.ts +100 -100
  5. package/src/adapters/tool-adapter.ts +90 -90
  6. package/src/executor/index.ts +22 -22
  7. package/src/executor/tool-executor.ts +148 -148
  8. package/src/hooks/config-watcher.ts +173 -173
  9. package/src/hooks/index.ts +23 -23
  10. package/src/hooks/mcp-hooks.ts +227 -227
  11. package/src/index.ts +0 -0
  12. package/src/logging/index.ts +15 -15
  13. package/src/logging/mcp-transport.ts +134 -134
  14. package/src/profiles.ts +34 -34
  15. package/src/registry/index.ts +13 -13
  16. package/src/registry/mcp-tool-registry.ts +298 -298
  17. package/src/resources/skills/guides.ts +1136 -1136
  18. package/src/resources/skills/index.ts +12 -12
  19. package/src/resources/skills/mandu-composition/SKILL.md +91 -91
  20. package/src/resources/skills/mandu-composition/metadata.json +13 -13
  21. package/src/resources/skills/mandu-composition/rules/_sections.md +26 -26
  22. package/src/resources/skills/mandu-composition/rules/_template.md +77 -77
  23. package/src/resources/skills/mandu-composition/rules/comp-arch-avoid-boolean-props.md +146 -146
  24. package/src/resources/skills/mandu-composition/rules/comp-arch-compound-components.md +164 -164
  25. package/src/resources/skills/mandu-composition/rules/comp-island-event.md +161 -161
  26. package/src/resources/skills/mandu-composition/rules/comp-island-slot-split.md +167 -167
  27. package/src/resources/skills/mandu-composition/rules/comp-pattern-children.md +149 -149
  28. package/src/resources/skills/mandu-composition/rules/comp-state-context-interface.md +148 -148
  29. package/src/resources/skills/mandu-composition/rules/comp-state-lift-state.md +150 -150
  30. package/src/resources/skills/mandu-deployment/SKILL.md +92 -92
  31. package/src/resources/skills/mandu-deployment/_sections.md +41 -41
  32. package/src/resources/skills/mandu-deployment/_template.md +38 -38
  33. package/src/resources/skills/mandu-deployment/metadata.json +13 -13
  34. package/src/resources/skills/mandu-deployment/rules/db-provider-supabase.md +300 -300
  35. package/src/resources/skills/mandu-deployment/rules/deploy-build-bun.md +109 -109
  36. package/src/resources/skills/mandu-deployment/rules/deploy-build-output.md +115 -115
  37. package/src/resources/skills/mandu-deployment/rules/deploy-cicd-github.md +219 -219
  38. package/src/resources/skills/mandu-deployment/rules/deploy-docker-bun.md +150 -150
  39. package/src/resources/skills/mandu-deployment/rules/deploy-docker-compose.md +223 -223
  40. package/src/resources/skills/mandu-deployment/rules/deploy-platform-fly.md +152 -152
  41. package/src/resources/skills/mandu-deployment/rules/deploy-platform-render.md +179 -179
  42. package/src/resources/skills/mandu-deployment/rules/deploy-platform-vercel.md +140 -140
  43. package/src/resources/skills/mandu-fs-routes/SKILL.md +82 -82
  44. package/src/resources/skills/mandu-fs-routes/metadata.json +12 -12
  45. package/src/resources/skills/mandu-fs-routes/rules/_sections.md +36 -36
  46. package/src/resources/skills/mandu-fs-routes/rules/_template.md +69 -69
  47. package/src/resources/skills/mandu-fs-routes/rules/routes-api-methods.md +65 -65
  48. package/src/resources/skills/mandu-fs-routes/rules/routes-dynamic-param.md +93 -93
  49. package/src/resources/skills/mandu-fs-routes/rules/routes-naming-page.md +55 -55
  50. package/src/resources/skills/mandu-guard/SKILL.md +129 -129
  51. package/src/resources/skills/mandu-guard/metadata.json +12 -12
  52. package/src/resources/skills/mandu-guard/rules/_sections.md +36 -36
  53. package/src/resources/skills/mandu-guard/rules/_template.md +82 -82
  54. package/src/resources/skills/mandu-guard/rules/guard-config-rules.md +100 -100
  55. package/src/resources/skills/mandu-guard/rules/guard-layer-direction.md +76 -76
  56. package/src/resources/skills/mandu-guard/rules/guard-preset-mandu.md +81 -81
  57. package/src/resources/skills/mandu-guard/rules/guard-validate-import.md +80 -80
  58. package/src/resources/skills/mandu-hydration/SKILL.md +91 -91
  59. package/src/resources/skills/mandu-hydration/metadata.json +12 -12
  60. package/src/resources/skills/mandu-hydration/rules/_sections.md +31 -31
  61. package/src/resources/skills/mandu-hydration/rules/_template.md +72 -72
  62. package/src/resources/skills/mandu-hydration/rules/hydration-data-event.md +109 -109
  63. package/src/resources/skills/mandu-hydration/rules/hydration-directive-use-client.md +55 -55
  64. package/src/resources/skills/mandu-hydration/rules/hydration-island-setup.md +113 -113
  65. package/src/resources/skills/mandu-hydration/rules/hydration-priority-visible.md +68 -68
  66. package/src/resources/skills/mandu-performance/SKILL.md +85 -85
  67. package/src/resources/skills/mandu-performance/metadata.json +14 -14
  68. package/src/resources/skills/mandu-performance/rules/_sections.md +31 -31
  69. package/src/resources/skills/mandu-performance/rules/_template.md +64 -64
  70. package/src/resources/skills/mandu-performance/rules/perf-async-defer-await.md +103 -103
  71. package/src/resources/skills/mandu-performance/rules/perf-async-parallel.md +95 -95
  72. package/src/resources/skills/mandu-performance/rules/perf-bun-file.md +124 -124
  73. package/src/resources/skills/mandu-performance/rules/perf-bun-serve.md +125 -125
  74. package/src/resources/skills/mandu-performance/rules/perf-bundle-imports.md +80 -80
  75. package/src/resources/skills/mandu-performance/rules/perf-bundle-island-lazy.md +145 -145
  76. package/src/resources/skills/mandu-performance/rules/perf-cache-react.md +98 -98
  77. package/src/resources/skills/mandu-performance/rules/perf-render-transitions.md +154 -154
  78. package/src/resources/skills/mandu-security/SKILL.md +87 -87
  79. package/src/resources/skills/mandu-security/metadata.json +13 -13
  80. package/src/resources/skills/mandu-security/rules/_sections.md +31 -31
  81. package/src/resources/skills/mandu-security/rules/_template.md +74 -74
  82. package/src/resources/skills/mandu-security/rules/sec-auth-guard.md +127 -127
  83. package/src/resources/skills/mandu-security/rules/sec-env-management.md +133 -133
  84. package/src/resources/skills/mandu-security/rules/sec-input-validate.md +148 -148
  85. package/src/resources/skills/mandu-security/rules/sec-protect-csrf.md +146 -146
  86. package/src/resources/skills/mandu-security/rules/sec-protect-headers.md +138 -138
  87. package/src/resources/skills/mandu-slot/SKILL.md +85 -85
  88. package/src/resources/skills/mandu-slot/metadata.json +12 -12
  89. package/src/resources/skills/mandu-slot/rules/_sections.md +36 -36
  90. package/src/resources/skills/mandu-slot/rules/_template.md +63 -63
  91. package/src/resources/skills/mandu-slot/rules/slot-basic-structure.md +38 -38
  92. package/src/resources/skills/mandu-slot/rules/slot-ctx-response.md +56 -56
  93. package/src/resources/skills/mandu-slot/rules/slot-guard-auth.md +59 -59
  94. package/src/resources/skills/mandu-slot/rules/slot-http-methods.md +64 -64
  95. package/src/resources/skills/mandu-styling/SKILL.md +154 -154
  96. package/src/resources/skills/mandu-styling/_sections.md +43 -43
  97. package/src/resources/skills/mandu-styling/_template.md +32 -32
  98. package/src/resources/skills/mandu-styling/metadata.json +15 -15
  99. package/src/resources/skills/mandu-styling/rules/style-component-compound.md +235 -235
  100. package/src/resources/skills/mandu-styling/rules/style-component-slots.md +255 -255
  101. package/src/resources/skills/mandu-styling/rules/style-component-tokens.md +205 -205
  102. package/src/resources/skills/mandu-styling/rules/style-island-animations.md +272 -272
  103. package/src/resources/skills/mandu-styling/rules/style-island-scoping.md +167 -167
  104. package/src/resources/skills/mandu-styling/rules/style-island-variants.md +221 -221
  105. package/src/resources/skills/mandu-styling/rules/style-perf-critical.md +209 -209
  106. package/src/resources/skills/mandu-styling/rules/style-perf-purge.md +192 -192
  107. package/src/resources/skills/mandu-styling/rules/style-setup-modules.md +162 -162
  108. package/src/resources/skills/mandu-styling/rules/style-setup-panda.md +164 -164
  109. package/src/resources/skills/mandu-styling/rules/style-setup-tailwind.md +170 -170
  110. package/src/resources/skills/mandu-styling/rules/style-tailwind-v4-gotchas.md +179 -179
  111. package/src/resources/skills/mandu-styling/rules/style-theme-darkmode.md +229 -229
  112. package/src/resources/skills/mandu-testing/SKILL.md +99 -99
  113. package/src/resources/skills/mandu-testing/metadata.json +13 -13
  114. package/src/resources/skills/mandu-testing/rules/_sections.md +26 -26
  115. package/src/resources/skills/mandu-testing/rules/_template.md +65 -65
  116. package/src/resources/skills/mandu-testing/rules/test-component-island.md +195 -195
  117. package/src/resources/skills/mandu-testing/rules/test-e2e-playwright.md +196 -196
  118. package/src/resources/skills/mandu-testing/rules/test-mock-fetch.md +219 -219
  119. package/src/resources/skills/mandu-testing/rules/test-slot-unit.md +192 -192
  120. package/src/resources/skills/mandu-ui/SKILL.md +117 -117
  121. package/src/resources/skills/mandu-ui/_sections.md +23 -23
  122. package/src/resources/skills/mandu-ui/_template.md +32 -32
  123. package/src/resources/skills/mandu-ui/metadata.json +13 -13
  124. package/src/resources/skills/mandu-ui/rules/ui-accessibility-aria.md +232 -232
  125. package/src/resources/skills/mandu-ui/rules/ui-accessibility-focus.md +238 -238
  126. package/src/resources/skills/mandu-ui/rules/ui-composition-patterns.md +259 -259
  127. package/src/resources/skills/mandu-ui/rules/ui-island-integration.md +258 -258
  128. package/src/resources/skills/mandu-ui/rules/ui-radix-patterns.md +213 -213
  129. package/src/resources/skills/mandu-ui/rules/ui-shadcn-setup.md +209 -209
  130. package/src/resources/skills/recipes.ts +932 -932
  131. package/src/server.ts +3 -3
  132. package/src/tools/ate-exemplar.ts +92 -92
  133. package/src/tools/ate-flakes.ts +90 -90
  134. package/src/tools/ate-mutate.ts +103 -103
  135. package/src/tools/ate-mutation-report.ts +64 -64
  136. package/src/tools/ate-oracle-pending.ts +49 -49
  137. package/src/tools/ate-oracle-replay.ts +44 -44
  138. package/src/tools/ate-oracle-verdict.ts +70 -70
  139. package/src/tools/ate-prompt.ts +146 -146
  140. package/src/tools/brain.ts +3 -3
  141. package/src/tools/deploy-plan.ts +378 -378
  142. package/src/tools/deploy-preview.ts +316 -316
  143. package/src/tools/design.ts +825 -825
  144. package/src/tools/docs.ts +350 -350
  145. package/src/tools/kitchen.ts +109 -23
  146. package/src/tools/lint.ts +226 -226
  147. package/src/tools/loop-close.ts +175 -175
  148. package/src/tools/negotiate.ts +263 -263
  149. package/src/tools/run-tests.ts +424 -424
  150. package/src/tools/runtime.ts +1 -1
  151. package/src/tools/slot-validation.ts +199 -199
  152. package/src/tx-lock.ts +73 -73
  153. package/src/utils/runtime-control.ts +52 -52
@@ -1,12 +1,12 @@
1
- export { GUIDES, getGuide, listGuides, type GuideId } from "./guides.js";
2
- export { RECIPES, getRecipe, listRecipes, type RecipeId } from "./recipes.js";
3
-
4
- // Agent Skills pattern
5
- export {
6
- listSkills,
7
- getSkill,
8
- listSkillRules,
9
- getSkillRule,
10
- type SkillMeta,
11
- type RuleMeta,
12
- } from "./loader.js";
1
+ export { GUIDES, getGuide, listGuides, type GuideId } from "./guides.js";
2
+ export { RECIPES, getRecipe, listRecipes, type RecipeId } from "./recipes.js";
3
+
4
+ // Agent Skills pattern
5
+ export {
6
+ listSkills,
7
+ getSkill,
8
+ listSkillRules,
9
+ getSkillRule,
10
+ type SkillMeta,
11
+ type RuleMeta,
12
+ } from "./loader.js";
@@ -1,91 +1,91 @@
1
- ---
2
- name: mandu-composition
3
- description: |
4
- React composition patterns for Mandu applications. Use when designing
5
- Island components, managing shared state, or building reusable component
6
- APIs. Triggers on compound components, context providers, boolean props,
7
- or component architecture tasks.
8
- license: MIT
9
- metadata:
10
- author: mandu
11
- version: "1.0.0"
12
- ---
13
-
14
- # Mandu Composition
15
-
16
- Mandu 애플리케이션을 위한 React 컴포지션 패턴 가이드. Island 컴파운드 컴포넌트, 상태 관리 인터페이스, Provider 패턴, slot-client 분리를 다룹니다. Vercel의 Composition Patterns를 Mandu 컨텍스트로 변환하여 적용합니다.
17
-
18
- ## When to Apply
19
-
20
- Reference these guidelines when:
21
- - Designing Island component architecture
22
- - Managing shared state between Islands
23
- - Building reusable component APIs
24
- - Refactoring components with boolean prop proliferation
25
- - Working with compound components or context providers
26
-
27
- ## Rule Categories by Priority
28
-
29
- | Priority | Category | Impact | Prefix |
30
- |----------|----------|--------|--------|
31
- | 1 | Component Architecture | HIGH | `comp-arch-` |
32
- | 2 | State Management | HIGH | `comp-state-` |
33
- | 3 | Island Patterns | MEDIUM | `comp-island-` |
34
- | 4 | Implementation Patterns | MEDIUM | `comp-pattern-` |
35
-
36
- ## Quick Reference
37
-
38
- ### 1. Component Architecture (HIGH)
39
-
40
- - `comp-arch-avoid-boolean-props` - Use composition instead of boolean customization
41
- - `comp-arch-compound-components` - Structure Islands as compound components
42
- - `comp-arch-explicit-variants` - Create explicit variant components
43
-
44
- ### 2. State Management (HIGH)
45
-
46
- - `comp-state-context-interface` - Define generic state/actions/meta interface
47
- - `comp-state-lift-state` - Move state into provider for sibling access
48
- - `comp-state-decouple-impl` - Provider is the only place knowing implementation
49
-
50
- ### 3. Island Patterns (MEDIUM)
51
-
52
- - `comp-island-compound` - Compose Islands with shared context
53
- - `comp-island-event` - Communicate between Islands with useIslandEvent
54
- - `comp-island-slot-split` - Separate server logic (slot) from client (Island)
55
-
56
- ### 4. Implementation Patterns (MEDIUM)
57
-
58
- - `comp-pattern-children` - Use children for composition over render props
59
- - `comp-pattern-provider-boundary` - Understand provider boundary vs visual nesting
60
-
61
- ## Core Principle
62
-
63
- **Lift state, compose internals, make state dependency-injectable.**
64
-
65
- ```
66
- ┌─────────────────────────────────────────┐
67
- │ Provider (state + actions + meta) │
68
- │ ┌───────────────────────────────────┐ │
69
- │ │ Composer.Frame │ │
70
- │ │ ┌─────────┐ ┌─────────────────┐ │ │
71
- │ │ │ Input │ │ Footer │ │ │
72
- │ │ └─────────┘ │ ┌─────┐ ┌─────┐ │ │ │
73
- │ │ │ │Emoji│ │Send │ │ │ │
74
- │ │ │ └─────┘ └─────┘ │ │ │
75
- │ │ └─────────────────┘ │ │
76
- │ └───────────────────────────────────┘ │
77
- │ ┌───────────────┐ ← Outside Frame │
78
- │ │ Preview │ but inside │
79
- │ └───────────────┘ Provider! │
80
- └─────────────────────────────────────────┘
81
- ```
82
-
83
- ## How to Use
84
-
85
- Read individual rule files for detailed explanations:
86
-
87
- ```
88
- rules/comp-arch-compound-components.md
89
- rules/comp-state-context-interface.md
90
- rules/comp-island-event.md
91
- ```
1
+ ---
2
+ name: mandu-composition
3
+ description: |
4
+ React composition patterns for Mandu applications. Use when designing
5
+ Island components, managing shared state, or building reusable component
6
+ APIs. Triggers on compound components, context providers, boolean props,
7
+ or component architecture tasks.
8
+ license: MIT
9
+ metadata:
10
+ author: mandu
11
+ version: "1.0.0"
12
+ ---
13
+
14
+ # Mandu Composition
15
+
16
+ Mandu 애플리케이션을 위한 React 컴포지션 패턴 가이드. Island 컴파운드 컴포넌트, 상태 관리 인터페이스, Provider 패턴, slot-client 분리를 다룹니다. Vercel의 Composition Patterns를 Mandu 컨텍스트로 변환하여 적용합니다.
17
+
18
+ ## When to Apply
19
+
20
+ Reference these guidelines when:
21
+ - Designing Island component architecture
22
+ - Managing shared state between Islands
23
+ - Building reusable component APIs
24
+ - Refactoring components with boolean prop proliferation
25
+ - Working with compound components or context providers
26
+
27
+ ## Rule Categories by Priority
28
+
29
+ | Priority | Category | Impact | Prefix |
30
+ |----------|----------|--------|--------|
31
+ | 1 | Component Architecture | HIGH | `comp-arch-` |
32
+ | 2 | State Management | HIGH | `comp-state-` |
33
+ | 3 | Island Patterns | MEDIUM | `comp-island-` |
34
+ | 4 | Implementation Patterns | MEDIUM | `comp-pattern-` |
35
+
36
+ ## Quick Reference
37
+
38
+ ### 1. Component Architecture (HIGH)
39
+
40
+ - `comp-arch-avoid-boolean-props` - Use composition instead of boolean customization
41
+ - `comp-arch-compound-components` - Structure Islands as compound components
42
+ - `comp-arch-explicit-variants` - Create explicit variant components
43
+
44
+ ### 2. State Management (HIGH)
45
+
46
+ - `comp-state-context-interface` - Define generic state/actions/meta interface
47
+ - `comp-state-lift-state` - Move state into provider for sibling access
48
+ - `comp-state-decouple-impl` - Provider is the only place knowing implementation
49
+
50
+ ### 3. Island Patterns (MEDIUM)
51
+
52
+ - `comp-island-compound` - Compose Islands with shared context
53
+ - `comp-island-event` - Communicate between Islands with useIslandEvent
54
+ - `comp-island-slot-split` - Separate server logic (slot) from client (Island)
55
+
56
+ ### 4. Implementation Patterns (MEDIUM)
57
+
58
+ - `comp-pattern-children` - Use children for composition over render props
59
+ - `comp-pattern-provider-boundary` - Understand provider boundary vs visual nesting
60
+
61
+ ## Core Principle
62
+
63
+ **Lift state, compose internals, make state dependency-injectable.**
64
+
65
+ ```
66
+ ┌─────────────────────────────────────────┐
67
+ │ Provider (state + actions + meta) │
68
+ │ ┌───────────────────────────────────┐ │
69
+ │ │ Composer.Frame │ │
70
+ │ │ ┌─────────┐ ┌─────────────────┐ │ │
71
+ │ │ │ Input │ │ Footer │ │ │
72
+ │ │ └─────────┘ │ ┌─────┐ ┌─────┐ │ │ │
73
+ │ │ │ │Emoji│ │Send │ │ │ │
74
+ │ │ │ └─────┘ └─────┘ │ │ │
75
+ │ │ └─────────────────┘ │ │
76
+ │ └───────────────────────────────────┘ │
77
+ │ ┌───────────────┐ ← Outside Frame │
78
+ │ │ Preview │ but inside │
79
+ │ └───────────────┘ Provider! │
80
+ └─────────────────────────────────────────┘
81
+ ```
82
+
83
+ ## How to Use
84
+
85
+ Read individual rule files for detailed explanations:
86
+
87
+ ```
88
+ rules/comp-arch-compound-components.md
89
+ rules/comp-state-context-interface.md
90
+ rules/comp-island-event.md
91
+ ```
@@ -1,13 +1,13 @@
1
- {
2
- "version": "1.0.0",
3
- "organization": "Mandu Framework",
4
- "date": "February 2026",
5
- "abstract": "Mandu 애플리케이션을 위한 React 컴포지션 패턴 가이드. Island 컴파운드 컴포넌트, state/actions/meta 인터페이스, Provider 패턴, useIslandEvent를 통한 Island 간 통신, slot-client 분리 패턴을 다룹니다. Vercel Composition Patterns 기반으로 Mandu 컨텍스트에 맞게 변환되었습니다.",
6
- "references": [
7
- "https://react.dev/learn/passing-data-deeply-with-context",
8
- "https://react.dev/learn/scaling-up-with-reducer-and-context",
9
- "https://www.patterns.dev/react/compound-pattern",
10
- "https://kentcdodds.com/blog/compound-components-with-react-hooks"
11
- ],
12
- "tags": ["composition", "compound", "context", "state", "island", "mandu"]
13
- }
1
+ {
2
+ "version": "1.0.0",
3
+ "organization": "Mandu Framework",
4
+ "date": "February 2026",
5
+ "abstract": "Mandu 애플리케이션을 위한 React 컴포지션 패턴 가이드. Island 컴파운드 컴포넌트, state/actions/meta 인터페이스, Provider 패턴, useIslandEvent를 통한 Island 간 통신, slot-client 분리 패턴을 다룹니다. Vercel Composition Patterns 기반으로 Mandu 컨텍스트에 맞게 변환되었습니다.",
6
+ "references": [
7
+ "https://react.dev/learn/passing-data-deeply-with-context",
8
+ "https://react.dev/learn/scaling-up-with-reducer-and-context",
9
+ "https://www.patterns.dev/react/compound-pattern",
10
+ "https://kentcdodds.com/blog/compound-components-with-react-hooks"
11
+ ],
12
+ "tags": ["composition", "compound", "context", "state", "island", "mandu"]
13
+ }
@@ -1,26 +1,26 @@
1
- # Sections
2
-
3
- This file defines all sections, their ordering, impact levels, and descriptions.
4
- The section ID (in parentheses) is the filename prefix used to group rules.
5
-
6
- ---
7
-
8
- ## 1. Component Architecture (comp-arch)
9
-
10
- **Impact:** HIGH
11
- **Description:** Boolean props 대신 컴포지션 사용, 컴파운드 컴포넌트 구조화. 코드베이스가 확장됨에 따라 유지보수성에 큰 영향을 미칩니다.
12
-
13
- ## 2. State Management (comp-state)
14
-
15
- **Impact:** HIGH
16
- **Description:** state/actions/meta 인터페이스 정의, Provider를 통한 의존성 주입. 같은 UI를 다양한 상태 구현과 함께 재사용할 수 있게 합니다.
17
-
18
- ## 3. Island Patterns (comp-island)
19
-
20
- **Impact:** MEDIUM
21
- **Description:** Mandu Island 특화 패턴. 컴파운드 Island, Island 간 이벤트 통신, slot-client 분리를 다룹니다.
22
-
23
- ## 4. Implementation Patterns (comp-pattern)
24
-
25
- **Impact:** MEDIUM
26
- **Description:** children 활용, Provider 경계 이해 등 구현 세부 사항. 올바른 패턴 적용으로 유연성을 확보합니다.
1
+ # Sections
2
+
3
+ This file defines all sections, their ordering, impact levels, and descriptions.
4
+ The section ID (in parentheses) is the filename prefix used to group rules.
5
+
6
+ ---
7
+
8
+ ## 1. Component Architecture (comp-arch)
9
+
10
+ **Impact:** HIGH
11
+ **Description:** Boolean props 대신 컴포지션 사용, 컴파운드 컴포넌트 구조화. 코드베이스가 확장됨에 따라 유지보수성에 큰 영향을 미칩니다.
12
+
13
+ ## 2. State Management (comp-state)
14
+
15
+ **Impact:** HIGH
16
+ **Description:** state/actions/meta 인터페이스 정의, Provider를 통한 의존성 주입. 같은 UI를 다양한 상태 구현과 함께 재사용할 수 있게 합니다.
17
+
18
+ ## 3. Island Patterns (comp-island)
19
+
20
+ **Impact:** MEDIUM
21
+ **Description:** Mandu Island 특화 패턴. 컴파운드 Island, Island 간 이벤트 통신, slot-client 분리를 다룹니다.
22
+
23
+ ## 4. Implementation Patterns (comp-pattern)
24
+
25
+ **Impact:** MEDIUM
26
+ **Description:** children 활용, Provider 경계 이해 등 구현 세부 사항. 올바른 패턴 적용으로 유연성을 확보합니다.
@@ -1,77 +1,77 @@
1
- # Rule Template
2
-
3
- Use this template when creating new rules for mandu-composition.
4
-
5
- ---
6
-
7
- ```markdown
8
- ---
9
- title: Rule Title Here
10
- impact: HIGH | MEDIUM | LOW
11
- impactDescription: 영향 설명 (예: "enables flexible composition")
12
- tags: composition, tag1, tag2
13
- ---
14
-
15
- ## Rule Title Here
16
-
17
- **Impact: {LEVEL} ({impactDescription})**
18
-
19
- 규칙의 목적과 아키텍처적 영향을 설명합니다.
20
-
21
- **Incorrect (문제가 되는 패턴):**
22
-
23
- \`\`\`tsx
24
- // ❌ Boolean props로 기능 추가
25
- function Composer({
26
- showAttachments,
27
- showFormatting,
28
- showEmojis,
29
- isCompact,
30
- isReadOnly,
31
- }: Props) {
32
- return (
33
- <form>
34
- {!isReadOnly && <Input />}
35
- {showAttachments && <Attachments />}
36
- {showFormatting && <Formatting />}
37
- {showEmojis && <Emojis />}
38
- </form>
39
- );
40
- }
41
- ```
42
-
43
- **Correct (컴포지션 패턴):**
44
-
45
- \`\`\`tsx
46
- // ✅ 컴포지션으로 유연하게 구성
47
- <Composer.Provider state={state} actions={actions}>
48
- <Composer.Frame>
49
- <Composer.Input />
50
- <Composer.Footer>
51
- <Composer.Emojis />
52
- <Composer.Submit />
53
- </Composer.Footer>
54
- </Composer.Frame>
55
- </Composer.Provider>
56
- \`\`\`
57
-
58
- ## Mandu Context
59
-
60
- Mandu Island에서 이 패턴을 적용하는 방법을 설명합니다.
61
-
62
- Reference: [관련 문서 링크](https://example.com)
63
- ```
64
-
65
- ---
66
-
67
- ## Naming Convention
68
-
69
- - 파일명: `comp-{category}-{rule-name}.md`
70
- - 예시: `comp-arch-compound-components.md`, `comp-state-context-interface.md`
71
-
72
- ## Core Principle
73
-
74
- **Lift state, compose internals, make state dependency-injectable.**
75
-
76
- UI는 조합 가능한 조각들이고, 상태는 Provider가 주입합니다.
77
- Provider를 바꾸면 UI는 그대로 유지됩니다.
1
+ # Rule Template
2
+
3
+ Use this template when creating new rules for mandu-composition.
4
+
5
+ ---
6
+
7
+ ```markdown
8
+ ---
9
+ title: Rule Title Here
10
+ impact: HIGH | MEDIUM | LOW
11
+ impactDescription: 영향 설명 (예: "enables flexible composition")
12
+ tags: composition, tag1, tag2
13
+ ---
14
+
15
+ ## Rule Title Here
16
+
17
+ **Impact: {LEVEL} ({impactDescription})**
18
+
19
+ 규칙의 목적과 아키텍처적 영향을 설명합니다.
20
+
21
+ **Incorrect (문제가 되는 패턴):**
22
+
23
+ \`\`\`tsx
24
+ // ❌ Boolean props로 기능 추가
25
+ function Composer({
26
+ showAttachments,
27
+ showFormatting,
28
+ showEmojis,
29
+ isCompact,
30
+ isReadOnly,
31
+ }: Props) {
32
+ return (
33
+ <form>
34
+ {!isReadOnly && <Input />}
35
+ {showAttachments && <Attachments />}
36
+ {showFormatting && <Formatting />}
37
+ {showEmojis && <Emojis />}
38
+ </form>
39
+ );
40
+ }
41
+ ```
42
+
43
+ **Correct (컴포지션 패턴):**
44
+
45
+ \`\`\`tsx
46
+ // ✅ 컴포지션으로 유연하게 구성
47
+ <Composer.Provider state={state} actions={actions}>
48
+ <Composer.Frame>
49
+ <Composer.Input />
50
+ <Composer.Footer>
51
+ <Composer.Emojis />
52
+ <Composer.Submit />
53
+ </Composer.Footer>
54
+ </Composer.Frame>
55
+ </Composer.Provider>
56
+ \`\`\`
57
+
58
+ ## Mandu Context
59
+
60
+ Mandu Island에서 이 패턴을 적용하는 방법을 설명합니다.
61
+
62
+ Reference: [관련 문서 링크](https://example.com)
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Naming Convention
68
+
69
+ - 파일명: `comp-{category}-{rule-name}.md`
70
+ - 예시: `comp-arch-compound-components.md`, `comp-state-context-interface.md`
71
+
72
+ ## Core Principle
73
+
74
+ **Lift state, compose internals, make state dependency-injectable.**
75
+
76
+ UI는 조합 가능한 조각들이고, 상태는 Provider가 주입합니다.
77
+ Provider를 바꾸면 UI는 그대로 유지됩니다.