Skip to content

Repository files navigation

⚡ UltraShell v3.2.0

PowerShell Profile on Steroids - 60+ Functions for Developers

PowerShell License Platform Oh My Posh

Un perfil de PowerShell moderno, extensible y lleno de funciones útiles para desarrolladores que trabajan con Python, Git, Docker, WSL, winget y más.

CaracterísticasInstalaciónUsoFuncionesConfiguraciónINSTALL.md


✨ Características Principales

🎨 Interfaz Mejorada

  • Oh My Posh con múltiples temas personalizables
  • PSReadLine configurado con colores y atajos optimizados
  • Cambio dinámico de temas sin reiniciar

🐍 Python Development

  • Detección automática de proyectos Python
  • Activación automática de entornos virtuales
  • Limpieza de archivos __pycache__
  • Generador de proyectos Python con estructura profesional

🔧 Git Integrado

  • Estado de repositorio visual y colorido
  • Commits rápidos con un comando
  • Creación rápida de branches
  • Información detallada de commits pendientes

🐳 Docker Support

  • Estado de contenedores en un vistazo
  • Limpieza automática de recursos
  • Shortcuts para Docker Compose
  • Gestión simplificada de contenedores

📦 Winget Integrado

  • Alias wg para winget
  • Install-WingetPackage — instalar paquetes (con opción -Silent)
  • Search-WingetPackage — buscar paquetes
  • Update-WingetPackages — actualizar todos los paquetes

🪟 WSL Integration

  • Ejecutar comandos Linux desde PowerShell
  • Abrir directorio actual en WSL
  • Navegación fluida entre Windows y Linux

📊 Monitoreo de Sistema

  • Top procesos por CPU/Memoria
  • Uso de disco con alertas visuales
  • Información completa del sistema
  • Estadísticas de hardware en tiempo real

📝 Sistema de Snippets

  • Guarda comandos frecuentes
  • Recupera y copia snippets al portapapeles
  • Gestión completa de fragmentos de código

🔍 Logging y Debug

  • Sistema de logging opcional
  • Visualización colorida de logs
  • Niveles de log configurables

🏗️ Gestión de Proyectos

  • Creación automática de proyectos Python
  • Creación automática de proyectos Node.js
  • Estructuras profesionales con mejores prácticas
  • Opción de incluir Docker y Git

📦 Instalación

📋 Prerequisitos y Dependencias

Requerido (obligatorio)

  • PowerShell 7.0 o superior - Descargar
    • Ya incluye PSReadLine y otros módulos necesarios
    • El perfil NO funcionará en Windows PowerShell 5.1

🎨 Opcional (recomendado)

Estas herramientas son opcionales. El perfil detecta automáticamente cuáles tienes instaladas y solo activa las funciones correspondientes:

Herramienta Para qué sirve Funciones afectadas Cómo instalar
winget Gestor de paquetes de Windows wg, Install-WingetPackage, Search-WingetPackage, Update-WingetPackages Viene con Windows 10/11. Si falta: instala App Installer desde Microsoft Store
Oh My Posh Temas bonitos en el prompt Temas dinámicos winget install JanDeDobbeleer.OhMyPosh
Git Control de versiones Funciones Git mejoradas winget install Git.Git
Docker Desktop Contenedores Funciones Docker winget install Docker.DockerDesktop
WSL Linux en Windows Funciones WSL Viene con Windows 10/11
Python Desarrollo/ejecución Python py, pup, Enable-PythonVirtualEnv, Clear-PythonCache winget install Python.Python.3.12
Node.js Desarrollo/ejecución Node Uso de node/npm y scripts de proyectos Node generados winget install OpenJS.NodeJS

⚠️ Importante: Si no instalas algo opcional, el perfil sigue funcionando perfectamente, solo no tendrás esas funciones específicas. El install.ps1 usa winget para instalar Oh My Posh y Git si lo tienes disponible.

