chore: pr을 리뷰하는 SKILL.md 작성#669
Merged
whqtker merged 2 commits intosolid-connection:developfrom Feb 19, 2026
Merged
Conversation
Walkthrough
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 제안된 리뷰어
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In @.claude/skills/review-pr/SKILL.md:
- Around line 28-34: Clarify that the GH CLI commands shown ("gh pr view", "gh
pr diff", "gh pr checks") require the GitHub CLI to be installed and
authenticated, or alternatively provide minimal non-CLI options (e.g., link to
the GitHub web PR view and mention using the REST API endpoints or curl for PR
details/diff/checks) so readers know installation is mandatory or can follow a
web/API fallback; update the text around the three commands to state the
dependency and include one-line guidance for a web UI link and one-line pointer
to the REST API alternative.
Comment on lines
+28
to
+34
| GitHub CLI로 PR의 기본 정보와 변경사항을 파악합니다. | ||
|
|
||
| ```bash | ||
| gh pr view <번호> -R solid-connection/solid-connect-server # PR 기본 정보 조회 | ||
| gh pr diff <번호> -R solid-connection/solid-connect-server # 변경된 파일과 diff 확인 | ||
| gh pr checks <번호> -R solid-connection/solid-connect-server # CI/CD 상태 확인 | ||
| ``` |
There was a problem hiding this comment.
-
- GH CLI 의존성 명확화 또는 대안 경로 추가
- 현재 단계 1은
gh명령만 제시되어 있어, “설치 없이도 동작 가능”이라는 설명과 충돌할 소지가 있어요. - 설치가 필수인지 명확히 하거나, GitHub 웹 UI/API로 대체 가능한 최소 경로를 함께 안내하는 쪽이 사용자 혼란을 줄입니다.
📝 제안된 문서 보완(diff)
- GitHub CLI로 PR의 기본 정보와 변경사항을 파악합니다.
+ GitHub CLI로 PR의 기본 정보와 변경사항을 파악합니다.
+ (GH CLI 미설치 시) GitHub 웹 UI의 “Files changed / Checks” 탭 또는 REST API로 동일 정보를 확인할 수 있습니다.🤖 Prompt for AI Agents
In @.claude/skills/review-pr/SKILL.md around lines 28 - 34, Clarify that the GH
CLI commands shown ("gh pr view", "gh pr diff", "gh pr checks") require the
GitHub CLI to be installed and authenticated, or alternatively provide minimal
non-CLI options (e.g., link to the GitHub web PR view and mention using the REST
API endpoints or curl for PR details/diff/checks) so readers know installation
is mandatory or can follow a web/API fallback; update the text around the three
commands to state the dependency and include one-line guidance for a web UI link
and one-line pointer to the REST API alternative.
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.claude/hooks/notify.py (1)
16-29: 전반적인 폴백 로직은 잘 구현되었습니다. 아래 선택적 개선 사항을 참고해 주세요.
✅ 전체 접근 방식 승인
- VS Code 확장 환경에서 PATH에
powershell이 없을 수 있다는 상황을 절대 경로 우선 시도로 깔끔하게 해결했습니다.timeout=10및FileNotFoundError/TimeoutExpired포착을 통해 무한 대기 없이 폴백이 동작하는 구조가 좋습니다.💡 (선택)
break조건 — 실행 성공 vs. 알림 성공 구분
- 현재 구조에서는
subprocess.run이 예외 없이 반환되면(실행 파일을 찾아 실행은 했지만 종료 코드가 0이 아닌 경우 포함) 즉시break됩니다.- 예를 들어
ps1_path가 존재하지 않으면 PowerShell이 실행은 되지만 오류를 내고 종료하며, 알림은 표시되지 않는데도 루프가 끝납니다.- 두 후보가 동일한
ps1_path를 사용하므로 현실적 영향은 없지만, 보다 견고하게 만들고 싶다면 아래와 같이 수정할 수 있습니다.♻️ 선택적 개선 —
check=True및CalledProcessError포착for ps in powershell_candidates: try: subprocess.run( [ps, "-NoProfile", "-ExecutionPolicy", "Bypass", "-File", ps1_path], - timeout=10, + timeout=10, + check=True, ) break - except (FileNotFoundError, subprocess.TimeoutExpired): + except (FileNotFoundError, subprocess.TimeoutExpired, subprocess.CalledProcessError): continue🔇 정적 분석 경고 S603 — 무시 가능
ps는 하드코딩된 리스트에서만 오고,ps1_path는__file__기준의 경로이므로 외부 입력이 없습니다. Ruff S603은 여기서 거짓 양성(false positive) 입니다.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In @.claude/hooks/notify.py around lines 16 - 29, Update the subprocess invocation in the powershell_candidates loop so that you only break on a successful execution: call subprocess.run with check=True inside the loop (still using timeout=10) and catch subprocess.CalledProcessError in addition to FileNotFoundError and subprocess.TimeoutExpired; only break the loop when subprocess.run returns without raising (i.e., the command exited with code 0). Reference the powershell_candidates list, the loop that iterates over ps, and the subprocess.run call to locate where to add check=True and the new exception handling.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In @.claude/hooks/notify.py:
- Around line 16-29: Update the subprocess invocation in the
powershell_candidates loop so that you only break on a successful execution:
call subprocess.run with check=True inside the loop (still using timeout=10) and
catch subprocess.CalledProcessError in addition to FileNotFoundError and
subprocess.TimeoutExpired; only break the loop when subprocess.run returns
without raising (i.e., the command exited with code 0). Reference the
powershell_candidates list, the loop that iterates over ps, and the
subprocess.run call to locate where to add check=True and the new exception
handling.
whqtker
added a commit
that referenced
this pull request
Mar 8, 2026
* feat: 파견 대학 테이블명 변경 및 협정 대학 테이블 추가하는 DDL 작성 (#620) * feat: 파견 대학 테이블명 변경 및 협정 대학 테이블 추가하는 DDL 작성 * refactor: 테이블명 변경 및 추가에 따른 엔티티 생성 - 또한 목데이터 생성 로직 수정 * test: 테스트 코드에서 University -> HostUniversity로 변경 * chore: 중복 인덱스 생성 방지를 위해 인덱스 생성 제거 - FK 제약조건을 추가할 때 인덱스가 없다면 알아서 추가하기 때문 * chore: home_university 테이블에 created/updated_at 추가 * refactor: 잘못 설정되었던 테이블 간 연관 관계 재설정 (#622) * refactor: home_university와 university_info_for_apply가 FK 관계를 가지도록 * chore: FK 변경에 따른 목데이터 수정 * test: 테스트 픽스터 수정 * refactor: 대학 검색 응답 수정 (#624) * refactor: home_university와 university_info_for_apply가 FK 관계를 가지도록 * chore: FK 변경에 따른 목데이터 수정 * refactor: 필터 검색 엔드포인트 삭제 * refactor: 필터 검색 관련 서비스 로직 삭제 * refactor: 필터 검색 관련 레포지토리 메서드 삭제 * refactor: 필터 검색 관련 DTO 삭제 * test: 필터 검색 관련 테스트 코드 삭제 * refactor: 지원 대학 관련 응답에 협정 대학 이름 추가 * test: 지원 대학 응답 수정에 따른 테스트 수정 * refactor: 간접 참조 대신 연관관계 추가 - N+1 방지를 위해 fetch join도 추가 * test: 간접 참조 방식에서 연관 관계 설정으로 따른 테스트 코드 수정 * chore: 목데이터에서 지원 대학 테이블에 협정 대학 ID를 설정하도록 * test: home university fixture 추가 * refactor: home university에 대한 fetch join 추가 * refactor: s3 버전 업그레이드 및 로직 수정 (#608) * refactor: s3 sdk 버전 업그레이드 - 의존성 수정 - 버전 업그레이드에 따른 코드 수정 * refactor: 이미지 이외의 파일 관리를 위해 ImgType 의미 명확하도록 수정 - ImgType에서 UploadType으로 변경 - 해당되는 파일 모두 수정 * refactor: s3 테스트 코드 추가 * fix: s3 access-key, secret-key 최신화, 버킷 명칭 올바르게 수정 * fix: ChatService Test 변경점 반영, S3ServiceTest 단위 테스트로 변경 - images->files로 디렉토리 경로 수정 * fix: 이중 비동기 실행문제 해결 - @async에 전적으로 위임 * refactor: S3Service error 메시지 NPE 가능성 제거 * refactor: 수정사항 반영 - UploadType -> UploadPath로 명칭변경 - 컨벤션 수정(미사용 변수 삭제, 들여쓰기, 명칭변경) * fix: 테스트 코드 오류 수정 - 내부 로직에서 사용하는 fileUploadService 정의 * refactor: 수정사항 반영 - 파일 확장자 상수화 - 확장자 확인로직, 채팅이면 모든 파일 허용, 이미지 확인까지 모두 enum에서 관리 - MultipartFile이 비동기 과정에서 유실되지 않도록 byte로 변환해서 전달 - UrlPrefixResponse PascalCase로 변경 * refactor: 컨벤션 수정 - 사용하지 않는 import문 삭제 * refactor: 리프레시 토큰 만료시 쿠키 삭제 (#628) * refactor: 리프레시 토큰 만료시 쿠키 삭제 * refactor: 인증 전용 예외 생성 * refactor: 멘토링 조회 응답에 mentoringId 필드 추가 (#638) * feat: WebSocket 로깅 인터셉터 작성 (#635) * feat: WebSocket 로깅 인터셉터 작성 * refactor: Principal 명시적 형 변환 대신 null 체크하여 형 변환 * feat: 어드민에서 파견 대학을 관리하도록 (#633) * feat: 파견 대학 CRUD 관련 ErrorCode 추가 - HOST_UNIVERSITY_HAS_REFERENCES : 파견 대학 삭제 시 해당 대학을 참조하는 UnivApplyInfo가 존재하는 경우 * feat: 파견 대학 관련 정보를 업데이트하는 도메인 메서드 작성 * feat: 조회 관련 Repository 메서드 구현 * feat: 파견 대학 검색 관련 QueryDSL로 구현 * feat: 어드민 파견 대학 CRUD 관련 DTO 작성 * feat: country 조회 관련 로직 추가 및 ErrorCode 추가 * feat: 어드민 파견 대학 CRUD 관련 서비스 로직 작성 * feat: 어드민 파견 대학 관련 컨트롤러 작성 * test: 어드민 파견 대학 관리 관련 테스트 작성 * refactor: 엔드포인트의 path variable 이름 변경 - id -> host-university-id * refactor: PageResponse 응답 객체를 사용하도록 * test: 응답 변경에 따른 테스트 코드 수정 * fix: host_university 테이블의 korean_name 필드에 unique key 추가 (#645) * fix: host_university 테이블의 korean_name 필드에 unique key 쿠가 * test: test용 hostUniversityRepository 생성 * test: 고유한 korean_name을 가진 host university 객체를 사용하도록 * fix: 멘토 지원서 승인 시 유저 Role 을 Mentor로 승격 (#639) * fix: 멘토 지원서 승인 시 유저 Role 을 Mentor로 승격 * fix: 멘토 지원서 승인 시 멘토 생성 * fix: 멘토의 introduction, passTip null 허용하도록 수정 - not null 인 필드에 빈문자열로 값을 채우는 것 보다, null 허용이 더 의미 있다 판단하여 null 을 허용하도록 하였습니다. * fix: 사용하지 않는 멘토 생성 api 제거 - 멘토 생성의 주체가 어드민으로 변경되어 Mentor 도메인의 Mentor 생성 api 를 제거 * feat: 멘토 지원서 승인 예외처리 추가 - 중복 멘토 생성 예외 처리 및 테스트 추가 * refactor: Mentor 생성 시 null 전달 제거 * refactor: 멘토 지원서 승낙 시, 검증 후 승격 및 멘토 생성 * chore: 스크립트 버전 수정 (#651) * chore: 스크립트 버전 수정 * test: korean_name 컬럼 UK 관련 테스트 코드 수정 * feat: test skill 추가 (#647) * feat: serena MCP 추가 * feat: test skill 추가 * feat: hook 추가 - 응답 대기시 알람발송 - 컨벤션 어겼을 때 훅 작동 * feat: 안쓰는 파일 제거 * fix: 게시글 중복 생성 방지 (#649) * fix: 게시글 중복 생성 방지 - Redis 패키지 및 로직 정리 * fix: 게시글 중복 생성 방지 - 게시글 중복 요청 방지 Redis 로직 추가 * refactor: 게시글 중복 생성 방지 * chore: testcontainer 버전 업 (#659) * chore: windows에서도 hook이 동작하도록 (#655) * refactor: 오래된 이미지 삭제 후 이미지 pull하도록 변경 (#653) refactor: 오래된 이미지 삭제 후 이미지 pull하도록 변경 (#653) - 추가로 이미지는 5개 -> 2개 보관하도록 변경 * refactor: 멘토 도메인 응답의 사용자 id를 siteUserId로 통일 (#665) * refactor: 멘토 관련 id응답은 모두 site-user-id가 되도록 수정 * test: 멘토 관련 테스트 코드 수정 * refactor: 채팅 도메인 응답의 사용자 관련 id를 siteUserId로 통일 (#666) * refactor: 채팅 관련 응답에서 사용자 관련 Id를 siteUserId로 통일 * refactor: siteUserId를 포함하도록 서비스 코드 수정 * test: 사용자 id로 응답 통일 관련 테스트 수정 * feat: 전체 뉴스를 조회하는 API 구현 (#674) * feat: 전체 news 조회 API 구현 - 기존 API에 author-id를 선택적으로 받도록 * test: 전체 news 조회 관련 테스트 코드 작성 * refactor: 날짜 오름차순으로 news 조회하는 JPA 메서드 추가 * refactor: 뉴스 조회 API를 하나로 통합 - 서비스 계층에서 siteUserId == null을 기준으로 분기하도록 * refactor: 컨트롤러 계층에서 분기문 제거 - 분기를 서비스 계층에게 위임했음 * test: 뉴스 조회 관련 테스트 코드 수정 * chore: 누락된 제약 조건을 추가하는 스크립트 작성 (#676) * chore: pr을 리뷰하는 SKILL.md 작성 (#669) * chore: pr을 리뷰하는 SKILL.md 작성 * chore: vscode extension으로 claude를 사용하는 경우에도 알림이 뜨도록 * feat: Parameter Store 기반 설정 관리 전환 및 loadtest 프로필 추가 (#670) * feat: Parameter Store 설정 전환 - secret 서브모듈 제거 및 설정 파일 분리 - 프로필별 Parameter Store import와 loadtest 프로필 추가 * feat: Parameter Store 연동 설정 추가 - Spring Cloud AWS Parameter Store 의존성 추가 - config 분리와 profile별 import/loadtest 프로필 설정 * feat: 배포 파이프라인 Parameter Store 대응 - dev/prod workflow에서 submodule checkout 제거 - compose 환경변수에 AWS_REGION 주입 * feat: S3 인증을 IAM Role 체인으로 전환 - 정적 access key/secret key 주입 제거 - DefaultCredentialsProvider 기반 S3Client 구성 * feat: 리뷰 반영 설정 보완 - local 프로필 refresh cookie-domain을 localhost로 수정 - loadtest outbound thread pool에 queue-capacity 추가 * refactor: 환경별 설정 fail-fast 정리 - websocket outbound queue-capacity 누락 보완 - prod/dev/local OAuth redirect-url fallback 제거 - yml placeholder 빈 기본값(:) 제거 - dev CORS admin 도메인 변경 반영 * chore: Parameter Store import를 fail-fast로 전환 - common/local/dev/prod/loadtest aws-parameterstore import에서 optional 제거 * refactor: cloud 설정을 SSM 단일 소스로 정리 - env placeholder(CLOUD_AWS_*) 제거 - cloud.aws.* 값은 /solid-connection/common 경로에서 주입 * refactor: DB/Flyway 설정을 프로퍼티 키 기반으로 정리 - datasource/flyway env placeholder 제거 - prod/dev baseline-on-migrate를 false로 변경 - local 빈 redis 블록 제거 * chore: 공통 변수 설정 보안/컨벤션 정리 - OAuth/JWT/Sentry/News/Loki placeholder 제거 - kakao user-info-url 키를 kebab-case로 통일 - sentry 기본 PII 비활성화 및 prod traces 샘플링 0.1 설정 - dev admin CORS origin 문자열 변경 반영 * fix: dev admin CORS origin trailing slash 제거 * feat: review comments 반영 - loadtest 프로필에 spring.flyway.enabled=false 명시 - test 설정의 kakao user-info 키를 user-info-url로 통일 * refactor: docker-compose.dev.yml에 mysql 컨테이너 추가 (#690) * refactor: docker-compose.dev.yml에 mysql 컨테이너 추가 * fix: 코드래빗 반영(MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' 추가) * fix: term 테이블의 is_current 필드에 UK 설정 (#650) * fix: is_current 필드에 UK 설정 * test: UK 설정에 따른 테스트 코드 불일치성 해결 * chore: 스크립트 버전 수정 * refactor: 미사용 코드 제거 * feat: 어드민 유저 관리 기능 추가 (#686) * feat: 어드민 유저 관리 기능 - 차단 기능 rebase 및 충돌 해결 * test: 어드민 유저 관리 기능 * feat: 어드민 유저 관리 기능 * feat: 어드민 유저 관리 기능 - University -> HostUniversity 변경 * refactor: 어드민 유저 관리 기능 * chore: 스크립트 버전 수정 (#691) * chore: stage admin 도메인 추가 (#692) * refactor: 응답에서 refresh token은 제외하여 전달하도록 (#646) * refactor: 응답에서 refresh token은 제외하여 전달하도록 * refactor: 미사용 응답 필드 제거 * refactor: 쿠키 설정용, HTTP 응답용 DTO 변경 * test: result 객체 추가에 따른 테스트 코드 수정 * feat: 어드민 국가 crud 추가 (#656) * feat: 국가 관련 어드민 crud 추가 * test: 국가 관련 어드민 crud 테스트 추가 * refactor: 대학 캐시 무효화 정책 추가 (#660) * refactor: 대학 캐시 무효화 정책 추가 * test: 대학 캐시 무효화 정책 테스트 추가 * chore: master hotfix를 develop에 sync (#694) * fix: /applications 중복 활성 지원서 조회 시 500 오류 방지 - 활성 지원서 조회를 최신 1건 기준 메서드로 변경 - 지원서 제출 로직과 테스트 코드를 변경된 조회 메서드명에 맞춰 동기화 * fix: 활성 지원서 중복 문제의 근본 해결 TODO 명시 - 최신 1건 선택 로직이 임시 회피임을 주석으로 명확화 - DB 유일성 제약 도입 후 우회 조회 제거 필요사항을 기록 * hotfix: 대학 조회 캐싱 임시 제거 * hotfix: 대학 조회 캐싱 임시 제거 --------- Co-authored-by: Wibaek Park <34394229+devMuromi@users.noreply.github.com> Co-authored-by: 이세원 <107756067+leesewon00@users.noreply.github.com> Co-authored-by: Wibaek Park <34394229+wibaek@users.noreply.github.com> Co-authored-by: Yeongseo Na <panda0329@naver.com> Co-authored-by: Wibaek Park <devmuromi@gmail.com> Co-authored-by: 황규혁 <126947828+Gyuhyeok99@users.noreply.github.com> Co-authored-by: Gyuhyeok99 <ghkdrbgur13@naver.com> Co-authored-by: Yeon <84384499+lsy1307@users.noreply.github.com> Co-authored-by: hyungjun <115551339+sukangpunch@users.noreply.github.com> Co-authored-by: 정재희 <y2hjjh@naver.com> Co-authored-by: Yeonri <lsy1307@inha.edu> --------- Co-authored-by: Yeon <84384499+lsy1307@users.noreply.github.com> Co-authored-by: 황규혁 <126947828+Gyuhyeok99@users.noreply.github.com> Co-authored-by: hyungjun <115551339+sukangpunch@users.noreply.github.com> Co-authored-by: 정재희 <y2hjjh@naver.com> Co-authored-by: in seong Park <74069492+Hexeong@users.noreply.github.com> Co-authored-by: Wibaek Park <34394229+devMuromi@users.noreply.github.com> Co-authored-by: 이세원 <107756067+leesewon00@users.noreply.github.com> Co-authored-by: Wibaek Park <34394229+wibaek@users.noreply.github.com> Co-authored-by: Yeongseo Na <panda0329@naver.com> Co-authored-by: Wibaek Park <devmuromi@gmail.com> Co-authored-by: Gyuhyeok99 <ghkdrbgur13@naver.com> Co-authored-by: Yeonri <lsy1307@inha.edu>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
관련 이슈
작업 내용
클로드의
review-pr <PR번호>를 통해 PR을 리뷰하는 SKILL.md를 작성했습니다. 로컬에 Github CLI가 설치되어 있다고 가정하고 작성했습니다(설치되어 있지 않아도 잘 동작하긴 할 것 같습니다).PR 타이틀과 디스크립션을 읽기에, 자세히 작성해주시면 더 잘 동작합니다 !!
아래 대화는 실제로 해당 SKILL.md를 통해 #656 을 리뷰한 내용입니다.
한 번 사용해보시고, 개선할 점 있으면 의견 부탁드리겠습니다 !!
추가로 claude noti가 윈도우에서 여전히 안 와서 해당 내용도 수정했습니다. vscode claude extension 사용 시 알림은 webview 형식이라 알림이 따로 뜨진 않네요 cli에서 구동하는 경우는 잘 동작합니다 ..!
특이 사항
리뷰 요구사항 (선택)