Community코딩 & 개발github.com

Awenforever/winmedic-skill

Windows PC 진단, 정리, 마이그레이션, 복구. 디스크 공간, 부팅 및 성능, 애플리케이션 수명 주기, 업데이트 및 드라이버, 네트워크, 보안 상태, 복구 진단을 포함합니다. 읽기 전용 우선, 파괴적 작업은 격리 영역에서 수행하며 롤백을 지원하며, 각 권장 사항에는 증거가 첨부됩니다.

winmedic-skill란 무엇인가요?

WinMedic은 AI 에이전트(예: Claude Code, Cursor)를 위한 강력한 Windows PC 유지 관리 스킬입니다. 이 스킬은 호스트 에이전트를 추론 계층으로, 로컬 PowerShell 및 내장 엔진을 실행 계층으로 활용하여 Windows 시스템을 진단, 정리, 마이그레이션 및 복구합니다. 주요 기능으로는 디스크 공간 분석, 부팅 및 성능 최적화, 애플리케이션 수명 주기 관리, 업데이트/드라이버 문제 해결, 네트워크 진단, 보안 상태 평가, 파일 복구 등이 포함됩니다. WinMedic의 핵심 원칙은 '읽기 전용 우선'입니다. 먼저 증거 기반의 진단을 수행하고, 최소한의 수정 사항을 제안한 후 사용자 확인을 거쳐 실행하며, 모든 파괴적 작업은 격리 영역에서 수행하고 롤백을 지원합니다. 이 스킬은 `winmedic.ps1 doctor`, `winmedic.ps1 probe`, `winmedic.ps1 plan`, `winmedic.ps1 apply`, `winmedic.ps1 verify` 등의 명령어를 통해 작동하며, 작업 계층(Tier 1-4)을 통해 위험을 관리합니다. 특히 'C 드라이브 꽉 참', '컴퓨터 느림', '앱 마이그레이션', '드라이버 실패', '네트워크 문제' 등 다양한 Windows 관련 문제를 안전하고 체계적으로 해결할 수 있도록 설계되었습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add Awenforever/winmedic-skill

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서


name: winmedic description: Windows PC 진단, 정리, 마이그레이션, 복구. 디스크 공간, 부팅 및 성능, 애플리케이션 수명 주기, 업데이트 및 드라이버, 네트워크, 보안 상태, 복구 진단을 포함합니다. 읽기 전용 우선, 파괴적 작업은 격리 영역에서 수행하며 롤백을 지원하며, 각 권장 사항에는 증거가 첨부됩니다. whenToUse: 사용자가 C 드라이브가 꽉 찼다/빨갛다, 컴퓨터가 느리다, 부팅이 느리다, 소프트웨어가 제대로 제거되지 않는다, 위챗이나 애플리케이션을 D 드라이브로 옮기고 싶다, 큰 디렉토리 정리가 필요하다, 업데이트 실패, 드라이버 이상, 인터넷 끊김, 블루 스크린, 파일 실수로 삭제, 새 PC 검수 등 '로컬 Windows를 검사하거나 변경해야 하는' 요청. 마이그레이션 관련: 캐시를 D 드라이브로 옮기기, C 드라이브에 공간 부족, 새 소프트웨어 설치할 드라이브, 위챗 파일 너무 큼, 임시 저장소. 영문 키워드: remote PC troubleshooting, driver update failed, why is my disk filling up, disk growing, move cache to another drive, which drive to install, disk full, low disk space, slow boot, startup bloat, uninstall leftovers, migrate app or data to another drive, Windows Update failure, driver or device problem, no internet, proxy/VPN issue, printer offline, backup check, recover deleted files, new PC intake. version: 1.16.0

WinMedic

목표

호스트 에이전트를 추론 계층으로, 로컬 PowerShell 및 내장 엔진을 실행 계층으로 활용합니다. 먼저 증거로 원인을 찾고, 최소한의 수정을 제안하며, 확인 후 실행 및 검증합니다.

이 스킬은 독립 모델을 시작하지 않으며, 네트워크에 연결하지 않고, 원격 분석을 수집하지 않으며, 항상 호스트의 권한 및 승인 메커니즘을 따릅니다.