Generadores de proyectos: New-Project, New-PythonProject y New-NodeProject sí están disponibles sin Python/Node, porque generan desde templates JSON. Python/Node se requieren para ejecutar o gestionar el proyecto resultante (venv, python, node, npm, etc.).

Instalación rápida

  1. Ver tu ruta de perfil (opcional):
$PROFILE
  1. Elegir un método:
# Opción A — Recomendada: clon completo (perfil, modules, templates, control total)
git clone https://github.com/llopgui/UltraShell.git
cd UltraShell
.\install.ps1 -Local

# Opción B — Sin clonar: ejecutar el instalador publicado en GitHub
# (descarga a carpeta temporal y solo copia al perfil si todo lo crítico se obtuvo bien)
irm https://raw.githubusercontent.com/llopgui/UltraShell/main/install.ps1 | Invoke-Expression

Seguridad: irm … | iex ejecuta código remoto sin verificación por hash. Usa esta vía solo si confías en el origen y en la red; para más control usa la opción A. Detalle en INSTALL.md.

Opción C — Manual: copia Microsoft.PowerShell_profile.ps1$PROFILE, powershell.config.json y las carpetas modules/ y templates/ al directorio del perfil (Split-Path $PROFILE). Pasos en INSTALL.md.

  1. Recargar el perfil:
. $PROFILE

Actualizar UltraShell

  • Update-UltraShell (cargado con el perfil): actualiza desde Git si el perfil está en un clon con .git, o descarga la última versión desde GitHub (mismo enfoque atómico que el instalador).
  • Si el perfil está instalado en Documents\PowerShell pero el repo está en otra carpeta, define $env:ULTRASHELL_REPO_ROOT apuntando al clon para que el modo Git use ese directorio (evita depender solo del fallback de ruta de desarrollo).

🔍 Verificar qué funciones están disponibles

El perfil detecta automáticamente qué tienes instalado:

# Ver ayuda completa (siempre disponible)
help-profile

# Verificar información del entorno
devinfo

# Ver si Oh My Posh está disponible
theme  # Si no tienes Oh My Posh, verás un mensaje

# Ver si Git está disponible
gs  # Si no tienes Git, verás un mensaje

# Ver si Docker está disponible
dps  # Si no tienes Docker, verás un mensaje

# Ver si winget está disponible
wg --version  # Si no tienes winget, verás un mensaje

El perfil es inteligente: Si intentas usar una función que requiere una herramienta que no tienes instalada, te mostrará un mensaje claro indicándolo.

Configuración de Oh My Posh

Los temas se configuran por nombre en config.psd1. UltraShell los descarga y guarda en una carpeta local controlada. Lista completa: ohmyposh.dev/docs/themes

  • Carpeta de temas: {PROFILEDIR}\oh-my-posh-themes (junto al perfil, p. ej. Documents\PowerShell\oh-my-posh-themes)
  • Durante .\install.ps1 puedes elegir el tema y se descargan automáticamente
  • Para añadir un tema nuevo: Install-OhMyPoshTheme -Name tokyo
# En config.psd1
OhMyPoshThemesPath = '{PROFILEDIR}\oh-my-posh-themes'
OhMyPoshThemes = @('space', 'night-owl', 'atomic', 'zash', 'powerlevel10k_rainbow')

🚀 Uso Rápido

Comandos Esenciales

# Ver ayuda completa
help-profile

# Ver información del entorno
devinfo

# Estado de Git mejorado
gs

# Crear proyecto Python profesional (estructura + reglas Cursor)
New-PythonProject mi-api

# Crear módulo PowerShell profesional
New-PowerShellProject MiModulo

# Cambiar tema de Oh My Posh
theme           # Muestra temas disponibles
theme 2         # Cambia al tema #2
next-theme      # Siguiente tema

# Monitoreo de sistema
sysinfo         # Información completa
topcpu          # Top procesos por CPU
topmem          # Top procesos por memoria
diskinfo        # Uso de disco

