sonamu 0.8.24 → 0.8.26
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/dist/api/__tests__/config.test.js +189 -0
- package/dist/api/config.d.ts.map +1 -1
- package/dist/api/config.js +7 -2
- package/dist/api/sonamu.d.ts.map +1 -1
- package/dist/api/sonamu.js +14 -10
- package/dist/auth/index.d.ts +1 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +2 -1
- package/dist/auth/knex-adapter.d.ts +23 -0
- package/dist/auth/knex-adapter.d.ts.map +1 -0
- package/dist/auth/knex-adapter.js +163 -0
- package/dist/auth/plugins/wrappers/admin.d.ts +2 -2
- package/dist/bin/__tests__/ts-loader-register.test.js +45 -0
- package/dist/bin/cli.js +47 -9
- package/dist/bin/ts-loader-register.js +3 -29
- package/dist/bin/ts-loader-registration.d.ts +2 -0
- package/dist/bin/ts-loader-registration.d.ts.map +1 -0
- package/dist/bin/ts-loader-registration.js +42 -0
- package/dist/cone/cone-generator.js +3 -3
- package/dist/database/puri-subset.test-d.js +9 -1
- package/dist/database/puri-subset.types.d.ts +1 -1
- package/dist/database/puri-subset.types.d.ts.map +1 -1
- package/dist/database/puri-subset.types.js +1 -1
- package/dist/testing/fixture-generator.js +5 -5
- package/dist/ui/ai-client.js +2 -2
- package/dist/ui/api.d.ts.map +1 -1
- package/dist/ui/api.js +14 -14
- package/dist/ui/cdd-service.d.ts +15 -18
- package/dist/ui/cdd-service.d.ts.map +1 -1
- package/dist/ui/cdd-service.js +246 -222
- package/dist/ui/cdd-types.d.ts +41 -68
- package/dist/ui/cdd-types.d.ts.map +1 -1
- package/dist/ui/cdd-types.js +2 -2
- package/dist/ui-web/assets/index-CKo0Z2Iu.css +1 -0
- package/dist/ui-web/assets/{index-CxiydzeC.js → index-DK-2aacv.js} +83 -83
- package/dist/ui-web/index.html +2 -2
- package/package.json +6 -2
- package/src/api/__tests__/config.test.ts +225 -0
- package/src/api/config.ts +10 -4
- package/src/api/sonamu.ts +16 -13
- package/src/auth/index.ts +1 -0
- package/src/auth/knex-adapter.ts +208 -0
- package/src/bin/__tests__/ts-loader-register.test.ts +62 -0
- package/src/bin/cli.ts +52 -9
- package/src/bin/ts-loader-register.ts +2 -32
- package/src/bin/ts-loader-registration.ts +55 -0
- package/src/cone/cone-generator.ts +2 -2
- package/src/database/puri-subset.test-d.ts +102 -0
- package/src/database/puri-subset.types.ts +1 -1
- package/src/skills/commands/sonamu-skills.md +20 -0
- package/src/skills/sonamu/SKILL.md +179 -137
- package/src/skills/sonamu/ai-agents.md +69 -69
- package/src/skills/sonamu/api.md +147 -147
- package/src/skills/sonamu/auth-migration.md +220 -220
- package/src/skills/sonamu/auth-plugins.md +83 -83
- package/src/skills/sonamu/auth.md +106 -106
- package/src/skills/sonamu/cdd.md +65 -200
- package/src/skills/sonamu/cone.md +138 -138
- package/src/skills/sonamu/config.md +191 -191
- package/src/skills/sonamu/create-sonamu.md +66 -66
- package/src/skills/sonamu/database.md +158 -158
- package/src/skills/sonamu/entity-basic.md +292 -293
- package/src/skills/sonamu/entity-relations.md +246 -246
- package/src/skills/sonamu/entity-validation-checklist.md +124 -124
- package/src/skills/sonamu/fixture-cli.md +231 -231
- package/src/skills/sonamu/framework-change.md +37 -37
- package/src/skills/sonamu/frontend.md +223 -223
- package/src/skills/sonamu/i18n.md +82 -82
- package/src/skills/sonamu/migration.md +77 -77
- package/src/skills/sonamu/model.md +222 -222
- package/src/skills/sonamu/naite.md +86 -86
- package/src/skills/sonamu/project-init.md +228 -228
- package/src/skills/sonamu/puri.md +122 -122
- package/src/skills/sonamu/scaffolding.md +154 -154
- package/src/skills/sonamu/skill-contribution.md +124 -124
- package/src/skills/sonamu/subset.md +46 -46
- package/src/skills/sonamu/tasks.md +82 -82
- package/src/skills/sonamu/testing-devrunner.md +147 -147
- package/src/skills/sonamu/testing.md +673 -673
- package/src/skills/sonamu/upsert.md +79 -79
- package/src/skills/sonamu/vector.md +67 -67
- package/src/testing/fixture-generator.ts +4 -4
- package/src/ui/ai-client.ts +1 -1
- package/src/ui/api.ts +18 -17
- package/src/ui/cdd-service.ts +264 -254
- package/src/ui/cdd-types.ts +40 -75
- package/dist/ui-web/assets/index-BrQKU3j9.css +0 -1
- package/src/skills/sonamu/workflow.md +0 -317
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: sonamu-workflow
|
|
3
|
-
description: Sonamu 전체 개발 워크플로우. 프로젝트 생성부터 Frontend 개발까지 단계별 가이드. dev 서버 상시 실행 전제, pnpm sonamu test 기본 사용. Use when starting a new feature or system from scratch.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Sonamu 전체 개발 워크플로우
|
|
7
|
-
|
|
8
|
-
사용자가 시스템 구축을 요청하면 다음 워크플로우에 따라 진행한다.
|
|
9
|
-
|
|
10
|
-
**CRITICAL: 각 PHASE 내의 Step은 반드시 순서대로 진행한다. Step을 건너뛰거나 순서를 바꾸지 않는다.** 단, 사용자가 특정 작업부터 지시하면 해당 PHASE부터 시작한다 (SKILL.md "시작 지점 판단" 참조).
|
|
11
|
-
|
|
12
|
-
**CRITICAL: dev 서버(`pnpm dev`)는 항상 실행 중이어야 한다.** 실행 중이 아니면 확인 후 올린 뒤 작업을 진행한다.
|
|
13
|
-
|
|
14
|
-
**CRITICAL: 테스트는 `pnpm sonamu test`를 사용한다.** `pnpm test`는 CI 또는 dev 서버 없이 실행해야 할 때만 사용한다.
|
|
15
|
-
|
|
16
|
-
**CRITICAL: 모든 단계는 사용자에게 결과를 보고하고 확인을 받은 후 다음 단계로 넘어간다.** 자체 판단으로 사용자 확인 없이 여러 단계를 연속 진행하지 않는다.
|
|
17
|
-
|
|
18
|
-
**CRITICAL: 요구사항이 이미 제공된 경우에도 설계 및 비즈니스 로직은 반드시 사용자와 함께 확인한다.**
|
|
19
|
-
요구사항 명세는 출발점일 뿐이다. Entity 구조, 관계, 필드, 상태 전이, 권한 규칙 등은 항상 사용자에게 질문하고 승인을 받아야 한다. 추측하지 말고 확인한다.
|
|
20
|
-
|
|
21
|
-
---
|
|
22
|
-
|
|
23
|
-
## PHASE 0: 프로젝트 생성 및 초기 설정
|
|
24
|
-
|
|
25
|
-
**참조 스킬:** project-init.md, create-sonamu.md, auth.md, auth-plugins.md
|
|
26
|
-
|
|
27
|
-
### 1. 요구사항 수집 및 프로젝트 생성
|
|
28
|
-
|
|
29
|
-
1. 사용자가 요구사항 prompt를 입력
|
|
30
|
-
2. Sonamu skills를 읽고 `pnpm create sonamu [프로젝트명] --yes`로 프로젝트 생성
|
|
31
|
-
3. `pnpm install` 실행
|
|
32
|
-
|
|
33
|
-
### 2. 요구사항 파악 및 도메인 식별
|
|
34
|
-
|
|
35
|
-
**CRITICAL: 이 단계(Step 4~5)를 완료하기 전에 auth generate나 인프라 기동으로 넘어가지 않는다.**
|
|
36
|
-
|
|
37
|
-
4. 요구사항을 파악하고 도메인을 식별. 도메인별로 작은 단위로 사용자에게 확인받기
|
|
38
|
-
- 한 번에 전체를 확인하지 말고 도메인별로 나누어 확인
|
|
39
|
-
- "이 부분이 맞나요?" 식으로 구체적으로 질문
|
|
40
|
-
5. 식별된 도메인 목록을 사용자에게 확인받기. PHASE 1에서 도메인별 `*.contract.md`를 작성함
|
|
41
|
-
|
|
42
|
-
### 3. 설정 확인
|
|
43
|
-
|
|
44
|
-
**CRITICAL: 설정 확인 결과를 사용자에게 보고하고 승인을 받은 후 다음 단계로 넘어간다. 자체 판단으로 건너뛰지 않는다.**
|
|
45
|
-
|
|
46
|
-
7. `sonamu.config.ts`에서 `test.devRunner.enabled: true`인지 확인. 아니면 true로 설정
|
|
47
|
-
8. `.env` 파일 확인:
|
|
48
|
-
- DB 연결 설정 확인
|
|
49
|
-
- `ANTHROPIC_API_KEY` 설정 여부 확인 → 없으면 사용자에게 직접 저장하도록 안내 (Claude Code가 직접 키를 입력하지 않음)
|
|
50
|
-
9. 확인 결과를 사용자에게 보고하고 승인 대기
|
|
51
|
-
|
|
52
|
-
### 4. 인프라 기동
|
|
53
|
-
|
|
54
|
-
10. Docker 띄우기 (`pnpm docker:up` 등)
|
|
55
|
-
11. 빌드 시도 — 최초에는 빌드가 안 될 수도 있는데, 바로 모든 것을 수정하려 하지 말고 dev 서버 먼저 띄워보기
|
|
56
|
-
12. dev 서버 띄우기 (`pnpm dev`)
|
|
57
|
-
|
|
58
|
-
### 5. Auth 엔티티 생성
|
|
59
|
-
|
|
60
|
-
**플러그인이 필요한 경우 `auth-plugins.md`를 참조하여 `--plugins` 옵션을 사용한다.**
|
|
61
|
-
|
|
62
|
-
13. `pnpm sonamu auth generate`로 better-auth 관련 엔티티 생성
|
|
63
|
-
14. User 엔티티의 prop 중 `id`의 cone에 `"fixtureStrategy": "sequence"` 추가
|
|
64
|
-
- **이 설정은 이후에도 변경되어서는 안 됨**
|
|
65
|
-
15. auth generate로 생성된 엔티티(User, Session, Account, Verification) 확인 후 Sonamu UI에서 사용자에게 확인 요청
|
|
66
|
-
16. 사용자 확인 후 migration 진행
|
|
67
|
-
17. Docker로 띄운 DB에서 테이블이 생성되었는지 확인
|
|
68
|
-
|
|
69
|
-
### 6. Users 테이블 시퀀스 설정
|
|
70
|
-
|
|
71
|
-
**CRITICAL: Auth 엔티티 migration 완료 직후 반드시 실행한다. 이 단계를 건너뛰면 이후 테스트와 fixture 생성이 실패한다.**
|
|
72
|
-
|
|
73
|
-
18. `CREATE SEQUENCE users_id_seq;` 실행
|
|
74
|
-
19. `ALTER TABLE users ALTER COLUMN id SET DEFAULT nextval('users_id_seq')::text;` 실행
|
|
75
|
-
|
|
76
|
-
**완료 기준:**
|
|
77
|
-
|
|
78
|
-
- [ ] 프로젝트 생성 완료
|
|
79
|
-
- [ ] 도메인 목록 식별 및 사용자 승인 완료
|
|
80
|
-
- [ ] sonamu.config.ts, .env 설정 확인 및 사용자 승인 완료
|
|
81
|
-
- [ ] Docker, dev 서버 실행 중
|
|
82
|
-
- [ ] Auth 엔티티 생성 및 migration 완료
|
|
83
|
-
- [ ] Users 테이블 시퀀스 설정 완료
|
|
84
|
-
|
|
85
|
-
---
|
|
86
|
-
|
|
87
|
-
## PHASE 1: 도메인 Logic 문서화
|
|
88
|
-
|
|
89
|
-
**참조 스킬:** cdd.md
|
|
90
|
-
|
|
91
|
-
**CRITICAL: 이 PHASE가 완료되기 전에 엔티티 설계(PHASE 2)를 시작하지 않는다.**
|
|
92
|
-
|
|
93
|
-
### 7. 도메인별 `*.contract.md` 작성
|
|
94
|
-
|
|
95
|
-
20. PHASE 0에서 확인된 도메인별로 `contract/{domain}/{domain}.contract.md` 작성
|
|
96
|
-
- 도메인 폴더명은 영문 소문자 (예: `auth`, `organization`, `research`)
|
|
97
|
-
- 도메인 규칙, 상태 전이, 권한, Edge Cases 등 코드만으로 파악하기 어려운 결정 근거 포함
|
|
98
|
-
- 처음부터 완벽할 필요 없음 — 사용자와 대화하면서 점진적으로 정리
|
|
99
|
-
21. 도메인별로 작성 후 사용자에게 확인받기 (도메인별로 하나씩)
|
|
100
|
-
|
|
101
|
-
**`*.contract.md` 형식:**
|
|
102
|
-
|
|
103
|
-
```markdown
|
|
104
|
-
# {도메인} 비즈니스 로직
|
|
105
|
-
|
|
106
|
-
## 규칙
|
|
107
|
-
- 규칙과 결정 근거
|
|
108
|
-
|
|
109
|
-
## 워크플로우
|
|
110
|
-
1. ...
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
**완료 기준:**
|
|
114
|
-
|
|
115
|
-
- [ ] 모든 도메인의 `contract/{domain}/{domain}.contract.md` 작성 완료
|
|
116
|
-
- [ ] 사용자 도메인별 확인 완료
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
## PHASE 2: 엔티티 설계
|
|
121
|
-
|
|
122
|
-
**참조 스킬:** entity-basic.md, entity-relations.md
|
|
123
|
-
|
|
124
|
-
**전제 조건:** PHASE 1 완료 (모든 도메인 `*.contract.md` 사용자 확인 완료)
|
|
125
|
-
|
|
126
|
-
### 8. 엔티티 설계
|
|
127
|
-
|
|
128
|
-
20. 사용자 요구사항에 맞는 엔티티 설계
|
|
129
|
-
- 설계하면서 사용자에게 비즈니스 로직에 맞는지 **지속적으로 디테일하게** 확인받을 것
|
|
130
|
-
- 관계 유형(BelongsToOne, HasMany, ManyToMany) 결정 시 반드시 사용자 확인
|
|
131
|
-
- 필드 구성, enum 값, nullable 여부 등 세부 사항도 확인
|
|
132
|
-
- **파일 첨부가 필요한 엔티티가 있는지 사용자에게 확인한다.** 있다면 다음을 질문한다:
|
|
133
|
-
- 어떤 엔티티에 파일을 첨부할 것인가?
|
|
134
|
-
- 파일 종류(file_type)를 어떻게 구분할 것인가? (예: `task_order`, `result_report` 등)
|
|
135
|
-
- 파일 첨부 여부에 따라 상태(status)가 자동 변경되는 로직이 있는가?
|
|
136
|
-
- 별도 File 엔티티를 두고 `entity_type` + `entity_id` 조합으로 연결할 것인가, 아니면 다른 방식으로 구현할 것인가?
|
|
137
|
-
21. 최종 완료된 설계안을 `.claude/skills/project/architecture.md`에 기록
|
|
138
|
-
|
|
139
|
-
**완료 기준:**
|
|
140
|
-
|
|
141
|
-
- [ ] 모든 엔티티 설계 완료 및 사용자 승인
|
|
142
|
-
- [ ] architecture.md 기록 완료
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## PHASE 3: 엔티티 생성 및 마이그레이션
|
|
147
|
-
|
|
148
|
-
**참조 스킬:** entity-basic.md, entity-validation-checklist.md, migration.md
|
|
149
|
-
|
|
150
|
-
### 9. 엔티티 생성
|
|
151
|
-
|
|
152
|
-
22. 설계에 따라 **batch로** entity.json 생성
|
|
153
|
-
23. biome check, type check
|
|
154
|
-
24. 문제 없이 빌드되는지 확인
|
|
155
|
-
|
|
156
|
-
### 10. 마이그레이션
|
|
157
|
-
|
|
158
|
-
25. 사용자에게 Sonamu UI와 CLI 중 어떤 방식으로 migration을 진행할지 확인 후 실행
|
|
159
|
-
26. 실제 테이블이 생성되었는지 확인
|
|
160
|
-
|
|
161
|
-
### 11. Cone 및 Scaffolding
|
|
162
|
-
|
|
163
|
-
**참조 스킬:** cone.md
|
|
164
|
-
|
|
165
|
-
**CRITICAL: Scaffolding 전에 반드시 Cone 생성을 먼저 실행한다. Cone이 없으면 fixture 생성이 실패한다.**
|
|
166
|
-
|
|
167
|
-
27. Cone 생성 (`pnpm sonamu cone gen --all`)
|
|
168
|
-
- LLM으로 생성한다. 요구사항 기반으로 컨텍스트에 맞는 cone을 생성하기 위해 LLM이 필요하다.
|
|
169
|
-
- `.env`에 `ANTHROPIC_API_KEY`가 설정되어 있는지 확인. 없으면 사용자에게 안내한다.
|
|
170
|
-
- 생성된 cone을 사용자에게 확인받는다.
|
|
171
|
-
- 상세 사용법은 cone.md 참조
|
|
172
|
-
28. Scaffolding 실행 — 다음 **모든 항목을 scaffolding** 해야 함:
|
|
173
|
-
- model
|
|
174
|
-
- model_test
|
|
175
|
-
- view_list
|
|
176
|
-
- view_search_input
|
|
177
|
-
- view_form
|
|
178
|
-
- Sonamu UI에서 사용자가 실행하거나 Claude Code가 CLI로 실행
|
|
179
|
-
29. 오류 없이 생성되는지 확인
|
|
180
|
-
30. biome check, type check
|
|
181
|
-
31. 오류 없이 빌드되는지 확인
|
|
182
|
-
32. `pnpm dump`으로 DB 덤프 파일 생성
|
|
183
|
-
|
|
184
|
-
**완료 기준:**
|
|
185
|
-
|
|
186
|
-
- [ ] 모든 엔티티 entity.json 생성 완료
|
|
187
|
-
- [ ] migration 완료, DB 테이블 확인
|
|
188
|
-
- [ ] cone 생성 완료
|
|
189
|
-
- [ ] scaffolding 완료 (model, model_test, view_list, view_search_input, view_form 전부)
|
|
190
|
-
- [ ] biome check, type check, build 모두 통과
|
|
191
|
-
- [ ] `pnpm dump` 실행 완료
|
|
192
|
-
|
|
193
|
-
---
|
|
194
|
-
|
|
195
|
-
## PHASE 4: 테스트 및 API 구현
|
|
196
|
-
|
|
197
|
-
**참조 스킬:** testing.md, testing-devrunner.md, naite.md, cdd.md
|
|
198
|
-
|
|
199
|
-
### 12. AC 구체화 및 Claim 구성
|
|
200
|
-
|
|
201
|
-
**AC(수락 기준)는 테스트 파일의 describe/test 이름이다.** 별도 문서로 관리하지 않는다.
|
|
202
|
-
|
|
203
|
-
33. `contract/**/*.contract.md`와 실제 코드를 참고하여 도메인별 AC 목록 초안 작성
|
|
204
|
-
- **항상 User 관련 테스트가 우선**
|
|
205
|
-
34. 사용자와 논의하며 `pnpm cdd ac add`로 테스트 스켈레톤 생성
|
|
206
|
-
35. `pnpm cdd ac list`로 확정된 AC 목록 확인
|
|
207
|
-
36. Claim을 `tmp/claims/`에 YAML로 작성 (`surface` → `implement` 순)
|
|
208
|
-
- 상세 Claim 형식은 cdd.md 참조
|
|
209
|
-
|
|
210
|
-
### 13. Claim 실행 (반복)
|
|
211
|
-
|
|
212
|
-
각 Claim마다:
|
|
213
|
-
|
|
214
|
-
37. **AC 작성 + 구현 교차 반복** (AC 하나 → 구현 → 다음 AC → 구현)
|
|
215
|
-
38. biome check, type check
|
|
216
|
-
39. **`pnpm sonamu test`로 테스트 돌려보기**
|
|
217
|
-
- dev 서버가 올라가있지 않으면 올린 뒤 실행
|
|
218
|
-
|
|
219
|
-
### 14. 전체 검증
|
|
220
|
-
|
|
221
|
-
40. 모든 Claim 완료 후 전체 biome check, type check 및 빌드 확인
|
|
222
|
-
41. **`pnpm sonamu test`로 전체 테스트 실행**
|
|
223
|
-
|
|
224
|
-
**완료 기준:**
|
|
225
|
-
|
|
226
|
-
- [ ] 모든 도메인 AC 정의 완료 (테스트 파일에 스켈레톤으로 존재)
|
|
227
|
-
- [ ] 모든 Claim 실행 완료
|
|
228
|
-
- [ ] 모든 테스트 통과
|
|
229
|
-
- [ ] 전체 biome check, type check, build 통과
|
|
230
|
-
|
|
231
|
-
---
|
|
232
|
-
|
|
233
|
-
## PHASE 5: Fixture 생성
|
|
234
|
-
|
|
235
|
-
### 15. Fixture 생성
|
|
236
|
-
|
|
237
|
-
42. 사용자에게 fixture 생성할지 확인
|
|
238
|
-
43. 모든 엔티티의 prop에 `cone.note`가 존재하는지 체크
|
|
239
|
-
- cone.note가 비어있는 prop이 있으면 사용자에게 보고하고 `pnpm sonamu cone gen --use-llm`으로 cone을 재생성할지 확인
|
|
240
|
-
- cone.note가 있어야 LLM이 맥락에 맞는 fixture 데이터를 생성할 수 있다
|
|
241
|
-
44. 생성할 데이터의 최소 row 수 확인 (최소 10 ~ 최대 100)
|
|
242
|
-
45. **better-auth 엔티티 먼저 생성** (의존성 순서 필수):
|
|
243
|
-
- User → Account → Session 순으로 생성
|
|
244
|
-
- `pnpm sonamu fixture gen --include User,Account,Session --count 10 --use-llm`
|
|
245
|
-
- **CRITICAL**: User.id string PK를 위한 `users_id_seq`가 생성되어 있어야 함 (PHASE 0 Step 18-19에서 설정)
|
|
246
|
-
- 상세 내용은 `auth-migration.md` "Better-auth 엔티티 Fixture 생성" 섹션 참조
|
|
247
|
-
46. 승인하면 Claim 단위로 fixture 생성 (LLM 사용 필수)
|
|
248
|
-
- `--use-llm` 옵션은 반드시 사용 (cone.note 기반 도메인 맥락 반영 필수)
|
|
249
|
-
47. 실제 DB에 생성되었는지 사용자에게 확인 요청
|
|
250
|
-
48. **`pnpm sonamu test`로 전체 테스트 재실행**
|
|
251
|
-
49. `pnpm dump`으로 DB 덤프 파일 생성
|
|
252
|
-
|
|
253
|
-
**완료 기준:**
|
|
254
|
-
|
|
255
|
-
- [ ] cone.note 존재 여부 체크 완료
|
|
256
|
-
- [ ] better-auth 엔티티 (User, Account, Session) fixture 먼저 생성 완료
|
|
257
|
-
- [ ] fixture 데이터 생성 완료 (사용자 승인 시, `--use-llm` 사용)
|
|
258
|
-
- [ ] DB에 데이터 존재 확인
|
|
259
|
-
- [ ] 전체 테스트 통과
|
|
260
|
-
- [ ] `pnpm dump` 실행 완료
|
|
261
|
-
|
|
262
|
-
---
|
|
263
|
-
|
|
264
|
-
## PHASE 6: Frontend 개발
|
|
265
|
-
|
|
266
|
-
**참조 스킬:** frontend.md
|
|
267
|
-
|
|
268
|
-
### 16. Frontend 계획
|
|
269
|
-
|
|
270
|
-
49. Frontend 개발 진행할지 사용자에게 확인
|
|
271
|
-
50. 승인 후 도메인별 Frontend 개발 계획을 `contract/{domain}/{domain}.contract.md`에 추가하거나 사용자와 구두로 확인
|
|
272
|
-
|
|
273
|
-
### 17. Batch별 Frontend 개발 (반복)
|
|
274
|
-
|
|
275
|
-
51. batch 대로 조금씩 진행하며 **사용자에게 확인 요청**
|
|
276
|
-
52. 사용자가 브라우저에서 확인 후 Claude Code에게 피드백
|
|
277
|
-
- "확인했다"
|
|
278
|
-
- "로직대로 된다"
|
|
279
|
-
- "이 부분이 잘 안 된다"
|
|
280
|
-
- 등등
|
|
281
|
-
|
|
282
|
-
**완료 기준:**
|
|
283
|
-
|
|
284
|
-
- [ ] 모든 batch의 Frontend 구현 완료
|
|
285
|
-
- [ ] 사용자 확인 및 피드백 반영 완료
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## 프로젝트 문서 구조
|
|
290
|
-
|
|
291
|
-
워크플로우 진행 중 다음 문서들이 생성된다:
|
|
292
|
-
|
|
293
|
-
```
|
|
294
|
-
contract/
|
|
295
|
-
└── {domain}/
|
|
296
|
-
└── {domain}.contract.md # PHASE 1: 도메인 규칙 + 결정 근거 (영구 문서)
|
|
297
|
-
|
|
298
|
-
.claude/skills/project/
|
|
299
|
-
└── architecture.md # PHASE 2: 엔티티 설계안
|
|
300
|
-
|
|
301
|
-
tmp/claims/ # PHASE 4: 실행 중 Claim YAML (완료 후 폐기)
|
|
302
|
-
```
|
|
303
|
-
|
|
304
|
-
**Ground truth는 코드다.** `*.contract.md`는 코드 결정의 근거를 기록하는 문서이지 선행 정의서가 아니다. 코드와 `*.contract.md`가 충돌하면 코드를 우선한다.
|
|
305
|
-
|
|
306
|
-
---
|
|
307
|
-
|
|
308
|
-
## 핵심 원칙
|
|
309
|
-
|
|
310
|
-
1. **dev 서버는 항상 실행 중** — 꺼져있으면 올린 뒤 작업
|
|
311
|
-
2. **테스트는 `pnpm sonamu test`** — `pnpm test`는 CI용
|
|
312
|
-
3. **순서를 지킬 것** — 단계를 건너뛰지 않음
|
|
313
|
-
4. **사용자에게 자주 확인** — 추측하지 말고 질문
|
|
314
|
-
5. **Claim 단위로 작업** — 한 번에 모든 것을 하지 않음
|
|
315
|
-
6. **User 관련이 항상 우선** — 테스트, API, Frontend 모두
|
|
316
|
-
7. **Ground truth는 코드** — `*.contract.md`는 근거 기록, 코드와 충돌 시 코드 우선
|
|
317
|
-
8. **신규는 contract→Claim→AC→implement, 변경은 code→Claim→contract 갱신**
|