Add contributor guide and project usage docs
This commit is contained in:
55
CLAUDE.md
Normal file
55
CLAUDE.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
LazyEnter("소파에서 엔터나 치자")는 로컬 PC의 Claude Code CLI 세션을 Slack으로 중계하여, 모바일에서 승인(y/n) 및 명령을 원격 수행하는 브릿지 시스템이다. Slack Socket Mode를 사용하므로 공인 IP나 방화벽 설정이 불필요하다.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
Slack App (모바일/데스크톱)
|
||||
↕ Socket Mode
|
||||
SlackHandler ← Bridge → PtyManager
|
||||
↑ ↕
|
||||
Config pexpect (claude 프로세스)
|
||||
↑
|
||||
CLI Hooks (hooks.py)
|
||||
```
|
||||
|
||||
- **Bridge** (`bridge.py`): 핵심 중계기. SlackHandler와 PtyManager를 연결하고 출력 폴링 스레드를 관리
|
||||
- **SlackHandler** (`slack_handler.py`): slack_bolt 기반 Socket Mode 이벤트 수신/메시지 전송
|
||||
- **PtyManager** (`pty_manager.py`): pexpect로 가상 터미널 프로세스 생성·입출력 제어
|
||||
- **Config** (`config.py`): python-dotenv 기반 환경 변수 관리
|
||||
- **Hooks** (`hooks.py`): Claude Code `/hooks` 이벤트를 파싱하여 Slack 알림 전송 (승인 대기, 작업 완료)
|
||||
|
||||
## Commands
|
||||
|
||||
```bash
|
||||
# 의존성 설치
|
||||
pip install -e .
|
||||
|
||||
# 실행
|
||||
lazy-enter
|
||||
# 또는
|
||||
python -m lazy_enter
|
||||
|
||||
# 테스트
|
||||
pytest
|
||||
pytest tests/test_hooks.py -v # 단일 파일
|
||||
pytest tests/test_hooks.py::test_parse_hook_event_valid -v # 단일 테스트
|
||||
|
||||
# 린트
|
||||
ruff check src/ tests/
|
||||
ruff format src/ tests/
|
||||
|
||||
# 타입 체크
|
||||
mypy src/
|
||||
```
|
||||
|
||||
## Key Conventions
|
||||
|
||||
- `src/` 레이아웃 사용 (`src/lazy_enter/`)
|
||||
- 환경 변수는 `.env` 파일로 관리 (`.env.example` 참조)
|
||||
- 보안: `SLACK_ALLOWED_USER_ID`, `SLACK_ALLOWED_CHANNEL_ID`로 접근 제한 필수
|
||||
Reference in New Issue
Block a user