diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..58c0361
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,84 @@
+name: build module
+
+on:
+ push:
+ branches: [ "main" ]
+ pull_request:
+ branches: [ "main" ]
+
+jobs:
+ build-module:
+ name: Run build and upload artifacts
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v4
+ with:
+ fetch-tags: true
+ fetch-depth: 0
+
+ - name: Install Modules
+ shell: pwsh
+ run: |
+ Set-PSRepository PSGallery -InstallationPolicy Trusted
+ Install-Module ModuleBuilder,PSScriptAnalyzer,EZOut
+ Install-Module Pester -MinimumVersion 5.5.0
+
+ - name: Run build
+ shell: pwsh
+ run: |
+ $Version = git describe --tags --abbrev=0
+ Write-Host "Version : $Version"
+ .\tools\build.ps1 -Version $Version
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v4
+ with:
+ name: psnotes-build
+ path: bin
+
+ - name: Build Tests
+ shell: pwsh
+ run: .\tools\tests-build.ps1
+
+ - name: Build Report
+ uses: dorny/test-reporter@v2
+ if: ${{ !cancelled() }}
+ with:
+ name: Build Tests
+ path: 'bin/*.TestResults.xml'
+ reporter: java-junit
+
+ test-module:
+ needs: build-module
+ name: Test Module
+ runs-on: ${{ matrix.os }}
+ strategy:
+ matrix:
+ os: [ubuntu-latest, windows-latest]
+ steps:
+ - uses: actions/checkout@v4
+ - uses: actions/download-artifact@v4
+ with:
+ path: bin
+ pattern: psnotes-build
+ merge-multiple: true
+ - run: ls -R bin
+
+ - name: Install Modules
+ shell: pwsh
+ run: |
+ Set-PSRepository PSGallery -InstallationPolicy Trusted
+ Install-Module Pester -MinimumVersion 5.5.0
+ Install-Module PSScriptAnalyzer
+
+ - name: Unit Tests
+ shell: pwsh
+ run: .\tools\tests.ps1
+
+ - name: Test Report
+ uses: dorny/test-reporter@v2
+ if: ${{ !cancelled() }}
+ with:
+ name: Pester Tests
+ path: 'bin/*.TestResults.xml'
+ reporter: java-junit
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index c6ff30a..24573b6 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,3 +1,5 @@
-Publish/APIKey.json
-Publish/PSNotes/
-*.code-workspace
\ No newline at end of file
+*.code-workspace
+bin/
+Documentation/demos/*
+.vscode/*
+*/APIKey.json
diff --git a/Documentation/Commands.MD b/Documentation/Commands.MD
deleted file mode 100644
index 8090339..0000000
--- a/Documentation/Commands.MD
+++ /dev/null
@@ -1,25 +0,0 @@
-# Manage Notes
-These commands allow you to create, update, and delete different notes.
-* [New-PSNote](New-PSNote.MD) - Use to add or update a PSNote object
-* [Remove-PSNote](Remove-PSNote.MD) - Use to remove a Note from you personal store
-* [Set-PSNote](Set-PSNote.MD) - Use to add or update a PSNote object
-
-# Working with Notes
-The commands below provide multiple different ways for you to use notes outside of the default alias
-
-* [Get-PSNote](Get-PSNote.MD) - Use to search for or list the different PSNotes
-* [Copy-PSNote](Copy-PSNote.MD) - Use to display a list of notes in a selectable menu so you can choose which to copy to your clipboard
-* [Get-PSNoteAlias](Get-PSNoteAlias.MD) - Use display snippet and copy to clipboard using an Alias
-* [Invoke-PSNote](Invoke-PSNote.MD) - Use to display a list of notes in a selectable menu so you can choose which to run
-
-# Sharing
-You can export and import notes to share with other or copy to a different machine.
-* [Import-PSNote](Import-PSNote.MD) - Use to import a PSNotes JSON fiile
-* [Export-PSNote](Export-PSNote.MD) - Use to export your PSNotes to copy to another machine or share with others
-
-# Splatting Commands
-Splatting is a much cleaner and safer way to shorten command lines without needing to use backtick. These cmdlets will help you automatically format commands for splatting.
-
-* [ConvertTo-Splatting](ConvertTo-Splatting.MD) - Use to convert an existing PowerShell command to splatting
-* [Get-CommandSplatting](Get-CommandSplatting.MD) - Use to output the parameters for a command in splatting format
-
diff --git a/Documentation/Commands.md b/Documentation/Commands.md
new file mode 100644
index 0000000..b73eeb7
--- /dev/null
+++ b/Documentation/Commands.md
@@ -0,0 +1,84 @@
+---
+document type: module
+Help Version: 1.0.0.0
+HelpInfoUri:
+Locale: en-US
+Module Guid: 040757f4-ee7b-4e93-9883-f6a1930b6966
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: PSNotes Module
+---
+
+# PSNotes Module
+
+## Description
+
+PSNotes is a PowerShell module that provides a structured, versioned snippet and script library for reusable automation patterns. Create notes with aliases, tags, and metadata to quickly execute, copy, or preview commands. Organize notes into local or remote catalogs, search by name, tag, details, or snippet content, and turn frequently used automation into first-class commands.
+
+## PSNotes
+
+### [ConvertTo-Splatting](ConvertTo-Splatting.md)
+
+Converts an existing PowerShell command into a splatting hashtable and splatted command.
+
+### [Export-PSNote](Export-PSNote.md)
+
+Exports PSNotes to a JSON file for backup or sharing.
+
+### [Get-CommandSplatting](Get-CommandSplatting.md)
+
+Generates a splatting template for a PowerShell command.
+
+### [Get-PSNote](Get-PSNote.md)
+
+Retrieves PSNotes from the note store by listing or searching.
+
+### [Get-PSNoteAlias](Get-PSNoteAlias.md)
+
+Resolves a PSNote by alias and outputs, copies, or executes its content.
+
+### [Get-PSNoteMenu](Get-PSNoteMenu.md)
+
+Displays an interactive, paged console menu for browsing and selecting PSNotes.
+
+### [Get-RemoteCatalog](Get-RemoteCatalog.md)
+
+Gets remote catalogs registered with PSNotes.
+
+### [Import-PSNote](Import-PSNote.md)
+
+Imports PSNotes from a JSON export file into the local note store.
+
+### [Import-RemoteCatalog](Import-RemoteCatalog.md)
+
+Registers a remote PSNotes catalog or imports it as a local catalog.
+
+### [Initialize-PSNoteStore](Initialize-PSNoteStore.md)
+
+Initializes the PSNotes store and required supporting files.
+
+### [Move-PSNote](Move-PSNote.md)
+
+Moves one or more PSNotes to a different catalog.
+
+### [New-PSNote](New-PSNote.md)
+
+Creates a new PSNote for storing reusable snippets or script references.
+
+### [Remove-PSNote](Remove-PSNote.md)
+
+Removes one or more PSNotes from the note store.
+
+### [Remove-RemoteCatalog](Remove-RemoteCatalog.md)
+
+Removes a remote catalog registration from PSNotes.
+
+### [Set-PSNote](Set-PSNote.md)
+
+Updates an existing PSNote or creates it if it does not already exist.
+
+### [Update-PSNoteStore](Update-PSNoteStore.md)
+
+Updates PSNotes catalogs to the latest format.
+
diff --git a/Documentation/ConvertTo-Splatting.MD b/Documentation/ConvertTo-Splatting.MD
deleted file mode 100644
index 7d3f081..0000000
--- a/Documentation/ConvertTo-Splatting.MD
+++ /dev/null
@@ -1,96 +0,0 @@
-# ConvertTo-Splatting
-
-
-## ConvertTo-Splatting
-
-
-
-### Synopsis
-Use to convert an existing PowerShell command to splatting
-### Description
-Splatting is a much cleaner and safer way to shorten command lines without needing to use backtick.
-This function excepts any command as a string or a scriptblock and will convert the existing parameters
-to a hashtable and output the fully splatted command for you.
-
-### Syntax
-```powershell
-ConvertTo-Splatting [[-Command] ] []
-
-ConvertTo-Splatting [[-ScriptBlock] ] []
-```
-### Parameters
-#### Command <String>
- The command string you want to convert to using splatting
-
- Required? false
- Position? 1
- Default value
- Accept pipeline input? false
- Accept wildcard characters? false
-#### ScriptBlock <ScriptBlock>
- The command scriptblock you want to convert to using splatting
-
- Required? false
- Position? 1
- Default value
- Accept pipeline input? false
- Accept wildcard characters? false
-### Examples
-#### Example 1: Converts the string splatme to splatting
-```powershell
-$splatme = @'
-Set-AzVMExtension -ExtensionName "MicrosoftMonitoringAgent" -ResourceGroupName "rg-xxxx" -VMName "vm-xxxx" -Publisher "Microsoft.EnterpriseCloud.Monitoring" -ExtensionType "MicrosoftMonitoringAgent" -TypeHandlerVersion "1.0" -Settings @{"workspaceId" =
-"xxxx" } -ProtectedSettings @{"workspaceKey" = "xxxx"} -Location "uksouth"
-'@
-ConvertTo-Splatting $splatme
-```
-###### Output
-```
-$SetAzVMExtensionParam = @{
- ExtensionName = "MicrosoftMonitoringAgent"
- ResourceGroupName = "rg-xxxx"
- VMName = "vm-xxxx"
- Publisher = "Microsoft.EnterpriseCloud.Monitoring"
- ExtensionType = "MicrosoftMonitoringAgent"
- TypeHandlerVersion = "1.0"
- Settings = @{ "workspaceId" = "xxxx" }
- ProtectedSettings = @{ "workspaceKey" = "xxxx" }
- Location = "uksouth"
-}
-Set-AzVMExtension @SetAzVMExtensionParam
-```
-#### Example 2: Converts the scriptblock splatme to splatting
-```powershell
-$splatme = {
-Copy-Item -Path "test.txt" -Destination "test2.txt" -WhatIf
-}
-ConvertTo-Splatting $splatme
-```
-###### Output
-```
-$CopyItemParam = @{
- Path = "test.txt"
- Destination = "test2.txt"
- WhatIf = $true
-}
-Copy-Item @CopyItemParam
-```
-#### Example 3: Removed backticks and converts the scriptblock splatme to splatting
-```powershell
-$splatme = {
-Get-AzVM `
- -ResourceGroupName "ResourceGroup11" `
- -Name "VirtualMachine07" `
- -Status
-}
-ConvertTo-Splatting $splatme
-```
-###### Output
-```
-$GetAzVMParam = @{
- ResourceGroupName = "ResourceGroup11"
- Name = "VirtualMachine07"
- Status = $true
-}
-Get-AzVM @GetAzVMParam
-```
diff --git a/Documentation/ConvertTo-Splatting.md b/Documentation/ConvertTo-Splatting.md
new file mode 100644
index 0000000..57a775f
--- /dev/null
+++ b/Documentation/ConvertTo-Splatting.md
@@ -0,0 +1,157 @@
+---
+document type: cmdlet
+external help file: PSNotes-Help.xml
+HelpUri: ''
+Locale: en-US
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: ConvertTo-Splatting
+---
+
+# ConvertTo-Splatting
+
+## SYNOPSIS
+
+Converts an existing PowerShell command into a splatting hashtable and splatted command.
+
+## SYNTAX
+
+### string
+
+```
+ConvertTo-Splatting [[-Command] ] []
+```
+
+### scriptblock
+
+```
+ConvertTo-Splatting [[-ScriptBlock] ] []
+```
+
+## DESCRIPTION
+
+ConvertTo-Splatting takes a PowerShell command provided as a string or script block and rewrites it
+into a splatting-friendly format.
+It parses the command, identifies the command name and parameters,
+and produces:
+
+- A hashtable assignment (for example, $GetItemParam = @{ ...
+})
+- A command invocation that uses splatting (for example, Get-Item @GetItemParam)
+
+This is useful for refactoring long command lines into a clearer, more maintainable structure, and for
+turning backtick-continued commands into a single normalized form.
+
+## EXAMPLES
+
+### EXAMPLE 1
+
+```powershell
+$splatme = @'
+Set-AzVMExtension -ExtensionName "MicrosoftMonitoringAgent" -ResourceGroupName "rg-xxxx" -VMName "vm-xxxx" `
+ -Publisher "Microsoft.EnterpriseCloud.Monitoring" -ExtensionType "MicrosoftMonitoringAgent" `
+ -TypeHandlerVersion "1.0" -Settings @{"workspaceId" = "xxxx"} `
+ -ProtectedSettings @{"workspaceKey" = "xxxx"} -Location "uksouth"
+'@
+ConvertTo-Splatting $splatme
+```
+
+Creates a parameter hashtable and a splatted Set-AzVMExtension call.
+
+### EXAMPLE 2
+
+```powershell
+$splatme = { Copy-Item -Path "test.txt" -Destination "test2.txt" -WhatIf }
+ConvertTo-Splatting $splatme
+```
+
+Converts a script block command into a hashtable and a splatted Copy-Item call.
+Switch parameters are
+represented as $true.
+
+### EXAMPLE 3
+
+```powershell
+$splatme = {
+ Get-AzVM `
+ -ResourceGroupName "ResourceGroup11" `
+ -Name "VirtualMachine07" `
+ -Status
+}
+ConvertTo-Splatting $splatme
+```
+
+Normalizes backtick line continuations and converts the command to splatting.
+
+## PARAMETERS
+
+### -Command
+
+The command text to convert to splatting.
+Provide a full command line as a string.
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: string
+ Position: 0
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -ScriptBlock
+
+The command to convert to splatting, provided as a script block.
+The script block is converted to text
+and normalized prior to parsing.
+
+```yaml
+Type: System.Management.Automation.ScriptBlock
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: scriptblock
+ Position: 0
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### CommonParameters
+
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
+-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
+-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
+[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+## OUTPUTS
+
+## NOTES
+
+- If the command starts with a variable assignment, the variable(s) are preserved as part of the parsed command.
+- The hashtable variable name is derived from the command name (for example, Get-Item -> $GetItemParam).
+If that
+ name conflicts with an existing constant variable, a fallback name is used.
+- For background on splatting, see:
+ about_Splatting - https://learn.microsoft.com/powershell/module/microsoft.powershell.core/about/about_splatting
+
+
+## RELATED LINKS
+
+
diff --git a/Documentation/Copy-PSNote.MD b/Documentation/Copy-PSNote.MD
deleted file mode 100644
index 6c2be0d..0000000
Binary files a/Documentation/Copy-PSNote.MD and /dev/null differ
diff --git a/Documentation/Export-PSNote.MD b/Documentation/Export-PSNote.MD
deleted file mode 100644
index 163e549..0000000
Binary files a/Documentation/Export-PSNote.MD and /dev/null differ
diff --git a/Documentation/Export-PSNote.md b/Documentation/Export-PSNote.md
new file mode 100644
index 0000000..bd91b06
--- /dev/null
+++ b/Documentation/Export-PSNote.md
@@ -0,0 +1,201 @@
+---
+document type: cmdlet
+external help file: PSNotes-Help.xml
+HelpUri: ''
+Locale: en-US
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: Export-PSNote
+---
+
+# Export-PSNote
+
+## SYNOPSIS
+
+Exports PSNotes to a JSON file for backup or sharing.
+
+## SYNTAX
+
+### Note (Default)
+
+```
+Export-PSNote -NoteObject -Path [-Force] []
+```
+
+### Catalog
+
+```
+Export-PSNote -Catalog -Path [-Force] []
+```
+
+## DESCRIPTION
+
+Export-PSNote serializes notes from the PSNotes store into a JSON file.
+You can export the entire
+store or a filtered subset of notes (for example, by name, alias, tag, or catalog depending on
+the parameter set in use).
+
+The exported file is designed to round-trip with Import-PSNote and can be used for backups,
+migration to another machine, or sharing curated note collections.
+
+If the destination file already exists, use -Force to overwrite it.
+
+## EXAMPLES
+
+### EXAMPLE 1
+
+```powershell
+Export-PSNote -Catalog 'Default' -Path C:\Export\MyPSNotes.json
+```
+
+Exports all notes from the 'Default' catalog to a JSON file.
+
+### EXAMPLE 2
+
+```powershell
+Get-PSNote -Tag 'AD' | Export-PSNote -Path C:\Export\SharedADNotes.json
+```
+
+Exports all notes with the tag 'AD' to the file SharedADNotes.json.
+
+### EXAMPLE 3
+
+```powershell
+Get-PSNote -Name 'Cred*' -Catalog 'Work' | Export-PSNote -Path C:\Export\WorkCreds.json
+```
+
+Exports notes that match the name pattern from the 'Work' catalog.
+
+### EXAMPLE 4
+
+```powershell
+Get-PSNote -SearchString 'token' | Export-PSNote -Path C:\Export\TokenNotes.json
+```
+
+Exports notes that match a search string.
+
+### EXAMPLE 5
+
+```powershell
+Export-PSNote -Catalog 'Personal' -Path C:\Export\PersonalNotes.json -Force
+```
+
+Exports the 'Personal' catalog and overwrites the file if it exists.
+
+## PARAMETERS
+
+### -Catalog
+
+The catalog name to export.
+When specified, all notes from that catalog are exported.
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Catalog
+ Position: Named
+ IsRequired: true
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Force
+
+Overwrite the output file if it already exists.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -NoteObject
+
+The PSNote objects you want to export.
+Use Get-PSNote to build the object and pass it to the parameter
+or use the pipeline to pass them in.
+
+```yaml
+Type: PSNote[]
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Note
+ Position: Named
+ IsRequired: true
+ ValueFromPipeline: true
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Path
+
+The path to the PSNotes JSON file to export to.
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: Named
+ IsRequired: true
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### CommonParameters
+
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
+-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
+-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
+[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+### PSNote[]
+
+
+## OUTPUTS
+
+### System.Object
+
+
+## NOTES
+
+- The exported JSON file is intended for use with Import-PSNote.
+- Use -Force to overwrite an existing file.
+- See also: Import-PSNote, Get-PSNote
+
+
+## RELATED LINKS
+
+
diff --git a/Documentation/Get-CommandSplatting.MD b/Documentation/Get-CommandSplatting.MD
deleted file mode 100644
index 0e6ba20..0000000
--- a/Documentation/Get-CommandSplatting.MD
+++ /dev/null
@@ -1,186 +0,0 @@
-# Get-CommandSplatting
-
-
-## Get-CommandSplatting
-
-
-
-### Synopsis
-Use to output the parameters for a command in splatting format
-### Description
-Use to output the parameters for a command in splatting format
-
-### Syntax
-```powershell
-Get-CommandSplatting [-Command] [[-ParameterSet] ] [-IncludeCommon] [-Copy] []
-
-Get-CommandSplatting [-Command] [-ListParameterSets] [-IncludeCommon] [-Copy] []
-
-Get-CommandSplatting [-Command] [-All] [-IncludeCommon] [-Copy] []
-```
-### Parameters
-#### Command <String>
- The command to get the parameters for
-
- Required? true
- Position? 1
- Default value
- Accept pipeline input? false
- Accept wildcard characters? false
-#### ParameterSet <String>
- Use to specify a specific parameter set. Use the -ListParameterSets to get a quick
- view of all the different Parameter Set names.
-
- Required? false
- Position? 2
- Default value
- Accept pipeline input? false
- Accept wildcard characters? false
-#### ListParameterSets [<SwitchParameter>]
- Use to list the different Parameter Sets available for the command. Output is shortened
- to only show the names. Use -All to return splatting for all parameter sets.
-
- Required? false
- Position? 2
- Default value False
- Accept pipeline input? false
- Accept wildcard characters? false
-#### All [<SwitchParameter>]
- Use to return full splatting for all parameter sets
-
- Required? false
- Position? 2
- Default value False
- Accept pipeline input? false
- Accept wildcard characters? false
-#### IncludeCommon [<SwitchParameter>]
- Use to include the PowerShell common parameters in the splatting output. (e.g. Verbose, ErrorAction, etc.)
-
- Required? false
- Position? 3
- Default value False
- Accept pipeline input? false
- Accept wildcard characters? false
-#### Copy [<SwitchParameter>]
-
- Required? false
- Position? 4
- Default value False
- Accept pipeline input? false
- Accept wildcard characters? false
-### Examples
-#### Example 1: Get the default parameter set for a command
-```powershell
-Get-CommandSplatting -Command 'Get-Item'
-```
-###### Output
-```
-Name : Path
-IsDefault : True
-SetBlock :
- [string[]]$Path = ''
- [string]$Filter = ''
- [string[]]$Include = ''
- [string[]]$Exclude = ''
- [Boolean]$Force = $false # Switch
- [pscredential]$Credential = ''
- [string[]]$Stream = ''
-HashBlock :
- $Item = @{
- Path = $Path #Required
- Filter = $Filter
- Include = $Include
- Exclude = $Exclude
- Force = $Force
- Credential = $Credential
- Stream = $Stream
- }
- Get-Item @Item
-```
-#### Example 2: List the available parameter sets for a command
-```powershell
-Get-CommandSplatting -Command 'Get-Item' -ListParameterSets
-```
-###### Output
-```
-ParameterSet : Path
-IsDefault : True
-Parameters : Path, Filter, Include, Exclude, Force, Credential, Stream
-```
-#### Example 3: Get specific parameter set for a command
-```powershell
-Get-CommandSplatting -Command 'Get-Item' -ParameterSet LiteralPath
-```
-###### Output
-```
-ParameterSet : LiteralPath
-IsDefault : False
-SetBlock :
- [string[]]$LiteralPath = ''
- [string]$Filter = ''
- [string[]]$Include = ''
- [string[]]$Exclude = ''
- [Boolean]$Force = $false # Switch
- [pscredential]$Credential = ''
- [string[]]$Stream = ''
-HashBlock :
- $ItemLiteralPath = @{
- LiteralPath = $LiteralPath #Required
- Filter = $Filter
- Include = $Include
- Exclude = $Exclude
- Force = $Force
- Credential = $Credential
- Stream = $Stream
- }
- Get-Item @ItemLiteralPath
-```
-#### Example 4: Get all parameter sets for a command
-```powershell
-Get-CommandSplatting -Command 'Get-Item' -All
-```
-###### Output
-```
-ParameterSet : Path
-IsDefault : True
-SetBlock :
- [string[]]$Path = ''
- [string]$Filter = ''
- [string[]]$Include = ''
- [string[]]$Exclude = ''
- [Boolean]$Force = $false # Switch
- [pscredential]$Credential = ''
- [string[]]$Stream = ''
-HashBlock :
- $ItemPath = @{
- Path = $Path #Required
- Filter = $Filter
- Include = $Include
- Exclude = $Exclude
- Force = $Force
- Credential = $Credential
- Stream = $Stream
- }
- Get-Item @ItemPath
-ParameterSet : LiteralPath
-IsDefault : False
-SetBlock :
- [string[]]$LiteralPath = ''
- [string]$Filter = ''
- [string[]]$Include = ''
- [string[]]$Exclude = ''
- [Boolean]$Force = $false # Switch
- [pscredential]$Credential = ''
- [string[]]$Stream = ''
-HashBlock :
- $ItemLiteralPath = @{
- LiteralPath = $LiteralPath #Required
- Filter = $Filter
- Include = $Include
- Exclude = $Exclude
- Force = $Force
- Credential = $Credential
- Stream = $Stream
- }
- Get-Item @ItemLiteralPath
-```
diff --git a/Documentation/Get-CommandSplatting.md b/Documentation/Get-CommandSplatting.md
new file mode 100644
index 0000000..407c889
--- /dev/null
+++ b/Documentation/Get-CommandSplatting.md
@@ -0,0 +1,251 @@
+---
+document type: cmdlet
+external help file: PSNotes-Help.xml
+HelpUri: ''
+Locale: en-US
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: Get-CommandSplatting
+---
+
+# Get-CommandSplatting
+
+## SYNOPSIS
+
+Generates a splatting template for a PowerShell command.
+
+## SYNTAX
+
+### ParameterSet (Default)
+
+```
+Get-CommandSplatting [-Command] [[-ParameterSet] ] [-IncludeCommon] [-Copy]
+ []
+```
+
+### ListParameterSets
+
+```
+Get-CommandSplatting [-Command] [-ListParameterSets] [-IncludeCommon] [-Copy]
+ []
+```
+
+### All
+
+```
+Get-CommandSplatting [-Command] [-All] [-IncludeCommon] [-Copy] []
+```
+
+## DESCRIPTION
+
+Get-CommandSplatting inspects a command’s parameter metadata and produces a ready-to-paste splatting
+template.
+It returns one or more objects that include:
+
+- A variable “set block” with typed variable declarations for each parameter
+- A hashtable “hash block” formatted for splatting (including required-parameter comments)
+- A final example invocation that splats the hashtable into the command
+
+By default, the cmdlet outputs the default parameter set for the command.
+You can list available
+parameter sets, generate a specific parameter set, or generate templates for all parameter sets.
+Optionally include the PowerShell common parameters and/or copy the first generated template to the
+clipboard.
+
+## EXAMPLES
+
+### EXAMPLE 1
+
+```powershell
+Get-CommandSplatting -Command 'Get-Item'
+```
+
+Generates a splatting template for the default parameter set of Get-Item.
+
+### EXAMPLE 2
+
+```powershell
+Get-CommandSplatting -Command 'Get-Item' -ListParameterSets
+```
+
+Lists the available parameter sets for Get-Item and shows the parameters included in each set.
+
+### EXAMPLE 3
+
+```powershell
+Get-CommandSplatting -Command 'Get-Item' -ParameterSet LiteralPath
+```
+
+Generates a splatting template for the LiteralPath parameter set.
+
+### EXAMPLE 4
+
+```powershell
+Get-CommandSplatting -Command 'Get-Item' -All
+```
+
+Generates splatting templates for all parameter sets of Get-Item.
+
+### EXAMPLE 5
+
+```powershell
+Get-CommandSplatting -Command 'Get-Item' -IncludeCommon -Copy
+```
+
+Generates the default parameter set template including common parameters and copies the first template to the clipboard.
+
+## PARAMETERS
+
+### -All
+
+Generates splatting templates for all parameter sets for the specified command.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: All
+ Position: 1
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Command
+
+The name of the command to generate a splatting template for (cmdlet/function/alias supported by Get-Command).
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: 0
+ IsRequired: true
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Copy
+
+Copies the first generated template (SetBlock + HashBlock) to the clipboard.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: 3
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -IncludeCommon
+
+Includes PowerShell common parameters (for example: Verbose, Debug, ErrorAction) in the generated output.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: 2
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -ListParameterSets
+
+Lists available parameter sets for the specified command, including whether each set is the default and the
+parameter names in that set.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: ListParameterSets
+ Position: 1
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -ParameterSet
+
+The name of a specific parameter set to generate.
+Use -ListParameterSets to discover available names.
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: ParameterSet
+ Position: 1
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### CommonParameters
+
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
+-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
+-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
+[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+## OUTPUTS
+
+### SplatBlock
+
+
+## NOTES
+
+- Required parameters are annotated in the hashtable output with a "#Required" comment.
+- Switch parameters are represented as [Boolean] variables in the set block, defaulting to $false.
+- Use -ListParameterSets to discover parameter set names before using -ParameterSet.
+
+
+## RELATED LINKS
+
+
diff --git a/Documentation/Get-PSNote.MD b/Documentation/Get-PSNote.MD
deleted file mode 100644
index 5e452e8..0000000
Binary files a/Documentation/Get-PSNote.MD and /dev/null differ
diff --git a/Documentation/Get-PSNote.md b/Documentation/Get-PSNote.md
new file mode 100644
index 0000000..848c8d3
--- /dev/null
+++ b/Documentation/Get-PSNote.md
@@ -0,0 +1,262 @@
+---
+document type: cmdlet
+external help file: PSNotes-Help.xml
+HelpUri: ''
+Locale: en-US
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: Get-PSNote
+---
+
+# Get-PSNote
+
+## SYNOPSIS
+
+Retrieves PSNotes from the note store by listing or searching.
+
+## SYNTAX
+
+### Note (Default)
+
+```
+Get-PSNote [-Name ] [-Tag ] [-Copy] [-Run] [-Catalog ]
+ []
+```
+
+### Search
+
+```
+Get-PSNote [-Run] [-Catalog ] [-Search ] []
+```
+
+## DESCRIPTION
+
+Get-PSNote returns notes stored in the PSNotes store.
+By default, all notes are returned.
+You can filter results by name, alias, tag, catalog, or search text depending on the
+parameter set in use.
+
+This cmdlet returns PSNote objects that can be piped into other PSNotes commands such as
+Remove-PSNote, Move-PSNote, Export-PSNote, or Set-PSNote.
+
+Wildcard matching is supported where applicable.
+
+## EXAMPLES
+
+### EXAMPLE 1
+
+```powershell
+Get-PSNote
+```
+
+Returns all notes in the store.
+
+### EXAMPLE 2
+
+```powershell
+Get-PSNote -Catalog 'Azure'
+```
+
+Returns all notes in the Azure catalog.
+
+### EXAMPLE 3
+
+```powershell
+Get-PSNote -Name 'Get-*'
+```
+
+Returns notes with names that match the pattern.
+
+### EXAMPLE 4
+
+```powershell
+Get-PSNote -Tag 'VM'
+```
+
+Returns notes tagged with 'VM'.
+
+### EXAMPLE 5
+
+```powershell
+Get-PSNote -Search 'backup'
+```
+
+Searches across note properties for the term 'backup'.
+
+### EXAMPLE 6
+
+```powershell
+Get-PSNote -Catalog 'Azure' | Remove-PSNote
+```
+
+Finds notes in the Azure catalog and removes them.
+
+## PARAMETERS
+
+### -Catalog
+
+Returns notes from the specified catalog.
+
+```yaml
+Type: System.String[]
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Search
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+- Name: Note
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Copy
+
+When specified, copies the snippet content of the first matching note to the clipboard.
+If multiple notes match, you will be prompted to select one.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Note
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Name
+
+Returns notes that match the specified name.
+Wildcards are supported.
+
+```yaml
+Type: System.String
+DefaultValue: '*'
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Note
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Run
+
+When specified, executes the snippet content of the first matching note.
+If multiple notes match, you will be prompted to select one.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Search
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+- Name: Note
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Search
+
+Performs a broader search across note properties such as name, alias, and tags.
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases:
+- SearchString
+ParameterSets:
+- Name: Search
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Tag
+
+Returns notes that contain one or more specified tags.
+
+```yaml
+Type: System.String
+DefaultValue: ''
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: Note
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### CommonParameters
+
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
+-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
+-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
+[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+## OUTPUTS
+
+### PSNote
+
+
+## NOTES
+
+- Returns PSNote objects.
+- Wildcards are supported for Name and Alias parameters.
+- See also: New-PSNote, Set-PSNote, Remove-PSNote, Move-PSNote, Export-PSNote
+
+
+## RELATED LINKS
+
+
diff --git a/Documentation/Get-PSNoteAlias.MD b/Documentation/Get-PSNoteAlias.MD
deleted file mode 100644
index 3f70b1d..0000000
Binary files a/Documentation/Get-PSNoteAlias.MD and /dev/null differ
diff --git a/Documentation/Get-PSNoteAlias.md b/Documentation/Get-PSNoteAlias.md
new file mode 100644
index 0000000..45d4c9c
--- /dev/null
+++ b/Documentation/Get-PSNoteAlias.md
@@ -0,0 +1,113 @@
+---
+document type: cmdlet
+external help file: PSNotes-Help.xml
+HelpUri: ''
+Locale: en-US
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: Get-PSNoteAlias
+---
+
+# Get-PSNoteAlias
+
+## SYNOPSIS
+
+Resolves a PSNote by alias and outputs, copies, or executes its content.
+
+## SYNTAX
+
+### __AllParameterSets
+
+```
+Get-PSNoteAlias [-Copy] [-Run] []
+```
+
+## DESCRIPTION
+
+Get-PSNoteAlias locates a PSNote using its alias and performs a quick action against it.
+
+Depending on the note’s Kind and the parameters supplied, the cmdlet can:
+
+- Output the snippet content to the console
+- Copy the snippet content to the clipboard
+- Execute the snippet directly
+- Execute a referenced script path
+
+This command is designed for fast recall of frequently used commands through short,
+easy-to-remember aliases.
+
+## EXAMPLES
+
+## PARAMETERS
+
+### -Copy
+
+Copies the note content to the clipboard instead of writing it to the console.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### -Run
+
+Executes the note content.
+For snippet notes, the script block is invoked.
+For script-path
+notes, the referenced script is executed.
+
+```yaml
+Type: System.Management.Automation.SwitchParameter
+DefaultValue: False
+SupportsWildcards: false
+Aliases: []
+ParameterSets:
+- Name: (All)
+ Position: Named
+ IsRequired: false
+ ValueFromPipeline: false
+ ValueFromPipelineByPropertyName: false
+ ValueFromRemainingArguments: false
+DontShow: false
+AcceptedValues: []
+HelpMessage: ''
+```
+
+### CommonParameters
+
+This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable,
+-InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable,
+-ProgressAction, -Verbose, -WarningAction, and -WarningVariable. For more information, see
+[about_CommonParameters](https://go.microsoft.com/fwlink/?LinkID=113216).
+
+## INPUTS
+
+## OUTPUTS
+
+### System.String
+
+
+## NOTES
+
+- Alias values are intended to be unique within the PSNotes store.
+- Behavior differs based on the note Kind (for example, Snippet vs ScriptPath).
+- Clipboard functionality depends on platform support.
+- See also: Get-PSNote, New-PSNote, Set-PSNote
+
+
+## RELATED LINKS
+
+
diff --git a/Documentation/Get-PSNoteMenu.md b/Documentation/Get-PSNoteMenu.md
new file mode 100644
index 0000000..e99d169
--- /dev/null
+++ b/Documentation/Get-PSNoteMenu.md
@@ -0,0 +1,106 @@
+---
+document type: cmdlet
+external help file: PSNotes-Help.xml
+HelpUri: ''
+Locale: en-US
+Module Name: PSNotes
+ms.date: 02/19/2026
+PlatyPS schema version: 2024-05-01
+title: Get-PSNoteMenu
+---
+
+# Get-PSNoteMenu
+
+## SYNOPSIS
+
+Displays an interactive, paged console menu for browsing and selecting PSNotes.
+
+## SYNTAX
+
+### __AllParameterSets
+
+```
+Get-PSNoteMenu [[-InputObject]