--- domain: tools last_rule_review_commit: 7ea0b484d2c5c73e85f4ef4b16cba20f25cb4b51 last_rule_updated_at: 2026-06-01 --- # tools ## 목적 / 책임 Proto 생성·동기화 스크립트를 담당한다. 현재 Dart/Go proto 바인딩 생성과 Go/Kotlin proto 스키마 동기화 검증 도구를 관리한다. ## 포함 경로 - `tools/` — proto 생성/검증 스크립트 - `PORTING_GUIDE.md` — 새 언어 구현 절차 가이드 ## 제외 경로 - `*/crosstest/` — 각 언어 구현체 도메인에 속함 - `dart/lib/`, `go/*.go`, `kotlin/src/`, `python/proto_socket/`, `typescript/src/` — 각 언어 구현체 또는 protocol 도메인 - `proto/`, `*/packets/`, `kotlin/src/main/proto/` — protocol 도메인 ## 주요 구성 요소 - `tools/generate_proto.sh` — Dart/Go proto 바인딩 생성 후 동기화 검사 실행 - `tools/check_proto_sync.sh` — `proto/message_common.proto`와 Go/Kotlin proto 복사본의 스키마 동기화 검증 ## 유지할 패턴 - proto 변경 후 항상 generate → check_sync 순서로 실행 - Bash 스크립트는 `set -euo pipefail`과 repo root 기준 경로 계산 패턴을 유지 - 동기화 검사는 언어별 option 차이를 normalize한 뒤 schema 차이만 비교 ## 다른 도메인과의 경계 - **protocol**: 스크립트가 proto 파일을 읽지만, proto 파일 자체는 protocol 도메인 - **dart/go/kotlin/python/typescript**: crosstest 코드는 각 언어 도메인에 속함. tools 도메인은 `tools/` 스크립트만 담당 ## 금지 사항 - `check_proto_sync.sh` 실패를 무시하고 다음 단계로 진행하지 않는다 - tools 스크립트에 언어별 런타임 구현 로직을 넣지 않는다