Home · Modules · Installation · Contributing · GitHub
Modules
Each module is self-contained and independently versioned.
Import startup cost
The modules use a root-level script loader so newly added command and helper
.ps1 files are dot-sourced automatically. On a Windows PowerShell 7.4+
host, measured from built artifacts with a fresh pwsh -NoProfile process per
module and a stopwatch around Import-Module, the expected cold import medians
are:
| Module | Median import time |
|---|---|
| Shmuelie.Utilities | 488.7 ms |
| Shmuelie.Git | 612.0 ms |
| Shmuelie.Copilot | 536.0 ms |
| Shmuelie.Node | 344.3 ms |
| Shmuelie.DotNet | Not yet measured |
| Shmuelie.VisualStudio | Not yet measured |
| Combined | 1981.0 ms |
Shmuelie.Git still performs predictor registration during import when the
bundled WorktreePredictor.dll is present in the built module artifact, but it
no longer eagerly imports PSReadLine before registering the predictor.
Shmuelie.Git
Git repository, worktree, status, completion, and PSReadLine prediction helpers. Version 0.10.2. README
Highlights:
New-Repositoryclones into a standard<root>/<org>/<repo>/<branch>layout.- Worktree lifecycle:
New-Worktree,Add-Worktree,Set-Worktree,Remove-Worktree,Update-Worktrees. Get-GitStatusSummaryreturns a typed status object.Get-BranchandGet-GitTaginspect local refs as typed objects without fetching.Set-BranchandRemove-Branchmake branch changes explicit and support confirmation.Save-GitStashandRestore-GitStashsave and restore changes using native Git semantics.Restore-Itemspreserves staged changes unless-IncludeIndexis specified.Set-Configwrites literal local, global or system settings with confirmation.Update-Worktrees -ChangedOnlylimits output to actionable worktree results.- A bundled
WorktreePredictor.dllsuggests branch names for worktree commands.
Worktree navigation change: New-Worktree and Add-Worktree now enter the
created worktree by default, like New-Repository, even with an explicit -Path.
Add -NoSetLocation to scripts that must stay in the caller’s directory.
The temporary compatibility switch -SetLocation still works; explicit
-SetLocation:$false still stays put and can be replaced with -NoSetLocation.
Do not combine the two switches, even when false. Failed creation and -WhatIf
never change location.
Add-Worktree branch completion uses the source -Path (or its repository
aliases), not an unrelated caller repository. The -Path parameter on
Set-Worktree, Move-Worktree and Remove-Worktree instead selects an exact
registered worktree root: existing targets resolve in their own repository.
Branch-name selection stays caller-scoped and cannot be combined with target
-Path; deleted/prunable targets still require caller repository context.
Completion does not execute path expressions, fetch remotes or change location.
Removing worktrees: migration
Remove-Worktree now removes the backing local branch after successful worktree
removal by default. This retains its previous git branch -D cleanup semantics,
including deletion of unmerged branches. Add -KeepBranch to scripts that
previously omitted -RemoveBranch in order to preserve unfinished work.
Existing -RemoveBranch calls still work, and -RemoveBranch:$false still keeps
the branch. Enabling both -KeepBranch and -RemoveBranch is rejected.
Worktree removal and branch deletion have separate high-impact confirmations;
-Confirm:$false is the explicit unattended opt-in. -WhatIf previews the planned
operations and changes neither resource. Detached worktrees never delete branches,
failed or declined worktree removal preserves the branch, and no remote branch
is deleted. -Force keeps its existing single---force worktree behavior without
bypassing confirmation or escalating after a failure.
Shmuelie.Copilot
GitHub Copilot CLI sessions, plugins, marketplaces, MCP servers, and the
Start-Copilot launcher. Version 0.5.0.
README
Highlights:
Start-Copilotadds session resume, a multi-session picker, safe git deny rules, and full Copilot CLI flag mapping.Start-Copilot -PassThrureturns the resolved launch plan without launching, so other tools can reuse the built arguments (-DeferResumealso skips the resume picker so an overlay owns session selection).- Path-aware MCP startup: a server’s
autoConnectvalue (true/absent,false, or an array of path globs) decides whetherStart-Copilotenables it for the current directory. See the module README. - Session tools:
Get-CopilotSession,Resume-CopilotSession,Merge-CopilotSession,Compress-CopilotSession,Repair-CopilotSessionEvents. - Plugin, marketplace, and MCP management wrap the public
copilotCLI.
Shmuelie.Node
Node.js, nvm-windows, npm package, and Azure DevOps npm credential helpers. Version 0.1.5. README
Highlights:
- Node version management via nvm-windows.
Get-NpmPackage/Update-NpmPackagefor global packages.Update-AdoNpmTokenrefreshes a token for an explicit Azure DevOps feed URL.
Shmuelie.DotNet
User-local .NET SDK installation and canonical tool management for Windows, Linux, and macOS. Version 0.2.1. README
Highlights:
Install-DotNetSdkinstalls exact or channel/quality-selected SDKs side by side, skips existing matches, and returns typed results. PATH changes are opt-in: process-only everywhere, or persistent user plus process on Windows.- SDK installers use canonical Microsoft URLs, available signature validation, isolated staging cleanup, and separate download/install/PATH confirmations.
Get-DotNetToolreturns typed tool records with wildcard package filtering.Install-DotNetToolandUninstall-DotNetToolmanage global tools.Update-DotNetToolaccepts names or pipeline objects and supports local tools.- Import requires no SDK invocation and does not load Utilities.
The four Utilities entry points forward lazily to DotNet and remain available
until Utilities 1.0. Install the dependency explicitly with
Install-PSResource Shmuelie.DotNet; importing Utilities does not load DotNet.
Wrappers use the sibling DotNet manifest in a source checkout, or a loaded module
or installation on $env:PSModulePath otherwise, without changing caller command
precedence. Missing dependencies report installation guidance. Use module-qualified
Shmuelie.DotNet commands in new scripts. See the module README for preserved
scope behavior.
Shmuelie.Utilities
General developer utilities for PowerShell, .NET tools, Python packages, VS Code, terminal recovery, and general developer workflows. Version 0.6.1. README
Highlights:
- Core helpers:
Test-IsElevated,Invoke-InLocation,Reset-TerminalModes. - Tool management for
pip,uv, and VS Code extensions, plus legacy .NET tool entry points;Shmuelie.DotNetis the canonical owner of .NET tool management.
Shmuelie.Windows
Windows-only developer utilities for installed applications, Windows Terminal, Windows Performance Recorder, and service host processes. Version 0.2.1. README
Highlights:
Get-InstalledApplicationsqueries Windows uninstall registry state.Get-ServiceProcessresolves a Windows service to its hosting process.Get-AppInstallerAppandUpdate-AppInstallerAppprovide existing AppInstaller-managed application discovery and update-check requests.Get-WindowsTerminalSettingsandGet-WindowsTerminalProfileinspect Windows Terminal configuration.Start-WindowsPerformanceRecorderandStop-WindowsPerformanceRecorderwrap WPR tracing.
AppInstallManager is separate from these AppInstaller commands. Its five
unpublished commands live in the repository-local
Shmuelie.AppInstall.Experimental
module, outside the supported module catalog. Windows neither loads nor packages
that implementation. See the experimental contract for the
unchanged private-capability restriction and #233 release hold.
Shmuelie.Dsc
Class-based DSC v3 resources for developer machine setup. Version 0.1.1. README
Highlights:
SavePSResourcesaves a PowerShell module to a local path;SymbolicLinkcreates and verifies symbolic links.CopilotPluginandCopilotMarketplaceinstall GitHub Copilot CLI plugins and register marketplaces.UvToolinstalls a Python tool viauv tool install.
Shmuelie.VisualStudio
Visual Studio discovery, MSBuild resolution, and developer shell helpers for PowerShell. Version 0.2.0. README
Highlights:
Get-InstalledVsVersionlists installed Visual Studio years that have a matchingSet-VS<year>command available.Resolve-MSBuildresolves Visual Studio’s realMSBuild.exe(notdotnet msbuild) usingvswhere, including standalone Build Tools. Optional year/version-prefix and executable-architecture filters select the newest compatible release; the default architecture is native to the OS. Returns typed installation metadata or a path with-PathOnly, without running a build or changingPATH. Windows-only; module import remains cross-platform.Start-DevShelllaunches a nestedpwshinline withVSDEV_VERSION,VSDEV_ARCH,VSDEV_HOSTARCH, and a clean loginPATHfor profile-driven Visual Studio environment loading.
Shmuelie.PackageManagement
Provider-neutral package update orchestration. Version 0.3.0. README
Update-AllPackages provides provider selection/exclusion, provider-specific
option tables, lazy dependency discovery, per-target ShouldProcess, typed
results, and optional fail-fast behavior.
See the module README for provider availability and supported options.
The Windows-only WinGet provider uses optional Microsoft.WinGet.Client and
winget.exe 1.8.1911+ dependencies. It accepts source agreements by default,
including preview discovery; package agreements require explicit Boolean opt-in.
All eight providers are implemented; unavailable integrations report Skipped with a reason.
Importing the core is portable and does not import optional provider modules.
The Windows-only AppInstaller adapter lazily uses compiled Shmuelie.Windows
commands with opt-in request results. Its operation-scoped outcomes report
completed update-check requests, never inferred application version changes.