Pixelbadger.Toolkit
5.0.0
dotnet tool install --global Pixelbadger.Toolkit --version 5.0.0
dotnet new tool-manifest
dotnet tool install --local Pixelbadger.Toolkit --version 5.0.0
#tool dotnet:?package=Pixelbadger.Toolkit&version=5.0.0
nuke :add-package Pixelbadger.Toolkit --version 5.0.0
Pixelbadger.Toolkit
A CLI toolkit exposing varied functionality organized by topic.
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
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
openai
Requires OPENAI_API_KEY environment variable.
All commands automatically persist conversation history to a SQLite database at ~/.pbtk/history.db. Use openai 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> OpenAI model to use (default: gpt-5-nano)
pbtk openai chat --message "Hello"
pbtk openai chat --message "Continue our conversation" --session-id 42
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> OpenAI model to use (default: gpt-5-nano)
pbtk openai translate --text "Hello, how are you?" --target-language "Spanish"
ocaaar
--image-path <path> Path to the image file (required)
--model <name> OpenAI model to use (default: gpt-5-nano)
pbtk openai 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> OpenAI model to use (default: gpt-5-nano)
pbtk openai corpospeak --source "API performance is great" --audience "csuite"
pbtk openai 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 openai history list
history delete
Deletes a session and all its stored messages.
--session-id <id> ID of the session to delete (required)
pbtk openai 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 |
|---|---|---|
| 5.0.0 | 108 | 5/28/2026 |
| 4.1.3 | 88 | 5/26/2026 |
| 4.1.2 | 84 | 5/26/2026 |
| 4.1.1 | 104 | 5/24/2026 |
| 4.0.1 | 108 | 4/30/2026 |
| 4.0.0 | 116 | 4/21/2026 |
| 3.3.0 | 106 | 4/21/2026 |
| 3.2.0 | 128 | 3/6/2026 |
| 3.1.0 | 115 | 2/12/2026 |
| 3.0.0 | 197 | 12/23/2025 |
| 2.5.1 | 279 | 9/19/2025 |
| 2.5.0 | 271 | 9/19/2025 |
| 2.4.0 | 354 | 9/18/2025 |
| 2.3.4 | 333 | 9/18/2025 |
| 2.3.3 | 345 | 9/18/2025 |
| 2.3.2 | 353 | 9/18/2025 |
| 2.3.1 | 339 | 9/17/2025 |
| 2.3.0 | 339 | 9/17/2025 |
| 2.2.1 | 347 | 9/17/2025 |
| 2.2.0 | 332 | 9/17/2025 |