diff --git a/.gitignore b/.gitignore
index 30cdd48002..e94bb721cf 100644
--- a/.gitignore
+++ b/.gitignore
@@ -75,6 +75,7 @@
!/rms/
!/renderdoc/
!/cloudcompare/
+!/calibre
!/openscreen/
!/QGIS/
!/n8n/
@@ -83,6 +84,7 @@
!/nsight-graphics/
!/lldb/
+
# Step 5: Inside each software dir, ignore everything (including dotfiles)
/gimp/*
/gimp/.*
diff --git a/README.md b/README.md
index 30397567c8..54d3ee0b6b 100644
--- a/README.md
+++ b/README.md
@@ -869,6 +869,13 @@ Each application received complete, production-ready CLI interfaces โ not demo
โ
New |
+| ๐ Calibre |
+Ebook Library Management |
+cli-anything-calibre |
+calibredb + ebook-meta + ebook-convert |
+โ
New |
+
+
| ๐ Mubu |
Knowledge Management & Outlining |
cli-anything-mubu |
@@ -1156,6 +1163,7 @@ cli-anything/
โโโ ๐ browser/agent-harness/ # Browser CLI (DOMShell MCP, new)
โโโ ๐ libreoffice/agent-harness/ # LibreOffice CLI (158 tests)
โโโ ๐ zotero/agent-harness/ # Zotero CLI (new, write import support)
+โโโ ๐ calibre/agent-harness/ # Calibre CLI (new, ebook workflow support)
โโโ ๐ mubu/agent-harness/ # Mubu CLI (96 tests)
โโโ ๐น obs-studio/agent-harness/ # OBS Studio CLI (153 tests)
โโโ ๐๏ธ kdenlive/agent-harness/ # Kdenlive CLI (155 tests)
diff --git a/README_CN.md b/README_CN.md
index 785f30f33b..99e600e9dd 100644
--- a/README_CN.md
+++ b/README_CN.md
@@ -548,6 +548,13 @@ CLI-Anything ้็จไบไปปไฝๆไปฃ็ ๅบ็่ฝฏไปถ โโ ไธ้้ขๅ๏ผไธ้
โ
ๆฐๅข |
+| ๐ Calibre |
+็ตๅญไนฆๅบ็ฎก็ |
+cli-anything-calibre |
+calibredb + ebook-meta + ebook-convert |
+โ
ๆฐๅข |
+
+
| ๐น OBS Studio |
็ดๆญไธๅฝๅถ |
cli-anything-obs-studio |
@@ -724,6 +731,7 @@ cli-anything/
โโโ ๐ต audacity/agent-harness/ # Audacity CLI๏ผ161 ้กนๆต่ฏ๏ผ
โโโ ๐ libreoffice/agent-harness/ # LibreOffice CLI๏ผ158 ้กนๆต่ฏ๏ผ
โโโ ๐ zotero/agent-harness/ # Zotero CLI๏ผๆฐๅข๏ผๆฏๆๆ็ฎๅฏผๅ
ฅ๏ผ
+โโโ ๐ calibre/agent-harness/ # Calibre CLI๏ผๆฐๅข๏ผ็ตๅญไนฆๅทฅไฝๆต๏ผ
โโโ ๐น obs-studio/agent-harness/ # OBS Studio CLI๏ผ153 ้กนๆต่ฏ๏ผ
โโโ ๐๏ธ kdenlive/agent-harness/ # Kdenlive CLI๏ผ155 ้กนๆต่ฏ๏ผ
โโโ ๐ฌ shotcut/agent-harness/ # Shotcut CLI๏ผ154 ้กนๆต่ฏ๏ผ
diff --git a/README_JA.md b/README_JA.md
index b80405841f..f21a6fd842 100644
--- a/README_JA.md
+++ b/README_JA.md
@@ -508,6 +508,13 @@ CLI-Anythingใฏใณใผใใใผในใๆใคใใใใใฝใใใฆใงใขใงๅ
โ
158 |
+| ๐ Calibre |
+้ปๅญๆธ็ฑใฉใคใใฉใช็ฎก็ |
+cli-anything-calibre |
+calibredb + ebook-meta + ebook-convert |
+โ
ๆฐ่ฆ |
+
+
| ๐น OBS Studio |
ใฉใคใในใใชใผใใณใฐ & ้ฒ็ป |
cli-anything-obs-studio |
@@ -646,6 +653,7 @@ cli-anything/
โโโ โ๏ธ inkscape/agent-harness/ # Inkscape CLI (202ใในใ)
โโโ ๐ต audacity/agent-harness/ # Audacity CLI (161ใในใ)
โโโ ๐ libreoffice/agent-harness/ # LibreOffice CLI (158ใในใ)
+โโโ ๐ calibre/agent-harness/ # Calibre CLI๏ผๆฐ่ฆใ้ปๅญๆธ็ฑใฏใผใฏใใญใผ๏ผ
โโโ ๐น obs-studio/agent-harness/ # OBS Studio CLI (153ใในใ)
โโโ ๐๏ธ kdenlive/agent-harness/ # Kdenlive CLI (155ใในใ)
โโโ ๐ฌ shotcut/agent-harness/ # Shotcut CLI (154ใในใ)
diff --git a/calibre/agent-harness/AGENT_TEST_PROMPT.md b/calibre/agent-harness/AGENT_TEST_PROMPT.md
new file mode 100644
index 0000000000..eab77cd6d2
--- /dev/null
+++ b/calibre/agent-harness/AGENT_TEST_PROMPT.md
@@ -0,0 +1,164 @@
+# Calibre Agent Test Prompt (Bilingual)
+
+> Purpose: reproducible **Agent test** prompt for OpenCode/Cursor/Claude Code in CLI-only mode.
+> ็ฎ็๏ผๆไพๅฏๅค็จ็ **Agent test** ๆ็คบ่ฏ๏ผไป
CLI๏ผ๏ผ็จไบๅผๆบๅค็ฐใ
+> Note / ่ฏดๆ๏ผThis file is an **example agent-test prompt/keyword template** for reproducible validation and can be adapted per environment.
+> ๆณจ๏ผ่ฏฅๆไปถๆฏ็จไบๅค็ฐๅฎ้ช็**็คบไพๆบ่ฝไฝๆต่ฏๆ็คบ่ฏ/ๅ
ณ้ฎ่ฏๆจกๆฟ**๏ผๅฏๆ็ฏๅขๆฟๆข่ทฏๅพไธๅๆฐใ
+> Status / ็ถๆ๏ผ**Example template (not a normative spec)**.
+> ็ถๆ๏ผ**็คบไพๆจกๆฟ๏ผ้่ง่ๆงๆ ๅๆๆกฃ๏ผ**ใ
+
+---
+
+## Quick Notes / ไฝฟ็จ่ฏดๆ
+
+- **System / ็ณป็ป**: Windows (PowerShell examples below)
+- **Terminal / ็ป็ซฏ็ฑปๅ**: PowerShell (if using CMD, adjust line continuation syntax)
+- **Agent mode / ไปฃ็ๆจกๅผ**: CLI-only (no GUI actions during Agent test)
+- **Path placeholders / ่ทฏๅพๅ้ๅฏๆฟๆข**:
+ - `{{LIB}}` = calibre library root (must contain `metadata.db`)
+ - `{{EPUB}}` = input epub path
+ - `{{OUT}}` = export output directory
+ - `{{CONVERTED_FILE}}` = converted mobi output path
+
+Recommended defaults:
+
+```text
+{{LIB}} = D:\Books\Calibre Library
+{{EPUB}} = D:\AgentTest\sample.epub
+{{OUT}} = D:\AgentTest\out
+{{CONVERTED_FILE}} = D:\AgentTest\out\converted\agent-test.mobi
+```
+
+---
+
+## Prompt (ZH + EN)
+
+```text
+[ไธญๆ]
+ไฝ ๆฏไธไธชๅชๅ
่ฎธไฝฟ็จ CLI ็ๆง่กไปฃ็ใๅฝๅ็ฎๆ ๏ผๅฎๆ calibre ็ Agent test๏ผๅ ๅ/้ซ้ถ้ช่ฏ๏ผใไธ่ฆ็ๆๆฐ harness๏ผไธ่ฆไฝฟ็จไปปไฝ GUIใ
+
+ใ็ฏๅขไธๅบๅฎ่ทฏๅพใ
+- OS: Windows (PowerShell)
+- calibre ๅทฒๅฎ่ฃ
+- cli-anything-calibre ๅทฒๅฎ่ฃ
+- LIB = {{LIB}}
+- EPUB = {{EPUB}}
+- OUT = {{OUT}}
+- CONVERTED_FILE = {{CONVERTED_FILE}}
+
+ใ็กฌๆง่งๅใ
+1) ็ฆๆญข็ๅๆฐ๏ผไธ็กฎๅฎๅฟ
้กปๅ
่ฟ่กๅฏนๅบ --helpใ
+2) ๆฏไธๆญฅ้ฝ่พๅบ๏ผๆง่กๅฝไปคใexit codeใๅ
ณ้ฎ่พๅบใ
+3) ๅคฑ่ดฅๆถๅ
ๆๅฐ้่ฏฏ๏ผๅ่ชไฟฎๅค็ปง็ปญใ
+4) ๅ
จ็จไป
CLI๏ผไธๅพ่ฐ็จ GUIใ
+5) ่ทฏๅพๅฟ
้กปไฝฟ็จ็ปๅฏน่ทฏๅพใ
+
+ใPreflight๏ผๅฟ
้กปๅ
ๆง่ก๏ผใ
+A. ๆฃๆฅๅฝไปคๅฏ็จ๏ผ้ๆกๆง่ก๏ผ๏ผ
+- cli-anything-calibre --help
+- calibredb --version
+- ebook-convert --version
+- ebook-meta --version
+
+B. ่ฅ `cli-anything-calibre` ไธๅฏ่ฐ็จ๏ผ
+- ่ชๅจๅฎไฝๅนถไฝฟ็จ Python ็จๆท Scripts ไธ็ `cli-anything-calibre.exe`๏ผๆไธดๆถไฟฎๆญฃ PATH๏ผๅ้่ฏ๏ผ็ดๅฐๅฏ็จใ
+
+C. ่ฅ `EPUB` ไธๅญๅจ๏ผ
+- ่ชๅจๅๅปบไธไธชๅๆณ EPUB ๅ็ปง็ปญ๏ผๅฏ็จ html -> ebook-convert๏ผๆๆๅฐๅๆณ zip ็ปๆ๏ผ็กฎไฟ mimetype ๆชๅ็ผฉ๏ผใ
+
+D. ่ฅ `LIB` ไธๆฏๆๆ calibre ไนฆๅบ๏ผ็ผบๅฐ metadata.db๏ผ๏ผ
+- ๅ
ๅๅงๅไนฆๅบ๏ผไพๅฆ `calibredb --with-library "" list`๏ผ๏ผๅ็ปง็ปญใ
+
+E. ๆขๆตๅญๅฝไปคๅธฎๅฉ๏ผ้ๆกๆง่ก๏ผ๏ผ
+- cli-anything-calibre library --help
+- cli-anything-calibre book --help
+- cli-anything-calibre export --help
+- cli-anything-calibre convert --help
+- cli-anything-calibre meta --help
+
+ใไธปไปปๅก้พ๏ผไธฅๆ ผๆ้กบๅบ๏ผใ
+1) `library stats`๏ผJSON๏ผ
+2) `book add`๏ผๅฐ `EPUB` ๅ
ฅๅบ๏ผ`--title "Agent Test Book"`๏ผ`--authors "OpenCode Bot"`
+3) `book search "title:Agent Test Book"` ๅนถๆๅ `book_id`๏ผๅญๆฎต้ๅธธไธบ `id`๏ผ
+4) `export book --to-dir "" --single-dir`
+5) ๅจ `OUT` ไธ้ๅฝๅ็ฐๅฏผๅบ็ `.epub`๏ผไธ่ฆๅๆญปๆไปถๅ๏ผ๏ผ่ฎฐไธบ `exported_epub`
+6) `convert run "" "" --preset kindle`
+7) `meta show ""`
+8) ๆ ก้ช `CONVERTED_FILE` ๅญๅจไธๅคงๅฐ > 0๏ผๅนถ่พๅบๅญ่ๆฐ
+
+ใ่พๅบๆ ผๅผ่ฆๆฑใ
+- ๅ
่พๅบๅฎๆดๅๆญฅๅค็๏ผๅฝไปค + exit code + ๅ
ณ้ฎ่พๅบ๏ผ
+- ๆๅไธ่กๅฟ
้กป่พๅบๅ่ก JSON๏ผ
+ FINAL_RESULT={"library_path":"...","book_id":...,"export_dir":"...","exported_epub":"...","converted_file":"...","converted_file_size_bytes":...,"all_exit_zero":true/false}
+
+------------------------------------------------------------
+
+[English]
+You are a CLI-only execution agent. Goal: complete a calibre Agent test (bonus/advanced verification). Do not generate a new harness. Do not use GUI.
+
+[Environment and fixed paths]
+- OS: Windows (PowerShell)
+- calibre is installed
+- cli-anything-calibre is installed
+- LIB = {{LIB}}
+- EPUB = {{EPUB}}
+- OUT = {{OUT}}
+- CONVERTED_FILE = {{CONVERTED_FILE}}
+
+[Hard rules]
+1) Do not guess arguments; run --help first when unsure.
+2) For every step, print command, exit code, and key output.
+3) On failure, print error first, then self-correct and continue.
+4) CLI-only flow; no GUI actions.
+5) Use absolute paths only.
+
+[Preflight (required)]
+A. Verify command availability:
+- cli-anything-calibre --help
+- calibredb --version
+- ebook-convert --version
+- ebook-meta --version
+
+B. If `cli-anything-calibre` is not callable:
+- Auto-locate `cli-anything-calibre.exe` from Python user Scripts (or temporarily fix PATH), then retry.
+
+C. If `EPUB` does not exist:
+- Auto-create a valid EPUB (html -> ebook-convert, or minimal valid zip EPUB with uncompressed mimetype).
+
+D. If `LIB` is not a valid calibre library (missing metadata.db):
+- Initialize it first (e.g., `calibredb --with-library "" list`).
+
+E. Probe subcommand helps:
+- cli-anything-calibre library --help
+- cli-anything-calibre book --help
+- cli-anything-calibre export --help
+- cli-anything-calibre convert --help
+- cli-anything-calibre meta --help
+
+[Main task chain (strict order)]
+1) `library stats` (JSON)
+2) `book add` with `--title "Agent Test Book"` and `--authors "OpenCode Bot"`
+3) `book search "title:Agent Test Book"` and extract `book_id` (typically `id`)
+4) `export book --to-dir "" --single-dir`
+5) Recursively discover exported `.epub` under `OUT` (do not hardcode filename), call it `exported_epub`
+6) `convert run "" "" --preset kindle`
+7) `meta show ""`
+8) Validate `CONVERTED_FILE` exists and size > 0, print file size in bytes
+
+[Output requirements]
+- First provide step-by-step recap (command + exit code + key output)
+- Final line must be a one-line JSON:
+ FINAL_RESULT={"library_path":"...","book_id":...,"export_dir":"...","exported_epub":"...","converted_file":"...","converted_file_size_bytes":...,"all_exit_zero":true/false}
+```
+
+---
+
+## Optional: GUI Round-trip Checklist / ๅฏ้ GUI ๅพ่ฟๆฃๆฅ
+
+After CLI flow succeeds, verify consistency in Calibre GUI:
+
+1. Open the same library path (`{{LIB}}`).
+2. Confirm book row exists (`Agent Test Book` / `OpenCode Bot`).
+3. Open metadata editor and verify title/author.
+4. Confirm exported and converted files exist and are non-empty.
+
diff --git a/calibre/agent-harness/CALIBRE.md b/calibre/agent-harness/CALIBRE.md
new file mode 100644
index 0000000000..413982bf09
--- /dev/null
+++ b/calibre/agent-harness/CALIBRE.md
@@ -0,0 +1,133 @@
+# Calibre: Project-Specific Analysis & SOP
+
+## Architecture Summary
+
+calibre is an ebook management suite covering library operations, metadata editing,
+export, and format conversion. Unlike many GUI-first tools, calibre already
+ships mature native CLI binaries, so the harness strategy is to compose these
+commands into an agent-friendly, stateful interface.
+
+```
+โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
+โ Calibre GUI โ
+โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
+โ โ Library โ โ Metadata โ โ Convert โ โ
+โ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โ
+โ โ โ โ โ
+โ โโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโ โ
+โ โ Calibre backend (db + metadata) โ โ
+โ โ SQLite library + conversion stack โ โ
+โ โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ โ
+โ โ โ
+โ โโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ โ
+โ โ Native CLI binaries โ โ
+โ โ calibredb | ebook-meta | โ โ
+โ โ ebook-convert โ โ
+โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
+โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
+```
+
+Primary backend components:
+- Library database: `src/calibre/db/backend.py`
+- Database cache layer: `src/calibre/db/cache.py`
+- Legacy library API: `src/calibre/db/legacy.py`
+- Search/query layer: `src/calibre/db/search.py`
+- Metadata readers/writers: `src/calibre/ebooks/metadata/`
+- Conversion pipeline: `src/calibre/ebooks/conversion/`
+
+The GUI is primarily a PyQt6 frontend over these backend capabilities.
+
+## CLI Strategy: Native CLI Composition + Session Layer
+
+The harness wraps real calibre binaries and adds:
+1. stable command groups for agents (`library`, `book`, `meta`, `convert`, `export`, `session`)
+2. consistent machine-readable output via `--json`
+3. REPL-first interactive flow with undo/redo session history
+4. explicit validation and clearer error reporting for automation
+
+### Core Domains
+
+| Domain | Module | Native Tool(s) | Key Operations |
+|--------|--------|----------------|----------------|
+| Library | `core/library.py` | `calibredb` | open/info/list-fields/stats |
+| Books | `core/books.py` | `calibredb` | add/list/get/search/remove/set-field |
+| Metadata | `core/metadata.py` | `ebook-meta`, `calibredb` | show/set/clear/set-cover |
+| Convert | `core/convert.py` | `ebook-convert` | formats/presets/run |
+| Export | `core/export.py` | `calibredb` | export book/catalog/backup |
+| Session | `core/session.py` | harness layer | status/undo/redo/history/save |
+
+### Native Tool Registry
+
+From `src/calibre/linux.py`, calibre ships these console tools:
+- `calibredb`
+- `ebook-convert`
+- `ebook-meta`
+- `ebook-polish`
+- `calibre-server`
+- `calibre-debug`
+- `calibre-customize`
+- `fetch-ebook-metadata`
+- `calibre-smtp`
+- `calibre-parallel`
+- `calibre-complete`
+- `web2disk`
+
+Harness-critical tools:
+- `calibredb` for library inspection and mutation
+- `ebook-meta` for per-file metadata inspection/update
+- `ebook-convert` for format conversion
+
+### Conversion Presets
+
+Current harness-facing presets:
+- `kindle`
+- `tablet`
+- `generic-epub`
+
+These are mapped to curated `ebook-convert` argument bundles for stable agent use.
+
+### Translation Gap: Low Risk
+
+There is minimal translation gap because the harness delegates core behavior to
+calibre's own binaries rather than reimplementing internals. The main harness
+responsibility is orchestration, validation, and normalized output.
+
+## Data Model and Mapping
+
+calibre libraries are directory-based and centered on `metadata.db` (SQLite).
+Book records map to folders containing one or more format files plus metadata.
+This allows direct CLI operations without emulating GUI state.
+
+### Library/book mapping (`calibredb`)
+- list books -> `calibredb list --for-machine`
+- search books -> `calibredb list --search ... --for-machine`
+- add book -> `calibredb add`
+- remove book -> `calibredb remove`
+- show metadata -> `calibredb show_metadata`
+- export books -> `calibredb export`
+- backup metadata -> `calibredb backup_metadata`
+
+### File metadata mapping (`ebook-meta`)
+- inspect file metadata -> `ebook-meta `
+- mutate file metadata -> `ebook-meta --title ... --authors ...`
+- library-record metadata update -> `calibredb set_metadata `
+
+### Conversion mapping (`ebook-convert`)
+- convert formats -> `ebook-convert input.epub output.mobi ...`
+
+## GUI Toolkit
+
+The GUI uses PyQt6 through calibre's lazy-loading `qt` shim.
+
+Relevant paths:
+- `src/qt/`
+- `src/calibre/gui2/`
+- `pyproject.toml`
+
+## Constraints
+
+- Real calibre tools are hard dependencies for E2E workflows
+- The harness must fail clearly if required binaries are not on PATH
+- REPL should remain the default entry behavior
+- All commands should support `--json`
+- Session persistence should use locked JSON writes
diff --git a/calibre/agent-harness/cli_anything/calibre/README.md b/calibre/agent-harness/cli_anything/calibre/README.md
new file mode 100644
index 0000000000..ca193f6e0d
--- /dev/null
+++ b/calibre/agent-harness/cli_anything/calibre/README.md
@@ -0,0 +1,166 @@
+# cli-anything-calibre
+
+A stateful command-line interface for calibre library management, metadata
+editing, export, and format conversion.
+
+This harness wraps real calibre tools (`calibredb`, `ebook-meta`,
+`ebook-convert`) and adds:
+- a unified Click CLI
+- REPL mode by default
+- machine-readable JSON output via `--json`
+- lightweight session state with undo/redo history
+
+## Requirements
+
+- Python 3.10+
+- calibre installed and available on PATH
+
+Typical backend binaries used by this harness:
+- `calibredb`
+- `ebook-meta`
+- `ebook-convert`
+
+## Installation
+
+```bash
+# From calibre/agent-harness
+pip install -e .
+```
+
+## Quick Start
+
+```bash
+# Show help
+cli-anything-calibre --help
+
+# Enter REPL mode
+cli-anything-calibre
+
+# Open a library and inspect
+cli-anything-calibre --json --library "D:/Books/Calibre Library" library stats
+cli-anything-calibre --json --library "D:/Books/Calibre Library" book list --limit 5
+
+# Add, search, export, and convert
+cli-anything-calibre --json --library "D:/Books/Calibre Library" book add "D:/tmp/book.epub" --title "My Book" --authors "Me"
+cli-anything-calibre --json --library "D:/Books/Calibre Library" book search "title:My Book" --limit 5
+cli-anything-calibre --json --library "D:/Books/Calibre Library" export book 1 --to-dir "D:/tmp/exported" --single-dir
+cli-anything-calibre --json convert run "D:/tmp/exported/My Book.epub" "D:/tmp/converted/My Book.mobi" --preset kindle
+```
+
+## JSON Output Mode
+
+All commands support `--json` for machine-readable output:
+
+```bash
+cli-anything-calibre --json --library "D:/Books/Calibre Library" library info
+cli-anything-calibre --json --library "D:/Books/Calibre Library" book get 1
+```
+
+## Interactive REPL
+
+```bash
+# Starts REPL when no subcommand is provided
+cli-anything-calibre
+```
+
+Inside REPL you can run grouped commands and use session operations (`undo`,
+`redo`, `history`) through the `session` group.
+
+## Command Groups
+
+### Library
+```
+library open - Open a calibre library
+library info - Show current library metadata
+library list-fields - List supported library fields
+library stats - Show book/author/format statistics
+```
+
+### Book
+```
+book add - Add an ebook to library
+book list - List books
+book get - Show one book metadata
+book search - Search books by calibre query syntax
+book set-field - Update selected fields (title/authors/tags...)
+book remove - Remove a book
+```
+
+### Meta
+```
+meta show - Show file metadata
+meta set [--title --authors] - Update file metadata
+meta set-cover - Set cover image
+meta clear - Clear selected metadata fields
+```
+
+### Convert
+```
+convert formats - List common output formats
+convert presets - List preset argument bundles
+convert run