GEMINI.md 파일은 Gemini CLI가 프로젝트를 장기 기억하고, 항상 같은 스타일과 규칙을 따르게 만드는 핵심 파일입니다. Markdown 형식으로 작성하면 되고, 내용은 AI에게 주는 지시사항으로 생각하면 됩니다.
직접 md파일을 만들어도 되지만 아래처럼 입력하면 gemini가 프로젝트를 분석하고 기본 파일을 생성해줍니다.
gemini
/init
결과는 아래와 같습니다.
(처음엔 영어였는데 한글로 번역해달라고 했습니다)
# GEMINI.md: 프로젝트 개요
이 문서는 향후 상호 작용 및 분석을 위해 FaceDetect 프로젝트에 대한 높은 수준의 개요를 제공합니다.
## 프로젝트 개요
이 프로젝트는 Microsoft Foundation Class (MFC) 라이브러리 및 OpenCV를 사용하여 구축된
C++ Windows 데스크톱 애플리케이션입니다. 주요 목적은 이미지에서 얼굴과 눈을 감지하는 것입니다.
이 애플리케이션은 클라이언트-서버 아키텍처를 가지는 것으로 보입니다.
서버 구성 요소(`CServer_FaceDetect`)는 이미지 파일 대기열을 관리하며, 이 파일은 전용 작업자 스레드(`CThread_FaceDetect`)에 의해 처리됩니다.
사용자 인터페이스는 탐지 프로세스를 시작하고 중지할 수 있는 메인 다이얼로그(`CDlgMain`)에 의해관리됩니다.
### 주요 구성 요소
* **`CFaceDetectApp`**: `CWinApp`에서 파생된 메인 애플리케이션 클래스입니다. 애플리케이션을 초기화하고 전역 리소스를 관리합니다.
* **`CDlgMain`**: 사용자 인터페이스 및 사용자 상호 작용을 담당하는 메인 다이얼로그 클래스입니다.
* **`CServer_FaceDetect`**: 전반적인 얼굴 감지 작업을 관리하는 클래스로 보이며, 서버와 유사한 역할을 합니다. 얼굴 감지 스레드를 포함합니다.
* **`CThread_FaceDetect`**: OpenCV를 사용하여 핵심 얼굴 감지 논리를 담당하는 작업자 스레드입니다. 지정된 디렉토리의 이미지를 처리합니다.
* **OpenCV Cascade Classifiers**: 프로젝트는 얼굴과 눈을 각각 감지하기 위해 `haarcascade_frontalface_default.xml` 및 `haarcascade_eye.xml`을 사용합니다.
## 빌드 및 실행
이 프로젝트는 Microsoft Visual Studio 프로젝트입니다. 애플리케이션을 빌드하고 실행하려면:
1. Visual Studio에서 `FaceDetect.sln` 파일을 엽니다.
2. 빌드 구성(예: Debug, Release)을 선택합니다.
3. 솔루션을 빌드합니다 (F7 또는 빌드 > 솔루션 빌드).
4. 애플리케이션을 실행합니다 (F5 또는 디버그 > 디버깅 시작).
## 개발 규칙
* **언어**: C++
* **프레임워크**: Microsoft Foundation Class (MFC)
* **라이브러리**: OpenCV
* **코딩 스타일**: 코드는 변수 이름에 헝가리안 표기법(예: `m_sDirWork`, `m_nIndex`)을 사용합니다. 클래스 이름은 `C`로 시작합니다. 소스 코드의 주석은 주로 한국어입니다.
* **동시성**: 애플리케이션은 다중 스레드이며, UI 응답성을 유지하기 위해 얼굴 감지 논리는 작업자 스레드로 오프로드됩니다.
내용이 나쁘지 않다면 이대로 사용해도 되고 추가하거나 수정할 부분이 있다면 직접 수정하면 됩니다.
먼저 로그를 남기는 함수를 추가하여 기능 실행 후에 추가해달라고 해보겠습니다.

함수명에 대한 지시가 없었기 때문에 기존 스타일과 다르게 작성된 모습입니다.
코드를 되돌린 후 아래와 같은 네이밍 규칙을 추가하고 다시 로그를 남기는 함수 하나를 추가해달라고 해보겠습니다.
지침은 가급적 강력한 어조로 적어주는게 좋고
수정 이후에는 바로 반영이 안되니 gemini cli를 재실행하던가 수정했다는 사실을 알려줘야합니다.
## 네이밍 규칙 (STRICT)
* **모든 동작 함수(Action Function)는 반드시 접두사 `Do`로 시작해야 한다.** (예외 없음)
* (BAD): `DetectFaces()`, `LoadImage()`
* (GOOD): `DoDetectFaces()`, `DoLoadImage()`
* **클래스**: PascalCase를 사용하며 반드시 `C`로 시작한다. (예: `CFaceAnalyzer`)
* **멤버 변수**: `m_` 접두사를 사용한다. (예: `m_nFrameCount`)
* **전역 변수**: `g_` 접두사를 사용한다. (예: `g_bIsRunning`)
## 답변 시 강제 확인 사항
- 코드를 생성하기 전, 위 네이밍 규칙을 준수했는지 다시 한 번 확인하라.
- 특히 함수의 이름이 `Do`로 시작하지 않는다면 이는 지침 위반이다.
동일하게 명령했을 때 변경된 네이밍 규칙에 따라 함수를 생성해주는 모습입니다.

며칠 gemini cli를 사용해본 결과 무료버전으로 사용해서 그런지 속도도 느리고 쓰다보면 제한도 걸렸는데
귀찮은 일 시킬 때 사용할 서브 도구로는 괜찮아 보였습니다.
개인적으로 GitHub Copilot은 유료이기도 하고 오히려 코딩하는데 방해가 돼서 사용하지 않았는데
gemini cli는 충분히 실무에서 사용할만한 좋은 도구인것 같습니다.
'AI' 카테고리의 다른 글
| [AI] 구글 제미나이 CLI에 MCP Server세팅하기 [02] (0) | 2026.02.01 |
|---|---|
| [AI] 비주얼스튜디오에 구글 제미나이 CLI 세팅하기 [01] (1) | 2026.01.31 |
| [AI] 커서 AI에서 Github MCP Server 사용해보기 [02] (2) | 2025.06.15 |
| [AI] 바이브코딩을 위한 커서 AI 사용해보기 [01] (3) | 2025.06.15 |
댓글