-
Notifications
You must be signed in to change notification settings - Fork 0
[EDMT-451] Claude Code 개발 도구 및 자동화 스크립트 추가 #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Walkthrough문서 추가: Flyway 마이그레이션 생성 에이전트, Swagger 문서화 에이전트, 종합 테스트 생성 에이전트, 자동 커밋 명령( Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant Dev as 개발자
participant AgentF as Flyway 에이전트
participant JPA as JPA 엔티티
participant DB as DB 스키마 (MySQL/RDS)
participant VCS as 저장소 (migrations/*)
Dev->>AgentF: 요청 (엔티티 변경 감지 또는 수동 요청)
AgentF->>JPA: 엔티티 스캔 및 변경점 추출
AgentF->>DB: 현재 스키마/제약 확인
AgentF->>AgentF: 차이 분석 → MySQL용 SQL 생성 (V{ver}__{desc}.sql)
AgentF->>VCS: 마이그레이션 파일 생성/출력
AgentF-->>Dev: 생성된 SQL과 검증 노트 반환
sequenceDiagram
autonumber
participant Dev as 개발자
participant AgentS as Swagger 에이전트
participant API as Spring 컨트롤러/DTO
participant Spec as OpenAPI 스펙
Dev->>AgentS: 문서화 요청
AgentS->>API: 컨트롤러·DTO 분석
AgentS->>API: 누락된 어노테이션 제안/패치
AgentS->>Spec: OpenAPI 3.0 스펙 생성/갱신
AgentS-->>Dev: 주석·스펙 산출물 반환
sequenceDiagram
autonumber
participant Dev as 개발자
participant AgentT as Test 에이전트
participant Code as 소스코드 (서비스/리포지토리/컨트롤러)
participant Tests as 테스트 코드
Dev->>AgentT: 테스트 생성 요청
AgentT->>Code: 코드·의존성·리스크 분석
AgentT->>AgentT: 테스트 매트릭스·데이터·환경 생성
AgentT->>Tests: 단위·통합·성능·보안 테스트 코드 생성
AgentT-->>Dev: 테스트 코드와 실행 가이드 반환
sequenceDiagram
autonumber
participant Dev as 개발자
participant CmdC as /commit 커맨드
participant Git as Git
participant Jira as Jira
Dev->>CmdC: /commit 실행
CmdC->>Git: staged 변경 분석
CmdC->>Jira: 티켓 추출/확인 (선택)
CmdC->>CmdC: 커밋 메시지 생성 (컨벤션·다국어)
CmdC->>Git: git commit 수행
CmdC-->>Dev: 결과 출력
sequenceDiagram
autonumber
participant Dev as 개발자
participant CmdP as /pr 커맨드
participant Git as Git & GH CLI
participant Jira as Jira
Dev->>CmdP: /pr 실행
CmdP->>Git: base 분기점 이후 커밋 분석
CmdP->>Jira: 이슈 참조 추출
CmdP->>CmdP: PR 제목·본문·테스트플랜 생성
CmdP->>Git: (옵션) 브랜치 push 및 gh pr create
CmdP-->>Dev: PR 링크/요약 반환
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
.claude/commands/commit.md (1)
50-57: 보안 가드레일과 드라이런(미리보기) 단계 추가비밀/토큰/키가 메시지에 새어 나가지 않도록 시크릿 스캐닝 및 커밋린트 검증을 선행하고, 커밋 전 미리보기 확인 단계를 넣으세요.
적용 제안(diff):
## Expected Behavior - 1. Analyze current git status and staged changes + 1. Analyze current git status and staged changes (dry-run preview) 2. Determine the primary type of changes 3. Extract or prompt for Jira ticket number if not found - 4. Generate descriptive commit message - 5. Execute git commit with generated message + 4. Run checks: secret scan, commitlint, Jira key present + 5. Show final message preview and confirm + 6. Execute git commit with generated message - 6. Include Claude Code attribution + 7. (Optional) Add bot attribution
🧹 Nitpick comments (8)
.claude/commands/commit.md (2)
17-25: 커밋 타입 명칭 표준화(Conventional Commits와 호환)
[refac],[dependency]표기는 비표준입니다.feat|fix|refactor|docs|test|chore(deps)등으로 정렬하면 도구 호환성이 좋아집니다.적용 제안(diff):
- - `[refac] 리팩토링: {refactor description}` - for code refactoring - - `[dependency] 의존성 업데이트: {dependency description}` - for dependency updates + - `refactor: {리팩토링 설명}` - 코드 리팩토링 + - `chore(deps): {업데이트 요약}` - 의존성 업데이트 + - 형식: `[EDMT-123] <type>(optional scope): <summary>`
43-48: 저자 표기 정책 및 PII/법적 컴플라이언스 확인 필요
Co-Authored-By: Claude <noreply@anthropic.com>사용 전, 조직의 저작권/서명(DCO) 정책과 외부 저자 표기 허용 여부를 확인하세요. Opt‑in 옵션으로 전환 권장.적용 제안(diff):
- 🤖 Generated with Claude Code - Co-Authored-By: Claude <noreply@anthropic.com> + 🤖 Generated by EduKit Bot (optional) + # Use `--with-coauthor` to add: + # Co-Authored-By: EduKit-Bot <bot@edukit.local>.claude/commands/pr.md (1)
18-60: PR 템플릿에 위험도/호환성/보안 섹션 추가 제안릴리즈 품질 향상을 위해 영향도, 역호환성, 스크린샷/스키마 diff, 보안 체크리스트를 명시하세요.
## PR Template Format ```markdown @@ ## Test Plan @@ ### 🔍 Code Quality @@ +## ⚠️ Risk & Impact +- Backward compatibility: {Yes/No, details} +- User-facing changes: {screenshots or API examples} +- Rollout plan / feature flag: {details} + +## 🔐 Security +- AuthZ/AuthN changes reviewed: {Yes/No} +- Secrets/config handled via vault: {Yes/No} +- Threat model notes: {summary} + +## 🗄️ DB / API Contract +- Migration included and reversible plan documented: {Yes/No} +- API schema changes with OpenAPI diff attached: {link}</blockquote></details> <details> <summary>.claude/agents/swagger-documenter.md (2)</summary><blockquote> `7-13`: **생성 규칙에 “비파괴/보존” 원칙과 수동 주석 보호 규칙 추가** 자동 주석 보강 시 수동 작성 내용 덮어쓰지 않도록 idempotent 전략(머지 모드, 보호 마커)과 변경 미리보기를 명시하세요. ```diff - Updates existing controllers with missing documentation + - Preserves manual annotations; only fills missing parts (idempotent) + - Uses protected regions (// DOC-BEGIN AUTO / // DOC-END AUTO) + - Produces a diff preview instead of in-place overwrite
29-33: 스키마 정합성 검증 체크 추가 제안PathVariable/RequestParam 불일치, enum/nullable, 페이지네이션 파라미터 표준화 등 정합성 규칙을 추가하면 품질이 올라갑니다.
추가 항목:
- Path 변수와 메서드 시그니처 이름 일치 검증
- 공통 오류 응답 스키마(ProblemDetail) 강제
- Pageable/Sort 표준 스펙 문서화
.claude/agents/flyway-migration-generator.md (3)
27-35: 버전 충돌 방지를 위한 타임스탬프 기반 버전 규칙 권장여러 개발자가 병렬 작업 시 단순 증가 버전은 충돌합니다. 타임스탬프 기반
VyyyyMMddHHmmss__desc.sql로 통일 권장.- - Naming convention: `V{version}__{description}.sql` + - Naming convention: `V{yyyyMMddHHmmss}__{kebab-description}.sql` (UTC or Asia/Seoul, team-wide)
6-18: 파괴적 변경 가드레일(대용량 테이블/다운타임) 명시컬럼 타입 변경/인덱스 재작성 등은 다운타임 위험. 온라인 변경 전략과 사전 검증을 프로세스에 포함하세요.
추가 권장 사항:
- 대용량 테이블: pt-online-schema-change 또는 온라인 DDL 고려
- 마이그레이션 타임아웃/락 모니터링, 트랜잭션 경계 명시
- Pre‑prod 리허설 및 실행 계획(EXPLAIN) 캡처
36-51: 마이그레이션 템플릿에 표준 헤더/세이프티 체크 추가DDL 세이프티, 인덱스 이름 규칙, 엔진/캐릭터셋 지정 등을 포함하면 재현성과 일관성이 올라갑니다.
-- Migration: V{version}__{description}.sql @@ -- Date: {current date} +-- Env: {dev|staging|prod} +-- Charset/Collation: utf8mb4 / utf8mb4_0900_ai_ci +-- Engine: InnoDB +-- Safe-guard: SET lock_wait_timeout=60; SET sql_safe_updates=1;
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.claude/agents/flyway-migration-generator.md(1 hunks).claude/agents/swagger-documenter.md(1 hunks).claude/commands/commit.md(1 hunks).claude/commands/pr.md(1 hunks)
🔇 Additional comments (3)
.claude/agents/flyway-migration-generator.md (1)
27-35: Flyway Community Edition 명시 필요
현재edukit-api/build.gradle에org.flywaydb:flyway-core및org.flywaydb:flyway-mysql의존성만 추가되어 있어 Community Edition을 사용 중입니다. 문서에 Flyway Community Edition임을 명시해주세요..claude/commands/pr.md (1)
84-92: 드래프트 PR/드라이런 및 라벨/리뷰어 자동화 고려 — PR 템플릿 존재 여부 재검증 필요생성 전에 미리보기(드라이런), 드래프트 옵션, 기본 라벨/리뷰어 지정 추가 제안.
검증 결과: develop 브랜치와 gh 설치는 통과(스크립트에 오류 출력 없음). .github/PULL_REQUEST_TEMPLATE 검색은 fd가 숨김파일을 기본 제외하여 실패로 표시되어 템플릿 존재 여부 불확실 — 아래로 재검증 권장.## Expected Behavior 1. Check git status and current branch 2. Compare with develop branch to get all commits @@ - 7. Create PR using GitHub CLI - 8. Return PR URL for easy access + 7. Create Draft PR using GitHub CLI (use `--ready` to mark ready) + 8. Apply default labels and reviewers + 9. Output PR URL and summary preview권장 검증 스크립트(숨김파일 포함 및 대체 검사):
#!/bin/bash # develop 브랜치/PR 템플릿/gh 설치 확인 (숨김파일 포함 검색) git rev-parse --verify develop >/dev/null 2>&1 || echo "Missing local 'develop' branch" fd -H -g '.github/PULL_REQUEST_TEMPLATE*' || echo "PR template not found with fd -H" # fallback: 직접 확인 if [ -d ".github" ]; then ls -la .github | rg 'PULL_REQUEST_TEMPLATE' || echo "PR template not found in .github/" fi gh --version >/dev/null 2>&1 || echo "'gh' not installed".claude/agents/swagger-documenter.md (1)
21-28: Spring Boot 3.5.3 버전 확인 완료 - springdoc-openapi 버전은 2.8.9로 정확검증 결과:
- Spring Boot 버전: 3.5.3 (문서 표기와 일치)
- springdoc-openapi 버전: 2.8.9 (OpenAPI 3.0.1 지원)
Spring Boot 3.5.3과 springdoc-openapi-starter-webmvc-ui 2.8.9 조합은 정확하며, OpenAPI 3.0.1 사양을 따릅니다. 문서의 기술 스택 정보가 실제 프로젝트 설정과 일치합니다.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (8)
.claude/commands/commit.md (4)
64-74: 중복 헤딩(MD024) 제거/명확화 필요"## Usage Examples"가 앞서 38행에도 존재합니다. 린트 경고(MD024) 해소를 위해 두 번째 헤딩을 변경하세요.
-## Usage Examples +## Advanced Usage ```bash # Safe default - only staged files /commit
12-16: 커밋 메시지 포맷 일관성 정의본문은 “EduKit 형식: [prefix] descriptive message”라 하나, 예시는
[EDMT-123] ...만 사용합니다. 권장 표준을 하나로 고정하세요(예:[EDMT-123] [feat] ...).-- Generates commit messages in EduKit format: `[prefix] descriptive message` +- Generates commit messages in EduKit format: `[EDMT-123] [feat] descriptive message` ... -[EDMT-123] 새로운 기능: 사용자 인증 API 엔드포인트 추가 +[EDMT-123] [feat] 사용자 인증 API 엔드포인트 추가Also applies to: 44-48
6-8: 전제 조건(Prerequisites) 섹션 추가 제안사용 도구 명시가 없어 온보딩에 지연이 생길 수 있습니다.
git버전과 권장 환경을 명시하세요.## Description Automatically analyzes staged changes and generates appropriate commit messages following EduKit's commit conventions and Jira ticket format. + +## Prerequisites +- git >= 2.30 +- Jira 티켓 키(예: EDMT-123)를 추출할 수 있도록 브랜치명/커밋 메시지 관례 정착
59-63: 안전한 드라이런 옵션 제안실제 커밋 전에 메시지만 확인할 수 있는
--dry-run은 안전성과 채택률을 높입니다. 사용 예와 동작을 추가하세요.## Safety Options - Default: Only commit staged files - `--stage`: Interactive staging with `git add -p` - `--stage-all`: Stage all modified files (use with caution) +- `--dry-run`: 커밋 실행 없이 생성될 메시지만 출력.claude/commands/pr.md (4)
97-106: 중복 헤딩(MD024) 제거/명확화 필요"## Usage Examples"가 72행에도 있어 중복입니다. 두 번째 헤딩을 변경하세요.
-## Usage Examples +## Advanced Usage ```bash # Safe default - asks before pushing /pr
81-89: 기준 브랜치 비교 대상을 origin/develop으로 고정로컬 develop이 최신이 아닐 수 있습니다. 비교 대상과 동작을 원격 기준으로 명확히 하세요.
-2. Compare with develop branch to get all commits +2. `git fetch origin` 후 `origin/develop`과 비교하여 커밋 수집 ... -7. Create PR using GitHub CLI (only if remote branch exists) +7. 원격 브랜치가 없으면 확인 후 push(옵트인) → GitHub CLI로 PR 생성
59-66: 전제 조건(Prerequisites) 섹션 추가
gh로그인/권한 미비로 실패할 수 있습니다. 요구사항을 명시하세요.## EduKit-Specific Context - Base branch: `develop` ... - Common change patterns: - API additions in edukit-api - Business logic in edukit-core - External integrations in edukit-external - Database migrations in Flyway + +## Prerequisites +- GitHub CLI (`gh`) 설치 및 로그인: `gh auth login` +- 필요 권한: `repo` (PR 생성/라벨/설명 업데이트) +- CI에서는 `GH_TOKEN` 또는 `GITHUB_TOKEN` 설정 필요
10-15: Jira 키 추출 규칙 명시 요청“Jira 참조 포함”이 모호합니다. EDMT 키 추출 정규식과 우선순위를 문서에 명시하세요.
- Includes Jira ticket references + - Includes Jira ticket references (EDMT-\d+) + - Extraction order: 브랜치명 > 마지막 N개 커밋 메시지 > 수동 입력 + - Regex: `\bEDMT-\d+\b` ... -4. Extract Jira ticket numbers +4. Extract Jira ticket numbers (`EDMT-\d+`) using the above order; fallback to promptAlso applies to: 81-89
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (4)
.claude/agents/flyway-migration-generator.md(1 hunks).claude/agents/test-generator.md(1 hunks).claude/commands/commit.md(1 hunks).claude/commands/pr.md(1 hunks)
✅ Files skipped from review due to trivial changes (1)
- .claude/agents/flyway-migration-generator.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .claude/agents/test-generator.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.18.1)
.claude/commands/commit.md
64-64: Multiple headings with the same content
(MD024, no-duplicate-heading)
.claude/commands/pr.md
96-96: Multiple headings with the same content
(MD024, no-duplicate-heading)
🔇 Additional comments (3)
.claude/commands/commit.md (2)
15-16: 과거 피드백 반영 확인: 자동 스테이징 비활성 기본값“이미 스테이징된 파일만 커밋”으로 안전 기본값이 명확히 반영되었습니다. 좋습니다.
17-24: 확인 완료 —[refac]표기 일관성 확인됨git log 결과: feat 5, refac 3, fix 2, docs 1 —
[refactor]표기 없음. 문서(.claude/commands/commit.md)의[refac]표기는 레포 관행과 일치하므로 변경 불필요합니다..claude/commands/pr.md (1)
15-16: 이전 위험 지적사항 반영 확인: 기본 푸시 비활성/옵트인기본 푸시 비활성,
--push옵트인, 확인 프롬프트가 문서화되어 과거 피드백을 충실히 반영했습니다. 좋습니다.Also applies to: 91-95
📣 Jira Ticket
EDMT-451
👩💻 작업 내용
Claude Code 개발 효율성 향상을 위한 자동화 도구 및 에이전트를 추가했습니다.
추가된 기능
/commit): 스테이징된 변경사항을 분석하여 EduKit 컨벤션에 맞는 커밋 메시지 자동 생성/pr): 브랜치 분석 후 종합적인 PR 설명과 테스트 플랜 자동 생성문서화
Summary by CodeRabbit