codesyncer 2.2.3 β†’ 2.3.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.
@@ -0,0 +1,324 @@
1
+ # πŸ€– CodeSyncer μ„€μ • κ°€μ΄λ“œ for AI μ–΄μ‹œμŠ€ν„΄νŠΈ (단일 λ ˆν¬μ§€ν† λ¦¬)
2
+
3
+ > **AI μ½”λ”© μ–΄μ‹œμŠ€ν„΄νŠΈμš©**: 이 λ¬Έμ„œλ₯Ό λκΉŒμ§€ 읽고 μ§€μ‹œμ‚¬ν•­μ„ 따라 CodeSyncer ν˜‘μ—… μ‹œμŠ€ν…œμ„ μ„€μ •ν•˜μ„Έμš”.
4
+ >
5
+ > **ν”„λ‘œμ νŠΈ**: [PROJECT_NAME]
6
+ > **GitHub**: https://github.com/[GITHUB_USERNAME]/[PROJECT_NAME]
7
+ > **생성일**: [TODAY]
8
+ > **λͺ¨λ“œ**: 단일 λ ˆν¬μ§€ν† λ¦¬
9
+
10
+ ---
11
+
12
+ ## πŸ“‹ λ‹Ήμ‹ μ˜ μž„λ¬΄
13
+
14
+ 이 λ ˆν¬μ§€ν† λ¦¬λ₯Ό λΆ„μ„ν•˜κ³  포괄적인 ν˜‘μ—… μ‹œμŠ€ν…œμ„ λ§Œλ“œλŠ” 것이 μž„λ¬΄μž…λ‹ˆλ‹€. λ‹€μŒ 단계λ₯Ό **λŒ€ν™”ν˜•μœΌλ‘œ** μ§„ν–‰ν•˜μ„Έμš” - 각 μ£Όμš” κ²°μ • μ‹œμ μ—μ„œ μ‚¬μš©μž 확인을 λ°›μœΌμ„Έμš”.
15
+
16
+ ---
17
+
18
+ ## 🎯 1단계: λ ˆν¬μ§€ν† λ¦¬ 뢄석
19
+
20
+ ### λ‹Ήμ‹ μ˜ μž‘μ—…
21
+ 1. **이 λ ˆν¬μ§€ν† λ¦¬ 뢄석**:
22
+ - 파일 ꡬ쑰와 μ˜μ‘΄μ„± κ²€ν† 
23
+ - 기술 μŠ€νƒκ³Ό ν”„λ ˆμž„μ›Œν¬ νŒŒμ•…
24
+ - ν”„λ‘œμ νŠΈ λͺ©μ κ³Ό μ•„ν‚€ν…μ²˜ 이해
25
+ - κΈ°μ‘΄ μ½”λ“œ νŒ¨ν„΄ 확인
26
+
27
+ 2. **λ‹€μŒμ„ κ²°μ •**:
28
+ - μ£Όμš” κΈ°λŠ₯ (backend, frontend, mobile, fullstack)
29
+ - μ‚¬μš©λœ μ£Όμš” 기술
30
+ - 핡심 κΈ°λŠ₯κ³Ό λͺ¨λ“ˆ
31
+ - 개발 νŒ¨ν„΄
32
+
33
+ ---
34
+
35
+ ## πŸ”„ 2단계: λŒ€ν™”ν˜• μ„€μ • ν”„λ‘œμ„ΈμŠ€
36
+
37
+ ### 2.1 λ ˆν¬μ§€ν† λ¦¬ 뢄석 확인
38
+ μ‚¬μš©μžμ—κ²Œ 뢄석 κ²°κ³Ό μ œμ‹œ:
39
+ ```
40
+ πŸ“ λ ˆν¬μ§€ν† λ¦¬: [PROJECT_NAME]
41
+
42
+ 제 뢄석 κ²°κ³Ό:
43
+ - νƒ€μž…: [backend/frontend/mobile/fullstack]
44
+ - 기술 μŠ€νƒ: [detected stack]
45
+ - μ„€λͺ…: [μƒμ„±ν•œ μ„€λͺ…]
46
+ - 핡심 κΈ°λŠ₯: [μ£Όμš” κΈ°λŠ₯ λ‚˜μ—΄]
47
+
48
+ 이 뢄석이 λ§žλ‚˜μš”? μˆ˜μ •ν•  뢀뢄이 μžˆλ‚˜μš”?
49
+ ```
50
+
51
+ ### 2.2 μ€‘μš” μ§ˆλ¬Έν•˜κΈ°
52
+
53
+ **⚠️ μ ˆλŒ€ μΆ”λ‘ ν•˜μ§€ 말고 λ°˜λ“œμ‹œ λ¬Όμ–΄λ³΄μ„Έμš”:**
54
+
55
+ 1. **API μ—”λ“œν¬μΈνŠΈ** (λ°±μ—”λ“œμ˜ 경우):
56
+ - "메인 API 베이슀 URL이 λ¬΄μ—‡μΈκ°€μš”?"
57
+ - "μ—¬λŸ¬ API 버전이 μžˆλ‚˜μš”?"
58
+
59
+ 2. **λΉ„μ¦ˆλ‹ˆμŠ€ 둜직**:
60
+ - "μ•Œμ•„μ•Ό ν•  핡심 λΉ„μ¦ˆλ‹ˆμŠ€ κ·œμΉ™μ΄ μžˆλ‚˜μš”?"
61
+ - "νŠΉμ • 가격/결제 정책이 μžˆλ‚˜μš”?"
62
+
63
+ 3. **인증**:
64
+ - "μ–΄λ–€ 인증 방식을 μ‚¬μš©ν•˜λ‚˜μš”?" (JWT, OAuth, Session λ“±)
65
+ - "토큰은 어디에 μ €μž₯ν•˜λ‚˜μš”?" (cookies, localStorage λ“±)
66
+
67
+ 4. **λ°μ΄ν„°λ² μ΄μŠ€**:
68
+ - "μ–΄λ–€ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‚¬μš©ν•˜λ‚˜μš”?"
69
+ - "μ€‘μš”ν•œ μŠ€ν‚€λ§ˆ 정보가 μžˆλ‚˜μš”?"
70
+
71
+ 5. **μ™ΈλΆ€ μ„œλΉ„μŠ€**:
72
+ - "μ–΄λ–€ μ™ΈλΆ€ API/μ„œλΉ„μŠ€μ™€ μ—°λ™λ˜λ‚˜μš”?"
73
+ - "μ•Œμ•„μ•Ό ν•  API ν‚€λ‚˜ 인증 정보가 μžˆλ‚˜μš”? (λ…ΈμΆœ 없이)"
74
+
75
+ ### 2.3 μ˜λ…Ό ν‚€μ›Œλ“œ 식별
76
+
77
+ μ‚¬μš©μžμ—κ²Œ 질문:
78
+ ```
79
+ 이 ν”„λ‘œμ νŠΈμ—μ„œ μ–΄λ–€ μ€‘μš” ν‚€μ›Œλ“œκ°€ μžλ™ μ˜λ…Ό 쀑단을 νŠΈλ¦¬κ±°ν•΄μ•Ό ν•˜λ‚˜μš”?
80
+
81
+ μΆ”μ²œ μΉ΄ν…Œκ³ λ¦¬:
82
+
83
+ πŸ”΄ CRITICAL (항상 쀑단):
84
+ - πŸ’° 결제/과금: 결제, 과금, 청ꡬ, ν™˜λΆˆ, ꡬ독, 인보이슀, 가격, μš”κΈˆ, payment, billing, charge, refund, subscription
85
+ - πŸ” λ³΄μ•ˆ/인증: 인증, κΆŒν•œ, 둜그인, λ‘œκ·Έμ•„μ›ƒ, μ„Έμ…˜, 토큰, JWT, λΉ„λ°€λ²ˆν˜Έ, μ•”ν˜Έν™”, λ³΅ν˜Έν™”, ν•΄μ‹œ, OAuth, κΆŒν•œ, μ—­ν• , κ΄€λ¦¬μž, authentication, authorization, encrypt, decrypt
86
+ - πŸ—‘οΈ 데이터 μ‚­μ œ: μ‚­μ œ, 제거, μ‚­μ œμ²˜λ¦¬, 파기, delete, remove, drop, truncate, destroy, purge
87
+ - πŸ“œ κ°œμΈμ •λ³΄/법적: GDPR, CCPA, κ°œμΈμ •λ³΄, 민감정보, κ°œμΈμ •λ³΄μ²˜λ¦¬λ°©μΉ¨, μ΄μš©μ•½κ΄€, λ™μ˜, κ·œμ •μ€€μˆ˜, personal data, PII, privacy, compliance
88
+
89
+ 🟑 IMPORTANT (ꢌμž₯ 쀑단):
90
+ - πŸ”Œ μ™ΈλΆ€ API: API 연동, μ›Ήν›…, μ¨λ“œνŒŒν‹°, μ™ΈλΆ€μ„œλΉ„μŠ€, API ν‚€, 인증정보, webhook, third-party, credentials
91
+ - πŸ—„οΈ DB μŠ€ν‚€λ§ˆ: λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, μŠ€ν‚€λ§ˆλ³€κ²½, ν…Œμ΄λΈ”μˆ˜μ •, μ»¬λŸΌμΆ”κ°€, 인덱슀, μ œμ•½μ‘°κ±΄, migration, schema, alter table
92
+ - πŸš€ 배포/인프라: 배포, ν”„λ‘œλ•μ…˜, ν™˜κ²½μ„€μ •, μ„œλ²„, ν˜ΈμŠ€νŒ…, 도메인, SSL, μΈμ¦μ„œ, deploy, deployment, production, server
93
+ - πŸ’Ύ 캐싱: μΊμ‹œμ „λž΅, λ ˆλ””μŠ€, CDN, μΊμ‹œλ¬΄νš¨ν™”, redis, memcached, cache
94
+ - πŸ“§ 이메일/μ•Œλ¦Ό: μ΄λ©”μΌλ°œμ†‘, 문자, ν‘Έμ‹œμ•Œλ¦Ό, μ•Œλ¦Όμ„œλΉ„μŠ€, email, SMS, push notification
95
+
96
+ 🟒 MINOR (선택적 쀑단):
97
+ - ⚑ μ„±λŠ₯: μ΅œμ ν™”, μ„±λŠ₯κ°œμ„ , μ§€μ—°λ‘œλ”©, μ½”λ“œλΆ„ν• , λ²ˆλ“€ν¬κΈ°, optimization, performance, lazy loading
98
+ - πŸ§ͺ ν…ŒμŠ€νŠΈ: ν…ŒμŠ€νŠΈμ „λž΅, ν…ŒμŠ€νŠΈν”„λ ˆμž„μ›Œν¬, CI/CD, μžλ™ν™”ν…ŒμŠ€νŠΈ, testing, automated testing
99
+ - πŸ“Š λ‘œκΉ…/λͺ¨λ‹ˆν„°λ§: λ‘œκΉ…, λͺ¨λ‹ˆν„°λ§, 뢄석, μ—λŸ¬μΆ”μ , APM, logging, monitoring, analytics
100
+ - 🎨 UI/UX: λ””μžμΈμ‹œμŠ€ν…œ, ν…Œλ§ˆ, λ°˜μ‘ν˜•, μ ‘κ·Όμ„±, λ‹€κ΅­μ–΄, design system, responsive, accessibility
101
+
102
+ μ–΄λ–€ μΉ΄ν…Œκ³ λ¦¬λ₯Ό ν™œμ„±ν™”ν• κΉŒμš”? (ꢌμž₯: CRITICAL + IMPORTANT)
103
+ 도메인별 μ»€μŠ€ν…€ ν‚€μ›Œλ“œκ°€ μžˆλ‚˜μš”?
104
+ ```
105
+
106
+ ---
107
+
108
+ ## πŸ“ 3단계: λ¬Έμ„œ 파일 생성
109
+
110
+ `.claude/` 폴더에 λ‹€μŒ νŒŒμΌλ“€μ„ 생성:
111
+
112
+ ### 3.1 CLAUDE.md
113
+ - λΆ„μ„ν•œ ν”„λ‘œμ νŠΈ 정보
114
+ - μ ˆλŒ€ κ·œμΉ™ (TypeScript strict mode, μ—λŸ¬ 핸듀링 λ“±)
115
+ - μΆ”λ‘  κΈˆμ§€ μ˜μ—­ (λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 수치, API URL, λ³΄μ•ˆ μ„€μ •)
116
+ - μ˜λ…Ό ν•„μˆ˜ ν‚€μ›Œλ“œ (μ‚¬μš©μžκ°€ ν™•μΈν•œ ν‚€μ›Œλ“œ)
117
+ - 주석 νƒœκ·Έ μ‹œμŠ€ν…œ (@codesyncer-* νƒœκ·Έ)
118
+ - ν”„λ‘œμ νŠΈλ³„ ν…œν”Œλ¦Ώκ³Ό νŒ¨ν„΄
119
+
120
+ ν…œν”Œλ¦Ώ μ‚¬μš©: `./templates/[lang]/claude.md`
121
+ - [PROJECT_NAME], [PROJECT_TYPE], [TECH_STACK] ꡐ체
122
+ - [KEYWORDS]λ₯Ό μ‚¬μš©μž 확인 ν‚€μ›Œλ“œλ‘œ ꡐ체
123
+ - 뢄석 쀑 λ°œκ²¬ν•œ ν”„λ‘œμ νŠΈλ³„ κ·œμΉ™ μΆ”κ°€
124
+
125
+ ### 3.2 ARCHITECTURE.md
126
+ - μ™„μ „ν•œ 폴더 ꡬ쑰 (μ‹€μ œ 디렉토리 μŠ€μΊ”)
127
+ - 파일 톡계
128
+ - 주석 νƒœκ·Έ 톡계 (μ΄ˆκΈ°κ°’: λͺ¨λ‘ 0)
129
+ - 기술 μŠ€νƒ 상세 정보
130
+ - package.json의 μ˜μ‘΄μ„±
131
+
132
+ ν…œν”Œλ¦Ώ μ‚¬μš©: `./templates/[lang]/architecture.md`
133
+ - μ‹€μ œ 폴더 ꡬ쑰λ₯Ό μŠ€μΊ”ν•΄μ„œ λ‚˜μ—΄
134
+ - μ‹€μ œ μ˜μ‘΄μ„± λͺ©λ‘ μž‘μ„±
135
+
136
+ ### 3.3 COMMENT_GUIDE.md ⭐ **핡심 λ¬Έμ„œ**
137
+ - **μ£Όμ„μœΌλ‘œ λͺ¨λ“  μ»¨ν…μŠ€νŠΈ 관리** (ν’ˆμ§ˆ κΈ°μ€€, μ½”λ”© ν‘œμ€€, λͺ¨λ“  κ²°μ •)
138
+ - 10κ°€μ§€ 주석 νƒœκ·Έ μ‹œμŠ€ν…œ (κΈ°λ³Έ 5 + ν™•μž₯ 5)
139
+ - μ‹€μ „ μ˜ˆμ‹œ: ν’ˆμ§ˆ κΈ°μ€€, μ„±λŠ₯ μ΅œμ ν™”, λ³΄μ•ˆ, μ—λŸ¬ 핸듀링 λ“±
140
+ - 별도 λ¬Έμ„œ λŒ€μ‹  μ½”λ“œμ— 직접 κΈ°λ‘ν•˜λŠ” 원칙
141
+
142
+ ν…œν”Œλ¦Ώ μ‚¬μš©: `./templates/[lang]/comment_guide.md`
143
+ - κ·ΈλŒ€λ‘œ μ‚¬μš© (λͺ¨λ“  μ»¨ν…μŠ€νŠΈ 관리 μ˜ˆμ‹œ 포함)
144
+ - AIλŠ” 이 νŒ¨ν„΄μ„ 따라 주석 μž‘μ„±
145
+
146
+ ### 3.4 DECISIONS.md
147
+ - κ²°μ • 둜그 ν…œν”Œλ¦Ώ
148
+ - μΉ΄ν…Œκ³ λ¦¬ μ •μ˜
149
+ - 빈 κ²°μ • 기둝 (개발 쀑 μ±„μ›Œμ§)
150
+
151
+ ν…œν”Œλ¦Ώ μ‚¬μš©: `./templates/[lang]/decisions.md`
152
+ - κ·ΈλŒ€λ‘œ μ‚¬μš© (μž‘μ—… 쀑 κ²°μ • 좔가됨)
153
+
154
+ ---
155
+
156
+ ## 🌐 4단계: 루트 CLAUDE.md 생성
157
+
158
+ λ ˆν¬μ§€ν† λ¦¬ λ£¨νŠΈμ— `CLAUDE.md` 생성 (ν΄λ‘œλ“œκ°€ μžλ™μœΌλ‘œ μ°ΎλŠ” 파일):
159
+
160
+ ```markdown
161
+ # CLAUDE.md - [PROJECT_NAME]
162
+
163
+ > **Powered by CodeSyncer** - AI ν˜‘μ—… μ‹œμŠ€ν…œ
164
+ > **λͺ¨λ“œ**: 단일 λ ˆν¬μ§€ν† λ¦¬
165
+
166
+ ## πŸ“‹ λΉ λ₯Έ μ‹œμž‘
167
+
168
+ μƒμ„Έν•œ μ½”λ”© κ°€μ΄λ“œλΌμΈμ€ `.claude/CLAUDE.md`λ₯Ό μ½μœΌμ„Έμš”.
169
+
170
+ ## πŸ”— λ¬Έμ„œ
171
+
172
+ - **μ½”λ”© κ·œμΉ™**: `.claude/CLAUDE.md`
173
+ - **ν”„λ‘œμ νŠΈ ꡬ쑰**: `.claude/ARCHITECTURE.md`
174
+ - **주석 κ°€μ΄λ“œ**: `.claude/COMMENT_GUIDE.md`
175
+ - **κ²°μ • 둜그**: `.claude/DECISIONS.md`
176
+
177
+ ## πŸš€ μž‘μ—… μ‹œμž‘
178
+
179
+ 1. 이 파일 읽기 (μ™„λ£Œ!)
180
+ 2. `.claude/CLAUDE.md`μ—μ„œ ν”„λ‘œμ νŠΈ κ·œμΉ™ 확인
181
+ 3. 뢈λͺ…ν™•ν•œ 것은 μ§ˆλ¬Έν•˜κΈ°
182
+ 4. μ½”λ”© μ‹œμž‘!
183
+
184
+ ---
185
+
186
+ **ν”„λ‘œμ νŠΈ**: [PROJECT_NAME]
187
+ **생성일**: [TODAY]
188
+ **Powered by**: CodeSyncer
189
+ ```
190
+
191
+ **μ€‘μš”**: 이 파일이 μžˆμ–΄μ•Ό ν΄λ‘œλ“œκ°€ μ„Έμ…˜ μ‹œμž‘ μ‹œ μžλ™μœΌλ‘œ μ»¨ν…μŠ€νŠΈλ₯Ό λ‘œλ“œν•©λ‹ˆλ‹€!
192
+
193
+ ---
194
+
195
+ ## βœ… 5단계: μ΅œμ’… 확인
196
+
197
+ λͺ¨λ“  파일 생성 ν›„ μš”μ•½ μ œμ‹œ:
198
+
199
+ ```
200
+ βœ… CodeSyncer μ„€μ • μ™„λ£Œ! (단일 λ ˆν¬μ§€ν† λ¦¬ λͺ¨λ“œ)
201
+
202
+ μƒμ„±λœ 파일:
203
+ πŸ“ [PROJECT_NAME]/
204
+ β”œβ”€β”€ CLAUDE.md ⭐ ν΄λ‘œλ“œκ°€ λ¨Όμ € μ½λŠ” 파일
205
+ └── .claude/
206
+ β”œβ”€β”€ CLAUDE.md (μ½”λ”© κ·œμΉ™)
207
+ β”œβ”€β”€ ARCHITECTURE.md (ν”„λ‘œμ νŠΈ ꡬ쑰)
208
+ β”œβ”€β”€ COMMENT_GUIDE.md (주석 κ°€μ΄λ“œ)
209
+ └── DECISIONS.md (κ²°μ • 둜그)
210
+
211
+ λ‹€μŒ 단계:
212
+ 1. μƒμ„±λœ 파일 κ²€ν† 
213
+ 2. ν•„μš”μ‹œ .claude/CLAUDE.md μ»€μŠ€ν„°λ§ˆμ΄μ¦ˆ
214
+ 3. μƒˆ μ„Έμ…˜ μ‹œμž‘ λ˜λŠ” "CLAUDE.md μ½μ–΄μ€˜"둜 적용
215
+
216
+ πŸ’‘ ν΄λ‘œλ“œλŠ” μžλ™μœΌλ‘œ 루트 CLAUDE.mdλ₯Ό μ°Ύμ•„μ„œ μ½μŠ΅λ‹ˆλ‹€!
217
+
218
+ CodeSyncer μ‚¬μš© μ€€λΉ„ μ™„λ£Œ!
219
+ ```
220
+
221
+ ---
222
+
223
+ ## 🎨 μ»€μŠ€ν„°λ§ˆμ΄μ§• κ°€μ΄λ“œλΌμΈ
224
+
225
+ ### λ°±μ—”λ“œ ν”„λ‘œμ νŠΈ:
226
+ - ARCHITECTURE.md에 API ꡬ쑰 집쀑
227
+ - API μ—”λ“œν¬μΈνŠΈ λ¬Έμ„œν™” μΆ”κ°€
228
+ - λ³΄μ•ˆ 및 데이터 처리 κ·œμΉ™ κ°•μ‘°
229
+ - 제곡된 경우 λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ 포함
230
+
231
+ ### ν”„λ‘ νŠΈμ—”λ“œ ν”„λ‘œμ νŠΈ:
232
+ - μ»΄ν¬λ„ŒνŠΈ ꡬ쑰 λ¬Έμ„œν™”
233
+ - μŠ€νƒ€μΌλ§ 접근법 포함 (CSS modules, Tailwind λ“±)
234
+ - μƒνƒœ 관리 νŒ¨ν„΄ μΆ”κ°€
235
+ - λΌμš°νŒ… ꡬ쑰 λ¬Έμ„œν™”
236
+
237
+ ### λͺ¨λ°”일 ν”„λ‘œμ νŠΈ:
238
+ - ν™”λ©΄ λ„€λΉ„κ²Œμ΄μ…˜ λ¬Έμ„œν™”
239
+ - ν”Œλž«νΌλ³„ λ…ΈνŠΈ 포함 (iOS/Android)
240
+ - λ„€μ΄ν‹°λΈŒ λͺ¨λ“ˆ 연동 μΆ”κ°€
241
+ - λΉŒλ“œ/배포 ν”„λ‘œμ„ΈμŠ€ λ¬Έμ„œν™”
242
+
243
+ ### ν’€μŠ€νƒ ν”„λ‘œμ νŠΈ:
244
+ - λ°±μ—”λ“œ + ν”„λ‘ νŠΈμ—”λ“œ κ°€μ΄λ“œλΌμΈ κ²°ν•©
245
+ - API ↔ UI 연동 λ¬Έμ„œν™”
246
+ - 데이터 흐름 νŒ¨ν„΄ 포함
247
+ - 배포 μ „λž΅ μΆ”κ°€
248
+
249
+ ---
250
+
251
+ ## 🚨 AI μ–΄μ‹œμŠ€ν„΄νŠΈλ₯Ό μœ„ν•œ μ€‘μš” κ·œμΉ™
252
+
253
+ 1. **항상 μ§ˆλ¬Έν•˜κ³ , μΆ”λ‘ ν•˜μ§€ 말 것**:
254
+ - λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 수치
255
+ - API μ—”λ“œν¬μΈνŠΈ
256
+ - λ³΄μ•ˆ μ„€μ •
257
+ - λ°μ΄ν„°λ² μ΄μŠ€ μŠ€ν‚€λ§ˆ
258
+
259
+ 2. **μ² μ €ν•˜κ²Œ 뢄석**:
260
+ - μ‹€μ œ μ½”λ“œλ₯Ό 읽고, μΆ”μΈ‘ κΈˆμ§€
261
+ - package.json μ˜μ‘΄μ„± 확인
262
+ - 폴더 ꡬ쑰 μ™„μ „νžˆ μŠ€μΊ”
263
+ - μ½”λ“œ νŒ¨ν„΄ 식별
264
+
265
+ 3. **λŒ€ν™”ν˜•μœΌλ‘œ μ§„ν–‰**:
266
+ - 각 λ‹¨κ³„μ—μ„œ 확인 μš”μ²­
267
+ - 생성 μ „ 뢄석 κ²°κ³Ό μ œμ‹œ
268
+ - μ‚¬μš©μžκ°€ 이해λ₯Ό μˆ˜μ •ν•  수 있게 ν—ˆμš©
269
+
270
+ 4. **λͺ¨λ“  μ˜ˆμ‹œμ— @codesyncer-* νƒœκ·Έ μ‚¬μš©**:
271
+ - λͺ¨λ“  μ½”λ“œ 주석은 μƒˆ ν˜•μ‹ μ‚¬μš©
272
+ - @claude-* ν˜Έν™˜μ„± μ„€λͺ…
273
+ - μ˜¬λ°”λ₯Έ νƒœκ·Έ μ‚¬μš©λ²• 보여주기
274
+
275
+ ---
276
+
277
+ ## πŸ“š ν…œν”Œλ¦Ώ ν”Œλ ˆμ΄μŠ€ν™€λ”
278
+
279
+ 파일 생성 μ‹œ λ‹€μŒμ„ ꡐ체:
280
+
281
+ - `[PROJECT_NAME]` β†’ μ‚¬μš©μž ν”„λ‘œμ νŠΈλͺ…
282
+ - `[PROJECT_TYPE]` β†’ backend/frontend/mobile/fullstack
283
+ - `[TECH_STACK]` β†’ κ°μ§€λœ 기술 μŠ€νƒ (μ‰Όν‘œλ‘œ ꡬ뢄)
284
+ - `[TODAY]` β†’ ν˜„μž¬ λ‚ μ§œ (YYYY-MM-DD)
285
+ - `[GITHUB_USERNAME]` β†’ μ‚¬μš©μž GitHub μ‚¬μš©μžλͺ…
286
+ - `[KEYWORDS]` β†’ μ‚¬μš©μž 확인 μ˜λ…Ό ν‚€μ›Œλ“œ
287
+ - `[TEMPLATES]` β†’ ν”„λ‘œμ νŠΈ νƒ€μž…λ³„ ν…œν”Œλ¦Ώ
288
+
289
+ ---
290
+
291
+ ## 🎯 성곡 κΈ°μ€€
292
+
293
+ λ‹€μŒ 쑰건이 좩쑱되면 μ„€μ • 성곡:
294
+ - βœ… `.claude/` 폴더에 4개 파일 λͺ¨λ‘ 생성
295
+ - βœ… 루트 CLAUDE.md 생성
296
+ - βœ… λͺ¨λ“  μ€‘μš” 정보λ₯Ό μ‚¬μš©μžκ°€ 확인
297
+ - βœ… λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λ‚˜ λΉ„λ°€ 정보에 λŒ€ν•œ μΆ”λ‘  μ—†μŒ
298
+ - βœ… λͺ¨λ“  λ¬Έμ„œκ°€ @codesyncer-* νƒœκ·Έ ν˜•μ‹ μ‚¬μš©
299
+ - βœ… ν”„λ‘œμ νŠΈλ³„ νŒ¨ν„΄ λ¬Έμ„œν™”
300
+
301
+ ---
302
+
303
+ ## πŸ—‘οΈ μ„€μ • μ™„λ£Œ ν›„
304
+
305
+ 섀정이 μ™„λ£Œλ˜λ©΄ 이 νŒŒμΌμ„ μ‚­μ œν•΄λ„ λ©λ‹ˆλ‹€:
306
+
307
+ ```
308
+ ".claude/SETUP_GUIDE.md μ‚­μ œν•΄μ€˜"
309
+ ```
310
+
311
+ λ˜λŠ” 직접 μ‚­μ œ:
312
+ ```bash
313
+ rm .claude/SETUP_GUIDE.md
314
+ ```
315
+
316
+ ---
317
+
318
+ **버전**: 1.0.0 (Powered by CodeSyncer)
319
+ **λͺ¨λ“œ**: 단일 λ ˆν¬μ§€ν† λ¦¬
320
+ **AI 도ꡬ**: Claude Code μ΅œμ ν™” | ν˜Έν™˜: Cursor, GitHub Copilot, Continue.dev
321
+
322
+ ---
323
+
324
+ *이 μ„€μ • κ°€μ΄λ“œλŠ” CodeSyncer CLI에 μ˜ν•΄ μƒμ„±λ©λ‹ˆλ‹€. λ¬Έμ œλ‚˜ κ°œμ„ μ‚¬ν•­μ€ https://github.com/bitjaru/codesyncer λ°©λ¬Έ*
@@ -1,11 +1,19 @@
1
1
  import { RepositoryInfo } from '../types';
