Agent skill
verify-permissions
역할별 탭 접근권한, 버튼 노출, 권한 체크 로직을 검증합니다. 권한/역할 관련 코드 수정 후 사용.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/verify-permissions
SKILL.md
Purpose
- 역할-탭 매핑 정합성 - types/system.ts의 DEFAULT_TAB_PERMISSIONS와 실제 UI 동작이 일치하는지 검증
- usePermissions 훅 사용 - 권한이 필요한 컴포넌트에서 usePermissions를 올바르게 호출하는지 검증
- useTabPermissions 필터링 - Sidebar에서 역할에 따라 탭이 올바르게 필터링되는지 검증
- 권한 기반 UI 분기 - 버튼/메뉴의 조건부 렌더링이 역할에 따라 올바르게 동작하는지 검증
When to Run
types/system.ts의 역할 또는 탭 권한을 수정한 후hooks/usePermissions.ts또는hooks/useTabPermissions.ts수정 후- 관리자 전용 기능을 추가하거나 수정한 후
- 새로운 역할(role)을 추가한 후
components/Navigation/Sidebar.tsx수정 후
Related Files
| File | Purpose |
|---|---|
types/system.ts |
AppTab 타입, TAB_META, TAB_GROUPS, DEFAULT_TAB_PERMISSIONS 정의 |
hooks/usePermissions.ts |
핵심 권한 검증 훅 |
hooks/useTabPermissions.ts |
탭 접근 권한 필터링 훅 |
hooks/useRoleHelpers.ts |
역할 유틸리티 |
hooks/useAuth.ts |
인증 상태 (현재 사용자 역할) |
components/Navigation/Sidebar.tsx |
사이드바 (탭 접근 필터링 적용) |
components/Layout/TabContent.tsx |
탭 라우팅 |
components/RoleManagement/RoleManagementPage.tsx |
역할 관리 UI |
utils/roleHelpers.ts |
역할 관련 유틸리티 함수 |
Workflow
Step 1: 8개 역할 정의 완전성 검증
검사: types/system.ts에 8개 역할이 모두 정의되어 있는지 확인합니다.
grep -n "master\|admin\|manager\|math_lead\|english_lead\|math_teacher\|english_teacher\|'user'" types/system.ts | head -20
PASS 기준: 8개 역할(master, admin, manager, math_lead, english_lead, math_teacher, english_teacher, user) 모두 참조 FAIL 기준: 역할 정의 누락
Step 2: DEFAULT_TAB_PERMISSIONS 구조 검증
검사: 모든 역할에 대해 허용 탭 배열이 정의되어 있는지 확인합니다.
grep -A 2 "DEFAULT_TAB_PERMISSIONS" types/system.ts | head -15
PASS 기준: DEFAULT_TAB_PERMISSIONS에 8개 역할의 키가 존재 FAIL 기준: 역할 키 누락
Step 3: useTabPermissions 훅 → Sidebar 연결 검증
검사: Sidebar에서 useTabPermissions를 사용하여 탭을 필터링하는지 확인합니다.
grep -n "useTabPermissions\|accessibleTabs\|filteredTabs" components/Navigation/Sidebar.tsx | head -5
PASS 기준: Sidebar에서 탭 필터링 로직 존재 FAIL 기준: Sidebar가 권한 없이 모든 탭을 표시
수정: const accessibleTabs = useTabPermissions() 추가 후 탭 목록 필터링
Step 4: 관리자 전용 탭 접근 제한 검증
검사: payment, role-management 탭이 일반 교사(math_teacher, english_teacher) 역할에서 제외되는지 확인합니다.
grep -A 5 "math_teacher\|english_teacher" types/system.ts | grep -v "payment\|role-management" | head -10
PASS 기준: 교사 역할의 탭 목록에 payment, role-management가 포함되지 않음 FAIL 기준: 교사가 관리자 전용 탭에 접근 가능
Step 5: usePermissions import 확인
검사: 권한 체크가 필요한 주요 관리 컴포넌트에서 usePermissions를 import하는지 확인합니다.
grep -rl "usePermissions" components/Staff/ components/Billing/ components/RoleManagement/ components/PaymentReport/ 2>/dev/null
PASS 기준: 관리 탭의 주요 컴포넌트에서 usePermissions 사용 FAIL 기준: 권한 체크 없이 관리 기능 접근 가능
Step 6: AppTab 타입과 TAB_META 동기화 검증
검사: AppTab 유니온 타입의 모든 값이 TAB_META에도 정의되어 있는지 확인합니다.
grep -c "AppTab" types/system.ts
grep "'dashboard'\|'calendar'\|'timetable'\|'payment'\|'gantt'\|'consultation'\|'attendance'\|'students'\|'grades'\|'classes'\|'classroom'\|'classroom-assignment'\|'student-consultations'\|'staff'\|'daily-attendance'\|'billing'\|'role-management'\|'resources'\|'withdrawal'\|'help'" types/system.ts | head -5
PASS 기준: AppTab의 모든 값(19개+)이 TAB_META에 메타데이터가 존재 FAIL 기준: 탭 타입은 있지만 메타데이터가 없는 탭 존재
Output Format
| # | 검사 항목 | 범위 | 결과 | 상세 |
|---|---|---|---|---|
| 1 | 8개 역할 정의 | types/system.ts | PASS/FAIL | |
| 2 | DEFAULT_TAB_PERMISSIONS | types/system.ts | PASS/FAIL | |
| 3 | Sidebar 탭 필터링 | Sidebar.tsx | PASS/FAIL | |
| 4 | 관리자 전용 탭 제한 | types/system.ts | PASS/FAIL | |
| 5 | usePermissions 사용 | 관리 컴포넌트 | PASS/FAIL | N개 파일 |
| 6 | AppTab-TAB_META 동기화 | types/system.ts | PASS/FAIL |
Exceptions
다음은 위반이 아닙니다:
- 대시보드와 도움말의 전체 접근 - dashboard, help 탭은 모든 역할에서 접근 가능한 것이 정상
- useRoleSimulation의 권한 우회 - 개발/테스트 환경에서 역할 시뮬레이션은 실제 권한 체크를 우회할 수 있음
- 컴포넌트 내부 권한 체크와 탭 필터링의 중복 - 탭 레벨과 컴포넌트 레벨에서 이중으로 권한을 체크하는 것은 보안 심층 방어 패턴
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?