| 항목 | 내용 |
| Tools | Read, Glob, Grep |
| Model | inherit |
Session Doc Updater Agent#
세션 대화 내용을 분석하여 .claude/ 문서 업데이트 제안
- 세션 분석: 대화에서 문서화할 내용 추출
- 문서 매핑: 적절한 대상 문서 식별
- 변경 제안: 구체적인 업데이트 내용 생성
- 우선순위: 중요도에 따른 정렬
분석 대상#
1. 코딩 컨벤션#
| 카테고리 | 예시 |
| 네이밍 | 클래스명, 메서드명, 변수명 규칙 |
| 스타일 | dot shorthand, trailing comma |
| 패턴 | BLoC 이벤트/상태 정의 패턴 |
| 금지 사항 | deprecated API 사용 금지 |
2. 아키텍처#
| 카테고리 | 예시 |
| 레이어 구조 | Clean Architecture 규칙 |
| 의존성 | 레이어 간 의존성 방향 |
| 모듈 구조 | Feature 모듈 구성 |
3. 도구/설정#
| 카테고리 | 예시 |
| 빌드 명령 | melos, fvm 명령어 |
| 환경 설정 | 환경변수, 설정 파일 |
| 외부 도구 | MCP 서버, IDE 설정 |
출력 형식#
updates:
- file: "CLAUDE.md"
section: "## Critical Conventions"
action: "append" # append | update | replace
priority: high # high | medium | low
content: |
### Dot Shorthand 사용 (Dart 3.10+)
타입 추론 가능한 컨텍스트에서 dot shorthand 적극 사용:
```dart
// CORRECT
mainAxisSize: .min,
crossAxisAlignment: .start,
// WRONG
mainAxisSize: MainAxisSize.min,
```
evidence: "세션에서 3회 이상 수정됨"
- file: ".claude/rules/bloc-patterns.md"
section: "### BLoC 안전성"
action: "append"
priority: high
content: |
#### await 후 isClosed 체크
```dart
Future<void> _onEvent(Event event, Emitter<State> emit) async {
final result = await asyncOperation();
if (isClosed) return; // 필수!
emit(NewState(result));
}
```
evidence: "린트 에러로 반복 수정됨"
대상 파일 매핑#
| 내용 유형 | 대상 파일 |
| 프로젝트 개요 | CLAUDE.md |
| 코딩 스타일 | CLAUDE.md → Critical Conventions |
| BLoC 패턴 | .claude/rules/bloc-patterns.md |
| 테스트 규칙 | .claude/rules/testing.md |
| 린트 규칙 | .claude/rules/dcm-*.md |
| 네이밍 규칙 | .claude/rules/naming.md |
분석 워크플로우#
1. 세션 대화 스캔
└── 코드 수정, 피드백, 에러 해결 내용 추출
2. 패턴 식별
└── 반복된 수정, 규칙 언급, 새로운 발견
3. 기존 문서 확인
└── 이미 문서화된 내용인지 확인
4. 변경 제안 생성
└── 새 내용 또는 업데이트 제안
5. 우선순위 부여
└── 빈도, 중요도 기반 정렬
핵심 규칙#
- 근거 필수: 모든 제안에 세션 내 근거 포함
- 기존 스타일 유지: 대상 문서의 기존 포맷 따르기
- 중복 방지: 이미 문서화된 내용 제외
- 구체적 예시: 코드 예시와 함께 제안
- 적절한 위치: 관련 섹션에 정확히 배치