2
+ /**
3
+ * Check if current directory itself is a repository (for single-repo mode)
4
+ */
5
+ export declare function isCurrentDirRepository(dirPath: string): Promise<boolean>;
2
6
  /**
3
7
  * Scan current directory for potential repository folders
4
8
  * Looks for folders that contain package.json, git repos, or common project structures
5
9
  */
6
10
  export declare function scanForRepositories(rootPath: string): Promise<RepositoryInfo[]>;
7
11
  /**
8
- * Check if master CodeSyncer setup exists in root
12
+ * Check if master CodeSyncer setup exists in root (multi-repo mode)
9
13
  */
10
14
  export declare function hasMasterSetup(rootPath: string): Promise<boolean>;
15
+ /**
16
+ * Check if single-repo CodeSyncer setup exists (single-repo mode)
17
+ */
18
+ export declare function hasSingleRepoSetup(rootPath: string): Promise<boolean>;
11
19
  //# sourceMappingURL=scanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAmCrF;AAwDD;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKvE"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9E;AAyCD;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAmCrF;AAiBD;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKvE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3E"}
@@ -33,44 +33,17 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.isCurrentDirRepository = isCurrentDirRepository;
36
37
  exports.scanForRepositories = scanForRepositories;
37
38
  exports.hasMasterSetup = hasMasterSetup;
