project-convention-managelisted
Install: claude install-skill ridsync/devoks-team-harness
# Project Convention Manage
## Overview
이 스킬은 현재 프로젝트의 `.claude/rules/project-convention.md`를 관리한다.
핵심 원칙은 **자동 overwrite 금지**이며, 항상 현황 파악 → diff 설명 → 사용자 확인 → 적용 순서를 따른다.
---
## SSOT
- 프로젝트 active convention: `.claude/rules/project-convention.md`
- preset provenance metadata: `.claude/project-convention.json`
- preset 원본: `${CLAUDE_PLUGIN_ROOT}/conventions/<preset>/project-convention.md`
- 프로젝트 사실 SSOT: `.claude/CLAUDE.md`
---
## 지원 작업
- 현재 convention이 어떤 preset 기반인지 확인
- current vs preset 차이 요약
- upstream preset 재적용
- selective apply (일부 섹션만 반영)
- React Web / React Native / Android / iOS / Custom 간 전환
- `.claude/CLAUDE.md`와 convention 사이의 stack drift 점검
- legacy convention이 bundled copy 잔재인지, 실제 프로젝트 커스터마이징인지 추정
---
## Steps
### 1. 현황 파악
먼저 아래를 읽는다.
- `.claude/project-convention.json`
- `.claude/rules/project-convention.md`
- `.claude/CLAUDE.md` (있으면)
#### hash 사전 체크 (`presetHash`가 있을 때)
`.claude/project-convention.json`에 `presetHash`가 있으면, 전체 diff·유사도 추론을 돌기 전에 먼저
값싸고 정확한 same/different 사전 필터를 돈다.
1. `${CLAUDE_PLUGIN_ROOT}/conventions/<preset>/project-convention.md`의 현재 `sha256`을 계산한다
(예: `shasum -a 256`).
2. 저장된 `presetHash`와 **동일** → "업스트림 preset 변경 없음"으로 즉시 보고한다. 사용자가 명시적으로
전체 diff를 요청하지 않는 한 아래 3~4단계(drift 판단·diff 제시)는 생략한다.
3. **다르면** → "업스트림 preset이 변경됨"을 알리고 3~4단계로 그대로 진행한다. 적용 후에는 `presetHash`를
최신 값으로 갱신한다(5단계).
`presetHash`가 **없으면**(이 필드 도입 이전에 생성된 레거시 provenance) 에러 없이 아래 기존 추정
체인으로 폴백한다 — 강제 재설정 없음.
metadata가 없으면 다음 순서로 추정하되, **확정으로 단정