diff --git a/.gitignore b/.gitignore index e1b286a08..cef559d80 100644 --- a/.gitignore +++ b/.gitignore @@ -93,6 +93,7 @@ !/quietshrink/ !/mailchimp/ !/3MF/ +!/calibre/ # Step 5: Inside each software dir, ignore everything (including dotfiles) /gimp/* /gimp/.* @@ -192,6 +193,8 @@ /quietshrink/.* /mailchimp/* /mailchimp/.* +/calibre/* +/calibre/.* # Step 6: ...except agent-harness/ !/gimp/agent-harness/ @@ -241,6 +244,7 @@ !/QGIS/agent-harness/ !/n8n/agent-harness/ !/obsidian/agent-harness/ +!/calibre/agent-harness/ !/safari/ !/safari/agent-harness/ !/unrealinsights/agent-harness/ diff --git a/README.md b/README.md index be163b505..38f1d253e 100644 --- a/README.md +++ b/README.md @@ -880,6 +880,13 @@ Each application received complete, production-ready CLI interfaces โ€” not demo โœ… New +๐Ÿ“– Calibre +E-book Library Management +cli-anything-calibre +calibredb + ebook-convert + ebook-meta +โœ… 58 + + ๐Ÿ“ Mubu Knowledge Management & Outlining cli-anything-mubu @@ -1191,6 +1198,7 @@ cli-anything/ โ”œโ”€โ”€ ๐Ÿ“„ libreoffice/agent-harness/ # LibreOffice CLI (158 tests) โ”œโ”€โ”€ ๐Ÿ“ง mailchimp/agent-harness/ # Mailchimp Marketing API CLI (303 commands, 36 unit tests) โ”œโ”€โ”€ ๐Ÿ“š zotero/agent-harness/ # Zotero CLI (new, write import support) +โ”œโ”€โ”€ ๐Ÿ“– calibre/agent-harness/ # Calibre CLI (58 tests: 38 unit + 20 E2E) โ”œโ”€โ”€ ๐Ÿ“ mubu/agent-harness/ # Mubu CLI (96 tests) โ”œโ”€โ”€ ๐Ÿ“น obs-studio/agent-harness/ # OBS Studio CLI (153 tests) โ”œโ”€โ”€ ๐Ÿ“ฑ nslogger/agent-harness/ # NSLogger CLI (139 tests) diff --git a/calibre/agent-harness/.gitignore b/calibre/agent-harness/.gitignore new file mode 100644 index 000000000..8278e6b7b --- /dev/null +++ b/calibre/agent-harness/.gitignore @@ -0,0 +1,24 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class +*.so + +# Package build +*.egg-info/ +dist/ +build/ +*.egg + +# Testing +.pytest_cache/ +.coverage +htmlcov/ + +# IDE +.idea/ +.vscode/ +*.swp + +# Session files +.cli-anything-calibre/ \ No newline at end of file diff --git a/calibre/agent-harness/CALIBRE.md b/calibre/agent-harness/CALIBRE.md new file mode 100644 index 000000000..b88d209ff --- /dev/null +++ b/calibre/agent-harness/CALIBRE.md @@ -0,0 +1,160 @@ +# Calibre CLI Harness โ€” SOP + +## Overview + +Calibre is the world's most popular e-book management application. This CLI harness wraps the real Calibre tools (`calibredb`, `ebook-convert`, `ebook-meta`) to give AI agents and scripts a clean, structured interface for library management, metadata editing, and format conversion. + +## Backend Architecture + +### Real Software Used + +All heavy lifting is done by the **actual Calibre binaries**: + +| Task | Tool | Command Pattern | +|------|------|----------------| +| Library operations | `calibredb` | `calibredb --with-library ` | +| Format conversion | `ebook-convert` | `ebook-convert input.epub output.mobi` | +| File metadata | `ebook-meta` | `ebook-meta book.epub --field value` | + +The CLI harness is a **stateful wrapper** โ€” it tracks the library path in a session file and passes it to every `calibredb` invocation. It never reimplements library logic. + +### Data Model + +``` +~/Calibre Library/ +โ”œโ”€โ”€ metadata.db # SQLite database (all metadata) +โ”œโ”€โ”€ Author Name (ID)/ +โ”‚ โ”œโ”€โ”€ Book Title (ID)/ +โ”‚ โ”‚ โ”œโ”€โ”€ cover.jpg # Cover image +โ”‚ โ”‚ โ”œโ”€โ”€ metadata.opf # OPF metadata file +โ”‚ โ”‚ โ”œโ”€โ”€ Title - Author.epub +โ”‚ โ”‚ โ””โ”€โ”€ Title - Author.mobi +``` + +### Session State + +The CLI maintains a JSON session file at `~/.cli-anything-calibre/session.json`: +```json +{ + "library_path": "/path/to/Calibre Library", + "last_command": "list", + "filters": {} +} +``` + +## Command Groups + +### `library` - Library management +- `connect ` โ€” Set active library path +- `info` โ€” Show library stats (book count, formats, size) +- `check` โ€” Verify library integrity + +### `books` โ€” Book operations (wrap `calibredb`) +- `list` โ€” List books with filtering and sorting +- `search ` โ€” Search using Calibre query language +- `add ` โ€” Add book files to library +- `remove ` โ€” Remove books (move to trash) +- `show ` โ€” Show full metadata for a book +- `export ` โ€” Export books to directory + +### `meta` โ€” Metadata editing (wrap `calibredb set_metadata`) +- `set ` โ€” Set a metadata field +- `get [field]` โ€” Get metadata (all or specific field) +- `embed ` โ€” Embed metadata into book files + +### `formats` โ€” Format management (wrap `calibredb` + `ebook-convert`) +- `list ` โ€” List available formats for a book +- `add ` โ€” Add a format to a book +- `remove ` โ€” Remove a format from a book +- `convert ` โ€” Convert book format + +### `custom` โ€” Custom columns (wrap `calibredb`) +- `list` โ€” List all custom columns +- `add