claude-pro-minmax 1.0.0
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.
- package/.claude/CLAUDE.md +60 -0
- package/.claude/agents/README.ko.md +210 -0
- package/.claude/agents/README.md +210 -0
- package/.claude/agents/builder.md +96 -0
- package/.claude/agents/dplanner.md +58 -0
- package/.claude/agents/planner.md +52 -0
- package/.claude/agents/reviewer.md +69 -0
- package/.claude/commands/README.ko.md +381 -0
- package/.claude/commands/README.md +381 -0
- package/.claude/commands/analyze-failures.md +49 -0
- package/.claude/commands/compact-phase.md +75 -0
- package/.claude/commands/do-opus.md +43 -0
- package/.claude/commands/do-sonnet.md +43 -0
- package/.claude/commands/do.md +56 -0
- package/.claude/commands/dplan.md +36 -0
- package/.claude/commands/learn.md +64 -0
- package/.claude/commands/llms-txt.md +50 -0
- package/.claude/commands/load-context.md +46 -0
- package/.claude/commands/plan.md +62 -0
- package/.claude/commands/review.md +55 -0
- package/.claude/commands/session-load.md +61 -0
- package/.claude/commands/session-save.md +79 -0
- package/.claude/commands/watch.md +58 -0
- package/.claude/contexts/README.ko.md +94 -0
- package/.claude/contexts/README.md +94 -0
- package/.claude/contexts/backend-context.md +23 -0
- package/.claude/contexts/frontend-context.md +24 -0
- package/.claude/rules/README.ko.md +98 -0
- package/.claude/rules/README.md +98 -0
- package/.claude/rules/code-style.md +21 -0
- package/.claude/rules/critical-actions.md +34 -0
- package/.claude/rules/security.md +13 -0
- package/.claude/sessions/2025-01-27-auth-jwt-refresh.md +32 -0
- package/.claude/sessions/README.ko.md +195 -0
- package/.claude/sessions/README.md +195 -0
- package/.claude/settings.json +167 -0
- package/.claude/settings.local.example.json +3 -0
- package/.claude/skills/README.ko.md +60 -0
- package/.claude/skills/README.md +60 -0
- package/.claude/skills/cli-wrappers/SKILL.md +38 -0
- package/.claude/skills/cli-wrappers/references/github-cli.md +18 -0
- package/.claude/skills/cli-wrappers/references/mgrep.md +18 -0
- package/.claude/skills/learned/README.ko.md +64 -0
- package/.claude/skills/learned/README.md +64 -0
- package/.claude.json +28 -0
- package/.claudeignore +17 -0
- package/LICENSE +21 -0
- package/README.ko.md +441 -0
- package/README.md +441 -0
- package/bin/cpmm.js +171 -0
- package/install.sh +154 -0
- package/package.json +59 -0
- package/scripts/README.ko.md +150 -0
- package/scripts/README.md +150 -0
- package/scripts/analyze-failures.sh +145 -0
- package/scripts/build.sh +34 -0
- package/scripts/claude_command_smoke.sh +116 -0
- package/scripts/commit.sh +7 -0
- package/scripts/create-branch.sh +14 -0
- package/scripts/hooks/README.ko.md +117 -0
- package/scripts/hooks/README.md +118 -0
- package/scripts/hooks/compact-suggest.sh +52 -0
- package/scripts/hooks/critical-action-check.sh +68 -0
- package/scripts/hooks/notification.sh +47 -0
- package/scripts/hooks/post-edit-format.sh +39 -0
- package/scripts/hooks/pre-compact.sh +55 -0
- package/scripts/hooks/readonly-check.sh +19 -0
- package/scripts/hooks/retry-check.sh +32 -0
- package/scripts/hooks/session-cleanup.sh +83 -0
- package/scripts/hooks/session-start.sh +70 -0
- package/scripts/hooks/stop-collect-context.sh +39 -0
- package/scripts/hooks/tool-failure-log.sh +46 -0
- package/scripts/lint.sh +34 -0
- package/scripts/runtime/README.ko.md +60 -0
- package/scripts/runtime/README.md +60 -0
- package/scripts/runtime/adapters/README.ko.md +68 -0
- package/scripts/runtime/adapters/README.md +68 -0
- package/scripts/runtime/adapters/_interface.sh +53 -0
- package/scripts/runtime/adapters/_template.sh +67 -0
- package/scripts/runtime/adapters/generic.sh +78 -0
- package/scripts/runtime/adapters/go.sh +51 -0
- package/scripts/runtime/adapters/jvm.sh +97 -0
- package/scripts/runtime/adapters/node.sh +104 -0
- package/scripts/runtime/adapters/python.sh +116 -0
- package/scripts/runtime/adapters/rust.sh +49 -0
- package/scripts/runtime/detect.sh +52 -0
- package/scripts/scrub-secrets.js +48 -0
- package/scripts/snapshot.sh +45 -0
- package/scripts/test.sh +34 -0
- package/scripts/verify.sh +35 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Frontend Context
|
|
2
|
+
|
|
3
|
+
## Tech Stack
|
|
4
|
+
- Framework: [Next.js/React]
|
|
5
|
+
- State: [Zustand/TanStack Query]
|
|
6
|
+
- Styling: [Tailwind]
|
|
7
|
+
|
|
8
|
+
## Components
|
|
9
|
+
| Component | Purpose |
|
|
10
|
+
|-----------|---------|
|
|
11
|
+
| AuthProvider | Auth state |
|
|
12
|
+
| ProtectedRoute | Route guard |
|
|
13
|
+
|
|
14
|
+
## Routes
|
|
15
|
+
| Path | Component | Auth |
|
|
16
|
+
|------|-----------|------|
|
|
17
|
+
| / | Landing | No |
|
|
18
|
+
| /dashboard | Dashboard | Yes |
|
|
19
|
+
|
|
20
|
+
## API
|
|
21
|
+
```typescript
|
|
22
|
+
const API = process.env.NEXT_PUBLIC_API_URL
|
|
23
|
+
headers: { Authorization: `Bearer ${token}` }
|
|
24
|
+
```
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
> **[English Version](README.md)**
|
|
2
|
+
|
|
3
|
+
# Rules Directory
|
|
4
|
+
|
|
5
|
+
## 목적
|
|
6
|
+
Claude가 항상 따르는 규칙들을 포함합니다. 이 규칙들은 모든 세션에서 자동으로 로드됩니다.
|
|
7
|
+
|
|
8
|
+
## 내용
|
|
9
|
+
|
|
10
|
+
| 파일 | 목적 | 우선순위 |
|
|
11
|
+
|------|---------|----------|
|
|
12
|
+
| `critical-actions.md` | 위험한 명령어에 대한 HITL(Human-in-the-Loop) 확인 | 최상 |
|
|
13
|
+
| `security.md` | 보안 모범 사례 | 상 |
|
|
14
|
+
| `code-style.md` | 코드 컨벤션 | 중 |
|
|
15
|
+
|
|
16
|
+
> **언어 설정:** `install.sh` 실행 시 출력 언어를 선택하거나, `~/.claude/rules/language.md`를 수동으로 생성하세요. 영어 사용자는 파일이 필요 없습니다 (기본값).
|
|
17
|
+
|
|
18
|
+
## 중요 작업 (Critical Actions)
|
|
19
|
+
|
|
20
|
+
가장 중요한 규칙 파일입니다. 다음을 정의합니다:
|
|
21
|
+
|
|
22
|
+
1. **직접적인 위험 명령어:**
|
|
23
|
+
- `git push --force`
|
|
24
|
+
- `DROP TABLE`, `DELETE FROM` (WHERE 절 없음)
|
|
25
|
+
- 주요 디렉토리에 대한 `rm -rf`
|
|
26
|
+
|
|
27
|
+
2. **간접적인 스크립트 감지:**
|
|
28
|
+
- `npm run clean`, `reset`, `nuke`
|
|
29
|
+
- `yarn db:reset`, `db:drop`
|
|
30
|
+
|
|
31
|
+
3. **Git 충돌 처리:**
|
|
32
|
+
- 즉시 감지
|
|
33
|
+
- 사용자에게 이양 (자동 해결 금지)
|
|
34
|
+
|
|
35
|
+
## 설계 결정
|
|
36
|
+
|
|
37
|
+
| 결정 | 근거 |
|
|
38
|
+
|------|------|
|
|
39
|
+
| 규칙 파일에 frontmatter 없음 | `critical-actions.md`와 `security.md` 같은 규칙은 의도적으로 전역 적용. `paths` 제한 불필요 |
|
|
40
|
+
| `critical-actions.md`를 순수 마크다운으로 | 훅 기반 차단(`~/.claude/scripts/hooks/critical-action-check.sh`)이 실제 강제를 담당. 규칙 파일은 Claude 이해를 위한 문서 |
|
|
41
|
+
| `security.md`를 `critical-actions.md`에서 분리 | Critical actions = 위험 명령어 차단. Security = 코딩 모범 사례. 목적이 다름 |
|
|
42
|
+
|
|
43
|
+
## 사용법
|
|
44
|
+
|
|
45
|
+
규칙은 자동으로 로드됩니다. 별도의 명령어가 필요하지 않습니다.
|
|
46
|
+
|
|
47
|
+
## 범위 지정 규칙 (고급)
|
|
48
|
+
|
|
49
|
+
`paths` frontmatter를 사용하여 특정 파일에만 규칙을 제한할 수 있습니다. 모노레포나 여러 언어가 섞인 프로젝트에서 유용합니다.
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
---
|
|
53
|
+
paths:
|
|
54
|
+
- "src/api/**/*.ts"
|
|
55
|
+
- "lib/**/*.ts"
|
|
56
|
+
---
|
|
57
|
+
# API 규칙
|
|
58
|
+
...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## 고급 구성
|
|
62
|
+
|
|
63
|
+
- **서브디렉토리**: 규칙을 폴더별로 그룹화할 수 있습니다 (예: `rules/frontend/`, `rules/backend/`).
|
|
64
|
+
- **심볼릭 링크 (Symlinks)**: 여러 프로젝트 간 일관성을 위해 공유 규칙 세트를 링크할 수 있습니다.
|
|
65
|
+
|
|
66
|
+
## 커스텀 규칙 추가
|
|
67
|
+
|
|
68
|
+
새로운 `.md` 파일을 생성하세요:
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
---
|
|
72
|
+
# 선택 사항: 특정 파일에만 적용
|
|
73
|
+
paths:
|
|
74
|
+
- "**/*.ts"
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
# [Rule Name] Rules
|
|
78
|
+
|
|
79
|
+
## 목적
|
|
80
|
+
이 규칙이 강제하는 것.
|
|
81
|
+
|
|
82
|
+
## 항상 할 것 (ALWAYS Do)
|
|
83
|
+
- ...
|
|
84
|
+
|
|
85
|
+
## 절대 하지 말 것 (NEVER Do)
|
|
86
|
+
- ...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## 우선순위
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
~/.claude/rules/*.md (사용자 레벨, 먼저 로드됨)
|
|
93
|
+
./project/.claude/rules/*.md (프로젝트 레벨, 사용자 규칙을 오버라이드)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
프로젝트 규칙이 **더 높은 우선순위**를 가집니다. 프로젝트 규칙 파일이 사용자 규칙 파일과 동일한 이름(예: `code-style.md`)을 가진 경우, 프로젝트 버전이 사용자 버전을 완전히 대체합니다.
|
|
97
|
+
|
|
98
|
+
프로젝트 규칙이 전역 규칙과 동일한 파일명을 가질 경우 전역 규칙을 오버라이드할 수 있습니다.
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
> **[한국어 버전](README.ko.md)**
|
|
2
|
+
|
|
3
|
+
# Rules Directory
|
|
4
|
+
|
|
5
|
+
## Purpose
|
|
6
|
+
Contains always-loaded rules that Claude follows. These are loaded automatically on every session.
|
|
7
|
+
|
|
8
|
+
## Contents
|
|
9
|
+
|
|
10
|
+
| File | Purpose | Priority |
|
|
11
|
+
|------|---------|----------|
|
|
12
|
+
| `critical-actions.md` | HITL confirmation for dangerous commands | HIGHEST |
|
|
13
|
+
| `security.md` | Security best practices | HIGH |
|
|
14
|
+
| `code-style.md` | Code conventions | MEDIUM |
|
|
15
|
+
|
|
16
|
+
> **Language setting:** Run `install.sh` to select your output language, or manually create `~/.claude/rules/language.md`. English users need no file (default).
|
|
17
|
+
|
|
18
|
+
## Critical Actions
|
|
19
|
+
|
|
20
|
+
The most important rule file. Defines:
|
|
21
|
+
|
|
22
|
+
1. **Direct Dangerous Commands:**
|
|
23
|
+
- `git push --force`
|
|
24
|
+
- `DROP TABLE`, `DELETE FROM` (no WHERE)
|
|
25
|
+
- `rm -rf` on important directories
|
|
26
|
+
|
|
27
|
+
2. **Indirect Script Detection:**
|
|
28
|
+
- `npm run clean`, `reset`, `nuke`
|
|
29
|
+
- `yarn db:reset`, `db:drop`
|
|
30
|
+
|
|
31
|
+
3. **Git Conflict Handling:**
|
|
32
|
+
- Immediate detection
|
|
33
|
+
- Handoff to user (no auto-resolution)
|
|
34
|
+
|
|
35
|
+
## Design Decisions
|
|
36
|
+
|
|
37
|
+
| Decision | Rationale |
|
|
38
|
+
|----------|-----------|
|
|
39
|
+
| No frontmatter in rule files | Rules like `critical-actions.md` and `security.md` are intentionally global. No `paths` restriction needed |
|
|
40
|
+
| `critical-actions.md` as plain markdown | Hook-based blocking (`~/.claude/scripts/hooks/critical-action-check.sh`) handles enforcement. Rule file is documentation for Claude's understanding |
|
|
41
|
+
| Separate `security.md` from `critical-actions.md` | Critical actions = blocking dangerous commands. Security = coding best practices. Different purposes |
|
|
42
|
+
|
|
43
|
+
## Usage
|
|
44
|
+
|
|
45
|
+
Rules are loaded automatically. No explicit command needed.
|
|
46
|
+
|
|
47
|
+
## Scope-Specific Rules (Advanced)
|
|
48
|
+
|
|
49
|
+
You can restrict rules to specific files using the `paths` frontmatter. This is useful for monorepos or mixed-language projects.
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
---
|
|
53
|
+
paths:
|
|
54
|
+
- "src/api/**/*.ts"
|
|
55
|
+
- "lib/**/*.ts"
|
|
56
|
+
---
|
|
57
|
+
# API Rules
|
|
58
|
+
...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Advanced Organization
|
|
62
|
+
|
|
63
|
+
- **Subdirectories**: Group rules into folders (e.g., `rules/frontend/`, `rules/backend/`).
|
|
64
|
+
- **Symlinks**: Link to shared rule sets for consistency across projects.
|
|
65
|
+
|
|
66
|
+
## Adding Custom Rules
|
|
67
|
+
|
|
68
|
+
Create a new `.md` file:
|
|
69
|
+
|
|
70
|
+
```markdown
|
|
71
|
+
---
|
|
72
|
+
# Optional: Apply only to specific files
|
|
73
|
+
paths:
|
|
74
|
+
- "**/*.ts"
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
# [Rule Name] Rules
|
|
78
|
+
|
|
79
|
+
## Purpose
|
|
80
|
+
What this rule enforces.
|
|
81
|
+
|
|
82
|
+
## ALWAYS Do
|
|
83
|
+
- ...
|
|
84
|
+
|
|
85
|
+
## NEVER Do
|
|
86
|
+
- ...
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Precedence
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
~/.claude/rules/*.md (User-level, loaded first)
|
|
93
|
+
./project/.claude/rules/*.md (Project-level, overrides user-level)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Project rules have **higher priority**. If a project rule file has the same name as a user rule file (e.g., `code-style.md`), the project version completely replaces the user version.
|
|
97
|
+
|
|
98
|
+
Project rules can override global rules if they have the same filename.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Code Style Rules
|
|
2
|
+
|
|
3
|
+
## Files (Language-Agnostic)
|
|
4
|
+
- Max 300 lines
|
|
5
|
+
- One component/class per file
|
|
6
|
+
- Consistent naming per language conventions
|
|
7
|
+
|
|
8
|
+
## General Principles
|
|
9
|
+
- Strict typing (TypeScript strict, Kotlin null-safety, Rust ownership)
|
|
10
|
+
- No dynamic typing escapes (`any`, `Object`, `interface{}`)
|
|
11
|
+
- Explicit return types where language supports
|
|
12
|
+
|
|
13
|
+
## Functions/Methods
|
|
14
|
+
- Max 50 lines
|
|
15
|
+
- Single responsibility
|
|
16
|
+
- Early returns / guard clauses
|
|
17
|
+
- Meaningful names (verb + noun)
|
|
18
|
+
|
|
19
|
+
## Formatting
|
|
20
|
+
- Use `~/.claude/scripts/runtime/adapters/*.sh` → `adapter_format()`
|
|
21
|
+
- Prettier (JS/TS), ktlint (Kotlin), gofmt (Go), rustfmt (Rust), black (Python)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Critical Actions Rule
|
|
2
|
+
|
|
3
|
+
## Direct Commands (Always Confirm)
|
|
4
|
+
- git push --force, git reset --hard
|
|
5
|
+
- DROP TABLE, DELETE FROM (no WHERE), TRUNCATE
|
|
6
|
+
- rm -rf on important directories
|
|
7
|
+
- Production deployments
|
|
8
|
+
|
|
9
|
+
## Indirect Scripts (Warning)
|
|
10
|
+
- npm/yarn run: clean, reset, nuke, purge
|
|
11
|
+
- db:reset, db:drop, migrate:reset
|
|
12
|
+
- deploy:prod, deploy:production
|
|
13
|
+
|
|
14
|
+
## Git Conflicts
|
|
15
|
+
On CONFLICT or <<<<<<< HEAD:
|
|
16
|
+
1. STOP immediately
|
|
17
|
+
2. List conflicting files
|
|
18
|
+
3. Hand off to user
|
|
19
|
+
4. NEVER attempt auto-resolution
|
|
20
|
+
|
|
21
|
+
## Confirmation Flow
|
|
22
|
+
```
|
|
23
|
+
⚠️ CRITICAL ACTION DETECTED
|
|
24
|
+
|
|
25
|
+
Action: [command]
|
|
26
|
+
Risk: [description]
|
|
27
|
+
|
|
28
|
+
Type 'CONFIRM' to proceed.
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Responses
|
|
32
|
+
- CONFIRM: Proceed
|
|
33
|
+
- SHOW: Display script
|
|
34
|
+
- CANCEL: Abort
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
session_id: example-session
|
|
3
|
+
date: 2025-01-29 14:30
|
|
4
|
+
name: auth-jwt-implementation
|
|
5
|
+
project: pro-plan-v3-final
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Session: auth-jwt-implementation
|
|
9
|
+
|
|
10
|
+
## Completed Tasks
|
|
11
|
+
- [x] Created JWT utility class in `src/auth/jwt.ts`
|
|
12
|
+
- [x] Implemented login endpoint with token generation
|
|
13
|
+
- [x] Added refresh token rotation logic
|
|
14
|
+
- [x] Wrote unit tests for token validation
|
|
15
|
+
|
|
16
|
+
## Current State
|
|
17
|
+
JWT authentication is fully implemented. Ready for integration testing.
|
|
18
|
+
|
|
19
|
+
## Next Actions
|
|
20
|
+
- [ ] Add rate limiting to login endpoint
|
|
21
|
+
- [ ] Implement token blacklist for logout
|
|
22
|
+
- [ ] Add integration tests with database
|
|
23
|
+
|
|
24
|
+
## Context
|
|
25
|
+
- Files: `src/auth/jwt.ts`, `src/auth/login.ts`, `tests/auth.test.ts`
|
|
26
|
+
- Decisions: Using HS256 for simplicity, will migrate to RS256 for production
|
|
27
|
+
|
|
28
|
+
## Loaded Contexts
|
|
29
|
+
- backend: active
|
|
30
|
+
|
|
31
|
+
## Learned Patterns
|
|
32
|
+
- Always validate token expiry before processing
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
> **[English Version](README.md)**
|
|
2
|
+
|
|
3
|
+
# Sessions Directory
|
|
4
|
+
|
|
5
|
+
## 목적
|
|
6
|
+
`/session-save`에 의해 생성된 세션 상태 파일을 저장합니다. 세션 간에 연속성을 가능하게 합니다.
|
|
7
|
+
|
|
8
|
+
> **경로 안내:** 예시에는 설치 경로(`~/.claude/...`)가 포함됩니다. 이 저장소 기준 소스 경로는 `./.claude/...`, `./scripts/...`입니다.
|
|
9
|
+
|
|
10
|
+
## 세션 생명주기
|
|
11
|
+
|
|
12
|
+
```mermaid
|
|
13
|
+
flowchart TB
|
|
14
|
+
%% 스타일 정의 %%
|
|
15
|
+
classDef command fill:#e8f5e9,stroke:#43a047,stroke-width:2px;
|
|
16
|
+
classDef file fill:#fff3e0,stroke:#fb8c00,stroke-width:2px;
|
|
17
|
+
classDef process fill:#e3f2fd,stroke:#1e88e5,stroke-width:2px;
|
|
18
|
+
classDef hook fill:#ffebee,stroke:#e53935,stroke-width:2px;
|
|
19
|
+
classDef builtin fill:#f3e5f5,stroke:#8e24aa,stroke-width:2px;
|
|
20
|
+
classDef note fill:#fffde7,stroke:#fdd835,stroke-width:1px,stroke-dasharray: 3 3;
|
|
21
|
+
|
|
22
|
+
%% 메인 세션 플로우 %%
|
|
23
|
+
Start((🚀 세션 시작)):::process
|
|
24
|
+
Start --> Work[🔨 작업 진행]:::process
|
|
25
|
+
|
|
26
|
+
Work --> Decision{세션 저장?}:::process
|
|
27
|
+
Decision -->|Yes| SaveCmd[/"💾 /session-save auth-feature"/]:::command
|
|
28
|
+
Decision -->|No| Continue[작업 계속]:::process
|
|
29
|
+
Continue --> Work
|
|
30
|
+
|
|
31
|
+
%% 저장 프로세스 %%
|
|
32
|
+
SaveCmd --> Collect["📋 상태 수집<br/>• 완료된 작업<br/>• 현재 상태<br/>• 다음 액션<br/>• 주요 파일"]:::process
|
|
33
|
+
Collect --> Scrub{{"🔐 scrub-secrets.js<br/>15+ 시크릿 패턴 제거"}}:::hook
|
|
34
|
+
Scrub --> Write["✍️ 파일 작성<br/>.claude/sessions/<br/>2025-01-28-auth-feature.md"]:::file
|
|
35
|
+
Write --> Notify["✅ 세션 저장 완료!<br/>스크러빙: N개 시크릿"]:::note
|
|
36
|
+
|
|
37
|
+
%% 로드 프로세스 %%
|
|
38
|
+
Notify -.->|"나중에..."| LoadStart((📂 새 세션)):::process
|
|
39
|
+
LoadStart --> LoadCmd[/"📂 /session-load auth-feature"/]:::command
|
|
40
|
+
LoadCmd --> Read["📖 세션 파일 읽기"]:::process
|
|
41
|
+
Read --> Restore["🔄 컨텍스트 복원<br/>• 완료된 작업 설정<br/>• 다음 액션 로드<br/>• 주요 파일 참조"]:::process
|
|
42
|
+
Restore --> Ready["✅ 작업 재개 준비 완료!"]:::note
|
|
43
|
+
|
|
44
|
+
%% 내장 CLI 대안 %%
|
|
45
|
+
subgraph BuiltInCLI["🔧 대안: 내장 CLI"]
|
|
46
|
+
direction TB
|
|
47
|
+
BuiltinNote["정확한 대화 재생용<br/>(사람이 읽을 수 있는 요약 아님)"]:::note
|
|
48
|
+
CLI1["claude -c / --continue<br/>→ 가장 최근 세션 재개"]:::builtin
|
|
49
|
+
CLI2["claude -r abc123 / --resume abc123<br/>→ 특정 세션 재개"]:::builtin
|
|
50
|
+
JSONL["~/.claude/projects/*.jsonl<br/>(원본 대화 기록)"]:::file
|
|
51
|
+
CLI1 --> JSONL
|
|
52
|
+
CLI2 --> JSONL
|
|
53
|
+
end
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 커스텀 vs 내장 세션
|
|
57
|
+
|
|
58
|
+
| 기능 | `/session-save` + `/session-load` | `claude --continue` |
|
|
59
|
+
|------|-----------------------------------|---------------------|
|
|
60
|
+
| **형식** | 사람이 읽을 수 있는 `.md` | 원본 `.jsonl` |
|
|
61
|
+
| **위치** | `.claude/sessions/` (프로젝트) | `~/.claude/projects/` (전역) |
|
|
62
|
+
| **내용** | 요약 (작업, 결정, 다음 단계) | 전체 대화 기록 |
|
|
63
|
+
| **시크릿 스크러빙** | ✅ 자동 | ❌ 스크러빙 없음 |
|
|
64
|
+
| **적합한 용도** | 컨텍스트 공유, 문서화 | 정확한 대화 재생 |
|
|
65
|
+
|
|
66
|
+
### 언제 무엇을 사용할까?
|
|
67
|
+
|
|
68
|
+
| 상황 | 추천 | 이유 |
|
|
69
|
+
|------|------|------|
|
|
70
|
+
| 짧은 휴식 후 재개 (같은 날) | `claude -c` | 빠르고 정확한 대화 이어가기 |
|
|
71
|
+
| 긴 휴식 후 재개 (다음 날) | `/session-load` | 핵심 컨텍스트만 로드, 비용 절약 |
|
|
72
|
+
| 팀원과 컨텍스트 공유 | `/session-save` | 사람이 읽을 수 있는 `.md` 공유 가능 |
|
|
73
|
+
| 시크릿 포함한 작업 후 | `/session-save` | 자동 스크러빙으로 안전 |
|
|
74
|
+
| 정확한 대화 기록 필요 | `claude --resume` | 전체 대화 그대로 복원 |
|
|
75
|
+
|
|
76
|
+
### 추천 워크플로우
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
📅 1일차 오전: 새 작업 시작
|
|
80
|
+
📅 1일차 오후: 점심 후 → claude -c (내장 CLI로 빠른 재개)
|
|
81
|
+
📅 1일차 저녁: /session-save feature-v1 (작업 요약 저장)
|
|
82
|
+
|
|
83
|
+
📅 2일차: /session-load feature-v1 (깔끔한 컨텍스트로 시작)
|
|
84
|
+
📅 2일차 오후: claude -c (같은 날 빠른 재개)
|
|
85
|
+
📅 2일차 저녁: /session-save feature-v2 (진행 상황 저장)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
> **💡 Tip**: 둘은 **경쟁이 아니라 보완 관계**입니다. 상황에 맞게 골라 쓰세요!
|
|
89
|
+
|
|
90
|
+
## 파일 명명
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
YYYY-MM-DD-[name].md
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
예시:
|
|
97
|
+
- `2025-01-27-auth-jwt.md`
|
|
98
|
+
- `2025-01-27-payment-integration.md`
|
|
99
|
+
|
|
100
|
+
## 보안
|
|
101
|
+
|
|
102
|
+
**모든 세션 파일은 기록되기 전에 자동으로 스크러빙(민감 정보 제거)됩니다.**
|
|
103
|
+
|
|
104
|
+
스크러빙되는 패턴:
|
|
105
|
+
- API 키 (OpenAI, Anthropic, Stripe, GitHub, AWS)
|
|
106
|
+
- 자격 증명이 포함된 데이터베이스 URL
|
|
107
|
+
- JWT 토큰
|
|
108
|
+
- 비밀번호 필드
|
|
109
|
+
- 개인 키 (Private keys)
|
|
110
|
+
|
|
111
|
+
## 사용법
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# 현재 세션 저장
|
|
115
|
+
/session-save auth-feature
|
|
116
|
+
|
|
117
|
+
# 가장 최근 세션 로드
|
|
118
|
+
/session-load
|
|
119
|
+
|
|
120
|
+
# 특정 세션 로드
|
|
121
|
+
/session-load auth-feature
|
|
122
|
+
|
|
123
|
+
# 사용 가능한 세션 목록
|
|
124
|
+
/session-load --list
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## 세션 파일 형식
|
|
128
|
+
|
|
129
|
+
```markdown
|
|
130
|
+
# Session: [name]
|
|
131
|
+
Date: [timestamp]
|
|
132
|
+
Duration: [messages]
|
|
133
|
+
Security: [items scrubbed]
|
|
134
|
+
|
|
135
|
+
## Context
|
|
136
|
+
- Project: [name]
|
|
137
|
+
- Branch: [branch]
|
|
138
|
+
- Focus: [description]
|
|
139
|
+
|
|
140
|
+
## Completed
|
|
141
|
+
- [x] [task]
|
|
142
|
+
|
|
143
|
+
## In Progress
|
|
144
|
+
- [ ] [task] - [status]
|
|
145
|
+
|
|
146
|
+
## Decisions Made
|
|
147
|
+
- [decision]: [reasoning]
|
|
148
|
+
|
|
149
|
+
## Next Steps
|
|
150
|
+
1. [action]
|
|
151
|
+
|
|
152
|
+
## Key Files
|
|
153
|
+
- [file]: [why relevant]
|
|
154
|
+
|
|
155
|
+
## Loaded Contexts
|
|
156
|
+
- [type]: [status]
|
|
157
|
+
|
|
158
|
+
## Learned Patterns
|
|
159
|
+
- [pattern]
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## 유지 관리
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# 세션 목록 조회
|
|
166
|
+
ls -la .claude/sessions/
|
|
167
|
+
|
|
168
|
+
# 오래된 세션 삭제 (>30일)
|
|
169
|
+
find .claude/sessions/ -mtime +30 -delete
|
|
170
|
+
|
|
171
|
+
# 수동 스크러빙 (필요한 경우)
|
|
172
|
+
node scripts/scrub-secrets.js < session.md > clean.md
|
|
173
|
+
# 설치 경로: node ~/.claude/scripts/scrub-secrets.js < session.md > clean.md
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## Claude 내장 세션 명령어
|
|
177
|
+
|
|
178
|
+
커스텀 `/session-save`, `/session-load` 외에도 Claude Code 내장 세션 기능이 있습니다:
|
|
179
|
+
|
|
180
|
+
| 명령어 | 목적 |
|
|
181
|
+
|--------|------|
|
|
182
|
+
| `claude -c` / `--continue` | 가장 최근 세션 재개 |
|
|
183
|
+
| `claude -r "id"` / `--resume "id"` | 특정 세션 ID로 재개 |
|
|
184
|
+
| `claude --resume` | 최근 세션 목록에서 선택 |
|
|
185
|
+
|
|
186
|
+
> **참고:** 내장 세션은 `~/.claude/projects/.../*.jsonl`에 저장됩니다. 커스텀 `/session-save`는 `.claude/sessions/`에 사람이 읽을 수 있는 `.md` 요약을 생성합니다.
|
|
187
|
+
|
|
188
|
+
## 모범 사례
|
|
189
|
+
|
|
190
|
+
1. 논리적 단계가 완료된 후 저장
|
|
191
|
+
2. 긴 휴식 전 (>4시간) 저장
|
|
192
|
+
3. 설명적인 이름 사용
|
|
193
|
+
4. 주기적으로 오래된 세션 정리
|
|
194
|
+
5. **스크립트 실행 권한 확인**: `chmod +x scripts/hooks/*.sh`
|
|
195
|
+
(설치 경로: `chmod +x ~/.claude/scripts/hooks/*.sh`)
|