Agent skill · Audited from source
translate-book
skill · deusyu/translate-bookMIT licenceAudited 20 Oct 2026 · source 553fb3059719
Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit 553fb3059719 and observed filesystem access and no hard-coded secrets. The audit raised 6 findings, 0 critical or high. What it does: Translate books (PDF/DOCX/EPUB) into any language using parallel sub-agents. Converts input -> Markdown chunks -> translated chunks -> HTML/DOCX/EPUB/PDF.
Cite
Cite this page
ModelsAtlas. “translate-book (deusyu/translate-book)”. Retrieved 20 Oct 2026. https://modelsatlas.com/skills/deusyu/translate-book
Trust audit
Audit 0.4.1 · source read 20 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 13,985 of 14,816 audited skills.
What the source does
- FilesystemDeclared7 observations
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 3 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | WARN | 3 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (6)
MEDIUMObfuscation / stealthobf.zero_width · scripts/convert.py:568
metadata, body = split_front_matter(content.replace('', ''))- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMObfuscation / stealthobf.zero_width · scripts/convert.py:587
content = content.replace('', '').replace(' ', ' ')- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInventory / provenanceinv.binary · tests/baselines/diligent-dick/diligent-dick.epub
diligent-dick.epub
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
LOWInventory / provenanceinv.binary · tests/baselines/sleepy-hollow/sleepy-hollow.epub
sleepy-hollow.epub
- Why
- a compiled or binary member cannot be reviewed from source
- Fix
- ship source, or explain the binary in the README
LOWObfuscation / stealthobf.decode_call · scripts/convert.py:619
data = base64.b64decode(data_uri.group(2))
- Why
- No further detail recorded for this rule.
- Fix
- —
INFOInventory / provenanceinv.oversize · tests/baselines/standard-alice/standard-alice.epub
tests/baselines/standard-alice/standard-alice.epub
- Why
- 10635439 bytes not read
- Fix
- —
Audit 0.4.1 · source sha 553fb3059719 · 20 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherdeusyu GitHub userOwner of the repository this skill is read from
- Source folderdeusyu/translate-bookThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict553fb3059719A new audit runs when the source changes
- Repository statusNot archivedLast push 8 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Translate books (PDF/DOCX/EPUB) into any language using parallel sub-agents. Converts input -> Markdown chunks -> translated chunks -> HTML/DOCX/EPUB/PDF.
---
name: translate-book
description: Translate books (PDF/DOCX/EPUB) into any language using parallel sub-agents. Converts input -> Markdown chunks -> translated chunks -> HTML/DOCX/EPUB/PDF.
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, Agent, AskUserQuestion
metadata: {"openclaw":{"requires":{"bins":["python3","pandoc","ebook-convert"],"anyBins":["calibre","ebook-convert"]},"homepage":"https://github.com/deusyu/translate-book"}}
---
# Book Translation Skill
You are a book translation assistant. You translate entire books from one language to another by orchestrating a multi-step pipeline.
## Workflow
### 1. Collect Parameters
Determine the following from the user's message:
- **file_path**: Path to the input file (PDF, DOCX, EPUB, or Markdown) — REQUIRED
- **target_lang**: Target language code (default: `zh`) — e.g. zh, en, ja, ko, fr, de, es
- **concurrency**: Number of parallel sub-agents per batch (default: `8`)
- **temp_root**: Optional directory under which `{filename}_temp/` should be created
- **epub_cover**: Optional explicit cover image path for EPUB output
- **export_name**: Optional filename stem for user-facing output aliases
- **custom_instructions**: Any additional translation instructions from the user (optional)
If the file path is not provided, ask the user.
### 2. Preprocess — Convert to Markdown Chunks
Run the conversion script to produce chunks:
```bash
python3 {baseDir}/scripts/convert.py "<file_path>" --olang "<target_lang>"
```
If the user provided `temp_root`, add `--temp-root "<temp_root>"`. The temp
directory leaf name remains `{filename}_temp/`; only the parent directory
changes.
For PDFs, Calibre reflows text by coordinate heuristics, which shatters math
formulas, flattens tables, and interleaves multi-column layouts before
translation starts. If the PDF is an academic or technical document and a
layout-aware parser is already installed — or the user asks for one — extract
the PDF with it first, then pass the resulting Markdown file to `convert.py`
instead of the PDF. Markdown input (`.md` / `.markdown`) skips Calibre:
- MinerU >= 4: `mineru-kit parse "<file_path>" -o "<name>.md"`
- Marker: `marker_single "<file_path>" --output_dir "<dir>"`, then use `<dir>/<name>/<name>.md`
Keep the PDF's file name stem for the Markdown file, because the temp
directory is named after it. These CLIs change between versions; check the
parser's `--help` if a flag is rejected. Do not install a parser without the
user's consent, because they download large models. Images next to the
Markdown file and base64 images inlined in it are copied into the temp
directory. `--strip-page-numbers` does not apply to Markdown input.
This creates a `{filename}_temp/` directory containing:
- `input.html` (Calibre input only), `input.md` — intermediate files
- `chunk0001.md`, `chunk0002.md`, ... — source chunks for translation
- `manifest.json` — chunk manifest for tracking and validation
- `source_fingerprint.json` — SHA-256 identity of the source bytes this temp dir was built from
- `config.txt` — pipeline configuration with metadata
If `convert.py` aborts because the temp dir was created from different source
bytes, do not reuse it — delete the temp directory or pass a fresh
`--temp-root`, then re-run. Temp dirs created before fingerprinting existed
are adopted with a warning and fingerprinted on the next successful run.
### 3. Discover Source Chunks
Use Glob to find all source chunks:
```
Glob: {filename}_temp/chunk*.md
```
Exclude `output_chunk*.md` from the source list. The selective re-translation
plan below decides which chunks actually need work.
### 3.5. Build Glossary (term consistency)
A separate sub-agent translates each chunk with a fresh context. Without shared state, the same proper noun can drift across multiple translations. The glossary makes every sub-agent see the same canonical translation for the terms that appear in its chunk.
If `<temp_dir>/glossary.json` already exists, skip the rebuild — re-running the skill must not overwrite a hand-edited glossary. To force a rebuild, delete the file.
Otherwise:
1. **Sample chunks**: read `chunk0001.md`, the last chunk, and 3 evenly-spaced middle chunks. If `chunk_count < 5`, sample all of them.
2. **Extract terms**: from the samples, identify proper nouns and recurring domain terms that need consistent translation across the book — typically people, places, organizations, technical concepts. Translate each into the target language. Skip generic vocabulary that any translator would render the same way.
3. **Write `glossary.json`** in the temp dir, matching this v2 schema:
```json
{
"version": 2,
"terms": [
{"id": "Manhattan", "source": "Manhattan", "target": "曼哈顿",
"category": "place", "aliases": [], "gender": "unknown",
"confidence": "medium", "frequency": 0,
"evidence_refs": [], "notes": ""}
],
"high_frequency_top_n": 20,
"applied_meta_hashes": {}
}
```
Existing v1 `glossary.json` files are auto-upgraded to v2 on first load. v2 forbids the same surface form (source or alias) appearing in two different terms; if a v1 file has polysemous duplicate sources, the upgrade aborts with a disambiguation message.
4. **Count frequencies** by running:
```bash
python3 {baseDir}/scripts/glossary.py count-frequencies "<temp_dir>"
```
This scans every `chunk*.md` (excluding `output_chunk*.md`), updates each term's `frequency` field, and writes back atomically.
The glossary is hand-editable. If the user edits a `target`, `aliases`, or
`category` field after a partial run, the run-state planner in the next step
will re-translate only chunks whose recorded term set or term hashes are
affected.
### 3.7. Plan Selective Re-translation
Run:
```bash
python3 {baseDir}/scripts/run_state.py plan "<temp_dir>"
```
If the user explicitly asks to apply glossary edits to outputs produced before
`run_state.json` existed, add `--retranslate-unExcerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 553fb30
npx skills add deusyu/translate-book -a codex -g git clone https://github.com/deusyu/translate-book.git ~/.agents/skills/translate-book npx skills add deusyu/translate-book -a claude-code -g git clone https://github.com/deusyu/translate-book.git ~/.claude/skills/translate-book pip install -U "mineru>=4.0,<5" # or: pip install marker-pdf
git clone https://github.com/deusyu/translate-book git -C translate-book checkout 553fb3059719
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 553fb3059719 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Codex | Mentioned in its text, not tested | Skills for Codex · About Codex |
| Cursor | Mentioned in its text, not tested | Skills for Cursor · About Cursor |
| OpenClaw | Mentioned in its text, not tested | Skills for OpenClaw · About OpenClaw |
Audit history
Every audit, every source change
- !CAUTION B 89 / 100
first audit · source
553fb3059719
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/deusyu/translate-book/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
obra/superpowers
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions…
obra/superpowers
Use when you have a spec or requirements for a multi-step task, before touching code
obra/superpowers
Use when starting any conversation - establishes how to find and use skills, requiring skill invocation before ANY response including clarifying questions
Add this badge to your README
[](https://modelsatlas.com/skills/deusyu/translate-book/)
<a href="https://modelsatlas.com/skills/deusyu/translate-book/"><img src="https://modelsatlas.com/skills/deusyu/translate-book/badge.svg" alt="ModelsAtlas: CAUTION B"></a>
Questions about translate-book
What does the translate-book skill do?
Is translate-book safe to install?
What can translate-book access on my machine?
Which assistants does translate-book work with?
How current is this page?
Sources
- github.com/deusyu/translate-book — the audited source at commit 553fb3059719 and every finding aboveObserved · 20 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the translate-book skill do?
- Is translate-book safe to install?
- What can translate-book access on my machine?