@kood/claude-code 0.5.3 → 0.5.5

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 (125) hide show
  1. package/dist/index.js +552 -340
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/document-writer.md +73 -306
  4. package/templates/.claude/instructions/agent-patterns/index.md +7 -7
  5. package/templates/.claude/instructions/document-templates/ralph-templates.md +71 -0
  6. package/templates/.claude/instructions/index.md +14 -14
  7. package/templates/.claude/instructions/multi-agent/agent-roster.md +14 -14
  8. package/templates/.claude/instructions/multi-agent/index.md +4 -4
  9. package/templates/.claude/skills/docs-creator/AGENTS.md +54 -176
  10. package/templates/.claude/skills/docs-creator/SKILL.md +98 -464
  11. package/templates/.claude/skills/docs-refactor/AGENTS.md +61 -190
  12. package/templates/.claude/skills/docs-refactor/SKILL.md +67 -443
  13. package/templates/.claude/skills/execute/SKILL.md +540 -13
  14. package/templates/.claude/skills/plan/SKILL.md +84 -18
  15. package/templates/.claude/skills/ralph/SKILL.md +17 -14
  16. package/templates/.claude/skills/refactor/AGENTS.md +269 -0
  17. package/templates/.claude/skills/refactor/SKILL.md +424 -66
  18. package/templates/.claude/skills/stitch-design/README.md +34 -0
  19. package/templates/.claude/skills/stitch-design/SKILL.md +213 -0
  20. package/templates/.claude/skills/stitch-design/examples/DESIGN.md +154 -0
  21. package/templates/.claude/skills/stitch-loop/README.md +54 -0
  22. package/templates/.claude/skills/stitch-loop/SKILL.md +316 -0
  23. package/templates/.claude/skills/stitch-loop/examples/SITE.md +73 -0
  24. package/templates/.claude/skills/stitch-loop/examples/next-prompt.md +25 -0
  25. package/templates/.claude/skills/stitch-loop/resources/baton-schema.md +61 -0
  26. package/templates/.claude/skills/stitch-loop/resources/site-template.md +104 -0
  27. package/templates/.claude/skills/stitch-react/README.md +36 -0
  28. package/templates/.claude/skills/stitch-react/SKILL.md +323 -0
  29. package/templates/.claude/skills/stitch-react/examples/gold-standard-card.tsx +88 -0
  30. package/templates/.claude/skills/stitch-react/package-lock.json +231 -0
  31. package/templates/.claude/skills/stitch-react/package.json +16 -0
  32. package/templates/.claude/skills/stitch-react/resources/architecture-checklist.md +15 -0
  33. package/templates/.claude/skills/stitch-react/resources/component-template.tsx +37 -0
  34. package/templates/.claude/skills/stitch-react/resources/stitch-api-reference.md +14 -0
  35. package/templates/.claude/skills/stitch-react/resources/style-guide.json +24 -0
  36. package/templates/.claude/skills/stitch-react/scripts/fetch-stitch.sh +30 -0
  37. package/templates/.claude/skills/stitch-react/scripts/validate.js +77 -0
  38. package/templates/hono/CLAUDE.md +28 -28
  39. package/templates/hono/docs/architecture.md +24 -24
  40. package/templates/hono/docs/deployment/cloudflare.md +18 -18
  41. package/templates/hono/docs/deployment/docker.md +13 -13
  42. package/templates/hono/docs/deployment/index.md +19 -19
  43. package/templates/hono/docs/deployment/railway.md +32 -32
  44. package/templates/hono/docs/deployment/vercel.md +29 -29
  45. package/templates/hono/docs/guides/conventions.md +57 -57
  46. package/templates/hono/docs/guides/env-setup.md +47 -47
  47. package/templates/hono/docs/guides/getting-started.md +27 -27
  48. package/templates/hono/docs/library/hono/error-handling.md +11 -11
  49. package/templates/hono/docs/library/hono/index.md +4 -4
  50. package/templates/hono/docs/library/hono/middleware.md +18 -18
  51. package/templates/hono/docs/library/hono/rpc.md +7 -7
  52. package/templates/hono/docs/library/hono/validation.md +6 -6
  53. package/templates/hono/docs/library/prisma/cloudflare-d1.md +29 -29
  54. package/templates/hono/docs/library/prisma/config.md +16 -16
  55. package/templates/hono/docs/library/prisma/index.md +32 -32
  56. package/templates/hono/docs/library/t3-env/index.md +22 -22
  57. package/templates/hono/docs/library/zod/index.md +31 -31
  58. package/templates/nextjs/CLAUDE.md +54 -54
  59. package/templates/nextjs/docs/architecture.md +146 -146
  60. package/templates/nextjs/docs/design.md +183 -183
  61. package/templates/nextjs/docs/guides/conventions.md +86 -86
  62. package/templates/nextjs/docs/guides/getting-started.md +28 -28
  63. package/templates/nextjs/docs/guides/routes.md +32 -32
  64. package/templates/nextjs/docs/library/better-auth/index.md +70 -70
  65. package/templates/nextjs/docs/library/nextjs/app-router.md +43 -43
  66. package/templates/nextjs/docs/library/nextjs/caching.md +73 -73
  67. package/templates/nextjs/docs/library/nextjs/index.md +51 -51
  68. package/templates/nextjs/docs/library/nextjs/middleware.md +41 -41
  69. package/templates/nextjs/docs/library/nextjs/route-handlers.md +31 -31
  70. package/templates/nextjs/docs/library/nextjs/server-actions.md +34 -34
  71. package/templates/nextjs/docs/library/prisma/cloudflare-d1.md +20 -20
  72. package/templates/nextjs/docs/library/prisma/config.md +18 -18
  73. package/templates/nextjs/docs/library/prisma/crud.md +17 -17
  74. package/templates/nextjs/docs/library/prisma/index.md +18 -18
  75. package/templates/nextjs/docs/library/prisma/relations.md +16 -16
  76. package/templates/nextjs/docs/library/prisma/schema.md +23 -23
  77. package/templates/nextjs/docs/library/prisma/setup.md +6 -6
  78. package/templates/nextjs/docs/library/prisma/transactions.md +10 -10
  79. package/templates/nextjs/docs/library/tanstack-query/index.md +6 -6
  80. package/templates/nextjs/docs/library/tanstack-query/invalidation.md +20 -20
  81. package/templates/nextjs/docs/library/tanstack-query/optimistic-updates.md +4 -4
  82. package/templates/nextjs/docs/library/tanstack-query/use-mutation.md +15 -15
  83. package/templates/nextjs/docs/library/tanstack-query/use-query.md +22 -22
  84. package/templates/nextjs/docs/library/zod/complex-types.md +11 -11
  85. package/templates/nextjs/docs/library/zod/index.md +8 -8
  86. package/templates/nextjs/docs/library/zod/transforms.md +11 -11
  87. package/templates/nextjs/docs/library/zod/validation.md +9 -9
  88. package/templates/npx/CLAUDE.md +38 -38
  89. package/templates/npx/docs/library/commander/index.md +12 -12
  90. package/templates/npx/docs/library/fs-extra/index.md +9 -9
  91. package/templates/npx/docs/library/prompts/index.md +3 -3
  92. package/templates/npx/docs/references/patterns.md +12 -12
  93. package/templates/tanstack-start/CLAUDE.md +54 -54
  94. package/templates/tanstack-start/docs/architecture.md +128 -128
  95. package/templates/tanstack-start/docs/design.md +169 -169
  96. package/templates/tanstack-start/docs/guides/conventions.md +43 -43
  97. package/templates/tanstack-start/docs/guides/env-setup.md +35 -35
  98. package/templates/tanstack-start/docs/guides/getting-started.md +19 -19
  99. package/templates/tanstack-start/docs/guides/hooks.md +45 -45
  100. package/templates/tanstack-start/docs/guides/routes.md +54 -54
  101. package/templates/tanstack-start/docs/guides/services.md +45 -45
  102. package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +19 -19
  103. package/templates/tanstack-start/docs/library/prisma/config.md +16 -16
  104. package/templates/tanstack-start/docs/library/prisma/crud.md +17 -17
  105. package/templates/tanstack-start/docs/library/prisma/relations.md +16 -16
  106. package/templates/tanstack-start/docs/library/prisma/schema.md +23 -23
  107. package/templates/tanstack-start/docs/library/prisma/setup.md +6 -6
  108. package/templates/tanstack-start/docs/library/prisma/transactions.md +10 -10
  109. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +19 -19
  110. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +4 -4
  111. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +14 -14
  112. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +21 -21
  113. package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +9 -9
  114. package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +11 -11
  115. package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +17 -17
  116. package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +5 -5
  117. package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +10 -10
  118. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +8 -8
  119. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +9 -9
  120. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +6 -6
  121. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +18 -18
  122. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +4 -4
  123. package/templates/tanstack-start/docs/library/zod/complex-types.md +11 -11
  124. package/templates/tanstack-start/docs/library/zod/transforms.md +11 -11
  125. package/templates/tanstack-start/docs/library/zod/validation.md +9 -9
