Skip to main content

Context-aware CLI framework with fuzzy search menus and auto-discovery - Build interactive command-line tools that cling to your workflow

Project description

clingy

Python License Code style: black

Context-aware CLI framework for building interactive command-line tools with fuzzy search menus and modular command architecture. Works like Git, Poetry, or Terraform—install once, use everywhere.


The Problem & The Solution

Building CLI tools often feels like choosing between two extremes: a rigid, complex framework that takes days to learn, or a messy collection of scripts that are impossible to maintain.

Clingy was born to bridge that gap. It solves the "CLI fatigue" by providing a framework where automation meets interaction.

Why Clingy?

  • Zero-Boilerplate Discovery: Just drop a file in your commands/ folder, and it's instantly available in your CLI. No manual registration, no complex routing.
  • Interactive by Default: Every command you write automatically gains a, fuzzy-searchable menu (powered by fzf). You build the logic once; the framework provides the interface.
  • Submenu Architecture: Use our intuitive node-based system to build complex, nested menus that feel like professional-grade software.
  • Context-Aware: Like Git, Clingy automatically detects your project root. Run it from any subdirectory, and it knows exactly where it is.

Documentation Hub

See the Interactive Documentation.

Navigate through the project documentation:

Framework Reference

Project Templates


Showcase

Clingy basic starter template

https://github.com/user-attachments/assets/61247d3c-2900-472d-a4fc-a7b3b551edf7

Clingy konfigs template

https://github.com/user-attachments/assets/c11d5731-9a4e-4163-8b86-06463003d677


Installation

# Using uv (recommended)
uv pip install clingy

# Using pip
pip install clingy

Required Dependency: fzf (fuzzy finder). Install via your package manager (brew, apt, pacman, etc.).


Quick Start

1. Initialize

mkdir my-tool && cd my-tool
clingy init

2. Run

clingy                # Interactive mode (fzf menu)
clingy greet --name User  # CLI mode

3. Update Framework

If a template update is available, sync your project files while preserving your configuration:

clingy --update-template

Contributing & Testing

# Install in editable mode
pip install -e .

# Run tests
pytest tests/

# Format code
black . --line-length 100
isort . --profile black

License

MIT Maintainer: @ncasatti

Project details


Download files

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

Source Distribution

clingy_cli-1.0.0.tar.gz (76.4 kB view details)

Uploaded Source

Built Distribution

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

clingy_cli-1.0.0-py3-none-any.whl (93.2 kB view details)

Uploaded Python 3

File details

Details for the file clingy_cli-1.0.0.tar.gz.

File metadata

  • Download URL: clingy_cli-1.0.0.tar.gz
  • Upload date:
  • Size: 76.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clingy_cli-1.0.0.tar.gz
Algorithm Hash digest
SHA256 56c88fcdedd8a87871708f451e4d483b77b7e9b5d354e11cadd2b0857e5b060a
MD5 7d43057b64ab53e3874f560a576f89e9
BLAKE2b-256 611d4ce2386a1504a696cc55798513d9c4778fb479ec7d1ba159776976dc7d1e

See more details on using hashes here.

Provenance

The following attestation bundles were made for clingy_cli-1.0.0.tar.gz:

Publisher: release.yml on ncasatti/clingy-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file clingy_cli-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: clingy_cli-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 93.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for clingy_cli-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b06924a739dc214071a15d67ac39740d0926505d4f42728d306be5db4a35e4b4
MD5 69deec967103f3ab496490706d5b8072
BLAKE2b-256 5ba5e3b58db6f42180100fde9825d79b1d89dde4a6db00c8260df91e22be3afa

See more details on using hashes here.

Provenance

The following attestation bundles were made for clingy_cli-1.0.0-py3-none-any.whl:

Publisher: release.yml on ncasatti/clingy-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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