Private/ConvertTo-SafeBranchName.ps1

<#
.SYNOPSIS
    Converts a human-readable string into a git-safe branch name slug.
.DESCRIPTION
    Lowercases, replaces non-word/non-hyphen/non-dot characters with hyphens,
    and trims leading/trailing hyphens.
#>

function ConvertTo-SafeBranchName {
    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)]
        [string] $Name
    )

    $slug = $Name.ToLowerInvariant()
    $slug = $slug -replace '[^\w\-\.]+', '-'
    $slug = $slug.Trim('-')

    if ([string]::IsNullOrWhiteSpace($slug)) {
        throw "Could not produce a valid branch name from: '$Name'"
    }

    return $slug
}