DotForge
0.6.0-preview
Framework for registering and configuring CLI tools in a PowerShell profile — XDG paths, PATH management, fzf pickers, and aliases.
Minimum PowerShell version
7.2
Installation Options
Owners
Copyright
(c) Randy W. Sims. All rights reserved.
Package Details
Author(s)
- Randy W. Sims
Tags
CLI Tools Profile XDG fzf Configuration Windows Shim PSReadLine
Functions
Add-DFToPath New-DFDirectory Invoke-DFPicker Invoke-DFWithPager Get-DFTool Find-DFTool Register-DFTool Complete-DFToolSetup Initialize-DFEnvironment Install-DFTool New-DFShim Invoke-DFHelp Show-DFCliHelp Show-DFCliHelpPaged Select-DFCommand Select-DFVerb Select-DFModule Select-DFHelpTopic Set-DFLocationUp New-DFDirectoryAndSet Select-DFLocation New-DFFile Get-DFWhich Open-DFItem Select-DFProcess Get-DFTopProcess Get-DFEnv Get-DFPath Select-DFEnvVar Edit-DFProfile Invoke-DFProfileReload Copy-DFToClipboard Get-DFFromClipboard New-DFUuid Find-DFPackage Update-DFPackageCache Select-DFPackage Get-DFCategoryList Update-DFCategoryDb Update-DFToolIdentityGuide Get-DFCommandConflict
PSEditions
Dependencies
This module has no dependencies.
Release Notes
Preview release. New in 0.6.0: a 2026-09-06 zsh-parity pass fixed eza's ll/la aliases and fzf's match mode/previews to mirror a reference zsh config, defaulted PSReadLine to Emacs edit mode with history relocated under XDG_STATE_HOME (size 10000), and added three tools -- rustup, vcpkg, and direnv (PowerShell hook via LocationChangedAction, needs PS 7.2+). Startup performance: command-output caching for carapace/zoxide/mdcat/scoop-search (~200ms), Test-DFToolAvailable memoization (~44% faster Register-DFTool -All), and background Import-Module pre-warming for module-type tools like PSFzf/Terminal-Icons/posh-git (~77% faster real import). New tool-setup-lifecycle primitive (Tools/<name>.setup.ps1) for one-time persistent setup -- first used to make delta's catppuccin theme actually render (previously a silent no-op) via a git-config include line, and to stop mdv's config from being silently rewritten after deletion. New vivid (LS_COLORS theming) and bat (BAT_THEME) plugins; $DFConfig.Defaults lets tools compete for a role (lsd added alongside eza for "listing"). New author-time tool-conformance harness verifies tools actually honor their configuration. Canonical path handling (ConvertTo-DFPath) fixes mixed \/ separators in XDG-derived env vars. New mdcat/mdv markdown viewers; glow's XDG config now actually takes effect via a wrapper function. Theme resolution is now driven by a shared $DFConfig['Theme'] key with per-tool overrides and per-tool themeMap translation. The copy alias is renamed to yank (collided with PowerShell's builtin); all general-helper aliases are now genuinely module-owned. Also fixes a $DFConfig = $null crash across five code paths, real SQL parameter binding in the winget catalog search, New-DFShim resolving relative arguments against the wrong directory, and stale caching in Import-DFToolDb/Resolve-DFPackageManager. Carries forward: fuzzy fzf package-manager pickers (winget/scoop/choco), the completion stack (PSReadLine + Carapace + PSFzf + inshellisense), trifle/ftrifle multi-catalog package discovery, fnm per-directory Node switching, and dependency-ordered registration via dependsOn.
FileList
- DotForge.nuspec
- AGENTS.md
- CHANGELOG.md
- CLAUDE.md
- DotForge.psd1
- DotForge.psm1
- LICENSE
- Publish-DotForge.ps1
- README.md
- TODO.md
- ToolAcquisitionSpec-Audit.md
- ToolAcquisitionSpec.md
- .claude\settings.json
- assets\dotforge.png
- assets\dotforge1.png
- assets\dotforge2.png
- assets\dotforge3.png
- build\Build-DFCategoryDb.ps1
- build\Build-DFPackageUniverseLinks.ps1
- build\Build-DFPackageUniverseRaw.ps1
- build\Build-DFPackageUniverseTools.ps1
- build\Build-DFToolIdentities.ps1
- build\DFConformance.ps1
- build\Measure-DFStartup.ps1
- build\Test-DFToolConformance.ps1
- data\package-universe-categories.jsonc
- data\package-universe-curation.jsonc
- data\tool-categories.json
- data\tool-conformance.json
- data\tool-identities.json
- docs\builtin-safety-policy.md
- docs\external-dependencies.md
- docs\plugin-architecture.md
- examples\01-minimal.ps1
- examples\02-standard.ps1
- examples\03-selective.ps1
- examples\04-vscode-fastpath.ps1
- examples\05-trifle-catalog.ps1
- examples\06-winget-pickers.ps1
- examples\07-scoop-choco-pickers.ps1
- examples\README.md
- Private\ConvertTo-DFPath.ps1
- Private\DFCatalog.Choco.ps1
- Private\DFCatalog.Crates.ps1
- Private\DFCatalog.Npm.ps1
- Private\DFCatalog.ps1
- Private\DFCatalog.PSGallery.ps1
- Private\DFCatalog.Pypi.ps1
- Private\DFCatalog.Scoop.ps1
- Private\DFCatalog.Winget.ps1
- Private\Expand-DFXdgPath.ps1
- Private\Format-DFCategoryList.ps1
- Private\Format-DFCliHelpText.ps1
- Private\Format-DFToolInfo.ps1
- Private\Get-DFCachedCommandOutput.ps1
- Private\Get-DFCatalogInstalled.ps1
- Private\Get-DFCatalogLocalPackages.ps1
- Private\Get-DFCategoryDb.ps1
- Private\Get-DFConfiguredTheme.ps1
- Private\Get-DFCoreutilsShadowSet.ps1
- Private\Get-DFGitHubRepoInfo.ps1
- Private\Get-DFHelpTopicList.ps1
- Private\Get-DFPackageReadme.ps1
- Private\Get-DFToolIdentityGuide.ps1
- Private\Get-DFToolSetupState.ps1
- Private\Import-DFToolDb.ps1
- Private\Initialize-DFCompletionStack.ps1
- Private\Invoke-DFCategoryDbDownload.ps1
- Private\Invoke-DFCommandCapture.ps1
- Private\Invoke-DFFzf.ps1
- Private\Invoke-DFPackageManagerPicker.ps1
- Private\Invoke-DFPagerExe.ps1
- Private\Invoke-DFSqliteQuery.ps1
- Private\Invoke-DFToolCompanion.ps1
- Private\Invoke-DFToolIdentityGuideDownload.ps1
- Private\Invoke-DFTopoSort.ps1
- Private\New-DFToolPickerFunction.ps1
- Private\Register-DFToolAliases.ps1
- Private\Resolve-DFCatalogQueryMerge.ps1
- Private\Resolve-DFCliHelpFlag.ps1
- Private\Resolve-DFPackageManager.ps1
- Private\Resolve-DFThemeName.ps1
- Private\Resolve-DFToolIdentityCandidateRepo.ps1
- Private\Resolve-DFToolIdentityLinkage.ps1
- Private\Set-DFToolXdgConfig.ps1
- Private\Start-DFCatalogRefreshJob.ps1
- Private\Start-DFModulePrewarm.ps1
- Private\Test-DFCategoryDbSchema.ps1
- Private\Test-DFOutputPiped.ps1
- Private\Test-DFToolAvailable.ps1
- Private\Test-DFToolIdentityGuideSchema.ps1
- Private\Test-DFToolSchema.ps1
- Public\Add-DFToPath.ps1
- Public\Complete-DFToolSetup.ps1
- Public\DFHelpers.Clipboard.ps1
- Public\DFHelpers.Environment.ps1
- Public\DFHelpers.FileSystem.ps1
- Public\DFHelpers.Help.ps1
- Public\DFHelpers.Navigation.ps1
- Public\DFHelpers.Pager.ps1
- Public\DFHelpers.Process.ps1
- Public\DFHelpers.Utility.ps1
- Public\Find-DFPackage.ps1
- Public\Find-DFTool.ps1
- Public\Get-DFCategoryList.ps1
- Public\Get-DFCommandConflict.ps1
- Public\Get-DFTool.ps1
- Public\Initialize-DFEnvironment.ps1
- Public\Install-DFTool.ps1
- Public\Invoke-DFPicker.ps1
- Public\New-DFDirectory.ps1
- Public\New-DFShim.ps1
- Public\Register-DFTool.ps1
- Public\Select-DFPackage.ps1
- Public\Update-DFCategoryDb.ps1
- Public\Update-DFPackageCache.ps1
- Public\Update-DFToolIdentityGuide.ps1
- reports\tool-conformance-issues.md
- tests\Add-DFToPath.Tests.ps1
- tests\AliasOwnership.Tests.ps1
- tests\bat.Tests.ps1
- tests\Build-DFCategoryDb.Tests.ps1
- tests\Build-DFPackageUniverseRaw.Tests.ps1
- tests\Build-DFToolIdentities.Tests.ps1
- tests\carapace.Tests.ps1
- tests\choco.Tests.ps1
- tests\Complete-DFToolSetup.Tests.ps1
- tests\ConvertTo-DFPath.Tests.ps1
- tests\Coreutils.Conflicts.Tests.ps1
- tests\DefaultToolRoles.Tests.ps1
- tests\delta.Tests.ps1
- tests\DFCatalog.Core.Tests.ps1
- tests\DFCatalog.Scoop.Tests.ps1
- tests\DFCatalog.WebProviders.Tests.ps1
- tests\DFCatalog.Winget.Tests.ps1
- tests\DFCatalogDetail.Tests.ps1
- tests\DFCatalogDetailProviders.OData.Tests.ps1
- tests\DFCatalogDetailProviders.Scoop.Winget.Tests.ps1
- tests\DFCatalogDetailProviders.Web.Tests.ps1
- tests\DFConformance.Tests.ps1
- tests\DFHelpers.Clipboard.Tests.ps1
- tests\DFHelpers.Environment.Tests.ps1
- tests\DFHelpers.FileSystem.Tests.ps1
- tests\DFHelpers.Help.Tests.ps1
- tests\DFHelpers.Navigation.Tests.ps1
- tests\DFHelpers.Pager.Tests.ps1
- tests\DFHelpers.Process.Tests.ps1
- tests\DFHelpers.Utility.Tests.ps1
- tests\DFPackageUniverse.Choco.Tests.ps1
- tests\DFPackageUniverse.Links.Tests.ps1
- tests\DFPackageUniverse.Merge.Tests.ps1
- tests\DFPackageUniverse.Scoop.Tests.ps1
- tests\DFPackageUniverse.Winget.Tests.ps1
- tests\direnv.Tests.ps1
- tests\Expand-DFXdgPath.Tests.ps1
- tests\eza.Tests.ps1
- tests\Find-DFPackage.Tests.ps1
- tests\Format-DFCategoryList.Tests.ps1
- tests\Format-DFCliHelpText.Tests.ps1
- tests\Format-DFToolDetailCard.Tests.ps1
- tests\Format-DFToolInfo.Tests.ps1
- tests\fzf.Tests.ps1
- tests\Get-DFCachedCommandOutput.Tests.ps1
- tests\Get-DFCatalogInstalled.Tests.ps1
- tests\Get-DFCategoryDb.Tests.ps1
- tests\Get-DFCategoryList.Tests.ps1
- tests\Get-DFCommandConflict.Tests.ps1
- tests\Get-DFConfiguredTheme.Tests.ps1
- tests\Get-DFGitHubRepoInfo.Tests.ps1
- tests\Get-DFHelpTopicList.Tests.ps1
- tests\Get-DFPackageReadme.Tests.ps1
- tests\Get-DFTool.Tests.ps1
- tests\Get-DFToolIdentityGuide.Tests.ps1
- tests\Get-DFToolSetupState.Tests.ps1
- tests\glow.Tests.ps1
- tests\gsudo.Tests.ps1
- tests\Import-DFToolDb.Tests.ps1
- tests\Initialize-DFCompletionStack.Tests.ps1
- tests\Initialize-DFEnvironment.Tests.ps1
- tests\Install-DFTool.Tests.ps1
- tests\Invoke-DFCommandCapture.Tests.ps1
- tests\Invoke-DFFzf.Tests.ps1
- tests\Invoke-DFPackageManagerPicker.Tests.ps1
- tests\Invoke-DFPicker.Tests.ps1
- tests\Invoke-DFSqliteQuery.Tests.ps1
- tests\Invoke-DFToolCompanion.Tests.ps1
- tests\mdcat.Tests.ps1
- tests\mdv.Tests.ps1
- tests\New-DFDirectory.Tests.ps1
- tests\New-DFShim.Tests.ps1
- tests\New-DFToolPickerFunction.Tests.ps1
- tests\PSReadLine.Completion.Tests.ps1
- tests\psreadline.Tests.ps1
- tests\Register-DFTool.Tests.ps1
- tests\Register-DFToolAliases.Tests.ps1
- tests\Resolve-DFCatalogQueryMerge.Tests.ps1
- tests\Resolve-DFCliHelpFlag.Tests.ps1
- tests\Resolve-DFPackageManager.Tests.ps1
- tests\Resolve-DFThemeName.Tests.ps1
- tests\Resolve-DFToolIdentityCandidateRepo.Tests.ps1
- tests\Resolve-DFToolIdentityLinkage.Tests.ps1
- tests\rustup.Tests.ps1
- tests\scoop.Tests.ps1
- tests\Select-DFPackage.Tests.ps1
- tests\Set-DFToolXdgConfig.Tests.ps1
- tests\Show-DFCliHelp.Tests.ps1
- tests\Start-DFModulePrewarm.Tests.ps1
- tests\Test-DFCategoryDbSchema.Tests.ps1
- tests\Test-DFToolAvailable.Tests.ps1
- tests\Test-DFToolConformance.Tests.ps1
- tests\Test-DFToolIdentityGuideSchema.Tests.ps1
- tests\Test-DFToolSchema.Tests.ps1
- tests\Tools.PickerDeclaration.Tests.ps1
- tests\Update-DFCategoryDb.Tests.ps1
- tests\Update-DFPackageCache.Tests.ps1
- tests\Update-DFToolIdentityGuide.Tests.ps1
- tests\vcpkg.Tests.ps1
- tests\vivid.Tests.ps1
- tests\winget.Tests.ps1
- tests\XdgSplit.Tests.ps1
- tests\zoxide.Tests.ps1
- Tools\bat.json
- Tools\bat.ps1
- Tools\bitwarden.json
- Tools\broot.json
- Tools\carapace.json
- Tools\carapace.ps1
- Tools\chezmoi.json
- Tools\choco.json
- Tools\choco.ps1
- Tools\curl.json
- Tools\delta.json
- Tools\delta.ps1
- Tools\delta.setup.ps1
- Tools\direnv.json
- Tools\direnv.ps1
- Tools\docker.json
- Tools\eza.json
- Tools\fd.json
- Tools\fnm.json
- Tools\fnm.ps1
- Tools\fzf.json
- Tools\fzf.ps1
- Tools\gh.json
- Tools\glow.json
- Tools\glow.ps1
- Tools\gsudo.json
- Tools\gsudo.ps1
- Tools\inshellisense.json
- Tools\inshellisense.ps1
- Tools\jq.json
- Tools\lazygit.json
- Tools\less.json
- Tools\lsd.json
- Tools\mdcat.json
- Tools\mdcat.ps1
- Tools\mdv.json
- Tools\mdv.setup.ps1
- Tools\micro.json
- Tools\npm.json
- Tools\oh-my-posh.json
- Tools\oh-my-posh.ps1
- Tools\posh-git.json
- Tools\posh-git.ps1
- Tools\procs.json
- Tools\procs.ps1
- Tools\PSFzf.json
- Tools\PSFzf.ps1
- Tools\psreadline.json
- Tools\psreadline.ps1
- Tools\ripgrep.json
- Tools\ripgrep.ps1
- Tools\rustup.json
- Tools\rustup.ps1
- Tools\scoop.json
- Tools\scoop.ps1
- Tools\Terminal-Icons.json
- Tools\Terminal-Icons.ps1
- Tools\uv.json
- Tools\vcpkg.json
- Tools\vcpkg.ps1
- Tools\vivid.json
- Tools\vivid.ps1
- Tools\wget.json
- Tools\winfetch.json
- Tools\winget.json
- Tools\winget.ps1
- Tools\zoxide.json
- Tools\zoxide.ps1
- build\categories\dotforge-curated.jsonc
- build\categories\extras.jsonc
- build\categories\taxonomy.jsonc
- build\conformance\bat.jsonc
- build\conformance\glow.jsonc
- build\Private\DFPackageUniverse.Choco.ps1
- build\Private\DFPackageUniverse.Db.ps1
- build\Private\DFPackageUniverse.Links.ps1
- build\Private\DFPackageUniverse.Merge.ps1
- build\Private\DFPackageUniverse.Scoop.ps1
- build\Private\DFPackageUniverse.Winget.ps1
- tests\data\coreutils-commands.json
- tests\fixtures\winget-index-v2.db
- Tools\delta\catppuccin.gitconfig
- Tools\fzf\catppuccin-mocha.json
- Tools\glow\catppuccin-mocha.json
- Tools\psreadline\catppuccin-mocha.json
- Tools\psreadline\dark.json
- Tools\psreadline\light.json
- build\conformance\probes\bat.theme.ps1
- docs\superpowers\plans\2026-05-07-dotforge-phase1.md
- docs\superpowers\plans\2026-05-07-dotforge-phase2.md
- docs\superpowers\plans\2026-05-07-dotforge-phase3.md
- docs\superpowers\plans\2026-05-07-dotforge-phase4.md
- docs\superpowers\plans\2026-05-08-pwsh-general-helpers.md
- docs\superpowers\plans\2026-05-08-select-dfhelptopic.md
- docs\superpowers\plans\2026-05-20-new-dfshim.md
- docs\superpowers\plans\2026-05-20-psreadline-integration.md
- docs\superpowers\plans\2026-06-12-cli-help-colorizer.md
- docs\superpowers\plans\2026-07-04-trifle-detail-view.md
- docs\superpowers\plans\2026-07-05-trifle-discovery-v1.md
- docs\superpowers\plans\2026-07-06-trifle-tool-identity-guide.md
- docs\superpowers\plans\2026-07-07-trifle-live-install-status.md
- docs\superpowers\plans\2026-07-16-package-universe-tool-merge.md
- docs\superpowers\plans\2026-07-19-completion-stack-integration.md
- docs\superpowers\plans\2026-07-20-profile-dotforge-fold-in.md
- docs\superpowers\plans\2026-07-24-gsudo-sudo-precedence.md
- docs\superpowers\plans\2026-07-24-markdown-viewers.md
- docs\superpowers\plans\2026-07-24-path-normalization.md
- docs\superpowers\plans\2026-07-24-tool-conformance-infrastructure.md
- docs\superpowers\plans\2026-07-25-default-tool-roles.md
- docs\superpowers\plans\2026-07-25-theme-centralization.md
- docs\superpowers\plans\2026-07-25-xdg-model-split.md
- docs\superpowers\plans\2026-07-26-alias-ownership.md
- docs\superpowers\plans\2026-09-03-vivid-ls-colors.md
- docs\superpowers\plans\2026-09-04-audit-correctness-and-speed-fixes.md
- docs\superpowers\plans\2026-09-04-theming-batch-1.md
- docs\superpowers\plans\2026-09-04-tool-setup-lifecycle.md
- docs\superpowers\plans\2026-09-05-async-module-prewarm.md
- docs\superpowers\specs\2026-05-07-dotforge-design.md
- docs\superpowers\specs\2026-05-08-pwsh-general-helpers-design.md
- docs\superpowers\specs\2026-05-08-select-dfhelptopic-design.md
- docs\superpowers\specs\2026-05-20-new-dfshim-design.md
- docs\superpowers\specs\2026-05-20-psreadline-integration-design.md
- docs\superpowers\specs\2026-06-12-cli-help-colorizer-design.md
- docs\superpowers\specs\2026-07-04-trifle-detail-view-design.md
- docs\superpowers\specs\2026-07-05-trifle-discovery-v1-design.md
- docs\superpowers\specs\2026-07-06-trifle-tool-identity-guide-design.md
- docs\superpowers\specs\2026-07-07-trifle-live-install-status-design.md
- docs\superpowers\specs\2026-07-13-package-universe-acquisition-design.md
- docs\superpowers\specs\2026-07-15-legacy-profile-fold-in-design.md
- docs\superpowers\specs\2026-07-16-package-universe-identity-clustering-design.md
- docs\superpowers\specs\2026-07-16-package-universe-tool-merge-design.md
- docs\superpowers\specs\2026-07-19-completion-stack-design.md
- docs\superpowers\specs\2026-07-20-profile-dotforge-fold-in-design.md
- docs\superpowers\specs\2026-07-24-gsudo-sudo-precedence-design.md
- docs\superpowers\specs\2026-07-24-markdown-viewers-design.md
- docs\superpowers\specs\2026-07-24-path-normalization-design.md
- docs\superpowers\specs\2026-07-24-tool-conformance-infrastructure-design.md
- docs\superpowers\specs\2026-07-25-default-tool-roles-design.md
- docs\superpowers\specs\2026-07-25-theme-centralization-design.md
- docs\superpowers\specs\2026-07-25-xdg-model-split-design.md
- docs\superpowers\specs\2026-07-26-alias-ownership-design.md
- docs\superpowers\specs\2026-09-03-vivid-ls-colors-design.md
- docs\superpowers\specs\2026-09-04-delta-catppuccin-design.md
- docs\superpowers\specs\2026-09-04-tool-setup-lifecycle-design.md
- docs\superpowers\specs\2026-09-05-startup-perf-audit.md
- Tools\carapace\specs\mdv.yaml
- Tools\carapace\specs\scoop.yaml
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 0.6.0-preview (current version) | 6 | 9/6/2026 |
| 0.5.0-preview | 5 | 7/24/2026 |
| 0.4.0-preview | 5 | 7/20/2026 |
| 0.3.0-preview | 16 | 6/20/2026 |
| 0.2.0-preview | 18 | 6/12/2026 |
| 0.1.1-preview | 6 | 5/22/2026 |
| 0.1.0-preview | 3 | 5/21/2026 |