Skip to main content

Multicall CLI wrapper that extends existing tools with custom subcommands

Project description

sleight-of-hand

A multicall CLI wrapper that transparently extends existing command-line tools with custom subcommands.

How it works

sleight-of-hand is a single Go binary that impersonates other CLI tools via symlinks. When invoked, it checks os.Args[0] to determine which tool it's acting as:

  • If it recognizes a custom subcommand, it handles it directly
  • Otherwise, it forwards all arguments to the real binary transparently (preserving stdin/stdout/stderr, signals, and exit codes)

Build

cd sleight-of-hand
go build -o sleight-of-hand .

Install

# Install symlinks for all registered tools
./sleight-of-hand install

# Install a specific tool
./sleight-of-hand install gh

# Custom bin directory
./sleight-of-hand install --bin-dir /usr/local/bin

Uninstall

# Remove all symlinks (only removes symlinks pointing to sleight-of-hand)
./sleight-of-hand uninstall

# Remove a specific tool
./sleight-of-hand uninstall gh

Wrapped tools

gh (GitHub CLI)

Custom subcommands:

  • gh pr retry <PR#> - Retry all failed CI jobs for a pull request
    • --repo, -R - Specify repository in OWNER/REPO format

All other gh commands are forwarded to the real GitHub CLI.

Adding a new tool

  1. Create a package under tools/<name>/
  2. Implement func Run(args []string) int
  3. Register in internal/dispatch/dispatch.go
  4. Run sleight-of-hand install <name>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

sleight_of_hand-0.0.2-py3-none-win_arm64.whl (1.3 MB view details)

Uploaded Python 3Windows ARM64

sleight_of_hand-0.0.2-py3-none-manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

sleight_of_hand-0.0.2-py3-none-manylinux_2_17_aarch64.whl (1.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

sleight_of_hand-0.0.2-py3-none-macosx_10_12_x86_64.whl (1.4 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

sleight_of_hand-0.0.2-py3-none-any.whl (1.4 MB view details)

Uploaded Python 3

File details

Details for the file sleight_of_hand-0.0.2-py3-none-win_arm64.whl.

File metadata

  • Download URL: sleight_of_hand-0.0.2-py3-none-win_arm64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleight_of_hand-0.0.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 8cb7c546056cf7941b857c1639cb497aa1dd81b18a3ac5e3965f172877556e50
MD5 c59c854233e23a1b572248f27fbac9fc
BLAKE2b-256 4942cd6d2c410281fbcbb4dc1e7dc79e1819fa00d2d4c4e1774aadcb802ced8f

See more details on using hashes here.

File details

Details for the file sleight_of_hand-0.0.2-py3-none-manylinux_2_17_x86_64.whl.

File metadata

  • Download URL: sleight_of_hand-0.0.2-py3-none-manylinux_2_17_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleight_of_hand-0.0.2-py3-none-manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 fde3f0202d9d8198c23cdcdcd1bbe5bbf630572a5cf7e637a5d1be02091902b4
MD5 438ab7ccba09bada216a7e531f07d98f
BLAKE2b-256 729d0597bdf7797121e8ec7baca15ec71a58c3250d0069413a447be8842b5277

See more details on using hashes here.

File details

Details for the file sleight_of_hand-0.0.2-py3-none-manylinux_2_17_aarch64.whl.

File metadata

  • Download URL: sleight_of_hand-0.0.2-py3-none-manylinux_2_17_aarch64.whl
  • Upload date:
  • Size: 1.2 MB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleight_of_hand-0.0.2-py3-none-manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 a16d816de6eba873a4b476c13c6435ef8a383d78bc080063f4ef023571694c2e
MD5 4757670c96848dbe6f5be89f10256b64
BLAKE2b-256 a51a2adeeaf43b548b712b27620c93c2a6cda246c68da890103e0e4f8b717f92

See more details on using hashes here.

File details

Details for the file sleight_of_hand-0.0.2-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: sleight_of_hand-0.0.2-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleight_of_hand-0.0.2-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 109bc69153d5b72a8c8b6f177151d9056a0269c579c10b80d13c79ec2a59458a
MD5 113dc4d7a3e3ee3eb8ce1a5ebd950849
BLAKE2b-256 ab25180667ba304a8a0fe53a07ce61e0dc96f3b5ffa7512a8e173fe9ab958988

See more details on using hashes here.

File details

Details for the file sleight_of_hand-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: sleight_of_hand-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 1.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for sleight_of_hand-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 aa0907000083002d922c3bab6c942df6937880b042e72aeb18440cd63f3861b3
MD5 7eafddc4f2f6445b14654624153672b2
BLAKE2b-256 885b76438e7b33f3778e968d39c460bf146c09f23aef2e456fe478daee50d26a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page