@su-record/vibe 2.4.71 → 2.4.74

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 (120) hide show
  1. package/CLAUDE.md +216 -215
  2. package/README.md +4 -4
  3. package/agents/research/best-practices-agent.md +13 -13
  4. package/agents/research/codebase-patterns-agent.md +33 -33
  5. package/agents/research/framework-docs-agent.md +23 -23
  6. package/agents/research/security-advisory-agent.md +29 -29
  7. package/agents/review/architecture-reviewer.md +31 -31
  8. package/agents/review/complexity-reviewer.md +21 -21
  9. package/agents/review/data-integrity-reviewer.md +29 -29
  10. package/agents/review/git-history-reviewer.md +24 -24
  11. package/agents/review/performance-reviewer.md +29 -29
  12. package/agents/review/python-reviewer.md +53 -53
  13. package/agents/review/rails-reviewer.md +40 -40
  14. package/agents/review/react-reviewer.md +40 -40
  15. package/agents/review/security-reviewer.md +29 -29
  16. package/agents/review/simplicity-reviewer.md +24 -24
  17. package/agents/review/test-coverage-reviewer.md +31 -31
  18. package/agents/review/typescript-reviewer.md +41 -41
  19. package/commands/vibe.analyze.md +103 -7
  20. package/commands/vibe.reason.md +106 -0
  21. package/commands/vibe.review.md +123 -38
  22. package/commands/vibe.run.md +286 -221
  23. package/commands/vibe.spec.md +293 -173
  24. package/commands/vibe.utils.md +104 -3
  25. package/commands/vibe.verify.md +179 -86
  26. package/dist/cli/detect.js +40 -40
  27. package/dist/cli/detect.js.map +1 -1
  28. package/dist/cli/index.d.ts +1 -1
  29. package/dist/cli/index.js +1 -1
  30. package/dist/cli/llm.js +5 -5
  31. package/dist/cli/llm.js.map +1 -1
  32. package/dist/cli/setup.js +3 -3
  33. package/dist/cli/setup.js.map +1 -1
  34. package/dist/lib/ContextCompressor.js +1 -1
  35. package/dist/lib/ContextCompressor.js.map +1 -1
  36. package/dist/lib/gemini-api.js +12 -12
  37. package/dist/lib/gemini-api.js.map +1 -1
  38. package/dist/lib/gemini-oauth.js +22 -22
  39. package/dist/lib/gemini-oauth.js.map +1 -1
  40. package/dist/lib/gemini-storage.js +3 -3
  41. package/dist/lib/gemini-storage.js.map +1 -1
  42. package/dist/lib/gpt-api.js +11 -11
  43. package/dist/lib/gpt-api.js.map +1 -1
  44. package/dist/lib/gpt-oauth.js +28 -28
  45. package/dist/lib/gpt-oauth.js.map +1 -1
  46. package/dist/lib/gpt-storage.js +3 -3
  47. package/dist/lib/gpt-storage.js.map +1 -1
  48. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  49. package/dist/orchestrator/orchestrator.js +4 -6
  50. package/dist/orchestrator/orchestrator.js.map +1 -1
  51. package/dist/tools/convention/analyzeComplexity.js +3 -3
  52. package/dist/tools/convention/analyzeComplexity.js.map +1 -1
  53. package/dist/tools/convention/applyQualityRules.js +1 -1
  54. package/dist/tools/convention/applyQualityRules.js.map +1 -1
  55. package/dist/tools/convention/checkCouplingCohesion.js +2 -2
  56. package/dist/tools/convention/checkCouplingCohesion.js.map +1 -1
  57. package/dist/tools/convention/suggestImprovements.js +1 -1
  58. package/dist/tools/convention/suggestImprovements.js.map +1 -1
  59. package/dist/tools/convention/validateCodeQuality.js +1 -1
  60. package/dist/tools/convention/validateCodeQuality.js.map +1 -1
  61. package/dist/tools/memory/autoSaveContext.js +1 -1
  62. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  63. package/dist/tools/memory/createMemoryTimeline.js +27 -27
  64. package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
  65. package/dist/tools/memory/deleteMemory.js +1 -1
  66. package/dist/tools/memory/deleteMemory.js.map +1 -1
  67. package/dist/tools/memory/getMemoryGraph.js +24 -24
  68. package/dist/tools/memory/getMemoryGraph.js.map +1 -1
  69. package/dist/tools/memory/getSessionContext.js +36 -36
  70. package/dist/tools/memory/getSessionContext.js.map +1 -1
  71. package/dist/tools/memory/linkMemories.js +21 -21
  72. package/dist/tools/memory/linkMemories.js.map +1 -1
  73. package/dist/tools/memory/prioritizeMemory.js +1 -1
  74. package/dist/tools/memory/prioritizeMemory.js.map +1 -1
  75. package/dist/tools/memory/restoreSessionContext.js +1 -1
  76. package/dist/tools/memory/restoreSessionContext.js.map +1 -1
  77. package/dist/tools/memory/searchMemories.js +1 -1
  78. package/dist/tools/memory/searchMemories.js.map +1 -1
  79. package/dist/tools/memory/searchMemoriesAdvanced.js +42 -42
  80. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  81. package/dist/tools/memory/startSession.js +2 -2
  82. package/dist/tools/memory/startSession.js.map +1 -1
  83. package/dist/tools/memory/updateMemory.js +1 -1
  84. package/dist/tools/memory/updateMemory.js.map +1 -1
  85. package/dist/tools/semantic/analyzeDependencyGraph.js +38 -38
  86. package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
  87. package/dist/tools/semantic/findReferences.js +1 -1
  88. package/dist/tools/semantic/findReferences.js.map +1 -1
  89. package/dist/tools/semantic/findSymbol.js +1 -1
  90. package/dist/tools/semantic/findSymbol.js.map +1 -1
  91. package/dist/tools/time/getCurrentTime.js +1 -1
  92. package/dist/tools/time/getCurrentTime.js.map +1 -1
  93. package/dist/tools/ui/previewUiAscii.js +2 -2
  94. package/dist/tools/ui/previewUiAscii.js.map +1 -1
  95. package/hooks/hooks.json +11 -2
  96. package/hooks/scripts/llm-orchestrate.js +1 -1
  97. package/hooks/scripts/utils.js +31 -6
  98. package/languages/csharp-unity.md +82 -83
  99. package/languages/dart-flutter.md +89 -88
  100. package/languages/go.md +76 -75
  101. package/languages/java-spring.md +85 -84
  102. package/languages/kotlin-android.md +64 -63
  103. package/languages/python-django.md +83 -82
  104. package/languages/python-fastapi.md +82 -81
  105. package/languages/rust.md +75 -74
  106. package/languages/swift-ios.md +73 -72
  107. package/languages/typescript-electron.md +70 -71
  108. package/languages/typescript-nextjs.md +93 -92
  109. package/languages/typescript-node.md +64 -63
  110. package/languages/typescript-nuxt.md +113 -112
  111. package/languages/typescript-react-native.md +82 -81
  112. package/languages/typescript-react.md +76 -75
  113. package/languages/typescript-tauri.md +74 -75
  114. package/languages/typescript-vue.md +73 -72
  115. package/package.json +1 -1
  116. package/skills/git-worktree.md +25 -25
  117. package/skills/multi-llm-orchestration.md +4 -6
  118. package/skills/priority-todos.md +39 -39
  119. package/skills/vibe-capabilities.md +2 -2
  120. package/vibe/config.json +2 -2
