[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KJ9Y80DDVC26R3PDBHZD0T":3,"skill-same:01M6KJ9Y80DDVC26R3PDBHZD0T":73},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":25,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":13,"repositoryHtmlUrl":49,"repositoryHomepageUrl":6,"ownerHtmlUrl":50,"ownerBlogUrl":6,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M6KJ9Y80DDVC26R3PDBHZD0T","pdf-checklist-workflow",null,"Generate structured PDF documents with tables, sections, and scoring using Python libraries in execute_code_sandbox","AG064\u002FOpenSpace","AG064","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F184930299?v=4","01M6KHVFG7TB73NHX3RDYSTMH2","01M6KHVFMM7XA2PZA9Z83PHS3V",0,"MIT","https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-workflow\u002FSKILL.md",[17,22],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":23,"categoryName":24,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"PDF","workflow","checklist","pdf checklist workflow","python","sandbox","documents","libraries","generate","code","execute","scoring","structured","with","tables","2026-11-10 10:12:30",false,"---\nname: pdf-checklist-workflow\ndescription: Generate structured PDF documents with tables, sections, and scoring using Python libraries in execute_code_sandbox\n---\n\n# PDF Checklist\u002FReport Generation Workflow\n\nThis skill provides a reusable pattern for creating structured PDF documents such as checklists, reports, or assessments using Python in a sandboxed environment.\n\n## Overview\n\nUse this workflow when you need to:\n - Generate PDF checklists, reports, or assessments\n - Create structured documents with tables, sections, and headers\n - Include scoring criteria or evaluation frameworks\n - Produce downloadable artifacts for users\n \n **Primary method**: Use `execute_code_sandbox` for Python PDF generation\n **Fallback method**: If `execute_code_sandbox` fails, create and run Python scripts via shell commands\n\n## Step-by-Step Instructions\n\n### Step 1: Choose a PDF Library\n\nSelect a Python library based on your needs:\n\n| Library | Best For | Complexity |\n|---------|----------|------------|\n| `reportlab` | Professional reports, complex layouts | Medium |\n| `fpdf` \u002F `fpdf2` | Simple documents, quick generation | Low |\n| `matplotlib` | Charts, graphs, visual elements | Medium |\n\n### Step 2: Write PDF Generation Code in execute_code_sandbox\n\nUse the `execute_code_sandbox` tool with Python code that:\n1. Imports the chosen PDF library\n2. Defines document structure (title, sections, tables)\n3. Adds content (text, tables, scores, criteria)\n4. Saves to a file path like `\u002Fworkspace\u002Foutput.pdf`\n5. Outputs the path using `ARTIFACT_PATH:` prefix for download\n \n **Determine workspace directory dynamically**:\n Before generating PDFs, identify the correct output path:\n ```bash\n # Option 1: Use current directory\n WORKDIR=$(pwd)\n \n # Option 2: Check common workspace locations\n if [ -d \"\u002Fworkspace\" ]; then WORKDIR=\"\u002Fworkspace\"\n elif [ -d \"$HOME\u002Fworkspace\" ]; then WORKDIR=\"$HOME\u002Fworkspace\"\n else WORKDIR=$(pwd); fi\n ```\n \n In Python code, use environment variables or dynamic path detection:\n ```python\n import os\n workspace = os.environ.get('WORKSPACE', os.getcwd())\n output_path = os.path.join(workspace, 'output.pdf')\n ```\n\n**Example using fpdf2:**\n\n```python\nfrom fpdf import FPDF\n\nclass PDFChecklist(FPDF):\n    def header(self):\n        self.set_font('Arial', 'B', 16)\n        self.cell(0, 10, 'Assessment Checklist', 0, 1, 'C')\n        self.ln(10)\n    \n    def section_title(self, title):\n        self.set_font('Arial', 'B', 12)\n        self.cell(0, 10, title, 0, 1, 'L')\n        self.ln(5)\n    \n    def add_checklist_item(self, item, criteria, score):\n        self.set_font('Arial', '', 10)\n        self.cell(100, 8, item, 1)\n        self.cell(60, 8, criteria, 1)\n        self.cell(30, 8, str(score), 1)\n        self.ln()\n\n# Create PDF\npdf = PDFChecklist()\npdf.add_page()\npdf.set_auto_page_break(auto=True, margin=15)\n\n# Add sections\npdf.section_title('Evaluation Criteria')\npdf.add_checklist_item('Requirement 1', 'Must meet standard', 5)\npdf.add_checklist_item('Requirement 2', 'Should be complete', 4)\n\n# Save\noutput_path = '\u002Fworkspace\u002Fchecklist.pdf'\npdf.output(output_path)\nprint(f'ARTIFACT_PATH:{output_path}')\n```\n\n**Example using reportlab (more professional):**\n\n```python\nfrom reportlab.lib import colors\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle\nfrom reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle\nfrom reportlab.lib.units import inch\n\ndef create_pdf_report(output_path):\n    doc = SimpleDocTemplate(output_path, pagesize=letter)\n    styles = getSampleStyleSheet()\n    story = []\n    \n    # Title\n    title_style = ParagraphStyle('CustomTitle', parent=styles['Heading1'],\n                                  fontSize=18, spaceAfter=30, alignment=1)\n    story.append(Paragraph(\"Assessment Report\", title_style))\n    story.append(Spacer(1, 0.3*inch))\n    \n    # Section header\n    story.append(Paragraph(\"Evaluation Summary\", styles['Heading2']))\n    story.append(Spacer(1, 0.2*inch))\n    \n    # Data table\n    data = [\n        ['Criteria', 'Description', 'Score'],\n        ['Completeness', 'All sections filled', '8\u002F10'],\n        ['Accuracy', 'Information verified', '9\u002F10'],\n        ['Clarity', 'Easy to understand', '7\u002F10']\n    ]\n    \n    table = Table(data, colWidths=[2*inch, 2.5*inch, 1*inch])\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        ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),\n        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),\n        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),\n        ('GRID', (0, 0), (-1, -1), 1, colors.black)\n    ]))\n    story.append(table)\n    \n    doc.build(story)\n    print(f'ARTIFACT_PATH:{output_path}')\n\ncreate_pdf_report('\u002Fworkspace\u002Freport.pdf')\n```\n\n### Step 3: Execute the Code\n\nCall the tool:\n```\nexecute_code_sandbox\n  code: \u003Cyour PDF generation code from Step 2>\n  language: python\n```\n \n ### Step 3b: Fallback - Shell-Based Execution\n \n If `execute_code_sandbox` fails repeatedly (e.g., \"unknown error\", timeouts), use this fallback:\n \n **1. Create the Python script via heredoc:**\n ```bash\n cat > \u002Ftmp\u002Fgenerate_pdf.py \u003C\u003C 'EOF'\n # Your PDF generation code here\n from fpdf import FPDF\n import os\n \n workspace = os.environ.get('WORKSPACE', os.getcwd())\n output_path = os.path.join(workspace, 'checklist.pdf')\n \n pdf = FPDF()\n pdf.add_page()\n pdf.set_font('Arial', 'B', 16)\n pdf.cell(0, 10, 'Checklist', 0, 1, 'C')\n pdf.output(output_path)\n print(f'ARTIFACT_PATH:{output_path}')\n EOF\n ```\n \n **2. Install required library if needed:**\n ```bash\n pip install fpdf2 --quiet 2>\u002Fdev\u002Fnull || pip install fpdf2\n ```\n \n **3. Execute the script:**\n ```bash\n python \u002Ftmp\u002Fgenerate_pdf.py\n ```\n \n **4. Verify the output file was created:**\n ```bash\n ls -lh $(pwd)\u002F*.pdf 2>\u002Fdev\u002Fnull || ls -lh \u002Fworkspace\u002F*.pdf 2>\u002Fdev\u002Fnull\n ```\n \n **Important for fallback**: When using shell execution, ensure the script outputs the ARTIFACT_PATH so the file can be downloaded. Adjust the path based on where the file was actually created.\n\n### Step 4: Verify Output\n\nAfter execution, verify the PDF was created:\n\n**Option A - Use read_file:**\n```\nread_file\n  filetype: pdf\n  file_path: \u002Fworkspace\u002Foutput.pdf\n```\n\n**Option B - Use shell inspection:**\n```\nrun_shell\n  command: ls -lh \u002Fworkspace\u002F*.pdf\n```\n\nCheck that:\n- File exists and has reasonable size (>1KB)\n- No error messages in execution output\n- ARTIFACT_PATH was correctly output for download\n \n **If using fallback execution**, check multiple possible locations:\n ```bash\n run_shell\n   command: find . -name \"*.pdf\" -type f -exec ls -lh {} \\; 2>\u002Fdev\u002Fnull\n ```\n\n### Step 5: Handle Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| Library not installed | Add `!pip install fpdf2` or `!pip install reportlab` at code start |\n| Font errors | Use standard fonts (Arial, Helvetica, Courier) |\n| File not found | Ensure path is `\u002Fworkspace\u002Ffilename.pdf` |\n| Empty PDF | Check that `pdf.output()` or `doc.build()` is called |\n| Encoding issues | Use ASCII text or handle unicode properly |\n| `execute_code_sandbox` fails | Switch to shell-based fallback (Step 3b): create script with heredoc, run with `python` |\n| Wrong workspace path | Use dynamic detection: `os.getcwd()` or `$(pwd)` instead of hardcoded `\u002Fworkspace\u002F` |\n| Permission errors | Write to current directory or `\u002Ftmp\u002F` then move file |\n\n## Best Practices\n\n1. **Keep it simple first** - Start with basic text, add tables\u002Fgraphics later\n2. **Use ARTIFACT_PATH prefix** - Ensures the file is downloadable\n3. **Test incrementally** - Generate a minimal PDF before adding complexity\n4. **Include error handling** - Wrap file operations in try\u002Fexcept blocks\n5. **Set appropriate margins** - Prevent content from being cut off\n 6. **Have a fallback ready** - If `execute_code_sandbox` fails after 2-3 attempts, switch to shell-based execution immediately\n 7. **Detect workspace dynamically** - Don't assume `\u002Fworkspace\u002F`; use `os.getcwd()` or environment variables\n\n## Template for Quick Start\n\n```python\n# Install library if needed\n# !pip install fpdf2\n\nfrom fpdf import FPDF\n import os\n\npdf = FPDF()\npdf.add_page()\npdf.set_font('Arial', 'B', 16)\npdf.cell(0, 10, 'Your Title Here', 0, 1, 'C')\npdf.ln(10)\npdf.set_font('Arial', '', 12)\npdf.multi_cell(0, 8, 'Your content here...')\n workspace = os.environ.get('WORKSPACE', os.getcwd())\n output_path = os.path.join(workspace, 'output.pdf')\n pdf.output(output_path)\n print(f'ARTIFACT_PATH:{output_path}')\n```\n \n **Shell fallback template:**\n ```bash\n # Create script\n cat > \u002Ftmp\u002Fpdf_gen.py \u003C\u003C 'PYEOF'\n from fpdf import FPDF\n import os\n pdf = FPDF()\n pdf.add_page()\n pdf.set_font('Arial', 'B', 16)\n pdf.cell(0, 10, 'Title', 0, 1, 'C')\n workspace = os.environ.get('WORKSPACE', os.getcwd())\n pdf.output(os.path.join(workspace, 'output.pdf'))\n print(f'ARTIFACT_PATH:{workspace}\u002Foutput.pdf')\n PYEOF\n # Run it\n pip install fpdf2 -q 2>\u002Fdev\u002Fnull; python \u002Ftmp\u002Fpdf_gen.py\n ```\n\n## Related Tools\n\n- `execute_code_sandbox` - Run Python code for PDF generation\n- `read_file` - Verify PDF content (type: pdf)\n- `run_shell` - Check file existence and size\n- `create_file` - Alternative for simple text files if PDF not required\n","# PDF Checklist\u002FReport Generation Workflow\n\nThis skill provides a reusable pattern for creating structured PDF documents such as checklists, reports, or assessments using Python in a sandboxed environment.\n\n## Overview\n\nUse this workflow when you need to:\n - Generate PDF checklists, reports, or assessments\n - Create structured documents with tables, sections, and headers\n - Include scoring criteria or evaluation frameworks\n - Produce downloadable artifacts for users\n \n **Primary method**: Use `execute_code_sandbox` for Python PDF generation\n **Fallback method**: If `execute_code_sandbox` fails, create and run Python scripts via shell commands\n\n## Step-by-Step Instructions\n\n### Step 1: Choose a PDF Library\n\nSelect a Python library based on your needs:\n\n| Library | Best For | Complexity |\n|---------|----------|------------|\n| `reportlab` | Professional reports, complex layouts | Medium |\n| `fpdf` \u002F `fpdf2` | Simple documents, quick generation | Low |\n| `matplotlib` | Charts, graphs, visual elements | Medium |\n\n### Step 2: Write PDF Generation Code in execute_code_sandbox\n\nUse the `execute_code_sandbox` tool with Python code that:\n1. Imports the chosen PDF library\n2. Defines document structure (title, sections, tables)\n3. Adds content (text, tables, scores, criteria)\n4. Saves to a file path like `\u002Fworkspace\u002Foutput.pdf`\n5. Outputs the path using `ARTIFACT_PATH:` prefix for download\n \n **Determine workspace directory dynamically**:\n Before generating PDFs, identify the correct output path:\n ```bash\n # Option 1: Use current directory\n WORKDIR=$(pwd)\n \n # Option 2: Check common workspace locations\n if [ -d \"\u002Fworkspace\" ]; then WORKDIR=\"\u002Fworkspace\"\n elif [ -d \"$HOME\u002Fworkspace\" ]; then WORKDIR=\"$HOME\u002Fworkspace\"\n else WORKDIR=$(pwd); fi\n ```\n \n In Python code, use environment variables or dynamic path detection:\n ```python\n import os\n workspace = os.environ.get('WORKSPACE', os.getcwd())\n output_path = os.path.join(workspace, 'output.pdf')\n ```\n\n**Example using fpdf2:**\n\n```python\nfrom fpdf import FPDF\n\nclass PDFChecklist(FPDF):\n    def header(self):\n        self.set_font('Arial', 'B', 16)\n        self.cell(0, 10, 'Assessment Checklist', 0, 1, 'C')\n        self.ln(10)\n    \n    def section_title(self, title):\n        self.set_font('Arial', 'B', 12)\n        self.cell(0, 10, title, 0, 1, 'L')\n        self.ln(5)\n    \n    def add_checklist_item(self, item, criteria, score):\n        self.set_font('Arial', '', 10)\n        self.cell(100, 8, item, 1)\n        self.cell(60, 8, criteria, 1)\n        self.cell(30, 8, str(score), 1)\n        self.ln()\n\n# Create PDF\npdf = PDFChecklist()\npdf.add_page()\npdf.set_auto_page_break(auto=True, margin=15)\n\n# Add sections\npdf.section_title('Evaluation Criteria')\npdf.add_checklist_item('Requirement 1', 'Must meet standard', 5)\npdf.add_checklist_item('Requirement 2', 'Should be complete', 4)\n\n# Save\noutput_path = '\u002Fworkspace\u002Fchecklist.pdf'\npdf.output(output_path)\nprint(f'ARTIFACT_PATH:{output_path}')\n```\n\n**Example using reportlab (more professional):**\n\n```python\nfrom reportlab.lib import colors\nfrom reportlab.lib.pagesizes import letter\nfrom reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle\nfrom reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle\nfrom reportlab.lib.units import inch\n\ndef create_pdf_report(output_path):\n    doc = SimpleDocTemplate(output_path, pagesize=letter)\n    styles = getSampleStyleSheet()\n    story = []\n    \n    # Title\n    title_style = ParagraphStyle('CustomTitle', parent=styles['Heading1'],\n                                  fontSize=18, spaceAfter=30, alignment=1)\n    story.append(Paragraph(\"Assessment Report\", title_style))\n    story.append(Spacer(1, 0.3*inch))\n    \n    # Section header\n    story.append(Paragraph(\"Evaluation Summary\", styles['Heading2']))\n    story.append(Spacer(1, 0.2*inch))\n    \n    # Data table\n    data = [\n        ['Criteria', 'Description', 'Score'],\n        ['Completeness', 'All sections filled', '8\u002F10'],\n        ['Accuracy', 'Information verified', '9\u002F10'],\n        ['Clarity', 'Easy to understand', '7\u002F10']\n    ]\n    \n    table = Table(data, colWidths=[2*inch, 2.5*inch, 1*inch])\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        ('FONTNAME', (0, 0), (-1, 0), 'Helvetica-Bold'),\n        ('BOTTOMPADDING', (0, 0), (-1, 0), 12),\n        ('BACKGROUND', (0, 1), (-1, -1), colors.beige),\n        ('GRID', (0, 0), (-1, -1), 1, colors.black)\n    ]))\n    story.append(table)\n    \n    doc.build(story)\n    print(f'ARTIFACT_PATH:{output_path}')\n\ncreate_pdf_report('\u002Fworkspace\u002Freport.pdf')\n```\n\n### Step 3: Execute the Code\n\nCall the tool:\n```\nexecute_code_sandbox\n  code: \u003Cyour PDF generation code from Step 2>\n  language: python\n```\n \n ### Step 3b: Fallback - Shell-Based Execution\n \n If `execute_code_sandbox` fails repeatedly (e.g., \"unknown error\", timeouts), use this fallback:\n \n **1. Create the Python script via heredoc:**\n ```bash\n cat > \u002Ftmp\u002Fgenerate_pdf.py \u003C\u003C 'EOF'\n # Your PDF generation code here\n from fpdf import FPDF\n import os\n \n workspace = os.environ.get('WORKSPACE', os.getcwd())\n output_path = os.path.join(workspace, 'checklist.pdf')\n \n pdf = FPDF()\n pdf.add_page()\n pdf.set_font('Arial', 'B', 16)\n pdf.cell(0, 10, 'Checklist', 0, 1, 'C')\n pdf.output(output_path)\n print(f'ARTIFACT_PATH:{output_path}')\n EOF\n ```\n \n **2. Install required library if needed:**\n ```bash\n pip install fpdf2 --quiet 2>\u002Fdev\u002Fnull || pip install fpdf2\n ```\n \n **3. Execute the script:**\n ```bash\n python \u002Ftmp\u002Fgenerate_pdf.py\n ```\n \n **4. Verify the output file was created:**\n ```bash\n ls -lh $(pwd)\u002F*.pdf 2>\u002Fdev\u002Fnull || ls -lh \u002Fworkspace\u002F*.pdf 2>\u002Fdev\u002Fnull\n ```\n \n **Important for fallback**: When using shell execution, ensure the script outputs the ARTIFACT_PATH so the file can be downloaded. Adjust the path based on where the file was actually created.\n\n### Step 4: Verify Output\n\nAfter execution, verify the PDF was created:\n\n**Option A - Use read_file:**\n```\nread_file\n  filetype: pdf\n  file_path: \u002Fworkspace\u002Foutput.pdf\n```\n\n**Option B - Use shell inspection:**\n```\nrun_shell\n  command: ls -lh \u002Fworkspace\u002F*.pdf\n```\n\nCheck that:\n- File exists and has reasonable size (>1KB)\n- No error messages in execution output\n- ARTIFACT_PATH was correctly output for download\n \n **If using fallback execution**, check multiple possible locations:\n ```bash\n run_shell\n   command: find . -name \"*.pdf\" -type f -exec ls -lh {} \\; 2>\u002Fdev\u002Fnull\n ```\n\n### Step 5: Handle Common Issues\n\n| Issue | Solution |\n|-------|----------|\n| Library not installed | Add `!pip install fpdf2` or `!pip install reportlab` at code start |\n| Font errors | Use standard fonts (Arial, Helvetica, Courier) |\n| File not found | Ensure path is `\u002Fworkspace\u002Ffilename.pdf` |\n| Empty PDF | Check that `pdf.output()` or `doc.build()` is called |\n| Encoding issues | Use ASCII text or handle unicode properly |\n| `execute_code_sandbox` fails | Switch to shell-based fallback (Step 3b): create script with heredoc, run with `python` |\n| Wrong workspace path | Use dynamic detection: `os.getcwd()` or `$(pwd)` instead of hardcoded `\u002Fworkspace\u002F` |\n| Permission errors | Write to current directory or `\u002Ftmp\u002F` then move file |\n\n## Best Practices\n\n1. **Keep it simple first** - Start with basic text, add tables\u002Fgraphics later\n2. **Use ARTIFACT_PATH prefix** - Ensures the file is downloadable\n3. **Test incrementally** - Generate a minimal PDF before adding complexity\n4. **Include error handling** - Wrap file operations in try\u002Fexcept blocks\n5. **Set appropriate margins** - Prevent content from being cut off\n 6. **Have a fallback ready** - If `execute_code_sandbox` fails after 2-3 attempts, switch to shell-based execution immediately\n 7. **Detect workspace dynamically** - Don't assume `\u002Fworkspace\u002F`; use `os.getcwd()` or environment variables\n\n## Template for Quick Start\n\n```python\n# Install library if needed\n# !pip install fpdf2\n\nfrom fpdf import FPDF\n import os\n\npdf = FPDF()\npdf.add_page()\npdf.set_font('Arial', 'B', 16)\npdf.cell(0, 10, 'Your Title Here', 0, 1, 'C')\npdf.ln(10)\npdf.set_font('Arial', '', 12)\npdf.multi_cell(0, 8, 'Your content here...')\n workspace = os.environ.get('WORKSPACE', os.getcwd())\n output_path = os.path.join(workspace, 'output.pdf')\n pdf.output(output_path)\n print(f'ARTIFACT_PATH:{output_path}')\n```\n \n **Shell fallback template:**\n ```bash\n # Create script\n cat > \u002Ftmp\u002Fpdf_gen.py \u003C\u003C 'PYEOF'\n from fpdf import FPDF\n import os\n pdf = FPDF()\n pdf.add_page()\n pdf.set_font('Arial', 'B', 16)\n pdf.cell(0, 10, 'Title', 0, 1, 'C')\n workspace = os.environ.get('WORKSPACE', os.getcwd())\n pdf.output(os.path.join(workspace, 'output.pdf'))\n print(f'ARTIFACT_PATH:{workspace}\u002Foutput.pdf')\n PYEOF\n # Run it\n pip install fpdf2 -q 2>\u002Fdev\u002Fnull; python \u002Ftmp\u002Fpdf_gen.py\n ```\n\n## Related Tools\n\n- `execute_code_sandbox` - Run Python code for PDF generation\n- `read_file` - Verify PDF content (type: pdf)\n- `run_shell` - Check file existence and size\n- `create_file` - Alternative for simple text files if PDF not required\n",{"name":5,"description":7},"main","ff671ef61ed6587c49bd54c81cdc751c0b99e363","gdpval_bench\u002Fskills\u002Fpdf-checklist-workflow","https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace","https:\u002F\u002Fgithub.com\u002FAG064","AG064, E.Mi.\r\n\r\nA person who thinks all the time, yet all they have to think about is nothing. I want to improve the world and work on open source projects","2026-10-08 06:53:48",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add AG064\u002FOpenSpace --skill pdf-checklist-workflow",{"tool":59,"command":60},"bunx","bunx skills add AG064\u002FOpenSpace --skill pdf-checklist-workflow",{"tool":62,"command":63},"pnpm","pnpm dlx skills add AG064\u002FOpenSpace --skill pdf-checklist-workflow","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-workflow\u002FSKILL.md",true,[67],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},".skill_id","OTHER","其他",36,"https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fpdf-checklist-workflow\u002F.skill_id",[74,97,113,122,152,168],{"skillNo":75,"name":76,"nameZh":6,"description":77,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":78,"categories":79,"keywords":80,"publishedAt":41},"01M6KKMPWA0B5SCCH766F8M5EA","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\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-ts-check\u002FSKILL.md",[],[81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,30,96],"write special chars ts check","check","write","filters","Existing","type-checking","for","errors","script","output","type","files","only","template","file","typescript",{"skillNo":98,"name":99,"nameZh":6,"description":100,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":101,"categories":102,"keywords":103,"publishedAt":41},"01M6KKMJXVBNVEY3TRK055F4A7","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\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-readback\u002FSKILL.md",[],[104,105,83,94,106,107,95,30,108,109,110,111,112,87,89,39],"readback","write special chars readback","cleanup","read","scripts","verification","via","post","helper",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":41},"01M6KKMEGX9M9NC105J0W3Q5B9","write-special-chars-heredoc","Workaround for write_file failures caused by special characters (apostrophes, backticks, template literals) by using a Python heredoc script executed via shell.","https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fwrite-special-chars-heredoc\u002FSKILL.md",[],[83,120,30,87,110,94,121,95,89],"write special chars heredoc","shell",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":133,"publishedAt":41},"01M6KKM8EJ2AATVHZBNB916WT0","worldmonitor-reference","Curated architecture index of the WorldMonitor open-source dashboard. Reference for extracting patterns — vanilla TypeScript, Panel class hierarchy, service layer, CSS grid, API edge functions, refresh scheduler, and 60+ data source integrations.","https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fworldmonitor-reference\u002FSKILL.md",[128],{"categoryNo":129,"categoryName":130,"taxonomyType":131,"taxonomyTypeDesc":132},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[134,135,136,137,96,138,139,140,141,142,87,143,144,145,146,147,148,149,150,151],"reference","worldmonitor","worldmonitor reference","dashboard","css","architecture","extracting","hierarchy","source","layer","panel","patterns","edge functions","integrations","open","api","data","scheduler",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":41},"01M6KKM39PHYK627F19GE2B9XN","virtual-list","Implement efficient virtual scrolling for rendering large lists with DOM recycling, chunk-based rendering, and performance optimizations","https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fvirtual-list\u002FSKILL.md",[],[159,160,161,162,87,163,39,164,165,166,167],"virtual list","list","virtual","chunk","dom","rendering","recycling","implement","performance",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":41},"01M6KKKY7T2P61Y0JH54CDEJKQ","verify-directory-structure","Diagnose and resolve file access issues by first verifying the directory structure.","https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fshowcase\u002Fskills\u002Fverify-directory-structure\u002FSKILL.md",[],[175,176,177,178,179,180,95,181,182,183],"directory","verify","structure","verify directory structure","access","first","issues","diagnose","file access"]