계획된 변경사항과 관련된 프로젝트 메모리(경계, 규약, 규칙)를 확인하고 위반 여부를 검사
계획(Plan) 단계 완료 후, 구현 시작 전에 프로젝트 메모리를 확인하여:
analysisContext에서 수집:
projectId: 프로젝트 식별자changedFiles: 변경 예정 파일 목록taskType: 작업 유형plan: 구현 계획 요약package.json의 name 필드 확인[ProjectID]::[EntityType]::[Name]
예시:
my-webapp::Boundary::AlwaysDomy-webapp::Component::Buttonmy-webapp::Convention::NamingRule# 우선순위 1: package.json
cat package.json | jq -r '.name'
# 우선순위 2: 디렉토리 이름
basename $(pwd)
# 우선순위 3: git remote
git remote get-url origin | sed 's/.*\/\([^\/]*\)\.git/\1/'
search_nodes로 [ProjectID]::Boundary 검색
경계가 없는 경우 (첫 사용):
AlwaysDo 기본값:
- "커밋 전 lint/typecheck 실행"
- "변경 파일 테스트 통과 확인"
AskFirst 기본값:
- "새 의존성 추가"
- "DB 스키마 변경"
- "인증/권한 로직 수정"
NeverDo 기본값:
- ".env* 파일 커밋"
- "기존 테스트 삭제"
- "시크릿 하드코딩"
create_entities로 생성open_nodes로 경계 엔티티 상세 조회:
[ProjectID]::Boundary::AlwaysDo[ProjectID]::Boundary::AskFirst[ProjectID]::Boundary::NeverDo현재 계획과 대조:
NeverDo 위반 검사 (즉시 중단):
AskFirst 해당 검사 (승인 필요):
AlwaysDo 확인 (리마인더):
changedFiles에서 키워드 추출:
search_nodes로 관련 엔티티 검색:
[ProjectID]::Component::*[ProjectID]::Convention::*[ProjectID]::API::*[ProjectID]::Domain::*관련 규약이 있으면 요약 제공
projectMemoryCheck:
projectId: "my-webapp"
boundaryStatus: "ok" | "violation" | "needs_approval" | "not_initialized"
boundary:
violations: [] # NeverDo 위반 (있으면 즉시 중단)
needsApproval: # AskFirst 해당 항목
- item: "새 의존성 추가"
reason: "axios 패키지 추가 예정"
reminders: # AlwaysDo 리마인더
- "커밋 전 npm run lint 실행"
relatedConventions:
- entity: "[proj]::Component::Button"
observations:
- "variant prop 필수"
- "onClick 핸들러 규칙"
- entity: "[proj]::Convention::API"
observations:
- "에러 응답 형식 통일"
action: "proceed" | "halt" | "ask_user"
message: "..."
action: "halt" 반환