🔧 Funciones Disponibles

📂 Navegación y Archivos

Comando Descripción Ejemplo
ll Lista archivos del directorio ll
la Lista todos los archivos (incluyendo ocultos) la
up [n] Sube N niveles de directorio up 3
mkcd <dir> Crea directorio y navega a él mkcd proyecto
open [ruta] Abre explorador en directorio open .
touch <archivo> Crea archivo o actualiza timestamp touch test.txt
which <comando> Muestra ubicación de comando which python
ff <patrón> Busca archivos por nombre (parámetros opcionales: -MaxDepth, -ExcludeDirectoryNames) ff *.py
fsize [ruta] Calcula tamaño de directorio (mismos parámetros opcionales para acotar recorrido) fsize .

🔀 Git

Comando Descripción Ejemplo
g Alias de git g status
gs / gst Estado detallado de Git gs
gitcommit <msg> Add, commit en un comando gitcommit "Fix bug"
gitbr <nombre> Crea y cambia a nueva branch gitbr feature/nueva

🐍 Python

Comando Descripción Ejemplo
py Alias de python py script.py
pup Actualiza pip pup
Clear-PythonCache Limpia __pycache__ Clear-PythonCache
New-PythonProject Crea proyecto Python profesional (estructura + reglas Cursor) New-PythonProject mi-api
New-PowerShellProject Crea módulo PowerShell profesional (+ reglas Cursor) New-PowerShellProject MiModulo
Enable-PythonVirtualEnv Activa venv del proyecto Enable-PythonVirtualEnv

🐳 Docker

Comando Descripción Ejemplo
dps Estado de contenedores dps
dcu Docker Compose up dcu -Detached -Build
dcd Docker Compose down dcd -RemoveVolumes
Clear-DockerResources Limpia recursos Docker Clear-DockerResources -Force

🪟 WSL

Comando Descripción Ejemplo
wsl-here Abre WSL en directorio actual wsl-here
wslrun <cmd> Ejecuta comando en WSL wslrun "ls -la"
Get-WSLDistributions Lista distros WSL Get-WSLDistributions

📦 Winget

Comando Descripción Ejemplo
wg Alias de winget wg search python
Install-WingetPackage <id> Instala paquete Install-WingetPackage Git.Git -Silent
Search-WingetPackage <query> Busca paquetes Search-WingetPackage "visual studio"
Update-WingetPackages Actualiza todos los paquetes Update-WingetPackages -AcceptAll

📊 Monitoreo de Sistema

Comando Descripción Ejemplo
sysinfo Información completa del sistema sysinfo
topcpu [n] Top N procesos por CPU topcpu 5
topmem [n] Top N procesos por memoria topmem 10
diskinfo Uso de disco con alertas diskinfo

🎨 Temas

Comando Descripción Ejemplo
theme Lista temas disponibles theme
theme <n> Cambia a tema N theme 2
next-theme Siguiente tema next-theme
Install-OhMyPoshTheme <name> Descarga tema a carpeta local Install-OhMyPoshTheme tokyo

📝 Snippets

En la primera carga se crean snippets de ejemplo (git-push, python-venv, docker-up, etc.). Usa snip-list para verlos.

Comando Descripción Ejemplo
snip-save <nombre> <contenido> Guarda snippet snip-save git-push "git push origin main"
snip-get <nombre> Obtiene snippet snip-get git-push -CopyToClipboard
snip-list Lista todos los snippets snip-list
Remove-Snippet <nombre> Elimina snippet Remove-Snippet git-push

🏗️ Gestión de Proyectos

Comando Descripción Ejemplo
New-PythonProject <nombre> Crea proyecto Python profesional (estructura + reglas Cursor). Default: FastAPI New-PythonProject mi-api
New-NodeProject <nombre> Crea proyecto Node.js desde template New-NodeProject app
New-Project / Init-Project Crea proyecto desde template JSON (+ cursor rules; alias equivalente) New-Project -Name mi-api -Template python/fastapi
Get-ProjectTemplate Lista templates disponibles Get-ProjectTemplate

