{"id":"a4b11a48-2b63-4fb1-9963-421c16eb1d89","entityType":"agent","slug":"clawhub-karlzhu-zxc-md-pdf","name":"md-pdf","canonicalUrl":"https://www.xpersona.co/agent/clawhub-karlzhu-zxc-md-pdf","canonicalPath":"/agent/clawhub-karlzhu-zxc-md-pdf","generatedAt":"2026-10-14T09:56:57.953Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-12T02:40:58.208Z","emptyReason":null},"description":"Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals. Skill: md-pdf Owner: karlzhu-zxc Summary: Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals. Tags: latest:1.0.1 Version history: v1.0.1 | 2026-03-26T14:16:26.649Z | user - Removed package-lock.json from the repository. - No changes to the skill's functionality or documentation. v1.0.0 | 2026-03-26T14:15:32.477Z | user - Initial r","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 953 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s17d46bnyjnxcgj1eynga9hbcd83hmd0:md-pdf","sourceUrl":"https://clawhub.ai/karlzhu-zxc/md-pdf","homepage":"https://clawhub.ai/karlzhu-zxc/skills/md-pdf","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/karlzhu-zxc/md-pdf","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/karlzhu-zxc/skills/md-pdf","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":42,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals. Skill: md-pdf Owner:"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:40:58.208Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:40:58.208Z","emptyReason":null},"stars":null,"forks":null,"downloads":953,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.1","tractionLabel":"953 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:40:58.207Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T02:40:58.208Z","lastCrawledAt":"2026-10-12T02:40:58.207Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T02:40:58.207Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.1","createdAt":"2026-03-26T14:16:26.649Z","changelog":"- Removed package-lock.json from the repository. - No changes to the skill's functionality or documentation.","fileCount":10,"zipByteSize":8499},{"version":"1.0.0","createdAt":"2026-03-26T14:15:32.477Z","changelog":"- Initial release of md2pdf. - Provides two Markdown to PDF pipelines: Pandoc + XeLaTeX for print-quality outputs, and browser-rendered HTML/Twemoji for emoji or WYSIWYG-friendly PDFs. - Strong support for Chinese/CJK text and robust table of contents/section numbering. - Special handling for emoji to ensure they survive PDF export. - Includes quick start instructions, workflow guidance, and detailed troubleshooting.","fileCount":10,"zipByteSize":17869}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17d46bnyjnxcgj1eynga9hbcd83hmd0:md-pdf","setupComplexity":"low","setupSteps":["Node.js workspace detected. Install dependencies securely: run `npm ci --ignore-scripts` to prevent post-install lifecycle triggers from running arbitrary code, then selectively audit the dependency tree.","Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-14T09:56:57.952Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-karlzhu-zxc-md-pdf/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-12T02:40:58.208Z","emptyReason":null},"readme":"Skill: md-pdf\n\nOwner: karlzhu-zxc\n\nSummary: Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals.\n\nTags: latest:1.0.1\n\nVersion history:\n\nv1.0.1 | 2026-03-26T14:16:26.649Z | user\n\n- Removed package-lock.json from the repository.\n- No changes to the skill's functionality or documentation.\n\nv1.0.0 | 2026-03-26T14:15:32.477Z | user\n\n- Initial release of md2pdf.\n- Provides two Markdown to PDF pipelines: Pandoc + XeLaTeX for print-quality outputs, and browser-rendered HTML/Twemoji for emoji or WYSIWYG-friendly PDFs.\n- Strong support for Chinese/CJK text and robust table of contents/section numbering.\n- Special handling for emoji to ensure they survive PDF export.\n- Includes quick start instructions, workflow guidance, and detailed troubleshooting.\n\nArchive index:\n\nArchive v1.0.1: 10 files, 8499 bytes\n\nFiles: assets/defaults/hifi.yaml (356b), package.json (302b), references/style-guide.md (1038b), scripts/install_deps_ubuntu.sh (648b), scripts/md2pdf_browser.js (3425b), scripts/md2pdf-browser.sh (1117b), scripts/md2pdf.sh (1715b), skill-card.md (2152b), SKILL.md (3604b), _meta.json (125b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: md2pdf\ndescription: High-fidelity Markdown to PDF conversion with two pipelines: Pandoc + XeLaTeX for print-style documents, and browser-rendered HTML/Twemoji for emoji-heavy or WYSIWYG-friendly output. Use when users ask for polished PDF output from .md, want better visual quality than basic markdown renderers, need strong Chinese/CJK support, or specifically need emoji to survive PDF export.\n---\n\n# md2pdf\n\nProduce polished, print-ready PDF from Markdown with a stable, reusable pipeline.\n\n## Quick start\n\n1. Install dependencies (Ubuntu/Debian):\n   - `bash scripts/install_deps_ubuntu.sh`\n2. Convert standard formal Markdown with Pandoc/XeLaTeX:\n   - `bash scripts/md2pdf.sh input.md output.pdf`\n3. Convert emoji-heavy or browser-like Markdown with CDP browser rendering:\n   - `bash scripts/md2pdf-browser.sh input.md output.pdf`\n4. Optional: enable cover page / metadata style via defaults:\n   - `bash scripts/md2pdf.sh input.md output.pdf --defaults assets/defaults/hifi.yaml`\n\n## Workflow\n\n### 1) Choose the pipeline\n\nUse the LaTeX pipeline when the document is mostly text/tables and should look print-formal.\n\nUse the browser pipeline when any of these are true:\n\n- emoji must render correctly\n- HTML/CSS-like appearance matters more than TeX typography\n- the Markdown contains GitHub-style formatting that is easier to preserve in HTML\n- a CDP browser endpoint is already available\n\n### 2) Prepare source markdown\n\n- Prefer `#`/`##` heading hierarchy (for TOC quality).\n- Keep code blocks fenced with language tags (for syntax highlight).\n- Keep tables in GFM format.\n- For very wide tables, prefer shorter cell content or convert the summary table to bullets before export.\n\n### 3) Run the formal print pipeline\n\nUse `scripts/md2pdf.sh` as the default entrypoint for print-style output.\n\nIt applies a professional baseline:\n\n- `--pdf-engine=xelatex`\n- Chinese font fallback (`Noto Sans CJK SC`)\n- Table of contents (`--toc`)\n- Section numbering (`--number-sections`)\n- Reasonable margins / line spread / link coloring\n- Code highlight style\n\n### 4) Run the emoji-friendly browser pipeline\n\nUse `scripts/md2pdf-browser.sh` when emoji support matters.\n\nIt does this:\n\n- render Markdown to HTML\n- convert emoji to Twemoji images\n- connect to an existing CDP browser (`BROWSER_CDP_URL` or `http://127.0.0.1:9222`)\n- print the page to PDF with browser CSS\n\nExample:\n\n- `BROWSER_CDP_URL=http://192.168.1.30:9222 bash scripts/md2pdf-browser.sh input.md output.pdf`\n\n### 5) Tune output quality\n\nUse either:\n\n- CLI flags in `scripts/md2pdf.sh` (quick tuning), or\n- defaults file (`assets/defaults/hifi.yaml`) for stable team-wide style.\n\nRecommended adjustments:\n\n- business report: keep `11pt`, margin `2.2cm`, TOC on\n- printable manual: increase margin to `2.5cm`\n- dense technical doc: keep section numbers and monospace code font\n- emoji-heavy travel/share docs: prefer browser pipeline first\n\n## Troubleshooting\n\n- `pandoc: command not found`: run `scripts/install_deps_ubuntu.sh`.\n- `xelatex not found`: ensure `texlive-xetex` installed, or switch to `scripts/md2pdf-browser.sh`.\n- Emoji missing in PDF: use `scripts/md2pdf-browser.sh`; TeX engines are often poor at color emoji.\n- CJK glyph squares/tofu: install `fonts-noto-cjk` and keep `CJKmainfont` as Noto Sans CJK.\n- Browser script cannot connect: pass a valid CDP URL as arg 3 or set `BROWSER_CDP_URL`.\n- Weird table wrapping: reduce table width in markdown or use bullets for wide summary tables.\n\n## References\n\n- Style baseline and knobs: `references/style-guide.md`\n- Reusable defaults preset: `assets/defaults/hifi.yaml`\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7bq9xffcv2jxmhfxg7kvne3h828rb6\",\n  \"slug\": \"md-pdf\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1774534586649\n}\n\nFile v1.0.1:references/style-guide.md\n\n# md2pdf style guide\n\n## Baseline choices\n\n- Engine: XeLaTeX (best CJK + typography compatibility for mixed Chinese/English docs)\n- Font strategy:\n  - CJK main font: `Noto Sans CJK SC`\n  - Latin serif: `DejaVu Serif`\n  - Latin sans: `DejaVu Sans`\n  - Monospace/code: `DejaVu Sans Mono`\n\n## Recommended markdown authoring rules\n\n1. Keep one H1 title only.\n2. Use H2/H3 hierarchy consistently for TOC.\n3. Always annotate fenced code language (e.g. ` ```bash `).\n4. Keep tables concise; split very wide tables.\n5. Use footnotes for dense annotations.\n\n## Quality profiles\n\n### Business report\n- TOC: on\n- Numbering: on\n- Margin: 2.2cm\n- Font size: 11pt\n\n### Manual / print\n- TOC: on\n- Numbering: on\n- Margin: 2.5cm\n- Font size: 11pt or 12pt\n\n### Dense technical appendix\n- TOC: optional\n- Numbering: on\n- Margin: 2.0cm\n- Font size: 10.5pt or 11pt\n\n## If output still looks plain\n\n- Add a custom LaTeX template and pass via defaults yaml\n- Use a stricter markdown style guide for source authoring\n- Normalize heading levels before conversion\n\nFile v1.0.1:skill-card.md\n\n## Description:\n\nConverts Markdown to polished PDF through either a Pandoc and XeLaTeX print pipeline or a browser-rendered HTML and Twemoji pipeline for emoji-heavy output.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[karlzhu-zxc](https://clawhub.ai/user/karlzhu-zxc)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and technical writers use this skill to turn Markdown documents into print-ready PDFs, including CJK-friendly reports and emoji-heavy documents that need browser-style rendering.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Browser-based rendering can expose sensitive Markdown content to an existing or remote browser session.\n\nMitigation: Use the browser pipeline only with a trusted local or access-controlled CDP endpoint and avoid processing sensitive or untrusted Markdown through it.\n\nRisk: Active Markdown or embedded HTML may execute during browser rendering.\n\nMitigation: Add sanitization, disable JavaScript where possible, and block unnecessary network requests before routine use.\n\nRisk: The browser pipeline installs npm dependencies without a lockfile.\n\nMitigation: Pin dependencies with a lockfile before adopting the skill in a repeatable production workflow.\n\n## Reference(s):\n\n- [md2pdf style guide](references/style-guide.md)\n- [Reusable defaults preset](assets/defaults/hifi.yaml)\n- [ClawHub skill page](https://clawhub.ai/karlzhu-zxc/skills/md-pdf)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and configuration paths]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces guidance for generating PDF files from Markdown using local command-line tools.]\n\n## Skill Version(s):\n\n1.0.1 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nFile v1.0.1:package.json\n\n{\n  \"name\": \"md2pdf-skill-browser-pipeline\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"description\": \"Browser-based Markdown to PDF pipeline for emoji-friendly output.\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"marked\": \"^16.3.0\",\n    \"puppeteer-core\": \"^24.22.3\",\n    \"twemoji\": \"^14.0.2\"\n  }\n}\n\nFile v1.0.1:assets/defaults/hifi.yaml\n\nfrom: gfm+emoji+autolink_bare_uris+footnotes\npdf-engine: xelatex\ntoc: true\nnumber-sections: true\nhighlight-style: tango\nvariables:\n  CJKmainfont: Noto Sans CJK SC\n  mainfont: DejaVu Serif\n  sansfont: DejaVu Sans\n  monofont: DejaVu Sans Mono\n  geometry: margin=2.2cm\n  fontsize: 11pt\n  linestretch: 1.2\n  colorlinks: true\n  linkcolor: blue\n  urlcolor: blue\n\nArchive v1.0.0: 10 files, 17869 bytes\n\nFiles: assets/defaults/hifi.yaml (356b), package-lock.json (36737b), package.json (302b), references/style-guide.md (1038b), scripts/install_deps_ubuntu.sh (648b), scripts/md2pdf_browser.js (3425b), scripts/md2pdf-browser.sh (1117b), scripts/md2pdf.sh (1715b), SKILL.md (3604b), _meta.json (125b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: md2pdf\ndescription: High-fidelity Markdown to PDF conversion with two pipelines: Pandoc + XeLaTeX for print-style documents, and browser-rendered HTML/Twemoji for emoji-heavy or WYSIWYG-friendly output. Use when users ask for polished PDF output from .md, want better visual quality than basic markdown renderers, need strong Chinese/CJK support, or specifically need emoji to survive PDF export.\n---\n\n# md2pdf\n\nProduce polished, print-ready PDF from Markdown with a stable, reusable pipeline.\n\n## Quick start\n\n1. Install dependencies (Ubuntu/Debian):\n   - `bash scripts/install_deps_ubuntu.sh`\n2. Convert standard formal Markdown with Pandoc/XeLaTeX:\n   - `bash scripts/md2pdf.sh input.md output.pdf`\n3. Convert emoji-heavy or browser-like Markdown with CDP browser rendering:\n   - `bash scripts/md2pdf-browser.sh input.md output.pdf`\n4. Optional: enable cover page / metadata style via defaults:\n   - `bash scripts/md2pdf.sh input.md output.pdf --defaults assets/defaults/hifi.yaml`\n\n## Workflow\n\n### 1) Choose the pipeline\n\nUse the LaTeX pipeline when the document is mostly text/tables and should look print-formal.\n\nUse the browser pipeline when any of these are true:\n\n- emoji must render correctly\n- HTML/CSS-like appearance matters more than TeX typography\n- the Markdown contains GitHub-style formatting that is easier to preserve in HTML\n- a CDP browser endpoint is already available\n\n### 2) Prepare source markdown\n\n- Prefer `#`/`##` heading hierarchy (for TOC quality).\n- Keep code blocks fenced with language tags (for syntax highlight).\n- Keep tables in GFM format.\n- For very wide tables, prefer shorter cell content or convert the summary table to bullets before export.\n\n### 3) Run the formal print pipeline\n\nUse `scripts/md2pdf.sh` as the default entrypoint for print-style output.\n\nIt applies a professional baseline:\n\n- `--pdf-engine=xelatex`\n- Chinese font fallback (`Noto Sans CJK SC`)\n- Table of contents (`--toc`)\n- Section numbering (`--number-sections`)\n- Reasonable margins / line spread / link coloring\n- Code highlight style\n\n### 4) Run the emoji-friendly browser pipeline\n\nUse `scripts/md2pdf-browser.sh` when emoji support matters.\n\nIt does this:\n\n- render Markdown to HTML\n- convert emoji to Twemoji images\n- connect to an existing CDP browser (`BROWSER_CDP_URL` or `http://127.0.0.1:9222`)\n- print the page to PDF with browser CSS\n\nExample:\n\n- `BROWSER_CDP_URL=http://192.168.1.30:9222 bash scripts/md2pdf-browser.sh input.md output.pdf`\n\n### 5) Tune output quality\n\nUse either:\n\n- CLI flags in `scripts/md2pdf.sh` (quick tuning), or\n- defaults file (`assets/defaults/hifi.yaml`) for stable team-wide style.\n\nRecommended adjustments:\n\n- business report: keep `11pt`, margin `2.2cm`, TOC on\n- printable manual: increase margin to `2.5cm`\n- dense technical doc: keep section numbers and monospace code font\n- emoji-heavy travel/share docs: prefer browser pipeline first\n\n## Troubleshooting\n\n- `pandoc: command not found`: run `scripts/install_deps_ubuntu.sh`.\n- `xelatex not found`: ensure `texlive-xetex` installed, or switch to `scripts/md2pdf-browser.sh`.\n- Emoji missing in PDF: use `scripts/md2pdf-browser.sh`; TeX engines are often poor at color emoji.\n- CJK glyph squares/tofu: install `fonts-noto-cjk` and keep `CJKmainfont` as Noto Sans CJK.\n- Browser script cannot connect: pass a valid CDP URL as arg 3 or set `BROWSER_CDP_URL`.\n- Weird table wrapping: reduce table width in markdown or use bullets for wide summary tables.\n\n## References\n\n- Style baseline and knobs: `references/style-guide.md`\n- Reusable defaults preset: `assets/defaults/hifi.yaml`\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7bq9xffcv2jxmhfxg7kvne3h828rb6\",\n  \"slug\": \"md-pdf\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1774534532477\n}\n\nFile v1.0.0:references/style-guide.md\n\n# md2pdf style guide\n\n## Baseline choices\n\n- Engine: XeLaTeX (best CJK + typography compatibility for mixed Chinese/English docs)\n- Font strategy:\n  - CJK main font: `Noto Sans CJK SC`\n  - Latin serif: `DejaVu Serif`\n  - Latin sans: `DejaVu Sans`\n  - Monospace/code: `DejaVu Sans Mono`\n\n## Recommended markdown authoring rules\n\n1. Keep one H1 title only.\n2. Use H2/H3 hierarchy consistently for TOC.\n3. Always annotate fenced code language (e.g. ` ```bash `).\n4. Keep tables concise; split very wide tables.\n5. Use footnotes for dense annotations.\n\n## Quality profiles\n\n### Business report\n- TOC: on\n- Numbering: on\n- Margin: 2.2cm\n- Font size: 11pt\n\n### Manual / print\n- TOC: on\n- Numbering: on\n- Margin: 2.5cm\n- Font size: 11pt or 12pt\n\n### Dense technical appendix\n- TOC: optional\n- Numbering: on\n- Margin: 2.0cm\n- Font size: 10.5pt or 11pt\n\n## If output still looks plain\n\n- Add a custom LaTeX template and pass via defaults yaml\n- Use a stricter markdown style guide for source authoring\n- Normalize heading levels before conversion\n\nFile v1.0.0:package-lock.json\n\n{\n  \"name\": \"md2pdf-skill-browser-pipeline\",\n  \"version\": \"1.0.0\",\n  \"lockfileVersion\": 3,\n  \"requires\": true,\n  \"packages\": {\n    \"\": {\n      \"name\": \"md2pdf-skill-browser-pipeline\",\n      \"version\": \"1.0.0\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"marked\": \"^16.3.0\",\n        \"puppeteer-core\": \"^24.22.3\",\n        \"twemoji\": \"^14.0.2\"\n      }\n    },\n    \"node_modules/@puppeteer/browsers\": {\n      \"version\": \"2.13.0\",\n      \"resolved\": \"https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz\",\n      \"integrity\": \"sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"debug\": \"^4.4.3\",\n        \"extract-zip\": \"^2.0.1\",\n        \"progress\": \"^2.0.3\",\n        \"proxy-agent\": \"^6.5.0\",\n        \"semver\": \"^7.7.4\",\n        \"tar-fs\": \"^3.1.1\",\n        \"yargs\": \"^17.7.2\"\n      },\n      \"bin\": {\n        \"browsers\": \"lib/cjs/main-cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/@tootallnate/quickjs-emscripten\": {\n      \"version\": \"0.23.0\",\n      \"resolved\": \"https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz\",\n      \"integrity\": \"sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/@types/node\": {\n      \"version\": \"25.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/@types/node/-/node-25.5.0.tgz\",\n      \"integrity\": \"sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==\",\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"undici-types\": \"~7.18.0\"\n      }\n    },\n    \"node_modules/@types/yauzl\": {\n      \"version\": \"2.10.3\",\n      \"resolved\": \"https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz\",\n      \"integrity\": \"sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==\",\n      \"license\": \"MIT\",\n      \"optional\": true,\n      \"dependencies\": {\n        \"@types/node\": \"*\"\n      }\n    },\n    \"node_modules/agent-base\": {\n      \"version\": \"7.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz\",\n      \"integrity\": \"sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/ansi-regex\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz\",\n      \"integrity\": \"sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/ansi-styles\": {\n      \"version\": \"4.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz\",\n      \"integrity\": \"sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-convert\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/ansi-styles?sponsor=1\"\n      }\n    },\n    \"node_modules/ast-types\": {\n      \"version\": \"0.13.4\",\n      \"resolved\": \"https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz\",\n      \"integrity\": \"sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"tslib\": \"^2.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=4\"\n      }\n    },\n    \"node_modules/b4a\": {\n      \"version\": \"1.8.0\",\n      \"resolved\": \"https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz\",\n      \"integrity\": \"sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==\",\n      \"license\": \"Apache-2.0\",\n      \"peerDependencies\": {\n        \"react-native-b4a\": \"*\"\n      },\n      \"peerDependenciesMeta\": {\n        \"react-native-b4a\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/bare-events\": {\n      \"version\": \"2.8.2\",\n      \"resolved\": \"https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz\",\n      \"integrity\": \"sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==\",\n      \"license\": \"Apache-2.0\",\n      \"peerDependencies\": {\n        \"bare-abort-controller\": \"*\"\n      },\n      \"peerDependenciesMeta\": {\n        \"bare-abort-controller\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/bare-fs\": {\n      \"version\": \"4.5.6\",\n      \"resolved\": \"https://registry.npmjs.org/bare-fs/-/bare-fs-4.5.6.tgz\",\n      \"integrity\": \"sha512-1QovqDrR80Pmt5HPAsMsXTCFcDYr+NSUKW6nd6WO5v0JBmnItc/irNRzm2KOQ5oZ69P37y+AMujNyNtG+1Rggw==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"bare-events\": \"^2.5.4\",\n        \"bare-path\": \"^3.0.0\",\n        \"bare-stream\": \"^2.6.4\",\n        \"bare-url\": \"^2.2.2\",\n        \"fast-fifo\": \"^1.3.2\"\n      },\n      \"engines\": {\n        \"bare\": \">=1.16.0\"\n      },\n      \"peerDependencies\": {\n        \"bare-buffer\": \"*\"\n      },\n      \"peerDependenciesMeta\": {\n        \"bare-buffer\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/bare-os\": {\n      \"version\": \"3.8.0\",\n      \"resolved\": \"https://registry.npmjs.org/bare-os/-/bare-os-3.8.0.tgz\",\n      \"integrity\": \"sha512-Dc9/SlwfxkXIGYhvMQNUtKaXCaGkZYGcd1vuNUUADVqzu4/vQfvnMkYYOUnt2VwQ2AqKr/8qAVFRtwETljgeFg==\",\n      \"license\": \"Apache-2.0\",\n      \"engines\": {\n        \"bare\": \">=1.14.0\"\n      }\n    },\n    \"node_modules/bare-path\": {\n      \"version\": \"3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz\",\n      \"integrity\": \"sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"bare-os\": \"^3.0.1\"\n      }\n    },\n    \"node_modules/bare-stream\": {\n      \"version\": \"2.11.0\",\n      \"resolved\": \"https://registry.npmjs.org/bare-stream/-/bare-stream-2.11.0.tgz\",\n      \"integrity\": \"sha512-Y/+iQ49fL3rIn6w/AVxI/2+BRrpmzJvdWt5Jv8Za6Ngqc6V227c+pYjYYgLdpR3MwQ9ObVXD0ZrqoBztakM0rw==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"streamx\": \"^2.25.0\",\n        \"teex\": \"^1.0.1\"\n      },\n      \"peerDependencies\": {\n        \"bare-abort-controller\": \"*\",\n        \"bare-buffer\": \"*\",\n        \"bare-events\": \"*\"\n      },\n      \"peerDependenciesMeta\": {\n        \"bare-abort-controller\": {\n          \"optional\": true\n        },\n        \"bare-buffer\": {\n          \"optional\": true\n        },\n        \"bare-events\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/bare-url\": {\n      \"version\": \"2.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz\",\n      \"integrity\": \"sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"bare-path\": \"^3.0.0\"\n      }\n    },\n    \"node_modules/basic-ftp\": {\n      \"version\": \"5.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz\",\n      \"integrity\": \"sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=10.0.0\"\n      }\n    },\n    \"node_modules/buffer-crc32\": {\n      \"version\": \"0.2.13\",\n      \"resolved\": \"https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz\",\n      \"integrity\": \"sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \"*\"\n      }\n    },\n    \"node_modules/chromium-bidi\": {\n      \"version\": \"14.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-14.0.0.tgz\",\n      \"integrity\": \"sha512-9gYlLtS6tStdRWzrtXaTMnqcM4dudNegMXJxkR0I/CXObHalYeYcAMPrL19eroNZHtJ8DQmu1E+ZNOYu/IXMXw==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"mitt\": \"^3.0.1\",\n        \"zod\": \"^3.24.1\"\n      },\n      \"peerDependencies\": {\n        \"devtools-protocol\": \"*\"\n      }\n    },\n    \"node_modules/cliui\": {\n      \"version\": \"8.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz\",\n      \"integrity\": \"sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"string-width\": \"^4.2.0\",\n        \"strip-ansi\": \"^6.0.1\",\n        \"wrap-ansi\": \"^7.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/color-convert\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz\",\n      \"integrity\": \"sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"color-name\": \"~1.1.4\"\n      },\n      \"engines\": {\n        \"node\": \">=7.0.0\"\n      }\n    },\n    \"node_modules/color-name\": {\n      \"version\": \"1.1.4\",\n      \"resolved\": \"https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz\",\n      \"integrity\": \"sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/data-uri-to-buffer\": {\n      \"version\": \"6.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz\",\n      \"integrity\": \"sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/debug\": {\n      \"version\": \"4.4.3\",\n      \"resolved\": \"https://registry.npmjs.org/debug/-/debug-4.4.3.tgz\",\n      \"integrity\": \"sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ms\": \"^2.1.3\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"peerDependenciesMeta\": {\n        \"supports-color\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/degenerator\": {\n      \"version\": \"5.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz\",\n      \"integrity\": \"sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ast-types\": \"^0.13.4\",\n        \"escodegen\": \"^2.1.0\",\n        \"esprima\": \"^4.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/devtools-protocol\": {\n      \"version\": \"0.0.1581282\",\n      \"resolved\": \"https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1581282.tgz\",\n      \"integrity\": \"sha512-nv7iKtNZQshSW2hKzYNr46nM/Cfh5SEvE2oV0/SEGgc9XupIY5ggf84Cz8eJIkBce7S3bmTAauFD6aysMpnqsQ==\",\n      \"license\": \"BSD-3-Clause\"\n    },\n    \"node_modules/emoji-regex\": {\n      \"version\": \"8.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz\",\n      \"integrity\": \"sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/end-of-stream\": {\n      \"version\": \"1.4.5\",\n      \"resolved\": \"https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz\",\n      \"integrity\": \"sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"once\": \"^1.4.0\"\n      }\n    },\n    \"node_modules/escalade\": {\n      \"version\": \"3.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz\",\n      \"integrity\": \"sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=6\"\n      }\n    },\n    \"node_modules/escodegen\": {\n      \"version\": \"2.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz\",\n      \"integrity\": \"sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==\",\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"esprima\": \"^4.0.1\",\n        \"estraverse\": \"^5.2.0\",\n        \"esutils\": \"^2.0.2\"\n      },\n      \"bin\": {\n        \"escodegen\": \"bin/escodegen.js\",\n        \"esgenerate\": \"bin/esgenerate.js\"\n      },\n      \"engines\": {\n        \"node\": \">=6.0\"\n      },\n      \"optionalDependencies\": {\n        \"source-map\": \"~0.6.1\"\n      }\n    },\n    \"node_modules/esprima\": {\n      \"version\": \"4.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz\",\n      \"integrity\": \"sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==\",\n      \"license\": \"BSD-2-Clause\",\n      \"bin\": {\n        \"esparse\": \"bin/esparse.js\",\n        \"esvalidate\": \"bin/esvalidate.js\"\n      },\n      \"engines\": {\n        \"node\": \">=4\"\n      }\n    },\n    \"node_modules/estraverse\": {\n      \"version\": \"5.3.0\",\n      \"resolved\": \"https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz\",\n      \"integrity\": \"sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=4.0\"\n      }\n    },\n    \"node_modules/esutils\": {\n      \"version\": \"2.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz\",\n      \"integrity\": \"sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==\",\n      \"license\": \"BSD-2-Clause\",\n      \"engines\": {\n        \"node\": \">=0.10.0\"\n      }\n    },\n    \"node_modules/events-universal\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz\",\n      \"integrity\": \"sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"bare-events\": \"^2.7.0\"\n      }\n    },\n    \"node_modules/extract-zip\": {\n      \"version\": \"2.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz\",\n      \"integrity\": \"sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==\",\n      \"license\": \"BSD-2-Clause\",\n      \"dependencies\": {\n        \"debug\": \"^4.1.1\",\n        \"get-stream\": \"^5.1.0\",\n        \"yauzl\": \"^2.10.0\"\n      },\n      \"bin\": {\n        \"extract-zip\": \"cli.js\"\n      },\n      \"engines\": {\n        \"node\": \">= 10.17.0\"\n      },\n      \"optionalDependencies\": {\n        \"@types/yauzl\": \"^2.9.1\"\n      }\n    },\n    \"node_modules/fast-fifo\": {\n      \"version\": \"1.3.2\",\n      \"resolved\": \"https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz\",\n      \"integrity\": \"sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/fd-slicer\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz\",\n      \"integrity\": \"sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"pend\": \"~1.2.0\"\n      }\n    },\n    \"node_modules/fs-extra\": {\n      \"version\": \"8.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz\",\n      \"integrity\": \"sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"graceful-fs\": \"^4.2.0\",\n        \"jsonfile\": \"^4.0.0\",\n        \"universalify\": \"^0.1.0\"\n      },\n      \"engines\": {\n        \"node\": \">=6 <7 || >=8\"\n      }\n    },\n    \"node_modules/fs-extra/node_modules/jsonfile\": {\n      \"version\": \"4.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz\",\n      \"integrity\": \"sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==\",\n      \"license\": \"MIT\",\n      \"optionalDependencies\": {\n        \"graceful-fs\": \"^4.1.6\"\n      }\n    },\n    \"node_modules/get-caller-file\": {\n      \"version\": \"2.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz\",\n      \"integrity\": \"sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==\",\n      \"license\": \"ISC\",\n      \"engines\": {\n        \"node\": \"6.* || 8.* || >= 10.*\"\n      }\n    },\n    \"node_modules/get-stream\": {\n      \"version\": \"5.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz\",\n      \"integrity\": \"sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"pump\": \"^3.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/sindresorhus\"\n      }\n    },\n    \"node_modules/get-uri\": {\n      \"version\": \"6.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz\",\n      \"integrity\": \"sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"basic-ftp\": \"^5.0.2\",\n        \"data-uri-to-buffer\": \"^6.0.2\",\n        \"debug\": \"^4.3.4\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/graceful-fs\": {\n      \"version\": \"4.2.11\",\n      \"resolved\": \"https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz\",\n      \"integrity\": \"sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==\",\n      \"license\": \"ISC\"\n    },\n    \"node_modules/http-proxy-agent\": {\n      \"version\": \"7.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz\",\n      \"integrity\": \"sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"agent-base\": \"^7.1.0\",\n        \"debug\": \"^4.3.4\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/https-proxy-agent\": {\n      \"version\": \"7.0.6\",\n      \"resolved\": \"https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz\",\n      \"integrity\": \"sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"agent-base\": \"^7.1.2\",\n        \"debug\": \"4\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/ip-address\": {\n      \"version\": \"10.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz\",\n      \"integrity\": \"sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 12\"\n      }\n    },\n    \"node_modules/is-fullwidth-code-point\": {\n      \"version\": \"3.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz\",\n      \"integrity\": \"sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/jsonfile\": {\n      \"version\": \"5.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/jsonfile/-/jsonfile-5.0.0.tgz\",\n      \"integrity\": \"sha512-NQRZ5CRo74MhMMC3/3r5g2k4fjodJ/wh8MxjFbCViWKFjxrnudWSY5vomh+23ZaXzAS7J3fBZIR2dV6WbmfM0w==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"universalify\": \"^0.1.2\"\n      },\n      \"optionalDependencies\": {\n        \"graceful-fs\": \"^4.1.6\"\n      }\n    },\n    \"node_modules/lru-cache\": {\n      \"version\": \"7.18.3\",\n      \"resolved\": \"https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz\",\n      \"integrity\": \"sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==\",\n      \"license\": \"ISC\",\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/marked\": {\n      \"version\": \"16.4.2\",\n      \"resolved\": \"https://registry.npmjs.org/marked/-/marked-16.4.2.tgz\",\n      \"integrity\": \"sha512-TI3V8YYWvkVf3KJe1dRkpnjs68JUPyEa5vjKrp1XEEJUAOaQc+Qj+L1qWbPd0SJuAdQkFU0h73sXXqwDYxsiDA==\",\n      \"license\": \"MIT\",\n      \"bin\": {\n        \"marked\": \"bin/marked.js\"\n      },\n      \"engines\": {\n        \"node\": \">= 20\"\n      }\n    },\n    \"node_modules/mitt\": {\n      \"version\": \"3.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz\",\n      \"integrity\": \"sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/ms\": {\n      \"version\": \"2.1.3\",\n      \"resolved\": \"https://registry.npmjs.org/ms/-/ms-2.1.3.tgz\",\n      \"integrity\": \"sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/netmask\": {\n      \"version\": \"2.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz\",\n      \"integrity\": \"sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 0.4.0\"\n      }\n    },\n    \"node_modules/once\": {\n      \"version\": \"1.4.0\",\n      \"resolved\": \"https://registry.npmjs.org/once/-/once-1.4.0.tgz\",\n      \"integrity\": \"sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==\",\n      \"license\": \"ISC\",\n      \"dependencies\": {\n        \"wrappy\": \"1\"\n      }\n    },\n    \"node_modules/pac-proxy-agent\": {\n      \"version\": \"7.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz\",\n      \"integrity\": \"sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"@tootallnate/quickjs-emscripten\": \"^0.23.0\",\n        \"agent-base\": \"^7.1.2\",\n        \"debug\": \"^4.3.4\",\n        \"get-uri\": \"^6.0.1\",\n        \"http-proxy-agent\": \"^7.0.0\",\n        \"https-proxy-agent\": \"^7.0.6\",\n        \"pac-resolver\": \"^7.0.1\",\n        \"socks-proxy-agent\": \"^8.0.5\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/pac-resolver\": {\n      \"version\": \"7.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz\",\n      \"integrity\": \"sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"degenerator\": \"^5.0.0\",\n        \"netmask\": \"^2.0.2\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/pend\": {\n      \"version\": \"1.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/pend/-/pend-1.2.0.tgz\",\n      \"integrity\": \"sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/progress\": {\n      \"version\": \"2.0.3\",\n      \"resolved\": \"https://registry.npmjs.org/progress/-/progress-2.0.3.tgz\",\n      \"integrity\": \"sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.4.0\"\n      }\n    },\n    \"node_modules/proxy-agent\": {\n      \"version\": \"6.5.0\",\n      \"resolved\": \"https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz\",\n      \"integrity\": \"sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"agent-base\": \"^7.1.2\",\n        \"debug\": \"^4.3.4\",\n        \"http-proxy-agent\": \"^7.0.1\",\n        \"https-proxy-agent\": \"^7.0.6\",\n        \"lru-cache\": \"^7.14.1\",\n        \"pac-proxy-agent\": \"^7.1.0\",\n        \"proxy-from-env\": \"^1.1.0\",\n        \"socks-proxy-agent\": \"^8.0.5\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/proxy-from-env\": {\n      \"version\": \"1.1.0\",\n      \"resolved\": \"https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz\",\n      \"integrity\": \"sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/pump\": {\n      \"version\": \"3.0.4\",\n      \"resolved\": \"https://registry.npmjs.org/pump/-/pump-3.0.4.tgz\",\n      \"integrity\": \"sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"end-of-stream\": \"^1.1.0\",\n        \"once\": \"^1.3.1\"\n      }\n    },\n    \"node_modules/puppeteer-core\": {\n      \"version\": \"24.40.0\",\n      \"resolved\": \"https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.40.0.tgz\",\n      \"integrity\": \"sha512-MWL3XbUCfVgGR0gRsidzT6oKJT2QydPLhMITU6HoVWiiv4gkb6gJi3pcdAa8q4HwjBTbqISOWVP4aJiiyUJvag==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"@puppeteer/browsers\": \"2.13.0\",\n        \"chromium-bidi\": \"14.0.0\",\n        \"debug\": \"^4.4.3\",\n        \"devtools-protocol\": \"0.0.1581282\",\n        \"typed-query-selector\": \"^2.12.1\",\n        \"webdriver-bidi-protocol\": \"0.4.1\",\n        \"ws\": \"^8.19.0\"\n      },\n      \"engines\": {\n        \"node\": \">=18\"\n      }\n    },\n    \"node_modules/require-directory\": {\n      \"version\": \"2.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz\",\n      \"integrity\": \"sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=0.10.0\"\n      }\n    },\n    \"node_modules/semver\": {\n      \"version\": \"7.7.4\",\n      \"resolved\": \"https://registry.npmjs.org/semver/-/semver-7.7.4.tgz\",\n      \"integrity\": \"sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==\",\n      \"license\": \"ISC\",\n      \"bin\": {\n        \"semver\": \"bin/semver.js\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      }\n    },\n    \"node_modules/smart-buffer\": {\n      \"version\": \"4.2.0\",\n      \"resolved\": \"https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz\",\n      \"integrity\": \"sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 6.0.0\",\n        \"npm\": \">= 3.0.0\"\n      }\n    },\n    \"node_modules/socks\": {\n      \"version\": \"2.8.7\",\n      \"resolved\": \"https://registry.npmjs.org/socks/-/socks-2.8.7.tgz\",\n      \"integrity\": \"sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ip-address\": \"^10.0.1\",\n        \"smart-buffer\": \"^4.2.0\"\n      },\n      \"engines\": {\n        \"node\": \">= 10.0.0\",\n        \"npm\": \">= 3.0.0\"\n      }\n    },\n    \"node_modules/socks-proxy-agent\": {\n      \"version\": \"8.0.5\",\n      \"resolved\": \"https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz\",\n      \"integrity\": \"sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"agent-base\": \"^7.1.2\",\n        \"debug\": \"^4.3.4\",\n        \"socks\": \"^2.8.3\"\n      },\n      \"engines\": {\n        \"node\": \">= 14\"\n      }\n    },\n    \"node_modules/source-map\": {\n      \"version\": \"0.6.1\",\n      \"resolved\": \"https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz\",\n      \"integrity\": \"sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==\",\n      \"license\": \"BSD-3-Clause\",\n      \"optional\": true,\n      \"engines\": {\n        \"node\": \">=0.10.0\"\n      }\n    },\n    \"node_modules/streamx\": {\n      \"version\": \"2.25.0\",\n      \"resolved\": \"https://registry.npmjs.org/streamx/-/streamx-2.25.0.tgz\",\n      \"integrity\": \"sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"events-universal\": \"^1.0.0\",\n        \"fast-fifo\": \"^1.3.2\",\n        \"text-decoder\": \"^1.1.0\"\n      }\n    },\n    \"node_modules/string-width\": {\n      \"version\": \"4.2.3\",\n      \"resolved\": \"https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz\",\n      \"integrity\": \"sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"emoji-regex\": \"^8.0.0\",\n        \"is-fullwidth-code-point\": \"^3.0.0\",\n        \"strip-ansi\": \"^6.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/strip-ansi\": {\n      \"version\": \"6.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz\",\n      \"integrity\": \"sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-regex\": \"^5.0.1\"\n      },\n      \"engines\": {\n        \"node\": \">=8\"\n      }\n    },\n    \"node_modules/tar-fs\": {\n      \"version\": \"3.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz\",\n      \"integrity\": \"sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"pump\": \"^3.0.0\",\n        \"tar-stream\": \"^3.1.5\"\n      },\n      \"optionalDependencies\": {\n        \"bare-fs\": \"^4.0.1\",\n        \"bare-path\": \"^3.0.0\"\n      }\n    },\n    \"node_modules/tar-stream\": {\n      \"version\": \"3.1.8\",\n      \"resolved\": \"https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz\",\n      \"integrity\": \"sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"b4a\": \"^1.6.4\",\n        \"bare-fs\": \"^4.5.5\",\n        \"fast-fifo\": \"^1.2.0\",\n        \"streamx\": \"^2.15.0\"\n      }\n    },\n    \"node_modules/teex\": {\n      \"version\": \"1.0.1\",\n      \"resolved\": \"https://registry.npmjs.org/teex/-/teex-1.0.1.tgz\",\n      \"integrity\": \"sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"streamx\": \"^2.12.5\"\n      }\n    },\n    \"node_modules/text-decoder\": {\n      \"version\": \"1.2.7\",\n      \"resolved\": \"https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz\",\n      \"integrity\": \"sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==\",\n      \"license\": \"Apache-2.0\",\n      \"dependencies\": {\n        \"b4a\": \"^1.6.4\"\n      }\n    },\n    \"node_modules/tslib\": {\n      \"version\": \"2.8.1\",\n      \"resolved\": \"https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz\",\n      \"integrity\": \"sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==\",\n      \"license\": \"0BSD\"\n    },\n    \"node_modules/twemoji\": {\n      \"version\": \"14.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/twemoji/-/twemoji-14.0.2.tgz\",\n      \"integrity\": \"sha512-BzOoXIe1QVdmsUmZ54xbEH+8AgtOKUiG53zO5vVP2iUu6h5u9lN15NcuS6te4OY96qx0H7JK9vjjl9WQbkTRuA==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"fs-extra\": \"^8.0.1\",\n        \"jsonfile\": \"^5.0.0\",\n        \"twemoji-parser\": \"14.0.0\",\n        \"universalify\": \"^0.1.2\"\n      }\n    },\n    \"node_modules/twemoji-parser\": {\n      \"version\": \"14.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/twemoji-parser/-/twemoji-parser-14.0.0.tgz\",\n      \"integrity\": \"sha512-9DUOTGLOWs0pFWnh1p6NF+C3CkQ96PWmEFwhOVmT3WbecRC+68AIqpsnJXygfkFcp4aXbOp8Dwbhh/HQgvoRxA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/typed-query-selector\": {\n      \"version\": \"2.12.1\",\n      \"resolved\": \"https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.1.tgz\",\n      \"integrity\": \"sha512-uzR+FzI8qrUEIu96oaeBJmd9E7CFEiQ3goA5qCVgc4s5llSubcfGHq9yUstZx/k4s9dXHVKsE35YWoFyvEqEHA==\",\n      \"license\": \"MIT\"\n    },\n    \"node_modules/undici-types\": {\n      \"version\": \"7.18.2\",\n      \"resolved\": \"https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz\",\n      \"integrity\": \"sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==\",\n      \"license\": \"MIT\",\n      \"optional\": true\n    },\n    \"node_modules/universalify\": {\n      \"version\": \"0.1.2\",\n      \"resolved\": \"https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz\",\n      \"integrity\": \"sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">= 4.0.0\"\n      }\n    },\n    \"node_modules/webdriver-bidi-protocol\": {\n      \"version\": \"0.4.1\",\n      \"resolved\": \"https://registry.npmjs.org/webdriver-bidi-protocol/-/webdriver-bidi-protocol-0.4.1.tgz\",\n      \"integrity\": \"sha512-ARrjNjtWRRs2w4Tk7nqrf2gBI0QXWuOmMCx2hU+1jUt6d00MjMxURrhxhGbrsoiZKJrhTSTzbIrc554iKI10qw==\",\n      \"license\": \"Apache-2.0\"\n    },\n    \"node_modules/wrap-ansi\": {\n      \"version\": \"7.0.0\",\n      \"resolved\": \"https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz\",\n      \"integrity\": \"sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"ansi-styles\": \"^4.0.0\",\n        \"string-width\": \"^4.1.0\",\n        \"strip-ansi\": \"^6.0.0\"\n      },\n      \"engines\": {\n        \"node\": \">=10\"\n      },\n      \"funding\": {\n        \"url\": \"https://github.com/chalk/wrap-ansi?sponsor=1\"\n      }\n    },\n    \"node_modules/wrappy\": {\n      \"version\": \"1.0.2\",\n      \"resolved\": \"https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz\",\n      \"integrity\": \"sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==\",\n      \"license\": \"ISC\"\n    },\n    \"node_modules/ws\": {\n      \"version\": \"8.20.0\",\n      \"resolved\": \"https://registry.npmjs.org/ws/-/ws-8.20.0.tgz\",\n      \"integrity\": \"sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==\",\n      \"license\": \"MIT\",\n      \"engines\": {\n        \"node\": \">=10.0.0\"\n      },\n      \"peerDependencies\": {\n        \"bufferutil\": \"^4.0.1\",\n        \"utf-8-validate\": \">=5.0.2\"\n      },\n      \"peerDependenciesMeta\": {\n        \"bufferutil\": {\n          \"optional\": true\n        },\n        \"utf-8-validate\": {\n          \"optional\": true\n        }\n      }\n    },\n    \"node_modules/y18n\": {\n      \"version\": \"5.0.8\",\n      \"resolved\": \"https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz\",\n      \"integrity\": \"sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==\",\n      \"license\": \"ISC\",\n      \"engines\": {\n        \"node\": \">=10\"\n      }\n    },\n    \"node_modules/yargs\": {\n      \"version\": \"17.7.2\",\n      \"resolved\": \"https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz\",\n      \"integrity\": \"sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"cliui\": \"^8.0.1\",\n        \"escalade\": \"^3.1.1\",\n        \"get-caller-file\": \"^2.0.5\",\n        \"require-directory\": \"^2.1.1\",\n        \"string-width\": \"^4.2.3\",\n        \"y18n\": \"^5.0.5\",\n        \"yargs-parser\": \"^21.1.1\"\n      },\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/yargs-parser\": {\n      \"version\": \"21.1.1\",\n      \"resolved\": \"https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz\",\n      \"integrity\": \"sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==\",\n      \"license\": \"ISC\",\n      \"engines\": {\n        \"node\": \">=12\"\n      }\n    },\n    \"node_modules/yauzl\": {\n      \"version\": \"2.10.0\",\n      \"resolved\": \"https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz\",\n      \"integrity\": \"sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==\",\n      \"license\": \"MIT\",\n      \"dependencies\": {\n        \"buffer-crc32\": \"~0.2.3\",\n        \"fd-slicer\": \"~1.1.0\"\n      }\n    },\n    \"node_modules/zod\": {\n      \"version\": \"3.25.76\",\n      \"resolved\": \"https://registry.npmjs.org/zod/-/zod-3.25.76.tgz\",\n      \"integrity\": \"sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==\",\n      \"license\": \"MIT\",\n      \"funding\": {\n        \"url\": \"https://github.com/sponsors/colinhacks\"\n      }\n    }\n  }\n}\n\nFile v1.0.0:package.json\n\n{\n  \"name\": \"md2pdf-skill-browser-pipeline\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"description\": \"Browser-based Markdown to PDF pipeline for emoji-friendly output.\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"marked\": \"^16.3.0\",\n    \"puppeteer-core\": \"^24.22.3\",\n    \"twemoji\": \"^14.0.2\"\n  }\n}\n\nFile v1.0.0:assets/defaults/hifi.yaml\n\nfrom: gfm+emoji+autolink_bare_uris+footnotes\npdf-engine: xelatex\ntoc: true\nnumber-sections: true\nhighlight-style: tango\nvariables:\n  CJKmainfont: Noto Sans CJK SC\n  mainfont: DejaVu Serif\n  sansfont: DejaVu Sans\n  monofont: DejaVu Sans Mono\n  geometry: margin=2.2cm\n  fontsize: 11pt\n  linestretch: 1.2\n  colorlinks: true\n  linkcolor: blue\n  urlcolor: blue","readmeExcerpt":"Skill: md-pdf Owner: karlzhu-zxc Summary: Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals. Tags: latest:1.0.1 Version history: v1.0.1 | 2026-03-26T14:16:26.649Z | user - Removed package-lock.json from the repository. - No changes to the skill's functionality or documentation. v1.0.0 | 2026-03-26T14:15:32.477Z | user - Initial r","codeSnippets":[],"executableExamples":[],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: md2pdf\ndescription: High-fidelity Markdown to PDF conversion with two pipelines: Pandoc + XeLaTeX for print-style documents, and browser-rendered HTML/Twemoji for emoji-heavy or WYSIWYG-friendly output. Use when users ask for polished PDF output from .md, want better visual quality than basic markdown renderers, need strong Chinese/CJK support, or specifically need emoji to survive PDF export.\n---\n\n# md2pdf\n\nProduce polished, print-ready PDF from Markdown with a stable, reusable pipeline.\n\n## Quick start\n\n1. Install dependencies (Ubuntu/Debian):\n   - `bash scripts/install_deps_ubuntu.sh`\n2. Convert standard formal Markdown with Pandoc/XeLaTeX:\n   - `bash scripts/md2pdf.sh input.md output.pdf`\n3. Convert emoji-heavy or browser-like Markdown with CDP browser rendering:\n   - `bash scripts/md2pdf-browser.sh input.md output.pdf`\n4. Optional: enable cover page / metadata style via defaults:\n   - `bash scripts/md2pdf.sh input.md output.pdf --defaults assets/defaults/hifi.yaml`\n\n## Workflow\n\n### 1) Choose the pipeline\n\nUse the LaTeX pipeline when the document is mostly text/tables and should look print-formal.\n\nUse the browser pipeline when any of these are true:\n\n- emoji must render correctly\n- HTML/CSS-like appearance matters more than TeX typography\n- the Markdown contains GitHub-style formatting that is easier to preserve in HTML\n- a CDP browser endpoint is already available\n\n### 2) Prepare source markdown\n\n- Prefer `#`/`##` heading hierarchy (for TOC quality).\n- Keep code blocks fenced with language tags (for syntax highlight).\n- Keep tables in GFM format.\n- For very wide tables, prefer shorter cell content or convert the summary table to bullets before export.\n\n### 3) Run the formal print pipeline\n\nUse `scripts/md2pdf.sh` as the default entrypoint for print-style output.\n\nIt applies a professional baseline:\n\n- `--pdf-engine=xelatex`\n- Chinese font fallback (`Noto Sans CJK SC`)\n- Table of contents (`--toc`)\n- Section numbering (`--number-sections`)\n- Reasonable margins / line spread / link coloring\n- Code highlight style\n\n### 4) Run the emoji-friendly browser pipeline\n\nUse `scripts/md2pdf-browser.sh` when emoji support matters.\n\nIt does this:\n\n- render Markdown to HTML\n- convert emoji to Twemoji images\n- connect to an existing CDP browser (`BROWSER_CDP_URL` or `http://127.0.0.1:9222`)\n- print the page to PDF with browser CSS\n\nExample:\n\n- `BROWSER_CDP_URL=http://192.168.1.30:9222 bash scripts/md2pdf-browser.sh input.md output.pdf`\n\n### 5) Tune output quality\n\nUse either:\n\n- CLI flags in `scripts/md2pdf.sh` (quick tuning), or\n- defaults file (`assets/defaults/hifi.yaml`) for stable team-wide style.\n\nRecommended adjustments:\n\n- business report: keep `11pt`, margin `2.2cm`, TOC on\n- printable manual: increase margin to `2.5cm`\n- dense technical doc: keep section numbers and monospace code font\n- emoji-heavy travel/share docs: prefer browser pipeline first\n\n## Troubleshooting\n\n- `pandoc: command not found`: run `scripts/install_deps_ubuntu.sh`."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7bq9xffcv2jxmhfxg7kvne3h828rb6\",\n  \"slug\": \"md-pdf\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1774534586649\n}"},{"path":"references/style-guide.md","content":"# md2pdf style guide\n\n## Baseline choices\n\n- Engine: XeLaTeX (best CJK + typography compatibility for mixed Chinese/English docs)\n- Font strategy:\n  - CJK main font: `Noto Sans CJK SC`\n  - Latin serif: `DejaVu Serif`\n  - Latin sans: `DejaVu Sans`\n  - Monospace/code: `DejaVu Sans Mono`\n\n## Recommended markdown authoring rules\n\n1. Keep one H1 title only.\n2. Use H2/H3 hierarchy consistently for TOC.\n3. Always annotate fenced code language (e.g. ` ```bash `).\n4. Keep tables concise; split very wide tables.\n5. Use footnotes for dense annotations.\n\n## Quality profiles\n\n### Business report\n- TOC: on\n- Numbering: on\n- Margin: 2.2cm\n- Font size: 11pt\n\n### Manual / print\n- TOC: on\n- Numbering: on\n- Margin: 2.5cm\n- Font size: 11pt or 12pt\n\n### Dense technical appendix\n- TOC: optional\n- Numbering: on\n- Margin: 2.0cm\n- Font size: 10.5pt or 11pt\n\n## If output still looks plain\n\n- Add a custom LaTeX template and pass via defaults yaml\n- Use a stricter markdown style guide for source authoring\n- Normalize heading levels before conversion"},{"path":"skill-card.md","content":"## Description:\n\nConverts Markdown to polished PDF through either a Pandoc and XeLaTeX print pipeline or a browser-rendered HTML and Twemoji pipeline for emoji-heavy output.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[karlzhu-zxc](https://clawhub.ai/user/karlzhu-zxc)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and technical writers use this skill to turn Markdown documents into print-ready PDFs, including CJK-friendly reports and emoji-heavy documents that need browser-style rendering.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Browser-based rendering can expose sensitive Markdown content to an existing or remote browser session.\n\nMitigation: Use the browser pipeline only with a trusted local or access-controlled CDP endpoint and avoid processing sensitive or untrusted Markdown through it.\n\nRisk: Active Markdown or embedded HTML may execute during browser rendering.\n\nMitigation: Add sanitization, disable JavaScript where possible, and block unnecessary network requests before routine use.\n\nRisk: The browser pipeline installs npm dependencies without a lockfile.\n\nMitigation: Pin dependencies with a lockfile before adopting the skill in a repeatable production workflow.\n\n## Reference(s):\n\n- [md2pdf style guide](references/style-guide.md)\n- [Reusable defaults preset](assets/defaults/hifi.yaml)\n- [ClawHub skill page](https://clawhub.ai/karlzhu-zxc/skills/md-pdf)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and configuration paths]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces guidance for generating PDF files from Markdown using local command-line tools.]\n\n## Skill Version(s):\n\n1.0.1 (source: ClawHub release evidence)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."},{"path":"package.json","content":"{\n  \"name\": \"md2pdf-skill-browser-pipeline\",\n  \"private\": true,\n  \"version\": \"1.0.0\",\n  \"description\": \"Browser-based Markdown to PDF pipeline for emoji-friendly output.\",\n  \"license\": \"MIT\",\n  \"dependencies\": {\n    \"marked\": \"^16.3.0\",\n    \"puppeteer-core\": \"^24.22.3\",\n    \"twemoji\": \"^14.0.2\"\n  }\n}"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals. Skill: md-pdf Owner: karlzhu-zxc Summary: Convert Markdown to polished PDF using Pandoc + XeLaTeX for print-quality or browser rendering with emoji and CSS support for rich visuals. Tags: latest:1.0.1 Version history: v1.0.1 | 2026-03-26T14:16:26.649Z | user - Removed package-lock.json from the repository. - No changes to the skill's functionality or documentation. v1.0.0 | 2026-03-26T14:15:32.477Z | user - Initial r","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1360,"uniquenessScore":49,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T02:40:58.208Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T02:40:58.208Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-14T09:56:57.953Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}