Skip to main content

Reed reference

Handwritten from src/PSLoom.Reed/PSLoom.Reed.psd1, Cmdlets, Verbs and ReedException.cs in PSLoom/Reed. Cmdlets follow manifest order. Positions are zero-based; named means no positional binding. Common PowerShell parameters are omitted. Import PSLoom.Reed (which requires PSLoom) before standalone examples.

Cmdlets​

New-Completer​

Builds a completer definition from Reed's declaration body and writes it without registering it.

NameTypePositionMandatoryDescription
Commandstring0YesNonempty native command name.
ScriptBlockScriptBlock1YesNon-null declaration body, run in CompleterScope.
Aliasstring[]namedNoOther command names, empty by default.
DescriptionstringnamedNoDescription of the command.
$definition = New-Completer git { Command status }

Declaration-body errors are reported. Model validation is a separate step: use Test-Completer or the registration gate.

Register-Completer​

Validates and registers a definition, wiring every command name and alias into native completion.

NameTypePositionMandatoryDescription
CompleterCompleterDefinition0YesDefinition; accepts pipeline input.
ForceSwitchParameternamedNoReplace registrations holding any of its names.
PassThruSwitchParameternamedNoEmit CompleterRegistration.
New-Completer git { Command status } | Register-Completer -PassThru

Get-Completer​

Lists registrations or those matching command names or aliases.

NameTypePositionMandatoryDescription
Commandstring[]0NoNames or case-insensitive wildcard patterns.
Get-Completer 'git*'

Unregister-Completer​

Removes registrations; the native wiring remains but returns no candidates.

NameTypePositionMandatoryDescription
Commandstring[]0YesNonempty names; aliases remove the whole owning registration; pipeline values/properties accepted.
Unregister-Completer git

Test-Completer​

Reports every model validation problem without registering the completer.

NameTypePositionMandatoryDescription
CompleterCompleterDefinition0YesDefinition; accepts pipeline input.
QuietSwitchParameternamedNoEmit one boolean: true when there are no errors (warnings allowed).
New-Completer git { Command status } | Test-Completer -Quiet

Export-Completer​

Writes a registered completer or definition to a portable JSON file.

NameTypePositionMandatoryDescription
Commandstring0Yes, Command setRegistered name; default parameter set.
CompleterCompleterDefinitionnamedYes, Completer setDefinition from pipeline or explicit parameter.
Pathstring1Yes, both setsNonempty output file path.
ForceSwitchParameternamedNoPermit export after dropping nonportable sources.
PassThruSwitchParameternamedNoEmit FileInfo.
New-Completer git { Command status } | Export-Completer -Path ./git.json

Inline sources and sources with a script-block cache key require -Force. Inline scripts and cache keys are omitted; a provider name survives even when its cache key is dropped. The current warning text says that such a slot completes nothing, but the serializer retains provider names. The implementation uses File.WriteAllText and overwrites existing files regardless of -Force. See format and portability.

Import-Completer​

Reads a JSON file and returns a definition without registering it.

NameTypePositionMandatoryDescription
Pathstring0YesNonempty path; alias FullName; pipeline values/properties accepted.
Import-Completer ./git.json | Register-Completer

Trace-Completion​

Shows every retained Tab press oldest first, including successful presses, or clears the log.

NameTypePositionMandatoryDescription
Lastint?0NoMost recent count; minimum 1.
ClearSwitchParameternamedNoClear instead of returning entries.
Trace-Completion -Last 10

Register-CompletionProvider​

Registers a named source resolved by Argument -Provider at completion time.

NameTypePositionMandatoryDescription
Namestring0YesNonempty provider name.
ScriptBlockScriptBlock1YesCandidate-producing script receiving word, command path, bound options and positional arguments.
DescriptionstringnamedNoProvider description.
ForceSwitchParameternamedNoReplace an existing provider name.
PassThruSwitchParameternamedNoEmit CompletionProvider.
Register-CompletionProvider environments { 'dev'; 'staging'; 'production' }

Get-CompletionProvider​

Lists registered providers, optionally matching supplied names.

NameTypePositionMandatoryDescription
Namestring[]0NoNames or case-insensitive wildcard patterns.
Get-CompletionProvider '*'

Unregister-CompletionProvider​

Removes providers; slots still naming them return no candidates.