@@ -1,15 +1,14 @@
1
1
  # Docs Refactor - Agent Coordination
2
2
 
3
- 문서 리팩토링 스킬에서 에이전트 활용 가이드.
3
+ 문서 리팩토링 에이전트 활용.
4
4
 
5
5
  ---
6
6
 
7
7
  <agents_reference>
8
8
 
9
- 다중 에이전트 구조:
10
- - 에이전트 목록: @../../instructions/multi-agent/agent-roster.md
11
- - 조정 가이드: @../../instructions/multi-agent/coordination-guide.md
12
- - 실행 패턴: @../../instructions/multi-agent/execution-patterns.md
9
+ @../../instructions/multi-agent/agent-roster.md
10
+ @../../instructions/multi-agent/coordination-guide.md
11
+ @../../instructions/multi-agent/execution-patterns.md
13
12
 
14
13
  </agents_reference>
15
14
 
@@ -17,14 +16,11 @@
17
16
 
18
17
  <recommended_agents>
19
18
 
20
- ## 추천 에이전트
21
-
22
19
  | 에이전트 | 모델 | 용도 |
23
20
  |---------|------|------|
24
- | **document-writer** | sonnet | 문서 리팩토링, 구조 개선, 토큰 최적화 |
25
- | **analyst** | sonnet | 문서 분석, 중복 식별, 개선점 도출 |
26
- | **code-reviewer** | opus | 리팩토링 품질 검증, Before/After 비교 |
27
- | **explore** | haiku | 여러 문서 병렬 분석 |
21
+ | **document-writer** | sonnet | 리팩토링, 구조 개선, 토큰 최적화 |
22
+ | **analyst** | sonnet | 중복 식별, 개선점 도출 |
23
+ | **code-reviewer** | opus | 품질 검증, Before/After 비교 |
28
24
 