🔍 Logging y Debug

Comando Descripción Ejemplo
Set-ProfileLogging -Enable $true Habilita logging Set-ProfileLogging -Enable $true
Show-ProfileLog Muestra log Show-ProfileLog -Last 100

🛠️ Utilidades

Comando Descripción Ejemplo
devinfo Info del entorno de desarrollo devinfo
help-profile Ayuda del perfil help-profile
Update-UltraShell Actualiza perfil/módulos/templates desde Git o descarga Update-UltraShell
Clear-PSHistory Limpia historial PowerShell Clear-PSHistory

⚙️ Configuración

Archivo config.psd1

El perfil define un conjunto de claves reconocidas en $Script:Config. Al cargar config.psd1, solo se aplican entradas cuyo nombre coincide con esas claves (así se evitan typos y opciones obsoletas). Si añades una clave que el perfil no declara, verás un aviso del tipo clave desconocida ignorada.

Claves habituales (la plantilla en el repo es config.psd1):

Clave Descripción breve
ShowMessagesInIDE Mensajes del perfil en VS Code / Cursor
OhMyPoshThemesPath Carpeta de temas exportados (placeholders {PROFILEDIR}, {USERPROFILE})
OhMyPoshThemes Lista de nombres de tema Oh My Posh
CurrentThemeIndex Índice del tema activo (0-based)
VenvPaths / PythonProjectFiles Detección de proyectos y entornos Python
SSHAutoLoadKeys / SSHKeyPaths Autocarga de claves SSH
EnableLogging / LogPath Registro de eventos del perfil
SnippetsPath Directorio de snippets
ProjectTemplatesPath Carpeta de templates JSON (por defecto junto al perfil)
PSReadLinePredictionSource None, History o HistoryAndPlugin (PSReadLine)
BenchmarkThresholdMs Umbral para mostrar tiempos de carga de módulos

Ejemplo mínimo de referencia:

@{
    ShowMessagesInIDE = $false
    OhMyPoshThemesPath = '{PROFILEDIR}\oh-my-posh-themes'
    OhMyPoshThemes = @('space', 'atomic', 'zash', 'night-owl', 'powerlevel10k_rainbow')
    CurrentThemeIndex = 0
    PSReadLinePredictionSource = 'HistoryAndPlugin'
    EnableLogging = $true
    LogPath = '{USERPROFILE}\Documents\PowerShell\Logs\perfil.log'
    SnippetsPath = '{USERPROFILE}\Documents\PowerShell\Snippets'
    BenchmarkThresholdMs = 2000
}

Personalización

Agregar Temas de Oh My Posh

# Opción 1: Descargar y añadir a la lista
Install-OhMyPoshTheme -Name tokyo

# Opción 2: Editar config.psd1
# Añade el nombre del tema a OhMyPoshThemes

PSReadLine (predicción y colores)

  • Predicción inline: en config.psd1 usa PSReadLinePredictionSource = 'HistoryAndPlugin' (u History / None).
  • Colores y atajos avanzados: edita modules/UltraShell.PSReadLine.ps1 (Set-PSReadLineOption -Colors @{ ... }), o amplía el módulo si quieres exponer más opciones vía config.psd1.

Agregar Aliases Personalizados

Set-Alias -Name 'mi-alias' -Value 'Mi-Funcion' -Force

🎯 Casos de Uso

Desarrollador Python

# Crear proyecto profesional (estructura + reglas Cursor)
New-PythonProject mi-api

# Navegar al proyecto
cd mi-api

# Inicializar entorno virtual explícitamente (recomendado)
Init-UvProject

# Alternativa manual si no usas uv:
# python -m venv .venv
.venv\Scripts\activate

# Instalar dependencias
pip install -r requirements-dev.txt

