도구 명칭을 cimery(Civil + BIM + -ery)로 확정. 웹(PWA)·데스크톱(Tauri) 듀얼 타깃의 Rust 기반 스택을 잠정 확정하고 근거와 후속 결정 항목을 ADR로 기록. - 기하 커널: OpenCascade.js(웹) / opencascade-rs(데스크톱) 이원화, GeomKernel trait 추상화 - 렌더: wgpu → WebGPU - 순수 Rust 공유 모듈: LPG 증분 엔진, FBM Feature, 선형·LRS - 기존 C# 엔진은 알고리즘·지식만 승계 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
85 lines
5.0 KiB
Markdown
85 lines
5.0 KiB
Markdown
# CLAUDE.md
|
|
|
|
## 나는 누구인가
|
|
- **이름:** 김민성 (kimminsung)
|
|
- **하는 일:** BIM SW 시니어 개발자. 25년간 3D 뷰어·에디터·모델링툴, DWG·CAD 엔진 개발.
|
|
- **핵심 가치:** 기능은 좁히되 **품질·아키텍처는 타협 없음.** MVP식이라도 스파게티 금지. 차근차근.
|
|
|
|
## 나의 역할들
|
|
|
|
### cimery 개발자
|
|
- **하는 일:** `cimery` — Revit의 토목 버전 파라메트릭 모델링 도구 설계·개발. (명칭: Civil + BIM + -ery)
|
|
- **주요 관심사:** 토목 구조물(MVP: 거더교) 모델링, 선형·GIS 연동, 증분 인터랙티브 파라메트릭.
|
|
- **기술 스택 (2026-04-14 확정):** Rust 기반. 웹(PWA) + 데스크톱(Tauri) 듀얼 타깃. 기하 커널은 OpenCascade.js(웹) / opencascade-rs(데스크톱) 이원화, `GeomKernel` trait로 추상화. 렌더 wgpu→WebGPU. 기존 C# 엔진은 알고리즘·지식만 승계. 상세: `Output/reports/ADR-001-tech-stack.md`.
|
|
|
|
### ParaWiki 큐레이터
|
|
- **하는 일:** AI가 읽고 활용할 수 있는 파라메트릭 모델링 지식 저장소를 Obsidian 기반으로 구축.
|
|
- **주요 관심사:** AI 친화적 구조, 빠른 인덱싱·링크, 잠정 설계 원칙과 연결되는 자료 우선 수집.
|
|
|
|
## 나의 비전과 목표
|
|
- **이루고자 하는 것:** 토목 엔지니어링 특성을 반영한 파라메트릭 모델링 도구를 시장에 공급.
|
|
- **두 단계 전략:**
|
|
1. ParaWiki — "AI를 위한 세컨드 브레인" 지식 저장소 구축.
|
|
2. AI와 함께 토목용 파라메트릭 모델링 도구 개발.
|
|
- **타겟 독자/고객:** 토목 설계자, 시공사.
|
|
|
|
## AI에게 기대하는 것
|
|
- **전부.** 개념 QA, 코드 초안 생성, 아키텍처 제안, 논문→구현 번역, 코드 리뷰·리팩터링.
|
|
- ParaWiki의 자료를 근거로 답할 것.
|
|
- 제품 스펙을 확정하기 전에 **저장소 구축**을 우선 도울 것.
|
|
|
|
## 작업 규칙
|
|
- **언어:** 한국어로 작성. **중요 용어는 영어 병기** (예: 선형(alignment)).
|
|
- **톤:** 간결·명료. 장황한 설명·불필요한 예시 나열 금지.
|
|
- **질문:** 한 번에 **2~3개 이하**, 각 질문은 한 줄.
|
|
- **결과물 형태:** AI가 활용하기 좋은 구조가 1순위. 사람은 최상위 index 링크로 접근.
|
|
- **잠정 설계 원칙 (수집·개발의 나침반):**
|
|
1. 비(非)패밀리 조립 단위
|
|
2. 증분 인터랙티브 파라메트릭(incremental)
|
|
3. 선형·GIS 기반 좌표계
|
|
자료 편입 시 이 원칙 중 최소 하나와 연결되는지 확인.
|
|
- **MVP 원칙:** 기능은 좁힘 + 품질·아키텍처는 타협 없음. 철근 설계는 v2로 미룸.
|
|
|
|
## 위키 운영 규칙 (Karpathy LLM Wiki 패턴)
|
|
|
|
폴더 구조:
|
|
- `raw/` — **불변 원본.** 인풋 유형별 하위 폴더(ai-research/papers/standards/tools/notes). 이 아래 파일은 **절대 수정·삭제 금지.**
|
|
- `wiki/` — **AI가 컴파일하는 위키 페이지.** 여기만 생성/수정 가능. `index.md`, `log.md` 포함.
|
|
- `Output/` — **결과물** (아키텍처 문서, 코드 초안, 조사 보고서 등).
|
|
|
|
**10대 규칙:**
|
|
1. `raw/`는 절대 수정 금지 (불변 원본).
|
|
2. wiki 페이지 생성·삭제 시 `wiki/index.md` 필수 업데이트.
|
|
3. 모든 오퍼레이션마다 `wiki/log.md`에 기록.
|
|
4. 내부 참조는 **wikilink** 형식 (`[[페이지명]]`).
|
|
5. 모든 wiki 페이지 상단에 **YAML frontmatter** (title, tags, sources, updated).
|
|
6. 모순 발견 시 **양쪽 소스 모두 인용.**
|
|
7. 소스 요약은 **사실만**, 해석은 개념 페이지에서.
|
|
8. 질의 시 `wiki/index.md` 먼저, `raw/`는 마지막 수단.
|
|
9. **새 페이지보다 기존 페이지 업데이트 우선.**
|
|
10. `index.md` 항목은 **한 줄, 120자 이내.**
|
|
|
|
각 주요 폴더의 세부 규칙은 해당 폴더의 `CLAUDE.md` 참조.
|
|
|
|
## Obsidian CLI 사용
|
|
|
|
이 프로젝트 볼트는 Obsidian 공식 CLI(1.12.4+)로 검색 가능. 파일시스템 grep보다 빠르고 Obsidian 인덱스·wikilink·백링크를 활용한다.
|
|
|
|
**문법:** `obsidian <command> key=value key=value` (Unix 플래그 아님)
|
|
값에 공백이 있으면 따옴표: `query="증분 파라메트릭"`
|
|
|
|
**주요 명령:**
|
|
- `obsidian search query="<질의>" path=wiki` — 파일명 목록 반환
|
|
- `obsidian search:context query="<질의>" path=wiki` — 매칭 라인 컨텍스트 포함
|
|
- `obsidian read file="<페이지명>"` — 파일 내용 읽기 (wikilink 이름으로 해결)
|
|
- `obsidian backlinks file="<페이지명>"` — 백링크 조회
|
|
- `obsidian outline file="<페이지명>"` — 헤딩 목록
|
|
- `obsidian files folder=wiki` — wiki/ 파일 목록
|
|
- `obsidian open file="<페이지명>"` — 앱에서 페이지 열기
|
|
- `obsidian help` / `obsidian help <command>` — 전체·개별 도움말
|
|
|
|
**사용 원칙:**
|
|
- `wiki/` 검색 시 `obsidian search:context` 우선 (Obsidian 앱이 실행 중이어야 함). 미실행·미설치 시 Grep 폴백.
|
|
- 파일 읽기는 경로 대신 이름(`file=...`) 사용 가능 — Read 도구보다 wikilink 친화적.
|
|
- 복잡한 질의·개념 QA는 `query` skill이 상위 레이어 (index.md → 필요 시 CLI 보조).
|