Scan Report
20 /100
calibre-catalog-read
Read-only Calibre catalog lookup and one-book analysis workflow over a running Content server
Legitimate Calibre catalog read skill with minor documentation inconsistencies; no malicious behavior detected.
Safe to install
Consider clarifying in SKILL.md that the analysis pipeline writes to Calibre comments. Passwords on command-line is acceptable given the tooling context.
Findings 2 items
| Severity | Finding | Location |
|---|---|---|
| Low | Metadata write not clearly declared as exception to read-only claim Doc Mismatch | scripts/run_analysis_pipeline.py:178 |
| Low | Password passed on command line Credential Theft | scripts/calibredb_read.mjs:195 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Shell | WRITE | WRITE | ✓ Aligned | SKILL.md metadata declares bin dependencies; scripts use subprocess for calibred… |
| Filesystem | WRITE | WRITE | ✓ Aligned | SKILL.md declares localWrites to state/*; scripts write runs.json, sqlite DB, an… |
| Network | READ | READ | ✓ Aligned | HTTP requests to Calibre Content Server for catalog operations; no arbitrary net… |
| Environment | READ | READ | ✓ Aligned | Reads CALIBRE_PASSWORD, CALIBRE_USERNAME, CALIBRE_WITH_LIBRARY; no exfiltration … |
2 findings
Medium External URL 外部 URL
http://192.168.11.20:8080/#Calibreライブラリ README.md:52 Medium External URL 外部 URL
https://json-schema.org/draft/2020-12/schema references/subagent-analysis.schema.json:2 File Tree
11 files · 68.1 KB · 1890 lines JavaScript 4f · 948L
Markdown 3f · 477L
Python 2f · 404L
JSON 2f · 61L
├─
▾
references
│ ├─
subagent-analysis.prompt.md
Markdown
│ ├─
subagent-analysis.schema.json
JSON
│ └─
subagent-input.schema.json
JSON
├─
▾
scripts
│ ├─
analysis_db.py
Python
│ ├─
calibredb_read.mjs
JavaScript
│ ├─
handle_completion.mjs
JavaScript
│ ├─
prepare_subagent_input.mjs
JavaScript
│ ├─
run_analysis_pipeline.py
Python
│ └─
run_state.mjs
JavaScript
├─
README.md
Markdown
└─
SKILL.md
Markdown
Security Positives
✓ Subagent architecture cleanly separates heavy analysis from main agent - reduces risk of prompt injection
✓ State management with runs.json prevents duplicate processing and race conditions
✓ Input validation on book_id and analysis JSON paths before processing
✓ No external network connections except to configured Calibre server
✓ No base64/encoded execution, no reverse shell patterns, no credential exfiltration
✓ Clean separation between read-only catalog operations (calibredb_read.mjs) and analysis workflow (run_analysis_pipeline.py)
✓ Uses hash-based deduplication to avoid re-analysis of unchanged files
✓ Subagent prompt template includes strict read contract preventing unauthorized tool usage