Pixelbadger.Toolkit 5.0.0

dotnet tool install --global Pixelbadger.Toolkit --version 5.0.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Pixelbadger.Toolkit --version 5.0.0
                    
This package contains a .NET tool you can call from the shell/command line.
#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 (pbrag CLI 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-key writes 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 openai commands)
Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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
Loading failed