nexo/agent-ops/rules/project/rules.md

60 lines
3 KiB
Markdown

# nexo 프로젝트 규칙
## 응답 언어
- 기본 응답은 한국어로 작성한다.
- 파일명, 명령어, 패키지명, API 이름, 코드 식별자는 원문 그대로 유지한다.
## 프로젝트 개요
`nexo`는 메시징 서버, Flutter 클라이언트, Flutter 푸시 알림 패키지를 한 워크스페이스에서 함께 관리하는 프로젝트다.
주요 경계는 다음과 같다.
- `services/core/` — Mattermost `v11.4.2` 기반 메시징 서버 코어, 웹앱, API 문서, compose 환경
- `packages/messaging_flutter/` — Mattermost 호환 푸시 알림 Flutter 플러그인
- `apps/client/` — 플러그인을 검증하는 Flutter 클라이언트와 통합 테스트 호스트
- `docs/`, `bin/` — 워크스페이스 공통 문서와 helper entrypoint
## 기술 스택
- Flutter / Dart `sdk: ^3.11.3`
- Android native plugin: Kotlin, Java, Gradle
- iOS / macOS plugin scaffold: Swift
- Server core: Go `1.24.13`, Mattermost server module
- Webapp / API tooling: Node.js, npm workspaces, TypeScript, Redocly
- Local runtime: Docker Compose under `services/core/compose/`
## 작업 원칙
- `services/core/`는 Mattermost upstream fork 성격이 강하므로 제품 특화 변경은 작고 비교 가능하게 유지한다.
- `services/core/UPSTREAM.md`의 baseline 정보를 임의로 바꾸지 않는다.
- Flutter 플러그인의 public package name은 현재 `mattermost_push_plugin`이며, 소비 앱과 호환성이 걸려 있으므로 rename은 별도 결정 없이 하지 않는다.
- 푸시 알림 처리 책임은 `packages/messaging_flutter/`에 두고, `apps/client/`에는 검증과 host integration만 둔다.
- `apps/client/`는 독립 소비 앱 역할을 하므로 플러그인 내부 동작을 복제하지 않는다.
- `build/`, `.dart_tool/`, Android/iOS/macOS 생성물, upstream bulk 파일은 요청 범위 밖이면 건드리지 않는다.
- 모듈별 README가 있는 경우 해당 모듈 안의 설명을 우선한다.
## 검증 명령
- 전체 기본 검증: `bin/test`
- 전체 lint: `bin/lint`
- 전체 build: `bin/build`
- 서버 Go test: `NEXO_CORE_GO_TEST=1 bin/test`
- 서버 Go vet: `NEXO_CORE_GO_LINT=1 bin/lint`
- 서버 Go build: `NEXO_CORE_GO_BUILD=1 bin/build`
`bin/*` 명령은 로컬 도구가 없으면 일부 검증을 skip할 수 있다. skip 출력이 있으면 최종 보고에 명시한다.
## 도메인 매핑
| 경로 패턴 | 도메인 | rules.md |
|----------|--------|----------|
| `services/core/**` | core-service | `agent-ops/rules/project/domain/core-service/rules.md` |
| `packages/messaging_flutter/**` | messaging-flutter | `agent-ops/rules/project/domain/messaging-flutter/rules.md` |
| `apps/client/**` | client-app | `agent-ops/rules/project/domain/client-app/rules.md` |
| `docs/**`, `bin/**`, root docs/config | workspace-ops | `agent-ops/rules/project/domain/workspace-ops/rules.md` |
## 스킬 라우팅
현재 프로젝트 전용 skill은 없다. 반복 작업이 안정적으로 드러나면 `agent-ops/skills/project/<skill-name>/SKILL.md`로 추가한다.