[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6HXNR3STBFK2PV2KB87CNCS":3,"skill-same:01M6HXNR3STBFK2PV2KB87CNCS":67},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6HXNR3STBFK2PV2KB87CNCS","pdf-checklist-generation",null,"Generate structured PDF checklists and reports using Python libraries in sandbox","HKUDS\u002FAgentPilot","HKUDS","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F118165258?v=4","01M6HW8VRNZP64G0P4MVJW2KKQ","✨Data Intelligence Lab@HKU✨","01M6HW8VWZVHBRHYH3T330PFWV",8029,"MIT","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-generation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33],"PDF","checklist","generation","pdf checklist generation","python","sandbox","libraries","generate","reports","structured","2026-11-10 10:12:30",false,"---\nname: pdf-checklist-generation\ndescription: Generate structured PDF checklists and reports using Python libraries in sandbox\n---\n\n# PDF Checklist Generation\n\nThis skill provides a workflow for creating professional PDF documents (checklists, reports, scorecards) using Python libraries within an execute_code_sandbox environment.\n\n## When to Use\n\n- Need to generate downloadable PDF reports or checklists\n- Require structured documents with tables, sections, or scoring criteria\n- Working in a sandbox environment without direct file system access\n\n## Available Libraries\n\nChoose one based on your needs:\n\n| Library | Best For | Complexity |\n|---------|----------|------------|\n| `reportlab` | Professional layouts, tables, precise control | Medium |\n| `fpdf` | Simple documents, quick generation | Low |\n| `matplotlib` | Charts, graphs, visual reports | Medium |\n\n## Step-by-Step Workflow\n\n### Step 1: Install Required Library\n\n```python\n!pip install reportlab  # or fpdf, matplotlib\n```\n\n### Step 2: Create PDF Generation Script\n\n**Example using reportlab:**\n\n```python\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer\nfrom reportlab.lib.styles import getSampleStyleSheet\nfrom reportlab.lib import colors\n\ndef create_checklist_pdf(filename, checklist_items):\n    doc = SimpleDocTemplate(filename, pagesize=letter)\n    styles = getSampleStyleSheet()\n    elements = []\n    \n    # Title\n    elements.append(Paragraph(\"Assessment Checklist\", styles['Heading1']))\n    elements.append(Spacer(1, 12))\n    \n    # Table data\n    data = [['Item', 'Status', 'Score']]\n    for item in checklist_items:\n        data.append([item['name'], item['status'], item['score']])\n    \n    # Create table\n    table = Table(data)\n    table.setStyle(TableStyle([\n        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),\n        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),\n        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),\n        ('GRID', (0, 0), (-1, -1), 1, colors.black),\n    ]))\n    elements.append(table)\n    \n    doc.build(elements)\n    print(f\"PDF created: {filename}\")\n\n# Usage\nchecklist = [\n    {'name': 'Security Check', 'status': 'Pass', 'score': 10},\n    {'name': 'Performance Test', 'status': 'Fail', 'score': 5},\n]\ncreate_checklist_pdf('report.pdf', checklist)\n```\n\n### Step 3: Execute in Sandbox\n\nRun the script using `execute_code_sandbox`:\n\n```\nexecute_code_sandbox(code=\"\u003Cyour pdf generation code>\")\n```\n\n### Step 4: Verify Output\n\nAfter generation, verify the PDF was created:\n\n```\nread_file(path=\"report.pdf\")\n```\n\nOr inspect via shell:\n\n```\nexecute_code_sandbox(code=\"import os; print(os.path.exists('report.pdf'))\")\n```\n\n## Best Practices\n\n1. **Keep it simple**: Start with basic layouts before adding complexity\n2. **Test incrementally**: Generate a minimal PDF first, then add features\n3. **Handle errors**: Wrap PDF generation in try\u002Fexcept blocks\n4. **Verify file existence**: Always confirm the PDF was created before proceeding\n5. **Use UTF-8**: Ensure text encoding is proper for special characters\n\n## Common Pitfalls\n\n- Forgetting to install the library before import\n- Not checking if file was created successfully\n- Using paths that don't exist in sandbox environment\n- Missing required dependencies for advanced features\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Import error | Run `!pip install \u003Clibrary>` first |\n| File not found | Check working directory with `!pwd` |\n| Blank PDF | Ensure `doc.build()` is called |\n| Encoding issues | Use Unicode strings, specify encoding |","# PDF Checklist Generation\n\nThis skill provides a workflow for creating professional PDF documents (checklists, reports, scorecards) using Python libraries within an execute_code_sandbox environment.\n\n## When to Use\n\n- Need to generate downloadable PDF reports or checklists\n- Require structured documents with tables, sections, or scoring criteria\n- Working in a sandbox environment without direct file system access\n\n## Available Libraries\n\nChoose one based on your needs:\n\n| Library | Best For | Complexity |\n|---------|----------|------------|\n| `reportlab` | Professional layouts, tables, precise control | Medium |\n| `fpdf` | Simple documents, quick generation | Low |\n| `matplotlib` | Charts, graphs, visual reports | Medium |\n\n## Step-by-Step Workflow\n\n### Step 1: Install Required Library\n\n```python\n!pip install reportlab  # or fpdf, matplotlib\n```\n\n### Step 2: Create PDF Generation Script\n\n**Example using reportlab:**\n\n```python\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.platypus import SimpleDocTemplate, Table, TableStyle, Paragraph, Spacer\nfrom reportlab.lib.styles import getSampleStyleSheet\nfrom reportlab.lib import colors\n\ndef create_checklist_pdf(filename, checklist_items):\n    doc = SimpleDocTemplate(filename, pagesize=letter)\n    styles = getSampleStyleSheet()\n    elements = []\n    \n    # Title\n    elements.append(Paragraph(\"Assessment Checklist\", styles['Heading1']))\n    elements.append(Spacer(1, 12))\n    \n    # Table data\n    data = [['Item', 'Status', 'Score']]\n    for item in checklist_items:\n        data.append([item['name'], item['status'], item['score']])\n    \n    # Create table\n    table = Table(data)\n    table.setStyle(TableStyle([\n        ('BACKGROUND', (0, 0), (-1, 0), colors.grey),\n        ('TEXTCOLOR', (0, 0), (-1, 0), colors.whitesmoke),\n        ('ALIGN', (0, 0), (-1, -1), 'CENTER'),\n        ('GRID', (0, 0), (-1, -1), 1, colors.black),\n    ]))\n    elements.append(table)\n    \n    doc.build(elements)\n    print(f\"PDF created: {filename}\")\n\n# Usage\nchecklist = [\n    {'name': 'Security Check', 'status': 'Pass', 'score': 10},\n    {'name': 'Performance Test', 'status': 'Fail', 'score': 5},\n]\ncreate_checklist_pdf('report.pdf', checklist)\n```\n\n### Step 3: Execute in Sandbox\n\nRun the script using `execute_code_sandbox`:\n\n```\nexecute_code_sandbox(code=\"\u003Cyour pdf generation code>\")\n```\n\n### Step 4: Verify Output\n\nAfter generation, verify the PDF was created:\n\n```\nread_file(path=\"report.pdf\")\n```\n\nOr inspect via shell:\n\n```\nexecute_code_sandbox(code=\"import os; print(os.path.exists('report.pdf'))\")\n```\n\n## Best Practices\n\n1. **Keep it simple**: Start with basic layouts before adding complexity\n2. **Test incrementally**: Generate a minimal PDF first, then add features\n3. **Handle errors**: Wrap PDF generation in try\u002Fexcept blocks\n4. **Verify file existence**: Always confirm the PDF was created before proceeding\n5. **Use UTF-8**: Ensure text encoding is proper for special characters\n\n## Common Pitfalls\n\n- Forgetting to install the library before import\n- Not checking if file was created successfully\n- Using paths that don't exist in sandbox environment\n- Missing required dependencies for advanced features\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| Import error | Run `!pip install \u003Clibrary>` first |\n| File not found | Check working directory with `!pwd` |\n| Blank PDF | Ensure `doc.build()` is called |\n| Encoding issues | Use Unicode strings, specify encoding |",{"name":5,"description":7},"main","6b84b0689ca0d9e7b1e4061188ff6b60758e0f8a","openspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-generation",944,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot","https:\u002F\u002Fgithub.com\u002FHKUDS","https:\u002F\u002Fsites.google.com\u002Fview\u002Fchaoh","2026-11-12 22:26:39",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add HKUDS\u002FAgentPilot --skill pdf-checklist-generation",{"tool":53,"command":54},"bunx","bunx skills add HKUDS\u002FAgentPilot --skill pdf-checklist-generation",{"tool":56,"command":57},"pnpm","pnpm dlx skills add HKUDS\u002FAgentPilot --skill pdf-checklist-generation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-generation\u002FSKILL.md",true,[61],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},".skill_id","OTHER","其他",38,"https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-generation\u002F.skill_id",[68,88,107,130,154,176],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":34},"01M6HYB297NDABRERJRVG0K8R0","agentpilot","Set up AgentPilot and use its single entry to prepare missing inputs and run configured RSI experiments. Use when the user requests AgentPilot installation or work with AgentPilot.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fplugins\u002Fagentpilot\u002Fskills\u002Fagentpilot\u002FSKILL.md",[],[70,75,76,77,78,79,80,81,82,83,84,85,86,87],"prepare","requests","with","missing","installation","rsi","up","use","user","work","SET","run","experiments",{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":34},"01M6HYAYWXTTE1J7DJM0MFNQ4H","remember","Review auto-memory entries and propose promotions to OPENSPACE.md, OPENSPACE.local.md, or retained auto-memory topics; detect duplicates, stale facts, conflicts, and ambiguous entries before making changes.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fskills\u002Fremember\u002FSKILL.md",[],[90,95,96,97,98,99,100,101,102,103,104,105,106],"memory","review","auto","openspace","changes","facts","detect","entries","local","conflicts","stale","duplicates",{"skillNo":108,"name":109,"nameZh":6,"description":110,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":111,"categories":112,"keywords":116,"publishedAt":34},"01M6HYAVMPM4SBDV60R2B5HPV8","skill-discovery","Search reusable OpenSpace skills locally, and browse cloud packages step by step when a cloud skill may help. Reusing proven skills saves tokens, improves reliability, and extends your capabilities beyond built-in tools.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fskill-discovery\u002FSKILL.md",[113],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[117,118,119,98,120,121,122,123,124,125,126,127,128,129],"skill discovery","discovery","reusable","step by step","tokens","packages","help","cloud","reliability","capabilities","browse","search","Tools",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":34},"01M6HYAR811B3RB0M50RBEDGN6","delegate-task","Delegate tasks to OpenSpace — a full-stack autonomous worker for coding, DevOps, web research, and desktop automation, backed by an extensive MCP tool and skill library. Skills auto-improve through use, reducing token consumption over time. A cloud community lets agents share and collectively evolve reusable skills.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Fopenspace\u002Fhost_skills\u002Fdelegate-task\u002FSKILL.md",[136],{"categoryNo":114,"categoryName":115,"taxonomyType":21,"taxonomyTypeDesc":22},[138,139,140,98,141,142,143,144,145,119,97,82,146,147,148,149,150,151,152,153],"delegate","task","delegate task","time","improve","desktop automation","worker","community","autonomous","tool","stack","for","share","tasks","automation","MCP",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":160,"publishedAt":34},"01M6HYAM9FSGV6E52AYENDQXYH","write-special-chars-ts-check","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, plus a reliable TypeScript type-checking step that filters output to only the newly-written files to avoid being misled by pre-existing errors.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[161,162,163,164,165,166,167,168,169,28,170,171,172,173,149,174,175],"write special chars ts check","write","check","type","files","filters","only","template","file","typescript","output","Existing","type-checking","errors","script",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":34},"01M6HYAH05HGV7SVWSVR8PJRQD","write-special-chars-readback","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) using a Python heredoc script, with mandatory post-write verification via read_file and cleanup of \u002Ftmp helper scripts.","https:\u002F\u002Fgithub.com\u002FHKUDS\u002FAgentPilot\u002Fblob\u002Fmain\u002Fopenspace\u002Flegacy\u002Fv1\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[183,184,162,77,149,175,185,186,187,188,189,168,169,190,191,28],"write special chars readback","readback","helper","post","via","scripts","read","verification","cleanup"]