Install any skill in seconds. Free to start, no credit card required.
Get Started Free →오픈소스 릴리스 위생 루틴. 새 기능/스킬/에이전트를 추가했을 때 (1) 부산물(v1/v2 .bak, _source, 로그, scratch dir)이 changeset에 없는지, (2) 문서(README/docs/home)가 동기화됐는지, (3) npm 배포 대상인지(skills/ + files vs .claude local-preview) 판단했는지 체크리스트로 강제. '릴리스 준비', '커밋 전 점검', 'push 전에 정리', '배포 위생', 'release hygiene' 류 트리거. husky pre-commit이 부산물 게이트를 자동 실행.
.claude/skills/kwakseongjae-omd-release-hygiene/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 37% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 47% | 0% |
오픈소스 레포가 "최적의 결과물만 push"하도록 강제하는 루틴. 실험 과정에서 생긴 부산물이 public repo로 새는 것을 막고, 새 deliverable이 문서/패키징과 어긋나지 않게 한다.
자동 게이트는 scripts/check-release-hygiene.sh가 husky pre-commit에서 돌린다. 이 스킬은 그 게이트가 잡지 못하는 판단(문서 동기화, npm 배포 여부)을 사람/에이전트가 책임지게 한다.
experiments/, .promo/)을 돌린 세션의 마무리자동: bash scripts/check-release-hygiene.sh staged — pre-commit이 이미 실행. 수동 확인 대상 (게이트 정규식 밖일 수 있는 것):
*.v1.html, *-draft, *-old, *-copybuild.mjs, crop-*.mjs (experiments 안이면 gitignore로 OK).orchestrator.log, .reviews/_source-*, *-contact-sheet*판단 기준: "이 파일이 6개월 뒤 처음 보는 기여자에게 의미가 있나?" No면 부산물.
.gitignore에 다음이 있어야 한다 (이미 설정됨):
experiments/ # 갤러리 + 브랜드 목업 + 저니 (로컬 전용)
.promo/ # hyperframes 프로모 영상
.experiments/ # /omd-lab-* 런
.codex/ # codex 채널 self-install 산출물
.agents/skills/omd*/ # generic-agent 채널 self-install
web/.husky/ # root .husky의 중복본새 채널/툴이 self-install 산출물을 만들면 같은 패턴으로 추가.
새 스킬/에이전트를 추가했으면 다음을 전부 갱신:
| 위치 | 무엇을 | |---|---| | README.md | 스킬 표 / 카운트. shipped vs local-preview 구분 명시 | | web/src/app/docs/page.tsx | SKILLS 또는 V2_SKILLS 배열 + 섹션 eyebrow 카운트 + 상단 nav anchor | | web/src/components/landing-v2/sections.tsx | "N skills + M sub-agents" 하드코딩 카운트 — 번들(npm) 기준으로만. local-preview는 카운트에서 제외 |
홈 화면 카운트는 npm 번들 기준이다. local-preview 스킬을 더해도 홈 카운트는 안 올린다 (그게 일관성 신호).
새 스킬/에이전트가 npm 패키지로 나갈지 결정한다. 두 갈래:
Shipped (번들) — 다음을 모두 해야 함:
skills/<name>/SKILL.md로 복사 (package source). .claude/skills/는 dogfood 미러.agents/<name>.md로 복사 (agents/는 통째로 ship).package.json의 files 배열에 skills/<name> 추가 (files가 npm tarball을 gate).files에 포함 (예: data/research/*.md). 외부 스크립트 의존이 실효성 없으면 ship 전에 제거 (precedent: kr-spellcheck heuristic은 recall 낮아 폐기).npm publish는 사용자 명시 요청 시에만.Local-preview (dogfood만) — 기본값:
.claude/skills/ + .claude/agents/에만 존재. skills/·files에는 넣지 않음.omd-add-reference, omd-batch-launch, omd-migrate, omd-lab-*.판단 휴리스틱: 미완성 의존성(없는 스크립트 참조 등)·preview 성숙도·매 설치마다 footprint 증가가 걸리면 → local-preview. 안정적이고 자급자족이며 모든 채널에서 작동하면 → shipped 후보.
1. bash scripts/check-release-hygiene.sh all # 부산물 전수 스캔
2. git status --porcelain | grep -iE '_old|_source|\.bak|v[0-9]\.|contact-sheet' # 이중 확인
3. .gitignore에 scratch dir 누락 없는지 확인
4. 이번 changeset에 새 스킬/에이전트가 있나? → [3] 문서 동기화
5. 새 스킬을 ship할까? → [4] 판단. 기본 local-preview
6. 사용자에게 요약 보고. 커밋/푸시는 명시 요청 시에만.release-hygiene
[1] byproducts: ✓ 0 in changeset
[2] scratch dirs: ✓ experiments/ .promo/ .codex/ ignored
[3] docs sync: ✓ README + /docs updated (or: N/A — no new deliverable)
[4] npm decision: local-preview (joins omd-migrate et al.) (or: shipped → files updated)experiments/ / .promo/ 를 git add -f로 강제 추적--no-verify로 우회 (긴급시 외)npm publishfiles에 빠뜨림 (= 깨진 설치)scripts/check-release-hygiene.sh — 자동 부산물 게이트 (pre-commit).husky/pre-commit — 게이트 + catalog-integrity 실행package.json#files — npm tarball allowlist (shipped 판단의 ground truth)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-02 | fail→fail | 13,128 | 4,606 | -65% | 1 | 1 | 0% | 2,218 | 1,966 | -11% | 0 | 0 | — |
case-03 | fail→fail | 12,292 | 5,622 | -54% | 1 | 1 | 0% | 2,043 | 2,024 | -1% | 0 | 0 | — |
case-01 | fail→fail | 13,920 | 6,091 | -56% | 1 | 1 | 0% | 2,446 | 2,035 | -17% | 0 | 0 | — |
case-04 | pass→pass | 7,414 | 3,007 | -59% | 1 | 1 | 0% | 1,196 | 2,226 | +86% | 0 | 0 | — |
case-05 | pass→pass | 10,122 | 3,976 | -61% | 1 | 1 | 0% | 1,596 | 2,412 | +51% | 0 | 0 | — |
case-06 | pass→pass | 9,048 | 3,989 | -56% | 1 | 1 | 0% | 1,460 | 2,337 | +60% | 0 | 0 | — |
case-07 | pass→pass | 14,439 | 4,682 | -68% | 1 | 1 | 0% | 1,845 | 2,398 | +30% | 0 | 0 | — |
case-08 | fail→pass | 10,045 | 3,387 | -66% | 1 | 1 | 0% | 1,701 | 2,325 | +37% | 0 | 0 | — |
case-09 | fail→pass | 10,886 | 3,676 | -66% | 1 | 1 | 0% | 1,832 | 2,347 | +28% | 0 | 0 | — |
case-10 | pass→pass | 6,779 | 3,966 | -41% | 1 | 1 | 0% | 986 | 2,321 | +135% | 0 | 0 | — |
case-11 | fail→pass | 16,723 | 2,560 | -85% | 1 | 1 | 0% | 2,663 | 2,148 | -19% | 0 | 0 | — |
case-12 | fail→pass | 10,136 | 5,071 | -50% | 1 | 1 | 0% | 1,561 | 2,636 | +69% | 0 | 0 | — |
case-13 | pass→pass | 9,924 | 3,573 | -64% | 1 | 1 | 0% | 1,747 | 2,320 | +33% | 0 | 0 | — |
case-14 | pass→pass | 12,905 | 3,876 | -70% | 1 | 1 | 0% | 1,916 | 2,259 | +18% | 0 | 0 | — |
case-15 | fail→pass | 9,523 | 3,530 | -63% | 1 | 1 | 0% | 1,496 | 2,206 | +47% | 0 | 0 | — |
case-16 | fail→pass | 9,519 | 6,906 | -27% | 1 | 1 | 0% | 1,514 | 2,839 | +88% | 0 | 0 | — |
case-17 | pass→pass | 6,648 | 2,535 | -62% | 1 | 1 | 0% | 1,046 | 2,025 | +94% | 0 | 0 | — |
case-18 | fail→pass | 9,136 | 2,431 | -73% | 1 | 1 | 0% | 1,406 | 2,164 | +54% | 0 | 0 | — |
case-19 | pass→pass | 11,811 | 7,362 | -38% | 1 | 1 | 0% | 2,031 | 2,947 | +45% | 0 | 0 | — |
case-20 | pass→pass | 9,803 | 6,543 | -33% | 1 | 1 | 0% | 1,787 | 2,809 | +57% | 0 | 0 | — |
case-21 | pass→pass | 6,896 | 10,407 | +51% | 1 | 1 | 0% | 1,324 | 2,568 | +94% | 0 | 0 | — |
case-22 | fail→pass | 8,880 | 4,015 | -55% | 1 | 1 | 0% | 1,381 | 2,268 | +64% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +36 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.