# Trabajar en el proyecto
# (el entorno virtual se activará automáticamente al entrar al directorio)

DevOps / Docker

# Ver estado de contenedores
dps

# Iniciar servicios
dcu -Detached

# Monitorear recursos
sysinfo
topmem

# Limpiar cuando termines
Clear-DockerResources

Instalar Herramientas con Winget

# Buscar paquetes
Search-WingetPackage python
wg search "visual studio"

# Instalar (modo silencioso)
Install-WingetPackage Git.Git -Silent
Install-WingetPackage Python.Python.3.12 -Silent

# Actualizar todos los paquetes
Update-WingetPackages -AcceptAll

Administrador de Sistema

# Información completa del sistema
sysinfo

# Monitorear procesos
topcpu
topmem

# Verificar espacio en disco
diskinfo

# Limpiar logs
Clear-PSHistory

📚 Estructura del Proyecto

UltraShell/
├── Microsoft.PowerShell_profile.ps1    # Perfil principal
├── config.psd1                         # Configuración personalizable
├── powershell.config.json              # Configuración de PowerShell
├── README.md                           # Este archivo
├── INSTALL.md                          # Guía de instalación
├── LICENSE                             # Licencia WTFPL
├── install.ps1                         # Instalador automático
├── modules/                            # Módulos del perfil
│   ├── UltraShell.Core.ps1            # Logging, utilidades, snippets, monitoreo
│   ├── UltraShell.PSReadLine.ps1       # Config de línea de comandos
│   ├── UltraShell.Python.ps1          # Venvs, Clear-PythonCache
│   ├── UltraShell.Themes.ps1          # Oh My Posh, SSH Agent
│   ├── UltraShell.Dev.ps1             # Docker, WSL, Git, winget
│   └── UltraShell.Projects.ps1        # Motor de templates, New-Project, New-PythonProject, New-NodeProject
├── templates/                          # Templates JSON (fuente única de verdad)
│   ├── python/                         # fastapi.json, basic.json
│   ├── powershell/                     # module.json
│   ├── nodejs/                         # basic.json
│   ├── rust/                           # basic.json
│   ├── go/                             # basic.json
│   └── custom/                         # example.json y personalizados

Nota: Los templates JSON en templates/ son la fuente única de verdad para generar proyectos. Cada template incluye estructura, archivos y cursor rules integradas. Ver templates/README.md.

📄 Ver ejemplo de template FastAPI

Si quieres crear templates personalizados, aquí hay un ejemplo de cómo sería un template para proyectos FastAPI:

Ejemplo ilustrativo (el proyecto real usa templates/python/fastapi.json con más campos):

{
  "name": "FastAPI Project Template",
  "description": "Template para proyectos FastAPI con estructura profesional",
  "structure": {
    "directories": [
      "app",
      "app/api",
      "app/api/endpoints",
      "app/core",
      "app/models",
      "app/schemas",
      "app/db",
      "tests",
      "docs"
    ],
    "files": {
      "app/__init__.py": "",
      "app/main.py": "from fastapi import FastAPI\n\napp = FastAPI(title=\"Mi API\")\n\n@app.get(\"/\")\ndef read_root():\n    return {\"message\": \"Hello World\"}",
      "requirements.txt": "fastapi>=0.104.0\nuvicorn[standard]>=0.24.0\npydantic>=2.5.0",
      ".env.example": "APP_NAME=FastAPI App\nDEBUG=True\nDATABASE_URL=sqlite:///./sql_app.db"
    }
  }
}

Nota: Usa New-PythonProject mi-api para crear un proyecto FastAPI completo con cursor rules integradas. Get-ProjectTemplate lista todos los templates disponibles.

Ver más detalles en templates/README.md.


🤝 Contribuir

Las contribuciones son bienvenidas. Si querés mejorar este perfil:

  1. Haz fork del repositorio.
  2. Crea una rama (git checkout -b feature/nueva-funcionalidad).
  3. Haz commit de los cambios (git commit -m 'Add: nueva funcionalidad').
  4. Sube la rama (git push origin feature/nueva-funcionalidad).
  5. Abre un pull request.