29
25
  </recommended_agents>
30
26
 
@@ -34,124 +30,48 @@
34
30
 
35
31
  ## 조정 패턴
36
32
 
37
- ### 패턴 1: 병렬 문서 분석
33
+ ### 패턴 1-3: 기본 조정
38
34
 
39
- **용도:** 여러 문서의 개선점을 동시에 분석
35
+ | 패턴 | 실행 |
36
+ |------|------|
37
+ | **병렬 분석** | 여러 analyst → 각 문서 동시 분석 |
38
+ | **분석→리팩→검증** | analyst → document-writer → code-reviewer |
39
+ | **병렬 리팩토링** | 여러 document-writer → 독립 문서 동시 개선 |
40
40
 
41
41
  ```typescript
42
- // CLAUDE.md, SKILL.md, README.md 동시 분석
43
- Task(
44
- subagent_type="analyst",
45
- model="sonnet",
46
- prompt="CLAUDE.md 분석: 중복, 장황한 설명, XML 태그 누락 확인"
47
- )
48
-
49
- Task(
50
- subagent_type="analyst",
51
- model="sonnet",
52
- prompt="SKILL.md 분석: 토큰 효율, 예시 품질 검토"
53
- )
54
-
55
- Task(
56
- subagent_type="analyst",
57
- model="sonnet",
58
- prompt="README.md 분석: 불필요한 섹션, 구조 개선점"
59
- )
42
+ // 병렬 분석
43
+ Task(subagent_type="analyst", model="sonnet", prompt="CLAUDE.md: 중복, 장황 식별")
44
+ Task(subagent_type="analyst", model="sonnet", prompt="SKILL.md: 토큰 효율 분석")
45
+
46
+ // 분석→리팩→검증
47
+ Task(subagent_type="analyst", model="sonnet", prompt="문서 분석")
48
+ Task(subagent_type="document-writer", model="sonnet", prompt="분석 기반 리팩토링")
49
+ Task(subagent_type="code-reviewer", model="opus", prompt="Before/After 검증")
60
50
  ```
