AI 프롬프트를 체계적으로 평가하고 개선하기 위한 자기주도 학습 플랫폼입니다. AI 코딩 어시스턴트(Claude Code, Cursor 등)와 대화하며 자동으로 프롬프트를 저장하고, 실행 결과를 평가하여 지속적으로 프롬프트 품질을 향상시킬 수 있습니다.
- 자동 프롬프트 수집: Claude Code와 대화 시 프롬프트를 자동으로 DB에 저장
- 지능형 카테고리 분류: 키워드 기반 자동 분류 (FEATURE, BUG_FIX, REFACTORING, TEST, DOCUMENTATION, ETC)
- 프로젝트별 관리: 프로젝트 이름으로 프롬프트 구분 및 필터링
- 웹 UI: 프롬프트 목록 조회 및 카테고리/프로젝트별 필터링
- REST API: 프롬프트 생성 및 조회 API 제공
- SQLite 기반: 로컬 파일 DB로 데이터 프라이버시 보장
| 플랫폼 | 상태 | 비고 |
|---|---|---|
| Claude Code | 지원 | Webhook을 통한 자동 프롬프트 저장 |
| Cursor | 예정 | 향후 업데이트 예정 |
다음 소프트웨어가 설치되어 있어야 합니다:
- Docker: 20.10 이상
- Docker Compose: v2.0 이상
- Java: JDK 21 이상
- Python: 3 이상 (Claude Code Hook 사용 시)
# 1. 프로젝트 클론
git clone https://github.com/kim946509/prompt_ev.git
cd prompt_ev
# 2. Docker Compose로 실행
docker-compose up -d
# 3. 로그 확인
docker-compose logs -f접속: http://localhost:18080/prompts
데이터는 ./data/prompt_ev.db에 저장되며 컨테이너 삭제 후에도 유지됩니다.
# 중지
docker-compose down
# 완전 삭제 (데이터 포함)
docker-compose down -v
rm -rf ./data# 1. 프로젝트 클론
git clone https://github.com/yourusername/prompt_ev.git
cd prompt_ev
# 2. 빌드 및 실행
./gradlew bootRun접속: http://localhost:18080/prompts
Claude Code와 연동하여 프롬프트를 자동으로 저장하려면 다음 단계를 따르세요.
프로젝트의 .claude/hooks/save-prompt.py 파일을 Claude Code를 사용할 프로젝트의 .claude/hooks/ 디렉토리에 복사합니다.
# 예시: 다른 프로젝트에 Hook 설정
cp .claude/hooks/save-prompt.py /path/to/your-project/.claude/hooks/save-prompt.py 파일을 열어 14번째 줄의 PROJECT_NAME을 수정합니다:
# save-prompt.py (14번째 줄)
PROJECT_NAME = "your-project-name" # 여기를 변경하세요!프로젝트 이름을 설정하면 여러 프로젝트의 프롬프트를 구분하여 관리할 수 있습니다.
해당 프로젝트의 .claude/settings.local.json 파일에 다음 설정을 추가합니다:
{
"hooks": {
"UserPromptSubmit": [
{
"hooks": [
{
"type": "command",
"command": "python .claude/hooks/save-prompt.py"
}
]
}
]
}
}- Prompt Evaluation System이 실행 중인지 확인 (
http://localhost:18080) - Claude Code에서 프롬프트를 입력
- 웹 UI(
http://localhost:18080/prompts)에서 프롬프트가 자동 저장되었는지 확인
- 이벤트: 사용자가 Claude Code에 프롬프트를 입력할 때마다 자동 실행
- 자동 분류: 프롬프트 내용의 키워드를 분석하여 카테고리 자동 할당
- 비동기 실행: 2초 타임아웃으로 백그라운드에서 실행 (Claude 응답 지연 없음)
- 장애 허용: 네트워크 오류 발생 시 무시하고 계속 진행
프롬프트에 포함된 단어에 따라 카테고리를 자동으로 분류합니다.
| 카테고리 | 키워드 예시 |
|---|---|
| BUG_FIX | 버그, bug, fix, 오류, error, crash |
| TEST | 테스트, test, unit test, mock, assert |
| REFACTORING | 리팩토링, refactor, 개선, optimize, cleanup |
| FEATURE | 기능, feature, add, create, implement |
| DOCUMENTATION | 문서, docs, readme, 주석, docstring |
| ETC | 위 키워드에 해당하지 않는 경우 |
우선순위: BUG_FIX > TEST > REFACTORING > FEATURE > DOCUMENTATION > ETC
프롬프트 목록 조회 및 필터링:
- URL:
http://localhost:18080/prompts - 카테고리별 필터링
- 프로젝트별 필터링
- 페이지네이션 지원 (페이지당 20개)
POST /api/prompts
Content-Type: application/json
{
"content": "사용자 인증 기능을 추가해주세요",
"category": "FEATURE",
"project": "my-app",
"aiModel": "claude-sonnet-4-5"
}GET /api/prompts?category=FEATURE&project=my-app&page=0&size=20prompt_ev/
├── src/main/java/kr/co/ansandy/prompt_ev/
│ ├── config/ # JPA Auditing 등 설정
│ ├── controller/ # REST & View 컨트롤러
│ ├── dto/ # 요청/응답 DTO
│ ├── entity/ # JPA 엔티티 (Prompt, BaseEntity)
│ ├── repository/ # Spring Data JPA 리포지토리
│ └── service/ # 비즈니스 로직
├── src/main/resources/
│ ├── application.yaml # Spring Boot 설정
│ ├── properties/ # 환경 변수
│ └── templates/ # Thymeleaf 템플릿
├── .claude/
│ ├── hooks/ # Claude Code Hook 스크립트
│ └── settings.local.json
├── Dockerfile # Docker 이미지 빌드 설정
├── docker-compose.yml # Docker Compose 설정
└── data/ # SQLite DB 저장 위치 (Docker 볼륨)
- Backend: Spring Boot 4.0.0, Java 21
- Database: SQLite (Hibernate Community Dialects)
- View: Thymeleaf
- Build: Gradle 9.2.1
- Containerization: Docker, Docker Compose
- Integration: Python 3.x (Claude Code Hook)
# 빌드
./gradlew build
# 테스트
./gradlew test
# 실행
./gradlew bootRun
# Clean 빌드
./gradlew clean build# 이미지 빌드
docker build -t prompt-ev:latest .
# 컨테이너 실행
docker run -d -p 18080:8080 -v ./data:/app/data --name prompt-evaluation prompt-ev:latest
# 로그 확인
docker logs -f prompt-evaluation- 위치: 프로젝트 루트의
prompt_ev.db(로컬 실행 시) 또는./data/prompt_ev.db(Docker 실행 시) - 스키마: Hibernate DDL auto-update (자동 생성/업데이트)
- 접근: SQLite 클라이언트 도구로 직접 조회 가능
-
Prompt Evaluation System이 실행 중인지 확인
curl http://localhost:18080/
-
Python이 설치되어 있는지 확인
python --version
-
Hook 스크립트 경로가 올바른지 확인
ls -la .claude/hooks/save-prompt.py
-
프로젝트 이름이 설정되어 있는지 확인
# save-prompt.py의 14번째 줄 PROJECT_NAME = "your-project-name" # 비어있으면 안됨
# 로그 확인
docker-compose logs
# 컨테이너 상태 확인
docker ps -a
# 포트 충돌 확인
netstat -ano | findstr :18080 # Windows
lsof -i :18080 # Mac/Linux# Gradle 캐시 삭제
./gradlew clean
# Docker 빌드 캐시 삭제
docker-compose build --no-cache- OpenAI/Anthropic API 연동
- AI 기반 프롬프트 품질 분석
- 개선 제안 기능
- 카테고리별 프롬프트 사용 통계
- 시간대별 분석
- 프로젝트별 인사이트
- 프롬프트 템플릿
- 버전 관리
- 고급 검색 및 필터링
- Cursor 플랫폼 지원
이 프로젝트는 자유롭게 사용 가능합니다.
이슈 제보 및 개선 제안을 환영합니다!
- GitHub Issues: [프로젝트 이슈 페이지]
- 개발 가이드: CLAUDE.md
- 프로젝트 계획: PROJECT_PLAN.md