⚠️ Troubleshooting

El perfil no se carga

# Verificar política de ejecución
Get-ExecutionPolicy

# Si es necesario, cambiar a RemoteSigned
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Oh My Posh no funciona

# Verificar instalación
oh-my-posh --version

# Si no está instalado:
winget install JanDeDobbeleer.OhMyPosh

Oh My Posh se ve con cuadrados (⬜) o caracteres raros — es la fuente

Oh My Posh usa Nerd Fonts para iconos y símbolos. Si ves cuadrados o caracteres mal dibujados, la terminal no está usando una fuente compatible.

  1. Instala una Nerd Font:

    oh-my-posh font install

    (Elige una, por ejemplo MesloLGM Nerd Font.)

  2. Configura la fuente en tu terminal:

    • Windows Terminal: Configuración → Valores predeterminados → Apariencia → Fuente → selecciona la Nerd Font instalada.
    • Cursor / VS Code: En settings.json añade o edita:
      "terminal.integrated.fontFamily": "MesloLGM Nerd Font"

    Cierra y vuelve a abrir la terminal para que se aplique.

SSH Agent no arranca ("Cannot start service 'ssh-agent'")

El servicio OpenSSH Authentication Agent en Windows suele estar Deshabilitado por defecto. Para poder usarlo:

  1. Abre PowerShell como Administrador (clic derecho → Ejecutar como administrador).
  2. Ejecuta:
    Set-Service ssh-agent -StartupType Manual
    Start-Service ssh-agent
  3. Cierra y abre de nuevo tu terminal normal; UltraShell intentará iniciar el agente y cargar las claves.

Si el servicio no existe, instala el agente: ConfiguraciónAplicacionesCaracterísticas opcionalesAgregar una característica → busca OpenSSH (cliente y/o servidor según necesites).

Problemas con entornos virtuales Python

# Activar manualmente
Enable-PythonVirtualEnv

# Verificar rutas configuradas
$Script:Config.VenvPaths

New-PythonProject indica "Template ... no encontrado"

Verifica los templates Python disponibles y usa uno soportado:

Get-ProjectTemplate -Type python
New-PythonProject mi-api -Template fastapi
New-PythonProject mi-lib -Template basic

winget no está instalado

winget viene con Windows 10/11. Si no lo tienes:

  1. Instala App Installer desde Microsoft Store
  2. O actualiza Windows a la última versión

Si winget no está disponible, el install.ps1 no podrá instalar Oh My Posh ni Git automáticamente; instálalos manualmente o con otro gestor de paquetes.

Aviso config.psd1: clave desconocida ignorada

El perfil solo aplica claves que existen en su tabla de defaults. Si añadiste una opción con nombre distinto al esperado, se ignora y se muestra el warning. Solución: usa una de las claves documentadas en la sección de configuración o añade la clave al hashtable $Script:Config en Microsoft.PowerShell_profile.ps1 si estás extendiendo el proyecto.


📄 Licencia

Este proyecto está bajo la Licencia WTFPL (Do What The Fuck You Want To Public License).

En resumen: Haz lo que te dé la gana con este código. 🎉

Consulta el archivo LICENSE para más detalles (son literalmente 2 líneas).


🌟 Agradecimientos

  • Oh My Posh - Temas hermosos para PowerShell
  • PSReadLine - Mejor experiencia de línea de comandos
  • La comunidad de PowerShell

📧 Contacto

¿Preguntas? ¿Sugerencias? ¡Abre un issue!


⬆ Volver arriba

UltraShell v3.2.0 - Hecho con ❤️ y PowerShell

About

Un perfil de PowerShell moderno, extensible y lleno de funciones útiles para desarrolladores que trabajan con Python, Git, Docker, WSL y más.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages