name: winmedic description: Reparación de computadoras Windows: diagnóstico, limpieza, migración, reparación. Cubre espacio en disco, arranque y rendimiento, ciclo de vida de aplicaciones, actualizaciones y controladores, red, postura de seguridad, y triaje de recuperación. Prioriza solo-lectura, las acciones destructivas pasan por una zona de cuarentena y son reversibles, cada recomendación incluye evidencia. whenToUse: El usuario menciona que C: está lleno/rojo, la computadora está lenta, el arranque es lento, el software no se desinstala correctamente, quiere mover WeChat u otras aplicaciones a D:, administrar directorios grandes, fallos de actualización, controladores defectuosos, sin internet, pantalla azul, archivos borrados por error, revisión de equipo nuevo, o cualquier solicitud de "revisar o modificar este Windows". Migraciones: mover caché a D:, C: no tiene espacio, en qué unidad instalar, archivos de WeChat demasiado grandes, disco temporal. Palabras clave en inglés: 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
Objetivo
Convertir al agente anfitrión en la capa de razonamiento y al PowerShell local y al motor integrado en la capa de ejecución. Primero usa evidencia para localizar la causa, luego propón la reparación mínima, tras confirmación ejecuta y verifica.
Este Skill no inicia modelos independientes, no se conecta a internet, ni recopila telemetría; siempre obedece los permisos y mecanismos de aprobación del anfitrión.
Verificaciones previas a la ejecución
- Confirma que la plataforma es Windows, el Shell es PowerShell, y si se ejecuta como administrador. No deduzcas de la descripción del usuario.
- Confirma que el ámbito es la máquina local. Si el usuario da exclusiones (no tocar WeChat, no borrar D:), conviértelas en restricciones escritas y respétalas durante todo el proceso.
- Ejecuta
engine\winmedic.ps1 doctoruna vez para obtener permisos/versión de PS/disponibilidad de WizTree. - Si el anfitrión no tiene capacidad de ejecución local (solo chat), cambia al modo "pasos manuales + puntos de verificación" y no finjas ejecutar.
Flujo de trabajo forzoso
1. Definir objetivo
- Divide en: síntoma, estado deseado, restricciones inmutables.
- Mantén múltiples objetivos por separado; no reemplaces migración con eliminación ni reparación con reinstalación.
- Solo pregunta si la ambigüedad cambia significativamente el camino.
2. Enrutar Playbook
- Lee playbook-index.md y selecciona el más específico para los síntomas.
- Carga solo el que necesites
playbooks/*.md, no leas todos a la vez. - Con múltiples problemas independientes, procesa uno por uno según "impacto × orden de dependencia".
3. Diagnóstico de solo lectura
winmedic.ps1 probe --set <domain> # Produce state\findings.json
- La sonda es de solo lectura. Cualquier operación de escritura en este paso es un bug; detente inmediatamente e informa.
- Los elementos que no se puedan recopilar márcalos explícitamente como "No se puede obtener" y no adivines.
4. Generar plan
winmedic.ps1 plan --from state\findings.json
Produce plan.json + plan.md + planHash. Presenta el contenido de plan.md textualmente al usuario, no lo reformules en una descripción vaga.
plan.md ahora contiene dos secciones:
- Recomendaciones (por prioridad) — Recomendaciones de acciones entre dominios,
highprimero (pendiente de reinicio, sin punto de restauración, riesgo de seguridad, disco crítico)- Las acciones marcadas como
Ejecutable: <action>se pueden ejecutar directamente conwinmedic.ps1 apply --action <action> --yes - Las acciones marcadas como
Manual: <playbook>se procesan paso a paso según ese playbook, no inventes tus propios pasos
- Las acciones marcadas como
- Detalle — Elementos de limpieza ejecutables por el motor (se ejecutan por id)
La fuente de las recomendaciones son reglas deterministas (no conjeturas del modelo), y la evidencia apunta a playbooks o entradas de evidencia en el catálogo.
5. Confirmación
- Enumera cada elemento: acción, impacto, nivel de riesgo, capacidad de reversión.
- Solo ejecuta los ids que el usuario haya aprobado. Si el usuario dice "lo que sea", por defecto solo haz Tier 1 + Tier 2.
- Tier 3 debe confirmarse elemento por elemento; Tier 4 nunca se ejecuta.
6. Ejecución
winmedic.ps1 apply --plan state\plan.json --ids R1,R3 --yes
- Por defecto entra en cuarentena (soft delete); no añadas
--purgea la ligera. - Si hay fallo parcial (código de salida 7), revisa el journal primero antes de decidir si continuar.
7. Verificación
winmedic.ps1 verify --journal <id>
- Verifica espacio disponible, estado del servicio, si el objetivo ha desaparecido.
- Si
pendingReboot = true, informa claramente al usuario "esto surtirá efecto completo tras reiniciar", no finjas éxito.
8. Informe
Cinco secciones fijas: Estado actual → Lo que se encontró → Lo que se hizo → Resultado de verificación → Lo que no se hizo (y por qué).
Clasificación de acciones
| Tier | Significado | Requisito de ejecución |
|---|---|---|
| 1 | Riesgo cero, el sistema sigue funcionando sin ello | Solo confirmación |
| 2 | Caché, se reconstruirá | Explicar costo de reconstrucción |
| 3 | Requiere juicio, puede afectar funcionalidad | Confirmación elemento por elemento + mostrar evidencia |
| 4 | Línea roja | Rechazar ejecución, explicar motivo y dar ruta manual |
Resumen de un vistazo y comparación
winmedic.ps1 probe --set intake # Recopilación de solo lectura entre dominios (aprox. 60-90 segundos)
winmedic.ps1 summary # Resumen de un vistazo de nueve dominios, con OK/WARN/BAD
winmedic.ps1 diff --from a.json --to b.json # Comparación de dos recopilaciones
Los dominios no recopilados en el resumen aparecen como [?] No recopilado, no saques conclusiones basadas en esto, primero completa la recopilación.
Al final del resumen se listan directamente las "Recomendaciones" (por prioridad), que tienen el mismo origen que la sección de recomendaciones en el plan. Para que sea legible por máquina, añade --json y redirige:
winmedic.ps1 summary --json > status.json
Software específico (Dominio de cargas de trabajo)
Cuando el usuario menciona un software específico (LaTeX, PyCharm, Steam, Zotero, Word, herramienta proxy...) ejecuta primero:
winmedic.ps1 probe --set workloads
Esto mide el volumen de caché y datos de cada software según la tabla de firmas en catalog/workloads.json, y verifica la consistencia de la cadena de proxy.
Distinción clave:
kind=cache(caché de sombreadores, índices de IDE, texmf-var, OfficeFileCache) → Limpiable, el costo es la reconstrucciónkind=data(juego en sí, archivos adjuntos de Zotero, historial de chat de WeChat, texmf-dist) → Nunca se elimina, solo migrablekind=review(descargas de Tencent Video, directorios mixtos) → Debe confirmarse primero, puede contener contenido descargado activamente por el usuarioprobe.proxy-chainlista los valores de proxy en las cinco capas: system/WinHTTP/git/npm/pip;consistent=falseindica conflicto
Añadir nuevo software no requiere cambiar el código: solo añade una firma (detect + measure + playbook) en catalog/workloads.json.
Decisiones de migración (cuando el usuario dice "mover la caché/software a otro disco" "C: no tiene espacio para nuevo software")
Esto es una cuestión de juicio, no de buscar en una tabla. El motor solo da hechos; la solución la decides tú, pero debes completar la lista.
winmedic.ps1 relocate # Resumen de discos + lista de decisión + tabla de hechos + recomendación predeterminada
winmedic.ps1 relocate --json # Igual, estructurado
La salida tiene tres secciones con significados diferentes, no las mezcles:
| Sección | Significado | Uso |
|---|---|---|
| Lista de decisión | Tres preguntas que deben responderse | Debes dar una conclusión para cada una en tu respuesta, no las omitas |
| Hechos | Ruta/volumen/medio/existe/carpeta conocida/ruta declarada por software | Base para la decisión |
| Recomendación predeterminada | Perspectiva predeterminada del motor (marcada policySource=default-hint) | Solo referencia, puede ser anulada por tu juicio; no la transmitas como conclusión |
Tres preguntas de la lista (debes cubrirlas explícitamente en tu respuesta)
- ¿Está bajo una carpeta conocida? Sí → Mueve esa carpeta una vez, no establezcas rutas para software individual; pero primero evalúa la pregunta 3
- ¿Datos calientes o fríos? Calientes (caché de renderizado en tiempo real, índices de IDE, caché de streaming) → Quédate en el disco más rápido; Fríos (juegos/VMs/biblioteca de libros/historial de chat) → Considera mover a un disco de capacidad
- ¿El software ya ha registrado la ruta absoluta (instalar primero, luego mover)? Sí → Después de mover, debes sincronizar la configuración del software, de lo contrario apuntará a la ruta antigua
Lo que tú (DSH) debes hacer
- Primero mira el
medioen la tabla de hechos: mover datos calientes a un HDD es incorrecto, incluso si es más grande - Primero mira la
ruta declarada por software: es la evidencia dura de "instalar primero, luego mover" - La solución debe escribirse como "qué hacer → por qué → riesgo → método de verificación", y pedir confirmación al usuario antes de ejecutar
- El motor no migra por ti; tu trabajo es dar una solución con razón
Consulta el playbook apps-relocate-cache (PB-913).
Tendencias (qué está creciendo, no solo qué es más grande)
winmedic.ps1 trend --record # Registra una instantánea (recomendado una vez al día)
winmedic.ps1 trend --days 14 # Observa cambios y tasas
Reglas de interpretación:
confidence=insufficient(<2 muestras) → No saques conclusiones, primero registraconfidence=low(intervalo <0.5 días) → Solo mira el cambio, sin tasa diariaconfidence=ok→ Solo entonces se puede decir "crece X GB por día"
Uso: Cuando C: está lleno, primero mira la tendencia, luego decide si limpiar caché o buscar qué software está escribiendo logs descontroladamente.
Diagnóstico diferencial (escenarios como "C: lleno" o "red anómala" que requieren buscar la causa raíz)
winmedic.ps1 diagnose --list
winmedic.ps1 diagnose --case dx.cdisk-full
La salida es una tabla de hechos (hipótesis × métrica × valor actual × señal de interpretación × fuente de datos), sin conclusión.
Debes: evaluar cada elemento, explicar qué hipótesis se descartan y cuáles se apoyan, y luego dar la solución.
La source que contiene trend son cambios; los marcados low no pueden calcular tasa; los marcados insufficient no tienen valor.
Si se necesita una herramienta externa, primero consulta la mesa de herramientas: winmedic.ps1 tools (solo detecta, no ejecuta automáticamente Tier≥3).
Biblioteca de casos (experiencia acumulada)
En cases/ hay casos de siete secciones: Síntoma / Entorno / Recopilación / Hipótesis y descartes / Acción / Resultado / Lección.
- Ante un problema similar, primero consulta los casos; puede ahorrar una ronda completa de diagnóstico.
- Después de resolver un problema nuevo, escribe un caso según
cases/_template.md, de lo contrario tendrás que empezar de nuevo la próxima vez. - Los marcados como
pendingson elementos sin evidencia de campo aún que están pendientes de investigación, no deben citarse como conclusión.
Consulta de evidencia
Antes de ejecutar cualquier acción, si el usuario pregunta "por qué" o "cuál es la base", consulta directamente:
winmedic.ps1 explain --action storage.winsxs-cleanup
La salida incluye: nivel, reversibilidad, comando, notas, evidencia original y enlace oficial, fecha de verificación, regla de validación.
Puerta de riesgo
apply verifica la capacidad de recuperación (punto de restauración/copia de seguridad de volumen):
- Si el destino incluye Tier 3 (no reversible) y la capacidad de recuperación no está lista → Rechazar ejecución, código de retorno 4
- En este caso, lo correcto es: primero
apply --action recovery.create-restore-point --yespara crear un punto de restauración, o pedir al usuario que añada explícitamente--accept-risk - No añadas
--accept-riskpor tu cuenta para "avanzar la tarea"
Exclusiones del usuario (restricciones duras)
Cuando el usuario dice "no toques WeChat" o "no toques D:", inmediatamente fija las exclusiones, no las guardes solo en la memoria:
winmedic.ps1 profile --exclude "C:\Users\<user>\Documents\WeChat Files"
winmedic.ps1 profile --exclude "D:\*"
winmedic.ps1 profile # Ver exclusiones actuales
winmedic.ps1 profile --exclude "..." --remove # Eliminar exclusión
Las exclusiones tienen una doble barrera: se excluyen en la fase de plan, y se rechazan nuevamente en la fase de aplicación con registro contable.
Cuándo parar obligatoriamente
- El objetivo son archivos dentro de
Windows\WinSxS,Windows\Installer,System32,WindowsApps - El objetivo es el directorio de chat (
WeChat Files/xwechat_files) o exclusiones declaradas por el usuario - Solo quedan 1–2 puntos de restauración del sistema y se pide eliminar uno
- La cantidad de confirmación está cerca del límite de confirmación y se pide reducir el archivo de página
- El usuario pide "borra todo" o "no te preocupes por los riesgos" — primero explica, luego solo haz Tier 1/2
Convenciones de llamada al motor
Si el anfitrión solo puede acceder a herramientas a través de MCP, usa
engine\mcp\winmedic-mcp.ps1(ver docs/MCP.md); Los parámetros de la herramienta se corresponden uno a uno con los comandos siguientes; para la herramienta necesitasyes=true. El resto de reglas son completamente idénticas.
- Todos los subcomandos soportan
--json; sin--jsonproducen un resumen legible para humanos. - Códigos de salida: 0 éxito / 2 uso / 3 permisos / 4 requisito previo no cumplido / 5 plan inválido / 6 línea roja / 7 fallo parcial.
- No evites el motor y ejecutes comandos de eliminación directamente. El valor del motor radica en el enlace hash, la zona de cuarentena y el registro de auditoría.
Generar informe
winmedic.ps1 report --journal <runId> # Informe de entrega de cinco secciones
winmedic.ps1 report --set storage --out report.md
El informe tiene cinco secciones fijas: Estado actual → Lo que se encontró → Lo que se hizo → Resultado de verificación → Lo que no se hizo (y por qué). Cuando falten datos, escribe honestamente "No recopilado", no inventes.
Plantilla de informe
## Estado actual
C: 98.7 GB, disponible 16.7 GB (83%)
## Lo que se encontró
| Elemento | Tamaño | Nivel | Base |
|---|---|---|---|
| Papelera de reciclaje | 7.03 GB | 1 | Sin impacto |
| hiberfil.sys | 6.32 GB | 1 | Documentación de Microsoft: powercfg /h off |
## Lo que se hizo
R1 Vaciar papelera: 7.03 GB -> 0
R2 Deshabilitar hibernación: 6.32 GB liberados
## Resultado de verificación
C: disponible 16.7 -> 30.1 GB; suspensión S0 normal; sin pendingReboot
## Lo que no se hizo
SoftwareDistribution (el usuario pidió omitir), Windows\Installer (alto riesgo, se recomienda herramienta especializada)