A small SOLID-inspired CLI framework for easily adding commands.
Project description
solid-cli v1.1.0
A SOLID-inspired Python CLI toolkit for autonomous research, multimodal AI review (text / image / video / audio), and self-organising knowledge management. Built the way Uncle Bob would build it.
Quick Start
# Install in editable mode
python -m pip install -e .
# See all commands
python -m solid_cli --help
# Check version
solid-cli --version
# Agent onboarding — comprehensive guide for humans and AI agents
python -m solid_cli onboard
python -m solid_cli onboard --json # machine-readable for agents
Commands
| Command | What it does |
|---|---|
research |
Web-search via OpenAI → Markdown report in knowledge_base/ |
review |
Upload file or text to Gemini → quality feedback in feedback/ |
download |
Fetch sample image/video/audio for testing into samples/ |
read |
Display a saved knowledge-base document |
onboard |
Full help guide for humans and AI agents |
hello |
Greeting example (--name Alice) |
sum |
Sum integers example (sum 1 2 3) |
research — autonomous web search
solid-cli research "OpenAI Responses API best practices 2025" --tag openai_api
solid-cli research --list # catalogue
solid-cli research --search apple # filter by keyword
solid-cli research --batch queries.txt # bulk from file (tag|query format)
solid-cli research --stats # aggregate library stats
solid-cli research --delete 3 # remove document #3
solid-cli research "topic" --force # save even with 0 sources
solid-cli read 1 # display document #1
Queries that return 0 sources are skipped by default to keep the
library clean. Use --force to override.
review — multimodal Gemini quality review
solid-cli review photo.png "Check composition and quality"
solid-cli review clip.mp4 "Summarise content, assess quality"
solid-cli review song.wav "Transcribe and assess audio quality"
solid-cli review code.py "Code review for SOLID adherence"
solid-cli review --text "Some text with erors" "Check spelling"
solid-cli review --list # catalogue
solid-cli review --read 1 # display feedback #1
download — fetch test assets
solid-cli download all # image + video + audio
solid-cli download --url URL --name my_file.png
solid-cli download --list
Environment variables
| Variable | Purpose |
|---|---|
OPENAI_API_KEY |
Required for research (web search via OpenAI) |
GEMINI_API_KEY |
Required for review (multimodal AI via Gemini) |
KB_DIR |
Override knowledge-base directory (default ./knowledge_base) |
FEEDBACK_DIR |
Override feedback directory (default ./feedback) |
Place these in a .env file — python-dotenv loads it automatically.
Architecture (SOLID + Clean)
solid_cli/
├── command.py ← Abstract Command interface (DIP)
├── registry.py ← Auto-discovers commands (OCP)
├── cli.py / __main__.py ← Thin entry points
├── services/
│ ├── search_service.py ← SearchService ABC + OpenAI impl (SRP, LSP)
│ ├── review_service.py ← ReviewService ABC + Gemini impl (SRP, LSP)
│ ├── storage_service.py ← KnowledgeBaseStorage (SRP)
│ └── feedback_storage.py ← FeedbackStorage (SRP)
└── commands/
├── research.py ← Web-search → knowledge_base/
├── review.py ← Gemini multimodal → feedback/
├── download.py ← Fetch test media → samples/
├── read.py ← KB reader
├── onboard.py ← Agent/human help system
├── hello.py ← Example
└── sum.py ← Example
Output directories
knowledge_base/ ← research output
index.json
<date>/<topic>.md
feedback/ ← Gemini review output
index.json
<date>/
images/ video/ audio/ text/ documents/
<review>.md
samples/ ← downloaded test assets
Adding a new command
- Create
solid_cli/commands/my_cmd.py - Subclass
Commandand implementname,add_arguments,run - Done — the registry auto-discovers it, no wiring needed
External packages can also register commands via the solid_cli.commands
entry-point group in their own pyproject.toml.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file solid_cli-1.1.0.tar.gz.
File metadata
- Download URL: solid_cli-1.1.0.tar.gz
- Upload date:
- Size: 18.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
655a3f5cc1714bf6e17d14d8d3dd5c763a346e778a3e06b26a7ebb2cab6bab78
|
|
| MD5 |
8a7ed058fdf170b63dcb9f27f014c83c
|
|
| BLAKE2b-256 |
3547c9aa597e526c6cc4ef7261a4ecdd8ad0a32708a7f16006d7aadbe537f847
|
File details
Details for the file solid_cli-1.1.0-py3-none-any.whl.
File metadata
- Download URL: solid_cli-1.1.0-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66008738a0cb121ab597330c2ed63736239b78c71032458674f9bc225b0566c7
|
|
| MD5 |
6e31554bd674478fdf1814d3d6226f28
|
|
| BLAKE2b-256 |
ef23edda9894c16df5e75f174be37a93fb1657378712292a0e9ba8f7d25f2077
|