NameTypePositionMandatoryDescription
Namestring[]0YesNonempty names; accepts pipeline values/properties.
Unregister-CompletionProvider environments

Clear-CompletionCache​

Forgets all cached source answers so the next Tab press asks sources again. No command-specific parameters.

Clear-CompletionCache -Verbose

Draft verbs​

Sley​

Declares, validates and registers native completion in one step. Scope: DraftScope. Body opens CompleterScope. Reweave: Replay, key Name, supports removal via IRevertibleVerb.

NameTypePositionMandatoryDescription
Namestring0YesNative command.
Aliasstring[]namedNoAdditional names wired to this completer.
DescriptionstringnamedNoCommand description.
BodyScriptBlock1Yes[OpensScope(typeof(CompleterScope))] declaration body.
Invoke-Loom { Thread Reed; Sley git { Command status } }

Command​

Adds a subcommand. Scopes: CompleterScope, CommandScope. Body opens CommandScope; nesting is unlimited.

NameTypePositionMandatoryDescription
Namestring0YesSubcommand name.
Aliasstring[]namedNoAlternate spellings.
DescriptionstringnamedNoCandidate description.
BodyScriptBlock1No[OpensScope(typeof(CommandScope))] nested declarations.
New-Completer git { Command remote { Command add } }

Option​

Adds a switch or an option taking one value. Scopes: CompleterScope, CommandScope, OptionGroupScope. Body opens OptionScope.

NameTypePositionMandatoryDescription
Namestring0YesOption spelling, e.g. '--message'.
Aliasstring[]namedNoOther spellings such as '-m'.
DescriptionstringnamedNoCandidate description.
BodyScriptBlock1No[OpensScope(typeof(OptionScope))] body declaring its value.
New-Completer git { Command commit { Option '--message' -Alias '-m' { Argument message } } }

OptionGroup​

Declares a reusable option template. Scope: CompleterScope only. Body opens OptionGroupScope.

NameTypePositionMandatoryDescription
Namestring0YesUnique group name.
BodyScriptBlock1Yes[OpensScope(typeof(OptionGroupScope))] option declarations.
New-Completer git {
OptionGroup output { Option '--quiet' -Alias '-q' }
Command status { Use OptionGroup output }
}

Use​

Copies an already declared group's options into the current command. Scopes: CompleterScope, CommandScope. Opens no scope.

NameTypePositionMandatoryDescription
Kindstring0YesOnly valid value: OptionGroup.
Namestring1YesPreviously declared group.
New-Completer git {
OptionGroup common { Option '--help' }
Use OptionGroup common
}

Argument​

Declares a positional argument or the enclosing option's value. Scopes: CompleterScope, CommandScope, OptionScope. No parameter opens a scope; source/cache scripts execute at completion time.

NameTypePositionMandatoryDescription
Namestring0YesSlot name for diagnostics and tooltips.
VariadicSwitchParameternamedNoConsume remaining positional arguments.
SourceScriptBlocknamedNoInline candidate source.
ProviderstringnamedNoNamed source, mutually exclusive with Source.
CacheKeyScriptBlocknamedNoKey for reusing source answers; requires a source/provider.
New-Completer deploy { Argument environment -Source { 'dev'; 'production' } }

An option accepts at most one argument declaration. Validation rejects malformed or ambiguous declaration trees before registration; inspect Test-Completer diagnostics.

Error ids​

IdRaised when
REED_INVALID_DECLARATIONInvalid declaration, duplicate group, multiple option values, both source/provider, or cache key without a source.
REED_COMPLETER_INVALIDModel validation errors block registration.
REED_COMPLETER_NAME_TAKENCommand/alias already belongs to a registration and force was not specified.
REED_OPTION_GROUP_NOT_FOUNDUse names a group not yet declared.
REED_WIRING_FAILEDNative argument-completer wiring fails.
REED_NO_RUNSPACENo current runspace exists.
REED_PROVIDER_NAME_TAKENProvider name already exists without force.
REED_COMPLETER_NOT_PORTABLEExport contains nonportable sources without force, or a file write fails.
REED_COMPLETER_NOT_READABLEFile cannot be read, JSON is invalid or schema is unsupported.
REED_COMPLETER_NOT_FOUNDExport names an unregistered command.