Pixelbadger.Toolkit
6.1.0
See the version list below for details.
dotnet tool install --global Pixelbadger.Toolkit --version 6.1.0
dotnet new tool-manifest
dotnet tool install --local Pixelbadger.Toolkit --version 6.1.0
#tool dotnet:?package=Pixelbadger.Toolkit&version=6.1.0
nuke :add-package Pixelbadger.Toolkit --version 6.1.0
Pixelbadger.Toolkit
A CLI toolkit exposing varied functionality organized by topic. The CLI uses Spectre.Console for rich terminal output — colour-coded success and error messages, formatted tables for data-heavy commands, and styled interactive prompts for secure input.
Note: Search and MCP RAG functionality has been extracted to the separate Pixelbadger.Toolkit.Rag repository (
pbragCLI tool).
Installation
dotnet tool install --global Pixelbadger.Toolkit
Usage
pbtk [topic] [action] [options]
Get help for any command:
pbtk --help
pbtk strings reverse --help
Topics and Actions
strings
reverse
--in-file <path> Input file path (required)
--out-file <path> Output file path (required)
pbtk strings reverse --in-file hello.txt --out-file hello-reversed.txt
levenshtein-distance
--string1 <value> First string or file path (required)
--string2 <value> Second string or file path (required)
pbtk strings levenshtein-distance --string1 "hello" --string2 "world"
abjadify
--in-file <path> Input file path (required)
--out-file <path> Output file path (required)
pbtk strings abjadify --in-file article.txt --out-file article-abjad.txt
flesch-reading-ease
--in-file <path> Input plain-text file path (required)
pbtk strings flesch-reading-ease --in-file article.txt
report
Performs a full text analysis including word count, sentence averages, page count, Flesch Reading Ease score, reading time, and more. Provide either a file path or a direct string.
--in-file <path> Input file path (one of --in-file or --string required)
--string <text> Input text string (one of --in-file or --string required)
pbtk strings report --in-file article.txt
pbtk strings report --string "The quick brown fox jumps over the lazy dog."
interpreters
brainfuck
--file <path> Path to the Brainfuck program file (required)
pbtk interpreters brainfuck --file hello.bf
ook
--file <path> Path to the Ook program file (required)
pbtk interpreters ook --file hello.ook
bf-to-ook
--source <path> Path to the source Brainfuck file (required)
--output <path> Path to the output Ook file (required)
pbtk interpreters bf-to-ook --source hello.bf --output hello.ook
images
steganography
--mode <encode|decode> Operation mode (required)
--image <path> Input image file path (required)
--message <text> Message to encode (required for encode mode)
--output <path> Output image file path (required for encode mode)
pbtk images steganography --mode encode --image photo.jpg --message "Secret" --output encoded.png
pbtk images steganography --mode decode --image encoded.png
web
serve-html
--file <path> Path to the HTML file to serve (required)
--port <port> Port to listen on (default: 8080)
pbtk web serve-html --file index.html --port 8080
llm
Requires OPENAI_API_KEY environment variable (when using the default OpenAI provider).
All commands automatically persist conversation history to a SQLite database at ~/.pbtk/history.db. Use llm history to inspect and manage sessions.
chat
--message <text> Message to send (required)
--session-id <id> Session ID to continue a previous conversation (optional, omit to start new)
--model <name> Model to use (default: gpt-5-nano)
--reasoning-effort <level> Reasoning effort level for o-series models: low, medium, high (optional)
pbtk llm chat --message "Hello"
pbtk llm chat --message "Continue our conversation" --session-id 42
pbtk llm chat --message "Solve this hard problem" --reasoning-effort high
The session ID is written to stderr after each call so it can be captured for follow-up messages.
translate
--text <text> Text to translate (required)
--target-language <lang> Target language (required)
--model <name> Model to use (default: gpt-5-nano)
pbtk llm translate --text "Hello, how are you?" --target-language "Spanish"
ocaaar
--image-path <path> Path to the image file (required)
--model <name> Model to use (default: gpt-5-nano)
pbtk llm ocaaar --image-path poster.jpg
corpospeak
--source <text|path> Source text or file path (required)
--audience <name> Target audience (required): csuite, engineering, product, sales,
marketing, operations, finance, legal, hr, customer-success
--user-messages <text|path> Writing style examples (optional, multiple values allowed)
--model <name> Model to use (default: gpt-5-nano)
pbtk llm corpospeak --source "API performance is great" --audience "csuite"
pbtk llm corpospeak --source update.txt --audience "engineering" --user-messages "Hey team" "Let's ship this"
history list
Lists all stored sessions with their ID, command, creation time, and token usage.
pbtk llm history list
history delete
Deletes a session and all its stored messages.
--session-id <id> ID of the session to delete (required)
pbtk llm history delete --session-id 42
oauth
OAuth authorities and discovered token endpoints must be absolute HTTPS URIs. The discovered token endpoint host must match the configured authority host before credentials are sent.
token
--profile <name> Name of the OAuth profile to use (required)
pbtk oauth token --profile my-profile
profile add
--name <name> Profile name (required)
--authority <uri> OAuth authority URI (required)
--client-id <id> OAuth client ID (required)
--client-secret <secret> OAuth client secret (optional, prompted if omitted)
--scope <scope> OAuth scope (optional)
pbtk oauth profile add --name my-profile --authority https://login.example.com/tenant --client-id abc123
profile update
--name <name> Profile name to update (required)
--authority <uri> New authority URI (optional)
--client-id <id> New client ID (optional)
--client-secret <secret> New client secret (optional)
--scope <scope> New scope (optional)
profile delete
--name <name> Profile name to delete (required)
crypto
Homomorphic encryption using the Paillier cryptosystem. Encrypted numbers support additive operations without decryption.
generate-keywrites separate public and private key files. The public key file is safe to share; the private key file must be kept secret.
generate-key
--public-key-file <path> Path to write the public key JSON file (required)
--private-key-file <path> Path to write the private key JSON file (required)
pbtk crypto generate-key --public-key-file my.pub --private-key-file my.key
encrypt
--number <int> Non-negative integer to encrypt (required)
--public-key-file <path> Path to the public key JSON file (required)
--out-file <path> Path to write the encrypted number JSON file (required)
pbtk crypto encrypt --number 37 --public-key-file my.pub --out-file a.enc
decrypt
--in-file <path> Path to the encrypted number JSON file (required)
--private-key-file <path> Path to the private key JSON file (required)
pbtk crypto decrypt --in-file a.enc --private-key-file my.key
add
--in-file1 <path> First encrypted number JSON file (required)
--in-file2 <path> Second encrypted number JSON file (required)
--out-file <path> Path to write the encrypted sum JSON file (required)
pbtk crypto add --in-file1 a.enc --in-file2 b.enc --out-file sum.enc
subtract
--in-file1 <path> Minuend encrypted number JSON file (required)
--in-file2 <path> Subtrahend encrypted number JSON file (required)
--out-file <path> Path to write the encrypted difference JSON file (required)
pbtk crypto subtract --in-file1 a.enc --in-file2 b.enc --out-file diff.enc
multiply
--in-file <path> Encrypted number JSON file (required)
--scalar <int> Non-negative plaintext scalar to multiply by (required)
--out-file <path> Path to write the encrypted product JSON file (required)
pbtk crypto multiply --in-file a.enc --scalar 6 --out-file product.enc
encrypt-string
--string <text> Plaintext string to encrypt, max 100 characters (required)
--public-key-file <path> Path to the public key JSON file (required)
--out-file <path> Path to write the encrypted string JSON file (required)
pbtk crypto encrypt-string --string "hello world" --public-key-file my.pub --out-file msg.estr
decrypt-string
--in-file <path> Path to the encrypted string JSON file (required)
--private-key-file <path> Path to the private key JSON file (required)
pbtk crypto decrypt-string --in-file msg.estr --private-key-file my.key
replace
--in-file <path> Encrypted string JSON file (required)
--start <index> Zero-based index of the first character to replace (required)
--replacement <text> Plaintext replacement characters (required)
--out-file <path> Path to write the updated encrypted string JSON file (required)
pbtk crypto replace --in-file msg.estr --start 6 --replacement "there" --out-file updated.estr
substring
--in-file <path> Encrypted string JSON file (required)
--start <index> Zero-based index of the first character to include (required)
--length <count> Number of characters to include (optional, defaults to remainder)
--out-file <path> Path to write the encrypted substring JSON file (required)
pbtk crypto substring --in-file msg.estr --start 6 --length 5 --out-file sub.estr
Requirements
- .NET 9.0
- OpenAI API key (for
openaicommands)
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 6.8.0 | 41 | 7/24/2026 |
| 6.7.0 | 39 | 7/24/2026 |
| 6.6.0 | 45 | 7/24/2026 |
| 6.5.0 | 45 | 7/23/2026 |
| 6.4.0 | 128 | 6/21/2026 |
| 6.3.0 | 110 | 6/21/2026 |
| 6.2.0 | 110 | 6/21/2026 |
| 6.1.0 | 111 | 6/18/2026 |
| 6.0.0 | 114 | 6/18/2026 |
| 5.1.0 | 107 | 6/18/2026 |
| 5.0.0 | 125 | 5/28/2026 |
| 4.1.3 | 104 | 5/26/2026 |
| 4.1.2 | 101 | 5/26/2026 |
| 4.1.1 | 119 | 5/24/2026 |
| 4.0.1 | 123 | 4/30/2026 |
| 4.0.0 | 129 | 4/21/2026 |
| 3.3.0 | 118 | 4/21/2026 |
| 3.2.0 | 139 | 3/6/2026 |
| 3.1.0 | 126 | 2/12/2026 |
| 3.0.0 | 201 | 12/23/2025 |