-
Notifications
You must be signed in to change notification settings - Fork 8
chore: Claude Code 문서 개선 #714
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
Open
whqtker
wants to merge
8
commits into
develop
Choose a base branch
from
chore/713-claude-code
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
0689010
chore: CLAUDE.md 재작성
whqtker 8886e90
chore: gitignore에 .DS_Store 무시하도록
whqtker 34a1751
chore: review-pr 스킬 보완
whqtker 315d16d
chore: test 스킬 보완
whqtker 12cf630
chore: 알림 관련 훅 제거
whqtker 3b4d746
chore: 컨벤션 검증 훅 제거
whqtker c6fc811
chore: Path-specific rules 추가
whqtker 6fb7924
chore: 미사용 훅 참조 제거
whqtker File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| --- | ||
| paths: | ||
| - "src/**/*.java" | ||
| --- | ||
|
|
||
| # Code Style | ||
|
|
||
| ## Naming | ||
| - DTO factory: `of(A, B)` for multiple params / `from(X)` for single param | ||
| - Request/Response classes: `XxxRequest`, `XxxResponse` | ||
| - REST endpoints: kebab-case only (`/user-profile`, NOT `/userProfile`) | ||
|
|
||
| ## Formatting | ||
| - Blank line before every class declaration | ||
| - Newline at end of every file | ||
| - No wildcard imports | ||
| - Controller method params: always on separate lines | ||
| - 3+ params anywhere: always on separate lines | ||
| - Private methods: placed immediately below the public method that calls them | ||
|
|
||
| ## Types | ||
| - Non-null: primitives (`int`, `long`, `boolean`) | ||
| - Nullable: wrapper types (`Integer`, `Long`, `Boolean`) |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| --- | ||
| paths: | ||
| - "src/main/java/**/domain/*.java" | ||
| - "src/main/resources/db/migration/*.sql" | ||
| --- | ||
|
|
||
| # Database | ||
|
|
||
| ## JPA Entity | ||
|
|
||
| - Every field requires `@Column(name = "...", nullable = ...)` | ||
| - Field name must match DB column name exactly (snake_case) | ||
| - `@Table(name = "...")` required on every entity class | ||
|
|
||
| ```java | ||
| @Entity | ||
| @Table(name = "chat_room") | ||
| public class ChatRoom { | ||
|
|
||
| @Id | ||
| @GeneratedValue(strategy = GenerationType.IDENTITY) | ||
| @Column(name = "id") | ||
| private Long id; | ||
|
|
||
| @Column(name = "is_group", nullable = false) | ||
| private boolean isGroup; | ||
|
|
||
| @Column(name = "mentoring_id", nullable = true) | ||
| private Long mentoringId; | ||
| } | ||
| ``` | ||
|
|
||
| ## Flyway | ||
|
|
||
| - Location: `src/main/resources/db/migration/` | ||
| - Naming: `V{VERSION}__{DESCRIPTION}.sql` (double underscore) | ||
| - NEVER modify a deployed migration — always create a new version | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,46 @@ | ||
| --- | ||
| paths: | ||
| - "src/test/**/*.java" | ||
| --- | ||
|
|
||
| # Testing | ||
|
|
||
| Base annotation: `@TestContainerSpringBootTest` for all integration tests. | ||
|
|
||
| ## Test data — Fixture pattern | ||
|
|
||
| ```java | ||
| @TestComponent | ||
| @RequiredArgsConstructor | ||
| public class ChatRoomFixture { | ||
| private final ChatRoomFixtureBuilder chatRoomFixtureBuilder; | ||
|
|
||
| public ChatRoom 채팅방(boolean isGroup) { ... } // Korean method names | ||
| public ChatRoom 멘토링_채팅방(long mentoringId) { ... } | ||
| } | ||
| ``` | ||
|
|
||
| ## Test class structure | ||
|
|
||
| ```java | ||
| @TestContainerSpringBootTest | ||
| @DisplayName("XXX 서비스 테스트") | ||
| class XxxServiceTest { | ||
|
|
||
| @Nested | ||
| class 기능명 { | ||
|
|
||
| @Test | ||
| void 한국어_메서드명() { | ||
| // given | ||
| // when | ||
| // then | ||
| } | ||
| } | ||
| } | ||
| ``` | ||
|
|
||
| - `@Nested` for grouping by feature | ||
| - Korean names on `@Nested` classes and `@Test` methods | ||
| - Given-When-Then with inline comments | ||
| - Tests are independent — no shared state across tests |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,29 +1,5 @@ | ||
| { | ||
| "env": { | ||
| "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1" | ||
| }, | ||
| "hooks": { | ||
| "Notification": [ | ||
| { | ||
| "matcher": "", | ||
| "hooks": [ | ||
| { | ||
| "type": "command", | ||
| "command": "python3 .claude/hooks/notify.py 2>/dev/null || python .claude/hooks/notify.py" | ||
| } | ||
| ] | ||
| } | ||
| ], | ||
| "PostToolUse": [ | ||
| { | ||
| "matcher": "Edit|Write", | ||
| "hooks": [ | ||
| { | ||
| "type": "command", | ||
| "command": "python3 .claude/hooks/post-edit-check.py 2>/dev/null || python .claude/hooks/post-edit-check.py" | ||
| } | ||
| ] | ||
| } | ||
| ] | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
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.
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.
1) 규칙 문구가 예시와 충돌합니다 (Line 6)
현재 문구(
Field name must match DB column name exactly (snake_case))는 아래 예시 코드의 camelCase 필드와 모순됩니다. “필드명과 컬럼명이 1:1 매핑되어야 하며, 컬럼명은 snake_case”처럼 표현을 바꾸는 편이 정확합니다.수정 제안
🤖 Prompt for AI Agents