Skip to content

Develop to Main - #5

Merged
cfcromn merged 7 commits into
mainfrom
develop
Jul 6, 2026
Merged

Develop to Main#5
cfcromn merged 7 commits into
mainfrom
develop

Conversation

@cfcromn

@cfcromn cfcromn commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

✨ 작업 내용

이번 PR에서 어떤 작업을 했는지 간단히 요약해주세요.


🔍 리뷰 시 참고사항

  • 리뷰어가 알면 좋은 변경 이유, 배경, 고려했던 점 등을 적어주세요.

✅ 체크리스트

  • 문서(README, .env.example 등) 변경이 필요한 경우 작성 또는 수정했나요?
  • 작업한 코드가 정상적으로 동작하는 것을 직접 확인했나요?
  • 필요한 경우 테스트 코드를 작성하거나 수정했나요?
  • Merge 대상 브랜치를 올바르게 설정했나요?
  • PR에 관련 없는 작업이 포함되지 않았나요?
  • 적절한 라벨과 리뷰어를 설정했나요?

📎 관련 이슈(선택)

  • Close #

@cfcromn
cfcromn merged commit aefb225 into main Jul 6, 2026
2 checks passed

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a comprehensive suite of AI agent configurations, reusable skills, pre/post-tool hooks, and project guidelines (such as CLAUDE.md and AGENTS.md) for a Python/FastAPI AI service. The review feedback highlights a critical bug in the find-polluter.sh script where patterns without a leading ./ fail to match any files, and notes that several debugging guides and script examples are written with TypeScript/JavaScript syntax and file patterns instead of Python/pytest. It is recommended to apply the suggested script fixes and update the documentation examples to align with the project's Python stack.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +3 to +12
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'

set -e

