스킬은 플러그인으로 내보낸다고 했다. 그런데 받는 쪽이 새 버전이 나온 걸 알 방법은 하나뿐이었다. 플러그인에 붙은 버전 숫자다.
한동안 그 숫자를 안 올렸다. 스킬을 새로 만들고 고치고 몇 번이나 내보내면서도 버전은 그대로 0.1.0에 머물러 있었다. 그래서 받는 쪽은 낡은 채로 남았다. 분명 스킬을 하나 새로 썼는데 정작 부르려고 하면 없었다. 플러그인엔 있는데 사이트에선 부를 수 없는, 조용한 어긋남이었다.
원인은 단순했다. 버전이 안 오르면 받는 쪽은 확인할 게 없다. 낡았는지조차 모른다. 그래서 버전을 반드시 올리게 만들기로 했다.
바뀌면 올린다
스킬이나 매니페스트가 바뀐 PR은 버전이 올라야 통과한다. 안 올렸으면 빨갛게 막힌다. 검사는 딱 그것만 본다. 숫자가 올랐는가.
# 스킬이 바뀌었는데 버전이 안 올랐고 예외 라벨도 없으면 → 실패.
if [ "$VERDICT" != "gt" ]; then
echo "::error::버전을 올려야 소비자가 업데이트를 받는다"
exit 1
fi
얼마나 올릴지는 판단이다
검사는 숫자가 올랐는지만 본다. 얼마나 올릴지는 다른 문제다. 작은 고침인지, 기능 추가인지, 쓰는 코드를 깨는 변경인지에 따라 올리는 자리가 다르다. 그 판단은 Claude에게 맡겼다. 워크플로를 하나 더 뒀다. 바뀐 내용을 읽고 알맞은 자리로 버전을 올려 초안을 내면, 사람이 확인한다. dev-news에서 changeset을 대신 써 주던 것과 같은 결이다. 바꿔도 받는 쪽에 아무 영향이 없는 변경이면, 올리는 대신 plugin-no-release 라벨을 달아 검사를 지나가게 한다.
받는 쪽이 저절로 갱신된다
플러그인이 신호를 만들었으면 받는 쪽은 그걸 집어와야 한다. 사이트 저장소에 마켓플레이스를 적어 두고 자동 갱신을 켰다. 버전이 오르면 백그라운드로 새 걸 받아 온다.
솔직히 받는 쪽 자동 갱신이 늘 손 하나 안 대고 되는지는 아직 다 확인하지 못했다. 다만 확실한 건 이제 신호가 늘 있다는 것이다. 스킬을 바꾸면 버전이 반드시 오르니, 예전처럼 아무도 모르게 낡아 있는 일은 없다.