실행 전 확인

  1. 플랫폼이 Windows이고, 셸이 PowerShell이며, 현재 관리자 권한인지 확인합니다. 사용자 설명만으로 추론하지 마십시오.
  2. 작업 범위가 로컬 시스템인지 확인합니다. 사용자가 보존 항목(위챗 건드리지 않음, D 드라이브 삭제 금지)을 제공하면 이를 제약 조건으로 기록하고 전체 과정에서 준수합니다.
  3. engine\winmedic.ps1 doctor를 한 번 실행하여 권한/PS 버전/WizTree 사용 가능 여부를 확인합니다.
  4. 호스트가 로컬 실행 기능이 없는 경우(채팅만 가능), '수동 단계 + 검증 포인트' 모드로 출력하고 실행을 가장하지 않습니다.

필수 워크플로우

1. 목표 명확히 하기

  • 증상, 기대 상태, 변경 불가능한 제약 조건으로 분해합니다.
  • 여러 목표가 있으면 각각 유지하며, 삭제로 마이그레이션을 대체하거나 재설치로 복구를 대체하지 마십시오.
  • 모호성이 경로를 크게 변경하는 경우에만 질문합니다.

2. 플레이북 라우팅

  • playbook-index.md를 읽고 증상에 따라 가장 구체적인 플레이북을 선택합니다.
  • 필요한 하나의 playbooks/*.md만 로드하고, 전부 읽지 마십시오.
  • 여러 독립적인 문제가 있는 경우, '영향도 × 종속성 순서'에 따라 하나씩 처리합니다.

3. 읽기 전용 진단

winmedic.ps1 probe --set <domain>        # 결과: state\findings.json
  • 프로브는 읽기 전용입니다. 어떤 단계에서든 쓰기 작업이 발생하면 버그이므로 즉시 중단하고 보고해야 합니다.
  • 수집할 수 없는 항목은 '가져올 수 없음'으로 표시하고 추측하지 마십시오.

4. 계획 생성

winmedic.ps1 plan --from state\findings.json

plan.json + plan.md + planHash를 출력합니다. plan.md 원문을 사용자에게 제시하고, 모호한 설명으로 다시 말하지 마십시오.

plan.md는 이제 두 부분을 포함합니다:

  1. 권장 사항 (우선순위별) — 도메인 간 처리 권장 사항. high가 우선 처리됩니다(재시작 필요, 복원 지점 없음, 보안 위험, 디스크 부족).
    • 처리 열에 실행 가능: <action>이 있으면 winmedic.ps1 apply --action <action> --yes를 직접 실행할 수 있습니다.
    • 수동: <playbook>이 있으면 해당 플레이북의 지침을 하나씩 따르고, 단계를 직접 발명하지 마십시오.
  2. 세부 사항 — 엔진이 실행할 수 있는 정리 항목(id별 실행)

권장 사항 섹션의 출처는 결정적 규칙(모델 추측이 아님)이며, 증거는 playbook 또는 catalog 증거 항목을 가리킵니다.

5. 확인

  • 작업, 영향량, 위험 수준, 롤백 가능 여부를 항목별로 나열합니다.
  • 사용자가 승인한 id만 실행합니다. 사용자가 '다 괜찮아'라고 말하면 기본적으로 Tier 1 + Tier 2만 수행합니다.
  • Tier 3은 항목별로 확인해야 하며, Tier 4는 절대 실행하지 않습니다.

6. 실행

winmedic.ps1 apply --plan state\plan.json --ids R1,R3 --yes
  • 기본적으로 격리 영역(soft delete)으로 이동하고, --purge를 함부로 추가하지 마십시오.
  • 부분 실패(종료 코드 7) 시, 저널을 먼저 확인한 후 계속할지 결정합니다.

7. 검증

winmedic.ps1 verify --journal <id>
  • 사용 가능한 공간, 서비스 상태, 대상 항목이 사라졌는지 확인합니다.
  • pendingReboot = true이면 사용자에게 '재시작 후에 완전히 적용됩니다'라고 명확히 알리고, 성공을 거짓으로 보고하지 마십시오.

8. 보고

고정된 다섯 섹션: 현재 상태 → 발견된 사항 → 수행한 작업 → 검증 결과 → 수행하지 않은 작업(및 이유).

작업 등급

Tier의미실행 요구 사항
1위험 제로, 삭제해도 시스템 실행됨확인만 필요
2캐시, 재구성됨재구성 비용 설명
3판단 필요, 기능에 영향을 줄 수 있음항목별 확인 + 증거 제시
4금지선실행 거부, 이유 설명 및 수동 경로 제공

한 화면 건강 검진 및 비교

winmedic.ps1 probe --set intake        # 도메인 간 읽기 전용 수집 (약 60-90초)
winmedic.ps1 summary                   # 9개 도메인 한 화면 요약, OK/WARN/BAD 포함
winmedic.ps1 diff --from a.json --to b.json   # 두 수집 결과 비교

summary에서 수집되지 않은 도메인은 [?] 수집되지 않음으로 표시되며, 이를 바탕으로 결론을 내리지 말고, 먼저 수집을 완료하십시오.

요약 끝에는 '권장 사항'(우선순위별)이 직접 나열되며, 이는 plan의 권장 사항 섹션과 동일한 출처입니다. 기계가 읽을 수 있도록 하려면 --json을 추가하고 리디렉션하십시오:

winmedic.ps1 summary --json > status.json

특정 소프트웨어 (소프트웨어 워크로드 도메인)

사용자가 특정 소프트웨어(LaTeX, PyCharm, Steam, Zotero, Word, 프록시 도구 등)를 언급하면 먼저 다음을 실행합니다:

winmedic.ps1 probe --set workloads

이는 catalog/workloads.json의 시그니처 테이블을 사용하여 각 소프트웨어의 캐시 및 데이터 볼륨을 측정하고 프록시 체인 일관성을 확인합니다.

주요 구분:

  • kind=cache (셰이더 캐시, IDE 인덱스, texmf-var, OfficeFileCache) → 정리 가능, 재구성 비용 있음
  • kind=data (게임 본체, Zotero 첨부 파일, 위챗 채팅 기록, texmf-dist) → 절대 삭제하지 않음, 마이그레이션만 가능
  • kind=review (텐센트 비디오 다운로드, 혼합 디렉토리) → 먼저 확인 필요, 사용자가 직접 다운로드한 내용이 포함될 수 있음
  • probe.proxy-chain은 system/WinHTTP/git/npm/pip의 5개 계층 프록시 값을 나열하며, consistent=false는 충돌을 의미합니다.

새 소프트웨어를 추가하기 위해 코드를 수정할 필요가 없습니다: catalog/workloads.json에 시그니처(detect + measure + playbook)를 추가하기만 하면 됩니다.

마이그레이션 결정 (사용자가 '캐시/소프트웨어를 다른 드라이브로 옮기기', 'C 드라이브에 새 소프트웨어를 설치할 공간이 없음'이라고 말할 때)

이는 판단 문제이지, 조회 문제가 아닙니다. 엔진은 사실만 제공하고, 계획은 여러분이 결정하지만, 체크리스트를 반드시 완료해야 합니다.

winmedic.ps1 relocate            # 디스크 개요 + 결정 체크리스트 + 사실 테이블 + 기본 권장 사항
winmedic.ps1 relocate --json     # 위와 동일, 구조화됨

출력은 세 부분으로 나뉘며, 의미가 다릅니다. 혼동하지 마십시오:

부분의미사용법
결정 체크리스트반드시 답변해야 하는 세 가지 질문답변에 각각 결론을 명시해야 하며, 건너뛰지 마십시오
사실경로/볼륨/미디어/존재 여부/알려진 폴더/소프트웨어 선언 경로결정 근거
기본 권장 사항엔진의 기본 관점(policySource=default-hint로 표시)참고용이며, 여러분의 판단으로 무효화될 수 있습니다. 결론으로 직접 전달하지 마십시오.

세 가지 체크리스트 질문 (답변 시 명시적으로 다루어야 함)

  1. 알려진 폴더 아래에 있습니까? 예 → 해당 폴더를 한 번에 이동하고, 개별 소프트웨어에 경로를 설정하지 마십시오. 단, 먼저 아래 3번을 판단하십시오.
  2. 핫 데이터인가요, 콜드 데이터인가요? 핫(실시간 렌더링 캐시, IDE 인덱스, 스트리밍 캐시) → 가장 빠른 드라이브에 유지; 콜드(게임/가상 머신/도서관/채팅 기록) → 용량 드라이브로 이동 고려
  3. 소프트웨어가 이미 절대 경로를 기록했습니까(먼저 설치한 후 이동)? 예 → 이동 후 소프트웨어 설정을 동기화해야 하며, 그렇지 않으면 이전 경로를 가리킵니다.

여러분(DSH)이 반드시 해야 할 일

  • 먼저 사실 테이블의 미디어를 확인하십시오: 핫 데이터를 HDD로 이동하는 것은 잘못된 것입니다. HDD가 더 크더라도.
  • 먼저 소프트웨어 선언 경로를 확인하십시오: 이는 '먼저 설치 후 이동'의 확실한 증거입니다.
  • 계획은 '무엇을 할 것인가 → 이유 → 위험 → 검증 방법' 형식으로 작성하고, 사용자가 확인한 후에만 실행해야 합니다.
  • 엔진이 마이그레이션을 대신하지 않습니다. 여러분의 임무는 이유가 있는 계획을 제시하는 것입니다.

자세한 내용은 playbook apps-relocate-cache(PB-913)를 참조하십시오.

경과 (무엇이 증가하는지, 무엇이 가장 큰지뿐만 아니라)

winmedic.ps1 trend --record      # 스냅샷 기록 (하루 1회 권장)
winmedic.ps1 trend --days 14     # 변화 및 속도 확인

판독 규칙:

  • confidence=insufficient(샘플 <2개) → 결론 내리지 마십시오, 먼저 기록하십시오.
  • confidence=low(간격 <0.5일) → 변화량만 확인하고, 일일 속도는 없습니다.
  • confidence=ok → '하루에 X GB 증가'라고 말할 수 있습니다.

용도: C 드라이브가 가득 찼을 때 먼저 추세를 확인한 다음, 캐시를 지울지 특정 소프트웨어가 로그를 과도하게 쓰고 있는지 확인할지 결정합니다.

감별 진단 (C 드라이브 꽉 참 / 네트워크 이상과 같은 '원인을 찾아야 하는' 시나리오)

winmedic.ps1 diagnose --list
winmedic.ps1 diagnose --case dx.cdisk-full

출력은 사실 테이블(가설 × 지표 × 현재 값 × 판독 신호 × 데이터 출처)이며, 결론이 없습니다.

반드시 해야 할 일: 각 항목을 판단하고, 어떤 가설이 배제되었는지, 어떤 가설이 지지되는지 설명한 다음 계획을 제시하십시오. source에 trend가 포함된 것은 변화량을 나타냅니다. low로 표시된 것은 속도를 추론할 수 없습니다. insufficient로 표시된 것은 값이 없습니다.

외부 도구가 필요한 경우 먼저 도구 목록을 확인하십시오: winmedic.ps1 tools(감지만 수행, Tier ≥3 자동 실행 안 함).

사례 라이브러리 (경험 축적)

cases/ 아래에는 7단계 사례가 있습니다: 증상 / 환경 / 수집 / 가설 및 배제 / 처리 / 결과 / 교훈.

  • 동일한 문제를 발견하면 먼저 사례를 확인하여 한 라운드의 조사를 생략할 수 있습니다.
  • 새로운 문제를 해결한 후에는 cases/_template.md에 따라 하나를 작성하십시오. 그렇지 않으면 다음 번에 처음부터 다시 시작해야 합니다.
  • pending으로 표시된 것은 아직 현장 증거가 없는 확인 대기 항목이며, 결론으로 인용해서는 안 됩니다.

증거 조회

어떤 작업을 실행하기 전에 사용자가 '왜?', '근거는 무엇인가?'라고 묻으면 직접 조회합니다:

winmedic.ps1 explain --action storage.winsxs-cleanup

출력에는 다음이 포함됩니다: 수준, 롤백 가능성, 명령어, 주의 사항, 증거 원문 및 공식 링크, 확인 날짜, 검증 규칙.

위험 게이트

apply는 복구 기능(복원 지점/볼륨 섀도 복사본)을 확인합니다:

  • 대상에 Tier 3(롤백 불가능)이 포함되어 있고 복구 기능이 ready가 아닌 경우 → 실행 거부, 반환 코드 4
  • 이 경우 올바른 방법: 먼저 apply --action recovery.create-restore-point --yes로 복원 지점을 만들거나, 사용자가 명시적으로 --accept-risk를 추가하도록 합니다.
  • 작업을 진행하기 위해 --accept-risk를 임의로 추가하지 마십시오.

사용자 보존 항목 (강력한 제약 조건)

사용자가 '위챗 건드리지 마세요', 'D 드라이브 건드리지 마세요'라고 말하면 즉시 보존 항목으로 고정하고, 머리에만 기억하지 마십시오:

winmedic.ps1 profile --exclude "C:\Users\<user>\Documents\WeChat Files"
winmedic.ps1 profile --exclude "D:\*"
winmedic.ps1 profile                       # 현재 보존 항목 확인
winmedic.ps1 profile --exclude "..." --remove  # 제거

보존 항목은 이중 차단입니다: plan 단계에서 제외되고, apply 단계에서 다시 거부하고 기록합니다.

중단해야 하는 경우

  • 대상이 Windows\WinSxS 내 파일, Windows\Installer, System32, WindowsApps인 경우
  • 대상이 채팅 기록 디렉토리(WeChat Files / xwechat_files) 또는 사용자가 선언한 보존 항목인 경우
  • 시스템 복원 지점이 1-2개만 남았을 때 복원 지점 삭제를 요구하는 경우
  • 제출량이 제한에 가까울 때 페이지 파일 축소를 요구하는 경우
  • 사용자가 '모두 삭제', '위험 신경 쓰지 마세요'를 요구하는 경우 — 먼저 설명하고, Tier 1/2만 수행합니다.

엔진 호출 규칙

호스트가 MCP를 통해서만 도구에 접근할 수 있는 경우 engine\mcp\winmedic-mcp.ps1을 사용하십시오(docs/MCP.md 참조). 도구 매개변수는 아래 명령어와 일대일로 대응되며, 도구 작성 시 yes=true가 필요합니다. 나머지 규칙은 완전히 동일합니다.

  • 모든 하위 명령어는 --json을 지원하며, --json이 없으면 사람이 읽을 수 있는 요약을 출력합니다.
  • 종료 코드: 0 성공 / 2 사용법 / 3 권한 / 4 사전 조건 실패 / 5 plan 무효 / 6 금지선 / 7 부분 실패.
  • 엔진을 우회하여 직접 삭제 명령어를 내리지 마십시오. 엔진의 가치는 해시 바인딩, 격리 영역 및 감사 로그에 있습니다.

보고서 생성

winmedic.ps1 report --journal <runId>        # 5단계 전달 보고서
winmedic.ps1 report --set storage --out report.md

보고서는 고정된 다섯 섹션으로 구성됩니다: 현재 상태 → 발견된 사항 → 수행한 작업 → 검증 결과 → 수행하지 않은 작업(및 이유). 데이터가 없으면 '수집되지 않음'으로 정직하게 작성하고, 지어내지 마십시오.

보고서 템플릿

## 현재 상태
C: 98.7 GB, 사용 가능 16.7 GB (83%)

## 발견된 사항
| 항목 | 크기 | 수준 | 근거 |
| 휴지통 | 7.03 GB | 1 | 영향 없음 |
| hiberfil.sys | 6.32 GB | 1 | Microsoft 문서: powercfg /h off |

## 수행한 작업
R1 휴지통 비우기: 7.03 GB -> 0
R2 최대 절전 모드 끄기: 6.32 GB 확보

## 검증 결과
C: 사용 가능 16.7 -> 30.1 GB; 대기 모드 S0 정상; pendingReboot 없음

## 수행하지 않은 작업
SoftwareDistribution(사용자 건너뛰기 요청), Windows\Installer(고위험, 전용 도구 권장)

관련 스킬