From c575120f46fd9c08b384ba489022e5f4e03518c5 Mon Sep 17 00:00:00 2001 From: Zhongwei Li Date: Sat, 29 Nov 2025 18:19:53 +0800 Subject: [PATCH] Initial commit --- .claude-plugin/plugin.json | 11 ++++++ README.md | 3 ++ commands/commit.md | 72 ++++++++++++++++++++++++++++++++++++++ plugin.lock.json | 45 ++++++++++++++++++++++++ 4 files changed, 131 insertions(+) create mode 100644 .claude-plugin/plugin.json create mode 100644 README.md create mode 100644 commands/commit.md create mode 100644 plugin.lock.json diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json new file mode 100644 index 0000000..fc05026 --- /dev/null +++ b/.claude-plugin/plugin.json @@ -0,0 +1,11 @@ +{ + "name": "git-commit-plugin", + "description": "Auto-generate conventional commit messages in Korean by analyzing changes", + "version": "1.0.0", + "author": { + "name": "Stefan Cho" + }, + "commands": [ + "./commands" + ] +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..ae737f5 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# git-commit-plugin + +Auto-generate conventional commit messages in Korean by analyzing changes diff --git a/commands/commit.md b/commands/commit.md new file mode 100644 index 0000000..bd4aa74 --- /dev/null +++ b/commands/commit.md @@ -0,0 +1,72 @@ +--- +description: 변경사항을 분석하여 conventional commit 형식으로 자동 커밋 +allowed-tools: Bash(git status:*), Bash(git diff:*), Bash(git add:*), Bash(git commit:*), Bash(git log:*) +--- + +# Git Commit 자동 생성 + +변경된 파일과 내용을 분석하여 적절한 conventional commit 메시지를 자동으로 생성하고 커밋합니다. + + +현재 git 상태를 확인합니다: + +!`git status`: 현재 변경사항 및 staging 상태 확인 +!`git diff --cached`: staged된 변경사항 상세 확인 (staged 파일이 없으면 unstaged 파일도 확인) +!`git log -5 --oneline --no-decorate`: 최근 커밋 메시지 스타일 참고 + + + +다음 단계를 수행합니다: + +1. **변경사항 분석** + - staged된 파일이 없으면 사용자에게 알리고 어떤 파일을 stage할지 제안 + - 변경된 파일 경로와 내용을 분석 + - 프로젝트 구조를 고려하여 적절한 스코프 결정 + +2. **커밋 스코프 자동 결정** + 다음 규칙으로 스코프를 선택: + - `feat`: 새로운 기능, 컴포넌트, API 엔드포인트, UI 추가 + - `fix`: 버그 수정, 에러 핸들링, 오류 수정 + - `chore`: 의존성 업데이트, 설정 파일 변경, 빌드 설정 + - `docs`: README, 문서 파일 (*.md), 주석 변경 + - `style`: 코드 포맷팅, CSS, 스타일 수정 (기능 변경 없음) + - `refactor`: 기능 변경 없는 코드 구조 개선, 리팩토링 + - `test`: 테스트 코드 추가/수정, 테스트 설정 + - `build`: 빌드 스크립트, 패키지 설정 변경 + - `ci`: CI/CD 설정 변경 + +3. **커밋 메시지 작성** (한국어) + - 형식: `{scope}: {명확하고 간결한 한국어 요약}` + - 요약은 동사로 시작 (예: "추가", "수정", "개선", "제거") + - 50자 이내로 작성 + - 필요시 빈 줄 후 상세 설명 추가 (각 줄 72자 이내) + +4. **사용자 확인 요청** + - 생성된 커밋 메시지 보여주기 + - 주요 변경사항 요약 (diff 하이라이트) + - AskUserQuestion 도구를 사용하여 승인 또는 수정 요청 + - 옵션: "커밋 실행", "메시지 수정", "취소" + +5. **커밋 실행** + - 승인되면: `git commit -m "생성된 메시지"` + - 수정 요청되면: 사용자 피드백 반영하여 메시지 재작성 후 다시 확인 + - 취소되면: 작업 중단 + + + +- staged된 변경사항이 없으면 먼저 `git add` 할 파일을 제안합니다 +- 여러 스코프에 해당하는 변경사항이 섞여있으면 가장 주요한 것을 선택하거나 분리 커밋을 제안합니다 +- 민감한 정보(API 키, 비밀번호 등)가 포함된 파일은 경고합니다 +- 커밋 메시지는 프로젝트의 최근 커밋 스타일을 참고하여 일관성을 유지합니다 +- 빈 커밋은 생성하지 않습니다 + + + +좋은 커밋 메시지 예시: +- `feat: 사용자 인증 기능 추가` +- `fix: 날짜 범위 검색 시 경계값 오류 수정` +- `chore: 의존성 버전 업데이트` +- `docs: API 사용 예제 추가` +- `refactor: 서비스 레이어 코드 구조 개선` +- `test: 단위 테스트 추가` + diff --git a/plugin.lock.json b/plugin.lock.json new file mode 100644 index 0000000..ef635a0 --- /dev/null +++ b/plugin.lock.json @@ -0,0 +1,45 @@ +{ + "$schema": "internal://schemas/plugin.lock.v1.json", + "pluginId": "gh:devstefancho/claude-plugins:git-commit-plugin", + "normalized": { + "repo": null, + "ref": "refs/tags/v20251128.0", + "commit": "50b429fc32795906a93083e955e9b6b9e423013c", + "treeHash": "99acbf17a16987646bf9c855fde7d2d1f15e004fbd3d689668a1577e4e69c1df", + "generatedAt": "2025-11-28T10:16:21.687009Z", + "toolVersion": "publish_plugins.py@0.2.0" + }, + "origin": { + "remote": "git@github.com:zhongweili/42plugin-data.git", + "branch": "master", + "commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390", + "repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data" + }, + "manifest": { + "name": "git-commit-plugin", + "description": "Auto-generate conventional commit messages in Korean by analyzing changes", + "version": "1.0.0" + }, + "content": { + "files": [ + { + "path": "README.md", + "sha256": "39bc258439b4f7979b9739b9d28ff36514d44b721fbcaff981d21d59a0b451d0" + }, + { + "path": ".claude-plugin/plugin.json", + "sha256": "b17035220c5cb2cc83a7d1f81dd14de60ec054ca789c3d6ba67ad93f8f887cc6" + }, + { + "path": "commands/commit.md", + "sha256": "96bf1a950ac7081c4c0e667da4ca5431b7bb7324993d219100276af39ea24f30" + } + ], + "dirSha256": "99acbf17a16987646bf9c855fde7d2d1f15e004fbd3d689668a1577e4e69c1df" + }, + "security": { + "scannedAt": null, + "scannerVersion": null, + "flags": [] + } +} \ No newline at end of file