Add contributor guide and project usage docs

This commit is contained in:
2026-02-16 22:48:05 +09:00
parent 1e552f8c46
commit 87482efd6d
16 changed files with 671 additions and 1 deletions

55
CLAUDE.md Normal file
View 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`로 접근 제한 필수