name: manage-skills description: Analyzes session changes to detect missing verification skills. Dynamically discovers existing skills, creates new skills or updates existing ones, and manages CLAUDE.md skill references. Use when adding new patterns/modules that may need verification coverage, or when maintaining skill consistency. 스킬 관리, 검증 스킬 누락 탐지, CLAUDE.md 업데이트. disable-model-invocation: false argument-hint: '[선택사항: 특정 스킬 이름 또는 집중할 영역]'
세션 기반 스킬 유지보수
목적
현재 세션에서 변경된 내용을 분석하여 검증 스킬의 드리프트를 탐지하고 수정합니다:
- 커버리지 누락 — 어떤 verify 스킬에서도 참조하지 않는 변경된 파일
- 유효하지 않은 참조 — 삭제/이동된 파일을 참조하는 스킬
- 누락된 검사 — 새로운 패턴/규칙
- 오래된 값 — 더 이상 일치하지 않는 설정값/탐지 명령어
실행 시점
- 새로운 패턴이나 규칙을 도입한 후
- PR 전 verify 스킬 커버리지 확인
- 검증 실행 시 예상 이슈를 놓쳤을 때
- 주기적 코드베이스 정렬
배치 원칙 (토큰 절약): 하나의 harness sprint가 끝난 직후 harness Step 7에서 통합 실행하는 것이 이상적이다. harness sprint마다 별도 세션으로 호출하면 각 호출이 독립적인 컨텍스트를 소비한다. sprint가 여러 개 연속될 경우 마지막 sprint 완료 후 한 번 실행으로 묶어 처리한다.
등록된 검증 스킬 (19개 + verify-implementation 통합 실행기)
편집 정책: 각 스킬의 상세 Step 목록은
.claude/skills/<name>/SKILL.md본문에서만 관리한다. drift 방지를 위해 manage-skills 테이블의 description은 1줄 한 줄 요약(과거 분리/흡수 이력 포함)으로 유지하고, Step별 grep 명령은 인라인 나열하지 않는다.
| # | 스킬 | 영역 | 한줄 설명 | 커버 파일 패턴 |
|----|-------------------------|----------|-----------|----------------|
| 1 | verify-auth | backend | 서버사이드 인증/인가 + 라우트 선언 순서 + AuditInterceptor __auditLogged dedup 불변성. Step 3 강화: PermissionsGuard DENY 기본값 — 모든 controller class 또는 method 에 @RequirePermissions/@SkipPermissions/@Public 1건 이상 필수 (silent miss 차단, 2026-05-13 saved-views 회귀). Step 18: entityIdPathArray: true → successIdsResponseKey 동반 필수 — 미제공 시 partial failure entity도 성공 action으로 기록되는 UL-QP-18 false-positive 차단 (2026-05-13 audit-per-item-opt-in-rollout) | apps/backend/src/**/*.controller.ts, */dto/**/*.dto.ts, common/interceptors/audit.interceptor.ts, common/filters/error.filter.ts |
| 2 | verify-zod | backend | Zod 검증 + ErrorCode SSOT + frontend mapper coverage + CAS DTO/서비스 검증 (Step 19, 2026-05-03 verify-cas 흡수). Step 24: sort-mapper default 회귀 spec 자동 등록 — 통합 11 도메인 describe.each + notifications/teams 별도 spec, mapper count == covered count 강제, PgDialect.sqlToQuery 패턴 (2026-05-09 three-low-tech-debt-closure r2) | */dto/**/*.dto.ts, common/pipes/*.ts, apps/frontend/lib/errors/*-errors.ts, apps/backend/src/common/__tests__/sort-mapper-defaults.spec.ts, apps/backend/src/modules/**/__tests__/*-sort-mapper.spec.ts |
| 3 | verify-ssot | both | SSOT import + 임계값/상수/Record satisfies 검증 (Phase 2.2 split → 4 references: permissions-roles / domain-status-literals / threshold-numbers / record-satisfies). Step 60: SystemHealthProvider 컨트랙트 우회 검출. Step 61: EquipmentTabFooterLink SSOT. Step 62: EQUIPMENT_STATUS_TONE exhaustive Record + TONE_TO_SEMANTIC 어댑터. Step 64: packages/schemas → shared-constants production import 0건 + SCHEMA_VALIDATION_RULES 단방향 wire. Step 65: drizzle-stub SSOT — backend spec fluent chain 로컬 정의 차단 (createDrizzleChain 4 export 경유, consumer ≥ 10 spec, // intentional: flat-tx 주석 예외 + buildDrizzleMock chain-expose 예외 문서화, 2026-05-13 drizzle-stub-spec-migration). Step 66: env-sync-guard SSOT — check-env-sync.mjs parseEnvFile/checkFrontendEnvSync 인라인 재구현 차단 + setup-env.mjs SSOT import 강제 + dev-doctor.mjs envSync 포함 (2026-05-13). Step 67: schemas enum Values 객체 — type XxxStatus import만 하고 XxxStatusValues value import 누락 차단 (2026-05-13) | apps/backend/src/**/*.ts, apps/frontend/**/*.ts(x), scripts/check-*.mjs, scripts/setup-env.mjs, scripts/dev-doctor.mjs, package.json, packages/schemas/src/**/*.ts, packages/shared-constants/src/validation-rules.ts, components/equipment/EquipmentTabFooterLink.tsx, components/ui/StatusBadge.tsx, apps/backend/src/common/__tests__/drizzle-stub.ts, apps/backend/src/modules/**/__tests__/*.spec.ts |
| 4 | verify-hardcoding | both | API 경로/queryKeys/매직넘버/PII/도메인 경로 하드코딩 탐지 + cache-invalidation SSOT. Step 38: useUndoToast invalidateKeys 팩토리 메서드 강제 — [detail(id), ...APPROVAL_KEYS] 인라인 spread 금지 (2026-05-13). Step 39: FRONTEND_ROUTES.HELP.TOPIC() SSOT 강제 — /help# 인라인 href 금지 (2026-05-13) | apps/frontend/lib/api/**, apps/backend/src/**/*.service.ts, apps/frontend/components/**, lib/brand-assets/**, lib/analytics/** |
| 5 | verify-frontend-state | frontend | TanStack Query + dynamic import + cache invalidation + CAS frontend (Step 39/40, 2026-05-03 verify-cas 흡수) (Phase 2.4 split → 3 references: tanstack-query-cas / dynamic-import-ssr / cache-invalidation). Step 41: toCsvParam SSOT — lib/api+lib/utils API 파라미터 조립 레이어 .join(',') 인라인 0건 + 단일 export 보장 (2026-05-08). Step 42: RejectModal mode='domain' 위임 패턴 — 인라인 반려 UI(showRejectInput) 금지 + try-catch handleRejectConfirm 패턴 (2026-05-09). Step 43: useEquipmentCalibrations dual-variant hook SSOT — calibrationApi.getEquipmentCalibrations/getCalibrationHistory 직접 호출 차단 + cache config compete 회귀 가드 (2026-05-09 phase-c-followup-closure r2). Step 46: useOptimisticMutation undoWindowMs 호출자는 fire-and-forget 강제 — await mutation.mutateAsync 차단 + dialog state owner는 mutate 직전 즉시 close (race-safe) (2026-05-12 checkouts-sprint4-followups-s1-s3-s8). Step 47: pre-upload orphan cleanup submittedRef+deleteOrphan 3-piece 패턴. Step 48: SSR-safe useReducedMotion — useEffect 외부 matchMedia 직접 접근 금지 (2026-05-12 qr-visual-redesign). Step 49: Context 안전 등급 — 보안 Context graceful no-op 금지(ADR-0013, 2026-05-13) | apps/frontend/components/**, apps/frontend/hooks/**, apps/frontend/lib/checkouts/**, apps/frontend/lib/api/query-csv.ts, apps/frontend/lib/utils/*-filter-utils.ts, lib/utils/checkout-return-context.ts, hooks/use-undoable-state.ts, components/approvals/RejectModal.tsx, hooks/use-equipment-calibrations.ts, components/checkouts/EquipmentConditionForm.tsx, components/checkouts/ReturnInspectionForm.tsx, components/mobile/AutoProgressCountdown.tsx, apps/frontend/lib/inspection/form-context.tsx, apps/frontend/lib/api/authenticated-client-provider.tsx |
| 6 | verify-nextjs | frontend | Next.js 16 패턴 (await params, useActionState, React 19 deprecated 이벤트 타입). Step 9: PPR-compatible layout — export default async function Layout FAIL (sync outer+Suspense+async inner 강제, 2026-05-13). Step 10: session.user.role typeof guard — session.user.role as 직접 캐스팅 금지 + extractValidRole(session) SSOT 헬퍼 경유 강제 (lib/auth/server-session.ts, 2026-05-13) | apps/frontend/app/**/page.tsx, layout.tsx, error.tsx, apps/frontend/components/**/*.tsx |
| 7 | verify-filters | frontend | URL-driven 필터 SSOT (filter-utils, hooks, page.tsx server parsing, PAGE_SIZE_OPTIONS) | *-filter-utils.ts, use-*-filters.ts, page.tsx |
| 8 | verify-design-tokens | frontend | Design Token 3-Layer + ARIA/WCAG + motion (Phase 2.1 split → 4 references). Step 53: design-token 파일 내 bg-brand-* text-white 직접 조합 → getSemanticSolidBgClasses() SSOT 경유 필수 (2026-05-09). Step 54: mono 헬퍼는 .text-mono/.text-mono-base utility 경유 — font-mono tabular-nums 인라인 합성 0건. Step 55: brand-color- oklch SSOT — hsl(var(--brand-color-)) wrapper 0 + alpha 합성은 color-mix(in oklch, ... NN%, transparent) (2026-05-13 qr-visual-redesign-followups-g4-g12-round3) | lib/design-tokens/**, apps/frontend/components/**, styles/globals.css, connection-banner.tsx |
| 9 | verify-security | both | Helmet CSP + Security Headers + scope ErrorCode 403 강제 + SECURITY_AUDITABLE_CODES SSOT + enforceXxxAccess spec 뮤테이션 커버리지(Step 16, 2026-05-03) + system_error_events PII deny-list(Step 17, 2026-05-06 system-health-data-source-ssot). Step 18: common/security/ 레이어 PII deny-list + fire-and-forget + Symbol DI 토큰 + @Optional inject 패턴 일반화 (2026-05-09 three-low-tech-debt-closure). Step 21: MetricsService 보안 Counter ↔ alert.rules.yml + runbook + baseline measurement 4종 세트 정합성 — 신규 보안 counter 추가 시 alert rule 누락 차단 (2026-05-09). Step 22: alert.rules.yml 전수 runbook 완전성 — total==runbook수==runbook_url수 + YAML 유효성 + anchor↔docs 정합 (신규 alert runbook 누락 영구 차단, 2026-05-13). Step 23: CSP body parser content-type 회귀 차단 — application/csp-report + reports+json type 배열 제거 시 TC-3 500 무음 회귀 차단 (2026-05-13). Step 15 강화: *ScopeForbidden|*ScopeOnly|*TeamScopeOnly|*Forbidden 패턴 ErrorCode 자동 등록 invariant — python regex 후보 추출 + SECURITY_AUDITABLE_CODES Set membership 양방향 교차 (2026-05-13 saved-views silent miss 회귀 차단) | helmet-config.ts, next.config.js, **/*.controller.ts, **/__tests__/*.controller.spec.ts, lib/config/api-config.server.ts, common/constants/security-auditable-codes.ts, common/filters/error.filter.ts, common/system-health/contract.ts, common/security/**/*.ts, apps/backend/src/common/metrics/metrics.service.ts, infra/monitoring/prometheus/alert.rules.yml, docs/operations/prometheus-alert-rules.md, apps/backend/src/main.ts |
| 10 | verify-i18n | frontend | i18n parity + ESLint shared-component domain ns rule + audit SSOT enum 동기화 + structural namespaces + ADR-0008 tErrors 3-param 주입 탐지(Step 21, 2026-05-09) + i18n-parity automation spec 존재 + SUPPORTED_LOCALES SSOT 경유(Step 22, 2026-05-12 shortcuts-context-multi-tab-i18n-parity) + spec 파일 inline type-only import babel-jest 호환(Step 23, 2026-05-12) | apps/frontend/messages/{en,ko}/*.json, lib/navigation/route-metadata.ts, packages/schemas/src/enums/audit.ts, scripts/check-i18n-call-sites.mjs, apps/frontend/eslint.config.mjs, apps/frontend/lib/errors/*-errors.ts, apps/frontend/lib/__tests__/i18n-parity.test.ts, apps/frontend/**/__tests__/*.test.ts(x) |
| 11 | verify-sql-safety | backend | SQL 안전성 (LIKE 이스케이프, N+1, COUNT(DISTINCT) fan-out, RBAC INNER JOIN) | apps/backend/src/modules/**/*.service.ts |
| 12 | verify-e2e | e2e | E2E 테스트 패턴 + 워크플로우 커버리지 (Step 28, 2026-05-03 verify-workflows 흡수) + bulk-action mock + EXT 분리 (Step 29, 2026-05-06 bulk-selection-tabs-integration sprint) (Phase 2.5 split → 2 references: auth-fixtures / locator-patterns + 기존 workflows-coverage 보존) | apps/frontend/tests/e2e/**, apps/backend/test/**, apps/backend/test/helpers/test-auth.ts, test-fixtures.ts |
| 13 | verify-seed-integrity | backend | 시드 인프라 3자 SSOT 삼각형 정합성 (seed-data ↔ seed-test-new ↔ verification.ts) | database/seed-data/**/*.seed.ts, seed-test-new.ts, verification.ts |
| 14 | verify-cache-events | backend | 이벤트 기반 캐시 무효화 SSOT (registry coverage, 리스너 async, emit/emitAsync 일관성, BFF 집계 무효화 체인 — Step 6). Step 9: CACHE_KEY_PREFIXES 인라인 concat 차단. Step 10: DOMAIN_EVENTS 채널 — { async: true } 리스너 + try/catch + 다중사용자 영향 캐시 → domain prefix 전체 flush (per-user selective 금지) + void emitAsync fire-and-forget emit (2026-05-13 G-5). Step 11: service-local cross-domain wholesale 차단 — audit script extractServiceLocalWholesaleViolations() 자동화 (modules/**/*.service.ts 자기 도메인 외 wholesale 0건). Step 12: helper-layer audit-cache-wholesale-allow: marker 강제 — audit script extractHelperWholesaleViolations() 자동화 (라운드 #5 R3, 2026-05-13) | cache-event.registry.ts, cache-event-listener.ts, cache-invalidation.helper.ts, cache-key-prefixes.ts, modules/*/*.service.ts, modules/*/listeners/*.listener.ts, scripts/audit-cache-event-channels.mjs, scripts/__tests__/audit-cache-event-channels.spec.mjs |
| 15 | verify-handover-qr | both | QR + Handover 통합 (2026-05-03 verify-qr-ssot + verify-handover-security 통합). Section A: QR URL/설정/액션 SSOT, Section B: 직접 스캔 인수인계 (confirm_handover 라우팅, PURPOSE_BY_STATUS mirror 금지, attachment fail-close 3-layer). 2026-05-09 토큰 메커니즘 제거. Step 16: QR_ACTION_GROUP/QR_ACTION_GROUP_ORDER SSOT 인라인 그룹 분기 금지. Step 17: HandoverItem Zod schema 다중 핸드오버 SSOT (packages/schemas/qr-handover.ts). Step 18: LABEL_SIZE_PRESETS.recommendedForKey i18n parity 7 preset (2026-05-12 qr-visual-redesign). Step 19: handoverCheckoutId deprecation 회귀 영구 차단 — 9 호출자 마이그레이션 후 backward-compat shim 0 + handoverCheckoutId/deprecatedHandoverCheckoutIdLogged/issueHandoverToken/handover_tokens 통합 grep (2026-05-13 qr-visual-redesign-followups-batch-1) | qr-url.ts, qr-config.ts, qr-access.ts, EquipmentActionSheet.tsx, qr-access.service.ts, checkouts.service.ts, packages/schemas/src/qr-handover.ts, HandoverPickerSheet.tsx |
| 16 | verify-checkout-fsm | both | Checkout FSM SSOT 아키텍처 (Dependency Inversion, assertFsmInvariants, scope→FSM→reason→time-window→domain 5단계 fail-close) (Phase 2.3 split → 3 references: fsm-core / scope-identity / nextstep-progress-ui). Step 53: StepperHeader CONDITION_CHECK_STEP_VALUES SSOT 소비 — 인라인 4-step 배열 금지 (2026-05-12 qr-visual-redesign) | packages/schemas/src/fsm/**, checkouts.service.ts, checkouts.controller.ts, checkout-api.ts, NextStepPanel.tsx, ProgressFlowSection.tsx, checkout-scope.util.ts, components/checkouts/StepperHeader.tsx |
| 17 | verify-routing-origin | both | Same-Origin Reverse-Proxy(ADR-0006) 정합 (api-routing.ts SSOT / next.config.js / nginx lan.conf+template / proxy.ts, env 절대 URL 잠입, BACKEND ∩ NEXTAUTH disjoint, SW NetworkOnly /api/* 룰). 2026-05-05 추가: csrf-invariants.json 무결성($schema/version/adrRef/4 키 + 양 스크립트 import — Step 12) + smoke/trace 2-script CLI 계약 일관성(--dry-run env-optional / live env-required — Step 13) + redaction SSOT(redactionPatterns JSON SSOT, raw token 0 — Step 14) | lib/api/api-routing.ts, next.config.js, infra/nginx/**, apps/frontend/proxy.ts, scripts/onprem-verify.mjs, scripts/diagnostics/** |
| 18 | verify-click-feedback | frontend | Click-Feedback 5-Layer (FEEDBACK_KEYS SSOT [가-힣], loading.tsx a11y, 409 retry ToastAction, motion-safe spinner, NavLink invisible overlay) | apps/frontend/app/**/loading.tsx, apps/frontend/hooks/**, apps/frontend/components/**, lib/i18n/feedback-keys.ts, messages/{ko,en}/feedback.json |
| 19 | verify-bulk-action-bar | frontend | BulkActionBar 패턴 SSOT (count chip aria-live, role=toolbar, indeterminate Radix, focus management, IME guard, 도메인 wrapper 신설 패턴 — Step 10, applyGroupToggle SSOT — Step 11; Step 3 Esc는 선택적 UX 강화로 정책 명시 — 2026-05-06 bulk-selection-tabs-integration sprint). Step 13: useRowSelection 이중 게이트 — hook-level isSelectable + UI-level isRowSelectable 동일 조건 강제 (2026-05-13) | apps/frontend/components/common/BulkActionBar.tsx, apps/frontend/components/approvals/BulkActionBar.tsx, apps/frontend/components/checkouts/CheckoutBulkActionBar.tsx, apps/frontend/lib/checkouts/group-selection.ts, BulkActionBar 사용 컴포넌트 |
Phase 1+2 분리/통합 이력 (2026-05-03):
- 통합 (-3 스킬): verify-cas → verify-zod Step 19 + verify-frontend-state Step 39·40 / verify-workflows → verify-e2e Step 28 / verify-qr-ssot + verify-handover-security → verify-handover-qr
- 분리 (5 mega-skill → +16 references): verify-design-tokens (4 refs) / verify-ssot (4 refs) / verify-checkout-fsm (3 refs) / verify-frontend-state (3 refs) / verify-e2e (2 refs)
관리 메모:
docs/operations/quality-audit-routes.json(Lighthouse/a11y 감사 대상 라우트 SSOT) — verify-e2e Step 27 + verify-hardcoding Step 34에서 검증- Backend controller/service pagination 기본값·최대 clamp는
DEFAULT_PAGE_SIZE/MAX_PAGE_SIZESSOT — verify-ssot Step 59에서 검증- commit pipeline tooling SSOT (verify-implementation #23~#26, 2026-05-06~07 commit-pipeline-safety + commit-pipeline-safety-should-followups sprint + 시니어 #2/#3/#4 라운드):
scripts/verify-lint-ruleset-parity.mjs— lintstaged ↔ lint config 3 도메인 (backend/frontend/packages) parity.PARITY_SPECSSOT,lintCiScriptName: null분기로 packages 우아하게 처리. pre-push_t "parity"step.scripts/precommit-staged-guard.mjs— multi-session 인덱스 흡수 race 차단 (GUARD_CONFIGSSOT, ADR-0007).commitlint.config.jsSCOPE_LIST↔ 3-way SSOT 정합 (filesystemapps/backend/src/modules/*+BACKEND_MODULE_SCOPES+CLAUDE.md ### Backend Modules (N)docs) 자동 동기화. CLAUDE.md docs cross-check는 markdown table parser 기반 (heading 카운트 +\| \<scope>` |row 추출).scripts/tests/commitlint-config.spec.mjs19 cases SSOT — pre-push_t "root-spec"step (node --test --test-concurrency=4`) 자동 실행.scripts/hook-timing.mjs— opt-in (EMS_HOOK_TIMING=1) hook 실행 시간 추적 wrapper. default no-op. Log rotation:TIMING_LOG_MAX_BYTES = 5MB초과 시.1단일 백업 rolling (atomic rename, race 안전). pre-commit/pre-push 모든 step_t <label> <cmd>통합. 회귀 spec:scripts/__tests__/hook-timing.spec.mjs9 cases (default no-op / exit code 전파 / TIMING JSON / LOG append / rotation 4).
자동화 스크립트 (ts-morph / 정적 분석 승격)
verify-* 스킬의 grep 기반 검사를 ts-morph 또는 Node TS 스크립트로 승격하여 pre-push hook에서 자동 실행 가능하도록 한다. grep 패턴은 false positive 위험이 있으나, AST/타입 기반 분석은 정확도와 성능 모두 우수.
| 스크립트 | 검증 대상 | 명령어 |
|---|---|---|
| apps/frontend/scripts/verify-design-tokens.ts | BRAND_COLORS_HEX ↔ BRAND_CLASS_MATRIX symmetric 키 동기화 + globals.css --color-brand-* @theme bridge + --brand-color-* runtime var 양측 정의 + bg-brand-${...} dynamic interpolation 탐지 + transition-all 금지 + theme-key drift (verify-design-tokens 일부 invariant 승격) | pnpm --filter frontend verify:design-tokens |
| apps/backend/scripts/verify-e2e-actor-alignment.ts | TestRole 4-place SSOT (CANONICAL_ROLE / TEST_USERS / TEST_USER_IDS / TEST_USER_DETAILS 동시 갱신) + fixture 권한 격리 + scope spec actor 정합 (verify-e2e Step 23/24/25 승격) | pnpm --filter backend verify:e2e-actors |
승격 정책: 자동화 스크립트가 추가되면 해당 verify-* SKILL.md에 "(자동화: 스크립트 X로 승격)" 표기 권장. 승격 후에도 grep step은 회귀 탐지용으로 유지 가능. pre-push 통합 권장:
.husky/pre-push또는 lint-staged에 추가하여 정적 invariant 강제.
워크플로우
Step 1: 세션 변경사항 분석
git diff/log로 변경 파일 수집, 디렉토리 기준 그룹화.
상세: references/workflow-details.md Step 1
Step 2: 등록된 스킬과 변경 파일 매핑
스킬 테이블의 패턴과 대조하여 파일→스킬 매핑 구축. UNCOVERED 파일 식별.
상세: references/workflow-details.md Step 2
Step 3: 영향받은 스킬의 커버리지 갭 분석
누락 파일 참조, 오래된 탐지 명령어, 새 패턴, 삭제된 파일, 변경된 값 점검.
상세: references/workflow-details.md Step 3
Step 4: CREATE vs UPDATE 결정
- 기존 스킬 도메인 관련 → UPDATE
- 3+ 관련 파일이 공통 규칙 공유 → CREATE
- 그 외 → 면제
AskUserQuestion으로 확인.
Step 5: 기존 스킬 업데이트
추가/수정만 (기존 검사 제거 금지). Related Files, 탐지 명령어, 워크플로우 단계 추가.
상세: references/workflow-details.md Step 5
Step 6: 새 스킬 생성
- 패턴 이해 → 2. 이름 확인 (
verify-접두사, kebab-case) → 3. SKILL.md 생성 → 4. 연관 파일 업데이트 (manage-skills, verify-implementation, CLAUDE.md)
상세: references/workflow-details.md Step 6
Step 7: 검증
SKILL.md 재읽기, 마크다운 형식, 파일 참조, 탐지 명령어 드라이런, 테이블 동기화.
Step 8: 자동화 스크립트 승격 검토 (Phase 3 패턴)
새 verify-* 스킬 생성 또는 기존 grep 검사가 false positive로 잡힐 때, ts-morph 스크립트로 승격 가능 여부 평가:
- AST 또는 type-check로 invariant 표현 가능?
- pre-push hook에서 < 5초 실행 가능?
- 승격 시 verify-* SKILL.md에 "(자동화: 스크립트 X로 승격)" 표기
승격 사례 (참조):
- verify-design-tokens 일부 invariant →
apps/frontend/scripts/verify-design-tokens.ts(Phase 3, 2026-05-03) - verify-e2e Step 23/24/25 →
apps/backend/scripts/verify-e2e-actor-alignment.ts(2026-05-01)
Step 9: 요약 보고서
분석 파일 수, 업데이트/생성 스킬, 영향없는 스킬, 미커버 변경사항, 자동화 승격 후보 출력.
Related Files
| File | Purpose |
|------|---------|
| .claude/skills/verify-implementation/SKILL.md | 통합 검증 스킬 (실행 대상 목록 관리) |
| .claude/skills/manage-skills/SKILL.md | 이 파일 (등록된 검증 스킬 목록 관리) |
| CLAUDE.md | 프로젝트 지침 (Skills 섹션 관리) |
| docs/references/skills-index.md | 스킬 인덱스 (한줄 요약 + 스코프) |
| apps/frontend/scripts/verify-design-tokens.ts | ts-morph 승격 자동화 스크립트 (Phase 3, 2026-05-03) |
| apps/backend/scripts/verify-e2e-actor-alignment.ts | ts-morph 승격 자동화 스크립트 (verify:e2e-actors) |
예외사항
- Lock 파일 및 생성된 파일 — 스킬 커버리지 불필요
- 일회성 설정 변경 — 버전 범프 등 새 스킬 불필요
- 문서 파일 — 코드 패턴이 아님
- 테스트 픽스처 파일 — 프로덕션 코드 아님
- 영향받지 않은 스킬 — 검토 불필요
- CLAUDE.md 자체 — 문서 업데이트
- 벤더/서드파티 코드 — 외부 규칙
- CI/CD 설정 — 인프라, 검증 스킬 불필요
Expert Next.js App Router
Developpement
Un skill qui transforme Claude en expert Next.js App Router.
Générateur de README
Developpement
Crée des README.md professionnels et complets pour vos projets.
Rédacteur de Documentation API
Developpement
Génère de la documentation API complète au format OpenAPI/Swagger.