Skip to content

[WTH-382] 코덱스 커스텀#73

Merged
soo0711 merged 2 commits into
devfrom
feat/WTH-382-코덱스-커스텀
May 16, 2026

Hidden character warning

The head ref may contain hidden characters: "feat/WTH-382-\ucf54\ub371\uc2a4-\ucee4\uc2a4\ud140"
Merged

[WTH-382] 코덱스 커스텀#73
soo0711 merged 2 commits into
devfrom
feat/WTH-382-코덱스-커스텀

Conversation

@soo0711
Copy link
Copy Markdown
Collaborator

@soo0711 soo0711 commented May 15, 2026

📌 Summary

어떤 작업인지 한 줄 요약해 주세요.

Codex 커스텀 작업을 진행했습니다.

📝 Changes

변경사항을 what, why, how로 구분해 작성해 주세요.

What

AGENTS.md 추가
.agents/rules/ 추가
.agents/skills/ 추가

Why

기존 Claude 중심 지침을 Codex에서 사용할 수 있는 AGENTS.md / .agents/skills 구조로 전환하기 위해서

How

Codex 공식 구조에 맞춰 루트에 AGENTS.md를 배치

📸 Screenshots / Logs

필요시 스크린샷 or 로그를 첨부해주세요.

💡 Reviewer 참고사항

