gitsentry 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. gitsentry-0.1.0/.claude/agents/git-analyst.md +18 -0
  2. gitsentry-0.1.0/.claude/agents/security-reviewer.md +17 -0
  3. gitsentry-0.1.0/.claude/settings.local.json +11 -0
  4. gitsentry-0.1.0/.claude/skills/pre-push-audit/SKILL.md +57 -0
  5. gitsentry-0.1.0/.env.example +2 -0
  6. gitsentry-0.1.0/.gitignore +16 -0
  7. gitsentry-0.1.0/CLAUDE.md +97 -0
  8. gitsentry-0.1.0/PKG-INFO +98 -0
  9. gitsentry-0.1.0/README.md +65 -0
  10. gitsentry-0.1.0/docs/SECURITY.md +44 -0
  11. gitsentry-0.1.0/docs/decisions/ADR-0001-cli-architecture.md +19 -0
  12. gitsentry-0.1.0/docs/decisions/ADR-0002-llm-integration.md +19 -0
  13. gitsentry-0.1.0/pyproject.toml +62 -0
  14. gitsentry-0.1.0/scripts/install-hook.sh +22 -0
  15. gitsentry-0.1.0/src/gitsentry/__init__.py +1 -0
  16. gitsentry-0.1.0/src/gitsentry/cli/__init__.py +0 -0
  17. gitsentry-0.1.0/src/gitsentry/cli/main.py +275 -0
  18. gitsentry-0.1.0/src/gitsentry/core/__init__.py +0 -0
  19. gitsentry-0.1.0/src/gitsentry/core/auditor.py +64 -0
  20. gitsentry-0.1.0/src/gitsentry/core/history.py +55 -0
  21. gitsentry-0.1.0/src/gitsentry/core/patterns.py +63 -0
  22. gitsentry-0.1.0/src/gitsentry/core/preview.py +39 -0
  23. gitsentry-0.1.0/src/gitsentry/core/scanner.py +68 -0
  24. gitsentry-0.1.0/src/gitsentry/llm/__init__.py +0 -0
  25. gitsentry-0.1.0/src/gitsentry/llm/client.py +38 -0
  26. gitsentry-0.1.0/src/gitsentry/llm/skill_gen.py +89 -0
  27. gitsentry-0.1.0/src/gitsentry/utils/__init__.py +0 -0
  28. gitsentry-0.1.0/src/gitsentry/utils/git.py +65 -0
  29. gitsentry-0.1.0/src/gitsentry/utils/github_api.py +60 -0
  30. gitsentry-0.1.0/tests/__init__.py +0 -0
  31. gitsentry-0.1.0/tests/integration/__init__.py +0 -0
  32. gitsentry-0.1.0/tests/unit/__init__.py +0 -0
  33. gitsentry-0.1.0/tests/unit/test_patterns.py +52 -0