@@ -1,7 +1,7 @@
1
1
  // UI Preview tool - ASCII art visualization before development
2
2
  export const previewUiAsciiDefinition = {
3
3
  name: 'preview_ui_ascii',
4
- description: 'UI 만들어|페이지 개발|페이지 만들어|컴포넌트 작성|레이아웃|화면 구성|create page|build UI|design component|make page|develop page - Preview UI before coding',
4
+ description: 'create page|build UI|design component|make page|develop page|layout|screen design - Preview UI before coding',
5
5
  inputSchema: {
6
6
  type: 'object',
7
7
  properties: {
@@ -223,7 +223,7 @@ export async function previewUiAscii(args) {
223
223
  ascii_preview: preview.join('\n'),
224
224
  mobile_preview: responsive ? mobilePreview : null,
225
225
  components_count: components.length,
226
- message: '✅ 레이아웃으로 진행하시겠습니까? 승인하시면 코드 생성을 시작합니다.',
226
+ message: '✅ Proceed with this layout? Approve to start code generation.',
227
227
  action: 'preview_ui_ascii',
228
228
  status: 'awaiting_confirmation'
229
229
  };
@@ -1 +1 @@
1
- {"version":3,"file":"previewUiAscii.js","sourceRoot":"","sources":["../../../src/tools/ui/previewUiAscii.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"previewUiAscii.js","sourceRoot":"","sources":["../../../src/tools/ui/previewUiAscii.ts"],"names":[],"mappings":"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"}
package/hooks/hooks.json CHANGED
@@ -38,6 +38,15 @@
38
38
  }
39
39
  ],
40
40
  "UserPromptSubmit": [
41
+ {
42
+ "matcher": ".*",
43
+ "hooks": [
44
+ {
45
+ "type": "command",
46
+ "command": "echo '[INTERRUPT RULE] If this message follows a user interrupt (Ctrl+C/Escape), the previous task is CANCELLED. Do NOT resume interrupted work. Respond ONLY to this new message.'"
47
+ }
48
+ ]
49
+ },
41
50
  {
42
51
  "matcher": "ultrawork|ulw|울트라워크",
43
52
  "hooks": [
@@ -84,7 +93,7 @@
84
93
  ]
85
94
  },
86
95
  {
87
- "matcher": "뭐였지|기억|recall|이전에.*결정|저번에",
96
+ "matcher": "뭐였지|기억|recall|이전에.*결정|저번에|previous.*decision|what was",
88
97
  "hooks": [
89
98
  {
90
99
  "type": "command",
@@ -93,7 +102,7 @@
93
102
  ]
94
103
  },
95
104
  {
96
- "matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석",
105
+ "matcher": "아키텍처|architecture|설계.*검토|design.*review|구조.*분석|structure.*analysis",
97
106
  "hooks": [
98
107
  {
99
108
  "type": "command",
@@ -153,7 +153,7 @@ async function main() {
153
153
  const result = await callWithRetry(currentProvider, cleanPrompt, systemPrompt, jsonMode);
154
154
 
155
155
  if (result.success) {
156
- console.log(`${label} 응답: ${result.result}`);
156
+ console.log(`${label} response: ${result.result}`);
157
157
  return;
158
158
  }
159
159
 
@@ -4,6 +4,7 @@
4
4
  import fs from 'fs';
5
5
  import path from 'path';
6
6
  import { fileURLToPath } from 'url';
7
+ import { execSync } from 'child_process';
7
8
 
8
9
  // 스크립트 위치에서 VIBE_PATH 자동 감지
9
10
  // hooks/scripts/utils.js → hooks → VIBE_PATH
@@ -13,28 +14,52 @@ const DETECTED_VIBE_PATH = path.resolve(__dirname, '..', '..');
13
14
  export const VIBE_PATH = process.env.VIBE_PATH || DETECTED_VIBE_PATH;
14
15
  export const PROJECT_DIR = process.env.CLAUDE_PROJECT_DIR || '.';
15
16
 
17
+ // 전역 npm 경로 캐시
18
+ let _globalNpmPath = null;
19
+ function getGlobalNpmPath() {
20
+ if (_globalNpmPath === null) {
21
+ try {
22
+ _globalNpmPath = execSync('npm root -g', { encoding: 'utf8' }).trim();
23
+ } catch {
24
+ // Windows 기본 경로
25
+ _globalNpmPath = path.join(process.env.APPDATA || '', 'npm', 'node_modules');
26
+ }
27
+ }
28
+ return _globalNpmPath;
29
+ }
30
+
16
31
  /**
17
32
  * 로컬 개발 환경 vs 설치된 패키지 환경 자동 감지하여 tools 경로 반환
33
+ * 우선순위: 로컬 빌드 → 전역 npm
18
34
  */
19
35
  export function getToolsBaseUrl() {
20
36
  const localDist = path.join(VIBE_PATH, 'dist', 'tools');
21
- const packageDist = path.join(VIBE_PATH, 'node_modules', '@su-record', 'vibe', 'dist', 'tools');
37
+ const globalPackage = path.join(getGlobalNpmPath(), '@su-record', 'vibe', 'dist', 'tools');
22
38
 
23
- if (fs.existsSync(localDist)) {
39
+ // 1. 로컬 빌드된 파일 확인 (개발 환경)
40
+ const localIndex = path.join(localDist, 'index.js');
41
+ if (fs.existsSync(localIndex)) {
24
42
  return `file:///${localDist.replace(/\\/g, '/')}/`;
25
43
  }
26
- return `file:///${packageDist.replace(/\\/g, '/')}/`;
44
+
45
+ // 2. 전역 npm 패키지 (설치된 환경)
46
+ return `file:///${globalPackage.replace(/\\/g, '/')}/`;
27
47
  }
28
48
 
29
49
  /**
30
50
  * lib 경로 반환 (gpt-api, gemini-api 등)
51
+ * 우선순위: 로컬 빌드 → 전역 npm
31
52
  */
32
53
  export function getLibBaseUrl() {
33
54
  const localDist = path.join(VIBE_PATH, 'dist', 'lib');
34
- const packageDist = path.join(VIBE_PATH, 'node_modules', '@su-record', 'vibe', 'dist', 'lib');
55
+ const globalPackage = path.join(getGlobalNpmPath(), '@su-record', 'vibe', 'dist', 'lib');
35
56
 
36
- if (fs.existsSync(localDist)) {
57
+ // 1. 로컬 빌드된 파일 확인 (개발 환경)
58
+ const localGptApi = path.join(localDist, 'gpt-api.js');
59
+ if (fs.existsSync(localGptApi)) {
37
60
  return `file:///${localDist.replace(/\\/g, '/')}/`;
38
61
  }
39
- return `file:///${packageDist.replace(/\\/g, '/')}/`;
62
+
63
+ // 2. 전역 npm 패키지 (설치된 환경)
64
+ return `file:///${globalPackage.replace(/\\/g, '/')}/`;
40
65
  }
@@ -1,38 +1,37 @@
1
- # 🎮 C# + Unity 품질 규칙
1
+ # C# + Unity Quality Rules
2
2
 
3
- ## 핵심 원칙 (core에서 상속)
3
+ ## Core Principles (inherited from core)
4
4
 
5
5
  ```markdown
6
- 단일 책임 (SRP)
7
- 중복 제거 (DRY)
8
- 재사용성
9
- ✅ 낮은 복잡도
10
- 함수 ≤ 30줄
11
- 중첩 3단계
12
- Cyclomatic complexity ≤ 10
6
+ # Core Principles (inherited from core)
7
+ Single Responsibility (SRP)
8
+ No Duplication (DRY)
9
+ Reusability
10
+ Low Complexity
11
+ Function <= 30 lines
12
+ Nesting <= 3 levels
13
+ Cyclomatic complexity <= 10
13
14
  ```
14
15
 
15
- ## Unity 아키텍처 이해
16
+ ## Unity Architecture Understanding
16
17
 
17
- ```
18
- ┌─────────────────────────────────────────────┐
19
- │ MonoBehaviour Lifecycle │
20
- │ Awake → OnEnable → Start → Update → ... │
21
- ├─────────────────────────────────────────────┤
22
- │ ScriptableObject (데이터 에셋) │
23
- │ - 설정, 이벤트, 공유 데이터 │
24
- ├─────────────────────────────────────────────┤
25
- │ Pure C# Classes (비-MonoBehaviour) │
26
- │ - 게임 로직, 유틸리티 │
27
- └─────────────────────────────────────────────┘
18
+ ```text
19
+ MonoBehaviour Lifecycle
20
+ Awake -> OnEnable -> Start -> Update -> ...
21
+
22
+ ScriptableObject (Data Assets)
23
+ - Settings, Events, Shared Data
24
+
25
+ Pure C# Classes (Non-MonoBehaviour)
26
+ - Game Logic, Utilities
28
27
  ```
29
28
 
30
- ## C#/Unity 특화 규칙
29
+ ## C#/Unity Specific Rules
31
30
 
32
- ### 1. MonoBehaviour 최소화
31
+ ### 1. Minimize MonoBehaviour
33
32
 
34
33
  ```csharp
35
- // 모든 로직을 MonoBehaviour
34
+ // Bad: All logic in MonoBehaviour
36
35
  public class PlayerController : MonoBehaviour
37
36
  {
38
37
  public float health;
@@ -41,12 +40,12 @@ public class PlayerController : MonoBehaviour
41
40
 
42
41
  void Update()
43
42
  {
44
- // 이동, 전투, 인벤토리, UI 업데이트 모두 여기에...
45
- // 수백 줄의 코드
43
+ // Movement, combat, inventory, UI update all here...
44
+ // Hundreds of lines of code
46
45
  }
47
46
  }
48
47
 
49
- // 관심사 분리
48
+ // Good: Separation of concerns
50
49
  public class PlayerController : MonoBehaviour
51
50
  {
52
51
  [SerializeField] private PlayerData _data;
@@ -66,7 +65,7 @@ public class PlayerController : MonoBehaviour
66
65
  }
67
66
  }
68
67
 
69
- // Pure C# 클래스
68
+ // Pure C# class
70
69
  public class PlayerMovement
71
70
  {
72
71
  private readonly PlayerData _data;
@@ -80,15 +79,15 @@ public class PlayerMovement
80
79
 
81
80
  public void Update(float deltaTime)
82
81
  {
83
- // 이동 로직만
82
+ // Movement logic only
84
83
  }
85
84
  }
86
85
  ```
87
86
 
88
- ### 2. ScriptableObject 활용
87
+ ### 2. Using ScriptableObject
89
88
 
90
89
  ```csharp
91
- // 데이터 에셋
90
+ // Good: Data Asset
92
91
  [CreateAssetMenu(fileName = "PlayerData", menuName = "Game/PlayerData")]
93
92
  public class PlayerData : ScriptableObject
94
93
  {
@@ -101,7 +100,7 @@ public class PlayerData : ScriptableObject
101
100
  public float attackRange = 2f;
102
101
  }
103
102
 
104
- // 이벤트 채널
103
+ // Good: Event Channel
105
104
  [CreateAssetMenu(fileName = "GameEvent", menuName = "Events/GameEvent")]
106
105
  public class GameEvent : ScriptableObject
107
106
  {
@@ -125,10 +124,10 @@ public interface IGameEventListener
125
124
  }
126
125
  ```
127
126
 
128
- ### 3. 오브젝트 풀링
127
+ ### 3. Object Pooling
129
128
 
130
129
  ```csharp
131
- // 제네릭 오브젝트
130
+ // Good: Generic Object Pool
132
131
  public class ObjectPool<T> where T : Component
133
132
  {
134
133
  private readonly T _prefab;
@@ -167,7 +166,7 @@ public class ObjectPool<T> where T : Component
167
166
  }
168
167
  }
169
168
 
170
- // 사용 예시
169
+ // Usage example
171
170
  public class BulletManager : MonoBehaviour
172
171
  {
173
172
  [SerializeField] private Bullet _bulletPrefab;
@@ -188,10 +187,10 @@ public class BulletManager : MonoBehaviour
188
187
  }
189
188
  ```
190
189
 
191
- ### 4. 싱글톤 패턴 (주의해서 사용)
190
+ ### 4. Singleton Pattern (Use with Caution)
192
191
 
193
192
  ```csharp
194
- // 안전한 싱글톤
193
+ // Good: Safe Singleton
195
194
  public abstract class Singleton<T> : MonoBehaviour where T : MonoBehaviour
196
195
  {
197
196
  private static T _instance;
@@ -232,7 +231,7 @@ public abstract class Singleton<T> : MonoBehaviour where T : MonoBehaviour
232
231
  }
233
232
  }
234
233
 
235
- // 사용
234
+ // Usage
236
235
  public class GameManager : Singleton<GameManager>
237
236
  {
238
237
  public GameState CurrentState { get; private set; }
@@ -244,10 +243,10 @@ public class GameManager : Singleton<GameManager>
244
243
  }
245
244
  ```
246
245
 
247
- ### 5. 코루틴 vs async/await
246
+ ### 5. Coroutine vs async/await
248
247
 
249
248
  ```csharp
250
- // 코루틴 (Unity 생명주기와 통합)
249
+ // Good: Coroutine (integrated with Unity lifecycle)
251
250
  public class EnemySpawner : MonoBehaviour
252
251
  {
253
252
  [SerializeField] private float _spawnInterval = 2f;
@@ -277,7 +276,7 @@ public class EnemySpawner : MonoBehaviour
277
276
  }
278
277
  }
279
278
 
280
- // async/await (I/O 작업)
279
+ // Good: async/await (I/O operations)
281
280
  public class SaveManager : MonoBehaviour
282
281
  {
283
282
  public async Task SaveGameAsync(GameSaveData data)
@@ -302,10 +301,10 @@ public class SaveManager : MonoBehaviour
302
301
  }
303
302
  ```
304
303
 
305
- ### 6. 이벤트 시스템
304
+ ### 6. Event System
306
305
 
307
306
  ```csharp
308
- // C# 이벤트
307
+ // Good: C# Events
309
308
  public class Health : MonoBehaviour
310
309
  {
311
310
  public event Action<float> OnHealthChanged;
@@ -334,7 +333,7 @@ public class Health : MonoBehaviour
334
333
  }
335
334
  }
336
335
 
337
- // 구독
336
+ // Subscription
338
337
  public class HealthUI : MonoBehaviour
339
338
  {
340
339
  [SerializeField] private Health _health;
@@ -357,10 +356,10 @@ public class HealthUI : MonoBehaviour
357
356
  }
358
357
  ```
359
358
 
360
- ### 7. 인스펙터 최적화
359
+ ### 7. Inspector Optimization
361
360
 
362
361
  ```csharp
363
- // SerializeField + private
362
+ // Good: SerializeField + private
364
363
  public class Enemy : MonoBehaviour
365
364
  {
366
365
  [Header("Settings")]
@@ -374,11 +373,11 @@ public class Enemy : MonoBehaviour
374
373
  [Header("Debug")]
375
374
  [SerializeField, ReadOnly] private float _distanceToTarget;
376
375
 
377
- // public 프로퍼티로 읽기 전용 접근
376
+ // Read-only access via public property
378
377
  public float MoveSpeed => _moveSpeed;
379
378
  }
380
379
 
381
- // RequireComponent
380
+ // Good: RequireComponent
382
381
  [RequireComponent(typeof(Rigidbody))]
383
382
  [RequireComponent(typeof(Collider))]
384
383
  public class PhysicsObject : MonoBehaviour
@@ -392,19 +391,19 @@ public class PhysicsObject : MonoBehaviour
392
391
  }
393
392
  ```
394
393
 
395
- ### 8. 성능 최적화
394
+ ### 8. Performance Optimization
396
395
 
397
396
  ```csharp
398
- // GetComponent 캐싱
397
+ // Good: GetComponent Caching
399
398
  public class OptimizedBehaviour : MonoBehaviour
400
399
  {
401
- // Update에서 GetComponent 호출
400
+ // Bad: GetComponent in Update
402
401
  void Update()
403
402
  {
404
403
  GetComponent<Rigidbody>().AddForce(Vector3.up);
405
404
  }
406
405
 
407
- // 캐싱
406
+ // Good: Caching
408
407
  private Rigidbody _rb;
409
408
 
410
409
  void Awake()
@@ -418,49 +417,49 @@ public class OptimizedBehaviour : MonoBehaviour
418
417
  }
419
418
  }
420
419
 
421
- // string 비교 최적화
420
+ // Good: String comparison optimization
422
421
  public class TagChecker : MonoBehaviour
423
422
  {
424
- // 문자열 비교
423
+ // Bad: String comparison
425
424
  void OnTriggerEnter(Collider other)
426
425
  {
427
426
  if (other.tag == "Player") { }
428
427
  }
429
428
 
430
- // CompareTag 사용
429
+ // Good: Use CompareTag
431
430
  void OnTriggerEnter(Collider other)
432
431
  {
433
432
  if (other.CompareTag("Player")) { }
434
433
  }
435
434
  }
436
435
 
437
- // 할당 최소화
436
+ // Good: Minimize allocations
438
437
  public class NoAllocExample : MonoBehaviour
439
438
  {
440
- // 미리 할당
439
+ // Pre-allocate
441
440
  private readonly Collider[] _hitBuffer = new Collider[10];
442
441
  private readonly RaycastHit[] _rayBuffer = new RaycastHit[5];
443
442
 
444
443
  void CheckOverlap(Vector3 position, float radius)
445
444
  {
446
- // NonAlloc 버전 사용
445
+ // Use NonAlloc version
447
446
  int count = Physics.OverlapSphereNonAlloc(position, radius, _hitBuffer);
448
447
 
449
448
  for (int i = 0; i < count; i++)
450
449
  {
451
- // _hitBuffer[i] 처리
450
+ // Process _hitBuffer[i]
452
451
  }
453
452
  }
454
453
  }
455
454
  ```
456
455
 
457
- ## 폴더 구조 권장
456
+ ## Recommended Folder Structure
458
457
 
459
- ```
458
+ ```text
460
459
  Assets/
461
- ├── _Project/ # 프로젝트 에셋
460
+ ├── _Project/ # Project assets
462
461
  │ ├── Scripts/
463
- │ │ ├── Core/ # 핵심 시스템
462
+ │ │ ├── Core/ # Core systems
464
463
  │ │ ├── Player/
465
464
  │ │ ├── Enemy/
466
465
  │ │ ├── UI/
@@ -473,44 +472,44 @@ Assets/
473
472
  │ ├── Textures/
474
473
  │ └── Audio/
475
474
  ├── Scenes/
476
- ├── Resources/ # 런타임 로드 (주의해서 사용)
475
+ ├── Resources/ # Runtime load (use with caution)
477
476
  └── Plugins/
478
477
  ```
479
478
 
480
- ## 네이밍 컨벤션
479
+ ## Naming Conventions
481
480
 
482
481
  ```csharp
483
- // 클래스: PascalCase
482
+ // Class: PascalCase
484
483
  public class PlayerController { }
485
484
 
486
- // 인터페이스: I 접두사
485
+ // Interface: I prefix
487
486
  public interface IDamageable { }
488
487
 
489
- // private 필드: _ 접두사 + camelCase
488
+ // Private field: _ prefix + camelCase
490
489
  private float _moveSpeed;
491
490
 
492
- // SerializeField: _ 접두사 유지
491
+ // SerializeField: Keep _ prefix
493
492
  [SerializeField] private float _health;
494
493
 
495
- // 상수: UPPER_SNAKE_CASE 또는 PascalCase
494
+ // Constants: UPPER_SNAKE_CASE or PascalCase
496
495
  private const float MAX_HEALTH = 100f;
497
496
  private const float MaxHealth = 100f;
498
497
 
499
- // 프로퍼티: PascalCase
498
+ // Property: PascalCase
500
499
  public float Health => _health;
501
500
 
502
- // 메서드: PascalCase
501
+ // Method: PascalCase
503
502
  public void TakeDamage(float damage) { }
504
503
  ```
505
504
 
506
- ## 체크리스트
507
-
508
- - [ ] MonoBehaviour 로직 최소화
509
- - [ ] GetComponent 결과 캐싱
510
- - [ ] 이벤트 구독 해제 (OnDisable)
511
- - [ ] 오브젝트 풀링 적용
512
- - [ ] SerializeField + private 사용
513
- - [ ] CompareTag 사용
514
- - [ ] NonAlloc API 사용
515
- - [ ] Update 최소화 (필요시만)
516
- - [ ] ScriptableObject로 데이터 분리
505
+ ## Checklist
506
+
507
+ - [ ] Minimize MonoBehaviour logic
508
+ - [ ] Cache GetComponent results
509
+ - [ ] Unsubscribe events (OnDisable)
510
+ - [ ] Apply object pooling
511
+ - [ ] Use SerializeField + private
512
+ - [ ] Use CompareTag
513
+ - [ ] Use NonAlloc APIs
514
+ - [ ] Minimize Update (only when needed)
515
+ - [ ] Separate data with ScriptableObject