[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6DH1YWAVRAY0HB3NRCPJP5H":3,"skill-same:01M6DH1YWAVRAY0HB3NRCPJP5H":111},{"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":23,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":6,"ownerHtmlUrl":42,"ownerBlogUrl":43,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6DH1YWAVRAY0HB3NRCPJP5H","pdf",null,"Render markdown files as typeset PDFs via pandoc and weasyprint using academic (A4, justified, headings, callouts, footnotes) or letter stylesheets. Use for reports, grant reviews, or formal letters.","nicsuzor\u002FacademicOps","nicsuzor","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4496978?v=4","01M6DGWCFNDYP03M4DQAHA6DN1","Nicolas Suzor","01M6DGWCPXG37BMXRZZKXR0A1Z",5,"MIT","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27,28,29,30,31],"PDF","markdown","use","reports","files","Academic","typeset","as","2026-11-10 10:12:30",false,"---\nname: pdf\ndescription: Render markdown files as typeset PDFs via pandoc and weasyprint using academic (A4, justified, headings, callouts, footnotes) or letter stylesheets. Use for reports, grant reviews, or formal letters.\n---\n\n# PDF Generation\n\nGenerate typeset PDFs from markdown using bundled Roboto typography and house stylesheets.\n\n## Generation Command\n\n```bash\nuv run python scripts\u002Fgenerate_pdf.py \u003Cinput.md> [output.pdf] [--title \"Title\"] [--type letter|academic]\n```\n\nAuto-detects document type (letter if initial text contains \"Dear\", \"Re:\", or lacks an H1; academic otherwise). Defaults output to `\u003Cinput>.pdf`.\n\n## Stylesheets\n\n- **`assets\u002Facademic-style.css`**: Standard A4 format with justified text, hierarchical bordered headings, code syntax highlighting, tables, callouts (`.note`, `.warning`, `.tip`, `.important`), and footnotes.\n- **`assets\u002Fletter-style.css`**: Suppresses H1, formats recipient address blocks, and prepares signature spacing.\n\n## Letter Structure Requirements\n\nLetters styled with `letter-style.css` require paragraph-position ordering:\n\n```markdown\n[Date]\n[Recipient Name]\n[Recipient Title]\n[Organization]\n\nDear [Name],\n\n**Re: [Subject]**\n\n[Body paragraphs...]\n\nYours sincerely,\n\n\u003Cimg src=\"$ACA_DATA\u002Fassets\u002Fsignature.png\" style=\"height: 50px;\" \u002F>\n\n[Signer Name]\n[Signer Title]\n[Signer Email]\n```\n\nInsert signature image from `$ACA_DATA\u002Fassets\u002Fsignature.png` if not already present.\n\n## Dependencies\n\nRequires `pandoc` and `weasyprint` (`uv tool install weasyprint`).\n","# PDF Generation\n\nGenerate typeset PDFs from markdown using bundled Roboto typography and house stylesheets.\n\n## Generation Command\n\n```bash\nuv run python scripts\u002Fgenerate_pdf.py \u003Cinput.md> [output.pdf] [--title \"Title\"] [--type letter|academic]\n```\n\nAuto-detects document type (letter if initial text contains \"Dear\", \"Re:\", or lacks an H1; academic otherwise). Defaults output to `\u003Cinput>.pdf`.\n\n## Stylesheets\n\n- **`assets\u002Facademic-style.css`**: Standard A4 format with justified text, hierarchical bordered headings, code syntax highlighting, tables, callouts (`.note`, `.warning`, `.tip`, `.important`), and footnotes.\n- **`assets\u002Fletter-style.css`**: Suppresses H1, formats recipient address blocks, and prepares signature spacing.\n\n## Letter Structure Requirements\n\nLetters styled with `letter-style.css` require paragraph-position ordering:\n\n```markdown\n[Date]\n[Recipient Name]\n[Recipient Title]\n[Organization]\n\nDear [Name],\n\n**Re: [Subject]**\n\n[Body paragraphs...]\n\nYours sincerely,\n\n\u003Cimg src=\"$ACA_DATA\u002Fassets\u002Fsignature.png\" style=\"height: 50px;\" \u002F>\n\n[Signer Name]\n[Signer Title]\n[Signer Email]\n```\n\nInsert signature image from `$ACA_DATA\u002Fassets\u002Fsignature.png` if not already present.\n\n## Dependencies\n\nRequires `pandoc` and `weasyprint` (`uv tool install weasyprint`).\n",{"name":5,"description":7},"main","22a4e466ac352d09f636273685845a312ee07a15","cowork\u002Ftools\u002Fskills\u002Fpdf",3,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps","https:\u002F\u002Fgithub.com\u002Fnicsuzor","https:\u002F\u002Fnic.suzor.net\u002F","2026-11-11 20:31:05",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add nicsuzor\u002FacademicOps --skill pdf",{"tool":51,"command":52},"bunx","bunx skills add nicsuzor\u002FacademicOps --skill pdf",{"tool":54,"command":55},"pnpm","pnpm dlx skills add nicsuzor\u002FacademicOps --skill pdf","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002FSKILL.md",true,[59,65,69,73,77,81,85,89,93,97,101,105],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"assets\u002Facademic-style.css","ASSET","资产文件",6235,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Facademic-style.css",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"assets\u002Ffonts\u002FRoboto-Bold.ttf",351108,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRoboto-Bold.ttf",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"assets\u002Ffonts\u002FRoboto-BoldItalic.ttf",378636,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRoboto-BoldItalic.ttf",{"path":74,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":75,"sourceHtmlUrl":76},"assets\u002Ffonts\u002FRoboto-Italic.ttf",375092,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRoboto-Italic.ttf",{"path":78,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":79,"sourceHtmlUrl":80},"assets\u002Ffonts\u002FRoboto-Light.ttf",350028,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRoboto-Light.ttf",{"path":82,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":83,"sourceHtmlUrl":84},"assets\u002Ffonts\u002FRoboto-Medium.ttf",350864,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRoboto-Medium.ttf",{"path":86,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":87,"sourceHtmlUrl":88},"assets\u002Ffonts\u002FRoboto-Regular.ttf",349400,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRoboto-Regular.ttf",{"path":90,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":91,"sourceHtmlUrl":92},"assets\u002Ffonts\u002FRobotoMonoNerdFont-Bold.ttf",2216280,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRobotoMonoNerdFont-Bold.ttf",{"path":94,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":95,"sourceHtmlUrl":96},"assets\u002Ffonts\u002FRobotoMonoNerdFont-Italic.ttf",2223060,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRobotoMonoNerdFont-Italic.ttf",{"path":98,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":99,"sourceHtmlUrl":100},"assets\u002Ffonts\u002FRobotoMonoNerdFont-Regular.ttf",2216136,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Ffonts\u002FRobotoMonoNerdFont-Regular.ttf",{"path":102,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":103,"sourceHtmlUrl":104},"assets\u002Fletter-style.css",5409,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fassets\u002Fletter-style.css",{"path":106,"resourceType":107,"resourceTypeDesc":108,"sizeBytes":109,"sourceHtmlUrl":110},"scripts\u002Fgenerate_pdf.py","SCRIPT","脚本",5082,"https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Ftools\u002Fskills\u002Fpdf\u002Fscripts\u002Fgenerate_pdf.py",[112,138,143,148,153,177],{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":32},"01M6M6JR6VXPDA3MDPVS36DSSP","refresh-questions","Sweep and refresh open questions in the Telegram Mini App by closing questions that are answered elsewhere, superseded, or asking for completed actions, and ensuring active open questions carry recommendations and context. Use when asked to refresh questions, sweep stale questions, or keep the Mini App decision queue current. Exclude for asking new questions or routine chat replies.","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,26,127,128,129,130,131,132,133,134,135,136,137],"refresh","refresh questions","questions","actions","telegram mini app","open","decision","context","queue","telegram","stale","chat","active","recommendations","app","keep","replies","closing","for",{"skillNo":139,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":32},"01M6M6JGW7Q0SC5B28TQ7PKE8E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-openclaw\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,26,127,128,129,130,131,132,133,134,135,136,137],{"skillNo":144,"name":114,"nameZh":6,"description":115,"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":147,"publishedAt":32},"01M6M6J7D0ZTQ4VSS5ADRSA12E","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-telegram-claude\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,26,127,128,129,130,131,132,133,134,135,136,137],{"skillNo":149,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":150,"categories":151,"keywords":152,"publishedAt":32},"01M6M6EP6BK1DDN2212S7Y95G0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fcowork\u002Fida-telegram\u002Fskills\u002Frefresh-questions\u002FSKILL.md",[],[119,120,121,122,123,124,125,126,26,127,128,129,130,131,132,133,134,135,136,137],{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":159,"publishedAt":32},"01M6G9Q8538NENA2TE2V4HPRSF","dispatch-queue","Show the user the tasks ready to dispatch, ranked with a recommendation on each, and start workers on the ones the user approves -- redirects to universal workflow template wf-dispatch-queue. Use for \"what's ready\", \"what should we dispatch\", or \"dispatch the queue\". Exclude for starting workers on named tasks without the user's choice (use dispatch) or graph truth maintenance (use reconcile).","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fopenclaw\u002Fida\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[160,127,161,162,163,164,165,166,167,168,26,169,170,171,172,173,174,175,176],"dispatch","dispatch queue","workflow","tasks","graph","start","template","choice","user","reconcile","ready","maintenance","workers","show","wf","recommendation","with",{"skillNo":178,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":179,"categories":180,"keywords":181,"publishedAt":32},"01M6G9P9M3PQXPX3647RA5E4D0","https:\u002F\u002Fgithub.com\u002Fnicsuzor\u002FacademicOps\u002Fblob\u002Fmain\u002Fida-openclaw\u002Fskills\u002Fdispatch-queue\u002FSKILL.md",[],[160,127,161,162,163,164,165,166,167,168,26,169,170,171,172,173,174,175,176]]