@@ -0,0 +1,18 @@
1
+ # Git Analyst Agent
2
+
3
+ 당신은 Git 히스토리 분석 전문가입니다. 커밋 히스토리에서 과거에 노출된 민감 정보를 추적합니다.
4
+
5
+ ## 역할
6
+ - `git log`, `git show`, `git diff` 명령으로 커밋 히스토리 분석
7
+ - 삭제되었지만 과거 커밋에 노출된 민감 정보 탐지
8
+ - `.gitignore`에 추가되었지만 이미 커밋된 파일 확인
9
+
10
+ ## 분석 절차
11
+ 1. `git log --oneline` 으로 커밋 목록 확인
12
+ 2. 의심 커밋에서 `git show <hash>` 로 diff 확인
13
+ 3. 민감 정보 패턴 매칭
14
+ 4. 발견 시 커밋 해시와 파일명 기록
15
+
16
+ ## 히스토리 정리 방법 (DANGER 발견 시)
17
+ - `git filter-repo --path <file> --invert-paths` — 파일 히스토리 완전 삭제
18
+ - orphan branch로 새 히스토리 시작 (가장 확실)
@@ -0,0 +1,17 @@
1
+ # Security Reviewer Agent
2
+
3
+ 당신은 Git 저장소 보안 전문가입니다. 파일 내용에서 민감 정보를 탐지하고 리스크를 평가합니다.
4
+
5
+ ## 역할
6
+ - 파일 내용에서 API 키, 비밀번호, 내부 문서 참조 등 민감 정보 탐지
7
+ - 각 발견 항목의 실제 리스크 수준 평가 (DANGER / WARNING / INFO)
8
+ - 즉시 조치가 필요한 항목과 그 이유 설명
9
+
10
+ ## 탐지 패턴
11
+ - API 키: `sk-`, `ghp_`, `AKIA`, Bearer 토큰
12
+ - 내부 문서: CLAUDE.md, LESSONS_LEARNED.md, DEVELOPMENT.md
13
+ - 환경 파일: .env, .env.local 등
14
+ - 비밀번호/시크릿 할당
15
+
16
+ ## 출력 형식
17
+ 발견 항목을 표로 정리하고, DANGER 항목에는 즉시 조치 방법을 제시합니다.
@@ -0,0 +1,11 @@
1
+ {
2
+ "harness": {
3
+ "agents": [
4
+ {"path": "agents/security-reviewer.md"},
5
+ {"path": "agents/git-analyst.md"}
6
+ ],
7
+ "skills": [
8
+ {"path": "skills/pre-push-audit/SKILL.md"}
9
+ ]
10
+ }
11
+ }
@@ -0,0 +1,57 @@
1
+ # Pre-push Security Audit Skill
2
+
3
+ 당신은 Git push 전 보안 감사 에이전트입니다.
4
+
5
+ ## 트리거
6
+ 사용자가 `/pre-push-audit` 를 호출하거나 "push 전 보안 검사", "보안 감사해줘" 등을 요청할 때.
7
+
8
+ ## 감사 절차
9
+
10
+ ### Step 1: Push 대상 파일 확인
11
+ ```bash
12
+ git ls-files
13
+ git diff --name-only HEAD origin/main 2>/dev/null
14
+ ```
15
+
16
+ ### Step 2: DANGER 패턴 검사 (발견 즉시 차단)
17
+ - `sk-[A-Za-z0-9]{20,}` — Anthropic/OpenAI API Key
18
+ - `ghp_[A-Za-z0-9]{36}` — GitHub Personal Access Token
19
+ - `AKIA[A-Z0-9]{16}` — AWS Access Key
20
+ - `password\s*=\s*\S{4,}` — 비밀번호 할당
21
+ - `.env` 파일
22
+
23
+ ### Step 3: WARNING 패턴 확인 (사용자 확인 후 진행)
24
+ - `CLAUDE.md` — Claude Code 내부 문서
25
+ - `LESSONS_LEARNED.md` — 내부 개발 기록
26
+ - `DEVELOPMENT.md` — 내부 개발 문서
27
+ - `RESEARCH_*.md` — 내부 연구 문서
28
+
29
+ ### Step 4: .gitignore 검증
30
+ 다음이 .gitignore에 포함되어 있는지 확인:
31
+ ```
32
+ CLAUDE.md
33
+ **/CLAUDE.md
34
+ LESSONS_LEARNED.md
35
+ DEVELOPMENT.md
36
+ .env
37
+ .env.*
38
+ .claude/
39
+ ```
40
+
41
+ ### Step 5: 결과 보고
42
+
43
+ | 파일 | 유형 | 위험도 | 조치 |
44
+ |------|------|--------|------|
45
+
46
+ - **DANGER**: push 중단 권고 + 즉시 조치 방법 제시
47
+ - **WARNING**: 사용자 확인 요청
48
+ - **클린**: "보안 검사 통과 ✓" 출력
49
+
50
+ ## gitvault CLI로 실행
51
+
52
+ ```bash
53
+ gitvault audit . # 현재 저장소 감사
54
+ gitvault pre-push # pre-push 전체 감사
55
+ gitvault history . -n 50 # 최근 50개 커밋 감사
56
+ gitvault preview . # push 대상 미리보기
57
+ ```
@@ -0,0 +1,2 @@
1
+ GITHUB_TOKEN=ghp_your_token_here
2
+ ANTHROPIC_API_KEY=sk-ant-your_key_here
@@ -0,0 +1,16 @@
1
+ __pycache__/
2
+ *.pyc
3
+ *.pyo
4
+ .DS_Store
5
+ .pytest_cache/
6
+ .ruff_cache/
7
+ .mypy_cache/
8
+ .venv/
9
+ venv/
10
+ dist/
11
+ build/
12
+ *.egg-info/
13
+ .env
14
+ .env.*
15
+ !.env.example
16
+ data/
@@ -0,0 +1,97 @@
1
+ # GitSentry — CLAUDE.md
2
+
3
+ ## 프로젝트 정체성
4
+
5
+ LLM 개발 환경(Claude Code, Codex 등)에서 사람과 AI가 함께 작업할 때 발생하는 GitHub 보안 위험을 자동으로 감사하는 CLI + Claude Code 연동 도구.
6
+
7
+ **동기**: macTR 개발 중 `git add -A`로 내부 문서(CLAUDE.md, LESSONS_LEARNED.md)가 GitHub에 노출되고, `.gitignore`가 push되어 내부 파일 이름이 공개된 사고에서 출발.
8
+
9
+ ## 기술 스택
10
+
11
+ | 레이어 | 기술 |
12
+ |--------|------|
13
+ | CLI | Typer + Rich |
14
+ | 패키지 | hatchling + pyproject.toml |
15
+ | GitHub API | PyGithub |
16
+ | Git 분석 | GitPython + subprocess |
17
+ | LLM | Anthropic SDK (선택적) |
18
+ | 테스트 | pytest |
19
+
20
+ ## 세션 시작 시 필독 순서
21
+
22
+ 1. 이 파일 (CLAUDE.md)
23
+ 2. `docs/SECURITY.md` — 감사 규칙 정의
24
+ 3. `docs/decisions/` — ADR 목록
25
+
26
+ ## 절대 원칙
27
+
28
+ 1. **LLM 없이도 기본 감사(F1-F4)는 완전히 동작** — `--llm` 플래그는 opt-in
29
+ 2. **감사 결과에 실제 비밀 값 포함 금지** — 항상 마스킹 처리
30
+ 3. **`gitsentry audit .`로 자가 검증 통과** — 본 프로젝트도 감사 대상
31
+ 4. **GitHub push는 사용자 명시 요청 시에만**
32
+
33
+ ## 개발 규칙
34
+
35
+ - 추측 금지 → WebSearch로 공식 문서 확인
36
+ - 공식 문서 → 명세 → 구현 순서
37
+ - 기존 동작 코드 보호
38
+
39
+ ## 디렉토리 구조
40
+
41
+ ```
42
+ src/gitsentry/
43
+ ├── cli/main.py # typer 진입점 — 6개 명령
44
+ ├── core/
45
+ │ ├── patterns.py # 민감 정보 패턴 정의
46
+ │ ├── auditor.py # F1: 현재 감사
47
+ │ ├── history.py # F2: 히스토리 감사
48
+ │ ├── scanner.py # F3: 전체 저장소
49
+ │ └── preview.py # F4: push 미리보기
50
+ ├── llm/
51
+ │ ├── client.py # F5: Claude API 연동
52
+ │ └── skill_gen.py # F6: 메타 스킬 생성
53
+ └── utils/
54
+ ├── git.py # git 명령 래퍼
55
+ └── github_api.py # GitHub API 래퍼
56
+ ```
57
+
58
+ ## 앱 실행 방법
59
+
60
+ ```bash
61
+ cd /Users/beret21/Library/CloudStorage/Dropbox/Codes/Projects/GitSentry
62
+
63
+ # 가상환경 설정 (최초 1회)
64
+ python -m venv .venv
65
+ source .venv/bin/activate
66
+ pip install -e ".[dev]"
67
+
68
+ # 사용
69
+ gitsentry --help
70
+ gitsentry audit .
71
+ gitsentry preview .
72
+ gitsentry history . -n 50
73
+ gitsentry pre-push
74
+ gitsentry generate-skill .claude/skills/pre-push-audit/
75
+
76
+ # 테스트
77
+ pytest tests/unit/
78
+
79
+ # 다른 프로젝트에 pre-push 훅 설치
80
+ ./scripts/install-hook.sh /path/to/other/repo
81
+ ```
82
+
83
+ ## 로그 / 진단
84
+
85
+ ```bash
86
+ # 감사 + Claude 분석
87
+ gitsentry audit . --llm
88
+
89
+ # 전체 저장소 스캔
90
+ gitsentry scan --all
91
+ ```
92
+
93
+ ## 변경 이력
94
+
95
+ | 날짜 | 내용 |
96
+ |------|------|
97
+ | 2026-06-22 | 초기 프로젝트 구조 생성, 6개 기능 구현 완료 (Phase 1-4) |
@@ -0,0 +1,98 @@
1
+ Metadata-Version: 2.4
2
+ Name: gitsentry
3
+ Version: 0.1.0
4
+ Summary: GitHub security audit CLI for LLM-assisted development environments
5
+ Project-URL: Homepage, https://github.com/beret21/GitSentry
6
+ Project-URL: Repository, https://github.com/beret21/GitSentry
7
+ Project-URL: Issues, https://github.com/beret21/GitSentry/issues
8
+ Author-email: Yoonseok Jang <beret21@gmail.com>
9
+ License: MIT
10
+ Keywords: audit,claude,cli,github,llm,security
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
18
+ Classifier: Topic :: Security
19
+ Requires-Python: >=3.11
20
+ Requires-Dist: anthropic>=0.40.0
21
+ Requires-Dist: gitpython>=3.1
22
+ Requires-Dist: pydantic>=2.0
23
+ Requires-Dist: pygithub>=2.0
24
+ Requires-Dist: python-dotenv>=1.0
25
+ Requires-Dist: rich>=13.0
26
+ Requires-Dist: typer>=0.12
27
+ Provides-Extra: dev
28
+ Requires-Dist: mypy>=1.10; extra == 'dev'
29
+ Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
30
+ Requires-Dist: pytest>=8.0; extra == 'dev'
31
+ Requires-Dist: ruff>=0.4; extra == 'dev'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # GitSentry
35
+
36
+ LLM 개발 환경(Claude Code, Codex 등)에서 GitHub push 전 보안 감사 CLI 도구.
37
+
38
+ ## 기능
39
+
40
+ | 명령 | 설명 |
41
+ |------|------|
42
+ | `gitsentry audit .` | 현재 저장소 공개 파일 보안 감사 |
43
+ | `gitsentry history .` | Git 커밋 히스토리 보안 감사 |
44
+ | `gitsentry scan --all` | 계정 전체 GitHub 저장소 감사 |
45
+ | `gitsentry preview .` | Push 대상 vs 제외 파일 시각화 |
46
+ | `gitsentry pre-push` | Pre-push 훅 수동 실행 |
47
+ | `gitsentry generate-skill` | Claude Code 보안 감사 스킬 생성 |
48
+
49
+ ## 설치
50
+
51
+ ```bash
52
+ # pipx 권장 (전역 설치, 가상환경 불필요)
53
+ pipx install git+https://github.com/beret21/GitSentry.git
54
+
55
+ # 업데이트
56
+ pipx upgrade gitsentry
57
+ ```
58
+
59
+ pipx가 없다면:
60
+
61
+ ```bash
62
+ brew install pipx
63
+ pipx ensurepath
64
+ ```
65
+
66
+ 개발용 설치:
67
+
68
+ ```bash
69
+ git clone https://github.com/beret21/GitSentry.git
70
+ cd GitSentry
71
+ pip install -e ".[dev]"
72
+ ```
73
+
74
+ ## 빠른 시작
75
+
76
+ ```bash
77
+ # 현재 저장소 감사
78
+ gitsentry audit .
79
+
80
+ # Push 전 미리보기
81
+ gitsentry preview .
82
+
83
+ # pre-push 훅 설치
84
+ ./scripts/install-hook.sh .
85
+ ```
86
+
87
+ ## 환경 변수 (.env)
88
+
89
+ ```
90
+ GITHUB_TOKEN=ghp_your_token # 원격 저장소 감사에 필요
91
+ ANTHROPIC_API_KEY=sk-ant-... # --llm 옵션 사용 시 필요
92
+ ```
93
+
94
+ ## 탐지 패턴
95
+
96
+ **DANGER (push 차단):** API 키(`sk-`, `ghp_`, `AKIA`), 비밀번호, Bearer 토큰
97
+
98
+ **WARNING (주의):** LLM 내부 문서 (CLAUDE.md, LESSONS_LEARNED.md, DEVELOPMENT.md)
@@ -0,0 +1,65 @@
1
+ # GitSentry
2
+
3
+ LLM 개발 환경(Claude Code, Codex 등)에서 GitHub push 전 보안 감사 CLI 도구.
4
+
5
+ ## 기능
6
+
7
+ | 명령 | 설명 |
8
+ |------|------|
9
+ | `gitsentry audit .` | 현재 저장소 공개 파일 보안 감사 |
10
+ | `gitsentry history .` | Git 커밋 히스토리 보안 감사 |
11
+ | `gitsentry scan --all` | 계정 전체 GitHub 저장소 감사 |
12
+ | `gitsentry preview .` | Push 대상 vs 제외 파일 시각화 |
13
+ | `gitsentry pre-push` | Pre-push 훅 수동 실행 |
14
+ | `gitsentry generate-skill` | Claude Code 보안 감사 스킬 생성 |
15
+
16
+ ## 설치
17
+
18
+ ```bash
19
+ # pipx 권장 (전역 설치, 가상환경 불필요)
20
+ pipx install git+https://github.com/beret21/GitSentry.git
21
+
22
+ # 업데이트
23
+ pipx upgrade gitsentry
24
+ ```
25
+
26
+ pipx가 없다면:
27
+
28
+ ```bash
29
+ brew install pipx
30
+ pipx ensurepath
31
+ ```
32
+
33
+ 개발용 설치:
34
+
35
+ ```bash
36
+ git clone https://github.com/beret21/GitSentry.git
37
+ cd GitSentry
38
+ pip install -e ".[dev]"
39
+ ```
40
+
41
+ ## 빠른 시작
42
+
43
+ ```bash
44
+ # 현재 저장소 감사
45
+ gitsentry audit .
46
+
47
+ # Push 전 미리보기
48
+ gitsentry preview .
49
+
50
+ # pre-push 훅 설치
51
+ ./scripts/install-hook.sh .
52
+ ```
53
+
54
+ ## 환경 변수 (.env)
55
+
56
+ ```
57
+ GITHUB_TOKEN=ghp_your_token # 원격 저장소 감사에 필요
58
+ ANTHROPIC_API_KEY=sk-ant-... # --llm 옵션 사용 시 필요
59
+ ```
60
+
61
+ ## 탐지 패턴
62
+
63
+ **DANGER (push 차단):** API 키(`sk-`, `ghp_`, `AKIA`), 비밀번호, Bearer 토큰
64
+
65
+ **WARNING (주의):** LLM 내부 문서 (CLAUDE.md, LESSONS_LEARNED.md, DEVELOPMENT.md)
@@ -0,0 +1,44 @@
1
+ # GitVault — 보안 감사 규칙
2
+
3
+ ## 민감 정보 분류
4
+
5
+ ### DANGER (즉시 차단)
6
+ | 유형 | 설명 |
7
+ |------|------|
8
+ | API Key | Anthropic(`sk-`), OpenAI(`sk-`), GitHub(`ghp_`), AWS(`AKIA`) |
9
+ | Bearer Token | Authorization 헤더 토큰 |
10
+ | 비밀번호/시크릿 | `password =`, `secret =` 패턴 |
11
+ | 환경 파일 | `.env`, `.env.local` 등 |
12
+
13
+ ### WARNING (주의 필요)
14
+ | 유형 | 설명 |
15
+ |------|------|
16
+ | LLM 내부 문서 | CLAUDE.md, LESSONS_LEARNED.md, DEVELOPMENT.md |
17
+ | 연구 문서 | RESEARCH_*.md |
18
+
19
+ ### INFO (참고)
20
+ | 유형 | 설명 |
21
+ |------|------|
22
+ | 로컬 경로 | `/Users/username/` 패턴 |
23
+ | localhost | `localhost:포트` 참조 |
24
+
25
+ ## 대응 절차
26
+
27
+ ### DANGER 발견 시
28
+ 1. push 즉시 중단
29
+ 2. 해당 파일을 .gitignore에 추가
30
+ 3. 이미 커밋된 경우: `git filter-repo` 또는 orphan branch로 히스토리 정리
31
+ 4. 노출된 키/비밀번호는 즉시 만료 처리
32
+
33
+ ### WARNING 발견 시
34
+ 1. 파일이 내부 전용인지 확인
35
+ 2. .gitignore에 추가 (`git rm --cached <file>`)
36
+ 3. GitHub에 이미 push된 경우 히스토리 검토
37
+
38
+ ## LLM 개발 환경 특수 규칙
39
+
40
+ Claude Code + Git 사용 시:
41
+ - `CLAUDE.md`, `**/CLAUDE.md` 반드시 .gitignore에 포함
42
+ - `.claude/` 디렉토리 전체 제외 (또는 공개 OK인 항목만 선별)
43
+ - `git add -A` 사용 금지 — 파일 명시 지정
44
+ - push 전 `gitvault pre-push` 실행 권장
@@ -0,0 +1,19 @@
1
+ # ADR-0001: CLI 아키텍처 — Typer + Rich
2
+
3
+ **날짜:** 2026-06-22
4
+ **상태:** 결정됨
5
+
6
+ ## 배경
7
+ GitVault는 터미널에서 사용하는 보안 감사 도구이므로 CLI 인터페이스가 필수다.
8
+
9
+ ## 결정
10
+ Typer + Rich 조합을 사용한다.
11
+
12
+ ## 이유
13
+ - 기존 Projects 폴더의 Python CLI 프로젝트(FleetLens_CLI)와 동일한 스택
14
+ - Typer: Click 기반, 타입 힌트로 자동 파라미터 파싱
15
+ - Rich: 터미널 컬러 테이블, Progress bar — 보안 감사 결과 시각화에 최적
16
+
17
+ ## 대안
18
+ - argparse: 너무 저수준
19
+ - Click 직접: Typer가 더 적은 코드로 동일 기능
@@ -0,0 +1,19 @@
1
+ # ADR-0002: LLM 통합 — Claude API (선택적)
2
+
3
+ **날짜:** 2026-06-22
4
+ **상태:** 결정됨
5
+
6
+ ## 배경
7
+ F5(pre-push 훅)와 F6(메타 스킬)에서 Claude와 연동이 필요하다.
8
+
9
+ ## 결정
10
+ LLM 연동은 선택적(`--llm` 플래그)으로만 동작하며, 기본 감사는 로컬 패턴 매칭만 사용한다.
11
+
12
+ ## 이유
13
+ - LLM 없이도 핵심 기능(F1-F4)이 완전히 동작해야 함
14
+ - API 키 없는 환경에서도 기본 감사 가능
15
+ - `--llm` 플래그로 opt-in — 사용자 선택
16
+
17
+ ## 모델
18
+ - `claude-sonnet-4-6` (현재 세션 기본 모델)
19
+ - 감사 결과 분석, 권장 조치 생성에 사용
@@ -0,0 +1,62 @@
1
+ [project]
2
+ name = "gitsentry"
3
+ version = "0.1.0"
4
+ description = "GitHub security audit CLI for LLM-assisted development environments"
5
+ readme = "README.md"
6
+ license = { text = "MIT" }
7
+ authors = [{ name = "Yoonseok Jang", email = "beret21@gmail.com" }]
8
+ keywords = ["security", "github", "cli", "llm", "claude", "audit"]
9
+ classifiers = [
10
+ "Development Status :: 3 - Alpha",
11
+ "Environment :: Console",
12
+ "Intended Audience :: Developers",
13
+ "License :: OSI Approved :: MIT License",
14
+ "Programming Language :: Python :: 3.11",
15
+ "Programming Language :: Python :: 3.12",
16
+ "Programming Language :: Python :: 3.13",
17
+ "Topic :: Security",
18
+ ]
19
+ requires-python = ">=3.11"
20
+ dependencies = [
21
+ "anthropic>=0.40.0",
22
+ "pydantic>=2.0",
23
+ "python-dotenv>=1.0",
24
+ "typer>=0.12",
25
+ "rich>=13.0",
26
+ "PyGithub>=2.0",
27
+ "GitPython>=3.1",
28
+ ]
29
+
30
+ [project.optional-dependencies]
31
+ dev = [
32
+ "pytest>=8.0",
33
+ "pytest-asyncio>=0.23",
34
+ "ruff>=0.4",
35
+ "mypy>=1.10",
36
+ ]
37
+
38
+ [project.scripts]
39
+ gitsentry = "gitsentry.cli.main:app"
40
+
41
+ [project.urls]
42
+ Homepage = "https://github.com/beret21/GitSentry"
43
+ Repository = "https://github.com/beret21/GitSentry"
44
+ Issues = "https://github.com/beret21/GitSentry/issues"
45
+
46
+ [build-system]
47
+ requires = ["hatchling"]
48
+ build-backend = "hatchling.build"
49
+
50
+ [tool.hatch.build.targets.wheel]
51
+ packages = ["src/gitsentry"]
52
+
53
+ [tool.ruff]
54
+ line-length = 100
55
+ target-version = "py311"
56
+
57
+ [tool.ruff.lint]
58
+ select = ["E", "F", "W", "I", "N", "UP", "B", "SIM", "RUF"]
59
+
60
+ [tool.pytest.ini_options]
61
+ testpaths = ["tests"]
62
+ asyncio_mode = "auto"
@@ -0,0 +1,22 @@
1
+ #!/bin/bash
2
+ # GitSentry pre-push 훅 설치 스크립트
3
+ # 사용법: ./scripts/install-hook.sh [저장소 경로]
4
+
5
+ REPO_PATH="${1:-.}"
6
+ HOOK_PATH="$REPO_PATH/.git/hooks/pre-push"
7
+
8
+ if [ ! -d "$REPO_PATH/.git" ]; then
9
+ echo "Error: $REPO_PATH 는 git 저장소가 아닙니다."
10
+ exit 1
11
+ fi
12
+
13
+ cat > "$HOOK_PATH" << 'EOF'
14
+ #!/bin/bash
15
+ # GitSentry pre-push security hook
16
+ gitsentry pre-push .
17
+ exit $?
18
+ EOF
19
+
20
+ chmod +x "$HOOK_PATH"
21
+ echo "pre-push 훅 설치 완료: $HOOK_PATH"
22
+ echo "이제 git push 전에 자동으로 보안 감사가 실행됩니다."
@@ -0,0 +1 @@
1
+ __version__ = "0.1.0"
File without changes