61
51
 
62
- **효과:** 순차 분석 대비 3배 빠름
63
-
64
52
  ---
65
53
 
66
- ### 패턴 2: 분석 → 리팩토링 → 검증
54
+ ### 패턴 4: @imports 추출
67
55
 
68
- **용도:** 고품질 리팩토링
56
+ **핵심:** 중복 제거 및 70-80% 토큰 절감
69
57
 
70
58
  ```typescript
71
- // Step 1: 문서 분석
72
- Task(
73
- subagent_type="analyst",
74
- model="sonnet",
75
- prompt="CLAUDE.md 분석: 중복, 토큰 효율, 구조 문제 식별"
76
- )
77
-
78
- // Step 2: 리팩토링 실행
79
- Task(
80
- subagent_type="document-writer",
81
- model="sonnet",
82
- prompt="분석 결과 기반 CLAUDE.md 리팩토링: 표 형식, @imports 분리"
83
- )
84
-
85
- // Step 3: 품질 검증
86
- Task(
87
- subagent_type="code-reviewer",
88
- model="opus",
89
- prompt="Before/After 비교: 토큰 50% 감소 확인, 정보 보존 검증"
90
- )
91
- ```
92
-
93
- ---
94
-
95
- ### 패턴 3: 병렬 리팩토링
96
-
97
- **용도:** 독립적인 문서 동시 개선
59
+ // 1. 중복 식별
60
+ Task(subagent_type="analyst", model="sonnet", prompt="여러 문서 중복 식별")
98
61
 
99
- ```typescript
100
- // 여러 문서 동시 리팩토링
101
- Task(
102
- subagent_type="document-writer",
103
- model="sonnet",
104
- prompt="CLAUDE.md 리팩토링: @imports 분리, tech_stack 표 형식"
105
- )
106
-
107
- Task(
108
- subagent_type="document-writer",
109
- model="sonnet",
110
- prompt="SKILL.md 리팩토링: 설명 제거, 코드 예시 중심"
111
- )
112
-
113
- Task(
114
- subagent_type="document-writer",
115
- model="sonnet",
116
- prompt="README.md 리팩토링: 간결화, 필수 정보만 유지"
117
- )
62
+ // 2. 공통 파일 작성 + 원본 리팩토링 (병렬)
63
+ Task(subagent_type="document-writer", model="sonnet", prompt="instructions/git-rules.md 작성")
64
+ Task(subagent_type="document-writer", model="sonnet", prompt="CLAUDE.md: @imports 참조로 교체")
65
+ Task(subagent_type="document-writer", model="sonnet", prompt="SKILL.md: @imports 참조로 교체")
118
66
  ```
119
67
 
120
- ---
121
-
122
- ### 패턴 4: @imports 추출 전략
123
-
124
- **용도:** 중복 제거 및 토큰 절감
125
-
126
- ```typescript
127
- // Step 1: 중복 내용 식별
128
- Task(
129
- subagent_type="analyst",
130
- model="sonnet",
131
- prompt="여러 문서에서 반복되는 Git 규칙, 타입 규칙 식별"
132
- )
133
-
134
- // Step 2: 공통 파일 작성 + 원본 문서 리팩토링 (병렬)
135
- Task(
136
- subagent_type="document-writer",
137
- model="sonnet",
138
- prompt="instructions/git-rules.md 작성: Git 규칙 통합"
139
- )
140
-
141
- Task(
142
- subagent_type="document-writer",
143
- model="sonnet",
144
- prompt="CLAUDE.md 리팩토링: @instructions/git-rules.md 참조"
145
- )
146
-
147
- Task(
148
- subagent_type="document-writer",
149
- model="sonnet",
150
- prompt="SKILL.md 리팩토링: @instructions/git-rules.md 참조"
151
- )
152
- ```
68
+ **추출 대상 예시:**
153
69
 
