[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KJ88KJMSW5KQZPJKXRZNKD":3,"skill-same:01M6KJ88KJMSW5KQZPJKXRZNKD":71},{"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":22,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":13,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":6,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6KJ88KJMSW5KQZPJKXRZNKD","openpyxl-sandbox-workaround",null,"Use run_shell with inline Python as a fallback when execute_code_sandbox fails for openpyxl\u002Fspreadsheet operations","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\u002Fopenpyxl-sandbox-workaround\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000004","电子表格","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"sandbox","openpyxl","openpyxl sandbox workaround","python","run","code","spreadsheet","shell","execute","operations","use","fallback","as","with","for","inline","2026-11-10 10:12:30",false,"---\nname: openpyxl-sandbox-workaround\ndescription: Use run_shell with inline Python as a fallback when execute_code_sandbox fails for openpyxl\u002Fspreadsheet operations\n---\n\n# Openpyxl Sandbox Workaround\n\n## When to Use\n\nUse this pattern when `execute_code_sandbox` repeatedly fails for openpyxl or spreadsheet manipulation tasks. The sandbox environment may have compatibility issues with certain openpyxl operations, but running Python directly via `run_shell` often succeeds.\n\n## Common Failure Indicators\n\n- `execute_code_sandbox` returns errors related to openpyxl imports or operations\n- Multiple retry attempts fail with similar errors\n- Errors mention workbook creation, cell writing, or file saving issues\n\n## The Workaround Pattern\n\nInstead of using `execute_code_sandbox`, use `run_shell` with an inline Python script:\n\n```bash\npython3 \u003C\u003C 'EOF'\nfrom openpyxl import Workbook\nfrom openpyxl.utils import get_column_letter\n\n# Your openpyxl code here\nwb = Workbook()\nws = wb.active\nws.title = \"Sheet1\"\n\n# Add data\nws['A1'] = 'Header'\nws['B1'] = 'Value'\n\n# Save file\nwb.save('output.xlsx')\nprint('File created successfully')\nEOF\n```\n\n## Multi-Step Spreadsheet Tasks\n\nFor complex operations involving multiple files or data processing:\n\n```bash\npython3 \u003C\u003C 'EOF'\nfrom openpyxl import Workbook, load_workbook\nimport os\n\n# Load existing workbook if needed\nif os.path.exists('input.xlsx'):\n    wb = load_workbook('input.xlsx')\n    ws = wb.active\n    # Process data...\n    \n# Create new workbook\nwb = Workbook()\nws = wb.active\n\n# Add data with proper formatting\nfor row_idx, row_data in enumerate(data, start=1):\n    for col_idx, value in enumerate(row_data, start=1):\n        ws.cell(row=row_idx, column=col_idx, value=value)\n\n# Auto-adjust column widths\nfor column in ws.columns:\n    max_length = 0\n    column_letter = get_column_letter(column[0].column)\n    for cell in column:\n        try:\n            if len(str(cell.value)) > max_length:\n                max_length = len(str(cell.value))\n        except:\n            pass\n    adjusted_width = min(max_length + 2, 50)\n    ws.column_dimensions[column_letter].width = adjusted_width\n\nwb.save('output.xlsx')\nEOF\n```\n\n## Best Practices\n\n1. **Use heredoc syntax**: The `\u003C\u003C 'EOF'` pattern prevents variable expansion issues\n2. **Print success messages**: Always include print statements to confirm completion\n3. **Handle file paths**: Use absolute paths or ensure you're in the correct working directory\n4. **Validate output**: After creation, verify the file exists and has expected content\n5. **Error handling**: Add try\u002Fexcept blocks for robustness in complex scripts\n\n## Verification Step\n\nAfter running the script, verify the file was created:\n\n```bash\nls -la *.xlsx\n```\n\nOr check file details:\n\n```bash\npython3 \u003C\u003C 'EOF'\nfrom openpyxl import load_workbook\nwb = load_workbook('output.xlsx')\nprint(f\"Sheets: {wb.sheetnames}\")\nprint(f\"Active sheet: {wb.active.title}\")\nEOF\n```\n\n## When to Fall Back to This Pattern\n\n- First `execute_code_sandbox` attempt fails with openpyxl errors\n- Error persists after 1-2 retries\n- Task is time-sensitive and needs a reliable solution\n- The operation is straightforward file creation\u002Fmodification\n\n## Limitations\n\n- Output is limited to stdout\u002Fstderr (no direct artifact download from run_shell)\n- Files are created in the current working directory\n- More verbose than execute_code_sandbox for simple operations","# Openpyxl Sandbox Workaround\n\n## When to Use\n\nUse this pattern when `execute_code_sandbox` repeatedly fails for openpyxl or spreadsheet manipulation tasks. The sandbox environment may have compatibility issues with certain openpyxl operations, but running Python directly via `run_shell` often succeeds.\n\n## Common Failure Indicators\n\n- `execute_code_sandbox` returns errors related to openpyxl imports or operations\n- Multiple retry attempts fail with similar errors\n- Errors mention workbook creation, cell writing, or file saving issues\n\n## The Workaround Pattern\n\nInstead of using `execute_code_sandbox`, use `run_shell` with an inline Python script:\n\n```bash\npython3 \u003C\u003C 'EOF'\nfrom openpyxl import Workbook\nfrom openpyxl.utils import get_column_letter\n\n# Your openpyxl code here\nwb = Workbook()\nws = wb.active\nws.title = \"Sheet1\"\n\n# Add data\nws['A1'] = 'Header'\nws['B1'] = 'Value'\n\n# Save file\nwb.save('output.xlsx')\nprint('File created successfully')\nEOF\n```\n\n## Multi-Step Spreadsheet Tasks\n\nFor complex operations involving multiple files or data processing:\n\n```bash\npython3 \u003C\u003C 'EOF'\nfrom openpyxl import Workbook, load_workbook\nimport os\n\n# Load existing workbook if needed\nif os.path.exists('input.xlsx'):\n    wb = load_workbook('input.xlsx')\n    ws = wb.active\n    # Process data...\n    \n# Create new workbook\nwb = Workbook()\nws = wb.active\n\n# Add data with proper formatting\nfor row_idx, row_data in enumerate(data, start=1):\n    for col_idx, value in enumerate(row_data, start=1):\n        ws.cell(row=row_idx, column=col_idx, value=value)\n\n# Auto-adjust column widths\nfor column in ws.columns:\n    max_length = 0\n    column_letter = get_column_letter(column[0].column)\n    for cell in column:\n        try:\n            if len(str(cell.value)) > max_length:\n                max_length = len(str(cell.value))\n        except:\n            pass\n    adjusted_width = min(max_length + 2, 50)\n    ws.column_dimensions[column_letter].width = adjusted_width\n\nwb.save('output.xlsx')\nEOF\n```\n\n## Best Practices\n\n1. **Use heredoc syntax**: The `\u003C\u003C 'EOF'` pattern prevents variable expansion issues\n2. **Print success messages**: Always include print statements to confirm completion\n3. **Handle file paths**: Use absolute paths or ensure you're in the correct working directory\n4. **Validate output**: After creation, verify the file exists and has expected content\n5. **Error handling**: Add try\u002Fexcept blocks for robustness in complex scripts\n\n## Verification Step\n\nAfter running the script, verify the file was created:\n\n```bash\nls -la *.xlsx\n```\n\nOr check file details:\n\n```bash\npython3 \u003C\u003C 'EOF'\nfrom openpyxl import load_workbook\nwb = load_workbook('output.xlsx')\nprint(f\"Sheets: {wb.sheetnames}\")\nprint(f\"Active sheet: {wb.active.title}\")\nEOF\n```\n\n## When to Fall Back to This Pattern\n\n- First `execute_code_sandbox` attempt fails with openpyxl errors\n- Error persists after 1-2 retries\n- Task is time-sensitive and needs a reliable solution\n- The operation is straightforward file creation\u002Fmodification\n\n## Limitations\n\n- Output is limited to stdout\u002Fstderr (no direct artifact download from run_shell)\n- Files are created in the current working directory\n- More verbose than execute_code_sandbox for simple operations",{"name":5,"description":7},"main","ff671ef61ed6587c49bd54c81cdc751c0b99e363","gdpval_bench\u002Fskills\u002Fopenpyxl-sandbox-workaround","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":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add AG064\u002FOpenSpace --skill openpyxl-sandbox-workaround",{"tool":57,"command":58},"bunx","bunx skills add AG064\u002FOpenSpace --skill openpyxl-sandbox-workaround",{"tool":60,"command":61},"pnpm","pnpm dlx skills add AG064\u002FOpenSpace --skill openpyxl-sandbox-workaround","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fopenpyxl-sandbox-workaround\u002FSKILL.md",true,[65],{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},".skill_id","OTHER","其他",41,"https:\u002F\u002Fgithub.com\u002FAG064\u002FOpenSpace\u002Fblob\u002Fmain\u002Fgdpval_bench\u002Fskills\u002Fopenpyxl-sandbox-workaround\u002F.skill_id",[72,94,110,118,148,164],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":39},"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",[],[79,80,81,82,83,84,37,85,86,87,88,89,90,91,92,26,93],"write special chars ts check","check","write","filters","Existing","type-checking","errors","script","output","type","files","only","template","file","typescript",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":39},"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",[],[101,102,81,91,103,104,92,26,105,106,107,108,109,37,86,36],"readback","write special chars readback","cleanup","read","scripts","verification","via","post","helper",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":39},"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",[],[81,117,26,37,107,91,30,92,86],"write special chars heredoc",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":129,"publishedAt":39},"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",[124],{"categoryNo":125,"categoryName":126,"taxonomyType":127,"taxonomyTypeDesc":128},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[130,131,132,133,93,134,135,136,137,138,37,139,140,141,142,143,144,145,146,147],"reference","worldmonitor","worldmonitor reference","dashboard","css","architecture","extracting","hierarchy","source","layer","panel","patterns","edge functions","integrations","open","api","data","scheduler",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":154,"publishedAt":39},"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",[],[155,156,157,158,37,159,36,160,161,162,163],"virtual list","list","virtual","chunk","dom","rendering","recycling","implement","performance",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":39},"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",[],[171,172,173,174,175,176,92,177,178,179],"directory","verify","structure","verify directory structure","access","first","issues","diagnose","file access"]