39
+ exports.hasSingleRepoSetup = hasSingleRepoSetup;
38
40
  const fs = __importStar(require("fs-extra"));
39
41
  const path = __importStar(require("path"));
40
42
  /**
41
- * Scan current directory for potential repository folders
42
- * Looks for folders that contain package.json, git repos, or common project structures
43
+ * Check if current directory itself is a repository (for single-repo mode)
43
44
  */
44
- async function scanForRepositories(rootPath) {
45
- const repos = [];
46
- try {
47
- const entries = await fs.readdir(rootPath, { withFileTypes: true });
48
- for (const entry of entries) {
49
- if (!entry.isDirectory())
50
- continue;
51
- // Skip node_modules, .git, dist, build folders
52
- if (['node_modules', '.git', 'dist', 'build', '.next', 'coverage'].includes(entry.name)) {
53
- continue;
54
- }
55
- const folderPath = path.join(rootPath, entry.name);
56
- const isRepo = await isValidRepository(folderPath);
57
- if (isRepo) {
58
- const hasCodeSyncer = await hasCodeSyncerSetup(folderPath);
59
- repos.push({
60
- name: entry.name,
61
- path: folderPath,
62
- type: undefined, // AI will analyze
63
- description: undefined, // AI will analyze
64
- techStack: undefined, // AI will analyze
65
- hasCodeSyncer,
66
- });
67
- }
68
- }
69
- }
70
- catch (error) {
71
- console.error('Error scanning directories:', error);
72
- }
73
- return repos;
45
+ async function isCurrentDirRepository(dirPath) {
46
+ return isValidRepository(dirPath);
74
47
  }
75
48
  /**
76
49
  * Check if a folder is a valid repository
@@ -109,6 +82,41 @@ async function isValidRepository(folderPath) {
109
82
  return false;
110
83
  }
111
84
  }
85
+ /**
86
+ * Scan current directory for potential repository folders
87
+ * Looks for folders that contain package.json, git repos, or common project structures
88
+ */
89
+ async function scanForRepositories(rootPath) {
90
+ const repos = [];
91
+ try {
92
+ const entries = await fs.readdir(rootPath, { withFileTypes: true });
93
+ for (const entry of entries) {
94
+ if (!entry.isDirectory())
95
+ continue;
96
+ // Skip node_modules, .git, dist, build folders
97
+ if (['node_modules', '.git', 'dist', 'build', '.next', 'coverage'].includes(entry.name)) {
98
+ continue;
99
+ }
100
+ const folderPath = path.join(rootPath, entry.name);
101
+ const isRepo = await isValidRepository(folderPath);
102
+ if (isRepo) {
103
+ const hasCodeSyncer = await hasCodeSyncerSetup(folderPath);
104
+ repos.push({
105
+ name: entry.name,
106
+ path: folderPath,
107
+ type: undefined, // AI will analyze
108
+ description: undefined, // AI will analyze
109
+ techStack: undefined, // AI will analyze
110
+ hasCodeSyncer,
111
+ });
112
+ }
113
+ }
114
+ }
115
+ catch (error) {
116
+ console.error('Error scanning directories:', error);
117
+ }
118
+ return repos;
119
+ }
112
120
  // All project analysis removed - AI will analyze during setup phase
113
121
  // - Project type (frontend/backend/mobile/fullstack)
114
122
  // - Tech stack
@@ -122,11 +130,18 @@ async function hasCodeSyncerSetup(folderPath) {
122
130
  return (await fs.pathExists(claudePath)) || (await fs.pathExists(vibeSyncPath));
123
131
  }
124
132
  /**
125
- * Check if master CodeSyncer setup exists in root
133
+ * Check if master CodeSyncer setup exists in root (multi-repo mode)
126
134
  */
127
135
  async function hasMasterSetup(rootPath) {
128
136
  const masterPath = path.join(rootPath, '.codesyncer');
129
137
  const legacyMasterPath = path.join(rootPath, '.master');
130
138
  return (await fs.pathExists(masterPath)) || (await fs.pathExists(legacyMasterPath));
131
139
  }
140
+ /**
141
+ * Check if single-repo CodeSyncer setup exists (single-repo mode)
142
+ */
143
+ async function hasSingleRepoSetup(rootPath) {
144
+ const claudePath = path.join(rootPath, '.claude');
145
+ return fs.pathExists(claudePath);
146
+ }
132
147
  //# sourceMappingURL=scanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../src/utils/scanner.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codesyncer",
3
- "version": "2.2.3",
3
+ "version": "2.3.0",
4
4
  "description": "AI-powered multi-repository collaboration system - Works with Claude Code, Cursor, GitHub Copilot, and more",
5
5
  "keywords": [
6
6
  "ai-collaboration",