154
- **효과:** 70-80% 토큰 절감
70
+ | 중복 내용 | 공통 파일 | 참조 문서 |
71
+ |-----------|----------|-----------|
72
+ | Git 규칙 | `instructions/git-rules.md` | CLAUDE.md, SKILL.md |
73
+ | 타입 규칙 | `instructions/typescript-rules.md` | CLAUDE.md, 여러 SKILL.md |
74
+ | 라이브러리 패턴 | `docs/library/[lib]/patterns.md` | CLAUDE.md |
155
75
 
156
76
  </coordination_patterns>
157
77
 
@@ -159,14 +79,13 @@ Task(
159
79
 
160
80
  <model_routing>
161
81
 
162
- ## 모델 라우팅
82
+ @../docs-creator/AGENTS.md#model_routing
163
83
 
164
- | 작업 | 모델 | 이유 |
165
- |------|------|------|
166
- | **문서 분석** | sonnet | 중복, 구조 문제 식별 |
167
- | **간단한 리팩토링** | sonnet | 표 형식 변환, 설명 제거 |
168
- | **복잡한 리팩토링** | sonnet | @imports 분리, XML 태그 구조화 |
169
- | **품질 검증** | opus | Before/After 비교, 정보 보존 확인 |
84
+ | 작업 | 모델 |
85
+ |------|------|
86
+ | 문서 분석 | sonnet |
87
+ | 리팩토링 | sonnet |
88
+ | 품질 검증 | opus |
170
89
 
171
90
  </model_routing>
172
91
 
@@ -176,64 +95,33 @@ Task(
176
95
 
177
96
  ## 실전 예시
178
97
 
179
- ### 예시 1: 대규모 문서 리팩토링
98
+ ### 대규모 리팩토링
180
99
 
181
100
  ```typescript
182
101
  // Phase 1: 병렬 분석
183
- Task(subagent_type="analyst", model="sonnet",
184
- prompt="CLAUDE.md: 중복, 장황한 설명 식별")
185
- Task(subagent_type="analyst", model="sonnet",
186
- prompt="SKILL.md: 토큰 효율 분석")
187
- Task(subagent_type="analyst", model="sonnet",
188
- prompt="README.md: 불필요한 섹션 식별")
102
+ Task(subagent_type="analyst", model="sonnet", prompt="CLAUDE.md: 중복, 장황 식별")
103
+ Task(subagent_type="analyst", model="sonnet", prompt="SKILL.md: 토큰 효율 분석")
189
104
 
190
105
  // Phase 2: 병렬 리팩토링
191
- Task(subagent_type="document-writer", model="sonnet",
192
- prompt="CLAUDE.md 리팩토링: @imports 분리, 표 형식")
193
- Task(subagent_type="document-writer", model="sonnet",
194
- prompt="SKILL.md 리팩토링: 코드 중심, 설명 제거")
195
- Task(subagent_type="document-writer", model="sonnet",
196
- prompt="README.md 리팩토링: 간결화")
106
+ Task(subagent_type="document-writer", model="sonnet", prompt="CLAUDE.md: @imports, 표 형식")
107
+ Task(subagent_type="document-writer", model="sonnet", prompt="SKILL.md: 코드 중심, 설명 제거")
197
108
 
198
109
  // Phase 3: 검증
199
- Task(subagent_type="code-reviewer", model="opus",
200
- prompt="전체 문서 토큰 50% 감소 확인, 정보 보존 검증")
110
+ Task(subagent_type="code-reviewer", model="opus", prompt="토큰 50% 감소 확인")
201
111
  ```
202
112
 
203
113
  ---
204
114
 
205
- ### 예시 2: @imports 중복 제거
115
+ ### @imports 중복 제거
206
116
 
207
117
  ```typescript
208
118
  // Step 1: 중복 분석
209
- Task(subagent_type="analyst", model="sonnet",
210
- prompt="Git 규칙 중복 분석: CLAUDE.md, SKILL.md 비교")
119
+ Task(subagent_type="analyst", model="sonnet", prompt="Git 규칙 중복 분석")
211
120
 
212
121
  // Step 2: 공통 파일 + 리팩토링 (병렬)
213
- Task(subagent_type="document-writer", model="sonnet",
214
- prompt="instructions/git-rules.md 작성")
215
- Task(subagent_type="document-writer", model="sonnet",
216
- prompt="CLAUDE.md: @instructions/git-rules.md 참조")
217
- Task(subagent_type="document-writer", model="sonnet",
218
- prompt="SKILL.md: @instructions/git-rules.md 참조")
219
- ```
220
-
221
- ---
222
-
223
- ### 예시 3: 토큰 최적화 집중
224
-
225
- ```typescript
226
- // Step 1: 분석
227
- Task(subagent_type="analyst", model="sonnet",
228
- prompt="CLAUDE.md 토큰 분석: 장황한 설명, 반복 표현")
229
-
230
- // Step 2: 리팩토링
231
- Task(subagent_type="document-writer", model="sonnet",
232
- prompt="표 형식 변환, 단어 최적화, 코드 중심")
233
-
234
- // Step 3: 검증
235
- Task(subagent_type="code-reviewer", model="opus",
236
- prompt="Before 650 토큰 → After 280 토큰 확인")
122
+ Task(subagent_type="document-writer", model="sonnet", prompt="instructions/git-rules.md 작성")
123
+ Task(subagent_type="document-writer", model="sonnet", prompt="CLAUDE.md: @imports 참조")
124
+ Task(subagent_type="document-writer", model="sonnet", prompt="SKILL.md: @imports 참조")
237
125
  ```
238
126
 
239
127
  </practical_examples>
@@ -242,32 +130,15 @@ Task(subagent_type="code-reviewer", model="opus",
242
130
 
243
131
  <best_practices>
244
132
 
245
- ## 모범 사례
246
-
247
- ### 작업 시작 체크
248
-
249
- - [ ] 여러 문서 리팩토링? → 병렬 analyst + document-writer
250
- - [ ] 중복 내용 있는가? @imports 분리 전략
251
- - [ ] 토큰 500줄 초과? → 우선 리팩토링
252
- - [ ] 품질 중요한가? code-reviewer 검증 필수
253
-
254
- ### 에이전트 활용 원칙
255
-
256
- **DO:**
257
- - 독립 문서 → 병렬 리팩토링
258
- - 중복 발견 → @imports 분리 (병렬)
259
- - 토큰 최적화 → sonnet 사용
260
- - 검증 필수 → opus로 Before/After 확인
261
-
262
- **DON'T:**
263
- - 정보 손실 (토큰 절감보다 정보 우선)
264
- - 검증 없이 완료
265
- - 순차 리팩토링 (병렬 가능한 경우)
266
-
267
- ### 토큰 절감 목표
133
+ | 항목 | 액션 |
134
+ |------|------|
135
+ | **여러 문서** | 병렬 analyst + document-writer |
136
+ | **중복 발견** | @imports 분리 (패턴 4) |
137
+ | **토큰 500줄+** | 우선 리팩토링 |
138
+ | **품질 중요** | code-reviewer 검증 필수 |
139
+ | **독립 문서** | 병렬 리팩토링 |
140
+ | **정보 보존** | 토큰 절감보다 우선 |
268
141
 
269
- | Before | After | 절감률 |
270
- |--------|-------|--------|
271
- | 500줄+ | 250줄- | 50%+ |
142
+ **목표:** Before 500줄+ After 250줄- (50%+ 절감)
272
143
 
273
144
  </best_practices>