if [ $# -ne 2 ]; then
echo "Usage: $0 <file_to_check> <test_pattern>"
echo "Example: $0 '.git' 'src/**/*.test.ts'"
exit 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

이 프로젝트는 Python/FastAPI 기반이며 테스트 도구로 pytest를 사용합니다. 하지만 스크립트 내의 사용 예시가 TypeScript 패턴(src/**/*.test.ts)으로 작성되어 있어 프로젝트 환경과 일치하지 않습니다. pytest로 TypeScript 파일을 실행하면 테스트가 정상적으로 수행되지 않으므로, 예시를 Python 테스트 패턴(예: tests/**/test_*.py)으로 변경하는 것이 좋습니다.

Suggested change
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'
set -e
if [ $# -ne 2 ]; then
echo "Usage: $0 <file_to_check> <test_pattern>"
echo "Example: $0 '.git' 'src/**/*.test.ts'"
exit 1
fi
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
# Example: ./find-polluter.sh '.git' 'tests/**/test_*.py'
set -e
if [ $# -ne 2 ]; then
echo "Usage: $0 <file_to_check> <test_pattern>"
echo "Example: $0 '.git' 'tests/**/test_*.py'"
exit 1
fi

Comment on lines +21 to +22
# Get list of test files
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

find . 명령어는 기본적으로 ./로 시작하는 상대 경로를 반환합니다 (예: ./tests/test_foo.py). 하지만 사용자가 tests/**/*.py와 같은 패턴을 전달하면, find . -path "tests/**/*.py"는 leading ./가 없기 때문에 아무 파일도 매칭하지 못합니다. 이로 인해 TEST_FILES가 빈 값이 되고, 테스트를 전혀 실행하지 않은 채 "No polluter found" 메시지를 출력하며 정상 종료되는 심각한 버그가 발생합니다.

패턴이 ./로 시작하지 않는 경우 자동으로 ./를 앞에 붙여주도록 수정하여 이 문제를 해결할 수 있습니다.

Suggested change
# Get list of test files
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)
# Get list of test files
if [[ ! "$TEST_PATTERN" =~ ^\./ ]]; then
TEST_PATTERN="./$TEST_PATTERN"
fi
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)

Comment on lines +3 to +12
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'

set -e

if [ $# -ne 2 ]; then
echo "Usage: $0 <file_to_check> <test_pattern>"
echo "Example: $0 '.git' 'src/**/*.test.ts'"
exit 1
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

이 프로젝트는 Python/FastAPI 기반이며 테스트 도구로 pytest를 사용합니다. 하지만 스크립트 내의 사용 예시가 TypeScript 패턴(src/**/*.test.ts)으로 작성되어 있어 프로젝트 환경과 일치하지 않습니다. pytest로 TypeScript 파일을 실행하면 테스트가 정상적으로 수행되지 않으므로, 예시를 Python 테스트 패턴(예: tests/**/test_*.py)으로 변경하는 것이 좋습니다.

Suggested change
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'
set -e
if [ $# -ne 2 ]; then
echo "Usage: $0 <file_to_check> <test_pattern>"
echo "Example: $0 '.git' 'src/**/*.test.ts'"
exit 1
fi
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
# Example: ./find-polluter.sh '.git' 'tests/**/test_*.py'
set -e
if [ $# -ne 2 ]; then
echo "Usage: $0 <file_to_check> <test_pattern>"
echo "Example: $0 '.git' 'tests/**/test_*.py'"
exit 1
fi

Comment on lines +21 to +22
# Get list of test files
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

high

find . 명령어는 기본적으로 ./로 시작하는 상대 경로를 반환합니다 (예: ./tests/test_foo.py). 하지만 사용자가 tests/**/*.py와 같은 패턴을 전달하면, find . -path "tests/**/*.py"는 leading ./가 없기 때문에 아무 파일도 매칭하지 못합니다. 이로 인해 TEST_FILES가 빈 값이 되고, 테스트를 전혀 실행하지 않은 채 "No polluter found" 메시지를 출력하며 정상 종료되는 심각한 버그가 발생합니다.

패턴이 ./로 시작하지 않는 경우 자동으로 ./를 앞에 붙여주도록 수정하여 이 문제를 해결할 수 있습니다.

Suggested change
# Get list of test files
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)
# Get list of test files
if [[ ! "$TEST_PATTERN" =~ ^\./ ]]; then
TEST_PATTERN="./$TEST_PATTERN"
fi
TEST_FILES=$(find . -path "$TEST_PATTERN" | sort)

Comment on lines +36 to +46
```typescript
// ❌ BEFORE: Guessing at timing
await new Promise(r => setTimeout(r, 50));
const result = getResult();
expect(result).toBeDefined();

// ✅ AFTER: Waiting for condition
await waitFor(() => getResult() !== undefined);
const result = getResult();
expect(result).toBeDefined();
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

이 가이드는 TypeScript/JavaScript 예시(setTimeout, expect, Promise)를 사용하고 있습니다. 이 프로젝트는 Python/FastAPI 기반이므로, 개발자들이 직관적으로 이해하고 적용할 수 있도록 Python/pytest 예시(예: time.sleep, pytest 비동기 대기 패턴 등)로 가이드를 업데이트하는 것이 좋습니다.

Comment on lines +25 to +38
```typescript
function createProject(name: string, workingDirectory: string) {
if (!workingDirectory || workingDirectory.trim() === '') {
throw new Error('workingDirectory cannot be empty');
}
if (!existsSync(workingDirectory)) {
throw new Error(`workingDirectory does not exist: ${workingDirectory}`);
}
if (!statSync(workingDirectory).isDirectory()) {
throw new Error(`workingDirectory is not a directory: ${workingDirectory}`);
}
// ... proceed
}
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

이 가이드는 TypeScript 예시를 사용하고 있습니다. 이 프로젝트는 Python/FastAPI 기반이므로, Python/Pydantic 또는 표준 예외 처리 패턴을 사용하는 Python 예시로 업데이트하는 것이 좋습니다.

Comment on lines +41 to +51
```typescript
await execFileAsync('git', ['init'], { cwd: projectDir });
```

### 3. Ask: What Called This?
```typescript
WorktreeManager.createSessionWorktree(projectDir, sessionId)
→ called by Session.initializeWorkspace()
→ called by Session.create()
→ called by test at Project.create()
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

이 가이드는 TypeScript 예시를 사용하고 있습니다. 이 프로젝트는 Python/FastAPI 기반이므로, Python/subprocess 또는 os 모듈을 사용하는 Python 예시로 업데이트하는 것이 좋습니다.

Comment on lines +41 to +51
```typescript
await execFileAsync('git', ['init'], { cwd: projectDir });
```

### 3. Ask: What Called This?
```typescript
WorktreeManager.createSessionWorktree(projectDir, sessionId)
→ called by Session.initializeWorkspace()
→ called by Session.create()
→ called by test at Project.create()
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

이 가이드는 TypeScript 예시를 사용하고 있습니다. 이 프로젝트는 Python/FastAPI 기반이므로, Python/subprocess 또는 os 모듈을 사용하는 Python 예시로 업데이트하는 것이 좋습니다.

Use the bisection script `find-polluter.sh` in the scripts directory:

```bash
./scripts/find-polluter.sh '.git' 'src/**/*.test.ts'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

이 예시 경로는 TypeScript 파일 패턴(src/**/*.test.ts)을 가리키고 있습니다. Python 프로젝트 환경에 맞게 tests/**/test_*.py 또는 **/test_*.py와 같은 Python 테스트 패턴으로 변경하는 것이 좋습니다.

Use the bisection script `find-polluter.sh` in the scripts directory:

```bash
./scripts/find-polluter.sh '.git' 'src/**/*.test.ts'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

medium

이 예시 경로는 TypeScript 파일 패턴(src/**/*.test.ts)을 가리키고 있습니다. Python 프로젝트 환경에 맞게 tests/**/test_*.py 또는 **/test_*.py와 같은 Python 테스트 패턴으로 변경하는 것이 좋습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant