wiki_ingest — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited wiki_ingest (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Resolving script paths (read first): Commands below invoke scripts as<BIN>/X.py(and a few as<SKILLS>/...). Resolve these to absolute paths once before running anything:
>
-<SKILL_DIR>= the directory thisSKILL.mdlives in. -<SKILLS>= theskills/folder containing this skill =<SKILL_DIR>/..-<BIN>= thebin/folder beside it =<SKILL_DIR>/../../bin
>
Do not hardcode a fixed prefix like.agents/binor../bin: shell relative paths resolve against the current working directory (usually the topic root), not this skill's location. Once resolved,<BIN>is typically.agents/binwhen invoked from the hub root, or.claude/binfrom inside a topic directory.
This skill handles converting external material (URLs, PDFs, local text files, and items inside inbox/) into raw sources.
Tooling (framework-agnostic): This skill is written tool-agnostic. Map each capability to your own agent's tool — read-file (Readin Claude Code,view_filein Antigravity), sub-agent / parallel task (Task/Agentin Claude Code,invoke_subagentin Antigravity), shell (Bash/PowerShell). Use the closest equivalent your framework provides; if a parallel sub-agent tool is unavailable, transcribe PDF pages sequentially yourself (still verifying the full page count).
When the user asks to ingest documents (or runs the command without a path):
inbox/ directory.inbox/ contains multiple files, you MUST loop through all of them and process them one by one in a batch.inbox/ is empty, only then prompt the user to specify a file or source URL.raw/papers/, web pages to raw/articles/, manually typed notes to raw/notes/.ocr.use_mineru is true and ocr.mineru_api_token is set in config.yaml. If so, use:python <BIN>/mineru_cloud_worker.py "<PDF_PATH>" -o "<TOPIC_DIR>\\raw\\<type>" Note: This script automatically generates YAML frontmatter, writes the file, and extracts referenced figures into `images/` prefixed with the doc slug. Skip Step 4.
pymupdf or PyPDF2). After all subagents return, verify that the number of returned transcriptions equals the total page count. If any pages are missing, re-invoke subagents for the missing pages. Do NOT proceed with assembly until all pages are accounted for.pymupdf or PyPDF2) purely to get the total page count before batching.python <BIN>/assemble_transcriptions.py --transcription-dir <PAGES_DIR> --output-file <FILE_PATH> --title <TITLE> --date <DATE>
wiki_ingest_ocr skill instead. Do not mix native multimodal with local Python OCR scripts inside this skill..md files or general inbox files, call the ingest helper script:python <BIN>/ingest_helper.py --source-file \"<MD_FILE>\" --type \"<TYPE>\" --topic-dir \"<TOPIC_DIR>\" [--date \"<DATE>\"] This script handles parsing/injecting standard YAML frontmatter, slugifying, and moving/copying the file.
python <BIN>/tex2md.py "<TEX_OR_TARGZ_PATH>" -o "<TOPIC_DIR>\raw\<type>" Note: This script automatically generates YAML frontmatter, writes the file, and extracts referenced figures into `images/` (rasterising `.pdf`/`.eps` figures to PNG, prefixed with the doc slug). Skip Step 4. Check the printed `Figures: N embedded, M unresolved` line.
raw/<type>/YYYY-MM-DD-slug.md with standard frontmatter: ---
title: "Original Title"
source: "Original URL or path"
type: articles|papers|repos|notes
ingested: YYYY-MM-DD
tags: [tag1, tag2]
summary: "2-3 sentence overview of the source"
---Frontmatter Validation (MANDATORY): After writing, run python <BIN>/llm-wiki.py lint <TOPIC_DIR> and check if the new file has any frontmatter-related critical or warning issues. Fix them before proceeding.
python <BIN>/ingest_pipeline.py "<ORIGINAL_FILE_PATH>" --topic-dir "<TOPIC_DIR>" --md-file "<GENERATED_MD_FILE>" --skip-lint --log-msg "Ingested <DOC_TITLE>"ingest_pipeline.py outputs any warnings like [WARNING] Math syntax errors in <FILE>:, you MUST immediately stop and fix them.Double subscript or Unexpected end of stream.python <BIN>/pdf_math_crop.py "<PDF_PATH>" --text "<search_text_near_error>" --out "<TOPIC_DIR>\scratch\crop.png"
crop.png, then manually edit the Markdown file to correct the semantic math errors based on the ground truth in the original paper, and re-run python <BIN>/validate_math_latex.py <FILE> to confirm all errors are gone.inbox/ have been processed through steps 1-6, you MUST run the global lint and index operation ONCE outside the loop: python <BIN>/ingest_pipeline.py "none" --topic-dir "<TOPIC_DIR>" --lint-only~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.