실장비·하드웨어를 제어하는 프로젝트에서 안전 게이트를 운영할 때 사용한다. 게이트 항목·등급·상태, SAFETY-STUB/VIRTUAL-BYPASS 마커 문법, 배포 기록 형식, 검증 수준 3단계를 정한다. 설정 modules.safetyGate 가 true 일 때만 적용된다.
Installs into .claude/skills of the current project.
Are you the author of Safety Gate?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/mongdang-safety-gate)
---
name: safety-gate
description: 실장비·하드웨어를 제어하는 프로젝트에서 안전 게이트를 운영할 때 사용한다. 게이트 항목·등급·상태, SAFETY-STUB/VIRTUAL-BYPASS 마커 문법, 배포 기록 형식, 검증 수준 3단계를 정한다. 설정 modules.safetyGate 가 true 일 때만 적용된다.
---
# 안전 게이트 운영법
> [!CAUTION]
> 이 스킬은 **운영법**만 담는다. 게이트 항목·확인자·배포 기록이라는 **데이터는 저장소의
> `docs/SAFETY_GATE.md` 에 있고, 그것이 그 프로젝트의 유일한 안전망이다.**
>
> 이 스킬도, 어떤 훅도, 안전 판단을 대신하지 않는다. 훅은 에이전트가 실행하는 경로만
> 막을 수 있다 - 사람이 HMI·IDE·장비 콘솔에서 직접 하는 동작은 아무것도 막지 못한다.
사내 검증이 코드(가상모드)까지만 가능하고 그다음이 바로 실장비인 프로젝트에서, 정위치
오판·인터락 누락·잘못된 장비 제어는 곧 충돌·사고다. 아래 규칙에 예외를 두지 않는다.
## 1. 실장비 게이트
`docs/SAFETY_GATE.md` 의 **OPEN 항목이 남아 있는 동안 실장비에서 모션 명령(원점복귀·이동·
자동 테스트)을 실행하거나 실행을 안내하지 않는다.**
> [!CAUTION]
> **게이트 항목은 사람 확인자만 닫을 수 있다.** 에이전트는 확인자 칸을 채우지 않는다.
> 실장비 검증을 대신할 수 없기 때문이다. 이 규칙에는 어떤 예외도 없다.
## 2. 검증 수준 3단계
```
코드대조 < 가상모드 < 실장비
```
현황판 상태 요약의 COMPLETED 배지는 **"코드 완성"만** 의미한다. 가상모드 통과를 실장비
검증으로 기록하지 않는다 - 검증 수준 열을 따로 채운다.
## 3. 게이트 항목 표
| 열 | 내용 |
|---|---|
| # | 항목 번호. 다른 문서는 이 번호로 인용한다 |
| 등급 | BLOCKER / MOTION / LATER |
| 항목 | 확인해야 하는 것 |
| 확인 방법 | 어떻게 확인하는지 |
| 확인자 | **사람 담당자 실명.** 에이전트가 채우지 않는다 |
| 날짜 | 확인 날짜 |
| 상태 | OPEN / PARTIAL / CLOSED |
**상태**
| 배지 | 뜻 | hex |
|---|---|---|
| OPEN | 미확인 | `#C4553B` |
| PARTIAL | 코드 일부 구현·실측 전 | `#E0A458` |
| CLOSED | 확인 완료(확인자·날짜 필수) | `#3F7D58` |
**등급 - 위험의 크기가 아니라 순서다.** 축은 "무엇을 하기 전에 닫아야 하는가".
| 배지 | 뜻 | hex |
|---|---|---|
| BLOCKER | 모션(원점복귀·Jog 포함) 자체를 금지하는 조건 - 남아 있으면 **아무 축도 움직이지 않는다** | `#C4553B` |
| MOTION | 저속 모션을 시작해야만 확인되는 것 - BLOCKER 를 닫은 뒤 저속 운전에서 확인 | `#E0A458` |
| LATER | 측정 계통·종료·표시 - 모션 안전과 무관하나 **측정 전까지는 닫아야 함** | `#6B7280` |
항목을 닫을 때: 상태 배지를 CLOSED 로 바꾸고 확인자·날짜를 채운다. 새 위험이 발견되면
행을 추가하고 현황판 활성 위험 표에서 **항목 번호로 인용**한다 - 내용을 두 곳에 재서술하지
않는다.
## 4. 코드 마커 규칙
grep 한 번으로 전수 탐색되는 게 목적이라 **표기를 변형하지 않는다**(대소문자·하이픈 고정).
| 마커 | 의미 | 규칙 |
|---|---|---|
| `SAFETY-STUB` | 안전 판정(정위치·인터락·리밋 등)을 임시로 통과시키는 자리 | 부착과 **같은 커밋에서** 게이트 표에 등재. 원칙은 fail-safe(차단=false) 방향이고, 부득이 통과(true)로 둘 때만 이 마커를 쓴다 |
| `VIRTUAL-BYPASS` | 가상모드 전용 우회 분기 | 부착 시 게이트의 마커 스캔 항목 대상. 실장비 배포 전 전수 검토 |
**안전 판정 스텁은 fail-safe 방향이 기본이다.** 정위치·인터락·리밋 판정의 임시 구현은
차단(false) 쪽으로 둔다.
**알람·인터락·비상정지 경로를 주석 처리하거나 조건 우회로 무력화한 채 커밋하지 않는다.**
부득이하면 마커 부착 + 현황판 활성 위험 표 등재가 조건이다.
## 5. 배포 기록
실장비에 배포할 때마다 `SAFETY_GATE.md` 의 배포 기록 표에 한 행을 추가한다 - **"그때 실장비에
돌던 코드가 뭐였는지" 를 되짚을 유일한 수단**이다.
| 열 | 내용 |
|---|---|
| 배포 일시 | |
| 브랜치 | |
| 커밋 해시 | 되짚기의 핵심 |
| 게이트 상태 | OPEN 잔여 |
| 비고 | |
## 6. 병행 작업 중의 예외
병행 기간에도 **이 문서만은 개인 폴더가 아닌 메인에 즉시 반영한다.** 수정 즉시 커밋하고
상대방에게 공유한다 - 안전 정보는 병합을 기다리지 않는다.
같은 이유로 안전 파일 변경이 섞인 병합은 **자동 병합 대상에서 제외**된다. 사람이 diff 를
리뷰한다.
## 7. 아카이브 이관 시
서사를 아카이브로 옮길 때 그 안의 미해결 확인 항목은 전부 현황판 또는 이 게이트로 승격한
뒤 동결한다. 동결 문서에만 남은 확인 항목은 영영 갱신되지 않는다 - 실제 누락 사례가 이
게이트 도입의 근거다.