리뷰에 참고할 내용을 작성해주세요.

  • .agents/rules는 Codex가 자동 로드하는 설정 파일이 아니라, AGENTS.md와 스킬에서 참조하는 프로젝트 상세 규칙 문서입니다.
  • .agents/skills/*/SKILL.md는 Codex가 repo 범위 스킬로 인식하는 구조입니다.

✅ Checklist

  • PR 제목 설정 완료 (WTH-123 인증 필터 설정)
  • 테스트 구현 완료
  • 리뷰어 등록 완료
  • 자체 코드 리뷰 완료

Summary by CodeRabbit

Release Notes

  • Documentation
    • Internal development guidelines and standards documentation updated for development team reference only. No user-facing changes.

Note: This release contains internal documentation updates (architecture rules, code standards, testing guidelines, etc.) intended for development team use. There are no new features or changes visible to end-users.

Review Change Stack

@soo0711 soo0711 requested a review from hyxklee May 15, 2026 12:21
@soo0711 soo0711 self-assigned this May 15, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 15, 2026

Warning

Rate limit exceeded

@soo0711 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 46 minutes before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 0fee47a4-8ec7-48bf-adda-b536db8224f0

📥 Commits

Reviewing files that changed from the base of the PR and between ac8c388 and cdf9bd8.

📒 Files selected for processing (1)
  • .agents/rules/transaction-concurrency.md
📝 Walkthrough

개요

프로젝트의 개발 표준을 종합적으로 문서화한 대규모 컨벤션 및 프로세스 추가입니다. API 설계, 아키텍처, 코드 스타일, 테스트, 예외 처리, Git 규칙과 함께 스킬 시스템(rule-create, skill-create, test-create 등)을 통해 재사용 가능한 개발 프로세스를 구축합니다.

변경사항

메인 개발 규칙 문서 (API & 아키텍처)

Layer / File(s) 요약
메인 에이전트 가이드
AGENTS.md
Weeth 서버의 전체 개발 프레임워크를 정의합니다. 저장소 개요(Spring Boot 3.5.10, Kotlin 프로덕션 언어), 커뮤니케이션 규칙(한국어 응답), 빌드/검증 명령어, 민감 파일 금지 사항, 레이어드 아키텍처 의존성, 테스트/Kotlin 관례, 스킬 스캔 동작을 포함합니다.
아키텍처 기초 규칙
.agents/rules/architecture.md, .agents/rules/code-style.md
패키지 구조(src/main/kotlin), 레이어 의존성(presentation → application → domain), UseCase/Query Service 역할, Kotlin-first 원칙을 정의하고, 코드 스타일(PascalCase/camelCase/SCREAMING_SNAKE_CASE), null-safe 원칙, data class vs class 구분, import 정렬, KDoc 및 주석 가이드를 명시합니다.
API 설계 및 응답 규칙
.agents/rules/api-design.md, .agents/rules/exception-handling.md
컨트롤러 템플릿, CommonResponse 구조(code/message/data), 코드 포맷(카테고리/DD/NN), 도메인별 성공/에러 코드 매핑, HTTP 메서드 및 경로 설계(예: /api/v4/clubs/{clubId}/...), DTO 검증 애노테이션을 정의합니다. 예외 계층(BaseException), @ApiErrorCodeExample/@ExplainError, 새 예외 추가 체크리스트를 포함합니다.
DTO 매핑 규칙
.agents/rules/mapper-dto.md
@Component 기반 수동 Mapper, toResponse/toEntity/toDto/from{Source} 메서드 역할, Request/Response DTO 위치 및 검증(@NotBlank, @Valid), 페이지네이션 응답(PageResponse 팩토리), Mapper 의존성 주입 패턴을 정의합니다.
고급 개발 규칙
.agents/rules/transaction-concurrency.md, .agents/rules/testing.md, .agents/rules/git-conventions.md
@Transactional 배치(UseCase에만), 비관적/낙관적 잠금, 전파 및 격리 옵션을 정의합니다. Kotest/MockK/Testcontainers, DescribeSpec/BehaviorSpec, beforeTest mock 정리, 픽스처 패턴을 명시합니다. Git 커밋 포맷(type: message), 브랜치 네이밍, 프리커밋 체크리스트를 포함합니다.

개발 스킬 및 메타-프로세스 문서

Layer / File(s) 요약
스킬 생성 프레임워크
.agents/skills/skill-create/SKILL.md, .agents/skills/rule-create/SKILL.md
skill-create와 rule-create 스킬의 목적, 생성 기준(3+ 반복, 특정 문구), 디렉터리 구조(kebab-case), SKILL.md 프론트매터(name, description), 문서 템플릿(Instructions/Examples/Troubleshooting) 구조를 정의합니다.
아키텍처 가이드 스킬
.agents/skills/architecture-guide/SKILL.md
UseCase 분리(명령 vs 쿼리), 트랜잭션 readOnly 규칙, 크로스-도메인 참조(읽기 Reader, 쓰기 직접 Repository), Entity/Domain Service/Port-Adapter 예제, 명명 규칙을 Kotlin 코드 블록과 표로 제시합니다.
테스트 생성 스킬
.agents/skills/test-create/SKILL.md, .agents/skills/test-create/references/kotlin-examples.md, .agents/skills/test-create/references/java-examples.md
타깃 코드 분석, 테스트 위치 결정(src/test/kotlin/.../usecase|entity|service), 테스트 스타일 선택(DescribeSpec/BehaviorSpec), fixture 생성 패턴, gradle 실행 명령어를 포함합니다. Kotlin(DescribeSpec/BehaviorSpec/StringSpec/WebMvcTest)과 Java(JUnit 5/Mockito) 테스트 예제를 제시합니다.
TDD 스킬
.agents/skills/test-driven-development/SKILL.md
TDD 기본 원칙(실패하는 테스트 먼저), 철의 법칙, Red/Green/Refactor 단계별 지침, 적용 시점(신규 기능, 버그 수정, 리팩터링), 단계별 체크리스트를 정의합니다.
코드 리뷰 스킬
.agents/skills/code-review/SKILL.md
변경 파일 수집(git diff), 심각도별 분류(Critical → Major → Minor → Suggestion), 체크리스트(버그/보안/성능/아키텍처/Kotlin), 한국어 리뷰 리포트 템플릿을 포함합니다.
디버깅 스킬
.agents/skills/systematic-debugging/SKILL.md
가설 기반 디버깅 6단계(증상 수집 → 가설 수립 → 검증 → 근본 원인 → 수정 → 재발 방지), 공통 버그 패턴 체크리스트, git 커맨드, 한국어 디버깅 리포트 템플릿을 정의합니다.
컨텍스트 업데이트 메타-스킬
.agents/skills/context-update/SKILL.md
세션 분석 워크플로우(분류 → 중복 탐색 → skill-create/rule-create 위임 → 리포트), 충돌 해결 우선순위, Context Update Report 템플릿을 정의합니다.
데이터베이스 관리 스킬
.agents/skills/database-manage/SKILL.md, .agents/skills/database-manage/scripts/dump-schema.sh
스키마 스냅샷 조회, 라이브 덤프 절차(dump-schema.sh 실행), 코드 기반 분석(@Entity, 리포지토리 쿼리), 출력 템플릿을 정의합니다. dump-schema.sh는 INFORMATION_SCHEMA 기반으로 테이블/컬럼/인덱스/FK/관계 다이어그램을 MySQL에서 수집해 마크다운 생성합니다.
Kotlin 마이그레이션 스킬
.agents/skills/kotlin-migration/SKILL.md
배치 마이그레이션 전략(권장 배치 단위), Test-First 워크플로우(테스트 작성 → git mv → 변환 → 리팩터링 → 검증), DescribeSpec 테스트 패턴, fixture 위치 규칙, 한국어 마이그레이션 리포트 템플릿을 포함합니다.

🎯 코드 리뷰 노력 평가

🎯 2 (Simple) | ⏱️ ~8분

변경사항이 순전히 문서 추가이며, 코드 변경이 없습니다. 문서들은 일관된 구조(마크다운 포맷, 예제 포함)를 따르고, 반복적 패턴이 많아 검토 복잡도가 낮습니다.

제안 라벨

🤖 Agent

제안 리뷰어

  • hyxklee

🐰 깃허브 저장소의 모든 규칙을 정리했네,
아키텍처부터 테스트까지, 스킬까지도 담았어!
컨벤션 다다다 순서대로, 마이그레이션부터 디버깅까지,
문서 숲속을 잘 헤쳐나가면, 개발은 쉬워질 거야! 🌟

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive PR 설명이 모든 필수 섹션(Summary, Changes, Screenshots, Reviewer 참고사항, Checklist)을 충실히 작성했으나, 체크리스트 항목이 실제로는 모두 완료되지 않았습니다. 체크리스트 항목들이 실제로 완료되었는지 재확인이 필요합니다. 특히 '테스트 구현 완료'와 '자체 코드 리뷰 완료' 항목의 정확성을 검증하시기 바랍니다.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed PR 제목 'WTH-382 코덱스 커스텀'은 주요 변경사항(Codex 기반 커스텀 지침 구조 추가)을 명확하게 요약합니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/WTH-382-코덱스-커스텀

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@soo0711 soo0711 added the 📃 Docs 문서 작성 및 수정 (README, 가이드 등) label May 15, 2026
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 12

🧹 Nitpick comments (1)
.agents/skills/kotlin-migration/SKILL.md (1)

17-23: 💤 Low value

테이블 주변에 빈 줄 추가 권장

Markdown 가독성을 위해 테이블 앞뒤로 빈 줄을 추가하는 것이 권장됩니다.

📝 제안하는 포맷
 ### Recommended Batch Units
+
 | Scope | Batch Size | Example |
 |-------|-----------|---------|
 | Single Domain | 3-5 files per batch | `Feed`, `FeedRepository`, `CreateFeedUseCase` |
 | Cross-Domain | 1 domain at a time | Complete `feed` domain before `user` domain |
 | Entity + Dependencies | Entity → Repository → Services | Migrate in dependency order |
+
 ### Batch Workflow
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/kotlin-migration/SKILL.md around lines 17 - 23, The Markdown
table under the heading "### Recommended Batch Units" lacks blank lines before
and after it; to fix, add a blank line between the heading "### Recommended
Batch Units" and the table start (the line beginning "| Scope | Batch Size |
Example |") and another blank line after the table end (after the last row
"`Entity → Repository → Services | Migrate in dependency order`") so the table
is separated from surrounding content for improved readability.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.agents/rules/api-design.md:
- Around line 161-168: The markdown code fences containing the API examples (the
block with "GET /users ... POST /users/{userId}/activate" and the other block
with "/api/v4/clubs/{clubId}/boards ...") are missing a language tag and trigger
markdownlint warnings; update both fenced code blocks to include a language
identifier (e.g., add ```text instead of ``` ) so the blocks around the shown
API routes are annotated (the blocks containing the GET/POST/PATCH/DELETE lines
and the /api/v4/... lines).

In @.agents/rules/exception-handling.md:
- Around line 5-11: The fenced code block showing the exception tree (containing
RuntimeException, BaseException, UserNotFoundException, BoardNotFoundException)
should include a language tag by changing the opening fence to ```text so
markdownlint stops warning; locate the block with those symbols and add the
language specifier to the opening backticks.

In @.agents/rules/git-conventions.md:
- Around line 6-8: Update the fenced code blocks that currently start with ```
and contain "type: message" and the subsequent example block ("type(scope):
message", "feat(auth): Add OAuth2 support", etc.) so they include an explicit
language tag (e.g., ```text) to satisfy markdownlint MD040; locate the blocks
containing the exact strings "type: message" and the multi-line commit-msg
examples and change their opening fences to include a language identifier such
as text.

In @.agents/rules/transaction-concurrency.md:
- Around line 35-37: The example uses an undefined identifier user inside fun
execute(userId: Long, request: FeedUploadRequest) when calling
feedMapper.toEntity and then feedRepository.save; fix by either changing the
signature to accept a User (e.g., user: User) or add a lookup at the start of
execute to resolve user from userId (e.g., call
userRepository.findByIdOrNull(userId) or equivalent and handle null), then pass
that user into feedMapper.toEntity before calling feedRepository.save.

In @.agents/skills/code-review/SKILL.md:
- Around line 74-129: The outer fenced code block that begins with "```markdown"
and encloses the nested triple-fenced examples (the whole summary/sections block
containing "## 요약", "## Critical 이슈", etc.) triggers MD040; change that outer
fence to four backticks (e.g., "````") for both the opening and closing fence so
the inner triple-backtick blocks (the Kotlin snippets under UserService.kt,
FeedUsecase.kt, etc.) remain intact and the MD040 warning is resolved.

In @.agents/skills/kotlin-migration/SKILL.md:
- Line 130: 문서의 잘못된 픽스처 경로(라인 130에 있는 src/test/kotlin/{domain}/test/fixture/)가
프로젝트 규칙과 다르므로 해당 경로를 표준 구조인 src/test/kotlin/com/weeth/domain/{domain}/fixture/로
수정하고 불필요한 `test` 하위디렉터리를 제거하며 패키지 구조가 도메인 네임스페이스(com.weeth.domain.{domain})와
일치하도록 예시(예: User 도메인 →
src/test/kotlin/com/weeth/domain/user/fixture/UserTestFixture.kt)로 업데이트하세요.

In @.agents/skills/rule-create/SKILL.md:
- Around line 21-24: 상단의 코드펜스(프로젝트 규칙/개인 규칙을 나열한 코드블록)에 펜스 언어가 빠져 있고, 문서 아래 예제
구간의 중첩 펜스(내부 코드블록이 다시 ```로 감싸진 구조)가 MD040 경고와 렌더링 혼선을 유발하니, 바깥 펜스를 4개 백틱으로 바꾸고
언어 표시를 추가(예: ```markdown → ````markdown)하여 외부 블록의 언어를 명시하고 내부 중첩 블록은 기존의 3개 백틱으로
유지하도록 수정하십시오; 이 변경은 상단의 목록을 감싸는 코드블록과 문서 내 예제(중첩 펜스가 있는 섹션)를 찾아 적용하세요.

In @.agents/skills/skill-create/SKILL.md:
- Around line 19-26: The fenced code blocks in SKILL.md are missing a language
identifier (MD040); update the two shown code blocks and the block covering
lines 103-106 by adding an explicit language tag (e.g., use text) after the
opening triple backticks so the markdown linter stops warning; locate the blocks
in SKILL.md (the repository tree example and the other block at 103-106) and
change their opening fences from ``` to ```text.

In @.agents/skills/systematic-debugging/SKILL.md:
- Around line 90-143: The markdown has nested triple backticks in the "디버깅 리포트"
section causing MD040 and rendering issues; to fix, wrap the entire outer block
(the big fenced region that contains inner triple-backtick Kotlin blocks for "수정
전", "수정 후", and "테스트") with a four-backtick fence (````) instead of triple
backticks so the inner ```kotlin fences remain valid; locate the section
containing the example Kotlin snippets (mentions of UserGetService.kt,
UserRepository.kt, getUser and findByIdAndDeletedAtIsNull) and replace the outer
``` with ```` to stabilize markdown rendering.

In @.agents/skills/test-create/references/java-examples.md:
- Around line 1-119: The file contains Java test examples (UserGetServiceTest,
UserControllerTest, UserTestFixture, CreateUserRequest, UserResponse) that
violate the Kotlin-only policy; remove or clearly isolate them as legacy. Either
delete this Java examples document or prepend a prominent header "LEGACY — Java
examples (Kotlin-only workspace)" and update all references so the test-create
skill and any indexing/skill metadata no longer surface these Java snippets when
generating tests; ensure the examples are not used by generators (mark as
archived/legacy in the skill metadata or move to a legacy-only folder).

In @.agents/skills/test-create/SKILL.md:
- Around line 22-32: The fenced code block in SKILL.md is missing a language tag
which triggers MD040; update the opening fence from ``` to ```text (i.e., add
the "text" language specifier to the triple-backtick fence that begins the code
block) so the markdown linter stops warning, and scan for any other ``` fences
in the file to add appropriate language tags if needed.

In @.agents/skills/test-driven-development/SKILL.md:
- Around line 33-35: The fenced code block containing the line "NO PRODUCTION
CODE WITHOUT A FAILING TEST FIRST" is missing a language tag (triggering
markdownlint MD040); update the opening fence to include a language identifier
(for example change ``` to ```text) so the block has a language tag while
keeping the same content and closing fence.

---

Nitpick comments:
In @.agents/skills/kotlin-migration/SKILL.md:
- Around line 17-23: The Markdown table under the heading "### Recommended Batch
Units" lacks blank lines before and after it; to fix, add a blank line between
the heading "### Recommended Batch Units" and the table start (the line
beginning "| Scope | Batch Size | Example |") and another blank line after the
table end (after the last row "`Entity → Repository → Services | Migrate in
dependency order`") so the table is separated from surrounding content for
improved readability.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 89440300-fa47-4d7e-a825-13f4821b045c

📥 Commits

Reviewing files that changed from the base of the PR and between 90280ee and ac8c388.

📒 Files selected for processing (22)
  • .agents/rules/api-design.md
  • .agents/rules/architecture.md
  • .agents/rules/code-style.md
  • .agents/rules/exception-handling.md
  • .agents/rules/git-conventions.md
  • .agents/rules/mapper-dto.md
  • .agents/rules/testing.md
  • .agents/rules/transaction-concurrency.md
  • .agents/skills/architecture-guide/SKILL.md
  • .agents/skills/code-review/SKILL.md
  • .agents/skills/context-update/SKILL.md
  • .agents/skills/database-manage/SKILL.md
  • .agents/skills/database-manage/scripts/dump-schema.sh
  • .agents/skills/kotlin-migration/SKILL.md
  • .agents/skills/rule-create/SKILL.md
  • .agents/skills/skill-create/SKILL.md
  • .agents/skills/systematic-debugging/SKILL.md
  • .agents/skills/test-create/SKILL.md
  • .agents/skills/test-create/references/java-examples.md
  • .agents/skills/test-create/references/kotlin-examples.md
  • .agents/skills/test-driven-development/SKILL.md
  • AGENTS.md

Comment on lines +161 to +168
```
GET /users # List users
GET /users/{userId} # Get single user
POST /users # Create user
PATCH /users/{userId} # Update user
DELETE /users/{userId} # Delete user
POST /users/{userId}/activate # Action on resource
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

코드 펜스에 language 지정이 빠져 markdownlint 경고가 발생합니다.

문서 lint 안정성을 위해 두 코드블록에 언어를 명시해 주세요.

수정 예시
-```
+```text
 GET    /users                    # List users
 GET    /users/{userId}           # Get single user
 POST   /users                    # Create user
 PATCH  /users/{userId}           # Update user
 DELETE /users/{userId}           # Delete user
 POST   /users/{userId}/activate  # Action on resource

- +text
/api/v4/clubs/{clubId}/boards # user-facing
/api/v4/admin/clubs/{clubId}/boards # admin

Also applies to: 174-177

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 161-161: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/rules/api-design.md around lines 161 - 168, The markdown code fences
containing the API examples (the block with "GET /users ... POST
/users/{userId}/activate" and the other block with
"/api/v4/clubs/{clubId}/boards ...") are missing a language tag and trigger
markdownlint warnings; update both fenced code blocks to include a language
identifier (e.g., add ```text instead of ``` ) so the blocks around the shown
API routes are annotated (the blocks containing the GET/POST/PATCH/DELETE lines
and the /api/v4/... lines).

Comment on lines +5 to +11
```
RuntimeException
└── BaseException (abstract)
├── UserNotFoundException
├── BoardNotFoundException
└── ... (domain-specific exceptions)
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

코드블록 language 미지정으로 markdownlint 경고가 납니다.

해당 예외 트리 코드펜스에 text 언어를 지정해 주세요.

수정 예시
-```
+```text
 RuntimeException
     └── BaseException (abstract)
             ├── UserNotFoundException
             ├── BoardNotFoundException
             └── ... (domain-specific exceptions)
</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 5-5: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/rules/exception-handling.md around lines 5 - 11, The fenced code
block showing the exception tree (containing RuntimeException, BaseException,
UserNotFoundException, BoardNotFoundException) should include a language tag by
changing the opening fence to ```text so markdownlint stops warning; locate the
block with those symbols and add the language specifier to the opening
backticks.

Comment on lines +6 to +8
```
type: message
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

펜스 코드블록에 언어 태그를 지정해 주세요.

Line 6, Line 106 코드블록이 language 미지정이라 markdownlint(MD040) 경고가 납니다.

수정 예시
-```
+```text
 type: message

...

- +text
type(scope): message

feat(auth): Add OAuth2 support
fix(api): Handle rate limiting
refactor(user): Simplify validation logic

Also applies to: 106-112

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 6-6: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/rules/git-conventions.md around lines 6 - 8, Update the fenced code
blocks that currently start with ``` and contain "type: message" and the
subsequent example block ("type(scope): message", "feat(auth): Add OAuth2
support", etc.) so they include an explicit language tag (e.g., ```text) to
satisfy markdownlint MD040; locate the blocks containing the exact strings
"type: message" and the multi-line commit-msg examples and change their opening
fences to include a language identifier such as text.

Comment thread .agents/rules/transaction-concurrency.md
Comment on lines +74 to +129
```markdown
# 코드 리뷰 결과

## 요약
- Critical: N건
- Major: N건
- Minor: N건
- Suggestion: N건

## Critical 이슈
### [UserService.kt:42] 유저 조회 시 NPE 발생 가능
**문제**: `findById` 반환값에 대한 null 처리가 누락되어 NPE가 발생할 수 있습니다.
**수정 전**:
```kotlin
val user = userRepository.findById(userId).get()
```
**수정 후**:
```kotlin
val user = userRepository.findByIdOrNull(userId)
?: throw UserNotFoundException()
```

## Major 이슈
### [FeedUsecase.kt:28] N+1 쿼리 문제
**문제**: 반복문 내에서 `commentRepository.findByFeedId()`를 호출하여 N+1 쿼리가 발생합니다.
**수정 전**:
```kotlin
val feeds = feedRepository.findAll()
feeds.map { feed ->
val comments = commentRepository.findByFeedId(feed.id) // N+1
feed to comments
}
```
**수정 후**:
```kotlin
val feeds = feedRepository.findAll()
val comments = commentRepository.findByFeedIdIn(feeds.map { it.id })
val commentMap = comments.groupBy { it.feedId }
feeds.map { feed -> feed to (commentMap[feed.id] ?: emptyList()) }
```

## Minor 이슈
### [UserController.kt:15] 불필요한 `var` 사용
**문제**: 재할당이 없는 변수에 `var`를 사용하고 있습니다. `val`로 변경하세요.

## Suggestion
### [UserMapper.kt:10] scope function 활용
**제안**: `also` 블록을 사용하면 로깅과 변환을 깔끔하게 분리할 수 있습니다.

## 좋은 점
- UseCase에서 트랜잭션 경계를 잘 관리하고 있습니다.
- 커스텀 예외 패턴이 일관성 있게 적용되어 있습니다.

## 전체 평가
⚠️ 수정 필요 - Critical 1건, Major 1건 수정 후 재확인 부탁드립니다.
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

출력 템플릿의 중첩 코드펜스 포맷을 수정해 주세요.

Line 74-129 구간은 내부에 여러 fenced block이 중첩되어 MD040 경고를 유발할 수 있습니다. 바깥 fence를 4백틱으로 변경해 내부 3백틱 블록을 안전하게 포함해 주세요.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 129-129: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/code-review/SKILL.md around lines 74 - 129, The outer fenced
code block that begins with "```markdown" and encloses the nested triple-fenced
examples (the whole summary/sections block containing "## 요약", "## Critical 이슈",
etc.) triggers MD040; change that outer fence to four backticks (e.g., "````")
for both the opening and closing fence so the inner triple-backtick blocks (the
Kotlin snippets under UserService.kt, FeedUsecase.kt, etc.) remain intact and
the MD040 warning is resolved.

Comment on lines +19 to +26
```
.agents/skills/{skill-name}/
├── SKILL.md # Required: main instructions
├── scripts/ # Optional: executable code
│ └── {script}.py
└── references/ # Optional: detailed docs
└── {topic}.md
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

fenced code block에 언어를 지정해 markdownlint 경고를 제거해 주세요.

현재 두 코드 블록이 언어 없이 열려 있어(MD040) 문서 lint에서 경고가 발생합니다. text 같은 명시적 언어를 붙이면 해결됩니다.

Also applies to: 103-106

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 19-19: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/skill-create/SKILL.md around lines 19 - 26, The fenced code
blocks in SKILL.md are missing a language identifier (MD040); update the two
shown code blocks and the block covering lines 103-106 by adding an explicit
language tag (e.g., use text) after the opening triple backticks so the markdown
linter stops warning; locate the blocks in SKILL.md (the repository tree example
and the other block at 103-106) and change their opening fences from ``` to
```text.

Comment on lines +90 to +143
```markdown
# 디버깅 리포트

## 1. 증상 요약
- 에러: `UserNotFoundException` - "User not found"
- 발생 위치: `UserGetService.kt:23`
- 재현 조건: 삭제된 유저 ID로 조회 시 항상 발생

## 2. 가설 및 검증
| 가설 | 가능성 | 검증 결과 |
|------|--------|-----------|
| soft delete된 유저를 필터링하지 않음 | 높음 | ✅ 확인됨 |
| 잘못된 유저 ID 전달 | 중간 | ❌ 배제 - 로그 확인 결과 정상 ID |
| 캐시에서 만료된 데이터 조회 | 낮음 | ❌ 배제 - 캐시 미사용 |

## 3. 근본 원인
**원인**: `findById` 쿼리가 `deletedAt IS NULL` 조건을 포함하지 않아 soft delete된 유저도 조회 대상에 포함됩니다.
**위치**: `UserRepository.kt:12` - `findById` 메서드
**발생 이유**: 기본 JPA `findById`는 soft delete 필터를 적용하지 않습니다.

## 4. 수정 방안
**수정 전**:
```kotlin
fun getUser(userId: Long): User =
userRepository.findById(userId)
.orElseThrow { UserNotFoundException() }
```

**수정 후**:
```kotlin
fun getUser(userId: Long): User =
userRepository.findByIdAndDeletedAtIsNull(userId)
?: throw UserNotFoundException()
```

**수정 이유**: soft delete 패턴에 맞게 `deletedAt IS NULL` 조건을 추가하여 삭제된 유저를 제외합니다.

## 5. 테스트
```kotlin
"soft delete된 유저 조회 시 UserNotFoundException 발생" {
val user = UserTestFixture.createUser()
userRepository.save(user)
userRepository.delete(user) // soft delete

shouldThrow<UserNotFoundException> {
userGetService.getUser(user.id)
}
}
```

## 6. 재발 방지
- [x] 다른 Repository에서도 `findById` 직접 사용 여부 검사 → `FeedRepository`에서 동일 패턴 발견, 수정 완료
- [ ] `@Where(clause = "deleted_at IS NULL")` 엔티티 레벨 적용 검토
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

디버깅 리포트 템플릿의 코드펜스 중첩을 정리해 주세요.

Line 90-143에서 바깥/안쪽 fence가 혼재되어 MD040 경고 및 마크다운 렌더링 문제가 생길 수 있습니다. 바깥 fence를 4백틱으로 감싸는 방식으로 안정화해 주세요.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 143-143: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/systematic-debugging/SKILL.md around lines 90 - 143, The
markdown has nested triple backticks in the "디버깅 리포트" section causing MD040 and
rendering issues; to fix, wrap the entire outer block (the big fenced region
that contains inner triple-backtick Kotlin blocks for "수정 전", "수정 후", and "테스트")
with a four-backtick fence (````) instead of triple backticks so the inner
```kotlin fences remain valid; locate the section containing the example Kotlin
snippets (mentions of UserGetService.kt, UserRepository.kt, getUser and
findByIdAndDeletedAtIsNull) and replace the outer ``` with ```` to stabilize
markdown rendering.

Comment thread .agents/skills/test-create/references/java-examples.md Outdated
Comment on lines +22 to +32
```
src/test/
└── kotlin/com/weeth/domain/{domain}/
├── application/usecase/
│ ├── command/
│ └── query/
├── domain/entity/
├── domain/service/
├── presentation/
└── fixture/
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

테스트 위치 예시 코드블록에 언어를 지정해 주세요.

Line 22 fence가 언어 없이 시작되어 MD040 경고가 발생합니다. text 지정으로 바로 해결됩니다.

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 22-22: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/test-create/SKILL.md around lines 22 - 32, The fenced code
block in SKILL.md is missing a language tag which triggers MD040; update the
opening fence from ``` to ```text (i.e., add the "text" language specifier to
the triple-backtick fence that begins the code block) so the markdown linter
stops warning, and scan for any other ``` fences in the file to add appropriate
language tags if needed.

Comment on lines +33 to +35
```
NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
```
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

코드블록 언어 태그를 추가해 주세요.

Line 33 코드블록이 language 미지정이라 markdownlint(MD040) 경고가 발생합니다.

수정 예시
-```
+```text
 NO PRODUCTION CODE WITHOUT A FAILING TEST FIRST
</details>

<details>
<summary>🧰 Tools</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.22.1)</summary>

[warning] 33-33: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.agents/skills/test-driven-development/SKILL.md around lines 33 - 35, The
fenced code block containing the line "NO PRODUCTION CODE WITHOUT A FAILING TEST
FIRST" is missing a language tag (triggering markdownlint MD040); update the
opening fence to include a language identifier (for example change ``` to

closing fence.

Copy link
Copy Markdown
Contributor

@hyxklee hyxklee left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨숩니다아앙

@soo0711 soo0711 merged commit e3e41bd into dev May 16, 2026
2 checks passed
@soo0711 soo0711 deleted the feat/WTH-382-코덱스-커스텀 branch May 16, 2026 11:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📃 Docs 문서 작성 및 수정 (README, 가이드 등)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants