Install
$ agentstack add skill-hraness-slopcamera-save-pdf-kb ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Save a PDF to the knowledge base
Use the installed kb CLI. Resolve ` to the directory containing its authored or managed index.md front door, then set the shell-local KBROOT to that path (KBROOT=kb` from a typical repository root).
Check the local conversion routes, then capture the PDF:
kb doctor
kb pdf "/absolute/path/to/document.pdf" --output "$KB_ROOT/articles"
kb pdf "https://example.com/document.pdf" --output "$KB_ROOT/articles"
Pass a stable slug or replace a prior tool-owned bundle only when needed:
kb pdf "/absolute/path/to/document.pdf" --slug ben-leaves-zo --output "$KB_ROOT/articles"
kb pdf "/absolute/path/to/document.pdf" --output "$KB_ROOT/articles" --force
The command installs one atomic bundle:
/
.md
capture.json
source.pdf
annotations.json # present after a reviewed annotation pass
assets/
source.pdf is the byte-identical input. The manifest records its original name, hash, byte count, page count, bounded document metadata, processed-page and block counts, image geometry, OCR status, and warnings without retaining the original absolute path. A reviewed second pass also retains the exact normalized annotation array as annotations.json; the manifest records its path, count, byte count, and SHA-256 so the image interpretation remains reproducible.
Preserve text and visual evidence
Treat native PDF text and image text as two independent extraction surfaces. Native text supplies layout, heading, link, and reading-order evidence. Local OCR supplies candidate text for scans and screenshots. Keep every extracted image as an asset even when its text is converted to Markdown.
For recognizable conversations, review the source image and turn OCR into readable message blocks with available platform, author, channel, and timestamp metadata. Preserve uncertain words explicitly instead of silently repairing them. Read [references/review.md](references/review.md) before refining screenshot-heavy or mixed-media PDFs.
The first capture supplies stable image IDs and hashes in capture.json. For screenshot-heavy documents, write reviewed interpretations to a JSON array and rerun the capture:
[
{
"id": "page-5-image-1-0123456789ab",
"sha256": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"kind": "mixed",
"method": "agent",
"markdown": "> bg @ Oct 15, 2024 at 4:26 PM\n> Message text",
"metadata": {
"platform": "Slack",
"contentType": "message screenshot",
"author": "bg",
"timestamp": "Oct 15, 2024 at 4:26 PM",
"participants": ["bg"]
}
}
]
kb pdf "/absolute/path/to/document.pdf" \
--output "$KB_ROOT/articles" \
--annotations /tmp/pdf-image-annotations.json \
--force
Use only IDs and SHA-256 values from the first manifest. The command rejects a stale interpretation if the extracted image changed. Omit metadata fields that are not visible, and use kind: "visual" with an optional alt instead of inventing a transcription for a non-text image. Put only the transcribed body in markdown; the renderer owns the image embed, “Text visible in…” heading, and visible metadata line.
Embed primarily visual images in the Markdown. For text-bearing or mixed images, keep the source image embedded beside the transcription so diagrams, photos, UI state, and spatial meaning remain inspectable. The embed is the source-image reference; do not duplicate it inside an annotation.
Heading inference follows native font, emphasis, spacing, and page geometry. Review semantic hierarchy separately: typography can identify a heading without proving whether it is a peer or a child of the preceding section. Report an ambiguous or incorrect level instead of silently treating the inference as source truth.
Report completeness literally
Use complete only when every page was processed and every extracted image was classified. Preserve partial when a tool, page, image, byte, time, or OCR boundary was reached. A usable native-text extraction does not make unprocessed screenshot pages complete.
Review:
- Compare the manifest page count with the PDF.
- Review inferred headings and report ambiguous or incorrect hierarchy.
- Sample native-text, screenshot, scanned, and visual-only pages.
- Confirm every retained asset resolves from the Markdown or manifest.
- Check that source-image links accompany OCR-derived text.
- Report the output path, status, page and image counts, OCR coverage, and
unresolved warnings.
After adding or linking the capture, run the vault's normal refresh and check:
kb percolate "" --root "$KB_ROOT" --limit 25 --json
kb refresh --root "$KB_ROOT"
kb check --root "$KB_ROOT"
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: hraness
- Source: hraness/slopcamera
- License: MIT
- Homepage: https://slopcamera.com/
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.