[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MJ0VAYRETY002DPSJKKV2F":3,"skill-same:01M6MJ0VAYRETY002DPSJKKV2F":69},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":40,"linkOnly":41,"markdownContent":42,"markdownBody":43,"frontMatter":44,"refName":45,"commitSha":46,"skillDirectory":47,"forksCount":48,"repositoryHtmlUrl":49,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":53,"updatedAt":54,"install":55,"resources":68},"01M6MJ0VAYRETY002DPSJKKV2F","batch-extraction",null,"Use when extracting from many files at once with shared config, bounded parallelism, per-file overrides, and error recovery. Covers the `batch` command, `--file-configs`, `--max-concurrent`, and output layout.","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1566,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fkreuzberg-dev\u002Fplugins\u002Fplugins\u002Fkreuzberg\u002Fskills\u002Fbatch-extraction\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"batch","extraction","batch extraction","shared","overrides","when","bounded","at","extracting","with","output","error","layout","config","max","files","use","command","recovery","file","error recovery","2026-11-10 10:12:30",false,"---\nname: batch-extraction\ndescription: Use when extracting from many files at once with shared config, bounded parallelism, per-file overrides, and error recovery. Covers the `batch` command, `--file-configs`, `--max-concurrent`, and output layout.\n---\n\n# Batch extraction\n\nUse this when processing a directory or glob of documents in one pass.\n`kreuzberg batch` shares one extraction config across every file, runs\nextractions concurrently, and returns one structured array — failures on\nindividual files do not abort the run.\n\n## Basic usage\n\n```bash\n# Glob expands to many paths; results come back as a JSON array (default)\nkreuzberg batch *.pdf\n\n# Mixed formats, markdown content for LLM ingestion\nkreuzberg batch docs\u002F*.docx --content-format markdown\n\n# Recurse with the shell, then extract\nkreuzberg batch $(find .\u002Fcorpus -name '*.pdf')\n```\n\n`batch` defaults to `--format json` (vs `--format text` for single\n`extract`). Each array entry is a full extraction result, so downstream\ncode can index by position into the input path list.\n\n```bash\nkreuzberg batch reports\u002F*.pdf \\\n  | jq '.[] | {chars: (.content | length), mime: .mime_type}'\n```\n\n## Parallelism\n\n`--max-concurrent` caps how many files extract at once (default: CPU\ncount). Lower it on memory-constrained hosts or when OCR\u002FML models are\nactive, since each in-flight extraction holds its own buffers:\n\n```bash\n# Cap at 4 concurrent extractions\nkreuzberg batch scans\u002F*.pdf --ocr true --max-concurrent 4\n```\n\n`--max-threads` additionally caps *total* internal threads (Rayon, ONNX\nintra-op, the batch semaphore) for tightly constrained environments:\n\n```bash\nkreuzberg batch *.pdf --max-concurrent 2 --max-threads 4\n```\n\n## Per-file config overrides\n\nA single shared config does not always fit. `--file-configs` points at a\nJSON file mapping each path to its own override object, merged on top of\nthe shared config for that file only:\n\n```json\n{\n  \"scan.pdf\": { \"force_ocr\": true },\n  \"report.pdf\": { \"output_format\": \"markdown\" },\n  \"data.xlsx\": { \"output_format\": \"json\" }\n}\n```\n\n```bash\nkreuzberg batch scan.pdf report.pdf data.xlsx --file-configs overrides.json\n```\n\nKeys are file paths (matching the paths passed on the command line);\nvalues are per-file extraction config objects in snake_case, the same\nshape as a config file.\n\n## Output layout\n\nFor text\u002Ftoon output with image extraction, `--output-dir` controls where\nreferenced image files (e.g. `image_0.png`) are written; the directory\nmust already exist. JSON output embeds image bytes inline and ignores\n`--output-dir`.\n\n```bash\nmkdir -p out\u002Fimages\nkreuzberg batch slides\u002F*.pptx --extract-images true --output-dir out\u002Fimages --format text\n```\n\n## Error recovery\n\nBatch extraction is fault-tolerant per file: one unreadable or corrupt\ndocument does not stop the rest. Inspect results for partial content and\nsurfaced errors rather than relying on the process exit code alone. Pair\nwith `--max-concurrent` to avoid exhausting memory when a few large files\nsit in a big batch.\n\n## Shared config\n\nEvery `extract` flag also applies to `batch` (OCR, chunking, layout,\ncontent format, etc.) and is shared across all files unless a\n`--file-configs` entry overrides it:\n\n```bash\nkreuzberg batch invoices\u002F*.pdf \\\n  --layout --layout-table-model slanet_wireless \\\n  --content-format markdown --max-concurrent 8\n```\n\nA config file works too and auto-discovers from the cwd upward:\n\n```toml\noutput_format = \"markdown\"\n\n[ocr]\nbackend = \"tesseract\"\nlanguage = \"eng\"\n```\n\n```bash\nkreuzberg batch corpus\u002F*.pdf --config kreuzberg.toml\n```\n\n## Programmatic access\n\nFrom Python, use the batch helpers (async and sync):\n\n```python\nfrom kreuzberg import batch_extract_files, batch_extract_files_sync, ExtractionConfig\n\nconfig = ExtractionConfig(output_format=\"markdown\")\n\n# Async\nresults = await batch_extract_files([\"a.pdf\", \"b.docx\", \"c.xlsx\"], config=config)\n\n# Sync\nresults = batch_extract_files_sync([\"a.pdf\", \"b.docx\"], config=config)\n\nfor result in results:\n    print(len(result.content))\n```\n\nNode.js mirrors this with `batchExtractFiles`; Rust uses\n`batch_extract_file` (requires the `tokio-runtime` feature). See\n`references\u002Fpython-api.md`, `references\u002Fnodejs-api.md`, and\n`references\u002Frust-api.md` in the sibling `kreuzberg` skill.\n\n## MCP\n\nWhen the `kreuzberg` MCP server is registered, prefer the\n`batch_extract_files` tool over shelling out — it takes the file list and a\nconfig object and returns structured results directly.\n\n## Common pitfalls\n\n- **Default format differs** — `batch` defaults to `--format json`,\n  `extract` to `--format text`. Set `--format` explicitly if a script\n  depends on one shape.\n- **`--output-dir` must exist** — the CLI does not create it.\n- **Memory blowups** — large batches with OCR\u002Flayout active need a lower\n  `--max-concurrent`; the default is CPU count.\n- **`--file-configs` path keys** — must match the paths as passed on the\n  command line, not absolute-resolved variants.\n\nSee `references\u002Fcli-reference.md` for the full `batch` flag set.\n","# Batch extraction\n\nUse this when processing a directory or glob of documents in one pass.\n`kreuzberg batch` shares one extraction config across every file, runs\nextractions concurrently, and returns one structured array — failures on\nindividual files do not abort the run.\n\n## Basic usage\n\n```bash\n# Glob expands to many paths; results come back as a JSON array (default)\nkreuzberg batch *.pdf\n\n# Mixed formats, markdown content for LLM ingestion\nkreuzberg batch docs\u002F*.docx --content-format markdown\n\n# Recurse with the shell, then extract\nkreuzberg batch $(find .\u002Fcorpus -name '*.pdf')\n```\n\n`batch` defaults to `--format json` (vs `--format text` for single\n`extract`). Each array entry is a full extraction result, so downstream\ncode can index by position into the input path list.\n\n```bash\nkreuzberg batch reports\u002F*.pdf \\\n  | jq '.[] | {chars: (.content | length), mime: .mime_type}'\n```\n\n## Parallelism\n\n`--max-concurrent` caps how many files extract at once (default: CPU\ncount). Lower it on memory-constrained hosts or when OCR\u002FML models are\nactive, since each in-flight extraction holds its own buffers:\n\n```bash\n# Cap at 4 concurrent extractions\nkreuzberg batch scans\u002F*.pdf --ocr true --max-concurrent 4\n```\n\n`--max-threads` additionally caps *total* internal threads (Rayon, ONNX\nintra-op, the batch semaphore) for tightly constrained environments:\n\n```bash\nkreuzberg batch *.pdf --max-concurrent 2 --max-threads 4\n```\n\n## Per-file config overrides\n\nA single shared config does not always fit. `--file-configs` points at a\nJSON file mapping each path to its own override object, merged on top of\nthe shared config for that file only:\n\n```json\n{\n  \"scan.pdf\": { \"force_ocr\": true },\n  \"report.pdf\": { \"output_format\": \"markdown\" },\n  \"data.xlsx\": { \"output_format\": \"json\" }\n}\n```\n\n```bash\nkreuzberg batch scan.pdf report.pdf data.xlsx --file-configs overrides.json\n```\n\nKeys are file paths (matching the paths passed on the command line);\nvalues are per-file extraction config objects in snake_case, the same\nshape as a config file.\n\n## Output layout\n\nFor text\u002Ftoon output with image extraction, `--output-dir` controls where\nreferenced image files (e.g. `image_0.png`) are written; the directory\nmust already exist. JSON output embeds image bytes inline and ignores\n`--output-dir`.\n\n```bash\nmkdir -p out\u002Fimages\nkreuzberg batch slides\u002F*.pptx --extract-images true --output-dir out\u002Fimages --format text\n```\n\n## Error recovery\n\nBatch extraction is fault-tolerant per file: one unreadable or corrupt\ndocument does not stop the rest. Inspect results for partial content and\nsurfaced errors rather than relying on the process exit code alone. Pair\nwith `--max-concurrent` to avoid exhausting memory when a few large files\nsit in a big batch.\n\n## Shared config\n\nEvery `extract` flag also applies to `batch` (OCR, chunking, layout,\ncontent format, etc.) and is shared across all files unless a\n`--file-configs` entry overrides it:\n\n```bash\nkreuzberg batch invoices\u002F*.pdf \\\n  --layout --layout-table-model slanet_wireless \\\n  --content-format markdown --max-concurrent 8\n```\n\nA config file works too and auto-discovers from the cwd upward:\n\n```toml\noutput_format = \"markdown\"\n\n[ocr]\nbackend = \"tesseract\"\nlanguage = \"eng\"\n```\n\n```bash\nkreuzberg batch corpus\u002F*.pdf --config kreuzberg.toml\n```\n\n## Programmatic access\n\nFrom Python, use the batch helpers (async and sync):\n\n```python\nfrom kreuzberg import batch_extract_files, batch_extract_files_sync, ExtractionConfig\n\nconfig = ExtractionConfig(output_format=\"markdown\")\n\n# Async\nresults = await batch_extract_files([\"a.pdf\", \"b.docx\", \"c.xlsx\"], config=config)\n\n# Sync\nresults = batch_extract_files_sync([\"a.pdf\", \"b.docx\"], config=config)\n\nfor result in results:\n    print(len(result.content))\n```\n\nNode.js mirrors this with `batchExtractFiles`; Rust uses\n`batch_extract_file` (requires the `tokio-runtime` feature). See\n`references\u002Fpython-api.md`, `references\u002Fnodejs-api.md`, and\n`references\u002Frust-api.md` in the sibling `kreuzberg` skill.\n\n## MCP\n\nWhen the `kreuzberg` MCP server is registered, prefer the\n`batch_extract_files` tool over shelling out — it takes the file list and a\nconfig object and returns structured results directly.\n\n## Common pitfalls\n\n- **Default format differs** — `batch` defaults to `--format json`,\n  `extract` to `--format text`. Set `--format` explicitly if a script\n  depends on one shape.\n- **`--output-dir` must exist** — the CLI does not create it.\n- **Memory blowups** — large batches with OCR\u002Flayout active need a lower\n  `--max-concurrent`; the default is CPU count.\n- **`--file-configs` path keys** — must match the paths as passed on the\n  command line, not absolute-resolved variants.\n\nSee `references\u002Fcli-reference.md` for the full `batch` flag set.\n",{"name":5,"description":7},"main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002Fkreuzberg-dev\u002Fplugins\u002Fplugins\u002Fkreuzberg\u002Fskills\u002Fbatch-extraction",483,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-13 02:16:32",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill batch-extraction",{"tool":61,"command":62},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill batch-extraction",{"tool":64,"command":65},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill batch-extraction","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fkreuzberg-dev\u002Fplugins\u002Fplugins\u002Fkreuzberg\u002Fskills\u002Fbatch-extraction\u002FSKILL.md",true,[],[70,78,85,92,117,141],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":76,"publishedAt":77},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":77},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":77},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":40},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[99,100,101,30,102,103,104,105,106,107,108,24,109,110,111,112,113,114,115,116],"search","deja search","never","ready","memory","re","decide","fix","design","debugging","you","done","reviewer","io","change","cli","merge","past",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":123,"publishedAt":40},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[124,125,126,112,28,127,128,129,130,131,132,133,134,135,103,136,137,138,139,140],"deja reflect","reflect","review","record","github","next","https","node","Rules","decisions","brew","remember","project rules","project","session","end","reflection",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":158,"publishedAt":40},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[147,152,155],{"categoryNo":148,"categoryName":149,"taxonomyType":150,"taxonomyTypeDesc":151},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":153,"categoryName":154,"taxonomyType":150,"taxonomyTypeDesc":151},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":156,"categoryName":157,"taxonomyType":150,"taxonomyTypeDesc":151},"01JBSEEDCAT000000000000010","后端与接口",[143,159,160,161,162,163,164,137,165,104,166,167,168,169,24,170,171,172,173,174],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]