appsok/agent-ops/skills/common/update-domain-rule/SKILL.md

6.3 KiB

name version description
update-domain-rule 1.0.0 기존 도메인 rules.md를 코드 현황에 맞게 갱신. 전체 스캔(full) 또는 지정 도메인(targeted) 두 모드 지원

update-domain-rule

목적

프로젝트 코드가 변경되면서 기존 domain rule이 실제 구조와 어긋날 수 있다. 이 스킬은 실제 파일 구조를 탐색하여 기존 rules.md와 비교하고, 누락·오류·구식 항목을 수정한다. 갱신한 domain rule에는 어디까지의 코드 커밋을 검토 기준으로 삼았는지 기록한다.

언제 호출할지

  • 대규모 리팩터링 또는 외부 패키지 내재화 후 domain rule 동기화가 필요할 때
  • 특정 도메인 파일 구조가 바뀌어 기존 rule이 맞지 않을 때
  • 사용자가 "도메인 업데이트", "domain rule 갱신", "domain 검토" 등을 요청할 때
  • 로컬 모델의 자동 판단 런타임이 frontier 모델에게 domain rule 검토를 위임한 경우
  • agent-ops 초기 scaffold 이후 코드가 많이 달라진 경우

입력

  • mode: full(전체 도메인 스캔) | targeted(지정 도메인만) (필수)
  • domain-name: 업데이트할 도메인 이름 — targeted 모드에서만 필수

먼저 확인할 것

  • agent-ops/rules/project/domain/ 하위 기존 도메인 목록 확인
  • agent-ops/rules/common/_templates/domain-rule-template.md 읽어 최신 템플릿 형식 파악
  • targeted 모드이면 agent-ops/rules/project/domain/<domain-name>/rules.md 존재 여부 확인
    • 존재하지 않으면 create-domain-rule 스킬을 사용하도록 안내하고 중단
  • git rev-parse HEAD 로 기준 커밋을 확인
    • 이 값은 이번 domain rule 수정이 들어갈 미래 커밋 해시가 아니다
    • 의미: "이 커밋까지의 코드 상태를 보고 domain rule을 검토했다"
    • 코드 변경과 domain rule 변경이 같은 커밋에 섞여 있으면 다음 자동 판단에서 같은 코드 변경이 다시 후보로 잡힐 수 있으므로, 가능하면 코드 변경 커밋 이후 깨끗한 작업 트리에서 실행한다

실행 절차

  1. 대상 목록 결정

    • full: agent-ops/rules/project/domain/ 하위 모든 도메인 디렉터리를 대상으로 한다
    • targeted: 지정된 domain-name 하나만 대상으로 한다
  2. 도메인별 코드 탐색

    • 기존 rules.md포함 경로 목록을 기준으로 실제 파일 구조 탐색
    • 포함 경로에 없지만 도메인 이름과 연관된 경로도 함께 탐색
    • 탐색 시 실제로 존재하는 경로만 수집한다
  3. 비교 및 변경 항목 식별 다음 항목 각각을 현재 rules.md와 비교한다:

    • 포함 경로: 실제로 존재하지 않는 경로 제거, 새로 생긴 경로 추가
    • 주요 구성 요소: 파일/클래스 삭제·이름 변경·신규 추가 반영
    • 유지할 패턴: 코드에서 더 이상 사용되지 않는 패턴 제거, 새 패턴 추가
    • 다른 도메인과의 경계: 도메인 간 import 관계가 바뀐 경우 반영
    • 목적/책임: 도메인 책임이 실질적으로 변경된 경우에만 수정
  4. rules.md 업데이트

    • 변경이 필요한 항목만 수정한다 — 변경 불필요한 섹션은 그대로 둔다
    • frontmatter가 없으면 domain-rule-template.md 형식으로 추가한다
    • last_rule_review_commit에는 실행 초기에 확인한 git rev-parse HEAD 값을 기록한다
    • last_rule_updated_at에는 갱신일을 YYYY-MM-DD 형식으로 기록한다
    • 본문 섹션에 반영할 변경이 없더라도 검토가 완료되었다면 기준 커밋 메타데이터는 갱신한다
    • 확인된 사실만 기재한다; 불확실하면 <!-- TODO: 확인 필요 --> 주석 처리
    • domain-rule-template.md의 섹션 구조를 유지한다
  5. 자동 판단 런타임 기준

    • 로컬 모델은 각 domain rule의 last_rule_review_commit..HEAD 범위를 기준으로 변경 커밋을 확인한다
    • 판단 대상은 해당 도메인의 코드 경로이며, agent-ops/rules/project/domain/** 변경만으로는 다시 위임하지 않는다
    • last_rule_review_commit이 없거나 유효하지 않으면 보수적으로 frontier 모델에게 위임한다
  6. 도메인 매핑 테이블 검토 (full 모드 시)

    • agent-ops/rules/project/rules.md의 도메인 매핑 테이블과 실제 포함 경로 비교
    • 누락된 경로 패턴은 추가, 존재하지 않는 경로 패턴은 제거
    • 기존 항목 순서는 변경하지 않는다
  7. 결과 보고

    • 도메인별로 수정한 항목 목록
    • TODO로 남긴 항목 (해당 시)
    • 도메인 매핑 테이블 변경 내용 (full 모드 시)

실행 결과 검증

  • 수정된 rules.md의 포함 경로가 모두 실제 프로젝트에 존재하는가
  • 섹션 구조가 domain-rule-template.md 형식을 유지하는가
  • last_rule_review_commit이 이번 갱신 직전 HEAD를 가리키는가
  • 변경하지 않아도 되는 섹션이 의도치 않게 바뀌지 않았는가
  • full 모드에서 도메인 매핑 테이블이 실제 포함 경로와 일치하는가
  • 검증 실패 시: 실제 존재하지 않는 경로나 누락된 섹션을 사용자에게 알리고 해당 항목만 보완한다

출력 형식

## 업데이트 완료

### <domain-name>
- 변경: <수정된 항목 요약>
- 추가: <새로 추가된 경로/구성 요소>
- 제거: <삭제된 경로/구성 요소>
- 유지: 변경 없음 또는 기준 커밋 메타데이터만 갱신
- 기준 커밋: <last_rule_review_commit>

### 도메인 매핑 테이블 (full 모드 시)
- 추가: <새 경로 패턴>
- 제거: <삭제된 경로 패턴>

## TODO 항목 (확인 필요)
- <불확실하여 직접 확인이 필요한 항목> (해당 시)

금지 사항

  • 실제 존재하지 않는 경로를 포함 경로에 기재하지 않는다
  • 추측으로 패턴·금지 사항을 추가하지 않는다 — 코드에서 확인된 내용만 기재한다
  • 신규 도메인 생성이 필요한 경우 직접 생성하지 않고 create-domain-rule 스킬 사용을 안내한다
  • rules/project/rules.md의 기존 항목을 삭제하거나 재정렬하지 않는다
  • 코드 파일을 수정하지 않는다 — 이 스킬은 rule 파일 갱신만 담당한다